Skip to content

Commit 84108c1

Browse files
authored
Merge pull request #5039 from leexgh/fix-sift-polyphen
Fix Sift and Polyphen blank in NRAS
2 parents 9a8511a + 8146f55 commit 84108c1

File tree

3 files changed

+66
-49
lines changed

3 files changed

+66
-49
lines changed

packages/react-variant-view/src/component/functionalPrediction/FunctionalPrediction.tsx

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -28,25 +28,21 @@ interface IFunctionalImpactData {
2828
@observer
2929
class FunctionalPrediction extends React.Component<IFunctionalPredictionProps> {
3030
public getData(
31-
genomeNexusData: VariantAnnotation | undefined
31+
genomeNexusData: VariantAnnotation | undefined,
32+
selectedTranscriptId?: string
3233
): IFunctionalImpactData {
3334
const mutationAssessor = genomeNexusData?.mutation_assessor;
34-
const siftScore =
35-
genomeNexusData &&
36-
genomeNexusData.transcript_consequences &&
37-
genomeNexusData.transcript_consequences[0].sift_score;
38-
const siftPrediction =
39-
genomeNexusData &&
40-
genomeNexusData.transcript_consequences &&
41-
genomeNexusData.transcript_consequences[0].sift_prediction;
42-
const polyPhenScore =
43-
genomeNexusData &&
44-
genomeNexusData.transcript_consequences &&
45-
genomeNexusData.transcript_consequences[0].polyphen_score;
46-
const polyPhenPrediction =
47-
genomeNexusData &&
48-
genomeNexusData.transcript_consequences &&
49-
genomeNexusData.transcript_consequences[0].polyphen_prediction;
35+
const transcriptConsequence =
36+
genomeNexusData && selectedTranscriptId
37+
? genomeNexusData.transcript_consequences.find(
38+
tc => tc.transcript_id === selectedTranscriptId
39+
)
40+
: undefined;
41+
42+
const siftScore = transcriptConsequence?.sift_score;
43+
const siftPrediction = transcriptConsequence?.sift_prediction;
44+
const polyPhenScore = transcriptConsequence?.polyphen_score;
45+
const polyPhenPrediction = transcriptConsequence?.polyphen_prediction;
5046

5147
return {
5248
mutationAssessor,

src/shared/components/mutationTable/MutationTable.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -906,7 +906,8 @@ export default class MutationTable<
906906
return FunctionalImpactColumnFormatter.renderFunction(
907907
d,
908908
this.props.genomeNexusCache,
909-
this.props.genomeNexusMutationAssessorCache
909+
this.props.genomeNexusMutationAssessorCache,
910+
this.props.selectedTranscriptId
910911
);
911912
} else {
912913
return <span></span>;
@@ -917,7 +918,8 @@ export default class MutationTable<
917918
d,
918919
this.props.genomeNexusCache as GenomeNexusCache,
919920
this.props
920-
.genomeNexusMutationAssessorCache as GenomeNexusMutationAssessorCache
921+
.genomeNexusMutationAssessorCache as GenomeNexusMutationAssessorCache,
922+
this.props.selectedTranscriptId
921923
),
922924
headerRender: FunctionalImpactColumnFormatter.headerRender,
923925
visible: false,

src/shared/components/mutationTable/column/FunctionalImpactColumnFormatter.tsx

Lines changed: 49 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -457,7 +457,8 @@ export default class FunctionalImpactColumnFormatter {
457457
public static getData(
458458
data: Mutation[],
459459
siftPolyphenCache: GenomeNexusCache,
460-
mutationAssessorCache: GenomeNexusMutationAssessorCache
460+
mutationAssessorCache: GenomeNexusMutationAssessorCache,
461+
selectedTranscriptId?: string
461462
): FunctionalImpactData {
462463
const siftPolyphenCacheData = FunctionalImpactColumnFormatter.getDataFromCache(
463464
data,
@@ -471,10 +472,13 @@ export default class FunctionalImpactColumnFormatter {
471472
: null;
472473

473474
const siftData = siftPolyphenCacheData
474-
? this.getSiftData(siftPolyphenCacheData.data)
475+
? this.getSiftData(siftPolyphenCacheData.data, selectedTranscriptId)
475476
: undefined;
476477
const polyphenData = siftPolyphenCacheData
477-
? this.getPolyphenData(siftPolyphenCacheData.data)
478+
? this.getPolyphenData(
479+
siftPolyphenCacheData.data,
480+
selectedTranscriptId
481+
)
478482
: undefined;
479483
const mutationAssessor = mutationAssessorCacheData
480484
? this.getMutationAssessorData(mutationAssessorCacheData.data)
@@ -496,17 +500,21 @@ export default class FunctionalImpactColumnFormatter {
496500
return functionalImpactData;
497501
}
498502

499-
public static getSiftData(siftDataCache: VariantAnnotation | null) {
503+
public static getSiftData(
504+
siftDataCache: VariantAnnotation | null,
505+
selectedTranscriptId?: string
506+
) {
500507
let siftScore: number | undefined = undefined;
501508
let siftPrediction: string | undefined = undefined;
502-
503-
if (
504-
siftDataCache &&
505-
!_.isEmpty(siftDataCache.transcript_consequences)
506-
) {
507-
siftScore = siftDataCache.transcript_consequences[0].sift_score;
508-
siftPrediction =
509-
siftDataCache.transcript_consequences[0].sift_prediction;
509+
if (siftDataCache && selectedTranscriptId) {
510+
// find transcript consequence that matches the selected transcript
511+
const transcriptConsequence = siftDataCache.transcript_consequences.find(
512+
tc => tc.transcript_id === selectedTranscriptId
513+
);
514+
if (transcriptConsequence) {
515+
siftScore = transcriptConsequence.sift_score;
516+
siftPrediction = transcriptConsequence.sift_prediction;
517+
}
510518
}
511519

512520
return {
@@ -515,19 +523,22 @@ export default class FunctionalImpactColumnFormatter {
515523
};
516524
}
517525

518-
public static getPolyphenData(polyphenDataCache: VariantAnnotation | null) {
526+
public static getPolyphenData(
527+
polyphenDataCache: VariantAnnotation | null,
528+
selectedTranscriptId?: string
529+
) {
519530
let polyPhenScore: number | undefined = undefined;
520531
let polyPhenPrediction: string | undefined = undefined;
521532

522-
if (
523-
polyphenDataCache &&
524-
!_.isEmpty(polyphenDataCache.transcript_consequences)
525-
) {
526-
polyPhenScore =
527-
polyphenDataCache.transcript_consequences[0].polyphen_score;
528-
polyPhenPrediction =
529-
polyphenDataCache.transcript_consequences[0]
530-
.polyphen_prediction;
533+
if (polyphenDataCache && selectedTranscriptId) {
534+
// find transcript consequence that matches the selected transcript
535+
const transcriptConsequence = polyphenDataCache.transcript_consequences.find(
536+
tc => tc.transcript_id === selectedTranscriptId
537+
);
538+
if (transcriptConsequence) {
539+
polyPhenScore = transcriptConsequence.polyphen_score;
540+
polyPhenPrediction = transcriptConsequence.polyphen_prediction;
541+
}
531542
}
532543

533544
return {
@@ -545,7 +556,8 @@ export default class FunctionalImpactColumnFormatter {
545556
public static renderFunction(
546557
data: Mutation[],
547558
siftPolyphenCache: GenomeNexusCache | undefined,
548-
mutationAssessorCache: GenomeNexusMutationAssessorCache | undefined
559+
mutationAssessorCache: GenomeNexusMutationAssessorCache | undefined,
560+
selectedTranscriptId?: string
549561
) {
550562
const showMutationAssessor = shouldShowMutationAssessor();
551563

@@ -568,11 +580,13 @@ export default class FunctionalImpactColumnFormatter {
568580
)}
569581
{FunctionalImpactColumnFormatter.makeFunctionalImpactViz(
570582
siftPolyphenCacheData,
571-
FunctionalImpactColumnsName.SIFT
583+
FunctionalImpactColumnsName.SIFT,
584+
selectedTranscriptId
572585
)}
573586
{FunctionalImpactColumnFormatter.makeFunctionalImpactViz(
574587
siftPolyphenCacheData,
575-
FunctionalImpactColumnsName.POLYPHEN2
588+
FunctionalImpactColumnsName.POLYPHEN2,
589+
selectedTranscriptId
576590
)}
577591
</div>
578592
);
@@ -581,13 +595,15 @@ export default class FunctionalImpactColumnFormatter {
581595
public static download(
582596
data: Mutation[],
583597
siftPolyphenCache: GenomeNexusCache,
584-
mutationAssessorCache: GenomeNexusMutationAssessorCache
598+
mutationAssessorCache: GenomeNexusMutationAssessorCache,
599+
selectedTranscriptId?: string
585600
): string {
586601
if (siftPolyphenCache || mutationAssessorCache) {
587602
const functionalImpactData = FunctionalImpactColumnFormatter.getData(
588603
data,
589604
siftPolyphenCache,
590-
mutationAssessorCache
605+
mutationAssessorCache,
606+
selectedTranscriptId
591607
);
592608
let downloadData = [];
593609
if (functionalImpactData) {
@@ -626,7 +642,8 @@ export default class FunctionalImpactColumnFormatter {
626642

627643
private static makeFunctionalImpactViz(
628644
cacheData: GenomeNexusCacheDataType | null,
629-
column: FunctionalImpactColumnsName
645+
column: FunctionalImpactColumnsName,
646+
selectedTranscriptId?: string
630647
) {
631648
let status: TableCellStatus | null = null;
632649

@@ -650,7 +667,8 @@ export default class FunctionalImpactColumnFormatter {
650667
);
651668
case FunctionalImpactColumnsName.SIFT:
652669
functionalImpactData = FunctionalImpactColumnFormatter.getSiftData(
653-
cacheData.data
670+
cacheData.data,
671+
selectedTranscriptId
654672
);
655673
return (
656674
<Sift
@@ -660,7 +678,8 @@ export default class FunctionalImpactColumnFormatter {
660678
);
661679
case FunctionalImpactColumnsName.POLYPHEN2:
662680
functionalImpactData = FunctionalImpactColumnFormatter.getPolyphenData(
663-
cacheData.data
681+
cacheData.data,
682+
selectedTranscriptId
664683
);
665684
return (
666685
<PolyPhen2

0 commit comments

Comments
 (0)