-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Issue with the REVEL score provided from myvariant.info #348
Comments
Emailed myvariant.info about this on 11/10/23. |
We would like to have at least a band-aid solution in production by |
For my own clarification, I'm going to summarize the issue. From what I understand, REVEL scores range from 0 to 1. A 0 score means For the The problem is that the website we get our REVEL data from —
The score they provide in the We need to display accurate information. To display accurate |
The high-level solution to our problem is to display scores and the Get the scores and transcript IDs from myvariant.infoSuppose the variant we're interested in is
The object we get from myvariant.info also contains transcript IDs for
We could display the REVEL score along with its (presumably) Pros
Cons
Get the scores and transcript IDs from some other APIIn this case, we would be getting the data from some other API (UCSC's Pros
Cons
Get the scores and transcript IDs from the source of truth (REVEL CSV download)This solution would entail downloading and parsing the CSV from the Pros
Cons
|
It might be a good idea to tabulate the pros and cons. |
We could open an issue in the myvariant.info repo: https://github.com/biothings/myvariant.info. Maybe we could even clone the repo, run their API locally, and use |
It could be a problem with dbNSFP. According to this page, a new version of their database was released in May:
|
I tabulated the pros and cons to the solutions I listed above in this Google doc. Here's the table: |
I talked to Matt this morning, and we're going ahead with the band-aid solution of including the parenthesized transcript ID that we get from myvariant.info next to the REVEL score. Once this band-aid has been applied, we will determine a better long-term solution. |
To view the problematic REVEL score for variant CA415086302, The idea behind the band-aid fix is that instead of seeing just the score "0.173" we would see the score followed by the corresponding transcript ID "0.173 (ENST00000457723)". |
I believe the component that renders the REVEL score is the The
|
The Unfortunately, GitHub isn't rendering the code, so I'll paste it: <ClinGenPredictorsTable
clinGenPred={clinGenPred}
clinGenPredStatic={clinGenPredStatic}
isSingleNucleotide={isSingleNucleotide}
isLoadingMyVariantInfo={isLoadingMyVariantInfo}
/> |
The Unfortunately, GitHub isn't rendering the code, so I'll paste it: const clinGenPred = computationalObj && computationalObj.clingen; |
The Unfortunately, GitHub isn't rendering the code, so I'll paste it: render() {
const {
computationalObj,
esearchData,
isLoadingEsearch,
compDataDiffFlag,
saveAlert,
} = this.state; |
I think I have a rough idea of what we're doing with the It's initialized as a piece of state in the class VariantType extends Component {
constructor(props) {
super(props);
this.state = {
tabIndex: props.tabIndex, // Tab index received from CodeStrip click
computationalObj: initialComputationalData,
esearchData: {},
isLoadingEsearch: false,
compDataDiffFlag: false,
hasOtherPredData: false,
hasConservationData: false,
} Then we "build" the componentDidUpdate(prevProps) {
if (this.props.myVariantInfoData !== prevProps.myVariantInfoData) {
const { myVariantInfoData } = this.props;
if (myVariantInfoData) {
const computationalObj = this.buildComputationalObj(myVariantInfoData);
this.setState({ computationalObj });
}
}
if (this.props.evaluations && this.props.evaluations !== prevProps.evaluations && this.props.evaluations.BP1.computational !== prevProps.evaluations.BP1.computational) {
this.compareComputationalData(this.state.computationalObj, this.props.evaluations).catch(AmplifyAPIRequestRecycler.defaultCatch);
} The Then in the buildComputationalObj = (myVariantInfoData) => {
const objWithOtherPred = this.parseOtherPredData(myVariantInfoData);
const objWithConservation = this.parseConservationData(myVariantInfoData, objWithOtherPred);
const completeComputationalObj = this.parseClingenPredData(myVariantInfoData, objWithConservation);
return completeComputationalObj;
} The /**
* Method to assign clingen predictors data to global computation object
* REVEL data is now parsed from myvariant.info response
* It can be accessed via response['dbnsfp']['revel'] or using
* the 'parseKeyValue()' helper function which traverse the tree down to 2nd level
*
* TBD on where the CFTR data is queried from after Bustamante lab is no longer the source
* And thus the CFTR data parsing in this method needs to be altered in the future
*
* @param {object} myVariantInfoData - The response object returned by myvariant.info
*/
parseClingenPredData = (myVariantInfoData, compObj) => {
const computationalObj = cloneDeep(compObj);
const revel = parseKeyValue(myVariantInfoData, 'revel'),
cftr = parseKeyValue(myVariantInfoData, 'cftr');
if (revel) {
computationalObj.clingen.revel.score = (revel.score) && this.numToString(revel.score);
} I'm not sure where the |
I stuck a debugger before line 59 in the componentDidUpdate(prevProps) {
if (this.props.myVariantInfoData !== prevProps.myVariantInfoData) {
const { myVariantInfoData } = this.props;
if (myVariantInfoData) {
const computationalObj = this.buildComputationalObj(myVariantInfoData); // <-- line 59
this.setState({ computationalObj });
}
} I couldn't find the score range in the
|
In the buildComputationalObj = (myVariantInfoData) => {
const objWithOtherPred = this.parseOtherPredData(myVariantInfoData);
const objWithConservation = this.parseConservationData(myVariantInfoData, objWithOtherPred);
const completeComputationalObj = this.parseClingenPredData(myVariantInfoData, objWithConservation);
return completeComputationalObj;
}
|
I stuck a debugger before line 131: buildComputationalObj = (myVariantInfoData) => {
const objWithOtherPred = this.parseOtherPredData(myVariantInfoData); // <-- line 131
const objWithConservation = this.parseConservationData(myVariantInfoData, objWithOtherPred);
const completeComputationalObj = this.parseClingenPredData(myVariantInfoData, objWithConservation);
return completeComputationalObj;
} When I stepped over line 131 and logged
|
I was barking up the wrong tree. I should have realized that the values for We import class VariantType extends Component {
constructor(props) {
super(props);
this.state = {
tabIndex: props.tabIndex, // Tab index received from CodeStrip click
computationalObj: initialComputationalData,
esearchData: {},
isLoadingEsearch: false,
compDataDiffFlag: false,
hasOtherPredData: false,
hasConservationData: false,
} |
At this point, I think we have two goals:
|
Based on my reading of the parseClingenPredData = (myVariantInfoData, compObj) => {
const computationalObj = cloneDeep(compObj);
const revel = parseKeyValue(myVariantInfoData, 'revel'),
cftr = parseKeyValue(myVariantInfoData, 'cftr');
if (revel) {
computationalObj.clingen.revel.score = (revel.score) && this.numToString(revel.score);
} |
Per the Slack conversation posted in https://github.com/ClinGen/gci-vci-aws/pull/1379#issuecomment-1816900833, the new band-aid fix is to just show a warning next to the REVEL score instead of mapping Ensembl transcript IDs to REVEL scores. |
closing this as we've released the warning, will link this to the future tickets. |
REPLACED BY #350 AS OF 11-21-23
Brought up by a curator for variant CA415086302. The curator reported seeing the REVEL score of 0.653 in the VCI in April 2023, however in November they saw the REVEL score had changed to 0.173.
Investigating I see the following:
Looking at REVEL scores directly from their website for that nucleotide, which I'm copying here: it looks to me that the REVEL score data being pulled in from myvariant.info is using the ENST00000457723.1:c.165C>A change, while what UCSC is pulling is from the MANE select NM_005629.4:c.1181C>A.
REVEL data (* is MANE)
Investigating other variants it appears we get only 1 REVEL score from myvariant.info/dbnsfp, even when there are multiple scores:
CA415087428
VCI shows: 0.093 REVEL score, as does myvariant.info
REVEL data (* is MANE)
CA415067047
VCI shows: 0.018 REVEL score, as does myvariant.info
REVEL data:
CA415083325
VCI shows: 0.403 REVEL score, as does myvariant.info
REVEL data (* is MANE)
CA415083258
VCI shows 0.389 REVEL score, as does myvariant.info
REVEL data (* is MANE)
The text was updated successfully, but these errors were encountered: