@@ -457,7 +457,8 @@ export default class FunctionalImpactColumnFormatter {
457
457
public static getData (
458
458
data : Mutation [ ] ,
459
459
siftPolyphenCache : GenomeNexusCache ,
460
- mutationAssessorCache : GenomeNexusMutationAssessorCache
460
+ mutationAssessorCache : GenomeNexusMutationAssessorCache ,
461
+ selectedTranscriptId ?: string
461
462
) : FunctionalImpactData {
462
463
const siftPolyphenCacheData = FunctionalImpactColumnFormatter . getDataFromCache (
463
464
data ,
@@ -471,10 +472,13 @@ export default class FunctionalImpactColumnFormatter {
471
472
: null ;
472
473
473
474
const siftData = siftPolyphenCacheData
474
- ? this . getSiftData ( siftPolyphenCacheData . data )
475
+ ? this . getSiftData ( siftPolyphenCacheData . data , selectedTranscriptId )
475
476
: undefined ;
476
477
const polyphenData = siftPolyphenCacheData
477
- ? this . getPolyphenData ( siftPolyphenCacheData . data )
478
+ ? this . getPolyphenData (
479
+ siftPolyphenCacheData . data ,
480
+ selectedTranscriptId
481
+ )
478
482
: undefined ;
479
483
const mutationAssessor = mutationAssessorCacheData
480
484
? this . getMutationAssessorData ( mutationAssessorCacheData . data )
@@ -496,17 +500,21 @@ export default class FunctionalImpactColumnFormatter {
496
500
return functionalImpactData ;
497
501
}
498
502
499
- public static getSiftData ( siftDataCache : VariantAnnotation | null ) {
503
+ public static getSiftData (
504
+ siftDataCache : VariantAnnotation | null ,
505
+ selectedTranscriptId ?: string
506
+ ) {
500
507
let siftScore : number | undefined = undefined ;
501
508
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
+ }
510
518
}
511
519
512
520
return {
@@ -515,19 +523,22 @@ export default class FunctionalImpactColumnFormatter {
515
523
} ;
516
524
}
517
525
518
- public static getPolyphenData ( polyphenDataCache : VariantAnnotation | null ) {
526
+ public static getPolyphenData (
527
+ polyphenDataCache : VariantAnnotation | null ,
528
+ selectedTranscriptId ?: string
529
+ ) {
519
530
let polyPhenScore : number | undefined = undefined ;
520
531
let polyPhenPrediction : string | undefined = undefined ;
521
532
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
+ }
531
542
}
532
543
533
544
return {
@@ -545,7 +556,8 @@ export default class FunctionalImpactColumnFormatter {
545
556
public static renderFunction (
546
557
data : Mutation [ ] ,
547
558
siftPolyphenCache : GenomeNexusCache | undefined ,
548
- mutationAssessorCache : GenomeNexusMutationAssessorCache | undefined
559
+ mutationAssessorCache : GenomeNexusMutationAssessorCache | undefined ,
560
+ selectedTranscriptId ?: string
549
561
) {
550
562
const showMutationAssessor = shouldShowMutationAssessor ( ) ;
551
563
@@ -568,11 +580,13 @@ export default class FunctionalImpactColumnFormatter {
568
580
) }
569
581
{ FunctionalImpactColumnFormatter . makeFunctionalImpactViz (
570
582
siftPolyphenCacheData ,
571
- FunctionalImpactColumnsName . SIFT
583
+ FunctionalImpactColumnsName . SIFT ,
584
+ selectedTranscriptId
572
585
) }
573
586
{ FunctionalImpactColumnFormatter . makeFunctionalImpactViz (
574
587
siftPolyphenCacheData ,
575
- FunctionalImpactColumnsName . POLYPHEN2
588
+ FunctionalImpactColumnsName . POLYPHEN2 ,
589
+ selectedTranscriptId
576
590
) }
577
591
</ div >
578
592
) ;
@@ -581,13 +595,15 @@ export default class FunctionalImpactColumnFormatter {
581
595
public static download (
582
596
data : Mutation [ ] ,
583
597
siftPolyphenCache : GenomeNexusCache ,
584
- mutationAssessorCache : GenomeNexusMutationAssessorCache
598
+ mutationAssessorCache : GenomeNexusMutationAssessorCache ,
599
+ selectedTranscriptId ?: string
585
600
) : string {
586
601
if ( siftPolyphenCache || mutationAssessorCache ) {
587
602
const functionalImpactData = FunctionalImpactColumnFormatter . getData (
588
603
data ,
589
604
siftPolyphenCache ,
590
- mutationAssessorCache
605
+ mutationAssessorCache ,
606
+ selectedTranscriptId
591
607
) ;
592
608
let downloadData = [ ] ;
593
609
if ( functionalImpactData ) {
@@ -626,7 +642,8 @@ export default class FunctionalImpactColumnFormatter {
626
642
627
643
private static makeFunctionalImpactViz (
628
644
cacheData : GenomeNexusCacheDataType | null ,
629
- column : FunctionalImpactColumnsName
645
+ column : FunctionalImpactColumnsName ,
646
+ selectedTranscriptId ?: string
630
647
) {
631
648
let status : TableCellStatus | null = null ;
632
649
@@ -650,7 +667,8 @@ export default class FunctionalImpactColumnFormatter {
650
667
) ;
651
668
case FunctionalImpactColumnsName . SIFT :
652
669
functionalImpactData = FunctionalImpactColumnFormatter . getSiftData (
653
- cacheData . data
670
+ cacheData . data ,
671
+ selectedTranscriptId
654
672
) ;
655
673
return (
656
674
< Sift
@@ -660,7 +678,8 @@ export default class FunctionalImpactColumnFormatter {
660
678
) ;
661
679
case FunctionalImpactColumnsName . POLYPHEN2 :
662
680
functionalImpactData = FunctionalImpactColumnFormatter . getPolyphenData (
663
- cacheData . data
681
+ cacheData . data ,
682
+ selectedTranscriptId
664
683
) ;
665
684
return (
666
685
< PolyPhen2
0 commit comments