react-mutation-mapper 0.8.28 → 0.8.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../src/component/StatusHelpers.tsx","../src/images/civic_text_logo.png","../src/component/civic/CivicCard.tsx","../src/images/civic-logo.png","../src/images/civic-logo-no-variants.png","../src/component/civic/Civic.tsx","../src/component/clinvar/ClinvarSummary.tsx","../src/util/OncoKbUtils.ts","../src/images/mcg_logo.png","../src/component/myCancerGenome/MyCancerGenome.tsx","../src/component/oncokb/AnnotationIcon.tsx","../src/component/oncokb/CompactAnnotationIcon.tsx","../src/component/oncokb/constants.ts","../src/component/oncokb/OncoKbCardTitle.tsx","../src/component/oncokb/OncoKbCardLevelsOfEvidenceDropdown.tsx","../src/component/oncokb/OncoKBSuggestAnnotationLinkout.tsx","../src/component/oncokb/OncoKbHelper.tsx","../src/component/oncokb/ArticleAbstractItem.tsx","../src/component/oncokb/PmidItem.tsx","../src/component/oncokb/ReferenceList.tsx","../src/component/oncokb/RefComponent.tsx","../src/component/oncokb/SummaryWithRefs.tsx","../src/component/oncokb/oncokbCard/EvidenceReferenceContent.tsx","../src/component/oncokb/OncoKbTreatmentTable.tsx","../src/component/oncokb/oncokbCard/BiologicalContent.tsx","../src/component/oncokb/oncokbCard/ImplicationContent.tsx","../src/component/oncokb/OncoKbCardBody.tsx","../src/component/oncokb/OncoKbCard.tsx","../src/component/oncokb/OncoKbTooltip.tsx","../src/component/oncokb/OncoKbFeedback.tsx","../src/component/oncokb/OncoKB.tsx","../src/component/hotspot/HotspotInfo.tsx","../src/component/column/HotspotAnnotation.tsx","../src/util/DataFetcherUtils.ts","../src/component/column/Annotation.tsx","../src/component/clinvar/ClinvarHelper.ts","../src/component/column/ClinvarInterpretation.tsx","../src/component/column/ColumnHeader.tsx","../src/component/dbsnp/DbsnpId.tsx","../src/component/column/MyVariantInfoHelper.tsx","../src/component/column/Dbsnp.tsx","../src/util/GnomadUtils.ts","../src/component/gnomad/GnomadFrequencyTable.tsx","../src/component/gnomad/GnomadFrequency.tsx","../src/component/column/Gnomad.tsx","../src/component/column/VariantAnnotationHelper.ts","../src/component/column/HgvsHelper.ts","../src/component/column/Hgvsc.tsx","../src/component/column/Hgvsg.tsx","../src/component/column/MutationStatus.tsx","../src/component/column/ProteinChange.tsx","../src/component/column/Signal.tsx","../src/util/SelectorUtils.ts","../src/component/filter/DropdownSelector.tsx","../src/component/filter/BadgeLabel.tsx","../src/component/filter/BadgeSelector.tsx","../src/util/MutationTypeUtils.ts","../src/component/filter/ProteinImpactTypeHelper.tsx","../src/component/filter/ProteinImpactTypeDropdownSelector.tsx","../src/component/filter/ProteinImpactTypeBadgeSelector.tsx","../src/component/filter/MutationStatusBadgeSelector.tsx","../src/component/dataTable/ColumnSelector.tsx","../src/component/mutationMapper/FilterResetPanel.tsx","../src/model/DataFilter.ts","../src/util/FilterUtils.ts","../src/component/dataTable/SearchBox.tsx","../src/component/dataTable/DataTableToolbar.tsx","../src/component/dataTable/DataTable.tsx","../src/component/column/MutationType.tsx","../src/component/mutationTable/MutationColumnHelper.tsx","../src/component/mutationTable/DefaultMutationTable.tsx","../src/component/lollipopPlot/Domain.tsx","../src/model/LollipopSpec.ts","../src/component/lollipopPlot/Lollipop.tsx","../src/store/DefaultLollipopPlotControlsConfig.ts","../src/util/LollipopPlotUtils.ts","../src/util/PfamUtils.ts","../src/component/track/TrackSelector.tsx","../src/util/TrackUtils.ts","../src/component/lollipopMutationPlot/DefaultLollipopPlotLegend.tsx","../src/component/lollipopPlot/Sequence.tsx","../src/component/lollipopPlot/LollipopPlotNoTooltip.tsx","../src/component/lollipopPlot/LollipopPlot.tsx","../src/component/lollipopMutationPlot/LollipopMutationPlotControls.tsx","../src/filter/HotspotFilter.ts","../src/component/track/TrackCircle.tsx","../src/util/LabelUtils.tsx","../src/component/track/TrackRect.tsx","../src/component/track/TrackItem.tsx","../src/component/track/Track.tsx","../src/component/track/HotspotTrack.tsx","../src/filter/OncoKbFilter.ts","../src/component/oncokb/OncoKbSummaryTable.tsx","../src/component/track/OncoKbTrackTooltip.tsx","../src/component/track/OncoKbTrack.tsx","../src/component/track/ExonTrack.tsx","../src/component/ptm/PtmReferenceList.tsx","../src/component/ptm/PtmAnnotationTable.tsx","../src/component/track/PtmTrack.tsx","../src/component/track/UniprotTopologyTrack.tsx","../src/component/track/TrackPanel.tsx","../src/component/lollipopPlot/DomainTooltip.tsx","../src/component/lollipopMutationPlot/LollipopMutationPlot.tsx","../src/cache/DefaultStringQueryCache.ts","../src/cache/DefaultPubMedCache.ts","../src/cache/MutationAlignerCache.ts","../src/store/DefaultMutationMapperDataStore.ts","../src/store/DefaultMutationMapperDataFetcher.ts","../src/store/DefaultMutationMapperFilterApplier.ts","../src/store/DefaultMutationMapperStore.ts","../src/util/DefaultWindowInstance.ts","../src/component/mutationMapper/DefaultMutationRateSummary.tsx","../src/component/mutationMapper/TranscriptDropdown.tsx","../src/component/mutationMapper/GeneSummary.tsx","../src/component/mutationMapper/MutationMapper.tsx"],"sourcesContent":["import { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport annotationStyles from './column/annotation.module.scss';\n\nexport function loaderIcon(className?: string) {\n return (\n <span\n className={classNames(\n `${annotationStyles['annotation-item']}`,\n `${annotationStyles['annotation-item-load']}`,\n className\n )}\n >\n <i className=\"fa fa-spinner fa-pulse\" />\n </span>\n );\n}\n\nexport function errorIcon(errorMessage: string) {\n return (\n <DefaultTooltip\n overlay={<span>{errorMessage}</span>}\n placement=\"right\"\n trigger={['hover', 'focus']}\n destroyTooltipOnHide={true}\n >\n <span className={`${annotationStyles['annotation-item-error']}`}>\n <i className=\"fa fa-exclamation-triangle text-danger\" />\n </span>\n </DefaultTooltip>\n );\n}\n","export default \"data:image/png;base64,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\"","import * as React from 'react';\nimport _ from 'lodash';\nimport { ICivicVariantSummary } from 'cbioportal-utils';\n\nimport civicTextLogo from '../../images/civic_text_logo.png';\nimport './civicCard.scss';\n\nexport interface ICivicCardProps {\n title: string;\n geneName: string;\n geneDescription: string;\n geneUrl: string;\n variants: { [name: string]: ICivicVariantSummary };\n}\n\nexport default class CivicCard extends React.Component<ICivicCardProps, {}> {\n /**\n * Generate variants\n * @param variantMap\n * @returns {JSX.Element[]}\n */\n public generateVariants(variantMap: {\n [name: string]: ICivicVariantSummary;\n }) {\n const list: JSX.Element[] = [];\n\n if (_.isEmpty(variantMap)) {\n list.push(this.variantItem('_naVariant_'));\n } else {\n for (let name in variantMap) {\n let variant = variantMap[name];\n let entryTypes: string = '';\n for (let evidenceType in variant.evidenceCounts) {\n entryTypes +=\n evidenceType.toLowerCase() +\n ': ' +\n variant.evidenceCounts[evidenceType] +\n ', ';\n }\n entryTypes = entryTypes.slice(0, -2) + '.';\n\n list.push(\n this.variantItem(\n name,\n variant.url,\n variant.name,\n entryTypes,\n variant.description\n )\n );\n }\n }\n\n return list;\n }\n\n /**\n * Get variant item\n * @param url\n * @param name\n * @param entryTypes\n * @param description\n * @returns {any}\n */\n public variantItem(\n key: string,\n url?: string,\n name?: string,\n entryTypes?: string,\n description?: string\n ) {\n let result;\n\n if (url || name || entryTypes || description) {\n result = (\n <div key={key} className=\"civic-card-variant\">\n <div className=\"civic-card-variant-header\">\n <span className=\"civic-card-variant-name\">\n <a href={url} target=\"_blank\">\n {name}\n </a>\n </span>\n <span className=\"civic-card-variant-entry-types\">\n {' '}\n Entries: {entryTypes}\n </span>\n </div>\n <div className=\"civic-card-variant-description summary\">\n {description}\n </div>\n </div>\n );\n } else {\n result = (\n <div key={key} className=\"civic-card-variant\">\n <div className=\"civic-card-variant-description summary\">\n Information about the oncogenic activity of this\n alteration is not yet available in CIViC.\n </div>\n </div>\n );\n }\n\n return result;\n }\n\n /**\n * Render civic card component\n * @returns {any}\n */\n public render() {\n return (\n <div className=\"civic-card\">\n <span>\n <div className=\"col s12 tip-header\">{this.props.title}</div>\n <div className=\"col s12 civic-card-content\">\n <div className=\"col s12 civic-card-gene\">\n <p>\n <span className=\"civic-card-gene-name\">\n <a\n href={this.props.geneUrl}\n target=\"_blank\"\n >\n <b>{this.props.geneName}</b>\n </a>\n </span>{' '}\n - {this.props.geneDescription}\n </p>\n </div>\n <div className=\"col s12\">\n <ul>\n {this.generateVariants(this.props.variants)}\n </ul>\n </div>\n\n <div className=\"item disclaimer\">\n <span>\n Disclaimer: This resource is intended for purely\n research purposes. It should not be used for\n emergencies or medical or professional advice.\n </span>\n </div>\n </div>\n </span>\n\n <div className=\"item footer\">\n <a href={this.props.geneUrl} target=\"_blank\">\n <img\n src={civicTextLogo}\n className=\"civic-logo\"\n alt=\"CIViC\"\n />\n </a>\n </div>\n </div>\n );\n }\n}\n","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","import _ from 'lodash';\nimport { observable, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { DefaultTooltip } from 'cbioportal-frontend-commons';\n\nimport {\n CIVIC_NA_VALUE,\n ICivicEntry,\n ICivicVariantSummary,\n} from 'cbioportal-utils';\nimport { errorIcon, loaderIcon } from '../StatusHelpers';\nimport CivicCard from './CivicCard';\n\nimport civicLogoSrc from '../../images/civic-logo.png';\nimport civicLogoNoVariantsSrc from '../../images/civic-logo-no-variants.png';\n\nimport annotationStyles from '../column/annotation.module.scss';\n\nexport interface ICivicProps {\n civicEntry: ICivicEntry | null | undefined;\n civicStatus: 'pending' | 'error' | 'complete';\n hasCivicVariants: boolean;\n}\n\nexport function hideArrow(tooltipEl: any) {\n const arrowEl = tooltipEl.querySelector('.rc-tooltip-arrow');\n arrowEl.style.display = 'none';\n}\n\nexport function sortValue(civicEntry: ICivicEntry | null | undefined): number {\n let score = 0;\n\n if (civicEntry) {\n score = 1;\n }\n\n return score;\n}\n\nexport function download(civicEntry: ICivicEntry | null | undefined): string {\n if (!civicEntry) {\n return CIVIC_NA_VALUE;\n }\n\n const variants: ICivicVariantSummary[] = _.values(civicEntry.variants);\n const values: string[] = [];\n\n if (variants && variants.length > 0 && variants[0].evidenceCounts) {\n _.forEach(variants[0].evidenceCounts, (value, key) => {\n values.push(`${key}: ${value}`);\n });\n }\n\n // this indicates that we have an entry but the evidence is empty\n if (values.length === 0) {\n return CIVIC_NA_VALUE;\n }\n\n return values.join(', ');\n}\n\n@observer\nexport default class Civic extends React.Component<ICivicProps, {}> {\n @observable tooltipDataLoadComplete: boolean = false;\n\n constructor(props: ICivicProps) {\n super(props);\n\n makeObservable(this);\n\n this.cardContent = this.cardContent.bind(this);\n }\n\n public render() {\n let civicContent: JSX.Element = (\n <span className={`${annotationStyles['annotation-item']}`} />\n );\n\n const civicImgWidth: number = 14;\n let civicImgHeight: number = 14;\n let civicImgSrc = !this.props.hasCivicVariants\n ? civicLogoNoVariantsSrc\n : civicLogoSrc;\n\n if (this.props.civicStatus == 'error') {\n civicContent = errorIcon('Error fetching Civic data');\n } else if (this.props.civicEntry !== undefined) {\n if (\n this.props.civicEntry !== null &&\n this.props.civicStatus == 'complete'\n ) {\n civicContent = (\n <span className={`${annotationStyles['annotation-item']}`}>\n <img\n width={civicImgWidth}\n height={civicImgHeight}\n src={civicImgSrc}\n alt=\"Civic Variant Entry\"\n />\n </span>\n );\n\n civicContent = (\n <DefaultTooltip\n overlay={this.cardContent.bind(\n this,\n this.props.civicEntry\n )}\n placement=\"right\"\n trigger={['hover', 'focus']}\n onPopupAlign={hideArrow}\n destroyTooltipOnHide={false}\n >\n {civicContent}\n </DefaultTooltip>\n );\n }\n } else {\n // It's still unknown (undefined) if the current gene has a Civic entry or not.\n civicContent = loaderIcon('pull-left');\n }\n\n return civicContent;\n }\n\n private cardContent(civicEntry: ICivicEntry): JSX.Element {\n return (\n <CivicCard\n title={`CIViC Variants`}\n geneName={civicEntry.name}\n geneDescription={civicEntry.description}\n geneUrl={civicEntry.url}\n variants={civicEntry.variants}\n />\n );\n }\n}\n","import { DefaultTooltip, TruncatedText } from 'cbioportal-frontend-commons';\nimport { Clinvar } from 'genome-nexus-ts-api-client';\nimport _ from 'lodash';\nimport * as React from 'react';\n\nexport type ClinvarSummaryProps = {\n clinvar?: Clinvar;\n};\n\nconst NoClinvarData = () => {\n return (\n <DefaultTooltip\n placement=\"topLeft\"\n overlay={<span>Variant has no ClinVar data.</span>}\n >\n <span\n style={{\n height: '100%',\n width: '100%',\n display: 'block',\n overflow: 'hidden',\n }}\n >\n &nbsp;\n </span>\n </DefaultTooltip>\n );\n};\n\nconst ClinvarSummary = (props: ClinvarSummaryProps) => {\n if (!props.clinvar) {\n return <NoClinvarData />;\n } else {\n const clinvarId = props.clinvar.clinvarId;\n const clinvarLink = `https://www.ncbi.nlm.nih.gov/clinvar/variation/${clinvarId}/`;\n const clinicalSignificance = props.clinvar.clinicalSignificance;\n const conflictingClinicalSignificance =\n props.clinvar.conflictingClinicalSignificance;\n return (\n <TruncatedText\n maxLength={30}\n text={clinicalSignificance}\n addTooltip=\"always\"\n tooltip={\n <div style={{ maxWidth: 300 }}>\n <div>{clinicalSignificance}</div>\n {conflictingClinicalSignificance && (\n <div>{conflictingClinicalSignificance}</div>\n )}\n <div>\n (ClinVar ID:{' '}\n <a href={clinvarLink} target=\"_blank\">\n {clinvarId}\n </a>\n )\n </div>\n </div>\n }\n />\n );\n }\n};\n\nexport default ClinvarSummary;\n","import _ from 'lodash';\nimport {\n generateQueryVariantId,\n IOncoKbData,\n LEVELS,\n Mutation,\n OncoKbCardDataType,\n} from 'cbioportal-utils';\nimport { IndicatorQueryResp, TumorType } from 'oncokb-ts-api-client';\n\n// oncogenic value => oncogenic class name\nconst ONCOGENIC_CLASS_NAMES: { [oncogenic: string]: string } = {\n 'Likely Neutral': 'neutral',\n Unknown: 'unknown',\n Inconclusive: 'inconclusive',\n Resistance: 'oncogenic',\n 'Predicted Oncogenic': 'oncogenic',\n 'Likely Oncogenic': 'oncogenic',\n Oncogenic: 'oncogenic',\n};\n\n// oncogenic value => score\n// (used for sorting purposes)\nconst ONCOGENIC_SCORE: { [oncogenic: string]: number } = {\n Unknown: 0,\n Inconclusive: 0,\n 'Likely Neutral': 0,\n Resistance: 5,\n 'Predicted Oncogenic': 5,\n 'Likely Oncogenic': 5,\n Oncogenic: 5,\n};\n\n// sensitivity level => score\n// (used for sorting purposes)\nconst SENSITIVITY_LEVEL_SCORE: { [level: string]: number } = {\n '4': 1,\n '3B': 2,\n '3A': 3,\n '2': 5,\n '1': 6,\n};\n\n// resistance level <-> score\n// (used for sorting purposes)\nconst RESISTANCE_LEVEL_SCORE: { [level: string]: number } = {\n R3: 1,\n R2: 2,\n R1: 3,\n};\n\n// diagnostic level <-> score\n// (used for sorting purposes)\nconst DIAGNOSTIC_LEVEL_SCORE: { [level: string]: number } = {\n Dx3: 1,\n Dx2: 2,\n Dx1: 3,\n};\n\n// prognostic level <-> score\n// (used for sorting purposes)\nconst PROGNOSTIC_LEVEL_SCORE: { [level: string]: number } = {\n Px3: 1,\n Px2: 2,\n Px1: 3,\n};\n\nexport function normalizeLevel(level: string | null): string | null {\n if (level) {\n const matchArray = level.match(/LEVEL_(.*)/);\n\n if (matchArray && matchArray.length >= 2) {\n return matchArray[1];\n } else {\n return level;\n }\n } else {\n return null;\n }\n}\n\nexport function normalizeOncogenicity(oncogenicity?: string) {\n return (oncogenicity || 'unknown')\n .trim()\n .toLowerCase()\n .replace(/\\s/, '-');\n}\n\nexport function oncogenicXPosition(highestSensitiveLevel: string | null) {\n const map: { [id: string]: number } = {\n '1': 1,\n '2': 2,\n '3A': 4,\n '3B': 5,\n '4': 6,\n };\n\n let levelIndex =\n highestSensitiveLevel === null ? 0 : map[highestSensitiveLevel] || 0;\n return -(8 + levelIndex * 30);\n}\n\nexport function oncogenicYPosition(\n oncogenicity: string,\n isVUS: boolean,\n resistanceLevel: string | null\n) {\n const oncogenicityMap: { [id: string]: number } = {\n Oncogenic: 0,\n 'Predicted Oncogenic': 0,\n 'Likely Oncogenic': 0,\n Resistance: 0,\n Neutral: 1,\n 'Likely Neutral': 1,\n Unknown: 2,\n Inconclusive: 2,\n };\n const resistanceLevelMap: { [id: string]: number } = {\n R1: 1,\n R2: 2,\n R3: 3,\n };\n\n let oncogenicityIndex = oncogenicityMap[oncogenicity];\n if (oncogenicityIndex === undefined) {\n oncogenicityIndex = 4;\n }\n if (oncogenicityIndex > 1 && isVUS) {\n oncogenicityIndex = 3;\n }\n\n const defaultIndexForUnrecognizedResistanceLevel = 0;\n let resistanceLevelIndex =\n resistanceLevel === null\n ? defaultIndexForUnrecognizedResistanceLevel\n : resistanceLevelMap[resistanceLevel] ||\n defaultIndexForUnrecognizedResistanceLevel;\n return -(7 + oncogenicityIndex * 120 + resistanceLevelIndex * 30);\n}\n\nexport function levelIconClassNames(level: string) {\n if (level) {\n return `oncokb icon level-${level}`;\n }\n return '';\n}\n\nexport function oncogenicityIconClassNames(oncogenicity: string) {\n return `oncokb icon ${normalizeOncogenicity(oncogenicity)}`;\n}\n\nexport function annotationIconClassNames(\n type: OncoKbCardDataType,\n highestLevel: string,\n indicator?: IndicatorQueryResp\n) {\n return type === OncoKbCardDataType.BIOLOGICAL\n ? oncogenicityIconClassNames(indicator?.oncogenic || '')\n : levelIconClassNames(normalizeLevel(highestLevel) || '');\n}\n\nexport function calcHighestIndicatorLevel(\n type: OncoKbCardDataType,\n indicator?: IndicatorQueryResp\n) {\n let highestLevel = '';\n\n if (indicator) {\n switch (type) {\n case OncoKbCardDataType.TXS:\n highestLevel = indicator.highestSensitiveLevel;\n break;\n case OncoKbCardDataType.TXR:\n highestLevel = indicator.highestResistanceLevel;\n break;\n case OncoKbCardDataType.DX:\n highestLevel = indicator.highestDiagnosticImplicationLevel;\n break;\n case OncoKbCardDataType.PX:\n highestLevel = indicator.highestPrognosticImplicationLevel;\n break;\n }\n }\n\n return highestLevel;\n}\n\nexport function calcOncogenicScore(oncogenic: string) {\n return ONCOGENIC_SCORE[oncogenic] || 0;\n}\n\nexport function calcSensitivityLevelScore(level: string) {\n return SENSITIVITY_LEVEL_SCORE[normalizeLevel(level) || ''] || 0;\n}\n\nexport function calcResistanceLevelScore(level: string) {\n return RESISTANCE_LEVEL_SCORE[normalizeLevel(level) || ''] || 0;\n}\n\nexport function calcDiagnosticLevelScore(level: string) {\n return DIAGNOSTIC_LEVEL_SCORE[normalizeLevel(level) || ''] || 0;\n}\n\nexport function calcPrognosticLevelScore(level: string) {\n return PROGNOSTIC_LEVEL_SCORE[normalizeLevel(level) || ''] || 0;\n}\n\nexport function generateOncogenicCitations(oncogenicRefs: any): number[] {\n return _.isArray(oncogenicRefs)\n ? _.map(oncogenicRefs, (article: any) => {\n return Number(article.pmid);\n }).sort()\n : [];\n}\n\nexport function levelComparator(a: string, b: string) {\n return LEVELS.all.indexOf(a) > LEVELS.all.indexOf(b) ? -1 : 1;\n}\n\nfunction getLevel(level: string) {\n if (level) {\n var _level = level.match(/LEVEL_(R?\\d[AB]?)/);\n if (_level instanceof Array && _level.length >= 2) {\n return _level[1];\n } else {\n return level;\n }\n } else {\n return '';\n }\n}\n\nfunction treatmentsToStr(data: any[]) {\n if (_.isArray(data)) {\n var treatments: any[] = [];\n\n data.forEach(function(treatment: any) {\n treatments.push(drugToStr(treatment.drugs));\n });\n\n return treatments.sort().join(', ');\n } else {\n return '';\n }\n}\n\nfunction drugToStr(data: any) {\n var drugs: any[] = [];\n\n data.forEach(function(drug: any) {\n drugs.push(drug.drugName);\n });\n\n return drugs.sort().join(' + ');\n}\n\n/**\n * Return combined alterations name, separated by comma.\n * Same location variant will be truncated into AALocationAllele e.g. V600E/K\n *\n * @param {Array} alterations - List of alterations\n * @return {string} - Truncated alteration name\n */\nexport function mergeAlterations(alterations: string | string[]) {\n var positions: any = {};\n var regular: any[] = [];\n var regExp = new RegExp('^([A-Z])([0-9]+)([A-Z]$)');\n\n if (_.isString(alterations)) {\n return alterations;\n }\n\n _.each(alterations, function(alteration) {\n var result = regExp.exec(alteration);\n if (_.isArray(result) && result.length === 4) {\n if (!positions.hasOwnProperty(result[2])) {\n positions[result[2]] = {};\n }\n if (!positions[result[2]].hasOwnProperty(result[1])) {\n // Avoid duplication, use object instead of array\n positions[result[2]][result[1]] = {};\n }\n positions[result[2]][result[1]][result[3]] = 1;\n } else {\n regular.push(alteration);\n }\n });\n\n _.each(\n _.keys(positions)\n .map(function(e) {\n return Number(e);\n })\n .sort(),\n function(position) {\n _.each(_.keys(positions[position]).sort(), function(aa) {\n regular.push(\n aa +\n position +\n _.keys(positions[position][aa])\n .sort()\n .join('/')\n );\n });\n }\n );\n return regular.join(', ');\n}\n\n/**\n * Return the positional variant of the missense mutation\n * @param alteration The missense mutation\n */\nexport function getPositionalVariant(alteration: string) {\n const regExp = new RegExp('^([A-Z]+)([0-9]+)([A-Z]*)$');\n const result = regExp.exec(alteration);\n\n // Only if the alteration is missense mutation or positional variant\n // result[0]: matched alteration\n // result[1]: reference alleles (there could be multiple reference alleles, we only return the first allele)\n // result[2]: position(protein start/end)\n // result[3]: variant alleles (empty if the alteration is positional variant already)\n if (\n _.isArray(result) &&\n result.length === 4 &&\n (!result[3] || result[1].length === result[3].length)\n ) {\n return `${result[1][0]}${result[2]}`;\n }\n return undefined;\n}\n\nexport function getTumorTypeName(tumorType?: TumorType) {\n if (!tumorType) {\n return '';\n } else if (tumorType.name) {\n return tumorType.name;\n } else if (tumorType.mainType) {\n return tumorType.mainType.name;\n } else {\n return '';\n }\n}\n\nexport function groupOncoKbIndicatorDataByMutations(\n mutationsByPosition: { [pos: number]: Mutation[] },\n oncoKbData: IOncoKbData,\n getTumorType: (mutation: Mutation) => string,\n getEntrezGeneId: (mutation: Mutation) => number,\n filter?: (indicator: IndicatorQueryResp) => boolean\n): { [pos: number]: IndicatorQueryResp[] } {\n const indicatorMap: { [pos: number]: IndicatorQueryResp[] } = {};\n\n _.keys(mutationsByPosition).forEach(key => {\n const position = Number(key);\n const indicators: IndicatorQueryResp[] = mutationsByPosition[position]\n .map(mutation =>\n getIndicatorData(\n mutation,\n oncoKbData,\n getTumorType,\n getEntrezGeneId\n )\n )\n .filter(\n indicator =>\n indicator !== undefined && (!filter || filter(indicator))\n ) as IndicatorQueryResp[];\n\n if (position > 0 && indicators.length > 0) {\n indicatorMap[position] = indicators;\n }\n });\n\n return indicatorMap;\n}\n\nexport function getIndicatorData(\n mutation: Mutation,\n oncoKbData: IOncoKbData,\n getTumorType: (mutation: Mutation) => string,\n getEntrezGeneId: (mutation: Mutation) => number\n): IndicatorQueryResp | undefined {\n if (oncoKbData.indicatorMap === null) {\n return undefined;\n }\n\n const id = generateQueryVariantId(\n getEntrezGeneId(mutation),\n getTumorType(mutation),\n mutation.proteinChange,\n mutation.mutationType\n );\n\n return oncoKbData.indicatorMap[id];\n}\n\nexport function defaultOncoKbIndicatorFilter(indicator: IndicatorQueryResp) {\n return indicator.oncogenic\n .toLowerCase()\n .trim()\n .includes('oncogenic');\n}\n\nexport function defaultOncoKbFilter(\n mutation: Mutation,\n oncoKbData?: IOncoKbData,\n getTumorType?: (mutation: Mutation) => string,\n getEntrezGeneId?: (mutation: Mutation) => number\n): boolean {\n let filter = true;\n\n if (oncoKbData && getTumorType && getEntrezGeneId) {\n const indicatorData = getIndicatorData(\n mutation,\n oncoKbData,\n getTumorType,\n getEntrezGeneId\n );\n filter = indicatorData\n ? defaultOncoKbIndicatorFilter(indicatorData)\n : false;\n }\n\n return filter;\n}\n","export default \"data:image/png;base64,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\"","import * as React from 'react';\nimport _ from 'lodash';\nimport { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { parseMyCancerGenomeLink } from 'cbioportal-utils';\n\nimport mcgLogo from '../../images/mcg_logo.png';\nimport annotationStyles from '../column/annotation.module.scss';\nimport mcgStyles from './myCancerGenome.module.scss';\n\nexport interface IMyCancerGenomeProps {\n linksHTML: string[];\n}\n\nexport function placeArrow(tooltipEl: any) {\n const arrowEl = tooltipEl.querySelector('.rc-tooltip-arrow');\n arrowEl.style.left = '10px';\n}\n\nexport function sortValue(links: string[]): number {\n return links.length > 0 ? 1 : 0;\n}\n\nexport function download(links: string[]): string {\n return links.length > 0 ? 'present' : 'not present';\n}\n\nexport function myCancerGenomeLinks(linksHTML: string[]) {\n const links: any[] = [];\n\n _.each(linksHTML, (link: string, index: number) => {\n // TODO this is a workaround, ideally we should fix the data itself\n // parse the data as an HTML dom element, since it is formatted as an HTML link.\n const myCancerGenomeLink = parseMyCancerGenomeLink(link);\n\n if (myCancerGenomeLink) {\n links.push(\n <li key={index}>\n <a href={myCancerGenomeLink.url} target=\"_blank\">\n {myCancerGenomeLink.text}\n </a>\n </li>\n );\n }\n });\n\n return (\n <span>\n <b>My Cancer Genome links:</b>\n <br />\n <ul className={mcgStyles['link-list']}>{links}</ul>\n </span>\n );\n}\n\nexport default class MyCancerGenome extends React.Component<\n IMyCancerGenomeProps\n> {\n public render() {\n let myCancerGenomeContent: JSX.Element = (\n <span className={`${annotationStyles['annotation-item']}`} />\n );\n\n if (this.props.linksHTML.length > 0) {\n const arrowContent = <div className=\"rc-tooltip-arrow-inner\" />;\n const tooltipContent = myCancerGenomeLinks(this.props.linksHTML);\n\n myCancerGenomeContent = (\n <DefaultTooltip\n overlay={tooltipContent}\n placement=\"topLeft\"\n trigger={['hover', 'focus']}\n arrowContent={arrowContent}\n onPopupAlign={placeArrow}\n >\n <span\n className={`${annotationStyles['annotation-item']} mcg`}\n >\n <img\n width=\"14\"\n height=\"14\"\n src={mcgLogo}\n alt=\"My Cancer Genome Symbol\"\n />\n </span>\n </DefaultTooltip>\n );\n }\n\n return myCancerGenomeContent;\n }\n}\n","import React from 'react';\nimport { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { OncoKbCardDataType } from 'cbioportal-utils';\nimport { IndicatorQueryResp } from 'oncokb-ts-api-client';\n\nimport {\n annotationIconClassNames,\n calcHighestIndicatorLevel,\n} from '../../util/OncoKbUtils';\n\nimport annotationStyles from '../column/annotation.module.scss';\n\nfunction hideArrow(tooltipEl: any) {\n const arrowEl = tooltipEl.querySelector('.rc-tooltip-arrow');\n arrowEl.style.display = 'none';\n}\n\nexport const AnnotationIcon: React.FunctionComponent<{\n type: OncoKbCardDataType;\n tooltipOverlay?: JSX.Element;\n indicator?: IndicatorQueryResp;\n availableDataTypes?: OncoKbCardDataType[];\n}> = props => {\n if (\n props.availableDataTypes !== undefined &&\n !props.availableDataTypes.includes(props.type)\n ) {\n return null;\n }\n const highestLevel = calcHighestIndicatorLevel(props.type, props.indicator);\n\n return (\n <AnnotationIconWithTooltip\n tooltipOverlay={props.tooltipOverlay}\n icon={\n <i\n className={annotationIconClassNames(\n props.type,\n highestLevel,\n props.indicator\n )}\n data-test=\"oncogenic-icon-image\"\n />\n }\n />\n );\n};\n\nexport const AnnotationIconWithTooltip: React.FunctionComponent<{\n tooltipOverlay?: JSX.Element;\n icon?: JSX.Element;\n}> = props => {\n if (props.icon) {\n return (\n <DefaultTooltip\n overlayClassName=\"oncokb-tooltip\"\n overlay={() =>\n props.tooltipOverlay ? props.tooltipOverlay : null\n }\n placement=\"right\"\n trigger={['hover', 'focus']}\n onPopupAlign={hideArrow}\n destroyTooltipOnHide={true}\n >\n <span className={`${annotationStyles['annotation-item']}`}>\n {props.icon}\n </span>\n </DefaultTooltip>\n );\n } else {\n return null;\n }\n};\n","import React from 'react';\nimport { OncoKbCardDataType } from 'cbioportal-utils';\nimport { IndicatorQueryResp } from 'oncokb-ts-api-client';\n\nimport { normalizeLevel, normalizeOncogenicity } from '../../util/OncoKbUtils';\n\nconst BIOLOGICAL_COLOR_MAP: { [level: string]: string } = {\n oncogenic: '#0968C3',\n 'likely-oncogenic': '#0968C3',\n 'predicted-oncogenic': '#0968C3',\n resistance: '#0968C3',\n neutral: '#696969',\n 'likely-neutral': '#696969',\n inconclusive: '#AAAAAA',\n vus: '#696969',\n unknown: '#CCCCCC',\n};\n\nconst LEVEL_COLOR_MAP: { [level: string]: string } = {\n '1': '#33A02C',\n '2': '#1F78B4',\n '3': '#984EA3',\n '3A': '#984EA3',\n '3B': '#BE98CE',\n '4': '#424242',\n R1: '#EE3424',\n R2: '#F79A92',\n R3: '#FCD6D3',\n Dx1: '#33A02C',\n Dx2: '#1F78B4',\n Dx3: '#984EA3',\n Px1: '#33A02C',\n Px2: '#1F78B4',\n Px3: '#984EA3',\n};\n\nfunction getLevelColor(\n highestLevel?: string,\n defaultColor: string = '#CCCCCC'\n) {\n const level = normalizeLevel(highestLevel || null) || '';\n return LEVEL_COLOR_MAP[level] || defaultColor;\n}\n\nfunction shouldDrawShape(\n type: OncoKbCardDataType,\n level?: string,\n availableDataTypes?: OncoKbCardDataType[]\n) {\n return (\n level &&\n availableDataTypes !== undefined &&\n availableDataTypes.includes(type)\n );\n}\n\nfunction getOncogenicShape(indicator?: IndicatorQueryResp) {\n const oncogenicity = normalizeOncogenicity(indicator?.oncogenic || '');\n const color = BIOLOGICAL_COLOR_MAP[oncogenicity] || '#CCCCCC';\n\n return (\n <g transform=\"translate(9, 9)\">\n <circle r=\"6\" fill=\"none\" strokeWidth=\"2\" stroke={color} />\n {// conditionally draw inner circles\n oncogenicity !== 'vus' && oncogenicity !== 'unknown' && (\n <g>\n <circle r=\"3\" fill=\"none\" strokeWidth=\"2\" stroke={color} />\n <circle r=\"1.5\" fill={color} stroke=\"none\" />\n </g>\n )}\n </g>\n );\n}\n\nfunction getTherapeuticSensitivityShape(\n indicator?: IndicatorQueryResp,\n availableDataTypes?: OncoKbCardDataType[]\n) {\n const highestLevel = indicator?.highestSensitiveLevel;\n if (\n !shouldDrawShape(\n OncoKbCardDataType.TXS,\n highestLevel,\n availableDataTypes\n )\n ) {\n return null;\n }\n\n const fillColor = getLevelColor(highestLevel, '#33A02C');\n\n return (\n <g transform=\"translate(14.5, 3.5)\">\n <circle r=\"4\" fill={fillColor} stroke=\"#ffffff\" strokeWidth=\"1\" />\n </g>\n );\n}\n\nfunction getTherapeuticResistanceShape(\n indicator?: IndicatorQueryResp,\n availableDataTypes?: OncoKbCardDataType[]\n) {\n const highestLevel = indicator?.highestResistanceLevel;\n if (\n !shouldDrawShape(\n OncoKbCardDataType.TXR,\n highestLevel,\n availableDataTypes\n )\n ) {\n return null;\n }\n\n const fillColor = getLevelColor(highestLevel, '#EE3424');\n\n return (\n <g transform=\"translate(14.5, 14.5)\">\n <circle r=\"4\" fill={fillColor} stroke=\"#ffffff\" strokeWidth=\"1\" />\n </g>\n );\n}\n\nfunction getDiagnosticShape(\n indicator?: IndicatorQueryResp,\n availableDataTypes?: OncoKbCardDataType[]\n) {\n const highestLevel = indicator?.highestDiagnosticImplicationLevel;\n if (\n !shouldDrawShape(\n OncoKbCardDataType.DX,\n highestLevel,\n availableDataTypes\n )\n ) {\n return null;\n }\n\n const fillColor = getLevelColor(highestLevel, '#33A02C');\n\n return (\n <g transform=\"translate(-0.5, -0.5)\">\n <rect\n width=\"7\"\n height=\"7\"\n fill={fillColor}\n stroke=\"#ffffff\"\n strokeWidth=\"1\"\n />\n </g>\n );\n}\n\nfunction getPrognosticShape(\n indicator?: IndicatorQueryResp,\n availableDataTypes?: OncoKbCardDataType[]\n) {\n const highestLevel = indicator?.highestPrognosticImplicationLevel;\n if (\n !shouldDrawShape(\n OncoKbCardDataType.PX,\n highestLevel,\n availableDataTypes\n )\n ) {\n return null;\n }\n\n const fillColor = getLevelColor(highestLevel, '#33A02C');\n\n return (\n <g transform=\"translate(0, 10.5)\">\n <polygon\n points=\"3.5 0, 8 8, -1 8\"\n fill={fillColor}\n stroke=\"#ffffff\"\n strokeWidth=\"1\"\n />\n </g>\n );\n}\n\nexport const CompactAnnotationIcon: React.FunctionComponent<{\n usingPublicOncoKbInstance: boolean;\n indicator?: IndicatorQueryResp;\n availableDataTypes?: OncoKbCardDataType[];\n}> = props => {\n const indicatorForLevelIcons = props.usingPublicOncoKbInstance\n ? undefined\n : props.indicator;\n\n return (\n <svg\n version=\"1.1\"\n width=\"18\"\n height=\"18\"\n data-test=\"oncogenic-icon-image\"\n >\n {getOncogenicShape(props.indicator)}\n {getTherapeuticSensitivityShape(\n indicatorForLevelIcons,\n props.availableDataTypes\n )}\n {getTherapeuticResistanceShape(\n indicatorForLevelIcons,\n props.availableDataTypes\n )}\n {getDiagnosticShape(\n indicatorForLevelIcons,\n props.availableDataTypes\n )}\n {getPrognosticShape(\n indicatorForLevelIcons,\n props.availableDataTypes\n )}\n </svg>\n );\n};\n","export enum OtherBiomarkersQueryType {\n MSIH = 'MSIH',\n TMBH = 'TMBI',\n}\n\nexport const OTHER_BIOMARKER_HUGO_SYMBOL = 'Other Biomarkers';\nexport const MSI_H_NAME = 'MSI-H';\nexport const TMB_H_NAME = 'TMB-H';\nexport const OTHER_BIOMARKER_NAME: {\n [key in OtherBiomarkersQueryType]: string;\n} = {\n [OtherBiomarkersQueryType.MSIH]: MSI_H_NAME,\n [OtherBiomarkersQueryType.TMBH]: TMB_H_NAME,\n};\n","import * as React from 'react';\nimport mainStyles from './main.module.scss';\nimport { OTHER_BIOMARKER_HUGO_SYMBOL } from './constants';\n\ntype OncoKbCardDefaultTitleProps = {\n hugoSymbol: string;\n variant: string;\n tumorType: string;\n};\n\nexport const OncoKbCardTitle: React.FunctionComponent<OncoKbCardDefaultTitleProps> = (\n props: OncoKbCardDefaultTitleProps\n) => {\n const titleContent = [];\n if (\n props.hugoSymbol &&\n props.hugoSymbol !== OTHER_BIOMARKER_HUGO_SYMBOL &&\n (!props.variant || !props.variant.includes(props.hugoSymbol))\n ) {\n titleContent.push(props.hugoSymbol);\n }\n if (props.variant) {\n titleContent.push(props.variant);\n }\n if (props.tumorType) {\n if (titleContent.length > 0) {\n titleContent.push('in');\n }\n titleContent.push(props.tumorType);\n }\n return (\n <div className={mainStyles['title']} data-test=\"oncokb-card-title\">\n {<span>{titleContent.join(' ')}</span>}\n </div>\n );\n};\n","import React from 'react';\n\nimport levelStyles from './level.module.scss';\nimport mainStyles from './main.module.scss';\nimport collapsibleStyles from './collapsible.module.scss';\nimport { Collapse } from 'react-collapse';\nimport { levelIconClassNames } from '../../util/OncoKbUtils';\nimport classnames from 'classnames';\nimport { observable, action, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport autobind from 'autobind-decorator';\n\nexport type LevelsOfEvidenceDropdownProps = {\n levels: string[];\n levelDes: { [level: string]: JSX.Element };\n};\n\n@observer\nexport default class OncoKbCardLevelsOfEvidenceDropdown extends React.Component<\n LevelsOfEvidenceDropdownProps\n> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n @observable levelsCollapsed: boolean = true;\n\n public levelListItem(level: string, levelDes: JSX.Element) {\n return (\n <li key={level} className={levelStyles['levels-li']}>\n <i className={levelIconClassNames(level)} />\n {levelDes}\n </li>\n );\n }\n\n public generateLevelRows(): JSX.Element[] {\n const rows: JSX.Element[] = [];\n this.props.levels.forEach(level => {\n rows.push(this.levelListItem(level, this.props.levelDes[level]));\n });\n\n return rows;\n }\n\n @action.bound\n handleLevelCollapse(): void {\n this.levelsCollapsed = !this.levelsCollapsed;\n }\n\n render() {\n return (\n <div>\n <div\n data-test=\"oncokb-card-levels-of-evidence-dropdown-header\"\n className={collapsibleStyles['collapsible-header']}\n onClick={this.handleLevelCollapse}\n >\n Levels of Evidence\n <span style={{ float: 'right' }}>\n {this.levelsCollapsed ? (\n <i\n className={classnames(\n 'fa fa-chevron-down',\n mainStyles['blue-icon']\n )}\n />\n ) : (\n <i\n className={classnames(\n 'fa fa-chevron-up',\n mainStyles['blue-icon']\n )}\n />\n )}\n </span>\n </div>\n <Collapse isOpened={!this.levelsCollapsed}>\n <div\n className={classnames(\n levelStyles.levels,\n collapsibleStyles['levels-collapse']\n )}\n >\n <ul\n style={{\n lineHeight: 8,\n padding: 0,\n }}\n >\n {this.generateLevelRows()}\n </ul>\n </div>\n </Collapse>\n </div>\n );\n }\n}\n","import * as React from 'react';\n\nexport default class OncoKBSuggestAnnotationLinkout extends React.Component<{\n gene: string;\n}> {\n render() {\n return (\n <div>\n <span>The gene is listed under </span>\n <a href=\"https://www.oncokb.org/cancerGenes\" target=\"_blank\">\n OncoKB Cancer Gene List\n </a>\n <span> but hasn't been curated yet. Please feel free to </span>\n <a\n target=\"_blank\"\n href={`mailto:contact@oncokb.org?subject=Annotation suggestion for ${this.props.gene}&&body=Thank you for using OncoKB.%0APlease provide the following information for ${this.props.gene} curation:%0A%0AEvidence:%0APMIDs:%0AAbstracts:`}\n title=\"suggest to annotate this gene\"\n >\n suggest the team annotate the gene\n </a>\n .\n </div>\n );\n }\n}\n","import * as React from 'react';\nimport {\n normalizeLevel,\n levelIconClassNames,\n mergeAlterations,\n getPositionalVariant,\n} from '../../util/OncoKbUtils';\nimport { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport _ from 'lodash';\nimport {\n defaultArraySortMethod,\n defaultSortMethod,\n LEVELS,\n OncoKbCardDataType,\n} from 'cbioportal-utils';\n\nexport default class OncoKbHelper {\n public static get TX_LEVELS(): string[] {\n return ['1', '2', '3A', '3B', '4', 'R1', 'R2'];\n }\n\n public static get DX_LEVELS(): string[] {\n return ['Dx1', 'Dx2', 'Dx3'];\n }\n\n public static get PX_LEVELS(): string[] {\n return ['Px1', 'Px2', 'Px3'];\n }\n\n public static get LEVELS(): string[] {\n return [...this.TX_LEVELS, ...this.DX_LEVELS, ...this.PX_LEVELS];\n }\n\n public static getLevelsDesc(dataType: OncoKbCardDataType) {\n switch (dataType) {\n case OncoKbCardDataType.TXS:\n case OncoKbCardDataType.TXR:\n return _.pick(this.LEVEL_DESC, this.TX_LEVELS);\n case OncoKbCardDataType.DX:\n return _.pick(this.LEVEL_DESC, this.DX_LEVELS);\n case OncoKbCardDataType.PX:\n return _.pick(this.LEVEL_DESC, this.PX_LEVELS);\n default:\n return {};\n }\n }\n\n public static get LEVEL_DESC(): { [level: string]: JSX.Element } {\n return {\n '1': (\n <span>\n <b>FDA-recognized</b> biomarker predictive of response to an{' '}\n <b>FDA-approved drug</b> in this indication\n </span>\n ),\n '2': (\n <span>\n <b>Standard care</b> biomarker recommended by the NCCN or\n other expert panels predictive of response to an{' '}\n <b>FDA-approved drug</b> in this indication\n </span>\n ),\n '3A': (\n <span>\n <b>Compelling clinical evidence</b> supports the biomarker\n as being predictive of response to a drug in this indication\n </span>\n ),\n '3B': (\n <span>\n <b>Standard care</b> or <b>investigational</b> biomarker{' '}\n predictive of response to an <b>FDA-approved</b> or{' '}\n <b>investigational</b> drug in another indication\n </span>\n ),\n '4': (\n <span>\n <b>Compelling biological evidence</b> supports the biomarker\n as being predictive of response to a drug\n </span>\n ),\n R1: (\n <span>\n <b>Standard care</b> biomarker predictive of{' '}\n <b>resistance</b> to an <b>FDA-approved</b> drug{' '}\n <b>in this indication</b>\n </span>\n ),\n R2: (\n <span>\n <b>Compelling clinical evidence</b> supports the biomarker\n as being predictive of <b>resistance</b> to a drug\n </span>\n ),\n Dx1: (\n <span>\n <b>FDA and/or professional guideline-recognized</b>{' '}\n biomarker required for diagnosis in this indication\n </span>\n ),\n Dx2: (\n <span>\n <b>FDA and/or professional guideline-recognized</b>{' '}\n biomarker that supports diagnosis in this indication\n </span>\n ),\n Dx3: (\n <span>\n Biomarker that <b>may assist disease diagnosis</b> in this\n indication based on <b>clinical evidence</b>\n </span>\n ),\n Px1: (\n <span>\n <b>FDA and/or professional guideline-recognized</b>{' '}\n biomarker prognostic in this indication based on{' '}\n <b>well-powered studie(s)</b>\n </span>\n ),\n Px2: (\n <span>\n <b>FDA and/or professional guideline-recognized</b>{' '}\n biomarker prognostic in this indication based on{' '}\n <b>a single or multiple small studies</b>\n </span>\n ),\n Px3: (\n <span>\n Biomarker is prognostic in this indication based on{' '}\n <b>clinical evidence</b> in <b>well-powered studies</b>\n </span>\n ),\n };\n }\n\n public static levelTooltipContent = (level: string) => {\n return (\n <div style={{ maxWidth: '200px' }}>\n {OncoKbHelper.LEVEL_DESC[level]}\n </div>\n );\n };\n\n public static getDefaultColumnDefinition(\n columnKey: 'level' | 'alterations'\n ) {\n switch (columnKey) {\n case 'level':\n return {\n id: 'level',\n Header: <div style={{ textAlign: 'center' }}>Level</div>,\n accessor: 'level',\n maxWidth: 45,\n sortMethod: (a: string, b: string) =>\n defaultSortMethod(\n LEVELS.all.indexOf(normalizeLevel(a) || ''),\n LEVELS.all.indexOf(normalizeLevel(b) || '')\n ),\n Cell: (props: { value: string }) => {\n const normalizedLevel =\n normalizeLevel(props.value) || '';\n return (\n <DefaultTooltip\n overlay={this.levelTooltipContent(\n normalizedLevel\n )}\n placement=\"left\"\n trigger={['hover', 'focus']}\n destroyTooltipOnHide={true}\n >\n <i\n className={levelIconClassNames(\n normalizedLevel\n )}\n style={{ margin: 'auto' }}\n />\n </DefaultTooltip>\n );\n },\n };\n case 'alterations':\n return {\n id: 'alterations',\n Header: <span>Alteration(s)</span>,\n accessor: 'alterations',\n minWidth: 80,\n sortMethod: (a: string[], b: string[]) =>\n defaultArraySortMethod(a, b),\n };\n }\n }\n\n public static getAlterationsColumnCell = (\n alterations: string[],\n variant: string\n ) => {\n const mergedAlteration = mergeAlterations(alterations);\n let content = <span>{mergedAlteration}</span>;\n if (alterations.length > 5) {\n const lowerCasedQueryVariant = variant.toLowerCase();\n let matchedAlteration = _.find(\n alterations,\n alteration =>\n alteration.toLocaleLowerCase() === lowerCasedQueryVariant\n );\n if (!matchedAlteration) {\n matchedAlteration = getPositionalVariant(variant);\n }\n let pickedAlteration =\n matchedAlteration === undefined\n ? alterations[0]\n : matchedAlteration;\n content = (\n <span>\n {pickedAlteration} and{' '}\n <DefaultTooltip\n overlay={\n <div style={{ maxWidth: '400px' }}>\n {mergedAlteration}\n </div>\n }\n placement=\"right\"\n destroyTooltipOnHide={true}\n >\n <a>{alterations.length - 1} other alterations</a>\n </DefaultTooltip>\n </span>\n );\n }\n return (\n <div style={{ whiteSpace: 'normal', lineHeight: '1rem' }}>\n {content}\n </div>\n );\n };\n}\n","import * as React from 'react';\n\nimport styles from './listGroupItem.module.scss';\nimport { ArticleAbstract } from 'oncokb-ts-api-client';\n\nexport default class ArticleAbstractItem extends React.Component<\n ArticleAbstract\n> {\n render() {\n let content = <span>{this.props.abstract}</span>;\n if (this.props.link) {\n content = (\n <a href={this.props.link} target=\"_blank\">\n {content}\n </a>\n );\n }\n return (\n <li\n key={`abstract_${this.props.abstract}`}\n className={styles['list-group-item']}\n >\n <span className={styles['list-group-item-title']}>\n {content}\n </span>\n </li>\n );\n }\n}\n","import { getNCBIlink } from 'cbioportal-frontend-commons';\nimport * as React from 'react';\n\nimport styles from './listGroupItem.module.scss';\nimport { trimOffHtmlTagEntities } from 'cbioportal-frontend-commons';\n\ntype PmidItemProps = {\n title: string;\n author: string;\n source: string;\n date: string;\n pmid: string;\n};\n\nexport default class PmidItem extends React.Component<PmidItemProps> {\n render() {\n return (\n <li key={this.props.pmid} className={styles['list-group-item']}>\n <a\n className={styles['list-group-item-title']}\n href={getNCBIlink(`/pubmed/${this.props.pmid}`)}\n target=\"_blank\"\n >\n <span>{trimOffHtmlTagEntities(this.props.title)}</span>\n </a>\n <div className={styles['list-group-item-content']}>\n <span>\n {this.props.author} {this.props.source}.{' '}\n {this.props.date}\n </span>\n <span>PMID: {this.props.pmid}</span>\n </div>\n </li>\n );\n }\n}\n","import { ICache } from 'cbioportal-frontend-commons';\nimport { ArticleAbstract } from 'oncokb-ts-api-client';\nimport * as React from 'react';\nimport _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport { computed } from 'mobx';\n\nimport ArticleAbstractItem from './ArticleAbstractItem';\nimport PmidItem from './PmidItem';\n\nimport styles from './listGroupItem.module.scss';\n\ntype ReferenceListProps = {\n pmids: number[];\n pmidData?: ICache<any>;\n abstracts: ArticleAbstract[];\n};\n\n@observer\nexport default class ReferenceList extends React.Component<ReferenceListProps> {\n @computed get isLoading() {\n if (this.props.pmidData && this.props.pmids) {\n const loadingItems = _.filter(this.props.pmids, uid => {\n const cacheData = this.props.pmidData![uid.toString()];\n // when the cacheData is undefined, the pmidData will fetch the uid info later which eventually results to an object with a status\n return !cacheData || cacheData.status === 'pending';\n });\n return loadingItems.length > 0;\n } else {\n return false;\n }\n }\n\n render() {\n if (this.isLoading) {\n return <i className=\"fa fa-spinner fa-pulse fa-2x\" />;\n }\n const list: JSX.Element[] = [];\n\n if (this.props.pmidData) {\n this.props.pmids.forEach((uid: number) => {\n const cacheData = this.props.pmidData![uid.toString()];\n const articleContent = cacheData ? cacheData.data : null;\n\n if (articleContent) {\n list.push(\n <PmidItem\n title={articleContent.title}\n author={\n _.isArray(articleContent.authors) &&\n articleContent.authors.length > 0\n ? articleContent.authors[0].name + ' et al.'\n : 'Unknown'\n }\n source={articleContent.source}\n date={new Date(articleContent.pubdate)\n .getFullYear()\n .toString()}\n pmid={articleContent.uid}\n />\n );\n }\n });\n }\n this.props.abstracts.forEach(abstract => {\n list.push(\n <ArticleAbstractItem\n abstract={abstract.abstract}\n link={abstract.link}\n />\n );\n });\n return <ul className={styles['no-style-ul']}>{list}</ul>;\n }\n}\n","import {\n DefaultTooltip,\n getNCBIlink,\n ICache,\n} from 'cbioportal-frontend-commons';\nimport * as React from 'react';\n\nimport ReferenceList from './ReferenceList';\n\nimport mainStyles from './main.module.scss';\n\nexport default class RefComponent extends React.Component<{\n content: string;\n componentType: 'tooltip' | 'linkout';\n pmidData: ICache<any>;\n}> {\n render() {\n const parts = this.props.content.split(/pmid|nct/i);\n\n if (parts.length < 2) {\n return <span>{this.props.content}</span>;\n }\n\n const ids = parts[1].match(/[0-9]+/g);\n\n if (!ids) {\n return <span>{this.props.content}</span>;\n }\n\n let prefix: string | undefined;\n\n if (this.props.content.toLowerCase().indexOf('pmid') >= 0) {\n prefix = 'PMID: ';\n } else if (this.props.content.toLowerCase().indexOf('nct') >= 0) {\n prefix = 'NCT';\n }\n\n let link: JSX.Element | undefined;\n\n if (prefix) {\n link = (\n <a\n target=\"_blank\"\n href={getNCBIlink(`/pubmed/${ids.join(',')}`)}\n >\n {`${prefix}${ids.join(',')}`}\n </a>\n );\n }\n\n if (this.props.componentType === 'tooltip') {\n const tooltipContent = () => (\n <div className={mainStyles['tooltip-refs']}>\n <ReferenceList\n pmids={ids.map((id: string) => parseInt(id))}\n pmidData={this.props.pmidData}\n abstracts={[]}\n />\n </div>\n );\n\n return (\n <span key={this.props.content}>\n {parts[0]}\n <DefaultTooltip\n overlay={tooltipContent}\n placement=\"right\"\n trigger={['hover', 'focus']}\n destroyTooltipOnHide={true}\n >\n <i className=\"fa fa-book\" style={{ color: 'black' }} />\n </DefaultTooltip>\n {`)`}\n </span>\n );\n } else if (link) {\n return (\n <span key={this.props.content}>\n {parts[0]}\n {link}\n {`)`}\n </span>\n );\n } else {\n return <span>{this.props.content}</span>;\n }\n }\n}\n","import { ICache } from 'cbioportal-frontend-commons';\nimport * as React from 'react';\nimport RefComponent from './RefComponent';\n\ntype SummaryWithRefsProps = {\n content: string | undefined;\n type: 'tooltip' | 'linkout';\n pmidData: ICache<any>;\n};\n\nexport default class SummaryWithRefs extends React.Component<\n SummaryWithRefsProps\n> {\n render() {\n if (!this.props.content) {\n return <span />;\n }\n\n const content: Array<JSX.Element> = [];\n\n // example delimiters:\n // (PMID: 11900253)\n // (PMID: 11753428, 16007150, 21467160)\n // (cBioPortal, MSKCC, May 2015, PMID: 24718888)\n // (NCT1234567)\n const regex = /(\\(.*?[PMID|NCT].*?\\))/i;\n\n // split the string with delimiters included\n const parts = this.props.content.split(regex);\n\n parts.forEach((part: string) => {\n // if delimiter convert to a JSX component\n if (part.match(regex)) {\n content.push(\n <RefComponent\n pmidData={this.props.pmidData}\n componentType={this.props.type}\n content={part}\n />\n );\n } else {\n content.push(<span>{part}</span>);\n }\n });\n\n return <span>{content}</span>;\n }\n}\n","import React from 'react';\nimport { If, Then, Else } from 'react-if';\nimport { Citations } from 'oncokb-ts-api-client';\n\nimport SummaryWithRefs from '../SummaryWithRefs';\nimport ReferenceList from '../ReferenceList';\nimport { ICache } from '../../../model/SimpleCache';\n\nexport const EvidenceReferenceContent: React.FunctionComponent<{\n description?: string;\n citations?: Citations;\n noInfoDisclaimer?: string;\n pmidData?: ICache;\n}> = props => {\n return (\n <If condition={!!props.description}>\n <Then>\n <SummaryWithRefs\n content={props.description}\n type={'tooltip'}\n pmidData={props.pmidData!}\n />\n </Then>\n <Else>\n <If\n condition={\n props.citations != undefined &&\n (props.citations.abstracts.length > 0 ||\n props.citations.pmids.length > 0)\n }\n >\n <Then>\n <ReferenceList\n pmidData={props.pmidData}\n pmids={props.citations!.pmids.map(pmid =>\n Number(pmid)\n )}\n abstracts={props.citations!.abstracts}\n />\n </Then>\n <Else>\n {props.noInfoDisclaimer\n ? props.noInfoDisclaimer\n : 'Information is not available.'}\n </Else>\n </If>\n </Else>\n </If>\n );\n};\n","import { DefaultTooltip, ICache } from 'cbioportal-frontend-commons';\nimport { ArticleAbstract, IndicatorQueryTreatment } from 'oncokb-ts-api-client';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport ReactTable from 'react-table';\n\nimport { getTumorTypeName } from '../../util/OncoKbUtils';\nimport OncoKbHelper from './OncoKbHelper';\nimport { EvidenceReferenceContent } from './oncokbCard/EvidenceReferenceContent';\n\nimport mainStyles from './main.module.scss';\nimport './oncoKbTreatmentTable.scss';\n\ntype OncoKbTreatmentTableProps = {\n variant: string;\n treatments: IndicatorQueryTreatment[];\n pmidData: ICache<any>;\n};\n\n@observer\nexport default class OncoKbTreatmentTable extends React.Component<\n OncoKbTreatmentTableProps\n> {\n levelTooltipContent = (level: string) => {\n return (\n <div style={{ maxWidth: '200px' }}>\n {OncoKbHelper.LEVEL_DESC[level]}\n </div>\n );\n };\n\n treatmentTooltipContent = (\n abstracts: ArticleAbstract[],\n pmids: number[],\n pmidData: ICache<any>,\n description?: string\n ) => {\n return abstracts.length > 0 || pmids.length > 0 ? (\n () => (\n <div className={mainStyles['tooltip-refs']}>\n <EvidenceReferenceContent\n description={description}\n citations={{\n pmids: pmids.map(pmid => pmid.toString()),\n abstracts: abstracts,\n }}\n pmidData={pmidData}\n noInfoDisclaimer={\n 'Mutation effect information is not available.'\n }\n />\n </div>\n )\n ) : (\n <span />\n );\n };\n\n readonly columns = [\n OncoKbHelper.getDefaultColumnDefinition('level'),\n {\n ...OncoKbHelper.getDefaultColumnDefinition('alterations'),\n Cell: (props: { value: string[] }) => {\n return OncoKbHelper.getAlterationsColumnCell(\n props.value,\n this.props.variant\n );\n },\n },\n {\n id: 'treatment',\n Header: <span>Drug(s)</span>,\n accessor: 'drugs',\n Cell: (props: { original: IndicatorQueryTreatment }) => (\n <div style={{ whiteSpace: 'normal', lineHeight: '1rem' }}>\n {props.original.drugs\n .map(drug => drug.drugName)\n .join(' + ')}\n </div>\n ),\n },\n {\n id: 'cancerType',\n Header: (\n <span>\n Level-associated\n <br />\n cancer type(s)\n </span>\n ),\n accessor: 'levelAssociatedCancerType',\n minWidth: 120,\n Cell: (props: { original: IndicatorQueryTreatment }) => (\n <div style={{ whiteSpace: 'normal', lineHeight: '1rem' }}>\n {getTumorTypeName(props.original.levelAssociatedCancerType)}\n </div>\n ),\n },\n {\n id: 'referenceList',\n Header: <span />,\n sortable: false,\n maxWidth: 25,\n Cell: (props: { original: IndicatorQueryTreatment }) =>\n (props.original.abstracts.length > 0 ||\n props.original.pmids.length > 0) && (\n <DefaultTooltip\n overlay={this.treatmentTooltipContent(\n props.original.abstracts,\n props.original.pmids.map(pmid => Number(pmid)),\n this.props.pmidData,\n props.original.description\n )}\n placement=\"right\"\n trigger={['hover', 'focus']}\n destroyTooltipOnHide={true}\n >\n <i className=\"fa fa-book\" />\n </DefaultTooltip>\n ),\n },\n ];\n\n public render() {\n return (\n <div className=\"oncokb-treatment-table\">\n <ReactTable\n data={this.props.treatments}\n columns={this.columns}\n showPagination={false}\n pageSize={this.props.treatments.length}\n className=\"-striped -highlight\"\n />\n </div>\n );\n }\n}\n","import React from 'react';\nimport { Citations } from 'oncokb-ts-api-client';\n\nimport { ICache } from '../../../model/SimpleCache';\nimport { EvidenceReferenceContent } from './EvidenceReferenceContent';\n\nexport const BiologicalContent: React.FunctionComponent<{\n biologicalSummary: string;\n mutationEffectCitations: Citations;\n pmidData: ICache;\n}> = props => {\n return (\n <EvidenceReferenceContent\n description={props.biologicalSummary}\n citations={props.mutationEffectCitations}\n pmidData={props.pmidData}\n noInfoDisclaimer={'Mutation effect information is not available.'}\n />\n );\n};\n","import { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { Implication } from 'oncokb-ts-api-client';\nimport * as React from 'react';\n\nimport { ICache } from '../../../model/SimpleCache';\nimport OncoKbHelper from '../OncoKbHelper';\nimport ReactTable from 'react-table';\nimport { EvidenceReferenceContent } from './EvidenceReferenceContent';\nimport mainStyles from '../main.module.scss';\n\ntype ImplicationContentProps = {\n variant: string;\n summary: string;\n implications: Implication[];\n pmidData: ICache;\n};\n\nexport const ImplicationContent: React.FunctionComponent<ImplicationContentProps> = (\n props: ImplicationContentProps\n) => {\n const columns = [\n {\n ...OncoKbHelper.getDefaultColumnDefinition('level'),\n accessor: 'levelOfEvidence',\n maxWidth: 100,\n },\n {\n ...OncoKbHelper.getDefaultColumnDefinition('alterations'),\n Cell: (cellProps: { value: string[] }) => {\n return OncoKbHelper.getAlterationsColumnCell(\n cellProps.value,\n props.variant\n );\n },\n },\n {\n id: 'referenceList',\n Header: <span />,\n sortable: false,\n maxWidth: 50,\n Cell: (cellProps: { original: Implication }) => (\n <DefaultTooltip\n overlay={() => (\n <div className={mainStyles['tooltip-refs']}>\n <EvidenceReferenceContent\n description={cellProps.original.description}\n citations={{\n pmids: cellProps.original.pmids,\n abstracts: cellProps.original.abstracts,\n }}\n pmidData={props.pmidData}\n noInfoDisclaimer={\n 'Mutation effect information is not available.'\n }\n />\n </div>\n )}\n placement=\"right\"\n trigger={['hover', 'focus']}\n destroyTooltipOnHide={true}\n >\n <i className=\"fa fa-book\" />\n </DefaultTooltip>\n ),\n },\n ];\n\n return (\n <div>\n <p>{props.summary}</p>\n <div>\n <ReactTable\n data={props.implications}\n columns={columns}\n showPagination={false}\n pageSize={props.implications.length}\n className=\"-striped -highlight\"\n />\n </div>\n </div>\n );\n};\n","import React, { useState } from 'react';\nimport { Tab, Tabs } from 'react-bootstrap';\nimport classnames from 'classnames';\nimport { IndicatorQueryResp, MutationEffectResp } from 'oncokb-ts-api-client';\nimport { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { OncoKbCardDataType } from 'cbioportal-utils';\n\nimport { ICache } from '../../model/SimpleCache';\nimport {\n annotationIconClassNames,\n calcHighestIndicatorLevel,\n} from '../../util/OncoKbUtils';\nimport OncoKbCardLevelsOfEvidenceDropdown from './OncoKbCardLevelsOfEvidenceDropdown';\nimport OncoKBSuggestAnnotationLinkout from './OncoKBSuggestAnnotationLinkout';\nimport OncoKbHelper from './OncoKbHelper';\nimport OncoKbTreatmentTable from './OncoKbTreatmentTable';\nimport { BiologicalContent } from './oncokbCard/BiologicalContent';\nimport { ImplicationContent } from './oncokbCard/ImplicationContent';\n\nimport tabsStyles from './tabs.module.scss';\nimport mainStyles from './main.module.scss';\n\nconst OncoKbMedicalDisclaimer = (\n <p className={mainStyles.disclaimer}>\n The information above is intended for research purposes only and should\n not be used as a substitute for professional diagnosis and treatment.\n </p>\n);\n\nconst ONCOKB_DATA_ACCESS_PAGE_LINK =\n 'https://docs.cbioportal.org/2.4-integration-with-other-webservices/oncokb-data-access';\n\nconst publicInstanceDisclaimerOverLay = (\n <div>\n <p>\n This cBioPortal instance is not linked to an OncoKB license, and\n therefore some OncoKB content is not available including\n therapeutic, diagnostic and prognostic implications. To obtain a\n license, please follow{' '}\n <a href={ONCOKB_DATA_ACCESS_PAGE_LINK} target={'_blank'}>\n these instructions\n </a>\n .\n </p>\n {OncoKbMedicalDisclaimer}\n </div>\n);\n\nconst DATA_TYPE_TO_TITLE = {\n [OncoKbCardDataType.BIOLOGICAL]: 'Biological Effect',\n [OncoKbCardDataType.TXS]: 'Therapeutic Implications',\n [OncoKbCardDataType.TXR]: 'Therapeutic Implications',\n [OncoKbCardDataType.DX]: 'Diagnostic Implications',\n [OncoKbCardDataType.PX]: 'Prognostic Implications',\n};\n\nexport type OncoKbCardBodyProps = {\n type: OncoKbCardDataType;\n geneNotExist: boolean;\n isCancerGene: boolean;\n hugoSymbol: string;\n pmidData: ICache;\n indicator?: IndicatorQueryResp;\n usingPublicOncoKbInstance: boolean;\n displayHighestLevelInTabTitle?: boolean;\n};\n\nconst TabContentWrapper: React.FunctionComponent<{}> = props => {\n return <div className={mainStyles['tab-content']}>{props.children}</div>;\n};\n\nconst TabTitle: React.FunctionComponent<{\n type: OncoKbCardDataType;\n indicator?: IndicatorQueryResp;\n displayHighestLevelInTabTitle?: boolean;\n}> = props => {\n const title = DATA_TYPE_TO_TITLE[props.type];\n const icon = props.displayHighestLevelInTabTitle ? (\n <i\n className={annotationIconClassNames(\n props.type,\n calcHighestIndicatorLevel(props.type, props.indicator),\n props.indicator\n )}\n />\n ) : null;\n\n return icon ? (\n <span style={{ display: 'flex' }}>\n {icon} {title}\n </span>\n ) : (\n <span>{title}</span>\n );\n};\n\nexport const OncoKbCardBody: React.FunctionComponent<OncoKbCardBodyProps> = props => {\n let defaultTabActiveKey: OncoKbCardDataType | undefined;\n // Do not assign a default key if the data type specified through the property does not have any content\n // When the content is not available, we do not render the tab.\n if (dataTypeHasContent(props.type)) {\n defaultTabActiveKey = props.type;\n // Both TXS and TXR are therapeutic implication data type which will be shown in the same tab. We use TXS as the tab key when rendering\n if (\n [OncoKbCardDataType.TXS, OncoKbCardDataType.TXR].includes(\n defaultTabActiveKey\n )\n ) {\n defaultTabActiveKey = OncoKbCardDataType.TXS;\n }\n }\n\n const [activateTabKey, setActivateTabKey] = useState(defaultTabActiveKey);\n const [levelsOfEvidence, setLevelsOfEvidence] = useState(\n getLevelsOfEvidence(activateTabKey)\n );\n\n function updateActivateTabKey(newKey: any) {\n setActivateTabKey(newKey);\n setLevelsOfEvidence(getLevelsOfEvidence(newKey));\n }\n\n function hasMutationEffectInfo(mutationEffect?: MutationEffectResp) {\n return (\n mutationEffect &&\n (mutationEffect.description ||\n mutationEffect.citations.abstracts.length > 0 ||\n mutationEffect.citations.pmids.length > 0)\n );\n }\n\n function dataTypeHasContent(type: OncoKbCardDataType) {\n switch (type) {\n case OncoKbCardDataType.BIOLOGICAL:\n return hasMutationEffectInfo(props.indicator?.mutationEffect);\n case OncoKbCardDataType.TXS:\n case OncoKbCardDataType.TXR:\n return (\n !!props.indicator?.highestSensitiveLevel ||\n !!props.indicator?.highestResistanceLevel\n );\n case OncoKbCardDataType.DX:\n return !!props.indicator?.highestDiagnosticImplicationLevel;\n case OncoKbCardDataType.PX:\n return !!props.indicator?.highestPrognosticImplicationLevel;\n default:\n return false;\n }\n }\n\n function getBody(type: OncoKbCardDataType, indicator: IndicatorQueryResp) {\n const tabs = [];\n if (dataTypeHasContent(OncoKbCardDataType.BIOLOGICAL)) {\n tabs.push(\n <Tab\n eventKey={OncoKbCardDataType.BIOLOGICAL}\n title={\n <TabTitle\n type={OncoKbCardDataType.BIOLOGICAL}\n indicator={props.indicator}\n displayHighestLevelInTabTitle={\n props.displayHighestLevelInTabTitle\n }\n />\n }\n >\n <TabContentWrapper>\n <BiologicalContent\n mutationEffectCitations={\n indicator.mutationEffect.citations\n }\n biologicalSummary={\n indicator.mutationEffect.description\n }\n pmidData={props.pmidData}\n />\n </TabContentWrapper>\n </Tab>\n );\n }\n if (\n !props.usingPublicOncoKbInstance &&\n dataTypeHasContent(OncoKbCardDataType.TXS)\n ) {\n tabs.push(\n <Tab\n eventKey={OncoKbCardDataType.TXS}\n title={\n <TabTitle\n type={OncoKbCardDataType.TXS}\n indicator={props.indicator}\n displayHighestLevelInTabTitle={\n props.displayHighestLevelInTabTitle\n }\n />\n }\n >\n <TabContentWrapper>\n <div\n style={{\n marginTop: 10,\n }}\n >\n <OncoKbTreatmentTable\n variant={indicator.query.alteration || ''}\n pmidData={props.pmidData!}\n treatments={indicator.treatments!}\n />\n </div>\n </TabContentWrapper>\n </Tab>\n );\n }\n if (\n !props.usingPublicOncoKbInstance &&\n dataTypeHasContent(OncoKbCardDataType.DX)\n ) {\n tabs.push(\n <Tab\n eventKey={OncoKbCardDataType.DX}\n title={\n <TabTitle\n type={OncoKbCardDataType.DX}\n indicator={props.indicator}\n displayHighestLevelInTabTitle={\n props.displayHighestLevelInTabTitle\n }\n />\n }\n >\n <TabContentWrapper>\n <ImplicationContent\n variant={indicator.query.alteration}\n summary={indicator.diagnosticSummary}\n implications={indicator.diagnosticImplications}\n pmidData={props.pmidData}\n />\n </TabContentWrapper>\n </Tab>\n );\n }\n if (\n !props.usingPublicOncoKbInstance &&\n dataTypeHasContent(OncoKbCardDataType.PX)\n ) {\n tabs.push(\n <Tab\n eventKey={OncoKbCardDataType.PX}\n title={\n <TabTitle\n type={OncoKbCardDataType.PX}\n indicator={props.indicator}\n displayHighestLevelInTabTitle={\n props.displayHighestLevelInTabTitle\n }\n />\n }\n >\n <TabContentWrapper>\n <ImplicationContent\n variant={indicator.query.alteration}\n summary={indicator.prognosticSummary}\n implications={indicator.prognosticImplications}\n pmidData={props.pmidData}\n />\n </TabContentWrapper>\n </Tab>\n );\n }\n return (\n <div style={{ padding: '10px' }}>\n <p>{indicator.geneSummary}</p>\n <p>{indicator.variantSummary}</p>\n {props.usingPublicOncoKbInstance ? (\n <p className={mainStyles.disclaimer}>\n Therapeutic, diagnostic and prognostic implications are\n not available in this instance of cBioPortal.{' '}\n <DefaultTooltip\n overlayStyle={{\n maxWidth: 400,\n }}\n overlay={publicInstanceDisclaimerOverLay}\n >\n <i className={'fa fa-info-circle'} />\n </DefaultTooltip>\n </p>\n ) : (\n <p>{indicator.tumorTypeSummary}</p>\n )}\n {tabs.length > 0 && (\n <Tabs\n defaultActiveKey={defaultTabActiveKey}\n className={classnames('oncokb-card-tabs')}\n onSelect={updateActivateTabKey}\n >\n {tabs}\n </Tabs>\n )}\n </div>\n );\n }\n\n function getLevelsOfEvidence(activateTabKey?: OncoKbCardDataType) {\n switch (activateTabKey) {\n case OncoKbCardDataType.TXS:\n case OncoKbCardDataType.TXR:\n return {\n levels: OncoKbHelper.TX_LEVELS,\n levelDes: OncoKbHelper.getLevelsDesc(activateTabKey),\n };\n case OncoKbCardDataType.DX:\n return {\n levels: OncoKbHelper.DX_LEVELS,\n levelDes: OncoKbHelper.getLevelsDesc(OncoKbCardDataType.DX),\n };\n case OncoKbCardDataType.PX:\n return {\n levels: OncoKbHelper.PX_LEVELS,\n levelDes: OncoKbHelper.getLevelsDesc(OncoKbCardDataType.PX),\n };\n default:\n return {\n levels: [],\n levelDes: {},\n };\n }\n }\n\n const UNKNOWN = 'Unknown';\n\n function getOncogenicity() {\n let oncogenicity = props.indicator?.oncogenic;\n if (!oncogenicity || oncogenicity === UNKNOWN) {\n oncogenicity = 'Unknown Oncogenic Effect';\n }\n return oncogenicity;\n }\n\n function getMutationEffect() {\n let mutationEffect = props.indicator?.mutationEffect.knownEffect;\n if (!mutationEffect || mutationEffect === UNKNOWN) {\n mutationEffect = 'Unknown Biological Effect';\n }\n return mutationEffect;\n }\n\n return (\n <>\n {!props.geneNotExist && (\n <div>\n {props.indicator && (\n <>\n <div className={mainStyles['biological-info']}>\n <div style={{ flexGrow: 1 }}>\n {getOncogenicity()}\n </div>\n <div style={{ flexGrow: 1 }}>\n {getMutationEffect()}\n </div>\n </div>\n <div\n className={mainStyles['oncokb-card']}\n data-test=\"oncokb-card\"\n >\n {getBody(props.type, props.indicator)}\n </div>\n </>\n )}\n {!props.usingPublicOncoKbInstance && (\n <>\n {/*Use tab pane style for the disclaimer to keep the consistency since the info is attached right under the tab pane*/}\n <div className={tabsStyles['tab-pane']}>\n {OncoKbMedicalDisclaimer}\n </div>\n {levelsOfEvidence &&\n levelsOfEvidence.levels.length > 0 && (\n <OncoKbCardLevelsOfEvidenceDropdown\n levels={levelsOfEvidence.levels}\n levelDes={levelsOfEvidence.levelDes}\n />\n )}\n </>\n )}\n </div>\n )}\n {!props.isCancerGene && (\n <div\n className={mainStyles['additional-info']}\n data-test={'oncokb-card-additional-info'}\n >\n There is currently no information about this gene in OncoKB.\n </div>\n )}\n {props.geneNotExist && props.isCancerGene && (\n <div className={mainStyles['additional-info']}>\n <OncoKBSuggestAnnotationLinkout gene={props.hugoSymbol!} />\n </div>\n )}\n </>\n );\n};\n","import { IndicatorQueryResp } from 'oncokb-ts-api-client';\nimport { computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ICache } from '../../model/SimpleCache';\n\nimport oncoKbLogoImgSrc from '../../images/oncokb.svg';\nimport mainStyles from './main.module.scss';\nimport { OncoKbCardTitle } from './OncoKbCardTitle';\nimport { OncoKbCardBody } from './OncoKbCardBody';\nimport { OncoKbCardDataType } from 'cbioportal-utils';\n\nexport type OncoKbCardProps = {\n type: OncoKbCardDataType;\n hugoSymbol: string;\n geneNotExist: boolean;\n isCancerGene: boolean;\n usingPublicOncoKbInstance: boolean;\n pmidData: ICache;\n indicator?: IndicatorQueryResp;\n displayHighestLevelInTabTitle?: boolean;\n handleFeedbackOpen?: React.EventHandler<any>;\n};\n\n@observer\nexport default class OncoKbCard extends React.Component<OncoKbCardProps> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n @computed\n get oncokbLinkOut() {\n let link: string | undefined = undefined;\n if (this.props.hugoSymbol) {\n link = `https://www.oncokb.org/gene/${this.props.hugoSymbol}`;\n if (\n !this.props.geneNotExist &&\n this.props.indicator &&\n this.props.indicator.variantExist\n ) {\n link = `${link}/${this.props.indicator.query.alteration}`;\n }\n }\n return link;\n }\n\n public render() {\n const oncokbLogo = (\n <img\n src={oncoKbLogoImgSrc}\n className={mainStyles['oncokb-logo']}\n alt=\"OncoKB\"\n />\n );\n return (\n <div className={mainStyles['oncokb-card']} data-test=\"oncokb-card\">\n <div>\n {!this.props.geneNotExist && this.props.indicator && (\n <OncoKbCardTitle\n hugoSymbol={this.props.indicator.query.hugoSymbol}\n variant={this.props.indicator.query.alteration}\n tumorType={\n this.props.indicator\n ? this.props.indicator.query.tumorType\n : ''\n }\n />\n )}\n <OncoKbCardBody\n type={this.props.type}\n indicator={this.props.indicator}\n geneNotExist={this.props.geneNotExist}\n isCancerGene={this.props.isCancerGene}\n hugoSymbol={this.props.hugoSymbol}\n pmidData={this.props.pmidData}\n usingPublicOncoKbInstance={\n this.props.usingPublicOncoKbInstance\n }\n displayHighestLevelInTabTitle={\n this.props.displayHighestLevelInTabTitle\n }\n />\n <div className={mainStyles.footer}>\n {this.oncokbLinkOut === undefined ? (\n { oncokbLogo }\n ) : (\n <a\n href={`${this.oncokbLinkOut}`}\n target=\"_blank\"\n className={mainStyles['oncokb-logo']}\n >\n {oncokbLogo}\n </a>\n )}\n {this.props.handleFeedbackOpen && (\n <span>\n <button\n className=\"btn btn-default btn-xs\"\n onClick={this.props.handleFeedbackOpen}\n >\n Feedback\n </button>\n </span>\n )}\n </div>\n </div>\n </div>\n );\n }\n}\n","import { ICache } from 'cbioportal-frontend-commons';\nimport { MobxCache, OncoKbCardDataType } from 'cbioportal-utils';\nimport { IndicatorQueryResp } from 'oncokb-ts-api-client';\nimport * as React from 'react';\nimport _ from 'lodash';\nimport { observer } from 'mobx-react';\n\nimport OncoKbCard from './OncoKbCard';\n\nexport interface IOncoKbTooltipProps {\n type: OncoKbCardDataType;\n indicator?: IndicatorQueryResp;\n pubMedCache?: MobxCache;\n handleFeedbackOpen?: () => void;\n hugoSymbol: string;\n isCancerGene: boolean;\n geneNotExist: boolean;\n usingPublicOncoKbInstance: boolean;\n}\n\n/**\n * @author Selcuk Onur Sumer\n */\n@observer\nexport default class OncoKbTooltip extends React.Component<\n IOncoKbTooltipProps,\n {}\n> {\n public get pmidData(): ICache<any> {\n if (this.props.pubMedCache) {\n let allPmids: string[] = [];\n\n if (this.props.indicator) {\n if (this.props.indicator.mutationEffect) {\n allPmids = allPmids.concat(\n this.props.indicator.mutationEffect.citations.pmids\n );\n }\n this.props.indicator.treatments.forEach(treatment => {\n allPmids = allPmids.concat(treatment.pmids);\n });\n this.props.indicator.diagnosticImplications.forEach(\n implication => {\n allPmids = allPmids.concat(implication.pmids);\n }\n );\n this.props.indicator.prognosticImplications.forEach(\n implication => {\n allPmids = allPmids.concat(implication.pmids);\n }\n );\n }\n for (const ref of _.uniq(allPmids).map(pmid => Number(pmid))) {\n this.props.pubMedCache.get(ref);\n }\n }\n\n return (this.props.pubMedCache && this.props.pubMedCache.cache) || {};\n }\n\n public render() {\n let tooltipContent: JSX.Element = <span />;\n\n if (this.props.geneNotExist) {\n tooltipContent = (\n <OncoKbCard\n type={this.props.type}\n usingPublicOncoKbInstance={\n this.props.usingPublicOncoKbInstance\n }\n hugoSymbol={this.props.hugoSymbol}\n geneNotExist={this.props.geneNotExist}\n isCancerGene={this.props.isCancerGene}\n pmidData={{}}\n handleFeedbackOpen={this.props.handleFeedbackOpen}\n displayHighestLevelInTabTitle={true}\n />\n );\n }\n\n if (!this.props.indicator) {\n return tooltipContent;\n }\n\n if (!this.props.geneNotExist) {\n const pmidData: ICache<any> = this.pmidData;\n tooltipContent = (\n <OncoKbCard\n type={this.props.type}\n usingPublicOncoKbInstance={\n this.props.usingPublicOncoKbInstance\n }\n geneNotExist={this.props.geneNotExist}\n isCancerGene={this.props.isCancerGene}\n hugoSymbol={this.props.hugoSymbol}\n indicator={this.props.indicator}\n pmidData={pmidData}\n handleFeedbackOpen={this.props.handleFeedbackOpen}\n displayHighestLevelInTabTitle={true}\n />\n );\n }\n\n return tooltipContent;\n }\n}\n","import * as React from 'react';\nimport { Modal } from 'react-bootstrap';\n\ninterface IOncoKbFeedbackProps {\n showFeedback: boolean;\n hugoSymbol?: string;\n alteration?: string;\n userEmailAddress?: string;\n handleFeedbackClose: () => void;\n}\n\nexport default class OncoKbFeedback extends React.Component<\n IOncoKbFeedbackProps,\n {}\n> {\n public render() {\n const url =\n 'https://docs.google.com/forms/d/1lt6TtecxHrhIE06gAKVF_JW4zKFoowNFzxn6PJv4g7A/viewform';\n const geneParam = `entry.1744186665=${this.props.hugoSymbol || ''}`;\n const alterationParam = `entry.1671960263=${this.props.alteration ||\n ''}`;\n const userParam = `entry.1381123986=${this.props.userEmailAddress ||\n ''}`;\n const uriParam = `entry.1083850662=${encodeURIComponent(\n window.location.href\n )}`;\n\n return (\n <Modal\n show={this.props.showFeedback}\n onHide={this.props.handleFeedbackClose}\n >\n <Modal.Header closeButton>\n <Modal.Title>OncoKB Annotation Feedback</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <iframe\n src={`${url}?${geneParam}&${alterationParam}&entry.118699694&entry.1568641202&${userParam}&${uriParam}&embedded=true`}\n style={{\n width: 550,\n height: 500,\n border: 'none',\n marginLeft: '10px',\n }}\n marginHeight={0}\n marginWidth={0}\n >\n <i className=\"fa fa-spinner fa-pulse fa-2x\" />\n </iframe>\n </Modal.Body>\n </Modal>\n );\n }\n}\n","import autobind from 'autobind-decorator';\nimport { MobxCache, OncoKbCardDataType } from 'cbioportal-utils';\nimport { IndicatorQueryResp } from 'oncokb-ts-api-client';\nimport * as React from 'react';\nimport { makeObservable, observable } from 'mobx';\nimport { observer } from 'mobx-react';\n\nimport {\n calcDiagnosticLevelScore,\n calcOncogenicScore,\n calcPrognosticLevelScore,\n calcResistanceLevelScore,\n calcSensitivityLevelScore,\n} from '../../util/OncoKbUtils';\nimport { errorIcon, loaderIcon } from '../StatusHelpers';\nimport { AnnotationIcon, AnnotationIconWithTooltip } from './AnnotationIcon';\nimport { CompactAnnotationIcon } from './CompactAnnotationIcon';\nimport OncoKbTooltip from './OncoKbTooltip';\nimport OncoKbFeedback from './OncoKbFeedback';\n\nimport './oncokb.scss';\nimport 'oncokb-styles/dist/oncokb.css';\n\nexport interface IOncoKbProps {\n status: 'pending' | 'error' | 'complete';\n indicator?: IndicatorQueryResp;\n availableDataTypes?: OncoKbCardDataType[];\n mergeAnnotationIcons?: boolean;\n pubMedCache?: MobxCache;\n usingPublicOncoKbInstance: boolean;\n isCancerGene: boolean;\n geneNotExist: boolean;\n hugoGeneSymbol: string;\n userEmailAddress?: string;\n disableFeedback?: boolean;\n}\n\nexport function sortValue(\n indicator?: IndicatorQueryResp | undefined | null\n): number[] {\n const values: number[] = [0, 0, 0];\n\n if (indicator) {\n values[0] = calcOncogenicScore(indicator.oncogenic);\n values[1] = calcSensitivityLevelScore(indicator.highestSensitiveLevel);\n values[2] = calcResistanceLevelScore(indicator.highestResistanceLevel);\n values[3] = calcDiagnosticLevelScore(\n indicator.highestDiagnosticImplicationLevel\n );\n values[4] = calcPrognosticLevelScore(\n indicator.highestPrognosticImplicationLevel\n );\n }\n\n return values;\n}\n\nexport function download(\n indicator?: IndicatorQueryResp | undefined | null\n): string {\n if (!indicator) {\n return 'NA';\n }\n\n const oncogenic = indicator.oncogenic ? indicator.oncogenic : 'Unknown';\n const sensitivityLevel =\n indicator.highestSensitiveLevel?.toLowerCase() || 'level NA';\n const resistanceLevel =\n indicator.highestResistanceLevel?.toLowerCase() || 'resistance NA';\n\n return `${oncogenic}, ${sensitivityLevel}, ${resistanceLevel}`;\n}\n\nfunction findDefaultDataTypeForTooltip(\n usingPublicOncoKbInstance: boolean,\n indicator?: IndicatorQueryResp,\n availableDataTypes?: OncoKbCardDataType[]\n) {\n if (usingPublicOncoKbInstance || !indicator) {\n return OncoKbCardDataType.BIOLOGICAL;\n }\n\n // priority is in this order: Tx > Dx > Px > Biological\n if (\n indicator.highestSensitiveLevel &&\n availableDataTypes &&\n availableDataTypes.includes(OncoKbCardDataType.TXS)\n ) {\n return OncoKbCardDataType.TXS;\n } else if (\n indicator.highestResistanceLevel &&\n availableDataTypes &&\n availableDataTypes.includes(OncoKbCardDataType.TXR)\n ) {\n return OncoKbCardDataType.TXR;\n } else if (\n indicator.highestDiagnosticImplicationLevel &&\n availableDataTypes &&\n availableDataTypes.includes(OncoKbCardDataType.DX)\n ) {\n return OncoKbCardDataType.DX;\n } else if (\n indicator.highestPrognosticImplicationLevel &&\n availableDataTypes &&\n availableDataTypes.includes(OncoKbCardDataType.PX)\n ) {\n return OncoKbCardDataType.PX;\n }\n\n return OncoKbCardDataType.BIOLOGICAL;\n}\n\n@observer\nexport default class OncoKB extends React.Component<IOncoKbProps, {}> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n @observable showFeedback: boolean = false;\n @observable tooltipDataLoadComplete: boolean = false;\n\n public render() {\n let oncoKbContent: JSX.Element;\n\n if (this.props.status === 'error') {\n oncoKbContent = errorIcon('Error fetching OncoKB data');\n } else if (this.props.status === 'pending') {\n oncoKbContent = loaderIcon('pull-left');\n } else {\n oncoKbContent = this.props.mergeAnnotationIcons\n ? this.singleAnnotationIcon()\n : this.multiAnnotationIcon();\n\n if (!this.props.disableFeedback && this.showFeedback) {\n oncoKbContent = (\n <span>\n {oncoKbContent}\n <OncoKbFeedback\n userEmailAddress={this.props.userEmailAddress}\n hugoSymbol={this.props.hugoGeneSymbol}\n alteration={\n this.props.indicator\n ? this.props.indicator.query.alteration\n : undefined\n }\n showFeedback={this.showFeedback}\n handleFeedbackClose={this.handleFeedbackClose}\n />\n </span>\n );\n }\n }\n\n return oncoKbContent;\n }\n\n private multiAnnotationIcon() {\n return (\n <span className=\"oncokb-content\" style={{ display: 'inline-flex' }}>\n <AnnotationIcon\n type={OncoKbCardDataType.BIOLOGICAL}\n tooltipOverlay={this.tooltipContent(\n OncoKbCardDataType.BIOLOGICAL\n )}\n indicator={this.props.indicator}\n availableDataTypes={this.props.availableDataTypes}\n />\n {this.levelIcons()}\n </span>\n );\n }\n\n private levelIcons() {\n if (this.props.usingPublicOncoKbInstance) {\n return null;\n }\n\n if (this.props.indicator) {\n return (\n <>\n {[\n OncoKbCardDataType.TXS,\n OncoKbCardDataType.TXR,\n OncoKbCardDataType.DX,\n OncoKbCardDataType.PX,\n ].map(dataType => (\n <AnnotationIcon\n type={dataType}\n tooltipOverlay={this.tooltipContent(dataType)}\n indicator={this.props.indicator}\n availableDataTypes={this.props.availableDataTypes}\n />\n ))}\n </>\n );\n } else {\n // TODO This doesn't always work, in some cases it adds unnecessary empty icons, we need a better solution.\n // we still need to draw empty icons even if there is no indicator data.\n // this is to keep the icon alignment consistent with the rest of the column\n // return (\n // <>\n // {this.props.availableDataTypes?.map(() => (\n // <AnnotationIconWithTooltip icon={<i />} />\n // ))}\n // </>\n // );\n\n return null;\n }\n }\n\n private singleAnnotationIcon() {\n return (\n <span className=\"oncokb-content\" style={{ display: 'inline-flex' }}>\n <AnnotationIconWithTooltip\n tooltipOverlay={this.tooltipContent(\n findDefaultDataTypeForTooltip(\n this.props.usingPublicOncoKbInstance,\n this.props.indicator,\n this.props.availableDataTypes\n )\n )}\n icon={\n <CompactAnnotationIcon\n indicator={this.props.indicator}\n availableDataTypes={this.props.availableDataTypes}\n usingPublicOncoKbInstance={\n this.props.usingPublicOncoKbInstance\n }\n />\n }\n />\n </span>\n );\n }\n\n @autobind\n private tooltipContent(type: OncoKbCardDataType): JSX.Element {\n return (\n <OncoKbTooltip\n type={type}\n usingPublicOncoKbInstance={this.props.usingPublicOncoKbInstance}\n hugoSymbol={this.props.hugoGeneSymbol}\n geneNotExist={this.props.geneNotExist}\n isCancerGene={this.props.isCancerGene}\n indicator={this.props.indicator || undefined}\n pubMedCache={this.props.pubMedCache}\n handleFeedbackOpen={\n this.props.disableFeedback\n ? undefined\n : this.handleFeedbackOpen\n }\n />\n );\n }\n\n @autobind\n private handleFeedbackOpen(): void {\n this.showFeedback = true;\n }\n\n @autobind\n private handleFeedbackClose(): void {\n this.showFeedback = false;\n }\n}\n","import * as React from 'react';\n\nimport hotspotStyles from './hotspotInfo.module.scss';\nimport { getNCBIlink } from 'cbioportal-frontend-commons';\n\nexport type HotspotInfoProps = {\n isHotspot: boolean;\n is3dHotspot: boolean;\n count?: number;\n customInfo?: JSX.Element;\n};\n\nexport function title(\n isHotspot: boolean,\n is3dHotspot: boolean,\n count?: number,\n customInfo?: JSX.Element\n) {\n const recurrentHotspot = isHotspot ? <b>Recurrent Hotspot</b> : null;\n const maybeAnd = isHotspot && is3dHotspot ? <span>and</span> : null;\n const clusteredHotspot = is3dHotspot ? <b>3D Clustered Hotspot</b> : null;\n\n let countInfo: JSX.Element | null = null;\n\n if (count) {\n const sample = count > 1 ? 'samples' : 'sample';\n countInfo = (\n <span>\n <b>{count}</b> {sample} with\n </span>\n );\n }\n\n return (\n <span>\n {countInfo} {recurrentHotspot} {maybeAnd} {clusteredHotspot}{' '}\n {customInfo}\n </span>\n );\n}\n\nexport function publication(isHotspot: boolean, is3dHotspot: boolean) {\n const recurrentHotspot = isHotspot\n ? 'a recurrent hotspot (statistically significant)'\n : '';\n const maybeAnd = isHotspot && is3dHotspot ? 'and' : '';\n const clusteredHotspot = is3dHotspot ? 'a 3D clustered hotspot' : '';\n\n const recurrentPublication = isHotspot ? (\n <a href={getNCBIlink(`/pubmed/26619011`)} target=\"_blank\">\n Chang et al., Nat Biotechnol, 2016\n </a>\n ) : (\n ''\n );\n\n const clusteredPublication = is3dHotspot ? (\n <a\n href=\"http://genomemedicine.biomedcentral.com/articles/10.1186/s13073-016-0393-x\"\n target=\"_blank\"\n >\n Gao et al., Genome Medicine, 2017\n </a>\n ) : (\n ''\n );\n\n return (\n <span>\n This mutated amino acid was identified as {recurrentHotspot}{' '}\n {maybeAnd} {clusteredHotspot} in a population-scale cohort of tumor\n samples of various cancer types using methodology based in part on{' '}\n {recurrentPublication} {maybeAnd} {clusteredPublication}.\n </span>\n );\n}\n\nexport function link(isHotspot: boolean, is3dHotspot: boolean) {\n const recurrentLink = isHotspot ? (\n <a href=\"https://www.cancerhotspots.org/\" target=\"_blank\">\n https://cancerhotspots.org/\n </a>\n ) : (\n ''\n );\n\n const maybeAnd = isHotspot && is3dHotspot ? 'and' : '';\n\n const clusteredLink = is3dHotspot ? (\n <a href=\"https://www.3dhotspots.org/\" target=\"_blank\">\n https://3dhotspots.org/\n </a>\n ) : (\n ''\n );\n\n return (\n <span>\n Explore all mutations at {recurrentLink} {maybeAnd} {clusteredLink}.\n </span>\n );\n}\n\nexport const HotspotInfo: React.FunctionComponent<HotspotInfoProps> = props => {\n const { isHotspot, is3dHotspot, count, customInfo } = props;\n\n return (\n <span className={hotspotStyles['hotspot-info']}>\n {title(isHotspot, is3dHotspot, count, customInfo)}\n <br />\n {publication(isHotspot, is3dHotspot)}\n <br />\n <br />\n {link(isHotspot, is3dHotspot)}\n </span>\n );\n};\n","import * as React from 'react';\n\nimport { loaderIcon } from '../StatusHelpers';\nimport { HotspotInfo } from '../hotspot/HotspotInfo';\nimport { DefaultTooltip } from 'cbioportal-frontend-commons';\n\nimport hotspotImg from '../../images/cancer-hotspots.svg';\nimport hotspot3dImg from '../../images/3d-hotspots.svg';\nimport annotationStyles from './annotation.module.scss';\n\nexport interface ICancerHotspotsProps {\n status: 'pending' | 'error' | 'complete';\n isHotspot: boolean;\n is3dHotspot: boolean;\n}\n\nexport function sortValue(isHotspot: boolean, is3dHotspot: boolean): number {\n let score: number = 0;\n\n if (isHotspot) {\n score += 1;\n }\n\n if (is3dHotspot) {\n score += 0.5;\n }\n\n return score;\n}\n\nexport function placeArrow(tooltipEl: any) {\n const arrowEl = tooltipEl.querySelector('.rc-tooltip-arrow');\n arrowEl.style.left = '10px';\n}\n\nexport default class HotspotAnnotation extends React.Component<\n ICancerHotspotsProps,\n {}\n> {\n constructor(props: ICancerHotspotsProps) {\n super(props);\n this.state = {};\n }\n\n public render() {\n const { isHotspot, is3dHotspot } = this.props;\n\n let hotspotContent = (\n <span className={`${annotationStyles['annotation-item']}`} />\n );\n\n if (this.props.status === 'pending') {\n hotspotContent = loaderIcon('pull-left');\n } else if (isHotspot || is3dHotspot) {\n const hotspotsImgWidth: number = 14;\n let hotspotsImgHeight: number = 14;\n let hotspotsImgSrc = hotspotImg;\n\n // if it is a 3D hotspot but not a recurrent hotspot, show the 3D hotspot icon\n if (!isHotspot) {\n hotspotsImgSrc = hotspot3dImg;\n hotspotsImgHeight = 18;\n }\n\n const arrowContent = <div className=\"rc-tooltip-arrow-inner\" />;\n const tooltipContent = (\n <HotspotInfo isHotspot={isHotspot} is3dHotspot={is3dHotspot} />\n );\n\n hotspotContent = (\n <DefaultTooltip\n overlay={tooltipContent}\n placement=\"topLeft\"\n trigger={['hover', 'focus']}\n arrowContent={arrowContent}\n onPopupAlign={placeArrow}\n >\n <span\n className={`${annotationStyles['annotation-item']} chang_hotspot`}\n >\n <img\n width={hotspotsImgWidth}\n height={hotspotsImgHeight}\n src={hotspotsImgSrc}\n alt=\"Recurrent Hotspot Symbol\"\n />\n </span>\n </DefaultTooltip>\n );\n }\n\n return hotspotContent;\n }\n}\n","import { cachePostMethodsOnClient } from 'cbioportal-frontend-commons';\nimport {\n indexAnnotationsByGenomicLocation,\n IOncoKbData,\n Mutation,\n uniqueGenomicLocations,\n} from 'cbioportal-utils';\nimport {\n GenomeNexusAPI,\n GenomeNexusAPIInternal,\n} from 'genome-nexus-ts-api-client';\nimport { OncoKbAPI, OncoKBInfo } from 'oncokb-ts-api-client';\nimport _ from 'lodash';\n\nexport const DEFAULT_MUTATION_ALIGNER_URL_TEMPLATE =\n 'http://mutationaligner.org/api/domains/<%= pfamDomainId %>?metadata=true';\nexport const DEFAULT_MUTATION_ALIGNER_PROXY_URL_TEMPLATE =\n 'https://www.cbioportal.org/proxy/mutationaligner.org/api/domains/<%= pfamDomainId %>?metadata=true';\nexport const DEFAULT_MY_GENE_URL_TEMPLATE =\n 'https://mygene.info/v3/gene/<%= entrezGeneId %>?fields=uniprot';\nexport const DEFAULT_UNIPROT_ID_URL_TEMPLATE =\n 'https://www.uniprot.org/uniprot/?query=accession:<%= swissProtAccession %>&format=tab&columns=entry+name';\nexport const DEFAULT_GENOME_NEXUS_URL = 'https://www.genomenexus.org/';\n\n// The legacy instance does not require an authentication but the data will not be update.\nexport const DEFAULT_ONCO_KB_URL = 'https://legacy.oncokb.org/';\nexport const ONCOKB_DEFAULT_DATA: IOncoKbData = {\n indicatorMap: {},\n};\n\n// Set the default to false since most of the instances are not public instance.\n// The only one we have right now is public.api.oncokb.org\nexport const USE_DEFAULT_PUBLIC_INSTANCE_FOR_ONCOKB = false;\n\nexport const ONCOKB_DEFAULT_INFO: OncoKBInfo = {\n apiVersion: 'v1.0.0',\n dataVersion: {\n version: 'v2.0',\n date: '12/19/2019',\n },\n levels: [],\n ncitVersion: '19.03d',\n oncoTreeVersion: 'oncotree_2019_12_01',\n publicInstance: USE_DEFAULT_PUBLIC_INSTANCE_FOR_ONCOKB,\n};\n\nconst DEFAULT_GENOME_NEXUS_CLIENT = initGenomeNexusClient();\n\nexport function getUrl(urlTemplate: string, templateVariables: any) {\n return _.template(urlTemplate)(templateVariables);\n}\n\nexport async function fetchVariantAnnotationsByMutation(\n mutations: Partial<Mutation>[],\n fields: string[] = ['annotation_summary'],\n isoformOverrideSource: string = 'uniprot',\n client: Partial<GenomeNexusAPI> = DEFAULT_GENOME_NEXUS_CLIENT\n) {\n const genomicLocations = uniqueGenomicLocations(mutations);\n\n return genomicLocations.length > 0 &&\n client.fetchVariantAnnotationByGenomicLocationPOST\n ? await client.fetchVariantAnnotationByGenomicLocationPOST({\n genomicLocations,\n fields,\n isoformOverrideSource,\n })\n : [];\n}\n\nexport async function fetchVariantAnnotationsIndexedByGenomicLocation(\n mutations: Partial<Mutation>[],\n fields: string[] = ['annotation_summary'],\n isoformOverrideSource: string = 'uniprot',\n client: Partial<GenomeNexusAPI> = DEFAULT_GENOME_NEXUS_CLIENT\n) {\n const variantAnnotations = await fetchVariantAnnotationsByMutation(\n mutations,\n fields,\n isoformOverrideSource,\n client\n );\n return indexAnnotationsByGenomicLocation(variantAnnotations);\n}\n\nexport function initGenomeNexusClient(\n genomeNexusUrl?: string,\n cachePostMethods?: boolean,\n apiCacheLimit?: number\n): GenomeNexusAPI {\n const client = new GenomeNexusAPI(\n genomeNexusUrl || DEFAULT_GENOME_NEXUS_URL\n );\n\n if (cachePostMethods) {\n cachePostMethodsOnClient(GenomeNexusAPI, [], /POST$/, apiCacheLimit);\n }\n\n return client;\n}\n\nexport function initGenomeNexusInternalClient(\n genomeNexusUrl?: string,\n cachePostMethods?: boolean,\n apiCacheLimit?: number\n): GenomeNexusAPIInternal {\n const client = new GenomeNexusAPIInternal(\n genomeNexusUrl || DEFAULT_GENOME_NEXUS_URL\n );\n\n if (cachePostMethods) {\n cachePostMethodsOnClient(\n GenomeNexusAPIInternal,\n [],\n /POST$/,\n apiCacheLimit\n );\n }\n\n return client;\n}\n\nexport function initOncoKbClient(\n oncoKbUrl?: string,\n cachePostMethods?: boolean,\n apiCacheLimit?: number\n): OncoKbAPI {\n const client = new OncoKbAPI(oncoKbUrl || DEFAULT_ONCO_KB_URL);\n\n if (cachePostMethods) {\n cachePostMethodsOnClient(OncoKbAPI, [], undefined, apiCacheLimit);\n }\n\n return client;\n}\n","import {\n calculateOncoKbAvailableDataType,\n getCivicEntry,\n getMyCancerGenomeLinks,\n getRemoteDataGroupStatus,\n ICivicEntry,\n ICivicGeneIndex,\n ICivicVariantIndex,\n IHotspotIndex,\n IMyCancerGenomeData,\n IOncoKbData,\n is3dHotspot,\n isLinearClusterHotspot,\n MobxCache,\n Mutation,\n OncoKbCardDataType,\n RemoteData,\n} from 'cbioportal-utils';\nimport { CancerGene, IndicatorQueryResp } from 'oncokb-ts-api-client';\nimport _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { getIndicatorData } from '../../util/OncoKbUtils';\nimport { defaultArraySortMethod } from 'cbioportal-utils';\nimport Civic, { sortValue as civicSortValue } from '../civic/Civic';\nimport MyCancerGenome, {\n sortValue as myCancerGenomeSortValue,\n} from '../myCancerGenome/MyCancerGenome';\nimport OncoKB, { sortValue as oncoKbSortValue } from '../oncokb/OncoKB';\nimport HotspotAnnotation, {\n sortValue as hotspotSortValue,\n} from './HotspotAnnotation';\nimport { USE_DEFAULT_PUBLIC_INSTANCE_FOR_ONCOKB } from '../../util/DataFetcherUtils';\nimport { CanonicalMutationType } from 'cbioportal-frontend-commons';\n\nexport type AnnotationProps = {\n mutation?: Mutation;\n enableOncoKb: boolean;\n enableMyCancerGenome: boolean;\n enableHotspot: boolean;\n enableCivic: boolean;\n hotspotData?: RemoteData<IHotspotIndex | undefined>;\n oncoKbData?: RemoteData<IOncoKbData | Error | undefined>;\n oncoKbCancerGenes?: RemoteData<CancerGene[] | Error | undefined>;\n usingPublicOncoKbInstance: boolean;\n mergeOncoKbIcons?: boolean;\n pubMedCache?: MobxCache;\n resolveEntrezGeneId?: (mutation: Mutation) => number;\n resolveTumorType?: (mutation: Mutation) => string;\n myCancerGenomeData?: IMyCancerGenomeData;\n civicGenes?: RemoteData<ICivicGeneIndex | undefined>;\n civicVariants?: RemoteData<ICivicVariantIndex | undefined>;\n userEmailAddress?: string;\n};\n\nexport type GenericAnnotationProps = {\n annotation: IAnnotation;\n enableCivic: boolean;\n enableHotspot: boolean;\n enableMyCancerGenome: boolean;\n enableOncoKb: boolean;\n mergeOncoKbIcons?: boolean;\n pubMedCache?: MobxCache;\n userEmailAddress?: string;\n};\n\nexport interface IAnnotation {\n isHotspot: boolean;\n is3dHotspot: boolean;\n hotspotStatus: 'pending' | 'error' | 'complete';\n oncoKbIndicator?: IndicatorQueryResp;\n oncoKbAvailableDataTypes: OncoKbCardDataType[];\n oncoKbStatus: 'pending' | 'error' | 'complete';\n oncoKbGeneExist: boolean;\n isOncoKbCancerGene: boolean;\n usingPublicOncoKbInstance: boolean;\n myCancerGenomeLinks: string[];\n civicEntry?: ICivicEntry | null;\n civicStatus: 'pending' | 'error' | 'complete';\n hasCivicVariants: boolean;\n hugoGeneSymbol: string;\n}\n\nexport const DEFAULT_ANNOTATION_DATA: IAnnotation = {\n oncoKbStatus: 'complete',\n oncoKbGeneExist: false,\n isOncoKbCancerGene: false,\n oncoKbAvailableDataTypes: [],\n usingPublicOncoKbInstance: false,\n isHotspot: false,\n is3dHotspot: false,\n hotspotStatus: 'complete',\n hugoGeneSymbol: '',\n hasCivicVariants: true,\n myCancerGenomeLinks: [],\n civicStatus: 'complete',\n};\n\nfunction getDefaultEntrezGeneId(mutation: Mutation): number {\n return (mutation.gene && mutation.gene.entrezGeneId) || 0;\n}\n\nfunction getDefaultTumorType(): string {\n return 'Unknown';\n}\n\nconst memoized: Map<string, IAnnotation> = new Map();\nexport function getAnnotationData(\n mutation?: Mutation,\n oncoKbCancerGenes?: RemoteData<CancerGene[] | Error | undefined>,\n hotspotData?: RemoteData<IHotspotIndex | undefined>,\n myCancerGenomeData?: IMyCancerGenomeData,\n oncoKbData?: RemoteData<IOncoKbData | Error | undefined>,\n usingPublicOncoKbInstance?: boolean,\n civicGenes?: RemoteData<ICivicGeneIndex | undefined>,\n civicVariants?: RemoteData<ICivicVariantIndex | undefined>,\n resolveTumorType: (mutation: Mutation) => string = getDefaultTumorType,\n resolveEntrezGeneId: (mutation: Mutation) => number = getDefaultEntrezGeneId\n): IAnnotation {\n let value: Partial<IAnnotation>;\n\n if (mutation) {\n let key = '';\n const memoize =\n !!oncoKbCancerGenes &&\n oncoKbCancerGenes?.isComplete &&\n !!hotspotData &&\n hotspotData?.isComplete &&\n !!myCancerGenomeData &&\n !!oncoKbData &&\n oncoKbData?.isComplete &&\n !!civicGenes &&\n civicGenes?.isComplete &&\n !!civicVariants &&\n civicVariants?.isComplete;\n\n if (memoize) {\n key = JSON.stringify(mutation) + !!usingPublicOncoKbInstance;\n const val = memoized.get(key);\n if (val) {\n return val;\n }\n }\n\n const entrezGeneId = resolveEntrezGeneId(mutation);\n\n let oncoKbIndicator: IndicatorQueryResp | undefined;\n const hugoGeneSymbol = mutation.gene\n ? mutation.gene.hugoGeneSymbol\n : undefined;\n\n let oncoKbGeneExist = false;\n let isOncoKbCancerGene = false;\n if (oncoKbCancerGenes && !(oncoKbCancerGenes.result instanceof Error)) {\n oncoKbGeneExist =\n _.find(\n oncoKbCancerGenes.result,\n (gene: CancerGene) =>\n (mutation.mutationType &&\n mutation.mutationType.toLowerCase() ===\n CanonicalMutationType.FUSION) ||\n (gene.oncokbAnnotated &&\n gene.entrezGeneId === entrezGeneId)\n ) !== undefined;\n isOncoKbCancerGene =\n _.find(\n oncoKbCancerGenes.result,\n (gene: CancerGene) => gene.entrezGeneId === entrezGeneId\n ) !== undefined;\n }\n\n value = {\n hugoGeneSymbol,\n oncoKbGeneExist,\n isOncoKbCancerGene,\n usingPublicOncoKbInstance: usingPublicOncoKbInstance\n ? usingPublicOncoKbInstance\n : USE_DEFAULT_PUBLIC_INSTANCE_FOR_ONCOKB,\n civicEntry:\n civicGenes &&\n civicGenes.result &&\n civicVariants &&\n civicVariants.result\n ? getCivicEntry(\n mutation,\n civicGenes.result,\n civicVariants.result\n )\n : undefined,\n civicStatus:\n civicGenes &&\n civicGenes.status &&\n civicVariants &&\n civicVariants.status\n ? getRemoteDataGroupStatus(civicGenes, civicVariants)\n : 'pending',\n hasCivicVariants: true,\n myCancerGenomeLinks: myCancerGenomeData\n ? getMyCancerGenomeLinks(mutation, myCancerGenomeData)\n : [],\n isHotspot:\n hotspotData &&\n hotspotData.result &&\n hotspotData.status === 'complete'\n ? isLinearClusterHotspot(mutation, hotspotData.result)\n : false,\n is3dHotspot:\n hotspotData &&\n hotspotData.result &&\n hotspotData.status === 'complete'\n ? is3dHotspot(mutation, hotspotData.result)\n : false,\n hotspotStatus: hotspotData ? hotspotData.status : 'pending',\n };\n\n // oncoKbData may exist but it might be an instance of Error, in that case we flag the status as error\n if (oncoKbData && oncoKbData.result instanceof Error) {\n value = {\n ...value,\n oncoKbStatus: 'error',\n oncoKbIndicator: undefined,\n };\n } else if (oncoKbGeneExist) {\n // actually, oncoKbData.result shouldn't be an instance of Error in this case (we already check it above),\n // but we need to check it again in order to avoid TS errors/warnings\n\n // Always show oncogenicity icon even when the indicatorMapResult is empty.\n // We want to show an icon for genes that haven't been annotated by OncoKB\n let oncoKbAvailableDataTypes: OncoKbCardDataType[] = [\n OncoKbCardDataType.BIOLOGICAL,\n ];\n if (\n oncoKbData &&\n oncoKbData.result &&\n !(oncoKbData.result instanceof Error) &&\n oncoKbData.status === 'complete'\n ) {\n oncoKbIndicator = getIndicatorData(\n mutation,\n oncoKbData.result,\n resolveTumorType,\n resolveEntrezGeneId\n );\n oncoKbAvailableDataTypes = _.uniq([\n ...oncoKbAvailableDataTypes,\n ...calculateOncoKbAvailableDataType(\n _.values(oncoKbData.result.indicatorMap)\n ),\n ]);\n }\n\n value = {\n ...value,\n oncoKbStatus: oncoKbData ? oncoKbData.status : 'pending',\n oncoKbIndicator,\n oncoKbAvailableDataTypes,\n };\n } else if (oncoKbData && oncoKbData.isPending) {\n value = {\n ...value,\n oncoKbStatus: 'pending',\n oncoKbIndicator: undefined,\n };\n } else {\n value = {\n ...value,\n oncoKbStatus: 'complete',\n oncoKbIndicator: undefined,\n };\n }\n if (memoize) {\n memoized.set(key, value as any);\n }\n } else {\n value = DEFAULT_ANNOTATION_DATA;\n }\n\n return value as IAnnotation;\n}\n\nexport function annotationSortMethod(a: IAnnotation, b: IAnnotation) {\n return defaultArraySortMethod(sortValue(a), sortValue(b));\n}\n\nexport function sortValue(annotation: IAnnotation): number[] {\n return _.flatten([\n oncoKbSortValue(annotation.oncoKbIndicator),\n civicSortValue(annotation.civicEntry),\n myCancerGenomeSortValue(annotation.myCancerGenomeLinks),\n hotspotSortValue(annotation.isHotspot, annotation.is3dHotspot),\n annotation.isOncoKbCancerGene ? 1 : 0,\n ]);\n}\n\nexport function GenericAnnotation(props: GenericAnnotationProps): JSX.Element {\n const {\n annotation,\n enableCivic,\n enableHotspot,\n enableMyCancerGenome,\n enableOncoKb,\n pubMedCache,\n userEmailAddress,\n mergeOncoKbIcons,\n } = props;\n\n return (\n <span style={{ display: 'flex', minWidth: 100 }}>\n {enableOncoKb && (\n <OncoKB\n usingPublicOncoKbInstance={\n annotation.usingPublicOncoKbInstance\n }\n hugoGeneSymbol={annotation.hugoGeneSymbol}\n geneNotExist={!annotation.oncoKbGeneExist}\n isCancerGene={annotation.isOncoKbCancerGene}\n status={annotation.oncoKbStatus}\n indicator={annotation.oncoKbIndicator}\n availableDataTypes={annotation.oncoKbAvailableDataTypes}\n mergeAnnotationIcons={mergeOncoKbIcons}\n pubMedCache={pubMedCache}\n userEmailAddress={userEmailAddress}\n />\n )}\n {enableCivic && (\n <Civic\n civicEntry={annotation.civicEntry}\n civicStatus={annotation.civicStatus}\n hasCivicVariants={annotation.hasCivicVariants}\n />\n )}\n {enableMyCancerGenome && (\n <MyCancerGenome linksHTML={annotation.myCancerGenomeLinks} />\n )}\n {enableHotspot && (\n <HotspotAnnotation\n isHotspot={annotation.isHotspot}\n is3dHotspot={annotation.is3dHotspot}\n status={annotation.hotspotStatus}\n />\n )}\n </span>\n );\n}\n\n@observer\nexport default class Annotation extends React.Component<AnnotationProps, {}> {\n public render() {\n const annotation = this.getAnnotationData(this.props);\n\n return <GenericAnnotation {...this.props} annotation={annotation} />;\n }\n\n private getAnnotationData(props: AnnotationProps) {\n const {\n mutation,\n oncoKbCancerGenes,\n hotspotData,\n myCancerGenomeData,\n oncoKbData,\n usingPublicOncoKbInstance,\n resolveEntrezGeneId,\n resolveTumorType,\n civicGenes,\n civicVariants,\n } = props;\n\n return getAnnotationData(\n mutation,\n oncoKbCancerGenes,\n hotspotData,\n myCancerGenomeData,\n oncoKbData,\n usingPublicOncoKbInstance,\n civicGenes,\n civicVariants,\n resolveTumorType,\n resolveEntrezGeneId\n );\n }\n}\n","import { getVariantAnnotation, Mutation, RemoteData } from 'cbioportal-utils';\nimport { Clinvar, VariantAnnotation } from 'genome-nexus-ts-api-client';\n\nexport function getClinvarData(\n mutation: Mutation,\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >\n): Clinvar | undefined {\n const variantAnnotation = getVariantAnnotation(\n mutation,\n indexedVariantAnnotations!.result\n );\n return variantAnnotation?.clinvar?.annotation;\n}\n","import { Clinvar, VariantAnnotation } from 'genome-nexus-ts-api-client';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { defaultSortMethod, Mutation, RemoteData } from 'cbioportal-utils';\nimport ClinvarSummary from '../clinvar/ClinvarSummary';\nimport { getClinvarData } from '../clinvar/ClinvarHelper';\nimport { errorIcon, loaderIcon } from '../StatusHelpers';\n\ntype ClinvarInterpretationProps = {\n mutation: Mutation;\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >;\n};\n\nexport function download(clinvar?: Clinvar): string {\n const clinicalSignificance = clinvar?.clinicalSignificance;\n const conflictingClinicalSignificance =\n clinvar?.conflictingClinicalSignificance;\n if (clinicalSignificance && conflictingClinicalSignificance) {\n return (\n clinicalSignificance + '(' + conflictingClinicalSignificance + ')'\n );\n } else if (clinicalSignificance) {\n return clinicalSignificance;\n } else {\n return '';\n }\n}\n\nexport function sortValue(clinvar?: Clinvar): string | null {\n if (clinvar && clinvar.clinicalSignificance) {\n return clinvar.clinicalSignificance;\n } else {\n return null;\n }\n}\n\nexport function clinvarSortMethod(a: Clinvar, b: Clinvar) {\n return defaultSortMethod(sortValue(a), sortValue(b));\n}\n\n@observer\nexport default class ClinvarInterpretation extends React.Component<\n ClinvarInterpretationProps,\n {}\n> {\n public render() {\n if (this.props.indexedVariantAnnotations) {\n let content;\n const status = this.props.indexedVariantAnnotations.status;\n if (status === 'pending') {\n content = loaderIcon();\n } else if (status === 'error') {\n content = errorIcon('Error fetching Genome Nexus annotation');\n } else {\n const clinvarData = getClinvarData(\n this.props.mutation,\n this.props.indexedVariantAnnotations\n );\n content = <ClinvarSummary clinvar={clinvarData} />;\n }\n return content;\n } else {\n return <div />;\n }\n }\n}\n","import { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport * as React from 'react';\n\nexport type ColumnHeaderProps = {\n headerContent: string | JSX.Element;\n overlay?: JSX.Element;\n className?: string;\n};\n\nclass ColumnHeader extends React.Component<ColumnHeaderProps> {\n public static defaultProps = {\n className: 'text-wrap',\n };\n\n public render() {\n let content = this.props.headerContent;\n\n if (this.props.overlay) {\n content = (\n <DefaultTooltip\n mouseEnterDelay={0.5}\n placement=\"top\"\n overlay={this.props.overlay}\n destroyTooltipOnHide={true}\n >\n {content}\n </DefaultTooltip>\n );\n }\n\n return (\n <span\n className={\n this.props.className || ColumnHeader.defaultProps.className\n }\n >\n {content}\n </span>\n );\n }\n}\n\nexport default ColumnHeader;\n","import { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { getDbsnpRsId } from 'cbioportal-utils';\nimport { MyVariantInfo } from 'genome-nexus-ts-api-client';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nexport type DbsnpIdProps = {\n myVariantInfo?: MyVariantInfo;\n};\n\n@observer\nexport default class DbsnpId extends React.Component<DbsnpIdProps, {}> {\n public render() {\n const rsId = getDbsnpRsId(this.props.myVariantInfo);\n\n if (rsId == null) {\n return (\n <DefaultTooltip\n placement=\"topRight\"\n overlay={<span>Variant has no dbSNP data.</span>}\n >\n <span\n style={{\n height: '100%',\n width: '100%',\n display: 'block',\n overflow: 'hidden',\n }}\n >\n &nbsp;\n </span>\n </DefaultTooltip>\n );\n } else {\n let dbsnpLink = 'https://www.ncbi.nlm.nih.gov/snp/' + rsId;\n return (\n <DefaultTooltip\n placement=\"top\"\n overlay={\n <span>Click to see variant on dbSNP website.</span>\n }\n >\n <span style={{ textAlign: 'right', float: 'right' }}>\n <a href={dbsnpLink} target=\"_blank\">\n {rsId}\n </a>\n </span>\n </DefaultTooltip>\n );\n }\n }\n}\n","import {\n getMyVariantInfoAnnotation,\n getVariantAnnotation,\n Mutation,\n RemoteData,\n} from 'cbioportal-utils';\nimport { MyVariantInfo, VariantAnnotation } from 'genome-nexus-ts-api-client';\nimport * as React from 'react';\n\nimport { errorIcon, loaderIcon } from '../StatusHelpers';\n\nexport type MyVariantInfoProps = {\n mutation?: Mutation;\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >;\n indexedMyVariantInfoAnnotations?: RemoteData<\n { [genomicLocation: string]: MyVariantInfo } | undefined\n >;\n className?: string;\n};\n\nexport function renderMyVariantInfoContent(\n props: MyVariantInfoProps,\n getContent: (\n myVariantInfo?: MyVariantInfo,\n variantAnnotation?: VariantAnnotation\n ) => JSX.Element\n) {\n let content;\n const status = props.indexedMyVariantInfoAnnotations?.status || 'complete';\n const variantAnnotation = props.indexedVariantAnnotations\n ? getVariantAnnotation(\n props.mutation,\n props.indexedVariantAnnotations.result\n )\n : undefined;\n const myVariantInfo = getMyVariantInfoAnnotation(\n props.mutation,\n props.indexedMyVariantInfoAnnotations?.result\n );\n\n if (status === 'pending') {\n content = loaderIcon();\n } else if (status === 'error') {\n content = errorIcon('Error fetching Genome Nexus annotation');\n } else {\n content = getContent(myVariantInfo, variantAnnotation);\n }\n\n return <div className={props.className}>{content}</div>;\n}\n\nexport function getMyVariantInfoData(\n mutation?: Mutation,\n indexedMyVariantInfoAnnotations?: RemoteData<\n { [genomicLocation: string]: MyVariantInfo } | undefined\n >\n) {\n return getMyVariantInfoAnnotation(\n mutation,\n indexedMyVariantInfoAnnotations\n ? indexedMyVariantInfoAnnotations.result\n : undefined\n );\n}\n","import autobind from 'autobind-decorator';\nimport { getDbsnpRsId } from 'cbioportal-utils';\nimport { MyVariantInfo } from 'genome-nexus-ts-api-client';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { defaultSortMethod } from 'cbioportal-utils';\nimport DbsnpId from '../dbsnp/DbsnpId';\nimport {\n MyVariantInfoProps,\n renderMyVariantInfoContent,\n} from './MyVariantInfoHelper';\n\nexport function download(myVariantInfo?: MyVariantInfo): string {\n const value = sortValue(myVariantInfo);\n\n return value ? value.toString() : '';\n}\n\nexport function sortValue(myVariantInfo?: MyVariantInfo): string | null {\n return getDbsnpRsId(myVariantInfo);\n}\n\nexport function dbsnpSortMethod(a: MyVariantInfo, b: MyVariantInfo) {\n return defaultSortMethod(sortValue(a), sortValue(b));\n}\n\n@observer\nexport default class Dbsnp extends React.Component<MyVariantInfoProps, {}> {\n public static defaultProps: Partial<MyVariantInfoProps> = {\n className: 'pull-right mr-1',\n };\n\n public render() {\n return renderMyVariantInfoContent(this.props, this.getContent);\n }\n\n @autobind\n public getContent(myVariantInfo: MyVariantInfo) {\n return <DbsnpId myVariantInfo={myVariantInfo} />;\n }\n}\n","import _ from 'lodash';\n\nimport {\n AlleleCount,\n AlleleFrequency,\n AlleleNumber,\n Gnomad,\n Homozygotes,\n MyVariantInfo,\n VariantAnnotation,\n} from 'genome-nexus-ts-api-client';\nimport { GnomadSummary } from '../model/GnomadSummary';\n\nconst GNOMAD_POPULATION_NAME: { [key: string]: string } = {\n African: 'afr',\n Latino: 'amr',\n Other: 'oth',\n 'European (Non-Finnish)': 'nfe',\n 'European (Finnish)': 'fin',\n 'Ashkenazi Jewish': 'asj',\n 'East Asian': 'eas',\n 'South Asian': 'sas',\n Total: '',\n};\n\nexport enum GnomadTableColumnName {\n population = 'population',\n alleleCount = 'ac',\n alleleNumber = 'an',\n homozygotes = 'hom',\n alleleFrequency = 'af',\n}\n\nexport function calculateGnomadAlleleFrequency(\n count: number | null,\n totalNumber: number | null,\n frequency: number | null\n): number {\n if (frequency !== null) {\n return frequency;\n } else {\n return count && totalNumber && totalNumber !== 0\n ? count / totalNumber\n : 0;\n }\n}\n\nexport function calculateGnomadTableNumber(\n gnomadExome?: number | null,\n gnomadGenome?: number | null\n) {\n let result = 0;\n if (gnomadGenome && gnomadExome) {\n result = gnomadGenome + gnomadExome;\n } else if (gnomadGenome) {\n result = gnomadGenome;\n } else if (gnomadExome) {\n result = gnomadExome;\n }\n return result;\n}\n\nexport function getGnomadUrl(\n annotation?: VariantAnnotation,\n myVariantInfo?: MyVariantInfo\n) {\n let gnomadUrl = '';\n\n if (\n myVariantInfo &&\n (myVariantInfo.gnomadExome || myVariantInfo.gnomadGenome)\n ) {\n // get gnomad link from chrom, location, ref and alt\n gnomadUrl =\n myVariantInfo && myVariantInfo.vcf\n ? generateGnomadUrl(\n annotation?.seq_region_name || null,\n myVariantInfo.vcf.position,\n myVariantInfo.vcf.ref,\n myVariantInfo.vcf.alt\n )\n : '';\n }\n\n return gnomadUrl;\n}\n\nexport function getGnomadDataSortedByFrequency(myVariantInfo?: MyVariantInfo) {\n const gnomadData = getGnomadData(myVariantInfo);\n return gnomadData ? sortGnomadDataByFrequency(gnomadData) : gnomadData;\n}\n\nexport function sortGnomadDataByFrequency(gnomadData: {\n [key: string]: GnomadSummary;\n}) {\n // sort by frequency\n const sorted = _.sortBy(Object.values(gnomadData).slice(0, 8), [\n 'alleleFrequency',\n ]).reverse();\n\n // add the total row at the bottom\n sorted.push(gnomadData['Total']);\n\n return sorted;\n}\n\nexport function setGnomadTableData(\n key: string,\n data: Gnomad,\n result: { [key: string]: GnomadSummary }\n) {\n // Access data by population name and column name in the format of: GnomadTableColumnName_POPULATION_NAME, e.g. \"ac_afr\"\n // If access \"total\" data, the name would be e.g. \"ac\" for alleleCount, \"an\" for alleleNumber\n const alleleCountName: keyof AlleleCount = (GNOMAD_POPULATION_NAME[key]\n ? GnomadTableColumnName.alleleCount + '_' + GNOMAD_POPULATION_NAME[key]\n : GnomadTableColumnName.alleleCount\n ).toString() as keyof AlleleCount;\n const alleleNumberName: keyof AlleleNumber = (GNOMAD_POPULATION_NAME[key]\n ? GnomadTableColumnName.alleleNumber + '_' + GNOMAD_POPULATION_NAME[key]\n : GnomadTableColumnName.alleleNumber\n ).toString() as keyof AlleleNumber;\n const homozygotesName: keyof Homozygotes = (GNOMAD_POPULATION_NAME[key]\n ? GnomadTableColumnName.homozygotes + '_' + GNOMAD_POPULATION_NAME[key]\n : GnomadTableColumnName.homozygotes\n ).toString() as keyof Homozygotes;\n const alleleFrequencyName: keyof AlleleFrequency = (GNOMAD_POPULATION_NAME[\n key\n ]\n ? GnomadTableColumnName.alleleFrequency +\n '_' +\n GNOMAD_POPULATION_NAME[key]\n : GnomadTableColumnName.alleleFrequency\n ).toString() as keyof AlleleFrequency;\n\n result[key] = {\n population: key,\n alleleCount: data.alleleCount[alleleCountName]\n ? data.alleleCount[alleleCountName]\n : 0,\n alleleNumber: data.alleleNumber[alleleNumberName]\n ? data.alleleNumber[alleleNumberName]\n : 0,\n homozygotes: data.homozygotes[homozygotesName]\n ? data.homozygotes[homozygotesName]\n : 0,\n alleleFrequency: calculateGnomadAlleleFrequency(\n data.alleleCount[alleleCountName],\n data.alleleNumber[alleleNumberName],\n data.alleleFrequency[alleleFrequencyName]\n ),\n } as GnomadSummary;\n}\n\nexport function getGnomadData(myVariantInfo?: MyVariantInfo) {\n let gnomadData: { [key: string]: GnomadSummary } | undefined;\n\n // check if gnomad data is valid\n if (\n myVariantInfo &&\n (myVariantInfo.gnomadExome || myVariantInfo.gnomadGenome)\n ) {\n const gnomadExome: { [key: string]: GnomadSummary } = {};\n const gnomadGenome: { [key: string]: GnomadSummary } = {};\n const combinedGnomad: { [key: string]: GnomadSummary } = {};\n // If gnomadExome data exists, set gnomadExome\n if (myVariantInfo.gnomadExome) {\n Object.keys(GNOMAD_POPULATION_NAME).forEach(key =>\n setGnomadTableData(key, myVariantInfo.gnomadExome, gnomadExome)\n );\n gnomadData = gnomadExome;\n }\n\n // If gnomadGenome data exists, set gnomadGenome\n if (myVariantInfo.gnomadGenome) {\n Object.keys(GNOMAD_POPULATION_NAME).forEach(key =>\n setGnomadTableData(\n key,\n myVariantInfo.gnomadGenome,\n gnomadGenome\n )\n );\n gnomadData = gnomadGenome;\n }\n\n // If both gnomadExome and gnomadGenome exist, combine gnomadExome and gnomadGenome together, set to combinedGnomad\n if (myVariantInfo.gnomadExome && myVariantInfo.gnomadGenome) {\n Object.keys(GNOMAD_POPULATION_NAME).forEach(key => {\n combinedGnomad[key] = {\n population: key,\n alleleCount: calculateGnomadTableNumber(\n gnomadExome[key]?.alleleCount,\n gnomadGenome[key]?.alleleCount\n ),\n alleleNumber: calculateGnomadTableNumber(\n gnomadExome[key]?.alleleNumber,\n gnomadGenome[key]?.alleleNumber\n ),\n homozygotes: calculateGnomadTableNumber(\n gnomadExome[key]?.homozygotes,\n gnomadGenome[key]?.homozygotes\n ),\n alleleFrequency: calculateGnomadAlleleFrequency(\n calculateGnomadTableNumber(\n gnomadExome[key]?.alleleCount,\n gnomadGenome[key]?.alleleCount\n ),\n calculateGnomadTableNumber(\n gnomadExome[key]?.alleleNumber,\n gnomadGenome[key]?.alleleNumber\n ),\n null\n ),\n } as GnomadSummary;\n });\n gnomadData = combinedGnomad;\n }\n }\n // If only one type of gnomad(Exome or Genome) exists, show result from this type. If both types exist, show combined result.\n return gnomadData;\n}\n\nexport function generateGnomadUrl(\n chromosome: string | null,\n position: string | null,\n reference: string | null,\n variant: string | null\n) {\n if (chromosome && position && reference && variant) {\n return `https://gnomad.broadinstitute.org/variant/${chromosome}-${position}-${reference}-${variant}`;\n } else {\n return 'https://gnomad.broadinstitute.org/';\n }\n}\n","import autobind from 'autobind-decorator';\nimport * as React from 'react';\nimport ReactTable, { RowInfo } from 'react-table';\n\nimport { GnomadSummary } from '../../model/GnomadSummary';\nimport { GnomadTableColumnName } from '../../util/GnomadUtils';\nimport ColumnHeader from '../column/ColumnHeader';\n\nimport './gnomadFrequencyTable.scss';\n\nexport interface IGnomadFrequencyTableProps {\n data: GnomadSummary[];\n gnomadUrl: string;\n hideDisclaimer?: boolean;\n}\n\nexport function frequencyOutput(frequency: number) {\n if (frequency === 0) {\n return <span>0</span>;\n } else {\n // show frequency as number with 4 significant digits\n return (\n <span>\n {frequency.toLocaleString(undefined, {\n maximumSignificantDigits: 2,\n minimumSignificantDigits: 2,\n })}\n </span>\n );\n }\n}\n\nconst headerClassName = 'text-wrap font-weight-bold';\n\nconst HEADERS = {\n [GnomadTableColumnName.population]: (\n <ColumnHeader\n className={headerClassName}\n headerContent={<span>Population</span>}\n />\n ),\n [GnomadTableColumnName.alleleCount]: (\n <ColumnHeader\n className={headerClassName}\n headerContent={<span>Allele Count</span>}\n overlay={<span>Number of individuals with this allele</span>}\n />\n ),\n [GnomadTableColumnName.alleleNumber]: (\n <ColumnHeader\n className={headerClassName}\n headerContent={<span>Allele Number</span>}\n overlay={\n <span>\n Number of times any allele has been observed at this\n position in the population\n </span>\n }\n />\n ),\n [GnomadTableColumnName.homozygotes]: (\n <ColumnHeader\n className={headerClassName}\n headerContent={<span>Number of Homozygotes</span>}\n overlay={\n <span>\n Number of individuals carrying this allele in both copies\n </span>\n }\n />\n ),\n [GnomadTableColumnName.alleleFrequency]: (\n <ColumnHeader\n className={headerClassName}\n headerContent={<span>Allele Frequency</span>}\n overlay={<span>Proportion of the population with this allele</span>}\n />\n ),\n};\n\nfunction renderNumericalValue(column: any) {\n return <span className=\"pull-right mr-1\">{column.value}</span>;\n}\n\nconst Disclaimer: React.FunctionComponent<{ gnomadUrl: string }> = props => {\n const myVariantInfoLink = (\n <a href=\"https://myvariant.info/\" target=\"_blank\">\n myvariant.info\n </a>\n );\n\n const genomeNexusLink = (\n <a href=\"https://www.genomenexus.org/\" target=\"_blank\">\n genomenexus.org\n </a>\n );\n\n const gnomadLink = (\n <a href={props.gnomadUrl} target=\"_blank\">\n gnomAD\n </a>\n );\n\n return (\n <div\n style={{\n fontSize: 'x-small',\n textAlign: 'center',\n paddingTop: 5,\n }}\n >\n Source: {genomeNexusLink}, which serves {myVariantInfoLink}'s gnomAD\n data.\n <br />\n Latest {gnomadLink} data may differ.\n </div>\n );\n};\n\nexport default class GnomadFrequencyTable extends React.Component<\n IGnomadFrequencyTableProps,\n {}\n> {\n public render() {\n return (\n <div className=\"gnomad-frequency-table\" data-test=\"gnomad-table\">\n <ReactTable\n data={this.props.data}\n showPagination={false}\n pageSize={this.props.data.length}\n sortable={false}\n className=\"-striped -highlight\"\n getTrProps={this.getTrProps}\n columns={[\n {\n id: GnomadTableColumnName.population,\n accessor: 'population',\n Cell: renderNumericalValue,\n Header: HEADERS[GnomadTableColumnName.population],\n width: 160,\n },\n {\n id: GnomadTableColumnName.alleleCount,\n accessor: 'alleleCount',\n Cell: renderNumericalValue,\n Header: HEADERS[GnomadTableColumnName.alleleCount],\n width: 55,\n },\n {\n id: GnomadTableColumnName.alleleNumber,\n accessor: 'alleleNumber',\n Cell: renderNumericalValue,\n Header: HEADERS[GnomadTableColumnName.alleleNumber],\n width: 80,\n },\n {\n id: GnomadTableColumnName.homozygotes,\n Cell: renderNumericalValue,\n accessor: 'homozygotes',\n Header: HEADERS[GnomadTableColumnName.homozygotes],\n width: 100,\n },\n {\n id: GnomadTableColumnName.alleleFrequency,\n accessor: 'alleleFrequency',\n Header:\n HEADERS[GnomadTableColumnName.alleleFrequency],\n Cell: (column: any) => (\n <span\n className=\"pull-right mr-1\"\n data-test=\"allele-frequency-data\"\n >\n {frequencyOutput(column.value)}\n </span>\n ),\n width: 120,\n },\n ]}\n />\n {!this.props.hideDisclaimer && (\n <Disclaimer gnomadUrl={this.props.gnomadUrl} />\n )}\n </div>\n );\n }\n\n @autobind\n protected getTrProps(state: any, row?: RowInfo) {\n return {\n style: {\n fontWeight:\n state && row && row.index === this.props.data.length - 1\n ? 'bold'\n : undefined,\n },\n };\n }\n}\n","import { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { MyVariantInfo, VariantAnnotation } from 'genome-nexus-ts-api-client';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { GnomadSummary } from '../../model/GnomadSummary';\nimport GnomadFrequencyTable from './GnomadFrequencyTable';\nimport {\n getGnomadData,\n getGnomadDataSortedByFrequency,\n getGnomadUrl,\n sortGnomadDataByFrequency,\n} from '../../util/GnomadUtils';\n\nexport type GnomadFrequencyProps = {\n myVariantInfo?: MyVariantInfo;\n annotation?: VariantAnnotation;\n};\n\nexport const GnomadFrequencyValue: React.FunctionComponent<{\n gnomadData?: { [key: string]: GnomadSummary };\n}> = props => {\n if (props.gnomadData) {\n // The column will show the total frequency\n // Column will show 0 if the total frequency is 0, still has the tooltip to show the gnomad table (since gnomad data is still available)\n if (props.gnomadData['Total'].alleleFrequency === 0) {\n return <span>0</span>;\n } else {\n // show frequency as number with 4 significant digits\n return (\n <span>\n {props.gnomadData['Total'].alleleFrequency.toLocaleString(\n undefined,\n {\n maximumSignificantDigits: 2,\n minimumSignificantDigits: 2,\n }\n )}\n </span>\n );\n }\n } else {\n return (\n <span\n style={{\n height: '100%',\n width: '100%',\n display: 'block',\n overflow: 'hidden',\n }}\n >\n &nbsp;\n </span>\n );\n }\n};\n\nexport const GnomadFrequencyBreakdown: React.FunctionComponent<GnomadFrequencyProps & {\n gnomadData?: { [key: string]: GnomadSummary };\n hideDisclaimer?: boolean;\n}> = props => {\n const myVariantInfo = props.myVariantInfo;\n let content = <span>Variant has no data in gnomAD.</span>;\n\n // Checking if gnomad data is valid\n if (\n myVariantInfo &&\n (myVariantInfo.gnomadExome || myVariantInfo.gnomadGenome)\n ) {\n const gnomadUrl = getGnomadUrl(props.annotation, myVariantInfo);\n const sorted = props.gnomadData\n ? sortGnomadDataByFrequency(props.gnomadData)\n : getGnomadDataSortedByFrequency(myVariantInfo);\n\n if (sorted) {\n content = (\n <GnomadFrequencyTable\n data={sorted}\n gnomadUrl={gnomadUrl}\n hideDisclaimer={props.hideDisclaimer}\n />\n );\n }\n }\n\n return content;\n};\n\n@observer\nexport default class GnomadFrequency extends React.Component<\n GnomadFrequencyProps,\n {}\n> {\n public render() {\n const gnomadData = getGnomadData(this.props.myVariantInfo);\n\n return (\n <DefaultTooltip\n overlay={() => (\n <GnomadFrequencyBreakdown\n {...this.props}\n gnomadData={gnomadData}\n />\n )}\n placement=\"topRight\"\n trigger={['hover', 'focus']}\n destroyTooltipOnHide={true}\n >\n <span>\n <GnomadFrequencyValue gnomadData={gnomadData} />\n </span>\n </DefaultTooltip>\n );\n }\n}\n","import autobind from 'autobind-decorator';\nimport { MyVariantInfo, VariantAnnotation } from 'genome-nexus-ts-api-client';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { defaultSortMethod } from 'cbioportal-utils';\n\nimport { calculateGnomadAlleleFrequency } from '../../util/GnomadUtils';\nimport GnomadFrequency from '../gnomad/GnomadFrequency';\nimport {\n MyVariantInfoProps,\n renderMyVariantInfoContent,\n} from './MyVariantInfoHelper';\n\nexport function download(myVariantInfo?: MyVariantInfo): string {\n const value = sortValue(myVariantInfo);\n\n return value ? value.toString() : '';\n}\n\nexport function sortValue(myVariantInfo?: MyVariantInfo): number | null {\n // If has both gnomadExome and gnomadGenome, sort by the total frequency\n if (\n myVariantInfo &&\n myVariantInfo.gnomadExome &&\n myVariantInfo.gnomadGenome\n ) {\n return calculateGnomadAlleleFrequency(\n myVariantInfo.gnomadExome.alleleCount.ac +\n myVariantInfo.gnomadGenome.alleleCount.ac,\n myVariantInfo.gnomadExome.alleleNumber.an +\n myVariantInfo.gnomadGenome.alleleNumber.an,\n null\n );\n }\n\n // If only has gnomadExome, sort by gnomadExome frequency\n else if (myVariantInfo && myVariantInfo.gnomadExome) {\n return calculateGnomadAlleleFrequency(\n myVariantInfo.gnomadExome.alleleCount.ac,\n myVariantInfo.gnomadExome.alleleNumber.an,\n myVariantInfo.gnomadExome.alleleFrequency.af\n );\n }\n\n // If only has gnomadGenome, sort by gnomadGenome frequency\n else if (myVariantInfo && myVariantInfo.gnomadGenome) {\n return calculateGnomadAlleleFrequency(\n myVariantInfo.gnomadGenome.alleleCount.ac,\n myVariantInfo.gnomadGenome.alleleNumber.an,\n myVariantInfo.gnomadGenome.alleleFrequency.af\n );\n }\n\n // If myVariantInfo is null, return null\n return null;\n}\n\nexport function gnomadSortMethod(a: MyVariantInfo, b: MyVariantInfo) {\n return defaultSortMethod(sortValue(a), sortValue(b));\n}\n\n@observer\nexport default class Gnomad extends React.Component<MyVariantInfoProps, {}> {\n public static defaultProps: Partial<MyVariantInfoProps> = {\n className: 'pull-right mr-1',\n };\n\n public render() {\n return renderMyVariantInfoContent(this.props, this.getContent);\n }\n\n @autobind\n public getContent(\n myVariantInfo: MyVariantInfo,\n variantAnnotation?: VariantAnnotation\n ) {\n return (\n <GnomadFrequency\n myVariantInfo={myVariantInfo}\n annotation={variantAnnotation}\n />\n );\n }\n}\n","import { getVariantAnnotation, Mutation, RemoteData } from 'cbioportal-utils';\nimport { VariantAnnotation } from 'genome-nexus-ts-api-client';\n\nexport function getAnnotation(\n mutation?: Mutation,\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >\n) {\n return indexedVariantAnnotations\n ? getVariantAnnotation(mutation, indexedVariantAnnotations.result)\n : undefined;\n}\n","import { VariantAnnotation } from 'genome-nexus-ts-api-client';\nimport {\n generateHgvsgByMutation,\n Mutation,\n RemoteData,\n} from 'cbioportal-utils';\nimport { getAnnotation } from './VariantAnnotationHelper';\n\nexport function getHgvsgColumnData(mutation: Mutation): string | null {\n return generateHgvsgByMutation(mutation) || null;\n}\n\nexport function getHgvscColumnData(\n mutation: Mutation,\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >,\n selectedTranscriptId?: string\n): string | null {\n const variantAnnotation = getAnnotation(\n mutation,\n indexedVariantAnnotations\n );\n\n if (!variantAnnotation) {\n return null;\n }\n\n let data: string | null =\n variantAnnotation.annotation_summary?.transcriptConsequenceSummary\n ?.hgvsc || null;\n\n // return data from transcriptConsequenceSummaries if transcript dropdown is enabled\n if (selectedTranscriptId) {\n const transcriptConsequenceSummary = variantAnnotation.annotation_summary?.transcriptConsequenceSummaries?.find(\n transcriptConsequenceSummary =>\n transcriptConsequenceSummary.transcriptId ===\n selectedTranscriptId\n );\n data = transcriptConsequenceSummary\n ? transcriptConsequenceSummary.hgvsc\n : null;\n }\n\n return data;\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { defaultSortMethod, Mutation, RemoteData } from 'cbioportal-utils';\nimport { VariantAnnotation } from 'genome-nexus-ts-api-client';\n\nimport { getHgvscColumnData } from './HgvsHelper';\n\ntype HgvscProps = {\n mutation: Mutation;\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >;\n selectedTranscriptId?: string;\n};\n\nexport function download(hgvsc?: string | null): string {\n return hgvsc || '';\n}\n\nexport function sortValue(hgvsc?: string | null): number | null {\n return hgvsc ? parseInt(hgvsc.split('c.')[1]) : null;\n}\n\nexport function hgvscSortMethod(a: string | null, b: string | null) {\n return defaultSortMethod(sortValue(a), sortValue(b));\n}\n\n@observer\nexport default class Hgvsc extends React.Component<HgvscProps, {}> {\n get hgvsc() {\n return getHgvscColumnData(\n this.props.mutation,\n this.props.indexedVariantAnnotations,\n this.props.selectedTranscriptId\n );\n }\n\n public render() {\n return <div>{this.hgvsc}</div>;\n }\n}\n","import { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { generateHgvsgByMutation, Mutation } from 'cbioportal-utils';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { defaultSortMethod } from 'cbioportal-utils';\n\nimport hgvsgStyles from './hgvsg.module.scss';\n\ntype HgvsgProps = {\n mutation: Mutation;\n constructHref?: (hgvsg: string) => string;\n constructLink?: (\n hgvsg: string,\n content: JSX.Element,\n href?: string\n ) => JSX.Element;\n mainContent?: (hgvsg?: string) => JSX.Element;\n tooltipContent?: (hgvsg?: string) => JSX.Element;\n disableTooltip?: boolean;\n};\n\nexport function hgvsgSortMethod(a: string, b: string) {\n return defaultSortMethod(a, b);\n}\n\n@observer\nexport default class Hgvsg extends React.Component<HgvsgProps, {}> {\n public static defaultProps: Partial<HgvsgProps> = {\n constructLink: (hgvsg: string, content: JSX.Element, href?: string) => (\n <a\n href={href || `https:/www.genomenexus.org/variant/${hgvsg}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {content}\n </a>\n ),\n mainContent: (hgvsg?: string) => (\n <>\n {hgvsg}&nbsp;\n <i className=\"fa fa-external-link\" />\n </>\n ),\n tooltipContent: () => (\n <>\n Genome Nexus\n <div className={hgvsgStyles['genome-nexus-logo']} />\n </>\n ),\n };\n\n get hgvsg() {\n return generateHgvsgByMutation(this.props.mutation);\n }\n\n public render() {\n const constructLink = this.props.constructLink!;\n const mainContent = this.props.mainContent!;\n const tooltipContent = this.props.tooltipContent!;\n\n if (!this.hgvsg) {\n return <span />;\n } else {\n const href = this.props.constructHref\n ? this.props.constructHref(this.hgvsg)\n : undefined;\n\n const content = (\n <span className={hgvsgStyles['hgvsg-data']}>\n {constructLink(this.hgvsg, mainContent(this.hgvsg), href)}\n </span>\n );\n\n return this.props.disableTooltip ? (\n content\n ) : (\n <DefaultTooltip\n placement=\"topLeft\"\n overlay={\n <div>\n {this.hgvsg}\n <br />\n Click to see this variant on &nbsp;\n {constructLink(\n this.hgvsg,\n tooltipContent(this.hgvsg)\n )}\n </div>\n }\n >\n {content}\n </DefaultTooltip>\n );\n }\n }\n}\n","import { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { Mutation } from 'cbioportal-utils';\nimport * as React from 'react';\n\nimport styles from './mutationStatus.module.scss';\n\ntype MutationStatusProps = {\n value?: string;\n mutation?: Mutation;\n displayValueMap?: { [mutationStatus: string]: string };\n enableTooltip?: boolean;\n styleMap?: { [mutationStatus: string]: React.CSSProperties };\n};\n\nexport default class MutationStatus extends React.Component<\n MutationStatusProps,\n {}\n> {\n public static defaultProps: Partial<MutationStatusProps> = {\n enableTooltip: true,\n };\n\n public render() {\n const value =\n this.props.value ||\n (this.props.mutation\n ? this.props.mutation.mutationStatus\n : undefined);\n let content: JSX.Element;\n\n if (value) {\n if (value.toLowerCase().includes('somatic')) {\n content = (\n <span\n className={styles.somatic}\n style={\n this.props.styleMap\n ? this.props.styleMap[value.toLowerCase()]\n : undefined\n }\n >\n {(this.props.displayValueMap &&\n (this.props.displayValueMap[value.toLowerCase()] ||\n this.props.displayValueMap['somatic'])) ||\n 'Somatic'}\n </span>\n );\n } else if (value.toLowerCase().includes('germline')) {\n content = (\n <span\n className={styles.germline}\n style={\n this.props.styleMap\n ? this.props.styleMap[value.toLowerCase()]\n : undefined\n }\n >\n {(this.props.displayValueMap &&\n (this.props.displayValueMap[value.toLowerCase()] ||\n this.props.displayValueMap['germline'])) ||\n 'Germline'}\n </span>\n );\n } else {\n content = <span className={styles.unknown}>{value}</span>;\n }\n } else {\n content = <span />;\n }\n\n if (this.props.enableTooltip) {\n content = (\n <DefaultTooltip\n overlay={<span>{value}</span>}\n placement=\"right\"\n >\n {content}\n </DefaultTooltip>\n );\n }\n\n return content;\n }\n}\n","import { calcProteinChangeSortValue, Mutation } from 'cbioportal-utils';\nimport * as React from 'react';\n\nimport { defaultSortMethod } from 'cbioportal-utils';\nimport styles from './proteinChange.module.scss';\n\ntype ProteinChangeProps = {\n mutation: Mutation;\n enableMutationStatusIndicator?: boolean;\n};\n\nexport function proteinChangeSortMethod(a: string, b: string) {\n return defaultSortMethod(\n a ? calcProteinChangeSortValue(a) : null,\n b ? calcProteinChangeSortValue(b) : null\n );\n}\n\nexport default class ProteinChange extends React.Component<\n ProteinChangeProps,\n {}\n> {\n public static defaultProps: Partial<ProteinChangeProps> = {\n enableMutationStatusIndicator: true,\n };\n\n public render() {\n // use text as display value\n const mutation = this.props.mutation;\n const proteinChange = mutation.proteinChange;\n const mutationStatus = mutation.mutationStatus;\n\n // TODO TruncatedText\n // let content = (\n // <TruncatedText\n // text={proteinChange}\n // tooltip={<span>{proteinChange}</span>}\n // className={styles.proteinChange}\n // maxLength={40}\n // />\n // );\n\n let content = (\n <span className={styles.proteinChange}>{proteinChange}</span>\n );\n\n // add a germline indicator next to protein change if it is a germline mutation!\n if (\n this.props.enableMutationStatusIndicator &&\n mutationStatus &&\n mutationStatus.toLowerCase().includes('germline')\n ) {\n content = (\n <React.Fragment>\n {content}\n <span className={styles.germline}>Germline</span>\n </React.Fragment>\n );\n }\n\n return content;\n }\n}\n","import * as React from 'react';\nimport 'rc-tooltip/assets/bootstrap_white.css';\nimport {\n extendMutations,\n getVariantAnnotation,\n IExtendedSignalMutation,\n Mutation,\n RemoteData,\n formatNumberValueInSignificantDigits,\n defaultSortMethod,\n generateTumorTypeDecomposition,\n} from 'cbioportal-utils';\nimport { VariantAnnotation } from 'genome-nexus-ts-api-client';\nimport {\n MutationTumorTypeFrequencyTable,\n FrequencyTableColumnEnum,\n DefaultTooltip,\n FREQUENCY_COLUMNS_DEFINITION,\n} from 'cbioportal-frontend-commons';\nimport { observer } from 'mobx-react';\nimport { errorIcon, loaderIcon } from '../StatusHelpers';\ntype SignalProps = {\n mutation: Mutation;\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >;\n};\n\ntype SignalValueProps = SignalProps & {\n significantDigits?: number;\n};\n\nexport function getSignalData(\n mutation: Mutation,\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >\n): IExtendedSignalMutation {\n let signalData = {} as IExtendedSignalMutation;\n const variantAnnotation = indexedVariantAnnotations\n ? getVariantAnnotation(mutation, indexedVariantAnnotations.result)\n : undefined;\n if (\n variantAnnotation &&\n variantAnnotation.signalAnnotation &&\n variantAnnotation.signalAnnotation.annotation &&\n variantAnnotation.signalAnnotation.annotation.length > 0\n ) {\n variantAnnotation.signalAnnotation.annotation.forEach(annotation => {\n // only have one germline annotation\n if (annotation.mutationStatus.includes('germline')) {\n signalData = extendMutations([annotation])[0];\n }\n });\n }\n return signalData;\n}\nexport function signalSortMethod(\n a: IExtendedSignalMutation,\n b: IExtendedSignalMutation\n) {\n return defaultSortMethod(getSortValue(a), getSortValue(b));\n}\nexport function getSortValue(\n signalData: IExtendedSignalMutation\n): number | null {\n return signalData.germlineFrequency || null;\n}\n\nexport function download(signalData: IExtendedSignalMutation): string {\n return signalData.germlineFrequency != null\n ? `${formatNumberValueInSignificantDigits(\n signalData.germlineFrequency,\n 2\n )}`\n : '';\n}\n\nexport function getSignalValue(\n mutation: Mutation,\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >,\n significantDigits?: number\n) {\n const signalData = getSignalData(mutation, indexedVariantAnnotations);\n if (signalData.tumorTypeDecomposition) {\n return formatNumberValueInSignificantDigits(\n signalData.germlineFrequency,\n significantDigits || 2\n );\n } else {\n return null;\n }\n}\n\nexport const SignalTable: React.FunctionComponent<SignalValueProps> = props => {\n const signalData = getSignalData(\n props.mutation,\n props.indexedVariantAnnotations\n );\n if (\n getSignalValue(props.mutation, props.indexedVariantAnnotations) !== null\n ) {\n return (\n <MutationTumorTypeFrequencyTable\n data={generateTumorTypeDecomposition(\n signalData,\n signalData.countsByTumorType,\n signalData.biallelicCountsByTumorType,\n signalData.qcPassCountsByTumorType,\n signalData.statsByTumorType\n )}\n columns={[\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.TUMOR_TYPE\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.MUTATION_STATUS\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.SAMPLE_COUNT\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.VARIANT_COUNT\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.PREVALENCE_FREQUENCY\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.BIALLELIC_RATIO\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.MEDIAN_AGE_AT_DX\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.MEDIAN_TMB\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.MSI_SCORE\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.MEDIAN_HRD_LST\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.MEDIAN_HRD_NTELOMERIC_AI\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.MEDIAN_HRD_FRACTION_LOH\n ],\n ]}\n />\n );\n } else {\n return null;\n }\n};\n\n@observer\nexport default class Signal extends React.Component<SignalProps, {}> {\n public render() {\n if (this.props.indexedVariantAnnotations) {\n let content;\n const status = this.props.indexedVariantAnnotations.status;\n if (status === 'pending') {\n content = loaderIcon();\n } else if (status === 'error') {\n content = errorIcon('Error fetching Genome Nexus annotation');\n } else {\n content = <div />;\n const signalValue = getSignalValue(\n this.props.mutation,\n this.props.indexedVariantAnnotations\n );\n if (signalValue !== null) {\n content = (\n <DefaultTooltip\n placement=\"top\"\n overlayStyle={{\n width: 800,\n }}\n overlay={\n <SignalTable\n mutation={this.props.mutation}\n indexedVariantAnnotations={\n this.props.indexedVariantAnnotations\n }\n />\n }\n >\n <span>{signalValue}</span>\n </DefaultTooltip>\n );\n }\n }\n\n return content;\n } else {\n return <div />;\n }\n }\n}\n","import { DataFilter } from '../model/DataFilter';\n\nexport function handleOptionSelect(\n selectedValues: Array<{ value: string }>,\n allValues: string[],\n onSelect?: (\n selectedOptionIds: string[],\n allValuesSelected?: boolean\n ) => void\n) {\n if (onSelect) {\n onSelect(\n selectedValues.map(o => o.value),\n allValues.length === selectedValues.length\n );\n }\n}\n\nexport function getAllOptionValues(options?: { value: string }[]) {\n return (options || []).map(option => option.value);\n}\n\nexport function getSelectedOptionValues(\n allValues: string[],\n filter?: DataFilter<string>\n) {\n return allValues\n .filter(\n value =>\n !filter ||\n filter.values.find(\n filterValue =>\n value.toLowerCase() === filterValue.toLowerCase()\n )\n )\n .map(value => ({ value }));\n}\n","import { CheckedSelect, Option } from 'cbioportal-frontend-commons';\nimport classNames from 'classnames';\nimport { action, computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { components } from 'react-select';\n\nimport { DataFilter } from '../../model/DataFilter';\nimport {\n getAllOptionValues,\n getSelectedOptionValues,\n handleOptionSelect,\n} from '../../util/SelectorUtils';\n\nexport type DropdownSelectorProps = {\n name?: string;\n placeholder?: string;\n onSelect?: (\n selectedOptionIds: string[],\n allValuesSelected?: boolean\n ) => void;\n showControls?: boolean;\n showNumberOfSelectedValues?: boolean;\n selectionIndicatorClassNames?: {\n base: string;\n allSelected: string;\n partiallySelected: string;\n };\n filter?: DataFilter<string>;\n options?: { label?: string | JSX.Element; value: string }[];\n};\n\nconst SelectionIndicator: React.FunctionComponent<{\n allValues: string[];\n selectedValues: { value: string }[];\n selectionIndicatorClassNames: string;\n}> = observer(props => {\n return (\n <div\n style={{\n marginRight: 5,\n marginTop: 'auto',\n marginBottom: 'auto',\n }}\n className={props.selectionIndicatorClassNames}\n >\n {props.selectedValues.length}/{props.allValues.length}\n </div>\n );\n});\n\n@observer\nexport class DropdownSelector extends React.Component<\n DropdownSelectorProps,\n {}\n> {\n public static defaultProps: Partial<DropdownSelectorProps> = {\n showNumberOfSelectedValues: true,\n selectionIndicatorClassNames: {\n base: 'badge',\n allSelected: 'badge-light',\n partiallySelected: 'badge-warning',\n },\n };\n\n constructor(props: DropdownSelectorProps) {\n super(props);\n makeObservable(this);\n }\n\n @computed\n public get allValues(): string[] {\n return getAllOptionValues(this.props.options);\n }\n\n @computed\n public get selectedValues(): { value: string }[] {\n return getSelectedOptionValues(this.allValues, this.props.filter);\n }\n\n @computed\n public get options(): Option[] {\n return (this.props.options || []).map(option => ({\n label: <span>{option.label || option.value}</span>,\n value: option.value,\n }));\n }\n\n @computed\n public get selectionIndicatorClassNames(): string {\n const allValuesSelected =\n this.allValues.length === this.selectedValues.length;\n const classes = this.props.selectionIndicatorClassNames!;\n\n return classNames(classes.base, {\n [classes.allSelected]: allValuesSelected,\n [classes.partiallySelected]: !allValuesSelected,\n });\n }\n\n @computed\n public get components() {\n return this.props.showNumberOfSelectedValues\n ? {\n IndicatorsContainer: this.indicatorsContainer,\n }\n : undefined;\n }\n\n public render() {\n return (\n <CheckedSelect\n name={this.props.name}\n placeholder={this.props.placeholder}\n reactSelectComponents={this.components}\n onChange={this.onChange}\n options={this.options}\n value={this.selectedValues}\n showControls={this.props.showControls}\n />\n );\n }\n\n protected indicatorsContainer = (props: any) => {\n return (\n <div style={{ display: 'flex' }}>\n <SelectionIndicator\n allValues={this.allValues}\n selectedValues={this.selectedValues}\n selectionIndicatorClassNames={\n this.selectionIndicatorClassNames\n }\n />\n <components.IndicatorsContainer {...props} />\n </div>\n );\n };\n\n @action.bound\n private onChange(values: Array<{ value: string }>) {\n handleOptionSelect(values, this.allValues, this.props.onSelect);\n }\n}\n\nexport default DropdownSelector;\n","import * as React from 'react';\nimport { CSSProperties } from 'react';\n\nexport type BadgeLabelProps = {\n label: JSX.Element | string;\n badgeContent?: number | string;\n badgeStyleOverride?: CSSProperties;\n badgeClassName?: string;\n badgeFirst?: boolean;\n};\n\nexport const DEFAULT_BADGE_STYLE = {\n color: '#FFF',\n backgroundColor: '#000',\n borderStyle: 'solid',\n borderWidth: 'thin',\n};\n\nexport class BadgeLabel extends React.Component<BadgeLabelProps, {}> {\n public static defaultProps: Partial<BadgeLabelProps> = {\n badgeClassName: 'badge',\n badgeFirst: false,\n };\n\n protected get badge(): JSX.Element {\n return (\n <span\n style={\n this.props.badgeFirst\n ? { marginRight: 5 }\n : { marginLeft: 5 }\n }\n >\n <span\n className={this.props.badgeClassName}\n style={{\n ...DEFAULT_BADGE_STYLE,\n ...this.props.badgeStyleOverride,\n }}\n >\n {this.props.badgeContent}\n </span>\n </span>\n );\n }\n\n protected get badgeFirst(): JSX.Element {\n return (\n <React.Fragment>\n {this.badge}\n {this.props.label}\n </React.Fragment>\n );\n }\n\n protected get badgeLast(): JSX.Element {\n return (\n <React.Fragment>\n {this.props.label}\n {this.badge}\n </React.Fragment>\n );\n }\n\n public render(): JSX.Element {\n return this.props.badgeFirst ? this.badgeFirst : this.badgeLast;\n }\n}\n\nexport default BadgeLabel;\n","import autobind from 'autobind-decorator';\nimport {\n CheckBoxType,\n Checklist,\n getSelectedValuesMap,\n Option,\n} from 'cbioportal-frontend-commons';\nimport _ from 'lodash';\nimport { action, computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { CSSProperties } from 'react';\n\nimport { DataFilter } from '../../model/DataFilter';\nimport {\n getAllOptionValues,\n getSelectedOptionValues,\n handleOptionSelect,\n} from '../../util/SelectorUtils';\nimport { BadgeLabel, DEFAULT_BADGE_STYLE } from './BadgeLabel';\n\nexport type BadgeSelectorOption = {\n value: string;\n label?: string | JSX.Element;\n badgeContent?: number | string;\n badgeStyleOverride?: CSSProperties;\n badgeStyleSelectedOverride?: CSSProperties;\n};\n\nexport type BadgeSelectorProps = {\n name?: string;\n placeholder?: string;\n isDisabled?: boolean;\n unselectOthersWhenAllSelected?: boolean;\n numberOfColumnsPerRow?: number;\n alignColumns?: boolean;\n uniformBadgeWidth?: boolean;\n alignmentPaddingWithinBadge?: boolean;\n onSelect?: (\n selectedOptionIds: string[],\n allValuesSelected?: boolean\n ) => void;\n selectedValues?: { value: string }[];\n getOptionLabel?: (\n option: Option,\n selectedValues: { [optionValue: string]: any },\n checkBoxType?: CheckBoxType\n ) => JSX.Element;\n getBadgeLabel?: (\n option: BadgeSelectorOption,\n selectedValues: { [optionValue: string]: any },\n badgeClassName?: string,\n badgeAlignmentStyle?: CSSProperties\n ) => JSX.Element;\n filter?: DataFilter<string>;\n options?: BadgeSelectorOption[];\n badgeClassName?: string;\n badgeContentPadding?: number;\n badgeCharWidth?: number;\n};\n\nexport const DEFAULT_BADGE_CHAR_WIDTH = 10;\nexport const DEFAULT_BADGE_CONTENT_PADDING = 7;\n\nexport function getBadgeStyleOverride(\n option: BadgeSelectorOption,\n selectedValues: { [optionValue: string]: any },\n badgeAlignmentStyle?: CSSProperties\n) {\n let override: CSSProperties = {\n ...badgeAlignmentStyle,\n ...option.badgeStyleOverride,\n };\n\n const defaultStyle = {\n ...DEFAULT_BADGE_STYLE,\n ...override,\n };\n\n const isSelected = option.value in selectedValues;\n\n if (!isSelected) {\n // by default swap background color and text color for unselected options\n override = option.badgeStyleSelectedOverride\n ? {\n ...badgeAlignmentStyle,\n ...option.badgeStyleSelectedOverride,\n }\n : {\n ...defaultStyle,\n color: defaultStyle.backgroundColor,\n backgroundColor: defaultStyle.color,\n borderColor: defaultStyle.backgroundColor,\n };\n }\n\n return override;\n}\n\nexport function calculateBadgeAlignmentStyle(\n maxLengthInCol: number,\n optionLength: number,\n badgeCharWidth: number = DEFAULT_BADGE_CHAR_WIDTH,\n badgeContentPadding: number = DEFAULT_BADGE_CONTENT_PADDING,\n padWithinBadge: boolean = false\n): CSSProperties {\n // this is an approximation with the assumption that each character has more or less equal width\n const totalWidth =\n maxLengthInCol * badgeCharWidth + badgeContentPadding * 2;\n\n if (padWithinBadge) {\n // no additional left or right margin, since all the padding is applied within the badge width\n return {\n width: totalWidth,\n };\n } else {\n // need additional left and right margins to adjust the alignment\n const width = optionLength * badgeCharWidth + badgeContentPadding * 2;\n const margin = (totalWidth - width) / 2;\n return {\n width,\n marginLeft: margin,\n marginRight: margin,\n };\n }\n}\n\nexport function getOptionContentLengths(\n options: BadgeSelectorOption[]\n): number[] {\n // string length of each badge content of an option\n return options\n .map((option: BadgeSelectorOption) => option.badgeContent)\n .filter(content => content !== undefined)\n .map(content => content!.toString().length);\n}\n\nexport function calculateBadgeAlignmentStyles(\n options: BadgeSelectorOption[],\n numberOfColumnsPerRow: number = 1,\n uniformBadgeWidth: boolean = false,\n badgeCharWidth: number = DEFAULT_BADGE_CHAR_WIDTH,\n badgeContentPadding: number = DEFAULT_BADGE_CONTENT_PADDING,\n alignmentPaddingWithinBadge: boolean = false\n): CSSProperties[] {\n // regardless of number of columns or alignmentPaddingWithinBadge value\n // set the width of all badges to the width of badge with the longest content\n if (uniformBadgeWidth) {\n const iterationCount = options.length;\n const maxLength = Math.max(...getOptionContentLengths(options));\n const badgeWidth = calculateBadgeAlignmentStyle(\n maxLength,\n maxLength,\n badgeCharWidth,\n badgeContentPadding,\n true\n );\n\n return _.times(iterationCount, () => badgeWidth);\n } else if (numberOfColumnsPerRow > 0) {\n const groupedByCol = _.groupBy(\n options,\n option => options.indexOf(option) % numberOfColumnsPerRow\n );\n\n return options.map((option: BadgeSelectorOption, index: number) => {\n // define a max badge length for each column\n const maxLengthInCol = Math.max(\n ...getOptionContentLengths(\n groupedByCol[index % numberOfColumnsPerRow]\n )\n );\n const length =\n option.badgeContent === undefined\n ? 0\n : option.badgeContent.toString().length;\n\n // align all badges with respect to the max badge length for the corresponding column\n return calculateBadgeAlignmentStyle(\n maxLengthInCol,\n length,\n badgeCharWidth,\n badgeContentPadding,\n alignmentPaddingWithinBadge\n );\n });\n } else {\n return [];\n }\n}\n\n@observer\nexport class BadgeSelector extends React.Component<BadgeSelectorProps, {}> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n @computed\n public get allValues() {\n return getAllOptionValues(this.props.options);\n }\n\n @computed\n public get selectedValues() {\n return (\n this.props.selectedValues ||\n getSelectedOptionValues(this.allValues, this.props.filter)\n );\n }\n\n @computed\n public get selectedValuesMap(): { [optionValue: string]: any } {\n return getSelectedValuesMap(this.selectedValues);\n }\n\n public getBadgeLabel(\n option: BadgeSelectorOption,\n selectedValues: { [optionValue: string]: any },\n badgeClassName?: string,\n badgeAlignmentStyle?: CSSProperties\n ): JSX.Element {\n return this.props.getBadgeLabel ? (\n this.props.getBadgeLabel(\n option,\n selectedValues,\n badgeClassName,\n badgeAlignmentStyle\n )\n ) : (\n <BadgeLabel\n label={option.label || option.value}\n badgeContent={option.badgeContent}\n badgeStyleOverride={getBadgeStyleOverride(\n option,\n selectedValues,\n badgeAlignmentStyle\n )}\n badgeClassName={this.props.badgeClassName}\n />\n );\n }\n\n @computed\n public get badgeAlignmentStyles(): CSSProperties[] | undefined {\n return this.props.alignColumns && this.props.options\n ? calculateBadgeAlignmentStyles(\n this.props.options,\n this.props.numberOfColumnsPerRow,\n this.props.uniformBadgeWidth,\n this.props.badgeCharWidth,\n this.props.badgeContentPadding,\n this.props.alignmentPaddingWithinBadge\n )\n : undefined;\n }\n\n @computed\n public get options(): Option[] {\n return (this.props.options || []).map((option, index) => ({\n label: this.getBadgeLabel(\n option,\n this.selectedValuesMap,\n this.props.badgeClassName,\n this.badgeAlignmentStyles && this.props.numberOfColumnsPerRow\n ? this.badgeAlignmentStyles[index]\n : undefined\n ),\n value: option.value,\n }));\n }\n\n public render() {\n return (\n <Checklist\n onChange={this.onChange}\n options={this.options}\n getOptionLabel={this.props.getOptionLabel}\n value={this.selectedValues}\n isDisabled={this.props.isDisabled}\n numberOfColumnsPerRow={this.props.numberOfColumnsPerRow}\n unselectOthersWhenAllSelected={\n this.props.unselectOthersWhenAllSelected\n }\n />\n );\n }\n\n @action.bound\n private onChange(values: Array<{ value: string }>) {\n handleOptionSelect(values, this.allValues, this.props.onSelect);\n }\n}\n\nexport default BadgeSelector;\n","import {\n CanonicalMutationType,\n findFirstMostCommonElt,\n getCanonicalMutationType,\n getProteinImpactTypeFromCanonical,\n ProteinImpactType,\n MUT_COLOR_MISSENSE,\n MUT_COLOR_INFRAME,\n MUT_COLOR_TRUNC,\n MUT_COLOR_SPLICE,\n STRUCTURAL_VARIANT_COLOR,\n MUT_COLOR_OTHER,\n MUT_COLOR_MISSENSE_PASSENGER,\n MUT_COLOR_INFRAME_PASSENGER,\n MUT_COLOR_TRUNC_PASSENGER,\n MUT_COLOR_SPLICE_PASSENGER,\n STRUCTURAL_VARIANT_PASSENGER_COLOR,\n} from 'cbioportal-frontend-commons';\nimport { Mutation } from 'cbioportal-utils';\nimport _ from 'lodash';\n\nimport { IProteinImpactTypeColors } from '../model/ProteinImpact';\n\nexport const DEFAULT_PROTEIN_IMPACT_TYPE_COLORS: IProteinImpactTypeColors = {\n missenseColor: MUT_COLOR_MISSENSE,\n missenseVusColor: MUT_COLOR_MISSENSE_PASSENGER,\n inframeColor: MUT_COLOR_INFRAME,\n inframeVusColor: MUT_COLOR_INFRAME_PASSENGER,\n truncatingColor: MUT_COLOR_TRUNC,\n truncatingVusColor: MUT_COLOR_TRUNC_PASSENGER,\n spliceColor: MUT_COLOR_SPLICE,\n spliceVusColor: MUT_COLOR_SPLICE_PASSENGER,\n fusionColor: STRUCTURAL_VARIANT_COLOR,\n fusionVusColor: STRUCTURAL_VARIANT_PASSENGER_COLOR,\n otherColor: MUT_COLOR_OTHER,\n};\n\nexport const MUTATION_TYPE_PRIORITY: {\n [canonicalMutationType: string]: number;\n} = {\n missense: 1,\n inframe: 2,\n truncating: 4,\n nonsense: 6,\n nonstop: 7,\n nonstart: 8,\n frameshift: 4,\n frame_shift_del: 4,\n frame_shift_ins: 5,\n in_frame_ins: 3,\n in_frame_del: 2,\n splice_site: 9,\n fusion: 10,\n silent: 11,\n other: 11,\n};\n\nexport function mutationTypeSort(\n typeA: CanonicalMutationType,\n typeB: CanonicalMutationType\n) {\n const priorityA = MUTATION_TYPE_PRIORITY[typeA];\n const priorityB = MUTATION_TYPE_PRIORITY[typeB];\n if (priorityA < priorityB) {\n return -1;\n } else if (priorityA > priorityB) {\n return 1;\n } else {\n return typeA.localeCompare(typeB);\n }\n}\n\nexport function getColorForProteinImpactType<T extends Mutation>(\n mutations: Partial<T>[],\n colors: IProteinImpactTypeColors = DEFAULT_PROTEIN_IMPACT_TYPE_COLORS,\n getMutationCount: (mutation: Partial<T>) => number = () => 1,\n isPutativeDriver?: (mutation: Partial<T>) => boolean\n): string {\n const processedMutations = mutations.map(m => {\n return {\n count: Math.ceil(getMutationCount(m)),\n\n // if not coloring drivers vs vus, color everything as driver\n isPutativeDriver: !!(!isPutativeDriver || isPutativeDriver(m)),\n\n canonicalType: getCanonicalMutationType(\n (m.mutationType || '') as string\n ),\n };\n });\n // aggregate counts by type + driver status\n const counts: any = {};\n for (const pMut of processedMutations) {\n const key = `${pMut.canonicalType}_${pMut.isPutativeDriver}`;\n counts[key] = counts[key] || {\n count: 0,\n isPutativeDriver: pMut.isPutativeDriver,\n canonicalType: pMut.canonicalType,\n };\n counts[key].count += pMut.count;\n }\n\n const sortedMutations = _.sortBy(_.values(counts), [\n pMut => (pMut.isPutativeDriver ? 0 : 1), // putative driver preferred non putative driver\n pMut => -pMut.count, // sort descending by count - higher count preferred to lower count\n pMut => MUTATION_TYPE_PRIORITY[pMut.canonicalType], // finally, sort by specified priority\n ]);\n\n if (sortedMutations.length > 0) {\n const chosenMutation = sortedMutations[0];\n\n const proteinImpactType: ProteinImpactType = getProteinImpactTypeFromCanonical(\n chosenMutation.canonicalType\n );\n\n switch (proteinImpactType) {\n case ProteinImpactType.MISSENSE:\n return chosenMutation.isPutativeDriver\n ? colors.missenseColor\n : colors.missenseVusColor;\n case ProteinImpactType.TRUNCATING:\n return chosenMutation.isPutativeDriver\n ? colors.truncatingColor\n : colors.truncatingVusColor;\n case ProteinImpactType.INFRAME:\n return chosenMutation.isPutativeDriver\n ? colors.inframeColor\n : colors.inframeVusColor;\n case ProteinImpactType.FUSION:\n return chosenMutation.isPutativeDriver\n ? colors.fusionColor\n : colors.fusionVusColor;\n case ProteinImpactType.SPLICE:\n return chosenMutation.isPutativeDriver\n ? colors.spliceColor\n : colors.spliceVusColor;\n default:\n return colors.otherColor;\n }\n } else {\n return '#FF0000'; // we only get here if theres no mutations, which shouldnt happen. red to indicate an error\n }\n}\n","import { ProteinImpactType } from 'cbioportal-frontend-commons';\nimport * as React from 'react';\n\nimport { IProteinImpactTypeColors } from '../../model/ProteinImpact';\n\nexport function getProteinImpactTypeOptionDisplayValueMap(proteinImpactTypeColorMap: {\n [proteinImpactType: string]: string;\n}): { [proteinImpactType: string]: JSX.Element } {\n return {\n [ProteinImpactType.MISSENSE]: (\n <strong\n style={{\n color:\n proteinImpactTypeColorMap[ProteinImpactType.MISSENSE],\n }}\n >\n Missense\n </strong>\n ),\n [ProteinImpactType.TRUNCATING]: (\n <strong\n style={{\n color:\n proteinImpactTypeColorMap[ProteinImpactType.TRUNCATING],\n }}\n >\n Truncating\n </strong>\n ),\n [ProteinImpactType.INFRAME]: (\n <strong\n style={{\n color: proteinImpactTypeColorMap[ProteinImpactType.INFRAME],\n }}\n >\n Inframe\n </strong>\n ),\n [ProteinImpactType.SPLICE]: (\n <strong\n style={{\n color: proteinImpactTypeColorMap[ProteinImpactType.SPLICE],\n }}\n >\n Splice\n </strong>\n ),\n [ProteinImpactType.FUSION]: (\n <strong\n style={{\n color: proteinImpactTypeColorMap[ProteinImpactType.FUSION],\n }}\n >\n SV/Fusion\n </strong>\n ),\n [ProteinImpactType.OTHER]: (\n <strong\n style={{\n color: proteinImpactTypeColorMap[ProteinImpactType.OTHER],\n }}\n >\n Other\n </strong>\n ),\n };\n}\n\nexport function getProteinImpactTypeColorMap(\n colors: IProteinImpactTypeColors\n): { [proteinImpactType: string]: string } {\n return {\n [ProteinImpactType.MISSENSE]: colors.missenseColor,\n [ProteinImpactType.TRUNCATING]: colors.truncatingColor,\n [ProteinImpactType.INFRAME]: colors.inframeColor,\n [ProteinImpactType.SPLICE]: colors.spliceColor,\n [ProteinImpactType.FUSION]: colors.fusionColor,\n [ProteinImpactType.OTHER]: colors.otherColor,\n };\n}\n","import { ProteinImpactType } from 'cbioportal-frontend-commons';\nimport { computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IProteinImpactTypeColors } from '../../model/ProteinImpact';\nimport { DEFAULT_PROTEIN_IMPACT_TYPE_COLORS } from '../../util/MutationTypeUtils';\nimport DropdownSelector, { DropdownSelectorProps } from './DropdownSelector';\nimport {\n getProteinImpactTypeColorMap,\n getProteinImpactTypeOptionDisplayValueMap,\n} from './ProteinImpactTypeHelper';\n\nexport type ProteinImpactTypeDropdownSelectorProps = DropdownSelectorProps & {\n colors: IProteinImpactTypeColors;\n};\n\n@observer\nexport class ProteinImpactTypeDropdownSelector extends React.Component<\n ProteinImpactTypeDropdownSelectorProps,\n {}\n> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n public static defaultProps: Partial<\n ProteinImpactTypeDropdownSelectorProps\n > = {\n colors: DEFAULT_PROTEIN_IMPACT_TYPE_COLORS,\n };\n\n @computed\n protected get optionDisplayValueMap() {\n return getProteinImpactTypeOptionDisplayValueMap(\n this.proteinImpactTypeColors\n );\n }\n\n @computed\n protected get proteinImpactTypeColors() {\n return getProteinImpactTypeColorMap(this.props.colors);\n }\n\n @computed\n protected get options() {\n return Object.values(ProteinImpactType).map(value => ({\n value,\n label: this.optionDisplayValueMap[value],\n }));\n }\n\n public render() {\n return (\n <DropdownSelector\n name=\"proteinImpactTypeFilter\"\n placeholder=\"Protein Impact\"\n showControls={true}\n options={this.options}\n {...this.props}\n />\n );\n }\n}\n\nexport default ProteinImpactTypeDropdownSelector;\n","import { Option, ProteinImpactType } from 'cbioportal-frontend-commons';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { CSSProperties } from 'react';\n\nimport { IProteinImpactTypeColors } from '../../model/ProteinImpact';\nimport { DEFAULT_PROTEIN_IMPACT_TYPE_COLORS } from '../../util/MutationTypeUtils';\nimport { BadgeLabel } from './BadgeLabel';\nimport BadgeSelector, {\n BadgeSelectorOption,\n BadgeSelectorProps,\n getBadgeStyleOverride,\n} from './BadgeSelector';\nimport {\n getProteinImpactTypeColorMap,\n getProteinImpactTypeOptionDisplayValueMap,\n} from './ProteinImpactTypeHelper';\n\nexport type ProteinImpactTypeBadgeSelectorProps = BadgeSelectorProps & {\n colors: IProteinImpactTypeColors;\n counts?: { [proteinImpactType: string]: number };\n};\n\nconst VALUES = [\n ProteinImpactType.MISSENSE,\n ProteinImpactType.TRUNCATING,\n ProteinImpactType.INFRAME,\n ProteinImpactType.SPLICE,\n ProteinImpactType.FUSION,\n ProteinImpactType.OTHER,\n];\n\nexport function getProteinImpactTypeOptionLabel(option: Option): JSX.Element {\n return <span>{option.label || option.value}</span>;\n}\n\nexport function getProteinImpactTypeBadgeLabel(\n option: BadgeSelectorOption,\n selectedValues: { [optionValue: string]: any },\n badgeClassName?: string,\n badgeAlignmentStyle?: CSSProperties\n): JSX.Element {\n return (\n <BadgeLabel\n label={option.label || option.value}\n badgeContent={option.badgeContent}\n badgeStyleOverride={getBadgeStyleOverride(\n option,\n selectedValues,\n badgeAlignmentStyle\n )}\n badgeClassName={badgeClassName}\n badgeFirst={true}\n />\n );\n}\n\n@observer\nexport class ProteinImpactTypeBadgeSelector<\n P extends ProteinImpactTypeBadgeSelectorProps = ProteinImpactTypeBadgeSelectorProps\n> extends React.Component<P, {}> {\n constructor(props: any) {\n super(props);\n }\n\n public static defaultProps: Partial<ProteinImpactTypeBadgeSelectorProps> = {\n colors: DEFAULT_PROTEIN_IMPACT_TYPE_COLORS,\n alignColumns: true,\n unselectOthersWhenAllSelected: false,\n numberOfColumnsPerRow: 2,\n };\n\n protected get optionDisplayValueMap() {\n return getProteinImpactTypeOptionDisplayValueMap(\n this.proteinImpactTypeColors\n );\n }\n\n protected get proteinImpactTypeColors() {\n return getProteinImpactTypeColorMap(this.props.colors);\n }\n\n protected get options() {\n // get options, hide \"Other\" if it's 0\n return VALUES.map(value => ({\n value,\n label: this.optionDisplayValueMap[value],\n badgeContent: this.props.counts\n ? this.props.counts[value]\n : undefined,\n badgeStyleOverride: {\n backgroundColor: this.proteinImpactTypeColors[value],\n },\n })).filter(\n type =>\n !(\n type.value === ProteinImpactType.OTHER &&\n type.badgeContent === 0\n )\n );\n }\n\n public render() {\n return (\n <BadgeSelector\n options={this.options}\n getOptionLabel={getProteinImpactTypeOptionLabel}\n getBadgeLabel={getProteinImpactTypeBadgeLabel}\n {...this.props}\n />\n );\n }\n}\n\nexport default ProteinImpactTypeBadgeSelector;\n","import { computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { formatPercentValue } from 'cbioportal-utils';\n\nimport BadgeSelector, {\n BadgeSelectorOption,\n BadgeSelectorProps,\n} from './BadgeSelector';\n\nexport type MutationStatusBadgeSelectorProps = BadgeSelectorProps & {\n rates?: { [mutationStatus: string]: number };\n badgeSelectorOptions?: BadgeSelectorOption[];\n};\n\nexport const MUTATION_STATUS_BADGE_STYLE_OVERRIDE = {\n color: '#000',\n backgroundColor: '#FFF',\n borderColor: '#FFF',\n};\n\nexport function getMutationStatusFilterOptions() {\n return [\n {\n value: 'somatic',\n label: 'Somatic Mutation Frequency',\n badgeStyleOverride: MUTATION_STATUS_BADGE_STYLE_OVERRIDE,\n badgeStyleSelectedOverride: MUTATION_STATUS_BADGE_STYLE_OVERRIDE,\n },\n {\n value: 'germline',\n label: 'Germline Mutation Frequency',\n badgeStyleOverride: MUTATION_STATUS_BADGE_STYLE_OVERRIDE,\n badgeStyleSelectedOverride: MUTATION_STATUS_BADGE_STYLE_OVERRIDE,\n },\n ];\n}\n\n@observer\nexport class MutationStatusBadgeSelector extends React.Component<\n MutationStatusBadgeSelectorProps,\n {}\n> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n public static defaultProps: Partial<MutationStatusBadgeSelectorProps> = {\n badgeSelectorOptions: getMutationStatusFilterOptions(),\n };\n\n @computed\n public get options() {\n return this.props.badgeSelectorOptions!.map(option => ({\n ...option,\n badgeContent: this.props.rates\n ? `${formatPercentValue(this.props.rates[option.value])}%`\n : undefined,\n }));\n }\n\n public render() {\n return <BadgeSelector options={this.options} {...this.props} />;\n }\n}\n\nexport default MutationStatusBadgeSelector;\n","import autobind from 'autobind-decorator';\nimport { CheckedSelect, Option } from 'cbioportal-frontend-commons';\nimport { action, computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nexport type ColumnVisibilityDef = {\n id: string;\n name: string;\n visible: boolean;\n togglable?: boolean;\n};\n\nexport type ColumnSelectorProps = {\n name?: string;\n placeholder?: string;\n columnVisibility?: ColumnVisibilityDef[];\n onColumnToggled?: (selectedColumnIds: string[]) => void;\n showControls?: boolean;\n};\n\n@observer\nexport class ColumnSelector extends React.Component<ColumnSelectorProps, {}> {\n public static defaultProps: Partial<ColumnSelectorProps> = {\n name: 'dataTableColumns',\n placeholder: 'Columns',\n showControls: false,\n };\n\n constructor(props: ColumnSelectorProps) {\n super(props);\n makeObservable<ColumnSelector, 'onChange'>(this);\n }\n\n @computed\n public get selectedValues() {\n return (this.props.columnVisibility || [])\n .filter(c => c.visible)\n .map(c => ({ value: c.id }));\n }\n\n @computed\n public get options(): Option[] {\n return (this.props.columnVisibility || []).map(c => ({\n label: <span>{c.name}</span>,\n value: c.id,\n }));\n }\n\n public render() {\n return (\n <CheckedSelect\n name={this.props.name}\n placeholder={this.props.placeholder}\n onChange={this.onChange}\n options={this.options}\n value={this.selectedValues}\n showControls={this.props.showControls}\n />\n );\n }\n\n @action.bound\n private onChange(values: { value: string }[]) {\n if (this.props.onColumnToggled) {\n this.props.onColumnToggled(values.map(o => o.value));\n }\n }\n}\n\nexport default ColumnSelector;\n","import classNames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport styles from './filterResetPanel.module.scss';\n\ntype FilterResetPanelProps = {\n resetFilters: () => void;\n filterInfo?: JSX.Element | string;\n className?: string;\n buttonText?: string;\n buttonClass?: string;\n};\n\n@observer\nexport class FilterResetPanel extends React.Component<\n FilterResetPanelProps,\n {}\n> {\n public static defaultProps: Partial<FilterResetPanelProps> = {\n buttonText: 'Show all',\n buttonClass: classNames('btn', 'btn-secondary', 'btn-sm'),\n className: classNames(\n 'alert',\n 'alert-success',\n styles.filterResetPanel\n ),\n };\n\n public render() {\n return (\n <div className={this.props.className}>\n <span style={{ verticalAlign: 'middle' }}>\n {this.props.filterInfo}\n <button\n className={this.props.buttonClass}\n style={{ cursor: 'pointer', marginLeft: 6 }}\n onClick={this.props.resetFilters}\n >\n {this.props.buttonText}\n </button>\n </span>\n </div>\n );\n }\n}\n\nexport default FilterResetPanel;\n","export enum DataFilterType {\n ONCOKB = 'oncokb',\n HOTSPOT = 'hotspot',\n POSITION = 'position',\n MUTATION = 'mutation',\n CANCER_TYPE = 'cancerType',\n PROTEIN_IMPACT_TYPE = 'proteinImpactType',\n MUTATION_STATUS = 'mutationStatus',\n}\n\nexport type DataFilter<T = any> = {\n id?: string;\n type: string;\n values: T[];\n};\n","import {\n getProteinImpactType,\n ProteinImpactType,\n} from 'cbioportal-frontend-commons';\nimport { Mutation } from 'cbioportal-utils';\nimport _ from 'lodash';\n\nimport { MutationFilter, MutationFilterValue } from '../filter/MutationFilter';\nimport { MutationStatusFilter } from '../filter/MutationStatusFilter';\nimport { PositionFilter } from '../filter/PositionFilter';\nimport { ProteinImpactTypeFilter } from '../filter/ProteinImpactTypeFilter';\nimport { NumericalFilterValue } from '../filter/NumericalFilter';\nimport { CategoricalFilterValue } from '../filter/CategoricalFilter';\nimport DataStore from '../model/DataStore';\nimport { DataFilter, DataFilterType } from '../model/DataFilter';\nimport { ApplyFilterFn } from '../model/FilterApplier';\n\nexport const TEXT_INPUT_FILTER_ID = '_mutationTableTextInputFilter_';\n\nexport function updatePositionSelectionFilters(\n dataStore: DataStore,\n position: number,\n isMultiSelect: boolean = false,\n defaultFilters: DataFilter[] = []\n) {\n const currentlySelected = dataStore.isPositionSelected(position);\n let selectedPositions: number[] = [];\n\n if (isMultiSelect) {\n // we need to keep previous positions if shift pressed,\n // but we still want to clear other filters tied with these positions\n selectedPositions = findAllUniquePositions(dataStore.selectionFilters);\n\n // remove current position if already selected\n if (currentlySelected) {\n selectedPositions = _.without(selectedPositions, position);\n }\n }\n\n // add current position into list if not selected\n if (!currentlySelected) {\n selectedPositions.push(position);\n }\n\n const positionFilter = {\n type: DataFilterType.POSITION,\n values: selectedPositions,\n };\n // we want to keep other filters (filters not related to positions) as is\n const otherFilters = dataStore.selectionFilters.filter(\n f => f.type !== DataFilterType.POSITION\n );\n\n // reset filters\n dataStore.clearSelectionFilters();\n dataStore.setSelectionFilters([\n positionFilter,\n ...defaultFilters,\n ...otherFilters,\n ]);\n}\n\nexport function updatePositionHighlightFilters(\n dataStore: DataStore,\n positions: number[],\n defaultFilters: DataFilter[] = []\n) {\n dataStore.clearHighlightFilters();\n\n const positionFilter = {\n type: DataFilterType.POSITION,\n values: positions,\n };\n dataStore.setHighlightFilters([...defaultFilters, positionFilter]);\n}\n\nexport function updatePositionRangeHighlightFilters(\n dataStore: DataStore,\n startPosition: number,\n endPosition: number,\n defaultFilters: DataFilter[] = []\n) {\n const positions: number[] = [];\n\n for (let i = startPosition; i <= endPosition; i++) {\n positions.push(i);\n }\n\n updatePositionHighlightFilters(dataStore, positions, defaultFilters);\n}\n\nexport function findAllUniquePositions(filters: DataFilter[]): number[] {\n return _.uniq(\n _.flatten(\n filters\n // pick only position filters\n .filter(f => f.type === DataFilterType.POSITION)\n // we need to spread f.values, since it might be an observable mobx array\n // (mobx observable arrays does not play well with some array functions)\n .map(f => [...f.values])\n )\n );\n}\n\nexport function indexPositions(\n filters: DataFilter[]\n): { [position: string]: { position: number } } {\n return _.keyBy(\n findAllUniquePositions(filters).map(p => ({ position: p })),\n 'position'\n );\n}\n\nexport function includesSearchTextIgnoreCase(\n value?: string,\n searchText?: string\n) {\n return (\n searchText &&\n (value || '').toLowerCase().includes(searchText.toLowerCase())\n );\n}\n\nexport function findTextInputFilter(dataFilters: DataFilter[]) {\n return dataFilters.find(f => f.id === TEXT_INPUT_FILTER_ID);\n}\n\nexport function findNonTextInputFilters(dataFilters: DataFilter[]) {\n return dataFilters.filter(f => f.id !== TEXT_INPUT_FILTER_ID);\n}\n\nexport function findOneMutationFilterValue(filter: MutationFilter) {\n return filter.values.length > 0 ? _.values(filter.values[0])[0] : undefined;\n}\n\nexport function applyDefaultPositionFilter(\n filter: PositionFilter,\n mutation: Mutation\n) {\n // const positions: {[position: string]: {position: number}} = indexPositions([filter]);\n // return !positions || !!positions[mutation.proteinPosStart+\"\"];\n\n return filter.values.includes(mutation.proteinPosStart);\n}\n\nexport function applyDefaultProteinImpactTypeFilter(\n filter: ProteinImpactTypeFilter,\n mutation: Mutation\n) {\n return filter.values.includes(\n getProteinImpactType(mutation.mutationType || 'other')\n );\n}\n\nexport function applyDefaultMutationStatusFilter(\n filter: MutationStatusFilter,\n mutation: Mutation\n) {\n return (\n mutation.mutationStatus !== undefined &&\n _.some(\n filter.values,\n value =>\n value.toLowerCase() === mutation.mutationStatus!.toLowerCase()\n )\n );\n}\n\nexport function applyDefaultMutationFilter(\n filter: MutationFilter,\n mutation: Mutation\n) {\n const filterPredicates = filter.values.map((value: MutationFilterValue) => {\n const valuePredicates = Object.keys(value).map(key =>\n includesSearchTextIgnoreCase(\n (mutation as any)[key]\n ? (mutation as any)[key].toString()\n : undefined,\n (value as any)[key] ? (value as any)[key.toString()] : undefined\n )\n );\n\n // all predicates should be true in order for a match with a single MutationFilterValue\n // (multiple values within the same MutationFilterValue are subject to AND)\n return !valuePredicates.includes(false);\n });\n\n // a single true within a set of MutationFilterValues is a match for the entire filter\n // (multiple MutationFilterValues within the same MutationFilter are subject to OR)\n return filterPredicates.includes(true);\n}\n\nexport function groupDataByGroupFilters(\n groupFilters: { group: string; filter: DataFilter }[],\n sortedFilteredData: any[],\n applyFilter: ApplyFilterFn\n) {\n return groupFilters.map(groupFilter => ({\n group: groupFilter.group,\n data: sortedFilteredData.filter(\n // TODO simplify array flatten if possible\n m => applyFilter(groupFilter.filter, _.flatten([m])[0])\n ),\n }));\n}\n\nexport function groupDataByProteinImpactType(sortedFilteredData: any[]) {\n const filters = Object.values(ProteinImpactType).map(value => ({\n group: value,\n filter: {\n type: DataFilterType.PROTEIN_IMPACT_TYPE,\n values: [value],\n },\n }));\n\n const groupedData = groupDataByGroupFilters(\n filters,\n sortedFilteredData,\n applyDefaultProteinImpactTypeFilter\n );\n\n return _.keyBy(groupedData, d => d.group);\n}\n\nexport function onFilterOptionSelect(\n selectedValues:\n | string[]\n | NumericalFilterValue[]\n | CategoricalFilterValue[],\n allValuesSelected: boolean,\n dataStore: DataStore,\n dataFilterType: string,\n dataFilterId: string\n) {\n // all other filters except the current filter with the given data filter id\n const otherFilters = dataStore.dataFilters.filter(\n (f: DataFilter) => f.id !== dataFilterId\n );\n\n if (allValuesSelected) {\n // if all values are selected just remove the existing filter with the given data filter id\n // (assuming that no filtering required if everything is selected)\n dataStore.setDataFilters(otherFilters);\n } else {\n const dataFilter = {\n id: dataFilterId,\n type: dataFilterType,\n values: selectedValues,\n };\n\n // replace the existing data filter wrt the current selection (other filters + new data filter)\n dataStore.setDataFilters([...otherFilters, dataFilter]);\n }\n}\n\nexport function applyDataFiltersOnDatum(\n datum: any,\n dataFilters: DataFilter[],\n applyFilter: ApplyFilterFn\n) {\n return (\n dataFilters.length > 0 &&\n !dataFilters\n .map(dataFilter => applyFilter(dataFilter, datum))\n .includes(false)\n );\n}\n\nexport function applyDataFilters(\n data: any[],\n dataFilters: DataFilter[],\n applyFilter: ApplyFilterFn\n) {\n return dataFilters.length > 0\n ? data.filter(m => applyDataFiltersOnDatum(m, dataFilters, applyFilter))\n : data;\n}\n","import autobind from 'autobind-decorator';\nimport * as React from 'react';\nimport { FormEvent } from 'react';\n\ninterface ISearchBoxProps {\n onChange?: (input: string) => void;\n filterInputRef?: (input: HTMLInputElement) => void;\n placeholder?: string;\n searchIconClassName?: string;\n boxHeight?: number;\n}\n\nexport class SearchBox extends React.Component<ISearchBoxProps> {\n public static defaultProps = {\n placeholder: '',\n searchIconClassName: 'fa fa-search form-control-feedback',\n boxHeight: 33.5,\n };\n\n public render() {\n return (\n <div className=\"input-group\" style={{ display: 'flex' }}>\n <input\n type=\"text\"\n onInput={this.onChange}\n ref={this.props.filterInputRef}\n className=\"form-control\"\n placeholder={this.props.placeholder}\n aria-label=\"Search\"\n style={{ height: this.props.boxHeight }}\n />\n <div\n className=\"input-group-append\"\n style={{ height: this.props.boxHeight }}\n >\n <button\n className=\"btn btn-outline-secondary\"\n type=\"button\"\n disabled={true}\n >\n <i className=\"fa fa-search\" />\n </button>\n </div>\n </div>\n );\n }\n\n @autobind\n private onChange(event: FormEvent<any>) {\n if (this.props.onChange) {\n this.props.onChange(event.currentTarget.value);\n }\n }\n}\n\nexport default SearchBox;\n","import _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport {\n ColumnSelector,\n ColumnSelectorProps,\n ColumnVisibilityDef,\n} from './ColumnSelector';\nimport { SearchBox } from './SearchBox';\n\ntype DataTableToolbarProps = {\n showColumnVisibility?: boolean;\n visibilityToggle?: (selectedColumnIds: string[]) => void;\n columnVisibility?: ColumnVisibilityDef[];\n columnSelectorProps?: ColumnSelectorProps;\n showSearchBox?: boolean;\n onSearch?: (searchText: string) => void;\n filterInputRef?: (input: HTMLInputElement) => void;\n searchDelay?: number;\n searchPlaceHolder?: string;\n info?: JSX.Element;\n};\n\n@observer\nexport class DataTableToolbar extends React.Component<\n DataTableToolbarProps,\n {}\n> {\n public static defaultProps: Partial<DataTableToolbarProps> = {\n showColumnVisibility: true,\n showSearchBox: true,\n searchDelay: 400,\n };\n\n protected get searchBoxMargin() {\n return this.props.showColumnVisibility ? 5 : 'auto';\n }\n\n public render() {\n return (\n <div\n className=\"dataTableMainToolbar\"\n style={{\n paddingBottom: '0.4rem',\n display: 'flex',\n alignItems: 'flex-end',\n }}\n >\n {this.props.info}\n {this.props.showColumnVisibility && (\n <div\n className=\"small\"\n style={{ width: 150, marginLeft: 'auto' }}\n >\n <ColumnSelector\n columnVisibility={this.props.columnVisibility}\n onColumnToggled={this.props.visibilityToggle}\n {...this.props.columnSelectorProps}\n />\n </div>\n )}\n {this.props.showSearchBox && (\n <div\n className=\"small\"\n style={{ width: 200, marginLeft: this.searchBoxMargin }}\n >\n <SearchBox\n placeholder={this.props.searchPlaceHolder}\n onChange={\n this.props.onSearch\n ? _.debounce(\n this.props.onSearch,\n this.props.searchDelay\n )\n : this.props.onSearch\n }\n filterInputRef={this.props.filterInputRef}\n />\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default DataTableToolbar;\n","import autobind from 'autobind-decorator';\nimport {\n resolveColumnVisibility,\n resolveColumnVisibilityByColumnDefinition,\n} from 'cbioportal-frontend-commons';\nimport { getRemoteDataGroupStatus, RemoteData } from 'cbioportal-utils';\nimport classnames from 'classnames';\nimport _ from 'lodash';\nimport {\n action,\n computed,\n IReactionDisposer,\n IReactionPublic,\n observable,\n reaction,\n makeObservable,\n} from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport ReactTable, { Column, RowInfo, TableProps } from 'react-table';\n\nimport { DataFilter } from '../../model/DataFilter';\nimport { DataStore } from '../../model/DataStore';\nimport { TEXT_INPUT_FILTER_ID } from '../../util/FilterUtils';\nimport { ColumnSelectorProps, ColumnVisibilityDef } from './ColumnSelector';\nimport { DataTableToolbar } from './DataTableToolbar';\n\nexport type DataTableColumn<T> = Column<T> & {\n name?: string;\n togglable?: boolean;\n searchable?: boolean;\n};\n\nexport enum ColumnSortDirection {\n ASC = 'asc',\n DESC = 'desc',\n}\n\nexport type ColumnSort = {\n column: string;\n sortDirection?: ColumnSortDirection;\n};\n\nexport type DataTableProps<T> = {\n data?: T[];\n dataStore?: DataStore;\n columns?: DataTableColumn<T>[];\n className?: string;\n reactTableProps?: Partial<TableProps<T>>;\n\n initialSort?: ColumnSort[];\n initialSortRemoteData?: (RemoteData<any> | undefined)[];\n initialItemsPerPage?: number;\n\n highlightColorLight?: string;\n highlightColorDark?: string;\n\n showColumnVisibility?: boolean;\n showSearchBox?: boolean;\n onSearch?: (\n input: string,\n visibleSearchableColumns: DataTableColumn<T>[]\n ) => void;\n searchDelay?: number;\n searchPlaceholder?: string;\n info?: JSX.Element;\n columnVisibility?: { [columnId: string]: boolean };\n columnSelectorProps?: ColumnSelectorProps;\n};\n\nexport function getInitialSortDataStatus(\n initialSortRemoteData?: (RemoteData<any> | undefined)[]\n) {\n return initialSortRemoteData\n ? getRemoteDataGroupStatus(..._.compact(initialSortRemoteData))\n : 'complete';\n}\n\nfunction getColumnVisibilityDef<T>(\n columns: DataTableColumn<T>[],\n columnVisibility: { [columnId: string]: boolean }\n) {\n const colVisProp: ColumnVisibilityDef[] = [];\n\n (columns || [])\n .filter(column => column.id)\n .forEach(column =>\n colVisProp.push({\n id: column.id!,\n name: column.name || column.id!,\n visible: columnVisibility[column.id!],\n togglable:\n column.togglable !== undefined ? column.togglable : true,\n })\n );\n\n return colVisProp;\n}\n\nexport default class DataTable<T> extends React.Component<\n DataTableProps<T>,\n {}\n> {\n public static defaultProps = {\n data: [],\n initialItemsPerPage: 10,\n highlightColorLight: '#B0BED9',\n highlightColorDark: '#9FAFD1',\n };\n\n private filterInput: HTMLInputElement | undefined;\n private filterInputReaction: IReactionDisposer | undefined;\n\n // this keeps the state of the latest action (latest user selection)\n @observable\n private _columnVisibilityOverride:\n | { [columnId: string]: boolean }\n | undefined;\n\n @observable\n private expanded: { [index: number]: boolean } = {};\n\n constructor(props: DataTableProps<T>) {\n super(props);\n\n makeObservable<\n DataTable<T>,\n | '_columnVisibilityOverride'\n | 'expanded'\n | 'onSearch'\n | 'onVisibilityToggle'\n | 'updateColumnVisibility'\n | 'onExpandedChange'\n | 'resetExpander'\n >(this);\n\n this.filterInputReaction = this.props.dataStore\n ? this.createFilterInputResetReaction(this.props.dataStore)\n : undefined;\n }\n\n @computed\n get tableData(): T[] | undefined {\n let data = this.props.data;\n\n if (this.props.dataStore) {\n data =\n this.props.dataStore.sortedFilteredSelectedData.length > 0\n ? this.props.dataStore.sortedFilteredSelectedData\n : this.props.dataStore.sortedFilteredData;\n }\n\n return data;\n }\n\n @computed\n get columns(): DataTableColumn<T>[] {\n return (this.props.columns || []).map(c => ({\n ...c,\n show: c.id ? this.columnVisibility[c.id] : c.expander || c.show,\n }));\n }\n\n @computed\n get needToCustomizeRowStyle() {\n return this.props.dataStore && this.props.dataStore.highlightFilters;\n }\n\n @computed\n get showPagination() {\n const initialItemsPerPage = this.props.initialItemsPerPage;\n\n return (\n this.tableData !== undefined &&\n this.tableData.length > initialItemsPerPage!\n );\n }\n\n @computed\n get initialSortDataStatus() {\n return getInitialSortDataStatus(this.props.initialSortRemoteData);\n }\n\n @computed\n get defaultSorted() {\n // we need to wait for the async data to complete,\n // otherwise initial sort won't work\n if (\n this.props.initialSort === undefined ||\n this.initialSortDataStatus === 'pending'\n ) {\n return undefined;\n } else {\n return this.props.initialSort.map(s => ({\n id: s.column,\n desc: s.sortDirection !== ColumnSortDirection.ASC, // default: DESC\n }));\n }\n }\n\n @computed\n public get columnVisibility(): { [columnId: string]: boolean } {\n return resolveColumnVisibility(\n this.columnVisibilityByColumnDefinition,\n this.props.columnVisibility,\n this._columnVisibilityOverride\n );\n }\n\n @computed\n public get columnVisibilityDef(): ColumnVisibilityDef[] {\n return getColumnVisibilityDef(\n this.props.columns || [],\n this.columnVisibility\n );\n }\n\n @computed\n public get columnVisibilityByColumnDefinition() {\n return resolveColumnVisibilityByColumnDefinition(\n (this.props.columns || [])\n .filter(c => c.id)\n .map(c => ({\n name: c.name || c.id!,\n id: c.id,\n visible: c.show,\n }))\n );\n }\n\n public render() {\n return (\n <div className=\"cbioportal-frontend\">\n <DataTableToolbar\n visibilityToggle={this.onVisibilityToggle}\n showSearchBox={this.props.showSearchBox}\n onSearch={this.onSearch}\n filterInputRef={this.filterInputRef}\n searchDelay={this.props.searchDelay}\n searchPlaceHolder={this.props.searchPlaceholder}\n info={this.props.info}\n showColumnVisibility={this.props.showColumnVisibility}\n columnVisibility={this.columnVisibilityDef}\n columnSelectorProps={this.props.columnSelectorProps}\n />\n <div\n className={classnames(\n this.props.className,\n 'cbioportal-frontend',\n 'default-data-table'\n )}\n >\n <ReactTable\n data={this.tableData}\n columns={this.columns}\n getTrProps={\n this.needToCustomizeRowStyle\n ? this.getTrProps\n : undefined\n }\n defaultSorted={this.defaultSorted}\n defaultPageSize={this.props.initialItemsPerPage}\n showPagination={this.showPagination}\n className=\"-striped -highlight\"\n previousText=\"<\"\n nextText=\">\"\n expanded={this.expanded}\n onExpandedChange={this.onExpandedChange}\n onPageChange={this.resetExpander}\n onPageSizeChange={this.resetExpander}\n onSortedChange={this.resetExpander}\n minRows={1}\n {...this.props.reactTableProps}\n />\n </div>\n </div>\n );\n }\n\n componentWillReceiveProps(nextProps: Readonly<DataTableProps<T>>) {\n if (nextProps.dataStore) {\n this.createExpanderResetReaction(nextProps.dataStore);\n }\n }\n\n componentWillUnmount(): void {\n if (this.filterInputReaction) {\n this.filterInputReaction();\n }\n }\n\n /**\n * This reaction is to reset expander component every time the data or selection filters update.\n * It would be cleaner if we could do this with a ReactTable callback (something like onDataChange),\n * but no such callback exists.\n */\n protected createExpanderResetReaction(dataStore: DataStore) {\n return reaction(\n () => [dataStore.selectionFilters, dataStore.dataFilters],\n (\n filters: DataFilter[][],\n prev: DataFilter[][],\n disposer: IReactionPublic\n ) => {\n if (filters.length > 0) {\n this.resetExpander();\n }\n disposer.dispose();\n }\n );\n }\n\n /**\n * This reaction is to reset search input box content when text input filter is reset.\n * TODO if possible directly render the value in the actual search box component instead of adding this reaction\n */\n protected createFilterInputResetReaction(dataStore: DataStore) {\n return reaction(\n () => dataStore.dataFilters,\n dataFilters => {\n if (this.filterInput) {\n const inputFilter = dataFilters.find(\n f => f.id === TEXT_INPUT_FILTER_ID\n );\n\n // reset the input text value in case of no text input filter\n if (!inputFilter) {\n this.filterInput.value = '';\n }\n }\n }\n );\n }\n\n @autobind\n protected getTrProps(state: any, row?: RowInfo) {\n return {\n style: {\n background: state && row && this.getRowBackground(row),\n },\n };\n }\n\n @autobind\n protected filterInputRef(input: HTMLInputElement) {\n this.filterInput = input;\n }\n\n @action.bound\n protected onSearch(searchText: string) {\n if (this.props.onSearch) {\n this.props.onSearch(\n searchText,\n this.columns.filter(c => c.searchable && c.show)\n );\n }\n }\n\n @action.bound\n protected onVisibilityToggle(selectedColumnIds: string[]) {\n // reset all column visibility\n Object.keys(this.columnVisibility).forEach(columnId =>\n this.updateColumnVisibility(columnId, false)\n );\n\n // make selected columns visible\n selectedColumnIds.forEach(columnId =>\n this.updateColumnVisibility(columnId, true)\n );\n }\n\n @action.bound\n protected updateColumnVisibility(id: string, visible: boolean) {\n // no previous action, need to init\n if (this._columnVisibilityOverride === undefined) {\n this._columnVisibilityOverride = resolveColumnVisibility(\n this.columnVisibilityByColumnDefinition,\n this.props.columnVisibility\n );\n }\n\n // update visibility\n if (\n this._columnVisibilityOverride &&\n this._columnVisibilityOverride[id] !== undefined\n ) {\n this._columnVisibilityOverride[id] = visible;\n }\n }\n\n @action.bound\n protected onExpandedChange(expanded: { [index: number]: boolean }) {\n this.expanded = expanded;\n }\n\n @action.bound\n protected resetExpander() {\n this.expanded = {};\n }\n\n protected isRowHighlighted(datum: T) {\n return (\n this.props.dataStore &&\n this.props.dataStore.dataHighlightFilter(datum)\n );\n }\n\n protected getRowBackground(row: RowInfo) {\n let background: string | undefined;\n\n if (this.isRowHighlighted(row.original)) {\n background =\n row.viewIndex % 2 === 1\n ? this.props.highlightColorDark\n : this.props.highlightColorLight;\n }\n\n return background;\n }\n}\n","import {\n DefaultTooltip,\n getCanonicalMutationType,\n} from 'cbioportal-frontend-commons';\nimport { Mutation } from 'cbioportal-utils';\nimport * as React from 'react';\n\nimport styles from './mutationType.module.scss';\n\ntype MutationTypeProps = {\n mutation: Mutation;\n};\n\ntype MutationTypeFormat = {\n label?: string;\n className: string;\n};\n\nexport const MAIN_MUTATION_TYPE_MAP: { [key: string]: MutationTypeFormat } = {\n missense: {\n label: 'Missense',\n className: 'missense-mutation',\n },\n inframe: {\n label: 'IF',\n className: 'inframe-mutation',\n },\n truncating: {\n label: 'Truncating',\n className: 'trunc-mutation',\n },\n nonsense: {\n label: 'Nonsense',\n className: 'trunc-mutation',\n },\n nonstop: {\n label: 'Nonstop',\n className: 'trunc-mutation',\n },\n nonstart: {\n label: 'Nonstart',\n className: 'trunc-mutation',\n },\n frameshift: {\n label: 'FS',\n className: 'trunc-mutation',\n },\n frame_shift_del: {\n label: 'FS del',\n className: 'trunc-mutation',\n },\n frame_shift_ins: {\n label: 'FS ins',\n className: 'trunc-mutation',\n },\n in_frame_ins: {\n label: 'IF ins',\n className: 'inframe-mutation',\n },\n in_frame_del: {\n label: 'IF del',\n className: 'inframe-mutation',\n },\n splice_site: {\n label: 'Splice',\n className: 'splice',\n },\n fusion: {\n label: 'Fusion',\n className: 'fusion',\n },\n silent: {\n label: 'Silent',\n className: 'other-mutation',\n },\n other: {\n label: 'Other',\n className: 'other-mutation',\n },\n};\n\n/**\n * Determines the display value by using the impact field.\n *\n * @param mutation column formatter data\n * @returns {string} mutation assessor text value\n */\nfunction getDisplayValue(mutation: Mutation): string {\n const entry: MutationTypeFormat | undefined = getMapEntry(mutation);\n\n // first, try to find a mapped value\n if (entry && entry.label) {\n return entry.label;\n }\n // if no mapped value, then return the text value as is\n else {\n return mutation.mutationType || '';\n }\n}\n\nfunction getClassName(mutation: Mutation): string {\n const value: MutationTypeFormat | undefined = getMapEntry(mutation);\n\n if (value && value.className) {\n return value.className;\n }\n // for unmapped values, use the \"other\" style\n else {\n return MAIN_MUTATION_TYPE_MAP['other'].className;\n }\n}\n\nfunction getMapEntry(mutation: Mutation) {\n const mutationType = mutation.mutationType;\n\n if (mutationType) {\n return MAIN_MUTATION_TYPE_MAP[getCanonicalMutationType(mutationType)];\n } else {\n return undefined;\n }\n}\n\nexport default class MutationType extends React.Component<\n MutationTypeProps,\n {}\n> {\n public render() {\n // use text for all purposes (display, sort, filter)\n const text = getDisplayValue(this.props.mutation);\n const className = getClassName(this.props.mutation);\n\n // use actual value for tooltip\n const toolTip = this.props.mutation.mutationType;\n\n let content = (\n <span className={(styles as any)[className]}>{text}</span>\n );\n\n // add tooltip only if the display value differs from the actual text value!\n if (toolTip && toolTip.toLowerCase() !== text.toLowerCase()) {\n content = (\n <DefaultTooltip\n overlay={<span>{toolTip}</span>}\n placement=\"left\"\n >\n {content}\n </DefaultTooltip>\n );\n }\n\n return content;\n }\n}\n","import { Mutation } from 'cbioportal-utils';\nimport _ from 'lodash';\nimport * as React from 'react';\n\nimport ColumnHeader from '../column/ColumnHeader';\nimport { Column } from 'react-table';\nimport ProteinChange, {\n proteinChangeSortMethod,\n} from '../column/ProteinChange';\nimport { annotationSortMethod } from '../column/Annotation';\nimport { gnomadSortMethod } from '../column/Gnomad';\nimport { clinvarSortMethod } from '../column/ClinvarInterpretation';\nimport MutationType from '../column/MutationType';\nimport MutationStatus from '../column/MutationStatus';\nimport { dbsnpSortMethod } from '../column/Dbsnp';\nimport { hgvscSortMethod } from '../column/Hgvsc';\nimport { hgvsgSortMethod } from '../column/Hgvsg';\nimport { signalSortMethod } from '../column/Signal';\n\nexport enum MutationColumn {\n PROTEIN_CHANGE = 'proteinChange',\n ANNOTATION = 'annotation',\n MUTATION_STATUS = 'mutationStatus',\n MUTATION_TYPE = 'mutationType',\n CHROMOSOME = 'chromosome',\n START_POSITION = 'startPosition',\n END_POSITION = 'endPosition',\n REFERENCE_ALLELE = 'referenceAllele',\n VARIANT_ALLELE = 'variantAllele',\n HGVSG = 'hgvsg',\n HGVSC = 'hgvsc',\n GNOMAD = 'gnomad',\n CLINVAR = 'clinvar',\n DBSNP = 'dbsnp',\n SIGNAL = 'signal',\n}\n\nexport enum MutationColumnName {\n PROTEIN_CHANGE = 'Protein Change',\n ANNOTATION = 'Annotation',\n MUTATION_STATUS = 'Mutation Status',\n MUTATION_TYPE = 'Mutation Type',\n CHROMOSOME = 'Chromosome',\n START_POSITION = 'Start Pos',\n END_POSITION = 'End Pos',\n REFERENCE_ALLELE = 'Ref',\n VARIANT_ALLELE = 'Var',\n HGVSG = 'HGVSg',\n HGVSC = 'HGVSc',\n GNOMAD = 'gnomAD',\n CLINVAR = 'ClinVar',\n DBSNP = 'dbSNP',\n SIGNAL = 'SIGNAL',\n}\n\nexport function rightAlignedCell(cellProps: any) {\n return <span className=\"pull-right mr-3\">{cellProps.value}</span>;\n}\n\nexport const MUTATION_COLUMN_HEADERS = {\n [MutationColumn.PROTEIN_CHANGE]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-left\">\n {MutationColumnName.PROTEIN_CHANGE}\n </span>\n }\n />\n ),\n [MutationColumn.ANNOTATION]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-left\">\n {MutationColumnName.ANNOTATION}\n </span>\n }\n />\n ),\n [MutationColumn.MUTATION_STATUS]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-left\">\n {MutationColumnName.MUTATION_STATUS}\n </span>\n }\n />\n ),\n [MutationColumn.MUTATION_TYPE]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-left\">\n {MutationColumnName.MUTATION_TYPE}\n </span>\n }\n />\n ),\n [MutationColumn.CHROMOSOME]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-right mr-3\">\n {MutationColumnName.CHROMOSOME}\n </span>\n }\n />\n ),\n [MutationColumn.START_POSITION]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-right mr-3\">\n {MutationColumnName.START_POSITION}\n </span>\n }\n />\n ),\n [MutationColumn.END_POSITION]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-right mr-3\">\n {MutationColumnName.END_POSITION}\n </span>\n }\n />\n ),\n [MutationColumn.REFERENCE_ALLELE]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-left\">\n {MutationColumnName.REFERENCE_ALLELE}\n </span>\n }\n overlay={<span>Reference Allele</span>}\n />\n ),\n [MutationColumn.VARIANT_ALLELE]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-left\">\n {MutationColumnName.VARIANT_ALLELE}\n </span>\n }\n overlay={<span>Variant Allele</span>}\n />\n ),\n [MutationColumn.HGVSG]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-left\">{MutationColumnName.HGVSG}</span>\n }\n />\n ),\n [MutationColumn.HGVSC]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-left\">{MutationColumnName.HGVSC}</span>\n }\n />\n ),\n [MutationColumn.GNOMAD]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-right mr-3\">\n {MutationColumnName.GNOMAD}{' '}\n <i className=\"fa fa-info-circle\" />\n </span>\n }\n overlay={\n <span>\n <a\n href=\"https://gnomad.broadinstitute.org/\"\n target=\"_blank\"\n >\n gnomAD\n </a>{' '}\n population allele frequencies. Overall population allele\n frequency is shown. Hover over a frequency to see the\n frequency for each specific population.\n </span>\n }\n />\n ),\n [MutationColumn.CLINVAR]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-left\">\n {MutationColumnName.CLINVAR}{' '}\n <i className=\"fa fa-info-circle\" />\n </span>\n }\n overlay={\n <span>\n <a\n href=\"https://www.ncbi.nlm.nih.gov/clinvar/\"\n target=\"_blank\"\n >\n ClinVar\n </a>{' '}\n aggregates information about genomic variation and its\n relationship to human health.\n </span>\n }\n />\n ),\n [MutationColumn.DBSNP]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-right mr-3\">\n {MutationColumnName.DBSNP}{' '}\n <i className=\"fa fa-info-circle\" />\n </span>\n }\n overlay={\n <span>\n The Single Nucleotide Polymorphism Database (\n <a href=\"https://www.ncbi.nlm.nih.gov/snp/\" target=\"_blank\">\n dbSNP\n </a>\n ) is a free public archive for genetic variation within and\n across different species.\n <br />\n NOTE: Currently only SNPs, single base deletions and\n insertions are supported.\n </span>\n }\n />\n ),\n [MutationColumn.SIGNAL]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-right mr-3\">\n {MutationColumnName.SIGNAL}{' '}\n <i className=\"fa fa-info-circle\" />\n </span>\n }\n overlay={\n <span>\n Prevalence of germline mutations in cancer patients from{' '}\n <a href=\"https://www.signaldb.org/\" target=\"_blank\">\n SIGNAL\n </a>\n </span>\n }\n />\n ),\n};\n\n/**\n * These default columns only include static props.\n * So, for some columns, like Annotation, no default accessor or Cell (render) properties included.\n */\nexport const MUTATION_COLUMNS_DEFINITION = {\n [MutationColumn.PROTEIN_CHANGE]: {\n id: MutationColumn.PROTEIN_CHANGE,\n name: MutationColumnName.PROTEIN_CHANGE,\n accessor: MutationColumn.PROTEIN_CHANGE,\n searchable: true,\n Cell: (column: any) => <ProteinChange mutation={column.original} />,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.PROTEIN_CHANGE],\n sortMethod: proteinChangeSortMethod,\n },\n [MutationColumn.ANNOTATION]: {\n id: MutationColumn.ANNOTATION,\n name: MutationColumnName.ANNOTATION,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.ANNOTATION],\n sortMethod: annotationSortMethod,\n },\n [MutationColumn.MUTATION_TYPE]: {\n id: MutationColumn.MUTATION_TYPE,\n name: MutationColumnName.MUTATION_TYPE,\n accessor: MutationColumn.MUTATION_TYPE,\n searchable: true,\n Cell: (column: any) => <MutationType mutation={column.original} />,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.MUTATION_TYPE],\n },\n [MutationColumn.MUTATION_STATUS]: {\n id: MutationColumn.MUTATION_STATUS,\n name: MutationColumnName.MUTATION_STATUS,\n accessor: MutationColumn.MUTATION_STATUS,\n searchable: true,\n Cell: (column: any) => <MutationStatus mutation={column.original} />,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.MUTATION_STATUS],\n },\n [MutationColumn.CHROMOSOME]: {\n id: MutationColumn.CHROMOSOME,\n name: MutationColumnName.CHROMOSOME,\n accessor: MutationColumn.CHROMOSOME,\n searchable: true,\n Cell: rightAlignedCell,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.CHROMOSOME],\n show: false,\n },\n [MutationColumn.START_POSITION]: {\n id: MutationColumn.START_POSITION,\n name: MutationColumnName.START_POSITION,\n accessor: MutationColumn.START_POSITION,\n searchable: true,\n Cell: rightAlignedCell,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.START_POSITION],\n show: false,\n },\n [MutationColumn.END_POSITION]: {\n id: MutationColumn.END_POSITION,\n name: MutationColumnName.END_POSITION,\n accessor: MutationColumn.END_POSITION,\n searchable: true,\n Cell: rightAlignedCell,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.END_POSITION],\n show: false,\n },\n [MutationColumn.REFERENCE_ALLELE]: {\n id: MutationColumn.REFERENCE_ALLELE,\n name: MutationColumnName.REFERENCE_ALLELE,\n accessor: MutationColumn.REFERENCE_ALLELE,\n searchable: true,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.REFERENCE_ALLELE],\n show: false,\n },\n [MutationColumn.VARIANT_ALLELE]: {\n id: MutationColumn.VARIANT_ALLELE,\n name: MutationColumnName.VARIANT_ALLELE,\n accessor: MutationColumn.VARIANT_ALLELE,\n searchable: true,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.VARIANT_ALLELE],\n show: false,\n },\n [MutationColumn.HGVSG]: {\n id: MutationColumn.HGVSG,\n name: MutationColumnName.HGVSG,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.HGVSG],\n sortMethod: hgvsgSortMethod,\n },\n [MutationColumn.HGVSC]: {\n id: MutationColumn.HGVSC,\n name: MutationColumnName.HGVSC,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.HGVSC],\n sortMethod: hgvscSortMethod,\n },\n [MutationColumn.GNOMAD]: {\n id: MutationColumn.GNOMAD,\n name: MutationColumnName.GNOMAD,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.GNOMAD],\n sortMethod: gnomadSortMethod,\n },\n [MutationColumn.CLINVAR]: {\n id: MutationColumn.CLINVAR,\n name: MutationColumnName.CLINVAR,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.CLINVAR],\n sortMethod: clinvarSortMethod,\n show: false,\n },\n [MutationColumn.DBSNP]: {\n id: MutationColumn.DBSNP,\n name: MutationColumnName.DBSNP,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.DBSNP],\n sortMethod: dbsnpSortMethod,\n show: false,\n },\n [MutationColumn.SIGNAL]: {\n id: MutationColumn.SIGNAL,\n name: MutationColumnName.SIGNAL,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.SIGNAL],\n sortMethod: signalSortMethod,\n show: false,\n },\n};\n\nexport const DEFAULT_MUTATION_COLUMNS = [\n MUTATION_COLUMNS_DEFINITION[MutationColumn.PROTEIN_CHANGE],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.MUTATION_TYPE],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.MUTATION_STATUS],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.CHROMOSOME],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.START_POSITION],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.END_POSITION],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.REFERENCE_ALLELE],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.VARIANT_ALLELE],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.HGVSG],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.HGVSC],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.CLINVAR],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.GNOMAD],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.DBSNP],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.SIGNAL],\n];\n\nexport function mergeColumns(\n defaultColumns: Column<Partial<Mutation>>[],\n customColumns: Column<Partial<Mutation>>[]\n) {\n const merged: Column<Partial<Mutation>>[] = [];\n const overrides: Column<Partial<Mutation>>[] = [];\n\n defaultColumns.forEach(column => {\n const colOverride = customColumns.find(c => c.id === column.id);\n merged.push(colOverride || column);\n\n if (colOverride) {\n overrides.push(colOverride);\n }\n });\n\n return [...merged, ..._.difference(customColumns, overrides)];\n}\n","import {\n ICivicGeneIndex,\n ICivicVariantIndex,\n IHotspotIndex,\n IMyCancerGenomeData,\n IOncoKbData,\n getRemoteDataGroupStatus,\n MobxCache,\n Mutation,\n RemoteData,\n} from 'cbioportal-utils';\nimport { MyVariantInfo, VariantAnnotation } from 'genome-nexus-ts-api-client';\nimport { CancerGene } from 'oncokb-ts-api-client';\nimport _ from 'lodash';\nimport { action, computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { Column } from 'react-table';\n\nimport Annotation, { getAnnotationData } from '../column/Annotation';\nimport ClinvarInterpretation from '../column/ClinvarInterpretation';\nimport Dbsnp from '../column/Dbsnp';\nimport Gnomad from '../column/Gnomad';\nimport Hgvsc from '../column/Hgvsc';\nimport Hgvsg from '../column/Hgvsg';\nimport Signal, { getSignalData } from '../column/Signal';\nimport { getHgvscColumnData, getHgvsgColumnData } from '../column/HgvsHelper';\nimport { getMyVariantInfoData } from '../column/MyVariantInfoHelper';\nimport { MutationFilterValue } from '../../filter/MutationFilter';\nimport { DataFilterType } from '../../model/DataFilter';\nimport {\n findNonTextInputFilters,\n TEXT_INPUT_FILTER_ID,\n} from '../../util/FilterUtils';\nimport DataTable, {\n DataTableColumn,\n DataTableProps,\n} from '../dataTable/DataTable';\nimport { MutationColumn } from './MutationColumnHelper';\n\nimport './defaultMutationTable.scss';\nimport { getClinvarData } from '../clinvar/ClinvarHelper';\n\nexport type DefaultMutationTableProps = {\n hotspotData?: RemoteData<IHotspotIndex | undefined>;\n oncoKbData?: RemoteData<IOncoKbData | Error | undefined>;\n myCancerGenomeData?: IMyCancerGenomeData;\n oncoKbCancerGenes?: RemoteData<CancerGene[] | Error | undefined>;\n usingPublicOncoKbInstance: boolean;\n indexedMyVariantInfoAnnotations?: RemoteData<\n { [genomicLocation: string]: MyVariantInfo } | undefined\n >;\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >;\n selectedTranscriptId?: string;\n enableCivic?: boolean;\n civicGenes?: RemoteData<ICivicGeneIndex | undefined>;\n civicVariants?: RemoteData<ICivicVariantIndex | undefined>;\n pubMedCache?: MobxCache;\n columns: Column<Partial<Mutation>>[];\n appendColumns?: boolean;\n} & DataTableProps<Partial<Mutation>>;\n\n@observer\nclass DefaultMutationTableComponent extends DataTable<Partial<Mutation>> {}\n\n@observer\nexport default class DefaultMutationTable extends React.Component<\n DefaultMutationTableProps,\n {}\n> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n public static defaultProps = {\n initialSort: [{ column: MutationColumn.ANNOTATION }],\n appendColumns: true,\n };\n\n @computed\n get annotationColumnData() {\n return [\n this.props.oncoKbCancerGenes,\n this.props.hotspotData,\n this.props.oncoKbData,\n this.props.civicVariants,\n ];\n }\n\n @computed\n get annotationColumnDataStatus() {\n return getRemoteDataGroupStatus(\n ..._.compact(this.annotationColumnData)\n );\n }\n\n @computed\n get indexedVariantAnnotationDataStatus() {\n return this.props.indexedVariantAnnotations\n ? this.props.indexedVariantAnnotations.status\n : 'complete';\n }\n\n @computed\n get myVariantInfoAnnotationsDataStatus() {\n return this.props.indexedMyVariantInfoAnnotations\n ? this.props.indexedMyVariantInfoAnnotations.status\n : 'complete';\n }\n\n @computed\n get annotationColumnAccessor() {\n return this.annotationColumnDataStatus === 'pending'\n ? () => undefined\n : (mutation: Mutation) =>\n getAnnotationData(\n mutation,\n this.props.oncoKbCancerGenes,\n this.props.hotspotData,\n this.props.myCancerGenomeData,\n this.props.oncoKbData,\n this.props.usingPublicOncoKbInstance,\n this.props.civicGenes,\n this.props.civicVariants\n );\n }\n\n @computed\n get myVariantInfoAccessor() {\n return this.myVariantInfoAnnotationsDataStatus === 'pending'\n ? () => undefined\n : (mutation: Mutation) =>\n getMyVariantInfoData(\n mutation,\n this.props.indexedMyVariantInfoAnnotations\n );\n }\n\n @computed\n get hgvsgAccessor() {\n return this.indexedVariantAnnotationDataStatus === 'pending'\n ? () => undefined\n : (mutation: Mutation) => getHgvsgColumnData(mutation);\n }\n\n @computed\n get hgvscAccessor() {\n return this.indexedVariantAnnotationDataStatus === 'pending'\n ? () => undefined\n : (mutation: Mutation) =>\n getHgvscColumnData(\n mutation,\n this.props.indexedVariantAnnotations,\n this.props.selectedTranscriptId\n );\n }\n\n @computed\n get signalAccessor() {\n return this.indexedVariantAnnotationDataStatus === 'pending'\n ? () => undefined\n : (mutation: Mutation) =>\n getSignalData(mutation, this.props.indexedVariantAnnotations);\n }\n\n @computed\n get clinvarAccessor() {\n return this.indexedVariantAnnotationDataStatus === 'pending'\n ? () => undefined\n : (mutation: Mutation) =>\n getClinvarData(\n mutation,\n this.props.indexedVariantAnnotations\n );\n }\n\n @computed\n get initialSortRemoteData() {\n return this.props.initialSortRemoteData || this.annotationColumnData;\n }\n\n protected getDefaultColumnAccessor(columnKey: MutationColumn) {\n switch (columnKey) {\n case MutationColumn.ANNOTATION:\n return this.annotationColumnAccessor;\n case MutationColumn.HGVSG:\n return this.hgvsgAccessor;\n case MutationColumn.HGVSC:\n return this.hgvscAccessor;\n case MutationColumn.GNOMAD:\n return this.myVariantInfoAccessor;\n case MutationColumn.CLINVAR:\n return this.clinvarAccessor;\n case MutationColumn.DBSNP:\n return this.myVariantInfoAccessor;\n case MutationColumn.SIGNAL:\n return this.signalAccessor;\n default:\n return undefined;\n }\n }\n\n protected getDefaultColumnCellRender(columnKey: MutationColumn) {\n switch (columnKey) {\n case MutationColumn.ANNOTATION:\n return (column: any) => (\n <Annotation\n mutation={column.original}\n enableOncoKb={true}\n enableHotspot={true}\n enableCivic={this.props.enableCivic || false}\n enableMyCancerGenome={true}\n hotspotData={this.props.hotspotData}\n oncoKbData={this.props.oncoKbData}\n oncoKbCancerGenes={this.props.oncoKbCancerGenes}\n usingPublicOncoKbInstance={\n this.props.usingPublicOncoKbInstance\n }\n pubMedCache={this.props.pubMedCache}\n civicGenes={this.props.civicGenes}\n civicVariants={this.props.civicVariants}\n />\n );\n case MutationColumn.HGVSG:\n return (column: any) => <Hgvsg mutation={column.original} />;\n case MutationColumn.HGVSC:\n return (column: any) => (\n <Hgvsc\n mutation={column.original}\n indexedVariantAnnotations={\n this.props.indexedVariantAnnotations\n }\n selectedTranscriptId={this.props.selectedTranscriptId}\n />\n );\n case MutationColumn.GNOMAD:\n return (column: any) => (\n <Gnomad\n mutation={column.original}\n indexedMyVariantInfoAnnotations={\n this.props.indexedMyVariantInfoAnnotations\n }\n indexedVariantAnnotations={\n this.props.indexedVariantAnnotations\n }\n />\n );\n case MutationColumn.CLINVAR:\n return (column: any) => (\n <ClinvarInterpretation\n mutation={column.original}\n indexedVariantAnnotations={\n this.props.indexedVariantAnnotations\n }\n />\n );\n case MutationColumn.DBSNP:\n return (column: any) => (\n <Dbsnp\n mutation={column.original}\n indexedMyVariantInfoAnnotations={\n this.props.indexedMyVariantInfoAnnotations\n }\n />\n );\n case MutationColumn.SIGNAL:\n return (column: any) => (\n <Signal\n mutation={column.original}\n indexedVariantAnnotations={\n this.props.indexedVariantAnnotations\n }\n />\n );\n default:\n return undefined;\n }\n }\n\n @computed\n get columns() {\n return this.props.columns.map(c => {\n // we need to clone the column definition first,\n // directly modifying the props.columns breaks certain column functionality\n const column = { ...c };\n\n if (!column.accessor) {\n const defaultAccessor = this.getDefaultColumnAccessor(\n column.id as MutationColumn\n );\n if (defaultAccessor) {\n column.accessor = defaultAccessor;\n }\n }\n if (!column.Cell) {\n const defaultCellRender = this.getDefaultColumnCellRender(\n column.id as MutationColumn\n );\n if (defaultCellRender) {\n column.Cell = defaultCellRender;\n }\n }\n return column;\n });\n }\n\n public render() {\n return (\n <DefaultMutationTableComponent\n {...this.props}\n columns={this.columns}\n initialSortRemoteData={this.initialSortRemoteData}\n onSearch={this.onSearch}\n className=\"default-mutation-table\"\n />\n );\n }\n\n @action.bound\n protected onSearch(\n searchText: string,\n visibleSearchableColumns: DataTableColumn<Mutation>[]\n ) {\n if (this.props.dataStore) {\n // all other filters except current text input filter\n const otherFilters = findNonTextInputFilters(\n this.props.dataStore.dataFilters\n );\n\n let dataFilterValues: MutationFilterValue[] = [];\n\n if (searchText.length > 0) {\n dataFilterValues = visibleSearchableColumns.map(\n c => ({ [c.id!]: searchText } as MutationFilterValue)\n );\n\n const textInputFilter = {\n id: TEXT_INPUT_FILTER_ID,\n type: DataFilterType.MUTATION,\n values: dataFilterValues,\n };\n\n // replace current text input filter with the new one\n this.props.dataStore.setDataFilters([\n ...otherFilters,\n textInputFilter,\n ]);\n } else {\n // if no text input remove text input filter (set data filters to all other filters except input)\n this.props.dataStore.setDataFilters(otherFilters);\n }\n }\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { action, computed, observable, makeObservable } from 'mobx';\n\nimport $ from 'jquery';\n\nimport { DomainSpec } from '../../model/DomainSpec';\n\ntype DomainProps = {\n x: number;\n y: number;\n width: number;\n height: number;\n color: string;\n label?: string;\n labelColor?: string;\n hitzoneClassName?: string;\n spec: DomainSpec;\n};\n\n@observer\nexport default class Domain extends React.Component<DomainProps, {}> {\n @observable private textElt: SVGTextElement | null = null;\n @observable private isMounted: boolean = false;\n private handlers: any;\n\n constructor(props: DomainProps) {\n super(props);\n makeObservable<Domain, 'textElt' | 'isMounted' | 'displayText'>(this);\n this.state = {\n displayText: props.label || '',\n };\n this.handlers = {\n textRef: action((text: SVGTextElement | null) => {\n this.textElt = text;\n }),\n };\n }\n public get hitRect() {\n return {\n x: this.props.x,\n y: this.props.y,\n width: this.props.width,\n height: this.props.height,\n };\n }\n\n private get centerX() {\n return this.props.x + this.props.width / 2;\n }\n\n private get centerY() {\n return this.props.y + this.props.height / 2;\n }\n\n @action componentDidMount() {\n this.isMounted = true;\n }\n\n @computed private get displayText() {\n // Truncate text if necessary\n const label = this.props.label || '';\n if (!this.textElt || !this.isMounted) {\n return label;\n }\n\n if (!$(this.textElt).is(':visible')) {\n return label;\n }\n\n let substringLength = label.length;\n // Find the number of characters that will fit inside\n while (\n substringLength > 0 &&\n this.textElt.getSubStringLength(0, substringLength) >\n this.props.width\n ) {\n substringLength -= 1;\n }\n let displayText = label;\n if (substringLength < label.length) {\n // If we have to do shortening\n substringLength -= 2; // make room for ellipsis \"..\"\n if (substringLength <= 0) {\n // too short to show any string\n displayText = '';\n } else {\n // if it's long enough to show anything at all\n displayText = label.substr(0, substringLength) + '..';\n }\n }\n return displayText;\n }\n\n private makeTextElement(reference: boolean) {\n let props: any = {\n x: this.centerX,\n y: this.centerY,\n textAnchor: 'middle',\n dy: '0.3em',\n fill: this.props.labelColor || '#FFFFFF',\n style: {\n fontSize: '12px',\n fontFamily: 'arial',\n },\n };\n const text = reference ? this.props.label || '' : this.displayText;\n if (reference) {\n props.ref = this.handlers.textRef;\n props.visibility = 'hidden';\n props.style = { opacity: 0 };\n props.className = this.props.hitzoneClassName;\n }\n return <text {...props}>{text}</text>;\n }\n\n render() {\n return (\n <g>\n <rect\n x={this.props.x}\n y={this.props.y}\n width={this.props.width}\n height={this.props.height}\n fill={this.props.color}\n />\n {this.makeTextElement(true)}\n {this.makeTextElement(false)}\n <rect\n className={this.props.hitzoneClassName}\n x={this.props.x}\n y={this.props.y}\n width={this.props.width}\n height={this.props.height}\n style={{ opacity: 0 }}\n />\n </g>\n );\n }\n}\n","export enum LollipopPlacement {\n TOP,\n BOTTOM,\n}\n\nexport type LollipopSpec = {\n codon: number;\n count: number;\n group?: string;\n placement?: LollipopPlacement;\n label?: LollipopLabel;\n color?: string;\n tooltip?: JSX.Element;\n};\n\nexport type LollipopLabel = {\n text: string;\n textAnchor?: string;\n fontSize?: number;\n fontFamily?: string;\n show: boolean;\n};\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { computed, makeObservable, observable } from 'mobx';\n\nimport {\n LollipopLabel,\n LollipopPlacement,\n LollipopSpec,\n} from '../../model/LollipopSpec';\n\ntype LollipopProps = {\n x: number;\n stickBaseY: number;\n stickHeight: number;\n headRadius: number;\n hoverHeadRadius: number;\n headColor?: string;\n stickColor?: string;\n label?: LollipopLabel;\n hitzoneClassName?: string;\n spec: LollipopSpec;\n};\n\n@observer\nexport default class Lollipop extends React.Component<LollipopProps, {}> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n @observable public isHovered: boolean = false;\n\n @computed private get headRadius() {\n return this.isHovered\n ? this.props.hoverHeadRadius\n : this.props.headRadius;\n }\n\n @computed private get circleX() {\n return this.props.x;\n }\n\n @computed private get circleY() {\n return this.props.stickBaseY - this.props.stickHeight;\n }\n\n @computed private get textY() {\n if (this.props.spec.placement === LollipopPlacement.BOTTOM) {\n return (\n this.props.stickBaseY -\n this.props.stickHeight +\n this.props.headRadius +\n 5\n );\n } else {\n return (\n this.props.stickBaseY -\n this.props.stickHeight -\n this.props.headRadius -\n 5\n );\n }\n }\n\n @computed public get circleHitRect() {\n return {\n x: this.circleX - this.props.hoverHeadRadius,\n y: this.circleY - this.props.hoverHeadRadius,\n width: this.props.hoverHeadRadius * 2,\n height: this.props.hoverHeadRadius * 2,\n };\n }\n\n render() {\n let label = null;\n if (this.props.label) {\n label = (\n <text\n fill=\"#2E3436\"\n style={{\n fontSize: this.props.label.fontSize || 10,\n fontFamily: this.props.label.fontFamily || 'arial',\n }}\n textAnchor={this.props.label.textAnchor || 'middle'}\n dominantBaseline={\n this.props.spec.placement === LollipopPlacement.BOTTOM\n ? 'hanging'\n : 'baseline'\n }\n x={this.props.x}\n y={this.textY}\n >\n {this.props.label.show ? this.props.label.text : ''}\n </text>\n );\n }\n return (\n <g>\n <line\n strokeWidth=\"1\"\n stroke={this.props.stickColor || '#BABDB6'}\n x1={this.props.x}\n x2={this.props.x}\n y1={this.props.stickBaseY}\n y2={this.props.stickBaseY - this.props.stickHeight}\n />\n <circle\n stroke=\"#BABDB6\"\n strokeWidth=\"0.5\"\n fill={this.props.headColor || '#000000'}\n r={this.headRadius}\n cx={this.circleX}\n cy={this.circleY}\n />\n <circle\n className={this.props.hitzoneClassName}\n r={this.props.hoverHeadRadius}\n cx={this.circleX}\n cy={this.circleY}\n cursor=\"pointer\"\n style={{ opacity: 0 }}\n />\n {label}\n </g>\n );\n }\n}\n","import { observable, makeObservable } from 'mobx';\n\nimport LollipopPlotControlsConfig from '../model/LollipopPlotControlsConfig';\n\nexport class DefaultLollipopPlotControlsConfig\n implements LollipopPlotControlsConfig {\n @observable\n public bottomYMaxInput: number | undefined;\n\n @observable\n public legendShown = false;\n\n @observable\n public yMaxInput: number | undefined;\n\n constructor() {\n makeObservable(this);\n }\n}\n\nexport default DefaultLollipopPlotControlsConfig;\n","import {\n getTextWidth,\n longestCommonStartingSubstring,\n} from 'cbioportal-frontend-commons';\nimport { countMutationsByProteinChange, Mutation } from 'cbioportal-utils';\nimport { PfamDomainRange } from 'genome-nexus-ts-api-client';\n\nimport { LollipopSpec } from '../model/LollipopSpec';\n\nexport function lollipopLabelText(\n mutationsAtPosition: Mutation[],\n size?: number\n): string {\n const mutationCountsByProteinChange = countMutationsByProteinChange(\n mutationsAtPosition\n ).filter(c => c.proteinChange !== undefined);\n\n // only pick specified number of protein change values\n const proteinChanges = mutationCountsByProteinChange\n .map(m => m.proteinChange)\n .slice(0, size && size > 0 ? size : undefined);\n\n // sort alphabetically (to make it easier to find longest common starting substring)\n const proteinChangesSorted = proteinChanges.slice(0).sort();\n\n let startStr = '';\n if (proteinChangesSorted.length > 1) {\n // only need to compare first and last element of sorted string list to find longest common starting substring of all of them\n startStr = longestCommonStartingSubstring(\n proteinChangesSorted[0],\n proteinChangesSorted[proteinChangesSorted.length - 1]\n );\n }\n\n // remove longest common starting substring from all protein change values\n const proteinChangesTrimmed = proteinChanges.map(p =>\n p.substring(startStr.length)\n );\n\n // construct label (sorted by protein change count, not alphabetically)\n let label = startStr + proteinChangesTrimmed.join('/');\n\n if (proteinChanges.length < mutationCountsByProteinChange.length) {\n label = `${label} and ${mutationCountsByProteinChange.length -\n proteinChanges.length} more`;\n }\n\n return label;\n}\n\nexport function lollipopLabelTextAnchor(\n labelText: string,\n codon: number,\n fontFamily: string,\n fontSize: number,\n geneWidth: number,\n proteinLength: number\n): string {\n let anchor = 'middle';\n const approxLabelWidth = getTextWidth(\n labelText,\n fontFamily,\n `${fontSize}px`\n );\n const lollipopDistanceToOrigin = codon * (geneWidth / proteinLength);\n const lollipopDistanceToXMax = geneWidth - lollipopDistanceToOrigin;\n\n // if lollipop is too close to the origin, in order to prevent label overlap set anchor to \"start\"\n if (approxLabelWidth / 2 > lollipopDistanceToOrigin) {\n anchor = 'start';\n }\n // if lollipop is too close to the end of the protein, in order to prevent overflow set anchor to \"end\"\n else if (approxLabelWidth / 2 > lollipopDistanceToXMax) {\n anchor = 'end';\n }\n\n return anchor;\n}\n\nexport function calcYMaxInput(\n yMaxInput: number | undefined,\n yMaxStep: number,\n countRange: number[],\n oppositeCountRange: number[],\n yAxisSameScale?: boolean\n) {\n // allow the user input value to go over the actual count range\n let input = yMaxInput;\n\n if (input === undefined) {\n input = yAxisSameScale\n ? getCommonYAxisMaxSliderValue(\n yMaxStep,\n countRange,\n oppositeCountRange\n )\n : getYAxisMaxSliderValue(yMaxStep, countRange);\n }\n\n return input;\n}\n\nexport function getCommonYAxisMaxSliderValue(\n yMaxStep: number,\n countRange: number[],\n oppositeCountRange: number[],\n yMaxInput?: number\n) {\n const defaultTopMin = getYAxisMaxSliderValue(\n yMaxStep,\n countRange,\n yMaxInput\n );\n const defaultBottomMin = getYAxisMaxSliderValue(\n yMaxStep,\n oppositeCountRange,\n yMaxInput\n );\n\n return Math.max(defaultTopMin, defaultBottomMin);\n}\n\nexport function getYAxisMaxSliderValue(\n yMaxStep: number,\n countRange: number[],\n yMaxInput?: number\n) {\n const defaultMin = yMaxStep * Math.ceil(countRange[1] / yMaxStep);\n // we don't want max slider value to go over the actual max, even if the user input goes over it\n return Math.min(defaultMin, yMaxInput || defaultMin);\n}\n\nexport function getYAxisMaxInputValue(yMaxStep: number, input: string) {\n const value = parseFloat(input);\n return value < yMaxStep ? yMaxStep : value;\n}\n\nexport function calcCountRange(\n lollipops: LollipopSpec[],\n defaultMax: number = 5,\n defaultMin: number = 1\n): [number, number] {\n if (lollipops.length === 0) {\n return [0, 0];\n } else {\n let max = defaultMax;\n let min = defaultMin;\n\n for (const lollipop of lollipops) {\n max = Math.max(max, lollipop.count);\n min = Math.min(min, lollipop.count);\n }\n\n return [min, Math.max(min, max)];\n }\n}\n\nfunction isInThisDomain(codon: number) {\n return (range: PfamDomainRange): boolean => {\n return codon >= range.pfamDomainStart && codon <= range.pfamDomainEnd;\n };\n}\n\nexport function byMiddlemostPosition(averageCodon: number) {\n return (x: LollipopSpec, y: LollipopSpec): 1 | -1 | 0 => {\n const yDistance = Math.abs(y.codon - averageCodon);\n const xDistance = Math.abs(x.codon - averageCodon);\n if (yDistance > xDistance) {\n return -1;\n } else if (xDistance > yDistance) {\n return 1;\n } else {\n return 0;\n }\n };\n}\n\nexport function byWhetherExistsInADomain(remainingDomains: PfamDomainRange[]) {\n return (x: LollipopSpec, y: LollipopSpec): 0 | 1 | -1 => {\n const isYInADomain = remainingDomains.some(isInThisDomain(y.codon));\n const isXInADomain = remainingDomains.some(isInThisDomain(x.codon));\n if (\n (isYInADomain && isXInADomain) ||\n (!isYInADomain && !isXInADomain)\n ) {\n return 0;\n } else if (isYInADomain) {\n return 1;\n } else {\n return -1;\n }\n };\n}\n\nexport function byMutationCount(x: LollipopSpec, y: LollipopSpec): number {\n if (y.count > x.count) {\n return 1;\n } else if (y.count < x.count) {\n return -1;\n }\n return 0;\n}\n","import { PfamDomainRange } from 'genome-nexus-ts-api-client';\n\nexport function generatePfamDomainColorMap(\n pfamDomains: PfamDomainRange[]\n): { [pfamAccession: string]: string } {\n const colors: string[] = [\n '#2dcf00',\n '#ff5353',\n '#5b5bff',\n '#ebd61d',\n '#ba21e0',\n '#ff9c42',\n '#ff7dff',\n '#b9264f',\n '#baba21',\n '#c48484',\n '#1f88a7',\n '#cafeb8',\n '#4a9586',\n '#ceb86c',\n '#0e180f',\n ];\n\n const map: { [pfamAccession: string]: string } = {};\n\n let colorIdx = 0;\n\n // sort domains by start position,\n // then assign a different color for each unique domain id.\n pfamDomains\n .sort(\n (a: PfamDomainRange, b: PfamDomainRange): number =>\n a.pfamDomainStart - b.pfamDomainStart\n )\n .forEach((domain: PfamDomainRange) => {\n if (map[domain.pfamDomainId] === undefined) {\n map[domain.pfamDomainId] = colors[colorIdx % colors.length];\n colorIdx++;\n }\n });\n\n return map;\n}\n","import * as React from 'react';\nimport { action, computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\n\nimport { CheckedSelect, Option } from 'cbioportal-frontend-commons';\n\nexport type TrackVisibility = { [trackName: string]: 'visible' | 'hidden' };\nexport type TrackDataStatus = {\n [trackName: string]: 'pending' | 'error' | 'complete' | 'empty';\n};\n\nexport enum TrackName {\n PDB = 'PDB',\n CancerHotspots = 'CANCER_HOTSPOTS',\n OncoKB = 'ONCO_KB',\n dbPTM = 'DB_PTM',\n UniprotPTM = 'UNIPROT_PTM',\n Exon = 'EXON',\n UniprotTopology = 'UNIPROT_TOPOLOGY',\n}\n\ntype TrackSelectorProps = {\n tracks?: TrackName[];\n trackVisibility: TrackVisibility;\n trackDataStatus?: TrackDataStatus;\n onChange: (selectedTrackIds: string[]) => void;\n name?: string;\n placeholder?: string;\n};\n\n@observer\nexport default class TrackSelector extends React.Component<\n TrackSelectorProps,\n {}\n> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n public static defaultProps: Partial<TrackSelectorProps> = {\n name: 'mutationMapperTrackSelector',\n placeholder: 'Add annotation tracks',\n tracks: [\n TrackName.CancerHotspots,\n TrackName.OncoKB,\n TrackName.dbPTM,\n TrackName.PDB,\n TrackName.Exon,\n TrackName.UniprotTopology,\n ],\n };\n\n @action.bound\n private onChange(values: { value: string }[]) {\n this.props.onChange(values.map(o => o.value));\n }\n\n @computed get selectedValues() {\n return Object.keys(this.props.trackVisibility)\n .filter(id => this.props.trackVisibility[id] === 'visible')\n .map(id => ({ value: id }));\n }\n\n @computed get availableOptions() {\n return {\n [TrackName.CancerHotspots]: {\n label: (\n <span>\n Cancer Hotspots\n {this.isPending(TrackName.CancerHotspots) &&\n this.loaderIcon()}\n </span>\n ),\n value: TrackName.CancerHotspots,\n },\n [TrackName.OncoKB]: {\n label: (\n <span>\n OncoKB\n {this.isPending(TrackName.OncoKB) && this.loaderIcon()}\n </span>\n ),\n value: TrackName.OncoKB,\n },\n [TrackName.dbPTM]: {\n label: (\n <span>\n Post Translational Modifications (dbPTM)\n {this.isPending(TrackName.dbPTM) && this.loaderIcon()}\n </span>\n ),\n value: TrackName.dbPTM,\n },\n [TrackName.UniprotPTM]: {\n label: (\n <span>\n Post Translational Modifications (Uniprot)\n {this.isPending(TrackName.UniprotPTM) &&\n this.loaderIcon()}\n </span>\n ),\n value: TrackName.UniprotPTM,\n },\n [TrackName.PDB]: {\n label: (\n <span>\n 3D Structure\n {this.isPending(TrackName.PDB) && this.loaderIcon()}\n </span>\n ),\n value: TrackName.PDB,\n disabled: this.isDisabled(TrackName.PDB),\n },\n [TrackName.Exon]: {\n label: (\n <span>\n Exon\n {this.isPending(TrackName.Exon) && this.loaderIcon()}\n </span>\n ),\n value: TrackName.Exon,\n },\n [TrackName.UniprotTopology]: {\n label: (\n <span>\n Uniprot Topology\n {this.isPending(TrackName.UniprotTopology) &&\n this.loaderIcon()}\n </span>\n ),\n value: TrackName.UniprotTopology,\n },\n };\n }\n\n @computed get options(): Option[] {\n return this.props\n .tracks!.filter(t => this.props.trackVisibility[t] !== undefined)\n .map(t => this.availableOptions[t]);\n }\n\n private isPending(trackName: string) {\n return (\n this.props.trackDataStatus &&\n this.props.trackDataStatus[trackName] === 'pending'\n );\n }\n\n private isDisabled(trackName: string) {\n return (\n this.props.trackDataStatus &&\n this.props.trackDataStatus[trackName] !== 'complete'\n );\n }\n\n private loaderIcon() {\n return (\n <span\n style={{\n display: 'inline-block',\n verticalAlign: 'bottom',\n marginLeft: 5,\n }}\n >\n <i className=\"fa fa-spinner fa-pulse\" />\n </span>\n );\n }\n\n public render() {\n return (\n <CheckedSelect\n name={this.props.name}\n placeholder={this.props.placeholder}\n onChange={this.onChange}\n options={this.options}\n value={this.selectedValues}\n />\n );\n }\n}\n","import { TrackName, TrackVisibility } from '../component/track/TrackSelector';\n\nexport function initDefaultTrackVisibility(): TrackVisibility {\n return {\n [TrackName.OncoKB]: 'hidden',\n [TrackName.CancerHotspots]: 'hidden',\n [TrackName.dbPTM]: 'hidden',\n [TrackName.UniprotPTM]: 'hidden',\n [TrackName.PDB]: 'hidden',\n [TrackName.Exon]: 'hidden',\n [TrackName.UniprotTopology]: 'hidden',\n };\n}\n","import * as React from 'react';\nimport {\n MUT_COLOR_MISSENSE,\n MUT_COLOR_TRUNC,\n MUT_COLOR_INFRAME,\n STRUCTURAL_VARIANT_COLOR,\n MUT_COLOR_SPLICE,\n MUT_COLOR_OTHER,\n} from 'cbioportal-frontend-commons';\n\ntype DefaultLollipopPlotLegendProps = {\n missenseColor?: string;\n truncatingColor?: string;\n inframeColor?: string;\n spliceColor?: string;\n fusionColor?: string;\n otherColor?: string;\n};\n\nexport default class DefaultLollipopPlotLegend extends React.Component<\n DefaultLollipopPlotLegendProps\n> {\n public static defaultProps: DefaultLollipopPlotLegendProps = {\n missenseColor: MUT_COLOR_MISSENSE,\n truncatingColor: MUT_COLOR_TRUNC,\n inframeColor: MUT_COLOR_INFRAME,\n spliceColor: MUT_COLOR_SPLICE,\n fusionColor: STRUCTURAL_VARIANT_COLOR,\n otherColor: MUT_COLOR_OTHER,\n };\n\n public render() {\n return (\n <div style={{ maxWidth: 700, marginTop: 5 }}>\n <strong style={{ color: '#2153AA' }}>Color Codes</strong>\n <p>\n Mutation diagram circles are colored with respect to the\n corresponding mutation types. In case of different mutation\n types at a single position, color of the circle is\n determined with respect to the most frequent mutation type.\n </p>\n <br />\n <div>\n Mutation types and corresponding color codes are as follows:\n <ul>\n <li>\n <strong style={{ color: this.props.missenseColor }}>\n Missense Mutations\n </strong>\n </li>\n <li>\n <strong\n style={{ color: this.props.truncatingColor }}\n >\n Truncating Mutations\n </strong>\n : Nonsense, Nonstop, Frameshift deletion, Frameshift\n insertion, Splice site\n </li>\n <li>\n <strong style={{ color: this.props.inframeColor }}>\n Inframe Mutations\n </strong>\n : Inframe deletion, Inframe insertion\n </li>\n <li>\n <strong style={{ color: this.props.spliceColor }}>\n Splice Mutations\n </strong>\n </li>\n <li>\n <strong style={{ color: this.props.fusionColor }}>\n Fusion Mutations\n </strong>\n </li>\n <li>\n <strong style={{ color: this.props.otherColor }}>\n Other Mutations\n </strong>\n : All other types of mutations\n </li>\n </ul>\n </div>\n </div>\n );\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { observable, makeObservable } from 'mobx';\n\nimport { SequenceSpec } from '../../model/SequenceSpec';\n\ntype SequenceProps = {\n x: number;\n y: number;\n width: number;\n height: number;\n color?: string;\n hitzoneClassName?: string;\n spec?: SequenceSpec;\n};\n\n@observer\nexport default class Sequence extends React.Component<SequenceProps, {}> {\n @observable isMounted: boolean = false;\n\n constructor(props: SequenceProps) {\n super(props);\n makeObservable(this);\n }\n\n public get hitRect() {\n return {\n x: this.props.x,\n y: this.props.y,\n width: this.props.width,\n height: this.props.height,\n };\n }\n\n componentDidMount() {\n this.isMounted = true;\n }\n\n render() {\n return (\n <g>\n <rect\n x={this.props.x}\n y={this.props.y}\n width={this.props.width}\n height={this.props.height}\n fill={this.props.color}\n />\n <rect\n className={this.props.hitzoneClassName}\n x={this.props.x}\n y={this.props.y}\n width={this.props.width}\n height={this.props.height}\n style={{ opacity: 0 }}\n />\n </g>\n );\n }\n}\n","import * as React from 'react';\nimport { SyntheticEvent } from 'react';\nimport $ from 'jquery';\nimport autobind from 'autobind-decorator';\nimport _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport { action, computed, makeObservable } from 'mobx';\n\nimport {\n getComponentIndex,\n SVGAxis,\n Tick,\n unhoverAllComponents,\n} from 'cbioportal-frontend-commons';\n\nimport { LollipopPlacement, LollipopSpec } from '../../model/LollipopSpec';\nimport { DomainSpec } from '../../model/DomainSpec';\nimport {\n updatePositionHighlightFilters,\n updatePositionSelectionFilters,\n} from '../../util/FilterUtils';\nimport Sequence from './Sequence';\nimport Lollipop from './Lollipop';\nimport Domain from './Domain';\nimport { LollipopPlotProps } from './LollipopPlot';\n\nexport type LollipopPlotNoTooltipProps = LollipopPlotProps & {\n setHitZone?: (\n hitRect: { x: number; y: number; width: number; height: number },\n tooltipContent?: JSX.Element,\n onMouseOver?: () => void,\n onClick?: () => void,\n onMouseOut?: () => void,\n cursor?: string,\n tooltipPlacement?: string\n ) => void;\n onMouseLeave?: () => void;\n onBackgroundMouseMove?: () => void;\n};\n\nconst DELETE_FOR_DOWNLOAD_CLASS = 'delete-for-download';\nconst LOLLIPOP_ID_CLASS_PREFIX = 'lollipop-';\nconst DOMAIN_ID_CLASS_PREFIX = 'domain-';\nconst SEQUENCE_ID_CLASS_PREFIX = 'sequence-';\n\n@observer\nexport default class LollipopPlotNoTooltip extends React.Component<\n LollipopPlotNoTooltipProps,\n {}\n> {\n private lollipopComponents: { [lollipopIndex: string]: Lollipop } = {};\n private domainComponents: { [domainIndex: string]: Domain } = {};\n private sequenceComponents: Sequence[] = [];\n\n private svg: SVGElement | undefined;\n private shiftPressed: boolean = false;\n\n private lollipopLabelPadding = 20;\n private domainPadding = 5;\n private xAxisCandidateTickIntervals = [\n 50,\n 100,\n 200,\n 250,\n 500,\n 1000,\n 2500,\n 5000,\n 10000,\n 25000,\n ];\n private yAxisCandidateTickIntervals = [1, 2, 5, 10, 20, 50, 100, 200, 500];\n private xAxisHeight = 30;\n private yAxisWidth = 50;\n private yAxisPadding = 10;\n private geneHeight = 14;\n private domainHeight = 24;\n\n public static defaultProps: Partial<LollipopPlotNoTooltipProps> = {\n showYAxis: true,\n };\n\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n\n @autobind\n protected ref(svg: SVGElement) {\n this.svg = svg;\n }\n\n @action.bound\n protected onBackgroundClick() {\n if (this.props.dataStore) {\n this.props.dataStore.clearSelectionFilters();\n }\n }\n\n @action.bound\n protected onBackgroundMouseMove() {\n this.props.onBackgroundMouseMove && this.props.onBackgroundMouseMove();\n // unhover all of the lollipops if mouse hits background\n this.unhoverAllLollipops();\n }\n\n @action.bound\n protected onLollipopClick(codon: number) {\n if (this.props.dataStore) {\n updatePositionSelectionFilters(\n this.props.dataStore,\n codon,\n this.shiftPressed\n );\n }\n }\n\n @action.bound\n protected onKeyDown(e: JQueryKeyEventObject) {\n if (e.which === 16) {\n this.shiftPressed = true;\n }\n }\n\n @action.bound\n protected onKeyUp(e: JQueryKeyEventObject) {\n if (e.which === 16) {\n this.shiftPressed = false;\n }\n }\n\n @action.bound\n protected onMouseOver(e: SyntheticEvent<any>) {\n // No matter what, unhover all lollipops - if we're hovering one, we'll set it later in this method\n this.unhoverAllLollipops();\n\n const target = e.target as SVGElement;\n const className = target.getAttribute('class') || '';\n const lollipopIndex: number | null = this.getLollipopIndex(className);\n let domainIndex: number | null = null;\n let sequenceIndex: number | null = null;\n\n if (lollipopIndex !== null) {\n const lollipopComponent = this.lollipopComponents[lollipopIndex];\n if (lollipopComponent) {\n lollipopComponent.isHovered = true;\n if (this.props.setHitZone) {\n this.props.setHitZone(\n lollipopComponent.circleHitRect,\n lollipopComponent.props.spec.tooltip,\n action(() => {\n if (this.props.dataStore) {\n updatePositionHighlightFilters(\n this.props.dataStore,\n [lollipopComponent.props.spec.codon]\n );\n }\n lollipopComponent.isHovered = true;\n }),\n action(() =>\n this.onLollipopClick(\n lollipopComponent.props.spec.codon\n )\n )\n );\n }\n }\n } else {\n domainIndex = this.getDomainIndex(className);\n }\n\n if (domainIndex !== null) {\n const domainComponent = this.domainComponents[domainIndex];\n if (domainComponent) {\n if (this.props.setHitZone) {\n this.props.setHitZone(\n domainComponent.hitRect,\n domainComponent.props.spec.tooltip,\n undefined,\n undefined,\n undefined,\n 'auto'\n );\n }\n }\n } else {\n sequenceIndex = this.getSequenceIndex(className);\n }\n\n if (sequenceIndex !== null) {\n const sequenceComponent = this.sequenceComponents[sequenceIndex];\n if (sequenceComponent) {\n if (this.props.setHitZone) {\n this.props.setHitZone(\n sequenceComponent.hitRect,\n sequenceComponent.props.spec\n ? sequenceComponent.props.spec.tooltip\n : undefined,\n undefined,\n undefined,\n undefined,\n 'auto'\n );\n }\n }\n }\n }\n\n @action.bound\n protected onSVGMouseLeave(e: SyntheticEvent<any>) {\n const target = e.target as Element;\n\n if (target.tagName.toLowerCase() === 'svg') {\n this.props.onMouseLeave && this.props.onMouseLeave();\n }\n }\n\n private unhoverAllLollipops() {\n unhoverAllComponents(this.lollipopComponents);\n\n if (this.props.dataStore) {\n this.props.dataStore.clearHighlightFilters();\n }\n }\n\n componentDidMount() {\n // Make it so that if you hold down shift, you can select more than one lollipop at once\n $(document).on('keydown', this.onKeyDown);\n $(document).on('keyup', this.onKeyUp);\n this.props.onXAxisOffset && this.props.onXAxisOffset(this.geneX);\n }\n\n componentWillUnmount() {\n $(document).off('keydown', this.onKeyDown as any);\n $(document).off('keyup', this.onKeyUp as any);\n }\n\n componentDidUpdate() {\n this.props.onXAxisOffset && this.props.onXAxisOffset(this.geneX);\n }\n\n private codonToX(codon: number) {\n return (codon / this.props.xMax) * this.props.vizWidth;\n }\n\n private countToHeight(count: number, yMax: number, zeroHeight: number = 0) {\n return zeroHeight + Math.min(1, count / yMax) * this.yAxisHeight;\n }\n\n private calculateTickInterval(\n candidates: number[],\n rangeSize: number,\n maxTickCount: number\n ) {\n let ret: number;\n const tickInterval = candidates.find(\n c => rangeSize / c < maxTickCount - 1\n );\n if (!tickInterval) {\n ret = 10;\n while (rangeSize / ret > maxTickCount - 1) {\n ret *= 10;\n }\n } else {\n ret = tickInterval;\n }\n return ret;\n }\n\n private calculateTicks(\n tickInterval: number,\n rangeSize: number,\n labelEvenTicks: boolean\n ) {\n const ret: { position: number; label: string | undefined }[] = [];\n let nextTick = tickInterval;\n while (nextTick < rangeSize) {\n let label: string | undefined = undefined;\n\n // add label only for the even ticks\n // but do not add label if it is too close to the end value\n if (\n labelEvenTicks &&\n rangeSize - nextTick > (2 * tickInterval) / 3 &&\n nextTick % (2 * tickInterval) === 0\n ) {\n label = nextTick + '';\n }\n ret.push({\n position: nextTick,\n label,\n });\n nextTick += tickInterval;\n }\n return ret;\n }\n\n @computed private get xAxisTickInterval() {\n return this.calculateTickInterval(\n this.xAxisCandidateTickIntervals,\n this.props.xMax,\n 16\n );\n }\n\n @computed private get yAxisTickInterval() {\n return this.calculateTickInterval(\n this.yAxisCandidateTickIntervals,\n this.yMax,\n 10\n );\n }\n\n @computed private get bottomYAxisTickInterval() {\n return this.calculateTickInterval(\n this.yAxisCandidateTickIntervals,\n this.bottomYMax,\n 10\n );\n }\n\n @computed private get xTicks() {\n let ret: Tick[] = [];\n // Start and end, always there\n ret.push({\n position: 0,\n label: '0',\n });\n ret.push({\n position: this.props.xMax,\n label: this.props.xMax + 'aa',\n });\n // Intermediate ticks, every other one labeled\n ret = ret.concat(\n this.calculateTicks(this.xAxisTickInterval, this.props.xMax, true)\n );\n return ret;\n }\n\n @computed private get yTicks() {\n return this.axisTicks(\n this.yMax,\n this.yMaxLabel,\n this.yAxisTickInterval\n );\n }\n\n @computed private get bottomYTicks() {\n return this.axisTicks(\n this.bottomYMax,\n this.bottomYMaxLabel,\n this.bottomYAxisTickInterval\n );\n }\n\n @computed private get yMax() {\n return (\n this.props.yMax ||\n this.props.lollipops\n .filter(l => l.placement !== LollipopPlacement.BOTTOM)\n .reduce(\n (max: number, next: LollipopSpec) =>\n Math.max(max, next.count),\n 1\n )\n );\n }\n\n @computed private get yMaxDisplay() {\n return this.props.yMaxFractionDigits\n ? Number(this.yMax.toFixed(this.props.yMaxFractionDigits))\n : this.yMax;\n }\n\n @computed private get yMaxPostfix() {\n return this.props.yMaxLabelPostfix ? this.props.yMaxLabelPostfix : '';\n }\n\n @computed private get bottomYMax() {\n return (\n this.props.bottomYMax ||\n this.props.lollipops\n .filter(l => l.placement === LollipopPlacement.BOTTOM)\n .reduce(\n (max: number, next: LollipopSpec) =>\n Math.max(max, next.count),\n 1\n )\n );\n }\n\n @computed private get bottomYMaxDisplay() {\n return this.props.yMaxFractionDigits\n ? Number(this.bottomYMax.toFixed(this.props.yMaxFractionDigits))\n : this.bottomYMax;\n }\n\n @computed private get yMaxLabel() {\n return (\n (this.props.lollipops\n .filter(l => l.placement !== LollipopPlacement.BOTTOM)\n .find(lollipop => lollipop.count > this.yMax)\n ? '>= '\n : '') +\n this.yMaxDisplay +\n this.yMaxPostfix\n );\n }\n\n @computed private get bottomYMaxLabel() {\n return (\n (this.props.lollipops\n .filter(l => l.placement === LollipopPlacement.BOTTOM)\n .find(lollipop => lollipop.count > this.bottomYMax)\n ? '>= '\n : '') +\n this.bottomYMaxDisplay +\n this.yMaxPostfix\n );\n }\n\n @computed private get needBottomPlacement() {\n return this.props.groups && this.props.groups.length > 1;\n }\n\n @computed private get xAxisOnTop() {\n return this.props.xAxisOnTop || this.needBottomPlacement;\n }\n\n @computed private get xAxisOnBottom() {\n return this.props.xAxisOnBottom || !this.needBottomPlacement;\n }\n\n @computed private get topGroupName() {\n return this.props.groups ? this.props.groups[0] : undefined;\n }\n\n @computed private get topGroupSymbol() {\n return this.props.topYAxisSymbol || '#';\n }\n\n @computed private get bottomGroupName() {\n return this.props.groups ? this.props.groups[1] : undefined;\n }\n\n @computed private get bottomGroupSymbol() {\n return this.props.bottomYAxisSymbol || '#';\n }\n\n @computed private get combinedXAxisHeight() {\n // number of visible x-axes depends on the props\n return (\n ((this.xAxisOnTop ? 1 : 0) + (this.xAxisOnBottom ? 1 : 0)) *\n this.xAxisHeight\n );\n }\n\n @computed private get yAxisHeight() {\n if (this.needBottomPlacement) {\n return (\n (2 * this.props.vizHeight -\n (2 * this.lollipopLabelPadding +\n this.combinedXAxisHeight +\n 2 * this.domainPadding +\n this.domainHeight)) /\n 2\n );\n } else {\n return (\n this.props.vizHeight -\n (this.lollipopLabelPadding +\n this.combinedXAxisHeight +\n 2 * this.domainPadding +\n this.domainHeight)\n );\n }\n }\n\n @computed private get xAxisY() {\n const base = this.domainY + this.domainHeight + this.domainPadding;\n\n if (this.needBottomPlacement) {\n return base + this.yAxisHeight + this.lollipopLabelPadding;\n } else {\n return base;\n }\n }\n\n @computed private get geneCenterY() {\n return this.geneY + this.geneHeight / 2;\n }\n\n @computed private get yAxisY() {\n return (\n this.geneCenterY -\n this.plotAreaDistanceToGeneCenter -\n this.yAxisHeight\n );\n }\n\n @computed private get bottomYAxisY() {\n return this.geneCenterY + this.plotAreaDistanceToGeneCenter;\n }\n\n @computed private get plotAreaDistanceToGeneCenter() {\n return this.domainPadding + this.domainHeight / 2;\n }\n\n @computed private get geneX() {\n // TODO make + 75 customizable\n return this.yAxisWidth + 75;\n }\n\n @computed private get geneY() {\n return (\n this.lollipopLabelPadding +\n this.yAxisHeight +\n this.domainPadding +\n (this.domainHeight - this.geneHeight) / 2 +\n (this.xAxisOnTop ? this.xAxisHeight : 0)\n );\n }\n\n @computed private get domainY() {\n return this.geneY - (this.domainHeight - this.geneHeight) / 2;\n }\n\n // we need to create segments for the sequence rectangle for better handling of the tooltip hit zone\n @computed get sequenceSegments() {\n const sequenceComponents: JSX.Element[] = [];\n\n let start = 0;\n\n let segments = _.map(this.props.domains, (domain: DomainSpec) => {\n const segment = {\n start,\n end: this.codonToX(domain.startCodon), // segment ends at the start of the current domain\n };\n\n // next segment starts at the end of the current domain\n start = this.codonToX(domain.endCodon);\n\n return segment;\n });\n\n // last segment after the last domain\n const end = this.props.vizWidth;\n segments.push({ start, end });\n\n // sort segments by start position\n segments.sort(\n (\n a: { start: number; end: number },\n b: { start: number; end: number }\n ) => {\n return a.start - b.start;\n }\n );\n\n segments.forEach(\n (segment: { start: number; end: number }, index: number) => {\n sequenceComponents.push(\n <Sequence\n ref={sequenceComponent => {\n if (sequenceComponent !== null) {\n this.sequenceComponents[\n index\n ] = sequenceComponent;\n }\n }}\n color=\"#BABDB6\"\n x={this.geneX + segment.start}\n y={this.geneY}\n height={this.geneHeight}\n width={segment.end - segment.start}\n spec={this.props.sequence}\n hitzoneClassName={[\n DELETE_FOR_DOWNLOAD_CLASS,\n this.makeSequenceIndexClass(index),\n ].join(' ')}\n />\n );\n }\n );\n\n return sequenceComponents;\n }\n\n @computed private get zeroHeight() {\n // we need to add a non-zero value if the stick needs to start from the gene center\n return this.props.zeroStickBaseY\n ? 0\n : this.domainPadding + this.domainHeight / 2;\n }\n\n @computed private get lollipops() {\n this.lollipopComponents = {};\n const hoverHeadRadius = 5;\n return this.props.lollipops.map((lollipop: LollipopSpec, i: number) => {\n const stickHeight =\n lollipop.placement === LollipopPlacement.BOTTOM\n ? -this.countToHeight(\n lollipop.count,\n this.bottomYMax,\n this.zeroHeight\n )\n : this.countToHeight(\n lollipop.count,\n this.yMax,\n this.zeroHeight\n );\n\n const stickBaseY = this.calcStickBaseY(lollipop.placement);\n\n return (\n <Lollipop\n key={`${lollipop.codon}_${\n lollipop.placement === LollipopPlacement.BOTTOM\n ? 'bottom'\n : 'top'\n }`}\n ref={(lollipopComponent: Lollipop) => {\n if (lollipopComponent !== null) {\n this.lollipopComponents[i] = lollipopComponent;\n }\n }}\n x={this.geneX + this.codonToX(lollipop.codon)}\n stickBaseY={stickBaseY}\n stickHeight={stickHeight}\n headRadius={\n this.props.dataStore &&\n (this.props.dataStore.isPositionSelected(\n lollipop.codon\n ) ||\n this.props.dataStore.isPositionHighlighted(\n lollipop.codon\n ))\n ? 5\n : 2.8\n }\n hoverHeadRadius={hoverHeadRadius}\n label={lollipop.label}\n headColor={lollipop.color}\n hitzoneClassName={[\n DELETE_FOR_DOWNLOAD_CLASS,\n this.makeLollipopIndexClass(i),\n ].join(' ')}\n spec={lollipop}\n />\n );\n });\n }\n\n @computed private get domains() {\n this.domainComponents = {};\n return this.props.domains.map((domain: DomainSpec, index: number) => {\n const x = this.codonToX(domain.startCodon);\n const width = this.codonToX(domain.endCodon) - x;\n return (\n <Domain\n key={index}\n ref={(domainComponent: Domain) => {\n if (domainComponent !== null) {\n this.domainComponents[index] = domainComponent;\n }\n }}\n x={this.geneX + x}\n y={this.domainY}\n width={width}\n height={this.domainHeight}\n color={domain.color}\n label={domain.label}\n labelColor={domain.labelColor}\n hitzoneClassName={[\n DELETE_FOR_DOWNLOAD_CLASS,\n this.makeDomainIndexClass(index),\n ].join(' ')}\n spec={domain}\n />\n );\n });\n }\n\n private yAxis(\n y: number,\n yMax: number,\n ticks: Tick[],\n placement?: LollipopPlacement,\n groupName?: string,\n symbol: string = '#'\n ) {\n const label = groupName\n ? `${symbol} ${this.props.hugoGeneSymbol ||\n ''} ${groupName} Mutations`\n : `${symbol} ${this.props.hugoGeneSymbol || ''} Mutations`;\n\n const placeOnBottom = placement === LollipopPlacement.BOTTOM;\n\n return (\n <SVGAxis\n key={`lollipopPlotYAxis_${placeOnBottom ? 'bottom' : 'top'}`}\n x={this.geneX - this.yAxisPadding}\n y={y}\n length={this.yAxisHeight}\n tickLength={7}\n rangeLower={0}\n rangeUpper={yMax}\n ticks={ticks}\n vertical={true}\n verticalLabelPadding={this.props.yAxisLabelPadding}\n reverse={placeOnBottom}\n label={label}\n />\n );\n }\n\n private xAxis(y: number, placement?: LollipopPlacement) {\n const placeOnTop = placement === LollipopPlacement.TOP;\n\n return (\n <SVGAxis\n key={`lollipopPlotXAxis_${placeOnTop ? 'top' : 'bottom'}`}\n x={this.geneX}\n y={y + (placeOnTop ? this.xAxisHeight : 0)}\n length={this.props.vizWidth}\n tickLength={7}\n rangeLower={0}\n rangeUpper={this.props.xMax}\n ticks={this.xTicks}\n invertTicks={placeOnTop}\n />\n );\n }\n\n private axisTicks(max: number, maxLabel: string, tickInterval: number) {\n let ticks: Tick[] = [];\n\n // Start and end, always there\n ticks.push({\n position: 0,\n label: '0',\n });\n ticks.push({\n position: max,\n label: maxLabel,\n });\n // Intermediate ticks, unlabeled\n ticks = ticks.concat(this.calculateTicks(tickInterval, max, false));\n\n return ticks;\n }\n\n @computed public get svgWidth() {\n return this.props.vizWidth + this.geneX + 30;\n }\n\n @computed public get svgHeight() {\n return this.needBottomPlacement\n ? 2 * this.props.vizHeight\n : this.props.vizHeight;\n }\n\n private calcStickBaseY(placement?: LollipopPlacement) {\n // by default start from the center of the plot\n let stickBaseY = this.geneCenterY;\n\n // calculation needed when the stick starts from the axis zero (above domains)\n if (this.props.zeroStickBaseY) {\n stickBaseY =\n placement === LollipopPlacement.BOTTOM\n ? this.bottomYAxisY\n : this.yAxisY + this.yAxisHeight;\n }\n\n return stickBaseY;\n }\n\n private makeDomainIndexClass(index: number) {\n return `${DOMAIN_ID_CLASS_PREFIX}${index}`;\n }\n\n private makeLollipopIndexClass(index: number) {\n return `${LOLLIPOP_ID_CLASS_PREFIX}${index}`;\n }\n\n private makeSequenceIndexClass(index: number) {\n return `${SEQUENCE_ID_CLASS_PREFIX}${index}`;\n }\n\n private getDomainIndex(classes: string): number | null {\n return getComponentIndex(classes, DOMAIN_ID_CLASS_PREFIX);\n }\n\n private getLollipopIndex(classes: string): number | null {\n return getComponentIndex(classes, LOLLIPOP_ID_CLASS_PREFIX);\n }\n\n private getSequenceIndex(classes: string): number | null {\n return getComponentIndex(classes, SEQUENCE_ID_CLASS_PREFIX);\n }\n\n public toSVGDOMNode(): Element {\n if (this.svg) {\n // Clone node\n const svg = this.svg.cloneNode(true) as Element;\n $(svg)\n .find('.' + DELETE_FOR_DOWNLOAD_CLASS)\n .remove();\n return svg;\n } else {\n return document.createElementNS(\n 'http://www.w3.org/2000/svg',\n 'svg'\n );\n }\n }\n\n render() {\n return (\n <div onMouseOver={this.onMouseOver}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n ref={this.ref as any}\n width={this.svgWidth}\n height={this.svgHeight}\n className=\"lollipop-svgnode\"\n onMouseLeave={this.onSVGMouseLeave}\n >\n <rect\n fill=\"#FFFFFF\"\n x={0}\n y={0}\n width={this.svgWidth}\n height={this.svgHeight}\n onClick={this.onBackgroundClick}\n onMouseMove={this.onBackgroundMouseMove}\n />\n {\n // Originally this had tooltips by having separate segments\n // with hit zones. We disabled those separate segments with\n // tooltips (this.sequenceSegments) and instead just draw\n // one rectangle\n // this.sequenceSegments\n }\n <rect\n fill=\"#BABDB6\"\n x={this.geneX}\n y={this.geneY}\n height={this.geneHeight}\n width={\n // the x-axis start from 0, so the rectangle size should be (width + 1)\n this.props.vizWidth + 1\n }\n />\n {this.lollipops}\n {this.domains}\n {this.xAxisOnTop && this.xAxis(0, LollipopPlacement.TOP)}\n {this.xAxisOnBottom &&\n this.xAxis(this.xAxisY, LollipopPlacement.BOTTOM)}\n {this.props.showYAxis &&\n this.yAxis(\n this.yAxisY,\n this.yMax,\n this.yTicks,\n LollipopPlacement.TOP,\n this.topGroupName,\n this.topGroupSymbol\n )}\n {this.props.showYAxis &&\n this.needBottomPlacement &&\n this.yAxis(\n this.bottomYAxisY,\n this.bottomYMax,\n this.bottomYTicks,\n LollipopPlacement.BOTTOM,\n this.bottomGroupName,\n this.bottomGroupSymbol\n )}\n </svg>\n </div>\n );\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { observable, computed, makeObservable } from 'mobx';\nimport {\n HitZoneConfig,\n defaultHitzoneConfig,\n initHitZoneFromConfig,\n DefaultTooltip,\n} from 'cbioportal-frontend-commons';\n\nimport DataStore from '../../model/DataStore';\nimport { SequenceSpec } from '../../model/SequenceSpec';\nimport { LollipopSpec } from '../../model/LollipopSpec';\nimport { DomainSpec } from '../../model/DomainSpec';\nimport LollipopPlotNoTooltip from './LollipopPlotNoTooltip';\n\nexport type LollipopPlotProps = {\n sequence?: SequenceSpec;\n lollipops: LollipopSpec[];\n domains: DomainSpec[];\n vizWidth: number;\n vizHeight: number;\n xMax: number;\n yMax?: number;\n bottomYMax?: number;\n yMaxFractionDigits?: number;\n yMaxLabelPostfix?: string;\n yAxisLabelPadding?: number;\n showYAxis?: boolean;\n xAxisOnTop?: boolean;\n xAxisOnBottom?: boolean;\n groups?: string[];\n topYAxisSymbol?: string;\n bottomYAxisSymbol?: string;\n zeroStickBaseY?: boolean;\n hugoGeneSymbol?: string;\n dataStore?: DataStore;\n onXAxisOffset?: (offset: number) => void;\n};\n\n@observer\nexport default class LollipopPlot extends React.Component<\n LollipopPlotProps,\n {}\n> {\n @observable private hitZoneConfig: HitZoneConfig = defaultHitzoneConfig();\n\n private plot: LollipopPlotNoTooltip | undefined;\n private handlers: any;\n\n public static defaultProps: Partial<LollipopPlotProps> = {\n vizHeight: 200,\n };\n\n constructor(props: LollipopPlotProps) {\n super(props);\n\n makeObservable<\n LollipopPlot,\n 'hitZoneConfig' | 'tooltipVisible' | 'hitZone'\n >(this);\n\n this.handlers = {\n ref: (plot: LollipopPlotNoTooltip) => {\n this.plot = plot;\n },\n setHitZone: (\n hitRect: {\n x: number;\n y: number;\n width: number;\n height: number;\n },\n content?: JSX.Element,\n onMouseOver?: () => void,\n onClick?: () => void,\n onMouseOut?: () => void,\n cursor: string = 'pointer',\n tooltipPlacement: string = 'top'\n ) => {\n this.hitZoneConfig = {\n hitRect,\n content,\n onMouseOver,\n onClick,\n onMouseOut,\n cursor,\n tooltipPlacement,\n };\n },\n getOverlay: () => this.hitZoneConfig.content,\n getOverlayPlacement: () => this.hitZoneConfig.tooltipPlacement,\n onMouseLeave: () => {\n this.hitZoneConfig.onMouseOut &&\n this.hitZoneConfig.onMouseOut();\n },\n onBackgroundMouseMove: () => {\n this.hitZoneConfig.onMouseOut &&\n this.hitZoneConfig.onMouseOut();\n },\n };\n }\n\n @computed private get tooltipVisible() {\n return !!this.hitZoneConfig.content;\n }\n\n @computed private get hitZone() {\n return initHitZoneFromConfig(this.hitZoneConfig);\n }\n\n public toSVGDOMNode(): Element {\n if (this.plot) {\n // Clone node\n return this.plot.toSVGDOMNode();\n } else {\n return document.createElementNS(\n 'http://www.w3.org/2000/svg',\n 'svg'\n );\n }\n }\n\n render() {\n const tooltipVisibleProps: any = {};\n if (!this.tooltipVisible) {\n tooltipVisibleProps.visible = false;\n }\n return (\n <div\n style={{\n position: 'relative',\n display: 'inline-block',\n }}\n data-test=\"LollipopPlot\"\n >\n <DefaultTooltip\n placement={this.handlers.getOverlayPlacement()}\n overlay={this.handlers.getOverlay}\n {...tooltipVisibleProps}\n >\n {this.hitZone}\n </DefaultTooltip>\n <LollipopPlotNoTooltip\n ref={this.handlers.ref}\n setHitZone={this.handlers.setHitZone}\n onMouseLeave={this.handlers.onMouseLeave}\n onBackgroundMouseMove={this.handlers.onBackgroundMouseMove}\n {...this.props}\n />\n </div>\n );\n }\n}\n","import { DownloadControls, EditableSpan } from 'cbioportal-frontend-commons';\nimport { numberOfLeadingDecimalZeros } from 'cbioportal-utils';\nimport classnames from 'classnames';\nimport _ from 'lodash';\nimport * as React from 'react';\nimport Slider from 'react-rangeslider';\nimport { computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\n\nimport { calcYMaxInput } from '../../util/LollipopPlotUtils';\nimport TrackSelector, {\n TrackDataStatus,\n TrackName,\n TrackVisibility,\n} from '../track/TrackSelector';\n\nimport 'react-rangeslider/lib/index.css';\nimport styles from './lollipopMutationPlot.module.scss';\n\ntype LollipopMutationPlotControlsProps = {\n showControls: boolean;\n hugoGeneSymbol: string;\n countRange: [number, number];\n bottomCountRange?: [number, number];\n onYAxisMaxSliderChange: (event: any) => void;\n onYAxisMaxChange: (inputValue: string) => void;\n onBottomYAxisMaxSliderChange?: (event: any) => void;\n onBottomYAxisMaxChange?: (inputValue: string) => void;\n onYMaxInputFocused: () => void;\n onYMaxInputBlurred: () => void;\n onToggleLegend: () => void;\n yMaxSlider: number;\n yMaxSliderStep: number;\n yMaxSliderWidth: number;\n yMaxInput: number;\n yAxisSameScale?: boolean;\n bottomYMaxSlider?: number;\n bottomYMaxSliderStep: number;\n bottomYMaxInput?: number;\n customControls?: JSX.Element;\n filterResetPanel?: JSX.Element;\n tracks?: TrackName[];\n trackVisibility?: TrackVisibility;\n trackDataStatus?: TrackDataStatus;\n showTrackSelector?: boolean;\n showYMaxSlider?: boolean;\n showLegendToggle?: boolean;\n showDownloadControls?: boolean;\n onTrackVisibilityChange?: (selectedTrackIds: string[]) => void;\n getSVG: () => SVGElement;\n};\n\nfunction formatInputValue(value: number, step: number = 1) {\n const decimalZeros = numberOfLeadingDecimalZeros(step);\n const fixed = decimalZeros < 0 ? 0 : decimalZeros + 1;\n\n return value.toFixed(fixed);\n}\n\n@observer\nexport default class LollipopMutationPlotControls extends React.Component<\n LollipopMutationPlotControlsProps,\n {}\n> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n public static defaultProps: Partial<LollipopMutationPlotControlsProps> = {\n showTrackSelector: true,\n showYMaxSlider: true,\n showLegendToggle: true,\n showDownloadControls: true,\n yMaxSliderWidth: 100,\n };\n\n @computed\n get showBottomYAxisSlider() {\n return (\n this.props.bottomCountRange &&\n _.compact(this.props.bottomCountRange).length > 0 &&\n this.props.onBottomYAxisMaxSliderChange &&\n this.props.onBottomYAxisMaxChange &&\n this.props.bottomYMaxSlider &&\n this.props.bottomYMaxInput\n );\n }\n\n protected maxValueSlider(\n countRange: [number, number],\n oppositeCountRange: [number, number],\n onYAxisMaxSliderChange: (event: any) => void,\n onYAxisMaxChange: (inputValue: string) => void,\n yMaxSlider: number,\n yMaxInput: number,\n yAxisSameScale: boolean = false,\n label: string = 'Y-Axis Max',\n width: number = 100,\n yMaxSliderStep: number = 1\n ) {\n return (\n <div\n className=\"small\"\n style={{\n display: 'flex',\n alignItems: 'center',\n marginLeft: 10,\n }}\n >\n <span>{label}:</span>\n <div\n style={{\n width: width,\n marginLeft: 10,\n marginRight: 10,\n }}\n >\n <Slider\n min={yMaxSliderStep}\n max={calcYMaxInput(\n undefined,\n yMaxSliderStep,\n countRange,\n oppositeCountRange,\n yAxisSameScale\n )}\n tooltip={false}\n step={yMaxSliderStep}\n onChange={onYAxisMaxSliderChange}\n value={yMaxSlider}\n />\n </div>\n <EditableSpan\n className={styles['ymax-number-input']}\n value={formatInputValue(yMaxInput, yMaxSliderStep)}\n setValue={onYAxisMaxChange}\n numericOnly={yMaxSliderStep >= 1}\n onFocus={this.props.onYMaxInputFocused}\n onBlur={this.props.onYMaxInputBlurred}\n />\n </div>\n );\n }\n\n protected get yMaxSlider() {\n return this.maxValueSlider(\n this.props.countRange,\n this.props.bottomCountRange!,\n this.props.onYAxisMaxSliderChange,\n this.props.onYAxisMaxChange,\n this.props.yMaxSlider,\n this.props.yMaxInput,\n this.props.yAxisSameScale,\n this.showBottomYAxisSlider ? 'Top Y-Axis Max' : 'Y-Axis Max',\n this.props.yMaxSliderWidth,\n this.props.yMaxSliderStep\n );\n }\n\n protected get bottomYMaxSlider() {\n if (this.showBottomYAxisSlider) {\n return this.maxValueSlider(\n this.props.bottomCountRange!,\n this.props.countRange,\n this.props.onBottomYAxisMaxSliderChange!,\n this.props.onBottomYAxisMaxChange!,\n this.props.bottomYMaxSlider!,\n this.props.bottomYMaxInput!,\n this.props.yAxisSameScale,\n 'Bottom Y-Axis Max',\n 100,\n this.props.bottomYMaxSliderStep\n );\n } else {\n return null;\n }\n }\n\n protected get trackSelector() {\n return (\n <div\n className={classnames('annotation-track-selector', 'small')}\n style={{ width: 180, marginRight: 7 }}\n >\n <TrackSelector\n tracks={this.props.tracks}\n trackVisibility={this.props.trackVisibility}\n trackDataStatus={this.props.trackDataStatus}\n onChange={this.props.onTrackVisibilityChange}\n />\n </div>\n );\n }\n\n protected get legendToggle() {\n return (\n <button\n className=\"btn btn-default btn-xs\"\n onClick={this.props.onToggleLegend}\n style={{ marginRight: 7 }}\n >\n Legend <i className=\"fa fa-eye\" aria-hidden=\"true\" />\n </button>\n );\n }\n\n protected get downloadControls() {\n return (\n <DownloadControls\n getSvg={this.props.getSVG}\n filename={`${this.props.hugoGeneSymbol}_lollipop`}\n dontFade={true}\n type=\"button\"\n />\n );\n }\n\n public render() {\n return (\n <div\n className={classnames(\n 'lollipop_mutation_plot__controls',\n this.props.showControls\n ? styles['fade-in']\n : styles['fade-out']\n )}\n >\n <div style={{ display: 'flex', alignItems: 'center' }}>\n {this.props.trackVisibility &&\n this.props.onTrackVisibilityChange &&\n this.props.showTrackSelector &&\n this.trackSelector}\n {this.props.showYMaxSlider && this.yMaxSlider}\n {this.props.showYMaxSlider && this.bottomYMaxSlider}\n {this.props.filterResetPanel}\n {this.props.customControls}\n <div style={{ display: 'flex', marginLeft: 'auto' }}>\n {this.props.showLegendToggle && this.legendToggle}\n {this.props.showDownloadControls &&\n this.downloadControls}\n </div>\n </div>\n {' '}\n </div>\n );\n }\n}\n","import { DataFilter } from '../model/DataFilter';\n\nexport enum HotspotFilterValue {\n DefaultHotspot = 'DEFAULT_HOTSPOT',\n}\n\nexport type HotspotFilter = DataFilter<HotspotFilterValue>;\n","import * as React from 'react';\nimport { computed, makeObservable, observable } from 'mobx';\nimport { observer } from 'mobx-react';\n\ntype TrackCircleProps = {\n x: number;\n y: number;\n radius?: number;\n isHovered: boolean;\n hoverRadius?: number;\n hitZoneClassName?: string;\n hitZoneXOffset?: number;\n spec: TrackCircleSpec;\n};\n\nexport type TrackCircleSpec = {\n startCodon: number;\n label?: string;\n color?: string;\n tooltip?: JSX.Element;\n};\n\n@observer\nexport default class TrackCircle extends React.Component<TrackCircleProps, {}> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n public static defaultProps = {\n radius: 2.8,\n hoverRadius: 5,\n };\n\n @computed get circleRadius() {\n return this.props.isHovered\n ? this.props.hoverRadius\n : this.props.radius;\n }\n\n public render() {\n return (\n <g>\n <circle\n stroke=\"#BABDB6\"\n strokeWidth=\"0.5\"\n fill={this.props.spec.color}\n r={this.circleRadius}\n cx={this.props.x}\n cy={this.props.y}\n />\n <circle\n className={this.props.hitZoneClassName}\n r={this.props.hoverRadius}\n cx={this.props.x}\n cy={this.props.y}\n cursor=\"pointer\"\n style={{ opacity: 0 }}\n />\n </g>\n );\n }\n}\n","import $ from 'jquery';\n\nexport function truncateDisplayText(\n label: string,\n textElt: SVGTextElement | null,\n width: number\n) {\n // Truncate text if necessary\n if (!textElt) {\n return label;\n }\n\n if (!$(textElt!).is(':visible')) {\n return label;\n }\n\n let substringLength = label.length;\n // Find the number of characters that will fit inside\n while (\n substringLength > 0 &&\n textElt!.getSubStringLength(0, substringLength) > width\n ) {\n substringLength -= 1;\n }\n let displayText = label;\n if (substringLength < label.length) {\n // If we have to do shortening\n substringLength -= 2; // make room for ellipsis \"..\"\n if (substringLength <= 0) {\n // too short to show any string\n displayText = '';\n } else {\n // if it's long enough to show anything at all\n displayText = label.substr(0, substringLength) + '..';\n }\n }\n return displayText;\n}\n","import * as React from 'react';\nimport { action, computed, makeObservable, observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport { truncateDisplayText } from '../../util/LabelUtils';\n\ntype TrackRectProps = {\n x: number;\n y: number;\n width?: number;\n height?: number;\n isHovered: boolean;\n hitZoneClassName?: string;\n hitZoneXOffset?: number;\n spec: TrackRectSpec;\n};\n\nexport type TrackRectSpec = {\n startCodon: number;\n endCodon?: number;\n label?: string;\n labelColor?: string;\n color?: string;\n tooltip?: JSX.Element;\n};\n\n@observer\nexport default class TrackRect extends React.Component<TrackRectProps, {}> {\n @observable private textElt: SVGTextElement | null = null;\n private handlers: any;\n constructor(props: any) {\n super(props);\n makeObservable(this);\n this.handlers = {\n textRef: action((text: SVGTextElement | null) => {\n this.textElt = text;\n }),\n };\n }\n\n public static defaultProps = {\n width: 50,\n height: 15,\n };\n\n private get centerX() {\n return this.props.x + this.props.width! / 2;\n }\n\n private get centerY() {\n return this.props.y + this.props.height! / 2;\n }\n\n private makeTextElement(reference: boolean) {\n let props: any = {\n x: this.centerX,\n y: this.centerY,\n textAnchor: 'middle',\n dy: '0.3em',\n fill: this.props.spec.labelColor || '#FFFFFF',\n style: {\n fontSize: '12px',\n fontFamily: 'arial',\n },\n };\n const label = this.props.spec.label || '';\n const displayText = truncateDisplayText(\n label,\n this.textElt,\n this.props.width!\n );\n const text = reference ? this.props.spec.labelColor || '' : displayText;\n if (reference) {\n props.ref = this.handlers.textRef;\n props.visibility = 'hidden';\n props.style = { opacity: 0 };\n props.className = this.props.hitZoneClassName;\n }\n return <text {...props}>{text}</text>;\n }\n\n @computed get strokeWidth() {\n return this.props.isHovered ? 2 : 0.5;\n }\n\n @computed get strokeColor() {\n return this.props.isHovered ? '#666666' : '#BABDB6';\n }\n\n public render() {\n return (\n <g>\n <rect\n stroke={this.strokeColor}\n strokeWidth={this.strokeWidth}\n fill={this.props.spec.color}\n width={this.props.width}\n height={this.props.height}\n x={this.props.x}\n y={this.props.y}\n />\n {this.makeTextElement(true)};{this.makeTextElement(false)}\n <rect\n className={this.props.hitZoneClassName}\n x={this.props.x}\n y={this.props.y}\n width={this.props.width}\n height={this.props.height}\n style={{ opacity: 0 }}\n />\n </g>\n );\n }\n}\n","import * as React from 'react';\nimport { computed, makeObservable, observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport TrackCircle from './TrackCircle';\nimport TrackRect from './TrackRect';\n\ntype TrackItemProps = {\n x: number;\n y: number;\n dim1: number; // radius or width\n dim2?: number; // height if necessary\n hoverdim1?: number;\n hitZoneClassName?: string;\n hitZoneXOffset?: number;\n spec: TrackItemSpec;\n};\n\nexport enum TrackItemType {\n CIRCLE,\n RECTANGLE,\n}\n\nexport type TrackItemSpec = {\n startCodon: number;\n endCodon?: number;\n itemType?: TrackItemType;\n label?: string;\n color?: string;\n tooltip?: JSX.Element;\n height?: number;\n};\n\n@observer\nexport default class TrackItem extends React.Component<TrackItemProps> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n\n @observable public isHovered = false;\n\n @computed public get hitRectangle() {\n let hoverWidth;\n let hoverHeight;\n let xOffset;\n if (this.props.spec.itemType === TrackItemType.CIRCLE) {\n hoverHeight =\n this.props.hoverdim1 || TrackCircle.defaultProps.hoverRadius;\n\n hoverWidth =\n this.props.hoverdim1 || TrackCircle.defaultProps.hoverRadius;\n\n xOffset =\n this.props.x - hoverWidth + (this.props.hitZoneXOffset || 0);\n } else {\n hoverHeight = this.props.dim2! / 2;\n\n hoverWidth = this.props.dim1! / 2;\n\n xOffset = this.props.x + (this.props.hitZoneXOffset || 0);\n }\n\n return {\n x: xOffset,\n y: this.props.y,\n width: hoverWidth * 2,\n height: hoverHeight * 2,\n };\n }\n\n public render() {\n if (this.props.spec.itemType === TrackItemType.CIRCLE) {\n return (\n <TrackCircle\n isHovered={this.isHovered}\n radius={this.props.dim1}\n hoverRadius={this.props.hoverdim1}\n {...this.props}\n />\n );\n } else {\n return (\n <TrackRect\n isHovered={this.isHovered}\n width={this.props.dim1}\n height={this.props.dim2}\n {...this.props}\n />\n );\n }\n }\n}\n","import * as React from 'react';\nimport $ from 'jquery';\nimport { observer } from 'mobx-react';\nimport { SyntheticEvent } from 'react';\nimport { action, computed, observable, makeObservable } from 'mobx';\nimport autobind from 'autobind-decorator';\nimport classnames from 'classnames';\n\nimport {\n defaultHitzoneConfig,\n DefaultTooltip,\n getComponentIndex,\n HitZoneConfig,\n initHitZoneFromConfig,\n unhoverAllComponents,\n} from 'cbioportal-frontend-commons';\n\nimport { DataFilter } from '../../model/DataFilter';\nimport DataStore from '../../model/DataStore';\nimport {\n updatePositionSelectionFilters,\n updatePositionRangeHighlightFilters,\n} from '../../util/FilterUtils';\nimport TrackItem, { TrackItemSpec, TrackItemType } from './TrackItem';\nimport styles from './trackStyles.module.scss';\n\nconst DEFAULT_ID_CLASS_PREFIX = 'track-circle-';\nconst DEFAULT_HEIGHT = 15; // height of rectangle element\n\nexport type TrackProps = {\n dataStore: DataStore;\n width: number;\n proteinLength: number;\n trackItems?: TrackItemSpec[];\n trackTitle?: JSX.Element;\n hideBaseline?: boolean;\n xOffset?: number;\n defaultFilters?: DataFilter[];\n idClassPrefix?: string;\n isSubTrack?: boolean;\n};\n\n@observer\nexport default class Track extends React.Component<TrackProps, {}> {\n @observable private hitZoneConfig: HitZoneConfig = defaultHitzoneConfig();\n @observable private shiftPressed = false;\n private tooltipActive = false;\n\n private shapes: { [index: string]: TrackItem };\n\n constructor(props: TrackProps) {\n super(props);\n makeObservable<\n Track,\n | 'hitZoneConfig'\n | 'shiftPressed'\n | 'unhoverAllComponents'\n | 'tooltipVisible'\n | 'hitZone'\n >(this);\n }\n\n @autobind\n setHitZone(\n hitRect: { x: number; y: number; width: number; height: number },\n content?: JSX.Element,\n onMouseOver?: () => void,\n onClick?: () => void,\n onMouseOut?: () => void,\n cursor: string = 'pointer',\n tooltipPlacement: string = 'top'\n ) {\n this.hitZoneConfig = {\n hitRect,\n content,\n onMouseOver,\n onClick,\n onMouseOut,\n cursor,\n tooltipPlacement,\n };\n }\n\n @autobind\n getOverlay() {\n return this.hitZoneConfig.content;\n }\n\n @autobind\n getOverlayPlacement() {\n return this.hitZoneConfig.tooltipPlacement;\n }\n\n @action.bound\n onMouseLeave() {\n if (this.hitZoneConfig.onMouseOut) {\n this.hitZoneConfig.onMouseOut();\n }\n }\n\n @autobind\n onBackgroundMouseMove() {\n if (this.hitZoneConfig.onMouseOut) {\n this.hitZoneConfig.onMouseOut();\n }\n }\n\n @action.bound\n onBackgroundClick() {\n this.props.dataStore.clearSelectionFilters();\n }\n\n @action.bound\n onTrackItemClick(shapeComponent: TrackItem) {\n if (shapeComponent.props.spec.itemType === TrackItemType.CIRCLE) {\n updatePositionSelectionFilters(\n this.props.dataStore,\n shapeComponent.props.spec.startCodon,\n this.shiftPressed,\n this.props.defaultFilters\n );\n }\n }\n\n @action.bound\n onTrackItemHover(shapeComponent: TrackItem) {\n const endCodon: number = shapeComponent.props.spec.endCodon\n ? Math.trunc(shapeComponent.props.spec.endCodon)\n : Math.trunc(shapeComponent.props.spec.startCodon);\n\n updatePositionRangeHighlightFilters(\n this.props.dataStore,\n Math.trunc(shapeComponent.props.spec.startCodon),\n endCodon,\n this.props.defaultFilters\n );\n shapeComponent.isHovered = true;\n }\n\n @action.bound\n onKeyDown(e: JQueryKeyEventObject) {\n if (e.which === 16) {\n this.shiftPressed = true;\n }\n }\n\n @action.bound\n onKeyUp(e: JQueryKeyEventObject) {\n if (e.which === 16) {\n this.shiftPressed = false;\n }\n }\n\n @action.bound\n onMouseOver(e: SyntheticEvent<any>) {\n // No matter what, unhover all components - if we're hovering one, we'll set it later in this method\n this.unhoverAllComponents();\n\n const target = e.target as SVGElement;\n const className = target.getAttribute('class') || '';\n const componentIndex: number | null = this.getComponentIndex(className);\n\n if (componentIndex !== null) {\n const shapeComponent = this.shapes[componentIndex];\n if (shapeComponent) {\n this.setHitZone(\n shapeComponent.hitRectangle,\n shapeComponent.props.spec.tooltip,\n action(() => this.onTrackItemHover(shapeComponent)),\n action(() => this.onTrackItemClick(shapeComponent)),\n this.onHitzoneMouseOut,\n 'pointer',\n 'bottom'\n );\n }\n }\n }\n\n @action.bound\n onSVGMouseLeave(e: SyntheticEvent<any>) {\n const target = e.target as Element;\n if (target.tagName.toLowerCase() === 'svg') {\n this.onMouseLeave();\n }\n }\n\n @action.bound\n onTooltipVisibleChange(visible: boolean) {\n this.tooltipActive = visible;\n\n if (!visible) {\n this.unhoverAllComponents();\n }\n }\n\n @action.bound\n onHitzoneMouseOut() {\n if (!this.tooltipActive) {\n this.unhoverAllComponents();\n }\n }\n\n get svgHeight() {\n return 10; // height of baseline element\n }\n\n get items() {\n this.shapes = {};\n\n return (this.props.trackItems || []).map((spec, index) => {\n let dim1;\n let dim2;\n let hoverdim1;\n let specFeats;\n let y;\n if (spec.endCodon !== undefined) {\n dim1 =\n ((spec.endCodon! - spec.startCodon) /\n this.props.proteinLength) *\n this.props.width;\n dim2 = spec.height || DEFAULT_HEIGHT;\n hoverdim1 = dim1;\n y = (this.svgHeight - dim2) / 2; // y is the vertical start position of rectangle, half of baseline element height = half of element height + y\n specFeats = {\n ...spec,\n endCodon: spec.endCodon!,\n itemType: TrackItemType.RECTANGLE,\n };\n } else {\n dim1 =\n this.props.dataStore.isPositionSelected(spec.startCodon) ||\n this.props.dataStore.isPositionHighlighted(spec.startCodon)\n ? 5\n : 2.8;\n hoverdim1 = 5;\n y = this.svgHeight / 2;\n dim2 = dim1;\n specFeats = { ...spec, itemType: TrackItemType.CIRCLE };\n }\n return (\n <TrackItem\n ref={(item: TrackItem) => {\n if (item !== null) {\n this.shapes[index] = item;\n }\n }}\n key={spec.startCodon}\n hitZoneClassName={`${this.props.idClassPrefix}${index}`}\n hitZoneXOffset={this.props.xOffset}\n x={\n (spec.startCodon / this.props.proteinLength) *\n this.props.width\n }\n y={y}\n dim1={dim1}\n dim2={dim2}\n spec={specFeats}\n />\n );\n });\n }\n\n @action\n private unhoverAllComponents() {\n unhoverAllComponents(this.shapes);\n this.props.dataStore.clearHighlightFilters();\n }\n\n private getComponentIndex(classes: string): number | null {\n return getComponentIndex(\n classes,\n this.props.idClassPrefix || DEFAULT_ID_CLASS_PREFIX\n );\n }\n\n @computed private get tooltipVisible() {\n return !!this.hitZoneConfig.content;\n }\n\n @computed private get hitZone() {\n return initHitZoneFromConfig(this.hitZoneConfig);\n }\n\n get tooltipVisibleProps() {\n const tooltipVisibleProps: any = {};\n\n if (!this.tooltipVisible) {\n tooltipVisibleProps.visible = false;\n }\n\n return tooltipVisibleProps;\n }\n\n public componentDidMount() {\n // Make it so that if you hold down shift, you can select more than one item at once\n $(document).on('keydown', this.onKeyDown);\n $(document).on('keyup', this.onKeyUp);\n }\n\n componentWillUnmount() {\n $(document).off('keydown', this.onKeyDown as any);\n $(document).off('keyup', this.onKeyUp as any);\n }\n\n public render() {\n return (\n <div\n style={{\n position: 'relative',\n display: 'flex',\n }}\n >\n <span\n className={classnames(\n styles.trackTitle,\n 'small',\n `${this.props.isSubTrack ? 'subtrack-' : ''}trackTitle`\n )}\n >\n {this.props.trackTitle}\n </span>\n <span>\n <DefaultTooltip\n placement={this.getOverlayPlacement()}\n overlay={this.getOverlay}\n onVisibleChange={this.onTooltipVisibleChange}\n destroyTooltipOnHide={true}\n {...this.tooltipVisibleProps}\n >\n {this.hitZone}\n </DefaultTooltip>\n <span\n style={{ marginLeft: this.props.xOffset }}\n onMouseOver={this.onMouseOver}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={this.props.width}\n height={this.svgHeight}\n className=\"track-svgnode\"\n onMouseLeave={this.onSVGMouseLeave}\n style={{ overflow: 'visible' }}\n >\n <rect\n fill=\"#FFFFFF\"\n x={0}\n y={0}\n width={this.props.width}\n height={this.svgHeight}\n onClick={action(this.onBackgroundClick)}\n onMouseMove={this.onBackgroundMouseMove}\n />\n {!this.props.hideBaseline && (\n <line\n stroke=\"#666666\"\n strokeWidth=\"0.5\"\n x1={0}\n x2={this.props.width}\n y1={this.svgHeight / 2}\n y2={this.svgHeight / 2}\n />\n )}\n {this.items}\n </svg>\n </span>\n </span>\n </div>\n );\n }\n}\n","import {\n defaultHotspotFilter,\n filter3dHotspotsByMutations,\n filterLinearClusterHotspotsByMutations,\n IHotspotIndex,\n isHotspot,\n Mutation,\n} from 'cbioportal-utils';\nimport { Hotspot } from 'genome-nexus-ts-api-client';\nimport * as React from 'react';\nimport _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport { computed, makeObservable } from 'mobx';\n\nimport { HotspotFilterValue } from '../../filter/HotspotFilter';\nimport { DataFilterType } from '../../model/DataFilter';\nimport MutationMapperStore from '../../model/MutationMapperStore';\nimport { HotspotInfo } from '../hotspot/HotspotInfo';\nimport Track, { TrackProps } from './Track';\nimport { TrackItemSpec } from './TrackItem';\n\nimport hotspotImg from '../../images/cancer-hotspots.svg';\n\ntype HotspotTrackProps = TrackProps & {\n store: MutationMapperStore<Mutation>;\n hotspotIndex: IHotspotIndex;\n};\n\nexport function hotspotTooltip(\n mutations: Mutation[],\n hotspotIndex: IHotspotIndex,\n hotspots: Hotspot[]\n) {\n const hotspotsLinearCluster = filterLinearClusterHotspotsByMutations(\n mutations,\n hotspotIndex\n );\n\n const hotspots3d = filter3dHotspotsByMutations(mutations, hotspotIndex);\n\n const hotspotCount = mutations.filter(mutation =>\n isHotspot(mutation, hotspotIndex, defaultHotspotFilter)\n ).length;\n\n // generate custom info\n const residues = _.uniq(hotspots.map(hotspot => hotspot.residue));\n const residuesText = <b>{`${residues.join(', ')}`}</b>;\n const pluralSuffix = residues.length > 1 ? 's' : undefined;\n const residueInfo = (\n <span>\n on residue{pluralSuffix} {residuesText}\n </span>\n );\n\n return (\n <HotspotInfo\n isHotspot={hotspotsLinearCluster.length > 0}\n is3dHotspot={hotspots3d.length > 0}\n count={hotspotCount}\n customInfo={residueInfo}\n />\n );\n}\n\nexport function getHotspotImage() {\n return <img src={hotspotImg} alt=\"Recurrent Hotspot Symbol\" />;\n}\n\n@observer\nexport default class HotspotTrack extends React.Component<\n HotspotTrackProps,\n {}\n> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n @computed get hotspotSpecs(): TrackItemSpec[] {\n const filteredHotspotsByProteinPosStart = this.props.store\n .hotspotsByPosition;\n\n if (!_.isEmpty(filteredHotspotsByProteinPosStart)) {\n return _.keys(filteredHotspotsByProteinPosStart)\n .filter(position => Number(position) >= 0)\n .map(position => ({\n startCodon: Number(position),\n color: '#FF9900',\n tooltip: hotspotTooltip(\n this.props.store.mutationsByPosition[Number(position)],\n this.props.store.indexedHotspotData.result || {},\n filteredHotspotsByProteinPosStart[Number(position)]\n ),\n }));\n } else {\n return [];\n }\n }\n\n @computed get trackTitle() {\n return (\n <span>\n <span style={{ marginRight: 2 }}>{getHotspotImage()}</span>\n Cancer Hotspots\n </span>\n );\n }\n\n public render() {\n return (\n <Track\n dataStore={this.props.dataStore}\n defaultFilters={[\n {\n type: DataFilterType.HOTSPOT,\n values: [HotspotFilterValue.DefaultHotspot],\n },\n ]}\n width={this.props.width}\n xOffset={this.props.xOffset}\n proteinLength={this.props.proteinLength}\n trackTitle={this.trackTitle}\n trackItems={this.hotspotSpecs}\n idClassPrefix={'cancer-hotspot-'}\n />\n );\n }\n}\n","import { DataFilter } from '../model/DataFilter';\n\nexport enum OncoKbFilterValue {\n Oncogenic = 'ONCOGENIC',\n}\n\nexport type OncoKbFilter = DataFilter<OncoKbFilterValue>;\n","import classnames from 'classnames';\nimport { computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport ReactTable, { Column } from 'react-table';\n\nimport { EllipsisTextTooltip } from 'cbioportal-frontend-commons';\nimport { calcProteinChangeSortValue } from 'cbioportal-utils';\n\nimport {\n defaultSortMethod,\n defaultStringArraySortMethod,\n} from 'cbioportal-utils';\nimport { levelIconClassNames } from '../../util/OncoKbUtils';\n\nexport type OncoKbSummaryTableProps = {\n usingPublicOncoKbInstance: boolean;\n data: OncoKbSummary[];\n initialSortColumn?: string;\n initialSortDirection?: 'asc' | 'desc';\n initialItemsPerPage?: number;\n};\n\nexport type OncoKbSummary = {\n count: number;\n proteinChange: string;\n clinicalImplication: string[];\n biologicalEffect: string[];\n level: { level: string; tumorTypes: string[] }[];\n};\n\n@observer\nexport default class OncoKbSummaryTable extends React.Component<\n OncoKbSummaryTableProps,\n {}\n> {\n public static defaultProps = {\n data: [],\n initialSortColumn: 'count',\n initialSortDirection: 'desc',\n initialItemsPerPage: 10,\n };\n\n constructor(props: OncoKbSummaryTableProps) {\n super(props);\n makeObservable(this);\n this.state = {};\n }\n\n @computed\n get hasLevelData(): boolean {\n return this.props.data.find(d => d.level.length > 0) !== undefined;\n }\n\n @computed\n get columns(): Column[] {\n let columns: Column[] = [\n {\n id: 'proteinChange',\n accessor: 'proteinChange',\n Header: 'Protein Change',\n sortMethod: (a: string, b: string) =>\n defaultSortMethod(\n calcProteinChangeSortValue(a),\n calcProteinChangeSortValue(b)\n ),\n },\n {\n id: 'count',\n accessor: 'count',\n Header: 'Occurrence',\n maxWidth: 80,\n },\n {\n id: 'clinicalImplication',\n accessor: 'clinicalImplication',\n Header: 'Implication',\n Cell: (props: { original: OncoKbSummary }) => (\n <span>{props.original.clinicalImplication.join(', ')}</span>\n ),\n sortMethod: defaultStringArraySortMethod,\n minWidth: 120,\n },\n {\n id: 'biologicalEffect',\n accessor: 'biologicalEffect',\n Header: 'Effect',\n Cell: (props: { original: OncoKbSummary }) => (\n <span>{props.original.biologicalEffect.join(', ')}</span>\n ),\n sortMethod: defaultStringArraySortMethod,\n minWidth: 150,\n },\n ];\n if (!this.props.usingPublicOncoKbInstance) {\n columns.push({\n id: 'level',\n accessor: 'level',\n Header: 'Level',\n sortable: false,\n Cell: (props: { original: OncoKbSummary }) => (\n <React.Fragment>\n {props.original.level.map(level => (\n <div\n key={level.level}\n style={{\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }}\n >\n <i\n className={levelIconClassNames(level.level)}\n style={{\n verticalAlign: 'text-bottom',\n display: 'inline-block',\n }}\n />\n <span>: </span>\n <EllipsisTextTooltip\n text={level.tumorTypes.join(', ')}\n style={{\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n }}\n />\n </div>\n ))}\n </React.Fragment>\n ),\n minWidth: this.hasLevelData ? 180 : 50,\n });\n }\n return columns;\n }\n\n public render() {\n const {\n data,\n initialSortColumn,\n initialSortDirection,\n initialItemsPerPage,\n } = this.props;\n\n const showPagination =\n data.length >\n (this.props.initialItemsPerPage ||\n OncoKbSummaryTable.defaultProps.initialItemsPerPage);\n\n return (\n <div\n className={classnames(\n 'cbioportal-frontend',\n 'default-track-tooltip-table'\n )}\n >\n <ReactTable\n data={data}\n columns={this.columns}\n defaultSorted={[\n {\n id:\n initialSortColumn ||\n OncoKbSummaryTable.defaultProps\n .initialSortColumn,\n desc: initialSortDirection === 'desc',\n },\n ]}\n defaultPageSize={\n data.length > initialItemsPerPage!\n ? initialItemsPerPage\n : data.length\n }\n showPagination={showPagination}\n showPaginationTop={true}\n showPaginationBottom={false}\n className=\"-striped -highlight\"\n previousText=\"<\"\n nextText=\">\"\n />\n </div>\n );\n }\n}\n","import * as React from 'react';\nimport _ from 'lodash';\n\nimport { LEVELS, Mutation } from 'cbioportal-utils';\nimport { IndicatorQueryResp } from 'oncokb-ts-api-client';\n\nimport OncoKbSummaryTable from '../oncokb/OncoKbSummaryTable';\nimport { makeObservable } from 'mobx';\n\ntype OncoKbTrackTooltipProps = {\n usingPublicOncoKbInstance: boolean;\n mutations: Mutation[];\n indicatorData?: IndicatorQueryResp[];\n hugoGeneSymbol?: string;\n};\n\nexport function oncoKbTooltip(\n usingPublicOncoKbInstance: boolean,\n indicatorData: IndicatorQueryResp[]\n) {\n const sampleCount = indicatorData.length;\n\n // generate info\n\n const pluralSuffix = sampleCount > 1 ? 's' : undefined;\n const groupedByImplication = _.groupBy(indicatorData, 'oncogenic');\n const oncogenicKeywords = _.keys(groupedByImplication).map(keyword => (\n <b>{keyword}</b>\n ));\n let oncogenicInfo: (JSX.Element | string)[] = [];\n\n if (oncogenicKeywords.length > 1) {\n // join all except the last one with ','\n const joined = oncogenicKeywords\n .slice(0, oncogenicKeywords.length - 1)\n .reduce((prev: JSX.Element, curr: JSX.Element): any => [\n prev,\n ', ',\n curr,\n ]);\n\n oncogenicInfo.push(joined);\n\n // add the last one after \"and\"\n oncogenicInfo.push(' and ');\n oncogenicInfo.push(oncogenicKeywords[oncogenicKeywords.length - 1]);\n } else {\n // use oncogenic keywords array as is\n oncogenicInfo = oncogenicKeywords;\n }\n\n const groupedByProteinChange = _.groupBy(\n indicatorData,\n d => d.query.alteration\n );\n const tableData = _.keys(groupedByProteinChange).map(proteinChange => ({\n count: groupedByProteinChange[proteinChange].length,\n proteinChange: proteinChange,\n clinicalImplication: _.uniq(\n groupedByProteinChange[proteinChange].map(indicator =>\n indicator.oncogenic ? indicator.oncogenic : 'Unknown'\n )\n ),\n biologicalEffect: _.uniq(\n groupedByProteinChange[proteinChange].map(indicator =>\n indicator.mutationEffect && indicator.mutationEffect.knownEffect\n ? indicator.mutationEffect.knownEffect\n : 'Unknown'\n )\n ),\n level: generateLevelData(groupedByProteinChange[proteinChange]),\n }));\n\n // generate the tooltip\n\n return (\n <span>\n <b>{sampleCount}</b> sample{pluralSuffix} with {oncogenicInfo}{' '}\n mutations.\n <OncoKbSummaryTable\n usingPublicOncoKbInstance={usingPublicOncoKbInstance}\n data={tableData}\n />\n </span>\n );\n}\n\nexport function generateLevelData(indicatorData: IndicatorQueryResp[]) {\n const levels: { [level: string]: string[] } = {};\n\n indicatorData.forEach(indicator => {\n indicator.treatments.forEach(treatment => {\n const parts = treatment.level.split('_');\n const level = parts.length === 2 ? parts[1] : treatment.level;\n\n levels[level] = levels[level] || [];\n levels[level].push(indicator.query.tumorType);\n });\n });\n\n return _.keys(levels)\n .sort((a, b) =>\n LEVELS.all.indexOf(a) > LEVELS.all.indexOf(b) ? -1 : 1\n )\n .map(level => ({ level: level, tumorTypes: _.uniq(levels[level]) }));\n}\n\nexport const OncoKbTrackTooltip: React.FunctionComponent<OncoKbTrackTooltipProps> = props => {\n return props.indicatorData\n ? oncoKbTooltip(props.usingPublicOncoKbInstance, props.indicatorData)\n : null;\n};\n","import * as React from 'react';\nimport _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport { computed, makeObservable } from 'mobx';\n\nimport { OncoKbFilterValue } from '../../filter/OncoKbFilter';\nimport { DataFilterType } from '../../model/DataFilter';\nimport MutationMapperStore from '../../model/MutationMapperStore';\nimport { OncoKbTrackTooltip } from './OncoKbTrackTooltip';\nimport { default as Track, TrackProps } from './Track';\nimport { TrackItemSpec } from './TrackItem';\nimport { Mutation } from 'cbioportal-utils';\n\nimport oncoKbImg from '../../images/oncogenic-only.svg';\n\ntype OncoKbTrackProps = TrackProps & {\n store: MutationMapperStore<Mutation>;\n};\n\nexport function getOncoKbImage() {\n return <img src={oncoKbImg} alt=\"OncoKB Oncogenic Symbol\" />;\n}\n\n@observer\nexport default class OncoKbTrack extends React.Component<OncoKbTrackProps, {}> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n\n @computed get oncoKbSpecs(): TrackItemSpec[] {\n const filteredOncoKbDataByProteinPosStart = this.props.store\n .oncoKbDataByPosition;\n\n if (!_.isEmpty(filteredOncoKbDataByProteinPosStart)) {\n return _.keys(filteredOncoKbDataByProteinPosStart)\n .filter(position => Number(position) >= 0)\n .map(position => ({\n startCodon: Number(position),\n color: '#007FFF',\n tooltip: (\n <OncoKbTrackTooltip\n usingPublicOncoKbInstance={\n this.props.store.usingPublicOncoKbInstance\n }\n mutations={\n this.props.store.mutationsByPosition[\n Number(position)\n ]\n }\n indicatorData={\n filteredOncoKbDataByProteinPosStart[\n Number(position)\n ]\n }\n hugoGeneSymbol={\n this.props.store.gene.hugoGeneSymbol\n }\n />\n ),\n }));\n } else {\n return [];\n }\n }\n\n @computed get trackTitle() {\n return (\n <span>\n <span style={{ marginRight: 2 }}>{getOncoKbImage()}</span>\n OncoKB\n </span>\n );\n }\n\n public render() {\n return (\n <Track\n dataStore={this.props.dataStore}\n defaultFilters={[\n {\n type: DataFilterType.ONCOKB,\n values: [OncoKbFilterValue.Oncogenic],\n },\n ]}\n width={this.props.width}\n xOffset={this.props.xOffset}\n proteinLength={this.props.proteinLength}\n trackTitle={this.trackTitle}\n trackItems={this.oncoKbSpecs}\n idClassPrefix={'onco-kb-'}\n />\n );\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { computed, makeObservable } from 'mobx';\nimport MutationMapperStore from '../../model/MutationMapperStore';\nimport { default as Track, TrackProps } from './Track';\nimport { TrackItemSpec } from './TrackItem';\nimport {\n Mutation,\n ExonDatum,\n extractExonInformation,\n formatExonLocation,\n} from 'cbioportal-utils';\nimport { EnsemblTranscript } from 'genome-nexus-ts-api-client';\n\ntype ExonTrackProps = TrackProps & {\n store: MutationMapperStore<Mutation>;\n};\n\n@observer\nexport default class ExonTrack extends React.Component<ExonTrackProps, {}> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n\n @computed get transcriptId(): string | undefined {\n return this.props.store.activeTranscript?.result;\n }\n\n @computed get transcript(): EnsemblTranscript | undefined {\n return this.transcriptId\n ? this.props.store.transcriptsByTranscriptId[this.transcriptId]\n : undefined;\n }\n\n @computed get exonSpecs(): TrackItemSpec[] {\n if (!this.transcriptId || !this.transcript) {\n return [];\n }\n\n const exons = this.transcript!.exons;\n const utrs = this.transcript!.utrs || [];\n\n const exonInfo = exons\n ? extractExonInformation(exons, utrs, this.props.proteinLength)\n : undefined;\n\n const altColors = ['#007FFF', '#35BAF6'];\n\n return exonInfo\n ? exonInfo.map((exon: ExonDatum, index: number) => {\n const startCodon = exon.start;\n const endCodon = exon.start + exon.length;\n const exonLength = exon.length;\n const isSkippable = Number.isInteger(exonLength);\n const stringStart = formatExonLocation(startCodon);\n const stringEnd = formatExonLocation(endCodon);\n const stringLength = formatExonLocation(exonLength);\n\n return {\n color: altColors[index % 2],\n startCodon: startCodon,\n endCodon: endCodon,\n label: exon.rank.toString(),\n labelColor: '#FFFFFF',\n tooltip: (\n <span>\n <h5> Exon {exon.rank} </h5>\n Start: {stringStart}\n <br></br>\n End: {stringEnd}\n <br></br>\n Length: {stringLength}\n </span>\n ),\n };\n })\n : [];\n }\n\n @computed get trackTitle() {\n return (\n <span>\n <span style={{ marginLeft: 16 }}></span>\n Exon\n </span>\n );\n }\n\n public render() {\n return (\n <Track\n dataStore={this.props.dataStore}\n width={this.props.width}\n xOffset={this.props.xOffset}\n proteinLength={this.props.proteinLength}\n trackTitle={this.trackTitle}\n trackItems={this.exonSpecs}\n idClassPrefix={'exon-'}\n />\n );\n }\n}\n","import { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { Cache } from 'cbioportal-utils';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport ReferenceList from '../oncokb/ReferenceList';\n\ntype PtmReferenceListProps = {\n pubmedIds: string[];\n pmidData: Cache;\n};\n\nfunction extractNumericalPart(pmid: string) {\n const matched = pmid.match(/[0-9]+/);\n\n if (matched) {\n return Number(matched[0]);\n } else {\n return undefined;\n }\n}\n\n@observer\nexport default class PtmReferenceList extends React.Component<\n PtmReferenceListProps,\n {}\n> {\n public render() {\n return (\n <DefaultTooltip\n placement=\"right\"\n overlay={\n <div\n style={{\n maxWidth: 400,\n maxHeight: 400,\n overflowY: 'auto',\n }}\n >\n <ReferenceList\n pmids={\n this.props.pubmedIds\n .map(id => extractNumericalPart(id))\n .filter(id => id !== undefined) as number[]\n }\n pmidData={this.props.pmidData}\n abstracts={[]}\n />\n </div>\n }\n destroyTooltipOnHide={true}\n >\n <div style={{ textAlign: 'right' }}>\n <i className=\"fa fa-book\" style={{ color: 'black' }} />\n </div>\n </DefaultTooltip>\n );\n }\n}\n","import _ from 'lodash';\nimport classnames from 'classnames';\nimport * as React from 'react';\nimport ReactTable, { Column } from 'react-table';\nimport { computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\n\nimport {\n Cache,\n MobxCache,\n PostTranslationalModification,\n} from 'cbioportal-utils';\n\nimport PtmReferenceList from './PtmReferenceList';\n\nexport type PtmSummaryTableProps = {\n data: PostTranslationalModification[];\n pubMedCache?: MobxCache;\n initialSortColumn?: string;\n initialSortDirection?: 'asc' | 'desc';\n initialItemsPerPage?: number;\n columnOverrides?: { [id: string]: Partial<Column> };\n};\n\nexport enum PtmAnnotationTableColumnId {\n POSITION = 'position',\n TYPE = 'type',\n DESCRIPTION = 'description',\n PUBMED_IDS = 'pubmedIds',\n}\n\nexport const PTM_ANNOTATION_DEFAULT_COLUMNS: { [id: string]: Column } = {\n [PtmAnnotationTableColumnId.POSITION]: {\n id: PtmAnnotationTableColumnId.POSITION,\n accessor: (ptm: PostTranslationalModification) => ptm.residue.start,\n Header: 'Residue',\n Cell: (props: { original: PostTranslationalModification }) => (\n <div style={{ textAlign: 'right' }}>\n {getResidue(props.original)}\n </div>\n ),\n maxWidth: 64,\n },\n [PtmAnnotationTableColumnId.TYPE]: {\n id: PtmAnnotationTableColumnId.TYPE,\n accessor: (ptm: PostTranslationalModification) => ptm.type,\n Header: 'Type',\n minWidth: 100,\n },\n [PtmAnnotationTableColumnId.DESCRIPTION]: {\n id: PtmAnnotationTableColumnId.DESCRIPTION,\n accessor: (ptm: PostTranslationalModification) => ptm.description,\n Header: 'Description',\n minWidth: 180,\n },\n [PtmAnnotationTableColumnId.PUBMED_IDS]: {\n id: PtmAnnotationTableColumnId.PUBMED_IDS,\n Header: '',\n sortable: false,\n maxWidth: 32,\n },\n};\n\nfunction getResidue(ptm: PostTranslationalModification): string {\n if (ptm.residue.end && ptm.residue.end > ptm.residue.start) {\n return `${ptm.residue.start}-${ptm.residue.end}`;\n } else {\n return ptm.residue.start.toString();\n }\n}\n\n@observer\nexport default class PtmAnnotationTable extends React.Component<\n PtmSummaryTableProps\n> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n public static defaultProps = {\n data: [],\n initialSortColumn: 'type',\n initialSortDirection: 'asc',\n initialItemsPerPage: 10,\n };\n\n @computed\n get pmidData(): Cache {\n if (this.props.pubMedCache) {\n this.props.data.forEach(ptm =>\n (ptm.pubmedIds || []).forEach(id =>\n this.props.pubMedCache!.get(Number(id))\n )\n );\n }\n\n return (this.props.pubMedCache && this.props.pubMedCache.cache) || {};\n }\n\n @computed\n get columns(): Column[] {\n const columnOverrides = this.props.columnOverrides\n ? this.props.columnOverrides\n : {};\n return [\n {\n ...PTM_ANNOTATION_DEFAULT_COLUMNS[\n PtmAnnotationTableColumnId.POSITION\n ],\n ...columnOverrides[PtmAnnotationTableColumnId.POSITION],\n },\n {\n ...PTM_ANNOTATION_DEFAULT_COLUMNS[\n PtmAnnotationTableColumnId.TYPE\n ],\n ...columnOverrides[PtmAnnotationTableColumnId.TYPE],\n },\n {\n ...PTM_ANNOTATION_DEFAULT_COLUMNS[\n PtmAnnotationTableColumnId.DESCRIPTION\n ],\n ...columnOverrides[PtmAnnotationTableColumnId.DESCRIPTION],\n },\n {\n ...PTM_ANNOTATION_DEFAULT_COLUMNS[\n PtmAnnotationTableColumnId.PUBMED_IDS\n ],\n Cell: this.pubmedCellRender,\n ...columnOverrides[PtmAnnotationTableColumnId.PUBMED_IDS],\n },\n ];\n }\n\n @computed\n public get pubmedCellRender() {\n let cellRenderFn: (props: {\n original: PostTranslationalModification;\n }) => JSX.Element | null;\n\n // we need to observe the observable this.pmidData here to trigger a new render cycle,\n // observing it inside the cellRenderFn does not work because it is handled by the table library\n if (!this.props.pubMedCache) {\n cellRenderFn = () => null;\n } else if (!_.isEmpty(this.pmidData)) {\n cellRenderFn = (props: {\n original: PostTranslationalModification;\n }) =>\n !_.isEmpty(props.original.pubmedIds) ? (\n <PtmReferenceList\n pmidData={this.pmidData}\n pubmedIds={props.original.pubmedIds || []}\n />\n ) : null;\n } else {\n cellRenderFn = (props: {\n original: PostTranslationalModification;\n }) =>\n !_.isEmpty(props.original.pubmedIds) ? (\n <i className=\"fa fa-spinner fa-pulse\" />\n ) : null;\n }\n\n return cellRenderFn;\n }\n\n public render() {\n const {\n data,\n initialSortColumn,\n initialSortDirection,\n initialItemsPerPage,\n } = this.props;\n\n const showPagination =\n data.length >\n (this.props.initialItemsPerPage ||\n PtmAnnotationTable.defaultProps.initialItemsPerPage);\n\n return (\n <div\n className={classnames(\n 'cbioportal-frontend',\n 'default-track-tooltip-table'\n )}\n >\n <ReactTable\n data={data}\n columns={this.columns}\n defaultSorted={[\n {\n id:\n initialSortColumn ||\n PtmAnnotationTable.defaultProps\n .initialSortColumn,\n desc: initialSortDirection === 'desc',\n },\n ]}\n defaultPageSize={\n data.length > initialItemsPerPage!\n ? initialItemsPerPage\n : data.length\n }\n showPagination={showPagination}\n showPaginationTop={true}\n showPaginationBottom={false}\n className=\"-striped -highlight\"\n previousText=\"<\"\n nextText=\">\"\n />\n </div>\n );\n }\n}\n","import * as React from 'react';\nimport _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport { action, computed, makeObservable, observable } from 'mobx';\nimport { Collapse } from 'react-collapse';\nimport { Column } from 'react-table';\nimport {\n DefaultTooltip,\n EllipsisTextTooltip,\n} from 'cbioportal-frontend-commons';\nimport {\n compareByPtmTypePriority,\n ptmColor,\n MobxCache,\n Mutation,\n PostTranslationalModification,\n} from 'cbioportal-utils';\n\nimport MutationMapperStore from '../../model/MutationMapperStore';\nimport PtmAnnotationTable from '../ptm/PtmAnnotationTable';\nimport { default as Track, TrackProps } from './Track';\nimport { TrackItemSpec } from './TrackItem';\n\nimport styles from './ptmTrackStyles.module.scss';\n\ntype PtmTrackProps = TrackProps & {\n store: MutationMapperStore<Mutation>;\n pubMedCache?: MobxCache;\n ensemblTranscriptId?: string;\n subTrackMargin?: number;\n dataSource?: string;\n dataSourceUrl?: string;\n ptmTooltipColumnOverrides?: { [id: string]: Partial<Column> };\n collapsed?: boolean;\n};\n\nexport const PtmTooltip: React.FunctionComponent<{\n ptms: PostTranslationalModification[];\n pubMedCache?: MobxCache;\n columnOverrides?: { [id: string]: Partial<Column> };\n}> = props => {\n return (\n <PtmAnnotationTable\n data={props.ptms}\n pubMedCache={props.pubMedCache}\n columnOverrides={props.columnOverrides}\n />\n );\n};\n\nexport function ptmInfoTooltip(\n transcriptId?: string,\n dataSource?: string,\n dataSourceUrl?: string\n) {\n let dataSourceDiv = null;\n\n if (dataSource) {\n dataSourceDiv = (\n <div>\n Data Source:{' '}\n {dataSourceUrl ? (\n <a href={dataSourceUrl} target=\"_blank\">\n {dataSource}\n </a>\n ) : (\n dataSource\n )}\n </div>\n );\n }\n\n return (\n <div style={{ maxWidth: 400 }}>\n <p>\n Displays all Post Translational Modifications (PTMs) available\n {transcriptId && (\n <span> for the Ensembl transcript {transcriptId}</span>\n )}\n .\n </p>\n <p className={styles.ptmLegend}>\n PTM types and corresponding color codes are as follows:\n <ul>\n <li className={styles.Phosphorylation}>\n <strong>Phosphorylation</strong>\n </li>\n <li className={styles.Acetylation}>\n <strong>Acetylation</strong>\n </li>\n <li className={styles.Ubiquitination}>\n <strong>Ubiquitination</strong>\n </li>\n <li className={styles.Methylation}>\n <strong>Methylation</strong>\n </li>\n <li className={styles.multiType}>\n <strong>Multiple Type</strong>: Sites with more than one\n PTM type\n </li>\n <li className={styles.default}>\n <strong>Other</strong>: All other PTM types\n </li>\n </ul>\n </p>\n {dataSourceDiv}\n </div>\n );\n}\n\nfunction filterPtmsBySource(\n ptms: PostTranslationalModification[],\n source?: string\n): PostTranslationalModification[] {\n return source ? ptms.filter(ptm => ptm.source === source) : ptms;\n}\n\n@observer\nexport default class PtmTrack extends React.Component<PtmTrackProps, {}> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n public static defaultProps = {\n subTrackMargin: 25,\n };\n\n @observable\n private expanded = !this.props.collapsed;\n\n @computed get ptmSpecs(): TrackItemSpec[] {\n const ptmDataByProteinPosStart = this.props.store\n .ptmDataByProteinPosStart.result;\n\n if (ptmDataByProteinPosStart && !_.isEmpty(ptmDataByProteinPosStart)) {\n return _.reduce(\n ptmDataByProteinPosStart,\n this.ptmDataToTrackItemSpecsReducer,\n []\n );\n } else {\n return [];\n }\n }\n\n @computed get ptmSubSpecs(): { title: string; specs: TrackItemSpec[] }[] {\n const ptmDataByTypeAndProteinPosStart = this.props.store\n .ptmDataByTypeAndProteinPosStart.result;\n\n if (\n ptmDataByTypeAndProteinPosStart &&\n !_.isEmpty(ptmDataByTypeAndProteinPosStart)\n ) {\n return _.keys(ptmDataByTypeAndProteinPosStart)\n .sort(compareByPtmTypePriority)\n .map(type => ({\n title: type,\n specs: _.reduce(\n ptmDataByTypeAndProteinPosStart[type],\n this.ptmDataToTrackItemSpecsReducer,\n []\n ),\n }))\n .filter(s => !_.isEmpty(s.specs));\n } else {\n return [];\n }\n }\n\n @computed get mainTrackTitle() {\n return (\n <span style={{ cursor: 'pointer' }}>\n <span onClick={this.handleToggleExpand}>{this.expander}</span>\n <DefaultTooltip\n placement=\"left\"\n overlay={() =>\n ptmInfoTooltip(\n this.props.ensemblTranscriptId,\n this.props.dataSource,\n this.props.dataSourceUrl\n )\n }\n destroyTooltipOnHide={true}\n >\n <span\n style={{ marginLeft: 4 }}\n onClick={this.handleToggleExpand}\n >\n PTM{' '}\n {this.props.dataSource\n ? `(${this.props.dataSource})`\n : 'Sites'}{' '}\n <i className=\"fa fa-info-circle\" />\n </span>\n </DefaultTooltip>\n </span>\n );\n }\n\n @computed get expander(): JSX.Element | null {\n const className = this.hasSubTracks\n ? this.mainTrackHidden\n ? 'fa fa-caret-down'\n : 'fa fa-caret-right'\n : null;\n\n if (className) {\n return (\n <i className={className} style={{ width: 10, marginLeft: 2 }} />\n );\n }\n\n return null;\n }\n\n @computed get subTrackMargin() {\n return (\n this.props.subTrackMargin || PtmTrack.defaultProps.subTrackMargin\n );\n }\n\n @computed get subTrackTitleWidth() {\n return this.props.xOffset\n ? this.props.xOffset - this.subTrackMargin\n : 0;\n }\n\n @computed get subTracks() {\n return this.hasSubTracks\n ? this.ptmSubSpecs.map((item, index) => (\n <Track\n key={item.title}\n dataStore={this.props.dataStore}\n xOffset={this.props.xOffset}\n trackTitle={\n <span\n style={{\n marginLeft: this.subTrackMargin,\n width: this.subTrackTitleWidth,\n display: 'flex',\n }}\n >\n <EllipsisTextTooltip\n text={item.title}\n style={{\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n }}\n />\n </span>\n }\n width={this.props.width}\n proteinLength={this.props.proteinLength}\n trackItems={item.specs}\n idClassPrefix={`ptm-${index}-`}\n isSubTrack={true}\n />\n ))\n : null;\n }\n\n @computed get mainTrackHidden() {\n return this.expanded && this.hasSubTracks;\n }\n\n @computed get hasSubTracks() {\n return this.ptmSubSpecs.length > 0;\n }\n\n public render() {\n return (\n <span>\n <Track\n dataStore={this.props.dataStore}\n width={this.props.width}\n xOffset={this.props.xOffset}\n proteinLength={this.props.proteinLength}\n trackTitle={this.mainTrackTitle}\n trackItems={this.mainTrackHidden ? [] : this.ptmSpecs}\n hideBaseline={this.mainTrackHidden}\n idClassPrefix={'ptm-'}\n />\n <Collapse isOpened={this.mainTrackHidden}>\n <span>{this.subTracks}</span>\n </Collapse>\n </span>\n );\n }\n\n private ptmDataToTrackItemSpecsReducer = (\n acc: TrackItemSpec[],\n ptmData: PostTranslationalModification[],\n position: string\n ): TrackItemSpec[] => {\n const ptms =\n Number(position) >= 0\n ? filterPtmsBySource(ptmData, this.props.dataSource)\n : [];\n\n if (!_.isEmpty(ptms)) {\n acc.push({\n startCodon: Number(position),\n color: ptmColor(ptms),\n tooltip: (\n <PtmTooltip\n ptms={ptms}\n pubMedCache={this.props.pubMedCache}\n columnOverrides={this.props.ptmTooltipColumnOverrides}\n />\n ),\n });\n }\n\n return acc;\n };\n\n @action.bound\n private handleToggleExpand() {\n this.expanded = !this.expanded;\n }\n}\n","import * as React from 'react';\nimport * as _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport { action, computed, makeObservable, observable } from 'mobx';\n\nimport { default as Track, TrackProps } from './Track';\nimport { Collapse } from 'react-collapse';\nimport { TrackItemSpec } from './TrackItem';\nimport { MutationMapperStore } from '../../model/MutationMapperStore';\nimport {\n Mutation,\n UniprotTopology,\n UniprotTopologyTypeToTitle,\n UniprotTopologyTrackToColor,\n} from 'cbioportal-utils';\n\nimport {\n DefaultTooltip,\n EllipsisTextTooltip,\n} from 'cbioportal-frontend-commons';\n\ntype UniprotTopologyTrackProps = TrackProps & {\n store: MutationMapperStore<Mutation>;\n subTrackMargin?: number;\n collapsed?: boolean;\n};\n\nfunction topologyRectangleBlockSpec(\n color: string,\n title: string,\n uniprotData: UniprotTopology\n) {\n return {\n color: color,\n startCodon: uniprotData.startPosition,\n endCodon: uniprotData.endPosition,\n tooltip: (\n <span>\n <h5>{title}</h5>\n Start: {uniprotData.startPosition}\n <br></br>\n End: {uniprotData.endPosition}\n <br></br>\n Length: {uniprotData.endPosition - uniprotData.startPosition}\n <br></br>\n Description: {uniprotData.description}\n </span>\n ),\n };\n}\n\nexport const UniprotTopologyTrackDescriptionTooltip: React.FunctionComponent<{\n displayList: string[];\n uniprotId?: string;\n}> = props => {\n const dataSourceDiv = props.uniprotId ? (\n <div>\n Data Source:{' '}\n <a\n href={`https://www.uniprot.org/uniprot/${props.uniprotId}`}\n target=\"_blank\"\n >\n UniProt\n </a>\n </div>\n ) : (\n <div>\n Data Source:{' '}\n <a href={'https://www.uniprot.org/'} target=\"_blank\">\n UniProt\n </a>\n </div>\n );\n return (\n <div style={{ maxWidth: 400 }}>\n <p>\n Information of the subcellular location of the mature protein.\n </p>\n {props.displayList.length > 0 && (\n <p>\n Domains and corresponding color codes are as follows:\n <ul>\n {_.map(props.displayList, type => (\n <li\n style={{\n color: UniprotTopologyTrackToColor[type],\n }}\n >\n <strong>\n {UniprotTopologyTypeToTitle[type]}\n </strong>\n </li>\n ))}\n </ul>\n </p>\n )}\n {dataSourceDiv}\n </div>\n );\n};\n\n@observer\nexport default class UniprotTopologyTrack extends React.Component<\n UniprotTopologyTrackProps,\n {}\n> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n public static defaultProps = {\n subTrackMargin: 25,\n };\n\n @observable\n private expanded = !this.props.collapsed;\n\n @computed get subTrackMargin() {\n return (\n this.props.subTrackMargin ||\n UniprotTopologyTrack.defaultProps.subTrackMargin\n );\n }\n\n @computed get subTrackTitleWidth() {\n return this.props.xOffset\n ? this.props.xOffset - this.subTrackMargin\n : 0;\n }\n\n @computed get uniprotTopologySpecs(): TrackItemSpec[] {\n const uniprotData = this.props.store.uniprotTopologyData.result;\n if (uniprotData && !_.isEmpty(uniprotData)) {\n return _.reduce(\n uniprotData,\n this.uniprotDataToTrackItemSpecsReducer,\n []\n );\n } else {\n return [];\n }\n }\n\n @computed get expander(): JSX.Element | null {\n const className = this.hasSubTracks\n ? this.mainTrackHidden\n ? 'fa fa-caret-down'\n : 'fa fa-caret-right'\n : null;\n\n if (className) {\n return (\n <i className={className} style={{ width: 10, marginLeft: 2 }} />\n );\n }\n return null;\n }\n\n @computed get mainTrackTitle() {\n return (\n <span style={{ cursor: 'pointer' }}>\n <span onClick={this.handleToggleExpand}>{this.expander}</span>\n <DefaultTooltip\n placement=\"right\"\n overlay={\n <UniprotTopologyTrackDescriptionTooltip\n displayList={this.uniprotTopologyTypes}\n uniprotId={this.props.store.uniprotId.result}\n />\n }\n destroyTooltipOnHide={true}\n >\n <span\n style={{ marginLeft: 4 }}\n onClick={this.handleToggleExpand}\n >\n Topology <i className=\"fa fa-info-circle\" />\n </span>\n </DefaultTooltip>\n </span>\n );\n }\n\n @computed get uniprotTopologyTypes(): string[] {\n const uniprotData = this.props.store.uniprotTopologyData.result;\n const uniprotDataByType = _.uniq(_.map(uniprotData, data => data.type));\n return uniprotDataByType || [];\n }\n\n @computed get uniprotTopologySubSpecs(): {\n title: string;\n specs: TrackItemSpec[];\n }[] {\n const uniprotData = this.props.store.uniprotTopologyData.result;\n const uniprotDataByType = _.groupBy(uniprotData, data => data.type);\n return _.keys(uniprotDataByType)\n .map(type => ({\n title: UniprotTopologyTypeToTitle[type],\n specs: _.reduce(\n uniprotDataByType[type],\n this.uniprotDataToTrackItemSpecsReducer,\n []\n ),\n }))\n .filter(s => !_.isEmpty(s.specs));\n }\n\n private uniprotDataToTrackItemSpecsReducer = (\n acc: TrackItemSpec[],\n uniprotData: UniprotTopology\n ): TrackItemSpec[] => {\n const trackColor = UniprotTopologyTrackToColor[uniprotData.type];\n const trackTitle = UniprotTopologyTypeToTitle[uniprotData.type];\n\n if (trackTitle && trackColor) {\n acc.push(\n topologyRectangleBlockSpec(trackColor, trackTitle, uniprotData)\n );\n }\n return acc;\n };\n\n @computed get mainTrackHidden() {\n return this.expanded && this.hasSubTracks;\n }\n\n @computed get hasSubTracks() {\n return this.uniprotTopologySubSpecs.length > 0;\n }\n\n @computed get subTracks() {\n return this.hasSubTracks\n ? this.uniprotTopologySubSpecs.map((item, index) => (\n <Track\n key={item.title}\n dataStore={this.props.dataStore}\n xOffset={this.props.xOffset}\n trackTitle={\n <span\n style={{\n marginLeft: this.subTrackMargin,\n width: this.subTrackTitleWidth,\n display: 'flex',\n }}\n >\n <EllipsisTextTooltip\n text={item.title}\n style={{\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n }}\n />\n </span>\n }\n width={this.props.width}\n proteinLength={this.props.proteinLength}\n trackItems={item.specs}\n idClassPrefix={`uniprot-topology-${index}-`}\n isSubTrack={true}\n />\n ))\n : null;\n }\n\n public render() {\n return (\n <span>\n <Track\n dataStore={this.props.dataStore}\n width={this.props.width}\n xOffset={this.props.xOffset}\n proteinLength={this.props.proteinLength}\n trackTitle={this.mainTrackTitle}\n trackItems={\n this.mainTrackHidden ? [] : this.uniprotTopologySpecs\n }\n hideBaseline={this.mainTrackHidden}\n idClassPrefix={'uniprot-topology-track-'}\n />\n <Collapse isOpened={this.mainTrackHidden}>\n <span>{this.subTracks}</span>\n </Collapse>\n </span>\n );\n }\n\n @action.bound\n private handleToggleExpand() {\n this.expanded = !this.expanded;\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { computed, makeObservable } from 'mobx';\nimport {\n MobxCache,\n Mutation,\n PTM_SOURCE_URL,\n PtmSource,\n} from 'cbioportal-utils';\n\nimport MutationMapperStore from '../../model/MutationMapperStore';\nimport { TrackName, TrackVisibility } from './TrackSelector';\nimport HotspotTrack from './HotspotTrack';\nimport OncoKbTrack from './OncoKbTrack';\nimport ExonTrack from './ExonTrack';\nimport PtmTrack from './PtmTrack';\n\nimport './defaultTrackTooltipTable.scss';\nimport { PtmAnnotationTableColumnId } from '../ptm/PtmAnnotationTable';\nimport UniprotTopologyTrack from './UniprotTopologyTrack';\n\ntype TrackPanelProps = {\n store: MutationMapperStore<Mutation>;\n pubMedCache?: MobxCache;\n geneWidth: number;\n proteinLength?: number;\n geneXOffset?: number;\n maxHeight?: number;\n trackVisibility?: TrackVisibility;\n tracks?: TrackName[];\n collapsePtmTrack?: boolean;\n collapseUniprotTopologyTrack?: boolean;\n};\n\n@observer\nexport default class TrackPanel extends React.Component<TrackPanelProps, {}> {\n public static defaultProps: Partial<TrackPanelProps> = {\n tracks: [\n TrackName.CancerHotspots,\n TrackName.OncoKB,\n TrackName.dbPTM,\n TrackName.Exon,\n TrackName.UniprotTopology,\n ],\n };\n\n constructor(props: TrackPanelProps) {\n super(props);\n makeObservable(this);\n }\n\n @computed get proteinLength() {\n const proteinLength = this.props.proteinLength || 0;\n return Math.max(proteinLength, 1);\n }\n\n get availableTracks(): { [trackName: string]: JSX.Element | null } {\n return {\n [TrackName.CancerHotspots]:\n !this.props.trackVisibility ||\n this.props.trackVisibility[TrackName.CancerHotspots] ===\n 'visible' ? (\n <HotspotTrack\n store={this.props.store}\n dataStore={this.props.store.dataStore}\n hotspotIndex={\n this.props.store.indexedHotspotData.result || {}\n }\n width={this.props.geneWidth}\n xOffset={this.props.geneXOffset}\n proteinLength={this.proteinLength}\n />\n ) : null,\n [TrackName.OncoKB]:\n !this.props.trackVisibility ||\n this.props.trackVisibility[TrackName.OncoKB] === 'visible' ? (\n <OncoKbTrack\n store={this.props.store}\n dataStore={this.props.store.dataStore}\n width={this.props.geneWidth}\n xOffset={this.props.geneXOffset}\n proteinLength={this.proteinLength}\n />\n ) : null,\n [TrackName.dbPTM]: this.getPtmTrack(\n TrackName.dbPTM,\n PtmSource.dbPTM\n ),\n [TrackName.UniprotPTM]: this.getPtmTrack(\n TrackName.UniprotPTM,\n PtmSource.Uniprot\n ),\n [TrackName.Exon]:\n !this.props.trackVisibility ||\n this.props.trackVisibility[TrackName.Exon] === 'visible' ? (\n <ExonTrack\n store={this.props.store}\n dataStore={this.props.store.dataStore}\n width={this.props.geneWidth}\n xOffset={this.props.geneXOffset}\n proteinLength={this.proteinLength}\n />\n ) : null,\n [TrackName.UniprotTopology]:\n !this.props.trackVisibility ||\n this.props.trackVisibility[TrackName.UniprotTopology] ===\n 'visible' ? (\n <UniprotTopologyTrack\n store={this.props.store}\n dataStore={this.props.store.dataStore}\n width={this.props.geneWidth}\n xOffset={this.props.geneXOffset}\n proteinLength={this.proteinLength}\n collapsed={this.props.collapseUniprotTopologyTrack}\n />\n ) : null,\n };\n }\n\n public render() {\n return (\n <div\n style={{\n overflowY: 'hidden',\n maxHeight: this.props.maxHeight,\n position: 'relative',\n }}\n >\n {this.props\n .tracks!.map(t => this.availableTracks[t])\n .filter(e => e !== undefined && e !== null)}\n </div>\n );\n }\n\n private getPtmTrack(trackName: TrackName, ptmSource: PtmSource) {\n return !this.props.trackVisibility ||\n this.props.trackVisibility[trackName] === 'visible' ? (\n <PtmTrack\n store={this.props.store}\n pubMedCache={this.props.pubMedCache}\n ensemblTranscriptId={this.props.store.activeTranscript?.result}\n dataStore={this.props.store.dataStore}\n width={this.props.geneWidth}\n xOffset={this.props.geneXOffset}\n proteinLength={this.proteinLength}\n dataSource={ptmSource}\n dataSourceUrl={PTM_SOURCE_URL[ptmSource]}\n ptmTooltipColumnOverrides={this.getPtmTooltipColumnOverrides(\n ptmSource\n )}\n collapsed={this.props.collapsePtmTrack}\n />\n ) : null;\n }\n\n private getPtmTooltipColumnOverrides(ptmSource: PtmSource) {\n if (ptmSource === PtmSource.dbPTM) {\n // hide description column for dbPTM, we don't have description data.\n return {\n [PtmAnnotationTableColumnId.DESCRIPTION]: {\n show: false,\n },\n };\n } else {\n return undefined;\n }\n }\n}\n","import { PfamDomain, PfamDomainRange } from 'genome-nexus-ts-api-client';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { MobxCache } from 'cbioportal-utils';\n\nexport interface IDomainTooltipProps {\n mutationAlignerCache?: MobxCache<string>;\n range: PfamDomainRange;\n domain: PfamDomain | undefined;\n pfamDomainId: string;\n}\n\ninterface IMutationAlignerLinkProps {\n mutationAlignerCache?: MobxCache<string>;\n pfamAccession: string;\n}\n\nconst MutationAlignerLink = observer((props: IMutationAlignerLinkProps) => {\n function getMutationAlignerCacheData(pfamAccession: string) {\n return props.mutationAlignerCache && props.mutationAlignerCache.cache\n ? props.mutationAlignerCache.cache[pfamAccession]\n : null;\n }\n\n if (props.mutationAlignerCache) {\n props.mutationAlignerCache.get(props.pfamAccession);\n }\n\n const mutationAlignerCacheData = getMutationAlignerCacheData(\n props.pfamAccession\n );\n\n return mutationAlignerCacheData &&\n mutationAlignerCacheData.status === 'complete' &&\n mutationAlignerCacheData.data ? (\n <a href={mutationAlignerCacheData.data} target=\"_blank\">\n Mutation Aligner\n </a>\n ) : null;\n});\n\nconst DomainTooltip = (props: IDomainTooltipProps) => {\n const { range, domain, pfamDomainId } = props;\n\n const pfamAccession = domain ? domain.pfamAccession : pfamDomainId;\n\n // if no domain info, then just display the accession\n const domainInfo = domain\n ? `${domain.name}: ${domain.description}`\n : pfamAccession;\n\n return (\n <div style={{ maxWidth: 200 }}>\n <div>\n {domainInfo} ({range.pfamDomainStart} - {range.pfamDomainEnd})\n </div>\n <div>\n <a\n style={{ marginRight: '5px' }}\n href={`http://pfam.xfam.org/family/${pfamAccession}`}\n target=\"_blank\"\n >\n PFAM\n </a>\n <MutationAlignerLink\n mutationAlignerCache={props.mutationAlignerCache}\n pfamAccession={pfamAccession}\n />\n </div>\n </div>\n );\n};\n\nexport default DomainTooltip;\n","import autobind from 'autobind-decorator';\nimport { MobxCache, Mutation } from 'cbioportal-utils';\nimport { PfamDomain, PfamDomainRange } from 'genome-nexus-ts-api-client';\nimport _ from 'lodash';\nimport { action, computed, observable, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { Collapse } from 'react-collapse';\n\nimport $ from 'jquery';\n\nimport { DomainSpec } from '../../model/DomainSpec';\nimport { LollipopPlotControlsConfig } from '../../model/LollipopPlotControlsConfig';\nimport {\n LollipopLabel,\n LollipopPlacement,\n LollipopSpec,\n} from '../../model/LollipopSpec';\nimport { MutationMapperStore } from '../../model/MutationMapperStore';\nimport { SequenceSpec } from '../../model/SequenceSpec';\nimport { DefaultLollipopPlotControlsConfig } from '../../store/DefaultLollipopPlotControlsConfig';\nimport {\n byMiddlemostPosition,\n byMutationCount,\n byWhetherExistsInADomain,\n calcCountRange,\n calcYMaxInput,\n getYAxisMaxInputValue,\n lollipopLabelText,\n lollipopLabelTextAnchor,\n} from '../../util/LollipopPlotUtils';\nimport {\n DEFAULT_PROTEIN_IMPACT_TYPE_COLORS,\n getColorForProteinImpactType,\n} from '../../util/MutationTypeUtils';\nimport { generatePfamDomainColorMap } from '../../util/PfamUtils';\nimport { initDefaultTrackVisibility } from '../../util/TrackUtils';\nimport DefaultLollipopPlotLegend from './DefaultLollipopPlotLegend';\nimport LollipopPlot from '../lollipopPlot/LollipopPlot';\nimport LollipopMutationPlotControls from './LollipopMutationPlotControls';\nimport {\n TrackDataStatus,\n TrackName,\n TrackVisibility,\n} from '../track/TrackSelector';\nimport TrackPanel from '../track/TrackPanel';\n\nimport './lollipopMutationPlot.scss';\nimport DomainTooltip from '../lollipopPlot/DomainTooltip';\n\nconst DEFAULT_PROTEIN_LENGTH = 10;\n\nconst SVG_NS = 'http://www.w3.org/2000/svg';\nfunction createTextTag(\n textNode?: Text,\n style: string = '',\n x: number = 0,\n y: number = 0\n) {\n const text = (document.createElementNS(\n SVG_NS,\n 'text'\n ) as unknown) as SVGTextElement;\n $(text).attr({ style, x, y });\n if (textNode) {\n text.append(textNode);\n }\n return text;\n}\n\nfunction createGroupTag(transform?: string) {\n const group = (document.createElementNS(\n SVG_NS,\n 'g'\n ) as unknown) as SVGGElement;\n group.setAttribute('transform', transform || '');\n return group;\n}\n\nexport type LollipopMutationPlotProps<T extends Mutation> = {\n store: MutationMapperStore<T>;\n controlsConfig?: LollipopPlotControlsConfig;\n pubMedCache?: MobxCache;\n mutationAlignerCache?: MobxCache<string>;\n getLollipopColor?: (mutations: Partial<T>[]) => string;\n isPutativeDriver?: (mutation: Partial<T>) => boolean;\n getMutationCount?: (mutation: Partial<T>) => number;\n topYAxisSymbol?: string;\n bottomYAxisSymbol?: string;\n topYAxisDefaultMax?: number;\n topYAxisDefaultMin?: number;\n yMaxFractionDigits?: number;\n yMaxLabelPostfix?: string;\n showYAxis?: boolean;\n yAxisSameScale?: boolean;\n bottomYAxisDefaultMax?: number;\n bottomYAxisDefaultMin?: number;\n yAxisLabelPadding?: number;\n lollipopTooltipCountInfo?: (\n count: number,\n mutations?: Partial<T>[]\n ) => JSX.Element;\n customControls?: JSX.Element;\n onXAxisOffset?: (offset: number) => void;\n geneWidth: number;\n vizHeight?: number;\n trackVisibility?: TrackVisibility;\n tracks?: TrackName[];\n trackDataStatus?: TrackDataStatus;\n showTrackSelector?: boolean;\n onTrackVisibilityChange?: (selectedTrackIds: string[]) => void;\n autoHideControls?: boolean;\n showYMaxSlider?: boolean;\n showLegendToggle?: boolean;\n showDownloadControls?: boolean;\n filterResetPanel?: JSX.Element;\n legend?: JSX.Element;\n loadingIndicator?: JSX.Element;\n collapsePtmTrack?: boolean;\n collapseUniprotTopologyTrack?: boolean;\n};\n\n@observer\nexport default class LollipopMutationPlot<\n T extends Mutation\n> extends React.Component<LollipopMutationPlotProps<T>, {}> {\n public static defaultProps: Partial<LollipopMutationPlotProps<any>> = {\n yMaxFractionDigits: 1,\n yAxisSameScale: true,\n };\n\n @observable private mouseInPlot: boolean = true;\n @observable private yMaxInputFocused: boolean = false;\n @observable private geneXOffset: number;\n @observable\n private _trackVisibility: TrackVisibility = initDefaultTrackVisibility();\n\n private _controlsConfig: LollipopPlotControlsConfig = new DefaultLollipopPlotControlsConfig();\n\n private handlers: any;\n private divContainer: HTMLDivElement;\n\n @computed private get showControls(): boolean {\n return this.props.autoHideControls\n ? this.yMaxInputFocused || this.mouseInPlot\n : true;\n }\n\n @computed private get trackVisibility(): TrackVisibility {\n return this.props.trackVisibility || this._trackVisibility;\n }\n\n @computed private get controlsConfig(): LollipopPlotControlsConfig {\n return this.props.controlsConfig || this._controlsConfig;\n }\n\n private lollipopTooltip(\n mutationsAtPosition: T[],\n countsByPosition: { [pos: number]: number }\n ): JSX.Element {\n const codon = mutationsAtPosition[0].proteinPosStart;\n const count = countsByPosition[codon];\n const countInfo = this.props.lollipopTooltipCountInfo ? (\n this.props.lollipopTooltipCountInfo(count, mutationsAtPosition)\n ) : (\n <strong>\n {count} mutation{`${count !== 1 ? 's' : ''}`}\n </strong>\n );\n const label = lollipopLabelText(mutationsAtPosition);\n\n return (\n <div>\n {countInfo}\n <br />\n <span>AA Change: {label}</span>\n </div>\n );\n }\n\n @computed\n protected get groups(): string[] | undefined {\n if (this.props.store.groupedMutationsByPosition.length > 0) {\n return this.props.store.groupedMutationsByPosition.map(\n g => g.group\n );\n } else {\n return undefined;\n }\n }\n\n @computed\n protected get lollipops(): LollipopSpec[] {\n let lollipops: LollipopSpec[] = [];\n\n // ignore grouped mutations with less than 2 groups\n // also ignore other groups except first and second\n if (this.props.store.groupedMutationsByPosition.length > 1) {\n const groupTop = this.props.store.groupedMutationsByPosition[0]\n .group;\n const mutationsTop = this.props.store.groupedMutationsByPosition[0]\n .mutations;\n const countsTop = this.props.store\n .uniqueGroupedMutationCountsByPosition[0].counts;\n lollipops = this.getLollipopSpecs(\n mutationsTop,\n countsTop,\n groupTop,\n LollipopPlacement.TOP\n );\n\n const groupBottom = this.props.store.groupedMutationsByPosition[1]\n .group;\n const mutationsBottom = this.props.store\n .groupedMutationsByPosition[1].mutations;\n const countsBottom = this.props.store\n .uniqueGroupedMutationCountsByPosition[1].counts;\n lollipops = lollipops.concat(\n this.getLollipopSpecs(\n mutationsBottom,\n countsBottom,\n groupBottom,\n LollipopPlacement.BOTTOM\n )\n );\n } else if (\n Object.keys(this.props.store.mutationsByPosition).length > 0\n ) {\n return this.getLollipopSpecs(\n this.props.store.mutationsByPosition,\n this.props.store.uniqueMutationCountsByPosition\n );\n }\n\n return lollipops;\n }\n\n protected getLollipopSpecs(\n mutationsByPosition: { [pos: number]: T[] },\n countsByPosition: { [pos: number]: number },\n group?: string,\n placement?: LollipopPlacement\n ): LollipopSpec[] {\n // positionMutations: Mutation[][], in descending order of mutation count\n const positionMutations = Object.keys(mutationsByPosition)\n .map(position => mutationsByPosition[parseInt(position, 10)])\n .sort((x, y) =>\n countsByPosition[x[0].proteinPosStart] <\n countsByPosition[y[0].proteinPosStart]\n ? 1\n : -1\n );\n\n const specs: LollipopSpec[] = this.createInitialSpecs(\n positionMutations,\n countsByPosition,\n group,\n placement\n );\n const noLabelsAreShown =\n !_.isEmpty(specs) && specs.every(spec => !spec.label!.show);\n if (noLabelsAreShown) {\n this.labelOneLollipopByDefault(\n this.getRemainingDomains(positionMutations),\n specs\n );\n }\n\n return specs;\n }\n\n private createInitialSpecs(\n positionMutations: T[][],\n countsByPosition: { [pos: number]: number },\n group?: string,\n placement?: LollipopPlacement\n ): LollipopSpec[] {\n const specs: LollipopSpec[] = [];\n const numLabelsToShow = this.getNumLabelsToShow(\n positionMutations,\n countsByPosition\n );\n const minMutationsToShowLabel = 0;\n\n positionMutations.forEach((mutations, index) => {\n const codon = mutations[0].proteinPosStart;\n if (this.isInvalidPosition(codon)) {\n return;\n }\n\n const mutationCount = countsByPosition[codon];\n const showLabel =\n index < numLabelsToShow &&\n mutationCount > minMutationsToShowLabel;\n const label = this.createLabel(mutations, codon, showLabel);\n\n specs.push({\n codon,\n group,\n placement,\n count: mutationCount,\n tooltip: this.lollipopTooltip(mutations, countsByPosition),\n color: this.props.getLollipopColor\n ? this.props.getLollipopColor(mutations)\n : getColorForProteinImpactType(\n mutations,\n DEFAULT_PROTEIN_IMPACT_TYPE_COLORS,\n this.props.getMutationCount,\n this.props.isPutativeDriver\n ),\n label,\n });\n });\n\n return specs;\n }\n\n private getNumLabelCandidates(\n positionMutations: T[][],\n countsByPosition: { [pos: number]: number }\n ): number {\n // maxCount: max number of mutations at a position\n const maxCount =\n positionMutations && positionMutations[0]\n ? countsByPosition[positionMutations[0][0].proteinPosStart]\n : 0;\n\n // numLabelCandidates: number of positions with maxCount mutations\n let numLabelCandidates = positionMutations\n ? positionMutations.findIndex(\n mutations =>\n countsByPosition[mutations[0].proteinPosStart] !==\n maxCount\n )\n : -1;\n\n if (numLabelCandidates === -1) {\n numLabelCandidates = positionMutations\n ? positionMutations.length\n : 0;\n }\n return numLabelCandidates;\n }\n\n private labelOneLollipopByDefault(\n remainingDomains: PfamDomainRange[],\n specs: LollipopSpec[]\n ): void {\n const codons = specs.map(spec => spec.codon);\n const averageCodon = (Math.max(...codons) + Math.min(...codons)) / 2;\n const candidateIndex = 0;\n specs = specs\n .sort(byMiddlemostPosition(averageCodon))\n .sort(byWhetherExistsInADomain(remainingDomains))\n .sort(byMutationCount);\n specs[candidateIndex].label!.show = true;\n }\n\n private getNumLabelsToShow(\n positionMutations: T[][],\n countsByPosition: { [pos: number]: number }\n ): number {\n let numLabelCandidates = this.getNumLabelCandidates(\n positionMutations,\n countsByPosition\n );\n\n const maxAllowedTies = 2;\n const maxLabels = 1;\n\n const areMoreCandidatesThanShowable = numLabelCandidates > maxLabels;\n const areMoreCandidatesThanAllowedForATie =\n numLabelCandidates > maxAllowedTies;\n const shouldNotShowLabels =\n areMoreCandidatesThanShowable &&\n areMoreCandidatesThanAllowedForATie;\n\n return shouldNotShowLabels\n ? 0\n : Math.min(numLabelCandidates, maxLabels);\n }\n\n private isInvalidPosition(codon: number): boolean | '' | undefined {\n const notInDomain = isNaN(codon) || codon < 0;\n const isBeyondStopCodon =\n this.props.store.allTranscripts.isComplete &&\n this.props.store.allTranscripts.result &&\n this.props.store.activeTranscript &&\n this.props.store.activeTranscript.isComplete &&\n this.props.store.activeTranscript.result &&\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ] &&\n // we want to show the stop codon too (so we allow proteinLength +1 as well)\n codon >\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ].proteinLength +\n 1;\n\n return notInDomain || isBeyondStopCodon;\n }\n\n private getRemainingDomains(positionMutations: T[][]): PfamDomainRange[] {\n if (\n this.props.store.activeTranscript &&\n this.props.store.activeTranscript.result &&\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ].pfamDomains.length !== 0\n ) {\n const pfamDomains = this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript!.result!\n ].pfamDomains;\n\n const domainHasMutations = (domain: PfamDomainRange) =>\n positionMutations.some(mutation => {\n const codon = mutation[0].proteinPosStart;\n return (\n codon >= domain.pfamDomainStart &&\n codon <= domain.pfamDomainEnd\n );\n });\n\n return pfamDomains.filter(domainHasMutations);\n }\n\n return [];\n }\n\n private createLabel(\n mutations: T[],\n codon: number,\n show: boolean\n ): LollipopLabel {\n const fontSize = 10;\n const fontFamily = 'arial';\n // limit number of protein changes to 3\n const text = lollipopLabelText(mutations, 3);\n const textAnchor = lollipopLabelTextAnchor(\n text,\n codon,\n fontFamily,\n fontSize,\n this.props.geneWidth,\n this.proteinLength\n );\n\n return {\n text,\n textAnchor,\n fontSize,\n fontFamily,\n show,\n };\n }\n\n @computed private get domains(): DomainSpec[] {\n if (\n !this.props.store.pfamDomainData.isComplete ||\n !this.props.store.pfamDomainData.result ||\n this.props.store.pfamDomainData.result.length === 0 ||\n !this.props.store.allTranscripts.isComplete ||\n !this.props.store.allTranscripts.result ||\n !(\n this.props.store.activeTranscript &&\n this.props.store.activeTranscript.isComplete\n ) ||\n !this.props.store.activeTranscript.result ||\n !this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ] ||\n !this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ].pfamDomains ||\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ].pfamDomains.length === 0\n ) {\n return [];\n } else {\n return this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ].pfamDomains.map((range: PfamDomainRange) => {\n const domain = this.domainMap[range.pfamDomainId];\n return {\n startCodon: range.pfamDomainStart,\n endCodon: range.pfamDomainEnd,\n label: domain ? domain.name : range.pfamDomainId,\n color: this.domainColorMap[range.pfamDomainId],\n tooltip: (\n <DomainTooltip\n range={range}\n domain={domain}\n pfamDomainId={range.pfamDomainId}\n mutationAlignerCache={\n this.props.mutationAlignerCache\n }\n />\n ),\n };\n });\n }\n }\n\n @computed private get domainColorMap(): {\n [pfamAccession: string]: string;\n } {\n if (\n !this.props.store.allTranscripts.isPending &&\n this.props.store.allTranscripts.result &&\n this.props.store.activeTranscript &&\n !this.props.store.activeTranscript.isPending &&\n this.props.store.activeTranscript.result &&\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ] &&\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ].pfamDomains &&\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ].pfamDomains.length > 0\n ) {\n return generatePfamDomainColorMap(\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ].pfamDomains\n );\n } else {\n return {};\n }\n }\n\n @computed private get domainMap(): { [pfamAccession: string]: PfamDomain } {\n if (\n !this.props.store.pfamDomainData.isPending &&\n this.props.store.pfamDomainData.result &&\n this.props.store.pfamDomainData.result.length > 0\n ) {\n return _.keyBy(\n this.props.store.pfamDomainData.result,\n 'pfamAccession'\n );\n } else {\n return {};\n }\n }\n\n private get proteinLength(): number {\n return (\n (this.props.store.allTranscripts.result &&\n this.props.store.activeTranscript &&\n this.props.store.activeTranscript.result &&\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ] &&\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ].proteinLength) ||\n // Math.round(this.props.store.gene.length / 3);\n DEFAULT_PROTEIN_LENGTH\n );\n }\n\n private sequenceTooltip(): JSX.Element {\n return (\n <div style={{ maxWidth: 200 }}>\n <a\n href={`http://www.uniprot.org/uniprot/${this.props.store.uniprotId.result}`}\n target=\"_blank\"\n >\n {this.props.store.uniprotId.result}\n </a>\n </div>\n );\n }\n\n @computed private get sequence(): SequenceSpec {\n return {\n tooltip: this.sequenceTooltip(),\n };\n }\n\n @autobind\n private getSVG(): SVGElement {\n let lollipopSvg: SVGElement = $(this.divContainer).find(\n '.lollipop-svgnode'\n )[0] as any;\n\n const TEXT_STYLE = 'font-size: 12px; font-family:Arial;';\n const TRACK_INDENT = 16;\n const SUBTRACK_INDENT = TRACK_INDENT + 12;\n const INVISIBLE_SVG_CLASS_NAMES = ['invisible', 'hide-svg'];\n\n var outerSvg = document.createElementNS(SVG_NS, 'svg') as SVGElement;\n\n // Make copy of chart to be used in download\n var chartClone = lollipopSvg.cloneNode(true);\n outerSvg.append(chartClone);\n\n // Make svg invisible so it does not affect UI\n outerSvg.classList.add(...INVISIBLE_SVG_CLASS_NAMES);\n\n //Add svg to the dom so getBBox can calculate dimensions\n document.body.appendChild(outerSvg);\n\n // Group the tracks and translate below the lollipop chart\n const allTracksG = createGroupTag(\n `translate(0, ${LollipopPlot.defaultProps.vizHeight})`\n );\n outerSvg.append(allTracksG);\n\n let trackSvgList = $(this.divContainer).find('.track-svgnode');\n let trackTitles = $(this.divContainer).find('span[class*=trackTitle]');\n var trackYShift = 0;\n\n trackSvgList.each((idx: number, track: HTMLElement) => {\n var trackSvgGroup = createGroupTag(\n `translate(${this.geneXOffset},${trackYShift})`\n );\n trackSvgGroup.appendChild(track.cloneNode(true));\n\n var trackNameGroup = createGroupTag(\n `translate(0,${trackYShift + 8})`\n );\n var isSubTrack = trackTitles[idx].className.includes('subtrack-');\n var trackName = createTextTag(\n document.createTextNode(trackTitles[idx].innerText),\n TEXT_STYLE,\n isSubTrack ? SUBTRACK_INDENT : TRACK_INDENT,\n 0\n );\n trackNameGroup.append(trackName);\n\n allTracksG.append(trackNameGroup, trackSvgGroup);\n trackYShift += 20;\n });\n\n // Get the dimensions of the outer SVG before removing from DOM\n const outerSvgDimensions = (outerSvg as SVGGraphicsElement).getBBox();\n $(outerSvg).attr({\n width: outerSvgDimensions.width,\n height: outerSvgDimensions.height,\n });\n\n // Remove unused classes\n outerSvg.classList.remove(...INVISIBLE_SVG_CLASS_NAMES);\n document.body.removeChild(outerSvg);\n\n return outerSvg;\n }\n\n @computed get hugoGeneSymbol() {\n return this.props.store.gene.hugoGeneSymbol;\n }\n\n @computed get countRange(): [number, number] {\n return calcCountRange(\n this.lollipops.filter(\n l => l.placement !== LollipopPlacement.BOTTOM\n ),\n this.props.topYAxisDefaultMax,\n this.props.topYAxisDefaultMin\n );\n }\n\n @computed get bottomCountRange(): [number, number] {\n return calcCountRange(\n this.lollipops.filter(\n l => l.placement === LollipopPlacement.BOTTOM\n ),\n this.props.bottomYAxisDefaultMax,\n this.props.bottomYAxisDefaultMin\n );\n }\n\n constructor(props: LollipopMutationPlotProps<T>) {\n super(props);\n\n makeObservable<\n LollipopMutationPlot<T>,\n | 'mouseInPlot'\n | 'yMaxInputFocused'\n | 'geneXOffset'\n | '_trackVisibility'\n | 'showControls'\n | 'trackVisibility'\n | 'controlsConfig'\n | 'groups'\n | 'lollipops'\n | 'domains'\n | 'domainColorMap'\n | 'domainMap'\n | 'sequence'\n | 'onXAxisOffset'\n | 'onTrackVisibilityChange'\n >(this);\n\n this.handlers = {\n handleYAxisMaxSliderChange: action(\n (value: number) =>\n (this.controlsConfig.yMaxInput = calcYMaxInput(\n value,\n this.yMaxStep,\n this.countRange,\n this.bottomCountRange,\n this.props.yAxisSameScale\n ))\n ),\n handleYAxisMaxChange: action(\n (input: string) =>\n (this.controlsConfig.yMaxInput = getYAxisMaxInputValue(\n this.yMaxStep,\n input\n ))\n ),\n handleBottomYAxisMaxSliderChange: action(\n (value: number) =>\n (this.controlsConfig.bottomYMaxInput = calcYMaxInput(\n value,\n this.yMaxStep,\n this.bottomCountRange,\n this.countRange,\n this.props.yAxisSameScale\n ))\n ),\n handleBottomYAxisMaxChange: action(\n (input: string) =>\n (this.controlsConfig.bottomYMaxInput = getYAxisMaxInputValue(\n this.yMaxStep,\n input\n ))\n ),\n onYMaxInputFocused: () => {\n this.yMaxInputFocused = true;\n },\n onYMaxInputBlurred: () => {\n this.yMaxInputFocused = false;\n },\n handleToggleLegend: action(() => {\n this.controlsConfig.legendShown = !this.controlsConfig\n .legendShown;\n }),\n onMouseEnterPlot: action(() => {\n this.mouseInPlot = true;\n }),\n onMouseLeavePlot: action(() => {\n this.mouseInPlot = false;\n }),\n };\n }\n\n @computed get yMaxSlider() {\n return this.yMaxInput;\n }\n\n @computed get yMaxStep() {\n return Math.pow(10, -(this.props.yMaxFractionDigits || 0));\n }\n\n @computed get yMaxSliderStep() {\n return this.countRange[0] < 1 ? this.yMaxStep : 1;\n }\n\n @computed get bottomYMaxSlider() {\n return this.bottomYMaxInput;\n }\n\n @computed get bottomYMaxSliderStep() {\n return this.bottomCountRange[0] < 1 ? this.yMaxStep : 1;\n }\n\n @computed get yMaxInput() {\n return calcYMaxInput(\n this.controlsConfig.yMaxInput,\n this.yMaxStep,\n this.countRange,\n this.bottomCountRange,\n this.props.yAxisSameScale\n );\n }\n\n @computed get bottomYMaxInput() {\n return calcYMaxInput(\n this.controlsConfig.bottomYMaxInput,\n this.yMaxStep,\n this.bottomCountRange,\n this.countRange,\n this.props.yAxisSameScale\n );\n }\n\n @action.bound\n private onXAxisOffset(offset: number) {\n this.geneXOffset = offset;\n\n if (this.props.onXAxisOffset) {\n this.props.onXAxisOffset(offset);\n }\n }\n\n @action.bound\n protected onTrackVisibilityChange(selectedTrackNames: string[]) {\n if (this.props.onTrackVisibilityChange) {\n this.props.onTrackVisibilityChange(selectedTrackNames);\n } else {\n // clear visibility\n Object.keys(this.trackVisibility).forEach(\n trackName => (this.trackVisibility[trackName] = 'hidden')\n );\n\n // reset visibility values for the visible ones\n selectedTrackNames.forEach(\n trackName => (this.trackVisibility[trackName] = 'visible')\n );\n }\n }\n\n render() {\n if (\n this.props.store.pfamDomainData.isComplete &&\n this.props.store.pfamDomainData.result\n ) {\n return (\n <div\n style={{ display: 'inline-block' }}\n ref={(div: HTMLDivElement) => (this.divContainer = div)}\n onMouseEnter={this.handlers.onMouseEnterPlot}\n onMouseLeave={this.handlers.onMouseLeavePlot}\n >\n <LollipopMutationPlotControls\n showControls={this.showControls}\n showYMaxSlider={this.props.showYMaxSlider}\n showLegendToggle={this.props.showLegendToggle}\n showDownloadControls={this.props.showDownloadControls}\n hugoGeneSymbol={this.hugoGeneSymbol}\n countRange={this.countRange}\n bottomCountRange={this.bottomCountRange}\n onYAxisMaxSliderChange={\n this.handlers.handleYAxisMaxSliderChange\n }\n onYAxisMaxChange={this.handlers.handleYAxisMaxChange}\n onBottomYAxisMaxSliderChange={\n this.handlers.handleBottomYAxisMaxSliderChange\n }\n onBottomYAxisMaxChange={\n this.handlers.handleBottomYAxisMaxChange\n }\n onYMaxInputFocused={this.handlers.onYMaxInputFocused}\n onYMaxInputBlurred={this.handlers.onYMaxInputBlurred}\n onToggleLegend={this.handlers.handleToggleLegend}\n yMaxSlider={this.yMaxSlider}\n yMaxSliderStep={this.yMaxSliderStep}\n yMaxInput={this.yMaxInput}\n yAxisSameScale={this.props.yAxisSameScale}\n bottomYMaxSlider={this.bottomYMaxSlider}\n bottomYMaxSliderStep={this.bottomYMaxSliderStep}\n bottomYMaxInput={this.bottomYMaxInput}\n customControls={this.props.customControls}\n filterResetPanel={this.props.filterResetPanel}\n trackVisibility={this.trackVisibility}\n tracks={this.props.tracks}\n trackDataStatus={this.props.trackDataStatus}\n showTrackSelector={this.props.showTrackSelector}\n onTrackVisibilityChange={this.onTrackVisibilityChange}\n getSVG={this.getSVG}\n />\n <Collapse isOpened={this.controlsConfig.legendShown}>\n {this.props.legend || <DefaultLollipopPlotLegend />}\n </Collapse>\n <LollipopPlot\n sequence={this.sequence}\n lollipops={this.lollipops}\n domains={this.domains}\n dataStore={this.props.store.dataStore}\n vizWidth={this.props.geneWidth}\n vizHeight={this.props.vizHeight}\n hugoGeneSymbol={this.hugoGeneSymbol}\n xMax={this.proteinLength}\n yMax={this.yMaxInput}\n yMaxFractionDigits={\n this.yMaxSliderStep < 1\n ? this.props.yMaxFractionDigits\n : undefined\n }\n yMaxLabelPostfix={this.props.yMaxLabelPostfix}\n yAxisLabelPadding={this.props.yAxisLabelPadding}\n showYAxis={this.props.showYAxis}\n bottomYMax={this.bottomYMaxInput}\n onXAxisOffset={this.onXAxisOffset}\n topYAxisSymbol={this.props.topYAxisSymbol}\n bottomYAxisSymbol={this.props.bottomYAxisSymbol}\n groups={this.groups}\n />\n <TrackPanel\n store={this.props.store}\n geneWidth={this.props.geneWidth}\n tracks={this.props.tracks}\n trackVisibility={this.trackVisibility}\n pubMedCache={this.props.pubMedCache}\n proteinLength={this.proteinLength}\n geneXOffset={this.geneXOffset}\n collapsePtmTrack={this.props.collapsePtmTrack}\n collapseUniprotTopologyTrack={\n this.props.collapseUniprotTopologyTrack\n }\n />\n </div>\n );\n } else if (\n this.props.store.canonicalTranscript.isComplete &&\n this.props.store.canonicalTranscript.result === undefined\n ) {\n return (\n <span>\n <i className=\"fa fa-exclamation-triangle text-danger\" /> No\n Transcript found for {this.hugoGeneSymbol}\n </span>\n );\n } else {\n return (\n this.props.loadingIndicator || (\n <i className=\"fa fa-spinner fa-pulse fa-2x\" />\n )\n );\n }\n }\n}\n","import { action, observable, makeObservable } from 'mobx';\nimport { CacheData, MobxCache } from 'cbioportal-utils';\nimport _ from 'lodash';\n\nexport abstract class DefaultStringQueryCache<D>\n implements MobxCache<D, string> {\n protected _cache = observable.map<string, CacheData>({}, { deep: false });\n\n constructor() {\n makeObservable(this);\n }\n\n @action\n public get(query: string) {\n if (!this._cache.get(query)) {\n this._cache.set(query, { status: 'pending' });\n\n this.fetch(query)\n .then((d: D) =>\n this._cache.set(query, { status: 'complete', data: d })\n )\n .catch(() => this._cache.set(query, { status: 'error' }));\n }\n\n const data = this._cache.get(query);\n\n return data ? data : null;\n }\n\n public abstract fetch(query: string): Promise<D>;\n\n public get cache() {\n return _.fromPairs(this._cache.toJSON());\n }\n}\n","import request from 'superagent';\n\nimport { DefaultStringQueryCache } from './DefaultStringQueryCache';\n\nexport class DefaultPubMedCache extends DefaultStringQueryCache<any> {\n public async fetch(query: string) {\n const pubMedRecords = await new Promise<any>((resolve, reject) => {\n // TODO duplicate code from cbioportal-frontend\n request\n .post(\n 'https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pubmed&retmode=json'\n )\n .type('form')\n .send({ id: query })\n .end((err, res) => {\n if (!err && res.ok) {\n const response = JSON.parse(res.text);\n const result = response.result;\n const uids = result.uids;\n const ret: any = {};\n for (let uid of uids) {\n ret[uid] = result[uid];\n }\n resolve(ret);\n } else {\n reject(err);\n }\n });\n });\n\n return pubMedRecords[query];\n }\n}\n","import request from 'superagent';\n\nimport {\n DEFAULT_MUTATION_ALIGNER_PROXY_URL_TEMPLATE,\n getUrl,\n} from '../util/DataFetcherUtils';\nimport { DefaultStringQueryCache } from './DefaultStringQueryCache';\n\nexport function fetchMutationAlignerLink(\n pfamDomainId: string,\n mutationAlignerUrlTemplate: string = DEFAULT_MUTATION_ALIGNER_PROXY_URL_TEMPLATE\n): request.SuperAgentRequest {\n return request\n .get(getUrl(mutationAlignerUrlTemplate, { pfamDomainId }))\n .accept('application/json');\n}\n\nexport class MutationAlignerCache extends DefaultStringQueryCache<string> {\n constructor(private mutationAlignerUrlTemplate?: string) {\n super();\n }\n\n public fetch(pfamAccession: string): Promise<string> {\n return fetchMutationAlignerLink(\n pfamAccession,\n this.mutationAlignerUrlTemplate\n )\n .then(res =>\n Promise.resolve(\n `http://mutationaligner.org/domains/${res.body.pfamId}`\n )\n )\n .catch(e => Promise.reject(e));\n }\n}\n","import autobind from 'autobind-decorator';\nimport _ from 'lodash';\nimport { action, computed, observable, makeObservable } from 'mobx';\n\nimport { Mutation } from 'cbioportal-utils';\n\nimport { DataFilter, DataFilterType } from '../model/DataFilter';\nimport DataStore from '../model/DataStore';\nimport { FilterApplier } from '../model/FilterApplier';\nimport {\n applyDataFiltersOnDatum,\n groupDataByGroupFilters,\n indexPositions,\n} from '../util/FilterUtils';\n\ntype GroupedData = Array<{ group: string; data: Array<Mutation | Mutation[]> }>;\n\nexport class DefaultMutationMapperDataStore implements DataStore {\n @observable public dataFilters: DataFilter[];\n @observable public selectionFilters: DataFilter[];\n @observable public highlightFilters: DataFilter[];\n @observable public groupFilters: { group: string; filter: DataFilter }[];\n\n // TODO simplify data if possible\n private data: Array<Mutation | Mutation[]>;\n\n // this custom filter applier allows us to interpret selection and highlight filters in a customized way,\n // by default only position filters are taken into account\n protected customFilterApplier: FilterApplier | undefined;\n\n constructor(\n data: Array<Mutation | Mutation[]>,\n customFilterApplier?: FilterApplier,\n dataFilters: DataFilter[] = [],\n selectionFilters: DataFilter[] = [],\n highlightFilters: DataFilter[] = [],\n groupFilters: { group: string; filter: DataFilter }[] = []\n ) {\n makeObservable(this);\n this.data = data;\n this.customFilterApplier = customFilterApplier;\n\n this.dataFilters = dataFilters;\n this.selectionFilters = selectionFilters;\n this.highlightFilters = highlightFilters;\n this.groupFilters = groupFilters;\n }\n\n @computed get groupFiltersKeyedByGroup() {\n return _.keyBy(this.groupFilters, 'group');\n }\n\n @computed\n public get allData() {\n return this.data;\n }\n\n @computed\n public get filteredData() {\n return this.dataFilters.length > 0\n ? // TODO simplify array flatten if possible\n this.data.filter(m => this.dataMainFilter(_.flatten([m])[0]))\n : this.data;\n }\n\n @computed\n public get sortedFilteredData() {\n return this.filteredData;\n }\n\n @computed\n public get sortedFilteredGroupedData(): GroupedData {\n return groupDataByGroupFilters(\n this.groupFilters,\n this.sortedFilteredData,\n this.applyFilter\n );\n }\n\n @computed\n public get sortedFilteredSelectedData() {\n return this.selectionFilters.length > 0\n ? // TODO simplify array flatten if possible\n this.sortedFilteredData.filter(m =>\n this.dataSelectFilter(_.flatten([m])[0])\n )\n : [];\n }\n\n @computed\n public get selectedPositions() {\n return indexPositions(this.selectionFilters);\n }\n\n @computed\n public get highlightedPositions() {\n return indexPositions(this.highlightFilters);\n }\n\n @action\n public clearHighlightFilters() {\n if (this.highlightFilters.length > 0) {\n this.highlightFilters = [];\n }\n }\n\n @action\n public clearSelectionFilters() {\n if (this.selectionFilters.length > 0) {\n this.selectionFilters = [];\n }\n }\n\n @action\n public clearDataFilters() {\n if (this.dataFilters.length > 0) {\n this.dataFilters = [];\n }\n }\n\n @action\n public setDataFilters(filters: DataFilter[]) {\n this.dataFilters = filters;\n }\n\n @action\n public setHighlightFilters(filters: DataFilter[]) {\n this.highlightFilters = filters;\n }\n\n @action\n public setSelectionFilters(filters: DataFilter[]) {\n this.selectionFilters = filters;\n }\n\n @action\n public setGroupFilters(filters: { group: string; filter: DataFilter }[]) {\n this.groupFilters = filters;\n }\n\n public isPositionSelected(position: number) {\n return !!this.selectedPositions[position + ''];\n }\n\n public isPositionHighlighted(position: number) {\n return !!this.highlightedPositions[position + ''];\n }\n\n public dataMainFilter(mutation: Mutation): boolean {\n return applyDataFiltersOnDatum(\n mutation,\n this.dataFilters,\n this.applyFilter\n );\n }\n\n public dataSelectFilter(mutation: Mutation): boolean {\n return applyDataFiltersOnDatum(\n mutation,\n this.selectionFilters,\n this.applyFilter\n );\n }\n\n public dataHighlightFilter(mutation: Mutation): boolean {\n return applyDataFiltersOnDatum(\n mutation,\n this.highlightFilters,\n this.applyFilter\n );\n }\n\n @autobind\n public applyFilter(filter: DataFilter, mutation: Mutation): boolean {\n if (this.customFilterApplier) {\n // let the custom filter applier decide how to apply the given filter\n return this.customFilterApplier.applyFilter(filter, mutation);\n } else {\n // by default only filter by position\n return (\n filter.type !== DataFilterType.POSITION ||\n filter.values.includes(mutation.proteinPosStart)\n );\n }\n }\n}\n\nexport default DefaultMutationMapperDataStore;\n","import _ from 'lodash';\nimport request from 'superagent';\nimport Response = request.Response;\n\nimport {\n AggregatedHotspots,\n EvidenceType,\n generateProteinChangeQuery,\n generateAnnotateStructuralVariantQuery,\n getMyVariantInfoAnnotationsFromIndexedVariantAnnotations,\n IOncoKbData,\n Mutation,\n UniprotFeature,\n UniprotFeatureList,\n uniqueGenomicLocations,\n StructuralVariantType,\n} from 'cbioportal-utils';\nimport {\n AnnotateMutationByProteinChangeQuery,\n AnnotateStructuralVariantQuery,\n CancerGene,\n OncoKbAPI,\n OncoKBInfo,\n} from 'oncokb-ts-api-client';\nimport {\n EnsemblFilter,\n EnsemblTranscript,\n GenomeNexusAPI,\n GenomeNexusAPIInternal,\n GenomicLocation,\n Hotspot,\n PfamDomain,\n PostTranslationalModification,\n VariantAnnotation,\n MyVariantInfo,\n} from 'genome-nexus-ts-api-client';\n\nimport { MutationMapperDataFetcher } from '../model/MutationMapperDataFetcher';\nimport {\n DEFAULT_MY_GENE_URL_TEMPLATE,\n DEFAULT_UNIPROT_ID_URL_TEMPLATE,\n fetchVariantAnnotationsIndexedByGenomicLocation,\n getUrl,\n initGenomeNexusClient,\n initGenomeNexusInternalClient,\n initOncoKbClient,\n ONCOKB_DEFAULT_DATA,\n} from '../util/DataFetcherUtils';\nimport { CanonicalMutationType } from 'cbioportal-frontend-commons';\n\nexport interface MutationMapperDataFetcherConfig {\n myGeneUrlTemplate?: string;\n uniprotIdUrlTemplate?: string;\n mutationAlignerUrlTemplate?: string;\n cachePostMethodsOnClients?: boolean;\n apiCacheLimit?: number;\n genomeNexusUrl?: string;\n oncoKbUrl?: string;\n}\n\nexport class DefaultMutationMapperDataFetcher\n implements MutationMapperDataFetcher {\n public oncoKbClient: OncoKbAPI;\n public genomeNexusClient: GenomeNexusAPI;\n public genomeNexusInternalClient: GenomeNexusAPIInternal;\n\n constructor(\n private config: MutationMapperDataFetcherConfig,\n genomeNexusClient?: Partial<GenomeNexusAPI>,\n genomeNexusInternalClient?: Partial<GenomeNexusAPIInternal>,\n oncoKbClient?: Partial<OncoKbAPI>\n ) {\n this.genomeNexusClient =\n (genomeNexusClient as GenomeNexusAPI) ||\n initGenomeNexusClient(\n config.genomeNexusUrl,\n config.cachePostMethodsOnClients,\n config.apiCacheLimit\n );\n this.genomeNexusInternalClient =\n (genomeNexusInternalClient as GenomeNexusAPIInternal) ||\n initGenomeNexusInternalClient(\n config.genomeNexusUrl,\n config.cachePostMethodsOnClients,\n config.apiCacheLimit\n );\n this.oncoKbClient =\n (oncoKbClient as OncoKbAPI) ||\n initOncoKbClient(\n config.oncoKbUrl,\n config.cachePostMethodsOnClients,\n config.apiCacheLimit\n );\n }\n\n public async fetchSwissProtAccession(entrezGeneId: number): Promise<any> {\n const myGeneData: Response = await request.get(\n getUrl(\n this.config.myGeneUrlTemplate || DEFAULT_MY_GENE_URL_TEMPLATE,\n { entrezGeneId }\n )\n );\n return JSON.parse(myGeneData.text).uniprot['Swiss-Prot'];\n }\n\n public async fetchUniprotId(swissProtAccession: string): Promise<string> {\n const uniprotData: Response = await request.get(\n getUrl(\n this.config.uniprotIdUrlTemplate ||\n DEFAULT_UNIPROT_ID_URL_TEMPLATE,\n { swissProtAccession }\n )\n );\n return uniprotData.text.split('\\n')[1];\n }\n\n public async fetchPfamDomainData(\n pfamAccessions: string[],\n client: GenomeNexusAPI = this.genomeNexusClient\n ): Promise<PfamDomain[]> {\n return await client.fetchPfamDomainsByPfamAccessionPOST({\n pfamAccessions: pfamAccessions,\n });\n }\n\n public async fetchVariantAnnotationsIndexedByGenomicLocation(\n mutations: Partial<Mutation>[],\n fields: string[] = ['annotation_summary'],\n isoformOverrideSource: string = 'uniprot',\n client: GenomeNexusAPI = this.genomeNexusClient\n ): Promise<{ [genomicLocation: string]: VariantAnnotation }> {\n return await fetchVariantAnnotationsIndexedByGenomicLocation(\n mutations,\n fields,\n isoformOverrideSource,\n client\n );\n }\n\n public async fetchMyVariantInfoAnnotationsIndexedByGenomicLocation(\n mutations: Partial<Mutation>[],\n isoformOverrideSource: string = 'uniprot',\n client: GenomeNexusAPI = this.genomeNexusClient\n ): Promise<{ [genomicLocation: string]: MyVariantInfo }> {\n const indexedVariantAnnotations = await fetchVariantAnnotationsIndexedByGenomicLocation(\n mutations,\n ['my_variant_info'],\n isoformOverrideSource,\n client\n );\n return getMyVariantInfoAnnotationsFromIndexedVariantAnnotations(\n indexedVariantAnnotations\n );\n }\n\n /*\n * Gets the canonical transcript. If there is none pick the transcript with max length.\n */\n public async fetchCanonicalTranscriptWithFallback(\n hugoSymbol: string,\n isoformOverrideSource: string,\n allTranscripts: EnsemblTranscript[] | undefined,\n client: GenomeNexusAPI = this.genomeNexusClient\n ): Promise<EnsemblTranscript | undefined> {\n return this.fetchCanonicalTranscript(\n hugoSymbol,\n isoformOverrideSource,\n client\n ).catch(() => {\n // get transcript with max protein length in given list of all transcripts\n const transcript = _.maxBy(\n allTranscripts,\n (t: EnsemblTranscript) => t.proteinLength\n );\n return transcript ? transcript : undefined;\n });\n }\n\n public async fetchCanonicalTranscript(\n hugoSymbol: string,\n isoformOverrideSource: string,\n client: GenomeNexusAPI = this.genomeNexusClient\n ): Promise<EnsemblTranscript> {\n return await client.fetchCanonicalEnsemblTranscriptByHugoSymbolGET({\n hugoSymbol,\n isoformOverrideSource,\n });\n }\n\n public async fetchEnsemblTranscriptsByEnsemblFilter(\n ensemblFilter: Partial<EnsemblFilter>,\n client: GenomeNexusAPI = this.genomeNexusClient\n ): Promise<EnsemblTranscript[] | undefined> {\n return await client.fetchEnsemblTranscriptsByEnsemblFilterPOST({\n ensemblFilter: Object.assign(\n // set default to empty array\n {\n geneIds: [],\n hugoSymbols: [],\n proteinIds: [],\n transcriptIds: [],\n },\n ensemblFilter\n ),\n });\n }\n\n public fetchPtmData(\n ensemblId: string,\n client: GenomeNexusAPI = this.genomeNexusClient\n ): Promise<PostTranslationalModification[]> {\n if (ensemblId) {\n return client.fetchPostTranslationalModificationsGET({\n ensemblTranscriptId: ensemblId,\n });\n } else {\n return Promise.resolve([]);\n }\n }\n\n public async fetchUniprotFeatures(\n swissProtId: string,\n category: string[],\n client: GenomeNexusAPI = this.genomeNexusClient\n ): Promise<UniprotFeature[]> {\n if (swissProtId) {\n // TODO for now fetching only PTM and TOPOLOGY features\n const uniprotData: Response = await request.get(\n getUrl(\n `https://www.ebi.ac.uk/proteins/api/features/<%= uniprotAccession %>?categories=${category.join(\n ','\n )}`,\n { uniprotAccession: swissProtId }\n )\n );\n\n const featureList: UniprotFeatureList = JSON.parse(\n uniprotData.text\n );\n return featureList.features;\n } else {\n return Promise.resolve([]);\n }\n }\n\n public fetchCancerHotspotData(\n ensemblId: string,\n client: GenomeNexusAPIInternal = this.genomeNexusInternalClient\n ): Promise<Hotspot[]> {\n if (ensemblId) {\n return client.fetchHotspotAnnotationByTranscriptIdGET({\n transcriptId: ensemblId,\n });\n } else {\n return Promise.resolve([]);\n }\n }\n\n public fetchAggregatedHotspotsData(\n mutations: Mutation[],\n client: GenomeNexusAPIInternal = this.genomeNexusInternalClient\n ): Promise<AggregatedHotspots[]> {\n // TODO filter out non-hotspot genes\n\n if (mutations.length === 0) {\n return Promise.resolve([]);\n }\n\n const genomicLocations: GenomicLocation[] = uniqueGenomicLocations(\n mutations\n );\n return client.fetchHotspotAnnotationByGenomicLocationPOST({\n genomicLocations: genomicLocations,\n });\n }\n\n public fetchOncoKbCancerGenes(\n client: OncoKbAPI = this.oncoKbClient\n ): Promise<CancerGene[]> {\n return client.utilsCancerGeneListGetUsingGET_1({});\n }\n\n public fetchOncoKbInfo(\n client: OncoKbAPI = this.oncoKbClient\n ): Promise<OncoKBInfo> {\n return client.infoGetUsingGET_1({});\n }\n\n public async fetchOncoKbData(\n mutations: Mutation[],\n annotatedGenes: { [entrezGeneId: number]: boolean } | Error,\n getTumorType: (mutation: Mutation) => string,\n getEntrezGeneId: (mutation: Mutation) => number,\n evidenceTypes?: EvidenceType[],\n client: OncoKbAPI = this.oncoKbClient\n ): Promise<IOncoKbData | Error> {\n if (annotatedGenes instanceof Error) {\n return new Error();\n } else if (mutations.length === 0) {\n return ONCOKB_DEFAULT_DATA;\n }\n\n const mutationsToQuery = _.filter(\n mutations,\n m =>\n (m.mutationType &&\n m.mutationType.toLowerCase() ===\n CanonicalMutationType.FUSION) ||\n !!annotatedGenes[getEntrezGeneId(m)]\n );\n\n return this.queryOncoKbData(\n mutationsToQuery,\n getTumorType,\n getEntrezGeneId,\n client,\n evidenceTypes\n );\n }\n\n public async queryOncoKbData(\n queryVariants: Mutation[],\n getTumorType: (mutation: Mutation) => string,\n getEntrezGeneId: (mutation: Mutation) => number,\n client: OncoKbAPI = this.oncoKbClient,\n evidenceTypes?: EvidenceType[]\n ) {\n const mutationQueryVariants: AnnotateMutationByProteinChangeQuery[] = _.uniqBy(\n _.map(\n queryVariants.filter(\n mutation => mutation.mutationType !== 'Fusion'\n ),\n (mutation: Mutation) => {\n return generateProteinChangeQuery(\n getEntrezGeneId(mutation),\n getTumorType(mutation),\n mutation.proteinChange,\n mutation.mutationType,\n mutation.proteinPosStart,\n mutation.proteinPosEnd,\n evidenceTypes\n );\n }\n ),\n 'id'\n );\n const structuralQueryVariants: AnnotateStructuralVariantQuery[] = _.uniqBy(\n _.map(\n queryVariants.filter(\n mutation =>\n mutation.mutationType?.toUpperCase() ===\n StructuralVariantType.FUSION\n ),\n (mutation: Mutation) => {\n return generateAnnotateStructuralVariantQuery(\n getEntrezGeneId(mutation),\n getTumorType(mutation),\n mutation.proteinChange,\n mutation.mutationType,\n evidenceTypes\n );\n }\n ),\n 'id'\n );\n\n const mutationQueryResult =\n mutationQueryVariants.length === 0\n ? []\n : await client.annotateMutationsByProteinChangePostUsingPOST_1({\n body: mutationQueryVariants,\n });\n\n const structuralVariantQueryResult =\n structuralQueryVariants.length === 0\n ? []\n : await client.annotateStructuralVariantsPostUsingPOST_1({\n body: structuralQueryVariants,\n });\n\n return {\n // generateIdToIndicatorMap(oncokbSearch)\n indicatorMap: _.keyBy(\n mutationQueryResult.concat(structuralVariantQueryResult),\n indicator => indicator.query.id\n ),\n };\n }\n}\n\nexport default DefaultMutationMapperDataFetcher;\n","import autobind from 'autobind-decorator';\nimport MobxPromise from 'mobxpromise';\nimport {\n defaultHotspotFilter,\n IHotspotIndex,\n IOncoKbData,\n isHotspot,\n Mutation,\n} from 'cbioportal-utils';\n\nimport { HotspotFilter } from '../filter/HotspotFilter';\nimport { MutationFilter } from '../filter/MutationFilter';\nimport { MutationStatusFilter } from '../filter/MutationStatusFilter';\nimport { OncoKbFilter } from '../filter/OncoKbFilter';\nimport { PositionFilter } from '../filter/PositionFilter';\nimport { ProteinImpactTypeFilter } from '../filter/ProteinImpactTypeFilter';\nimport { DataFilter, DataFilterType } from '../model/DataFilter';\nimport { ApplyFilterFn, FilterApplier } from '../model/FilterApplier';\nimport {\n applyDefaultMutationFilter,\n applyDefaultMutationStatusFilter,\n applyDefaultPositionFilter,\n applyDefaultProteinImpactTypeFilter,\n} from '../util/FilterUtils';\nimport { defaultOncoKbFilter } from '../util/OncoKbUtils';\n\nexport class DefaultMutationMapperFilterApplier implements FilterApplier {\n protected get customFilterAppliers(): {\n [filterType: string]: ApplyFilterFn;\n } {\n return {\n [DataFilterType.POSITION]: this.applyPositionFilter,\n [DataFilterType.ONCOKB]: this.applyOncoKbFilter,\n [DataFilterType.HOTSPOT]: this.applyHostpotFilter,\n [DataFilterType.MUTATION]: this.applyMutationFilter,\n [DataFilterType.PROTEIN_IMPACT_TYPE]: this\n .applyProteinImpactTypeFilter,\n [DataFilterType.MUTATION_STATUS]: this.applyMutationStatusFilter,\n ...this.filterAppliersOverride,\n };\n }\n\n constructor(\n protected indexedHotspotData: MobxPromise<IHotspotIndex | undefined>,\n protected oncoKbData: MobxPromise<IOncoKbData | Error>,\n protected getDefaultTumorType: (mutation: Mutation) => string,\n protected getDefaultEntrezGeneId: (mutation: Mutation) => number,\n protected filterAppliersOverride?: {\n [filterType: string]: ApplyFilterFn;\n }\n ) {}\n\n @autobind\n public applyFilter(filter: DataFilter, mutation: Mutation) {\n const applyFilter = this.customFilterAppliers[filter.type];\n\n return !applyFilter || applyFilter(filter, mutation);\n }\n\n @autobind\n protected applyMutationFilter(filter: MutationFilter, mutation: Mutation) {\n return applyDefaultMutationFilter(filter, mutation);\n }\n\n @autobind\n protected applyOncoKbFilter(filter: OncoKbFilter, mutation: Mutation) {\n // TODO for now ignoring the actual filter value and treating as a boolean\n return (\n !filter.values ||\n !this.oncoKbData.result ||\n this.oncoKbData.result instanceof Error ||\n defaultOncoKbFilter(\n mutation,\n this.oncoKbData.result,\n this.getDefaultTumorType,\n this.getDefaultEntrezGeneId\n )\n );\n }\n\n @autobind\n protected applyHostpotFilter(filter: HotspotFilter, mutation: Mutation) {\n // TODO for now ignoring the actual filter value and treating as a boolean\n return (\n !filter.values ||\n !this.indexedHotspotData.result ||\n isHotspot(\n mutation,\n this.indexedHotspotData.result,\n defaultHotspotFilter\n )\n );\n }\n\n @autobind\n protected applyPositionFilter(filter: PositionFilter, mutation: Mutation) {\n return applyDefaultPositionFilter(filter, mutation);\n }\n\n @autobind\n protected applyProteinImpactTypeFilter(\n filter: ProteinImpactTypeFilter,\n mutation: Mutation\n ) {\n return applyDefaultProteinImpactTypeFilter(filter, mutation);\n }\n\n @autobind\n protected applyMutationStatusFilter(\n filter: MutationStatusFilter,\n mutation: Mutation\n ) {\n return applyDefaultMutationStatusFilter(filter, mutation);\n }\n}\n\nexport default DefaultMutationMapperFilterApplier;\n","import autobind from 'autobind-decorator';\nimport { remoteData } from 'cbioportal-frontend-commons';\nimport {\n AggregatedHotspots,\n convertDbPtmToPtm,\n convertUniprotFeatureToPtm,\n defaultHotspotFilter,\n genomicLocationString,\n getMyCancerGenomeData,\n groupCancerHotspotDataByPosition,\n groupHotspotsByMutations,\n getMutationsByTranscriptId,\n groupMutationsByProteinStartPos,\n groupPtmDataByPosition,\n groupPtmDataByTypeAndPosition,\n indexHotspotsData,\n ICivicGeneIndex,\n ICivicVariantIndex,\n IHotspotIndex,\n IMyCancerGenomeData,\n IOncoKbData,\n fetchCivicGenes,\n fetchCivicVariants,\n PostTranslationalModification,\n PtmSource,\n UniprotFeature,\n uniqueGenomicLocations,\n UniprotCategory,\n convertUniprotFeatureToUniprotTopology,\n UniprotTopology,\n} from 'cbioportal-utils';\nimport { Gene, Mutation, IMyVariantInfoIndex } from 'cbioportal-utils';\nimport memoize from 'memoize-weak-decorator';\n\nimport {\n CancerGene,\n IndicatorQueryResp,\n OncoKBInfo,\n} from 'oncokb-ts-api-client';\nimport {\n EnsemblTranscript,\n GenomicLocation,\n Hotspot,\n PfamDomain,\n PfamDomainRange,\n PostTranslationalModification as DbPtm,\n // TODO UniprotFeature, UniprotFeatureList\n VariantAnnotation,\n} from 'genome-nexus-ts-api-client';\nimport _ from 'lodash';\nimport { computed, observable, makeObservable } from 'mobx';\nimport MobxPromise, { cached } from 'mobxpromise';\n\nimport { DataFilter, DataFilterType } from '../model/DataFilter';\nimport DataStore from '../model/DataStore';\nimport { ApplyFilterFn, FilterApplier } from '../model/FilterApplier';\nimport { MutationMapperDataFetcher } from '../model/MutationMapperDataFetcher';\nimport { MutationMapperStore } from '../model/MutationMapperStore';\nimport {\n ONCOKB_DEFAULT_DATA,\n ONCOKB_DEFAULT_INFO,\n USE_DEFAULT_PUBLIC_INSTANCE_FOR_ONCOKB,\n} from '../util/DataFetcherUtils';\nimport {\n applyDataFilters,\n groupDataByProteinImpactType,\n} from '../util/FilterUtils';\nimport {\n defaultOncoKbIndicatorFilter,\n groupOncoKbIndicatorDataByMutations,\n} from '../util/OncoKbUtils';\nimport { DefaultMutationMapperDataStore } from './DefaultMutationMapperDataStore';\nimport { DefaultMutationMapperDataFetcher } from './DefaultMutationMapperDataFetcher';\nimport { DefaultMutationMapperFilterApplier } from './DefaultMutationMapperFilterApplier';\n\ninterface DefaultMutationMapperStoreConfig {\n annotationFields?: string[];\n isoformOverrideSource?: string;\n ptmSources?: string[];\n filterMutationsBySelectedTranscript?: boolean;\n genomeNexusUrl?: string;\n oncoKbUrl?: string;\n enableCivic?: boolean;\n enableOncoKb?: boolean;\n cachePostMethodsOnClients?: boolean;\n apiCacheLimit?: number;\n getMutationCount?: (mutation: Partial<Mutation>) => number;\n getTumorType?: (mutation: Partial<Mutation>) => string;\n filterApplier?: FilterApplier;\n filterAppliersOverride?: {\n [filterType: string]: ApplyFilterFn;\n };\n dataFetcher?: MutationMapperDataFetcher;\n dataFilters?: DataFilter[];\n selectionFilters?: DataFilter[];\n highlightFilters?: DataFilter[];\n groupFilters?: { group: string; filter: DataFilter }[];\n}\n\nclass DefaultMutationMapperStore<T extends Mutation>\n implements MutationMapperStore<T> {\n protected getDataFetcher?: () => MutationMapperDataFetcher;\n\n @observable\n private _selectedTranscript: string | undefined = undefined;\n\n // this allows us to keep selected transcript state in one of two places\n // external (e.g. url)\n // internal (_selectedTranscript)\n // we default to external\n @computed get selectedTranscript(): string | undefined {\n if (this.getTranscriptId) {\n return this.getTranscriptId();\n } else {\n return this._selectedTranscript;\n }\n }\n\n constructor(\n public gene: Gene,\n protected config: DefaultMutationMapperStoreConfig,\n protected getMutations: () => T[],\n public getTranscriptId?: () => string | undefined\n ) {\n makeObservable<\n DefaultMutationMapperStore<T>,\n '_selectedTranscript' | 'mutationsGroupedByProteinImpactType'\n >(this);\n }\n\n readonly activeTranscript: MobxPromise<string | undefined> = remoteData(\n {\n await: () => [\n this.allTranscripts,\n this.canonicalTranscript,\n this.transcriptsWithAnnotations,\n ],\n invoke: async () => {\n let activeTranscript;\n const canonicalTranscriptId = this.canonicalTranscript.result\n ? this.canonicalTranscript.result.transcriptId\n : undefined;\n const selectedTranscript =\n this.selectedTranscript &&\n this.allTranscripts.result &&\n this.allTranscripts.result.find(\n transcript =>\n transcript.transcriptId === this.selectedTranscript\n )\n ? this.selectedTranscript\n : undefined;\n\n if (selectedTranscript) {\n activeTranscript = selectedTranscript;\n } else if (this.config.filterMutationsBySelectedTranscript) {\n if (\n this.transcriptsWithAnnotations.result &&\n this.transcriptsWithAnnotations.result.length > 0 &&\n canonicalTranscriptId &&\n !this.transcriptsWithAnnotations.result.includes(\n canonicalTranscriptId\n )\n ) {\n activeTranscript = this.transcriptsWithAnnotations\n .result[0];\n } else {\n activeTranscript = canonicalTranscriptId;\n }\n } else {\n activeTranscript = canonicalTranscriptId;\n }\n\n return activeTranscript;\n },\n },\n undefined\n );\n\n public setSelectedTranscript(transcript: string | undefined) {\n this._selectedTranscript = transcript;\n }\n\n @computed\n public get isoformOverrideSource(): string {\n return this.config.isoformOverrideSource || 'uniprot';\n }\n\n @computed\n public get ptmSources(): string[] {\n return this.config.ptmSources || [PtmSource.dbPTM];\n }\n\n @computed\n public get annotationFields(): string[] {\n return _.uniq(\n ['annotation_summary', 'hotspots'].concat(\n this.config.annotationFields || []\n )\n );\n }\n\n protected getDataStore?: () => DataStore;\n\n @cached\n @computed\n public get dataStore(): DataStore {\n if (this.getDataStore) {\n return this.getDataStore();\n }\n return new DefaultMutationMapperDataStore(\n this.mutations,\n this.filterApplier,\n this.config.dataFilters,\n this.config.selectionFilters,\n this.config.highlightFilters,\n this.config.groupFilters\n );\n }\n\n public readonly myCancerGenomeData: IMyCancerGenomeData = getMyCancerGenomeData();\n\n @computed\n public get mutations(): T[] {\n if (\n this.canonicalTranscript.isPending ||\n (this.config.filterMutationsBySelectedTranscript &&\n (this.transcriptsWithAnnotations.isPending ||\n this.indexedVariantAnnotations.isPending) &&\n this.canonicalTranscript.isPending)\n ) {\n return [];\n } else if (\n this.config.filterMutationsBySelectedTranscript &&\n this.activeTranscript.result &&\n this.indexedVariantAnnotations.result &&\n !_.isEmpty(this.indexedVariantAnnotations.result)\n ) {\n return this.getAnnotatedMutations(this.activeTranscript.result);\n } else {\n return this.getMutations();\n }\n }\n\n @memoize\n protected getAnnotatedMutationsByTranscriptId(\n mutations: T[],\n transcriptId: string,\n indexedVariantAnnotations: {\n [genomicLocation: string]: VariantAnnotation;\n }\n ): T[] {\n // by default annotate every mutation, no check for canonical transcript\n return getMutationsByTranscriptId(\n mutations,\n transcriptId,\n indexedVariantAnnotations\n );\n }\n\n public getAnnotatedMutations(transcriptId: string): T[] {\n // in case we don't have any annotation for the given set of mutations or the annotation fails due to an error\n // (external service error, etc.) we just return the input set of mutations as is. Ideally this function\n // should not be invoked when this.indexedVariantAnnotations.result is undefined\n if (this.indexedVariantAnnotations.result) {\n return this.getAnnotatedMutationsByTranscriptId(\n this.getMutations(),\n transcriptId,\n this.indexedVariantAnnotations.result\n );\n } else {\n return this.getMutations();\n }\n }\n\n @computed\n public get filterApplier() {\n return (\n this.config.filterApplier ||\n new DefaultMutationMapperFilterApplier(\n this.indexedHotspotData,\n this.oncoKbData,\n this.getDefaultTumorType,\n this.getDefaultEntrezGeneId,\n this.config.filterAppliersOverride\n )\n );\n }\n\n @computed\n public get dataFetcher(): MutationMapperDataFetcher {\n return (\n this.config.dataFetcher ||\n (this.getDataFetcher && this.getDataFetcher()) ||\n new DefaultMutationMapperDataFetcher({\n genomeNexusUrl: this.config.genomeNexusUrl,\n oncoKbUrl: this.config.oncoKbUrl,\n cachePostMethodsOnClients: this.config\n .cachePostMethodsOnClients,\n apiCacheLimit: this.config.apiCacheLimit,\n })\n );\n }\n\n @computed\n public get mutationsByPosition(): { [pos: number]: T[] } {\n return groupMutationsByProteinStartPos(\n _.flatten(this.dataStore.sortedFilteredData)\n );\n }\n\n @computed\n public get groupedMutationsByPosition(): {\n group: string;\n mutations: { [pos: number]: T[] };\n }[] {\n return this.dataStore.sortedFilteredGroupedData.map(groupedData => ({\n group: groupedData.group,\n mutations: groupMutationsByProteinStartPos(\n _.flatten(groupedData.data)\n ),\n }));\n }\n\n protected getMutationsGroupedByProteinImpactType?: () => {\n [type: string]: { group: string; data: any[] };\n };\n\n @computed\n protected get mutationsGroupedByProteinImpactType() {\n if (this.getMutationsGroupedByProteinImpactType) {\n return this.getMutationsGroupedByProteinImpactType();\n }\n const filtersWithoutProteinImpactTypeFilter = this.dataStore.dataFilters.filter(\n f => f.type !== DataFilterType.PROTEIN_IMPACT_TYPE\n );\n\n // apply filters excluding the protein impact type filters\n // this prevents number of unchecked protein impact types from being counted as zero\n const sortedFilteredData = applyDataFilters(\n this.dataStore.allData,\n filtersWithoutProteinImpactTypeFilter,\n this.dataStore.applyFilter\n );\n\n return groupDataByProteinImpactType(sortedFilteredData);\n }\n\n @computed\n public get mutationCountsByProteinImpactType(): {\n [proteinImpactType: string]: number;\n } {\n const map: { [proteinImpactType: string]: number } = {};\n\n Object.keys(this.mutationsGroupedByProteinImpactType).forEach(\n proteinImpactType => {\n const g = this.mutationsGroupedByProteinImpactType[\n proteinImpactType\n ];\n map[g.group] = g.data.length;\n }\n );\n\n return map;\n }\n\n @computed\n public get uniqueMutationCountsByPosition(): { [pos: number]: number } {\n return this.countUniqueMutationsByPosition(this.mutationsByPosition);\n }\n\n @computed\n public get uniqueGroupedMutationCountsByPosition(): {\n group: string;\n counts: { [pos: number]: number };\n }[] {\n return this.groupedMutationsByPosition.map(groupedMutations => ({\n group: groupedMutations.group,\n counts: this.countUniqueMutationsByPosition(\n groupedMutations.mutations\n ),\n }));\n }\n\n @computed\n public get transcriptsByTranscriptId(): {\n [transcriptId: string]: EnsemblTranscript;\n } {\n return _.keyBy(\n this.allTranscripts.result,\n (transcript: EnsemblTranscript) => transcript.transcriptId\n );\n }\n\n public countUniqueMutationsByPosition(mutationsByPosition: {\n [pos: number]: T[];\n }): { [pos: number]: number } {\n const map: { [pos: number]: number } = {};\n\n Object.keys(mutationsByPosition).forEach(pos => {\n const position = parseInt(pos, 10);\n // for each position multiple mutations for the same patient is counted only once\n const mutations = mutationsByPosition[position];\n if (mutations) {\n map[position] = this.countUniqueMutations(mutations);\n }\n });\n\n return map;\n }\n\n public countUniqueMutations(mutations: T[]): number {\n // assume by default all mutations are unique\n // child classes need to override this method to have a custom way of counting unique mutations\n return this.config.getMutationCount\n ? this.getMutationCount(mutations, this.config.getMutationCount)\n : mutations.length;\n }\n\n protected getMutationCount(\n mutations: T[],\n getMutationCount: (mutation: Partial<T>) => number\n ) {\n return mutations\n .map(m => getMutationCount(m))\n .reduce((sum, count) => sum + count);\n }\n\n readonly mutationData: MobxPromise<Partial<T>[] | undefined> = remoteData(\n {\n await: () => {\n if (this.config.filterMutationsBySelectedTranscript) {\n return [\n this.canonicalTranscript,\n this.indexedVariantAnnotations,\n ];\n } else {\n return [this.canonicalTranscript];\n }\n },\n invoke: async () => {\n return this.mutations;\n },\n },\n []\n );\n\n readonly swissProtId: MobxPromise<string> = remoteData(\n {\n invoke: async () => {\n // do not try fetching swissprot data for invalid entrez gene ids,\n // just return the default value\n if (!this.gene.entrezGeneId || this.gene.entrezGeneId < 1) {\n return '';\n }\n\n const accession:\n | string\n | string[] = await this.dataFetcher.fetchSwissProtAccession(\n this.gene.entrezGeneId\n );\n\n if (_.isArray(accession)) {\n return accession[0];\n } else {\n return accession;\n }\n },\n onError: () => {\n // fail silently\n },\n },\n ''\n );\n\n readonly uniprotId: MobxPromise<string | undefined> = remoteData(\n {\n await: () => [this.swissProtId],\n invoke: async () => {\n if (this.swissProtId.result) {\n return this.dataFetcher.fetchUniprotId(\n this.swissProtId.result\n );\n } else {\n return '';\n }\n },\n onError: () => {\n // fail silently\n },\n },\n ''\n );\n\n readonly pfamDomainData: MobxPromise<PfamDomain[] | undefined> = remoteData(\n {\n await: () => [\n this.canonicalTranscript,\n this.transcriptsWithProteinLength,\n ],\n invoke: async () => {\n if (\n this.canonicalTranscript.result &&\n this.canonicalTranscript.result.pfamDomains &&\n this.canonicalTranscript.result.pfamDomains.length > 0\n ) {\n let domainRanges = this.canonicalTranscript.result\n .pfamDomains;\n if (\n this.config.filterMutationsBySelectedTranscript &&\n this.transcriptsWithProteinLength.result &&\n this.transcriptsWithProteinLength.result.length > 0\n ) {\n // add domain ranges for all transcripts to this call\n domainRanges = [].concat.apply(\n [domainRanges],\n _.compact(\n this.transcriptsWithProteinLength.result.map(\n (transcriptId: string) =>\n this.transcriptsByTranscriptId[\n transcriptId\n ].pfamDomains\n )\n )\n );\n }\n return this.dataFetcher.fetchPfamDomainData(\n domainRanges.map((x: PfamDomainRange) => x.pfamDomainId)\n );\n } else {\n return undefined;\n }\n },\n },\n undefined\n );\n\n readonly canonicalTranscript: MobxPromise<\n EnsemblTranscript | undefined\n > = remoteData(\n {\n await: () => [this.transcriptsByHugoSymbol],\n invoke: async () => {\n if (this.gene) {\n return this.dataFetcher.fetchCanonicalTranscriptWithFallback(\n this.gene.hugoGeneSymbol,\n this.isoformOverrideSource,\n this.transcriptsByHugoSymbol.result\n );\n } else {\n return undefined;\n }\n },\n onError: () => {\n throw new Error('Failed to get canonical transcript');\n },\n },\n undefined\n );\n\n readonly allTranscripts: MobxPromise<\n EnsemblTranscript[] | undefined\n > = remoteData(\n {\n await: () => [\n this.transcriptsByHugoSymbol,\n this.canonicalTranscript,\n ],\n invoke: async () => {\n return _.compact(\n _.unionBy(\n this.transcriptsByHugoSymbol.result,\n [this.canonicalTranscript.result],\n t => t && t.transcriptId\n )\n );\n },\n onError: () => {\n throw new Error('Failed to get all transcripts');\n },\n },\n undefined\n );\n\n readonly transcriptsByHugoSymbol: MobxPromise<\n EnsemblTranscript[] | undefined\n > = remoteData(\n {\n invoke: async () => {\n if (this.gene) {\n return this.dataFetcher.fetchEnsemblTranscriptsByEnsemblFilter(\n { hugoSymbols: [this.gene.hugoGeneSymbol] }\n );\n } else {\n return undefined;\n }\n },\n onError: () => {\n throw new Error('Failed to fetch all transcripts');\n },\n },\n undefined\n );\n\n readonly transcriptsWithProteinLength: MobxPromise<\n string[] | undefined\n > = remoteData(\n {\n await: () => [this.allTranscripts, this.canonicalTranscript],\n invoke: async () => {\n if (\n this.allTranscripts.result &&\n this.canonicalTranscript.result\n ) {\n // ignore transcripts without protein length\n // TODO: better solution is to hide lollipop plot for those transcripts\n return _.compact(\n this.allTranscripts.result.map(\n (et: EnsemblTranscript) =>\n et.proteinLength && et.transcriptId\n )\n );\n } else {\n return [];\n }\n },\n onError: () => {\n throw new Error('Failed to get transcriptsWithProteinLength');\n },\n },\n undefined\n );\n\n readonly transcriptsWithAnnotations: MobxPromise<\n string[] | undefined\n > = remoteData(\n {\n await: () => [\n this.indexedVariantAnnotations,\n this.allTranscripts,\n this.transcriptsWithProteinLength,\n this.canonicalTranscript,\n ],\n invoke: async () => {\n if (\n this.indexedVariantAnnotations.result &&\n this.allTranscripts.result &&\n this.transcriptsWithProteinLength.result &&\n this.transcriptsWithProteinLength.result.length > 0\n ) {\n // ignore transcripts without protein length\n // TODO: better solution is to show only mutations table, not lollipop plot for those transcripts\n const transcripts: string[] = _.uniq(\n [].concat.apply(\n [],\n uniqueGenomicLocations(this.getMutations()).map(\n (gl: GenomicLocation) => {\n const variantAnnotation = this\n .indexedVariantAnnotations.result\n ? this.indexedVariantAnnotations.result[\n genomicLocationString(gl)\n ]\n : undefined;\n\n if (\n variantAnnotation &&\n !_.isEmpty(\n variantAnnotation.transcript_consequences\n )\n ) {\n return variantAnnotation.transcript_consequences\n .map(tc => tc.transcript_id)\n .filter((transcriptId: string) =>\n this.transcriptsWithProteinLength.result!.includes(\n transcriptId\n )\n );\n } else {\n return [];\n }\n }\n )\n )\n );\n // makes sure the annotations are actually of the form we are displaying (e.g. nonsynonymous)\n return transcripts.filter(\n t => this.getAnnotatedMutations(t).length > 0\n );\n } else {\n return [];\n }\n },\n onError: () => {\n throw new Error('Failed to get transcriptsWithAnnotations');\n },\n },\n undefined\n );\n\n readonly ptmData: MobxPromise<PostTranslationalModification[]> = remoteData(\n {\n await: () => {\n const waitList = [];\n\n if (this.ptmSources.includes(PtmSource.Uniprot)) {\n waitList.push(this.uniprotPtmData);\n }\n if (this.ptmSources.includes(PtmSource.dbPTM)) {\n waitList.push(this.dbPtmData);\n }\n\n return waitList;\n },\n invoke: () => {\n const data: PostTranslationalModification[] = [];\n\n if (\n this.ptmSources.includes(PtmSource.Uniprot) &&\n this.uniprotPtmData.result\n ) {\n data.push(\n ...this.uniprotPtmData.result.map(\n convertUniprotFeatureToPtm\n )\n );\n }\n\n if (\n this.ptmSources.includes(PtmSource.dbPTM) &&\n this.dbPtmData.result\n ) {\n data.push(...this.dbPtmData.result.map(convertDbPtmToPtm));\n }\n\n return Promise.resolve(data);\n },\n onError: () => {\n // fail silently\n },\n }\n );\n\n readonly uniprotPtmData: MobxPromise<UniprotFeature[]> = remoteData(\n {\n await: () => [\n this.mutationData,\n this.activeTranscript,\n this.allTranscripts,\n ],\n invoke: async () => {\n let uniprotId: string | undefined;\n\n if (this.activeTranscript.result) {\n const transcript = this.transcriptsByTranscriptId[\n this.activeTranscript.result\n ];\n uniprotId = transcript?.uniprotId;\n }\n\n if (uniprotId) {\n // TODO we need to update genome nexus for this one to work,\n // for now we are getting the data directly from uniprot API\n // return this.dataFetcher.fetchPtmData(\n // this.activeTranscript.result\n // );\n return this.dataFetcher.fetchUniprotFeatures(uniprotId, [\n UniprotCategory.PTM,\n ]);\n } else {\n return [];\n }\n },\n onError: () => {\n // fail silently\n },\n },\n []\n );\n\n readonly uniprotTopologyData: MobxPromise<UniprotTopology[]> = remoteData(\n {\n await: () => [\n this.mutationData,\n this.activeTranscript,\n this.allTranscripts,\n ],\n invoke: async () => {\n let uniprotId: string | undefined;\n const data: UniprotTopology[] = [];\n\n if (this.activeTranscript.result) {\n const transcript = this.transcriptsByTranscriptId[\n this.activeTranscript.result\n ];\n uniprotId = transcript?.uniprotId;\n }\n\n if (uniprotId) {\n // TODO we need to update genome nexus for this one to work,\n // for now we are getting the data directly from uniprot API\n const uniprotFeatures = await this.dataFetcher.fetchUniprotFeatures(\n uniprotId,\n [UniprotCategory.TOPOLOGY]\n );\n uniprotFeatures.forEach(uniprotFeature => {\n let uniprotTopology = convertUniprotFeatureToUniprotTopology(\n uniprotFeature\n );\n if (uniprotTopology) {\n data.push(uniprotTopology);\n }\n });\n return data;\n } else {\n return [];\n }\n },\n onError: () => {\n // fail silently\n },\n },\n []\n );\n\n readonly dbPtmData: MobxPromise<DbPtm[]> = remoteData(\n {\n await: () => [this.mutationData, this.activeTranscript],\n invoke: async () => {\n if (this.activeTranscript.result) {\n return this.dataFetcher.fetchPtmData(\n this.activeTranscript.result\n );\n } else {\n return [];\n }\n },\n onError: () => {\n // fail silently\n },\n },\n []\n );\n\n readonly ptmDataByProteinPosStart: MobxPromise<\n { [pos: number]: PostTranslationalModification[] } | undefined\n > = remoteData(\n {\n await: () => [this.ptmData],\n invoke: async () =>\n this.ptmData.result\n ? groupPtmDataByPosition(this.ptmData.result)\n : {},\n },\n {}\n );\n\n readonly ptmDataByTypeAndProteinPosStart: MobxPromise<\n | {\n [type: string]: {\n [position: number]: PostTranslationalModification[];\n };\n }\n | undefined\n > = remoteData(\n {\n await: () => [this.ptmData],\n invoke: async () =>\n this.ptmData.result\n ? groupPtmDataByTypeAndPosition(this.ptmData.result)\n : {},\n },\n {}\n );\n\n readonly cancerHotspotsData: MobxPromise<Hotspot[]> = remoteData(\n {\n await: () => [this.mutationData, this.activeTranscript],\n invoke: async () => {\n if (this.activeTranscript.result) {\n // TODO resolve protein start pos if missing\n return this.dataFetcher.fetchCancerHotspotData(\n this.activeTranscript.result\n );\n } else {\n return [];\n }\n },\n onError: () => {\n // fail silently\n },\n },\n []\n );\n\n readonly cancerHotspotsDataByProteinPosStart: MobxPromise<{\n [pos: number]: Hotspot[];\n }> = remoteData(\n {\n await: () => [this.cancerHotspotsData],\n invoke: async () =>\n this.cancerHotspotsData.result\n ? groupCancerHotspotDataByPosition(\n this.cancerHotspotsData.result\n )\n : {},\n },\n {}\n );\n\n // Hotspots\n readonly hotspotData: MobxPromise<AggregatedHotspots[]> = remoteData({\n await: () => [this.mutationData],\n invoke: () => {\n return this.dataFetcher.fetchAggregatedHotspotsData(this.mutations);\n },\n });\n\n readonly indexedHotspotData: MobxPromise<\n IHotspotIndex | undefined\n > = remoteData({\n await: () => [this.hotspotData],\n invoke: () => Promise.resolve(indexHotspotsData(this.hotspotData)),\n });\n\n @computed\n get hotspotsByPosition(): { [pos: number]: Hotspot[] } {\n if (this.indexedHotspotData.result) {\n return groupHotspotsByMutations(\n this.mutationsByPosition,\n this.indexedHotspotData.result,\n defaultHotspotFilter\n );\n } else {\n return {};\n }\n }\n\n readonly oncoKbCancerGenes: MobxPromise<CancerGene[] | Error> = remoteData(\n {\n invoke: () => this.dataFetcher.fetchOncoKbCancerGenes(),\n },\n []\n );\n\n readonly oncoKbInfo: MobxPromise<OncoKBInfo> = remoteData(\n {\n invoke: () => this.dataFetcher.fetchOncoKbInfo(),\n onError: () => ONCOKB_DEFAULT_INFO,\n },\n ONCOKB_DEFAULT_INFO\n );\n\n @computed\n get usingPublicOncoKbInstance() {\n return this.oncoKbInfo.result\n ? this.oncoKbInfo.result.publicInstance\n : USE_DEFAULT_PUBLIC_INSTANCE_FOR_ONCOKB;\n }\n\n readonly oncoKbAnnotatedGenes: MobxPromise<{\n [entrezGeneId: number]: boolean;\n }> = remoteData(\n {\n await: () => [this.oncoKbCancerGenes],\n invoke: () =>\n Promise.resolve(\n _.reduce(\n this.oncoKbCancerGenes.result,\n (\n map: { [entrezGeneId: number]: boolean },\n next: CancerGene\n ) => {\n if (next.oncokbAnnotated) {\n map[next.entrezGeneId] = true;\n }\n return map;\n },\n {}\n )\n ),\n },\n {}\n );\n\n readonly oncoKbData: MobxPromise<IOncoKbData | Error> = remoteData(\n {\n await: () => [this.mutationData, this.oncoKbAnnotatedGenes],\n invoke: () =>\n this.config.enableOncoKb\n ? this.dataFetcher.fetchOncoKbData(\n this.mutations,\n this.oncoKbAnnotatedGenes.result!,\n this.getDefaultTumorType,\n this.getDefaultEntrezGeneId\n )\n : Promise.resolve(ONCOKB_DEFAULT_DATA),\n onError: () => {\n // fail silently, leave the error handling responsibility to the data consumer\n },\n },\n ONCOKB_DEFAULT_DATA\n );\n\n @computed\n get oncoKbDataByPosition(): { [pos: number]: IndicatorQueryResp[] } {\n if (\n this.oncoKbData.result &&\n !(this.oncoKbData.result instanceof Error)\n ) {\n return groupOncoKbIndicatorDataByMutations(\n this.mutationsByPosition,\n this.oncoKbData.result,\n this.getDefaultTumorType,\n this.getDefaultEntrezGeneId,\n defaultOncoKbIndicatorFilter\n );\n } else {\n return {};\n }\n }\n\n readonly civicGenes: MobxPromise<ICivicGeneIndex | undefined> = remoteData({\n await: () => [this.mutationData],\n invoke: async () =>\n this.config.enableCivic\n ? fetchCivicGenes(\n this.mutationData.result || [],\n this.getDefaultEntrezGeneId\n )\n : {},\n onError: () => {\n // fail silently\n },\n });\n\n readonly civicVariants = remoteData<ICivicVariantIndex | undefined>({\n await: () => [this.civicGenes, this.mutationData],\n invoke: async () => {\n if (this.config.enableCivic && this.civicGenes.result) {\n return fetchCivicVariants(\n this.civicGenes.result as ICivicGeneIndex,\n this.mutationData.result || []\n );\n } else {\n return {};\n }\n },\n onError: () => {\n // fail silently\n },\n });\n\n readonly indexedVariantAnnotations: MobxPromise<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n > = remoteData({\n invoke: async () =>\n !_.isEmpty(this.getMutations())\n ? await this.dataFetcher.fetchVariantAnnotationsIndexedByGenomicLocation(\n this.getMutations(),\n this.annotationFields,\n this.isoformOverrideSource\n )\n : undefined,\n onError: () => {\n // fail silently, leave the error handling responsibility to the data consumer\n },\n });\n\n readonly indexedMyVariantInfoAnnotations: MobxPromise<\n IMyVariantInfoIndex | undefined\n > = remoteData({\n await: () => [this.mutationData],\n invoke: async () =>\n !_.isEmpty(this.getMutations())\n ? await this.dataFetcher.fetchMyVariantInfoAnnotationsIndexedByGenomicLocation(\n this.getMutations(),\n this.isoformOverrideSource\n )\n : undefined,\n onError: () => {\n // fail silently, leave the error handling responsibility to the data consumer\n },\n });\n\n @computed\n get mutationsByTranscriptId(): { [transcriptId: string]: T[] } {\n if (\n this.indexedVariantAnnotations.result &&\n this.transcriptsWithAnnotations.result &&\n this.canonicalTranscript.isComplete\n ) {\n return _.fromPairs(\n this.transcriptsWithAnnotations.result.map((t: string) => [\n t,\n this.getAnnotatedMutations(t),\n ])\n );\n } else {\n return {};\n }\n }\n\n @autobind\n protected getDefaultTumorType(mutation: T): string {\n return this.config.getTumorType\n ? this.config.getTumorType(mutation)\n : 'Unknown';\n }\n\n @autobind\n protected getDefaultEntrezGeneId(mutation: T): number {\n // assuming all mutations in this store is for the same gene\n return (\n this.gene.entrezGeneId ||\n (mutation.gene && mutation.gene.entrezGeneId) ||\n 0\n );\n }\n}\n\nexport default DefaultMutationMapperStore;\n","import { WindowWrapper } from 'cbioportal-frontend-commons';\n\nlet windowInstance: WindowWrapper | undefined;\n\nexport function getDefaultWindowInstance() {\n if (!windowInstance) {\n windowInstance = new WindowWrapper();\n }\n\n return windowInstance;\n}\n","import { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { formatPercentValue } from 'cbioportal-utils';\nimport * as React from 'react';\n\nimport styles from './defaultMutationRateSummary.module.scss';\n\nexport type MutationRate = {\n rate: number;\n title: string;\n description?: string;\n};\n\nexport type DefaultMutationRateSummaryProps = {\n rates: MutationRate[];\n fractionDigits?: number;\n};\n\nexport default class DefaultMutationRateSummary extends React.Component<\n DefaultMutationRateSummaryProps\n> {\n public render() {\n return (\n <React.Fragment>\n {this.props.rates.map(r => (\n <div key={r.title} className={styles.mutationRateSummary}>\n <span>{r.title}: </span>\n <span>\n {formatPercentValue(\n r.rate,\n this.props.fractionDigits\n )}\n %\n </span>\n {r.description && (\n <DefaultTooltip\n placement=\"right\"\n overlay={<span>{r.description}</span>}\n >\n <i\n className=\"fa fa-info-circle\"\n style={{ marginLeft: '0.2rem' }}\n />\n </DefaultTooltip>\n )}\n </div>\n ))}\n </React.Fragment>\n );\n }\n}\n","import classNames from 'classnames';\nimport _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport Select from 'react-select';\n\nimport { Mutation, RemoteData } from 'cbioportal-utils';\nimport {\n EnsemblTranscript,\n VariantAnnotation,\n} from 'genome-nexus-ts-api-client';\n\nimport styles from './transcriptDropdown.module.scss';\n\nexport type TranscriptDropdownProps = {\n showDropDown: boolean;\n showOnlyAnnotatedTranscriptsInDropdown: boolean;\n activeTranscript?: string;\n transcriptsByTranscriptId: { [transcriptId: string]: EnsemblTranscript };\n canonicalTranscript: RemoteData<EnsemblTranscript | undefined>;\n transcriptsWithProteinLength: RemoteData<string[] | undefined>;\n transcriptsWithAnnotations: RemoteData<string[] | undefined>;\n indexedVariantAnnotations: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >;\n mutationsByTranscriptId?: { [transcriptId: string]: Mutation[] };\n onChange: (value: string) => void;\n loadingIndicator?: JSX.Element;\n};\n\n@observer\nexport default class TranscriptDropdown extends React.Component<\n TranscriptDropdownProps,\n {}\n> {\n public render() {\n const {\n showDropDown,\n canonicalTranscript,\n showOnlyAnnotatedTranscriptsInDropdown,\n activeTranscript,\n transcriptsByTranscriptId,\n transcriptsWithProteinLength,\n transcriptsWithAnnotations,\n indexedVariantAnnotations,\n mutationsByTranscriptId,\n } = this.props;\n\n const canonicalTranscriptId =\n canonicalTranscript.result &&\n canonicalTranscript.result.transcriptId;\n\n if (!showDropDown) {\n return <span />;\n } else if (showOnlyAnnotatedTranscriptsInDropdown) {\n const isLoading =\n transcriptsWithProteinLength.isPending ||\n transcriptsWithAnnotations.isPending ||\n canonicalTranscript.isPending;\n const requiredData =\n indexedVariantAnnotations.result &&\n Object.keys(indexedVariantAnnotations.result).length > 0 &&\n canonicalTranscriptId &&\n transcriptsWithAnnotations.result &&\n transcriptsWithAnnotations.result.length > 0;\n\n return (\n <div className={classNames('small', styles.dropDown)}>\n {this.loadingIndicator(isLoading)}\n {!isLoading &&\n requiredData &&\n this.getDropdownTranscripts(\n activeTranscript || canonicalTranscriptId!,\n transcriptsWithAnnotations.result!,\n canonicalTranscriptId!,\n transcriptsByTranscriptId,\n mutationsByTranscriptId\n )}\n </div>\n );\n } else {\n // using existing annotations, show all transcripts with protein length\n const isLoading =\n transcriptsWithProteinLength.isPending ||\n canonicalTranscript.isPending;\n const requiredData =\n transcriptsWithProteinLength.result &&\n transcriptsWithProteinLength.result.length > 0 &&\n canonicalTranscriptId;\n return (\n <div className={classNames('small', styles.dropDown)}>\n {this.loadingIndicator(isLoading)}\n {!isLoading &&\n requiredData &&\n this.getDropdownTranscripts(\n activeTranscript || canonicalTranscriptId!!,\n transcriptsWithProteinLength.result!!,\n canonicalTranscriptId!!,\n transcriptsByTranscriptId\n )}\n </div>\n );\n }\n }\n\n private getDropdownTranscripts(\n activeTranscript: string,\n allTranscripts: string[],\n canonicalTranscript: string,\n transcriptsByTranscriptId: {\n [transcriptId: string]: EnsemblTranscript;\n },\n mutationsByTranscriptId?: { [transcriptId: string]: Mutation[] }\n ) {\n const activeRefseqMrnaId =\n transcriptsByTranscriptId[activeTranscript].refseqMrnaId;\n return (\n <div>\n <Select\n value={{\n label: activeRefseqMrnaId\n ? activeRefseqMrnaId\n : activeTranscript,\n value: activeTranscript,\n }}\n clearable={false}\n // need to explicitly set delteRemoves for cleable\n // https://github.com/JedWatson/react-select/issues/1560\n deleteRemoves={false}\n options={this.sortTranscripts(allTranscripts).map(\n (t: string) => {\n const length =\n transcriptsByTranscriptId[t].proteinLength;\n const refseqMrnaId =\n transcriptsByTranscriptId[t].refseqMrnaId;\n const ccdsId = transcriptsByTranscriptId[t].ccdsId;\n const nrOfMutations =\n mutationsByTranscriptId &&\n mutationsByTranscriptId[t] &&\n mutationsByTranscriptId[t].length;\n const label = `${\n refseqMrnaId ? `${refseqMrnaId} / ` : ''\n }${t} ${ccdsId ? `(${ccdsId})` : ''} ${\n length ? `(${length} amino acids)` : ''\n } ${\n nrOfMutations\n ? `(${nrOfMutations} mutations)`\n : ''\n } ${t === canonicalTranscript ? ' (default)' : ''}`;\n return { label: label, value: t };\n }\n )}\n onChange={(option: any) => {\n if (option.value) {\n this.props.onChange(option.value);\n }\n }}\n />\n </div>\n );\n }\n\n private sortTranscripts(transcripts: string[]) {\n const { canonicalTranscript, transcriptsByTranscriptId } = this.props;\n\n // sort transcripts for dropdown\n // canonical id first\n // then ones with refseq id\n // then protein length\n // lastly the ensembl id\n transcripts = _.orderBy(\n transcripts,\n [\n t =>\n canonicalTranscript.result &&\n t === canonicalTranscript.result.transcriptId,\n t =>\n transcriptsByTranscriptId[t].hasOwnProperty('refseqMrnaId'),\n t => transcriptsByTranscriptId[t].proteinLength,\n t => t,\n ],\n ['desc', 'desc', 'desc', 'asc']\n );\n return transcripts;\n }\n\n private loadingIndicator(isLoading: boolean) {\n return isLoading\n ? this.props.loadingIndicator || (\n <i className=\"fa fa-spinner fa-pulse fa-2x\" />\n )\n : null;\n }\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { getNCBIlink } from 'cbioportal-frontend-commons';\nimport { Mutation, RemoteData } from 'cbioportal-utils';\nimport {\n EnsemblTranscript,\n VariantAnnotation,\n} from 'genome-nexus-ts-api-client';\n\nimport { getUrl } from '../../util/DataFetcherUtils';\nimport TranscriptDropdown from './TranscriptDropdown';\nimport styles from './geneSummary.module.scss';\n\nexport type GeneSummaryProps = {\n hugoGeneSymbol: string;\n uniprotId?: string;\n transcriptSummaryUrlTemplate?: string;\n showDropDown: boolean;\n showOnlyAnnotatedTranscriptsInDropdown: boolean;\n compactStyle?: boolean; // compactStyle = false: \"RefSeq: NM_000546 Ensembl: ENST00000269305...\", compactStyle = true: \"NM_000546 | ENST00000269305...\"\n transcriptsByTranscriptId: { [transcriptId: string]: EnsemblTranscript };\n activeTranscript?: string;\n canonicalTranscript: RemoteData<EnsemblTranscript | undefined>;\n transcriptsWithProteinLength: RemoteData<string[] | undefined>;\n transcriptsWithAnnotations: RemoteData<string[] | undefined>;\n indexedVariantAnnotations: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >;\n mutationsByTranscriptId?: { [transcriptId: string]: Mutation[] };\n onTranscriptChange: (transcriptId: string) => void;\n loadingIndicator?: JSX.Element;\n};\n\nconst GeneSummaryInfo: React.FunctionComponent<GeneSummaryProps> = ({\n uniprotId,\n showDropDown,\n canonicalTranscript,\n compactStyle,\n activeTranscript,\n transcriptsByTranscriptId,\n transcriptSummaryUrlTemplate,\n}) => {\n const canonicalTranscriptId =\n canonicalTranscript.result && canonicalTranscript.result.transcriptId;\n const transcript =\n activeTranscript && activeTranscript === canonicalTranscriptId\n ? (canonicalTranscript.result as EnsemblTranscript)\n : transcriptsByTranscriptId[activeTranscript!];\n const refseqMrnaId = transcript && transcript.refseqMrnaId;\n const ccdsId = transcript && transcript.ccdsId;\n\n const refSeq = refseqMrnaId ? (\n <a href={getNCBIlink(`/nuccore/${refseqMrnaId}`)} target=\"_blank\">\n {refseqMrnaId}\n </a>\n ) : (\n '-'\n );\n const ensembl = showDropDown\n ? activeTranscript && (\n <a\n href={getUrl(transcriptSummaryUrlTemplate!, {\n transcriptId: activeTranscript,\n })}\n target=\"_blank\"\n >\n {activeTranscript}\n </a>\n )\n : canonicalTranscriptId && (\n // down't show drop down, only the canonical transcript\n <a\n href={getUrl(transcriptSummaryUrlTemplate!, {\n transcriptId: canonicalTranscriptId,\n })}\n target=\"_blank\"\n >\n {canonicalTranscriptId}\n </a>\n );\n const ccds = ccdsId ? (\n <a\n href={getNCBIlink({\n pathname: '/CCDS/CcdsBrowse.cgi',\n query: {\n REQUEST: 'CCDS',\n DATA: ccdsId,\n },\n })}\n target=\"_blank\"\n >\n {ccdsId}\n </a>\n ) : (\n '-'\n );\n\n const uniprot = uniprotId ? (\n <a href={`http://www.uniprot.org/uniprot/${uniprotId}`} target=\"_blank\">\n {uniprotId}\n </a>\n ) : (\n '-'\n );\n\n const compactGeneSummaryInfo = (\n <div>\n <span data-test=\"compactGeneSummaryRefSeq\">{refSeq}</span>\n {` | `}\n {ensembl}\n <br />\n <span data-test=\"compactGeneSummaryCCDS\">{ccds}</span>\n {` | `}\n <span data-test=\"compactGeneSummaryUniProt\">{uniprot}</span>\n </div>\n );\n\n const geneSummaryInfo = (\n <div>\n <div>\n <span data-test=\"GeneSummaryRefSeq\">\n {'RefSeq: '}\n {refSeq}\n </span>\n </div>\n <div>\n <span>Ensembl: </span>\n {ensembl}\n </div>\n <div>\n <span data-test=\"GeneSummaryCCDS\">\n {'CCDS: '}\n {ccds}\n </span>\n </div>\n <div>\n <span data-test=\"GeneSummaryUniProt\">\n {'UniProt: '}\n {uniprot}\n </span>\n </div>\n </div>\n );\n return compactStyle ? compactGeneSummaryInfo : geneSummaryInfo;\n};\n\n@observer\nexport default class GeneSummary extends React.Component<GeneSummaryProps, {}> {\n public static defaultProps: Partial<GeneSummaryProps> = {\n transcriptSummaryUrlTemplate:\n 'http://grch37.ensembl.org/homo_sapiens/Transcript/Summary?t=<%= transcriptId %>',\n compactStyle: false,\n };\n\n public render() {\n const {\n hugoGeneSymbol,\n showDropDown,\n showOnlyAnnotatedTranscriptsInDropdown,\n canonicalTranscript,\n activeTranscript,\n transcriptsByTranscriptId,\n transcriptsWithAnnotations,\n transcriptsWithProteinLength,\n indexedVariantAnnotations,\n mutationsByTranscriptId,\n onTranscriptChange,\n loadingIndicator,\n } = this.props;\n\n return (\n <div\n className={\n this.props.compactStyle\n ? styles.geneSummaryCompact\n : styles.geneSummary\n }\n >\n {!this.props.compactStyle && (\n <h4 className={styles.hugoSymbol}>{hugoGeneSymbol}</h4>\n )}\n <TranscriptDropdown\n showDropDown={showDropDown}\n showOnlyAnnotatedTranscriptsInDropdown={\n showOnlyAnnotatedTranscriptsInDropdown\n }\n activeTranscript={activeTranscript}\n transcriptsByTranscriptId={transcriptsByTranscriptId}\n canonicalTranscript={canonicalTranscript}\n transcriptsWithProteinLength={transcriptsWithProteinLength}\n transcriptsWithAnnotations={transcriptsWithAnnotations}\n indexedVariantAnnotations={indexedVariantAnnotations}\n mutationsByTranscriptId={mutationsByTranscriptId}\n onChange={onTranscriptChange}\n loadingIndicator={loadingIndicator}\n />\n <GeneSummaryInfo {...this.props} />\n </div>\n );\n }\n}\n","import { action, computed, makeObservable, observable } from 'mobx';\nimport * as React from 'react';\nimport { ReactNode } from 'react';\nimport { TableProps } from 'react-table';\n\nimport { MobxCache, Mutation, RemoteData } from 'cbioportal-utils';\n\nimport { DefaultPubMedCache } from '../../cache/DefaultPubMedCache';\nimport { MutationAlignerCache } from '../../cache/MutationAlignerCache';\nimport { FilterResetPanel } from './FilterResetPanel';\nimport { DataFilter } from '../../model/DataFilter';\nimport { ApplyFilterFn, FilterApplier } from '../../model/FilterApplier';\nimport { LollipopPlotControlsConfig } from '../../model/LollipopPlotControlsConfig';\nimport { MutationMapperDataFetcher } from '../../model/MutationMapperDataFetcher';\nimport { MutationMapperStore } from '../../model/MutationMapperStore';\nimport { DefaultLollipopPlotControlsConfig } from '../../store/DefaultLollipopPlotControlsConfig';\nimport DefaultMutationMapperStore from '../../store/DefaultMutationMapperStore';\nimport { initDefaultTrackVisibility } from '../../util/TrackUtils';\nimport { getDefaultWindowInstance } from '../../util/DefaultWindowInstance';\nimport { ColumnSort, DataTableColumn } from '../dataTable/DataTable';\nimport DefaultMutationRateSummary, {\n MutationRate,\n} from './DefaultMutationRateSummary';\nimport DefaultMutationTable from '../mutationTable/DefaultMutationTable';\nimport GeneSummary from './GeneSummary';\nimport LollipopMutationPlot from '../lollipopMutationPlot/LollipopMutationPlot';\nimport { DEFAULT_MUTATION_COLUMNS } from '../mutationTable/MutationColumnHelper';\nimport {\n TrackDataStatus,\n TrackName,\n TrackVisibility,\n} from '../track/TrackSelector';\n\nexport type MutationMapperProps = {\n hugoSymbol?: string;\n entrezGeneId?: number;\n data?: Partial<Mutation>[];\n store?: MutationMapperStore<Mutation>;\n lollipopPlotControlsConfig?: LollipopPlotControlsConfig;\n windowWrapper?: { size: { width: number; height: number } };\n trackVisibility?: TrackVisibility;\n tracks?: TrackName[];\n showTrackSelector?: boolean;\n mutationTableColumns?: DataTableColumn<Partial<Mutation>>[];\n customMutationTableProps?: Partial<TableProps<Partial<Mutation>>>;\n showFilterResetPanel?: boolean;\n showPlotYAxis?: boolean;\n showPlotYMaxSlider?: boolean;\n showPlotLegendToggle?: boolean;\n showPlotDownloadControls?: boolean;\n plotYMaxFractionDigits?: number;\n plotYMaxLabelPostfix?: string;\n plotTopYAxisSymbol?: string;\n plotBottomYAxisSymbol?: string;\n plotTopYAxisDefaultMax?: number;\n plotTopYAxisDefaultMin?: number;\n plotBottomYAxisDefaultMax?: number;\n plotBottomYAxisDefaultMin?: number;\n plotYAxisLabelPadding?: number;\n plotLollipopTooltipCountInfo?: (\n count: number,\n mutations?: Partial<Mutation>[]\n ) => JSX.Element;\n plotVizHeight?: number;\n customControls?: JSX.Element;\n mutationTable?: JSX.Element;\n mutationTableInitialSort?: ColumnSort[];\n mutationTableInitialSortRemoteData?: (RemoteData<any> | undefined)[];\n mutationRates?: MutationRate[];\n pubMedCache?: MobxCache;\n mutationAlignerCache?: MobxCache;\n // TODO annotateMutations?: boolean;\n dataFetcher?: MutationMapperDataFetcher;\n mutationAlignerUrlTemplate?: string;\n genomeNexusUrl?: string;\n oncoKbUrl?: string;\n enableOncoKb?: boolean;\n enableCivic?: boolean;\n cachePostMethodsOnClients?: boolean;\n apiCacheLimit?: number;\n showTranscriptDropDown?: boolean;\n showOnlyAnnotatedTranscriptsInDropdown?: boolean;\n filterMutationsBySelectedTranscript?: boolean;\n transcriptSummaryUrlTemplate?: string;\n isoformOverrideSource?: string;\n ptmSources?: string[];\n annotationFields?: string[];\n mainLoadingIndicator?: JSX.Element;\n geneSummaryLoadingIndicator?: JSX.Element;\n getLollipopColor?: (mutations: Partial<Mutation>[]) => string;\n getMutationCount?: (mutation: Partial<Mutation>) => number;\n getTumorType?: (mutation: Partial<Mutation>) => string;\n onXAxisOffset?: (offset: number) => void;\n onTrackVisibilityChange?: (selectedTrackIds: string[]) => void;\n\n dataFilters?: DataFilter[];\n selectionFilters?: DataFilter[];\n highlightFilters?: DataFilter[];\n groupFilters?: { group: string; filter: DataFilter }[];\n filterAppliersOverride?: { [filterType: string]: ApplyFilterFn };\n filterApplier?: FilterApplier;\n onTranscriptChange?: (transcript: string) => void;\n compactStyle?: boolean;\n collapsePtmTrack?: boolean;\n collapseUniprotTopologyTrack?: boolean;\n};\n\nexport function initDefaultMutationMapperStore(props: MutationMapperProps) {\n return new DefaultMutationMapperStore(\n {\n entrezGeneId: props.entrezGeneId, // entrezGeneId is required to display uniprot id\n hugoGeneSymbol: props.hugoSymbol ? props.hugoSymbol! : '',\n },\n {\n annotationFields: props.annotationFields,\n isoformOverrideSource: props.isoformOverrideSource,\n ptmSources: props.ptmSources,\n filterMutationsBySelectedTranscript:\n props.filterMutationsBySelectedTranscript,\n genomeNexusUrl: props.genomeNexusUrl,\n oncoKbUrl: props.oncoKbUrl,\n enableCivic: props.enableCivic,\n enableOncoKb: props.enableOncoKb,\n cachePostMethodsOnClients: props.cachePostMethodsOnClients,\n apiCacheLimit: props.apiCacheLimit,\n getMutationCount: props.getMutationCount,\n getTumorType: props.getTumorType,\n dataFetcher: props.dataFetcher,\n filterApplier: props.filterApplier,\n filterAppliersOverride: props.filterAppliersOverride,\n dataFilters: props.dataFilters,\n selectionFilters: props.selectionFilters,\n highlightFilters: props.highlightFilters,\n groupFilters: props.groupFilters,\n },\n () => (props.data || []) as Mutation[]\n );\n}\n\nexport default class MutationMapper<\n P extends MutationMapperProps = MutationMapperProps\n> extends React.Component<P, {}> {\n public static defaultProps: Partial<MutationMapperProps> = {\n showFilterResetPanel: true,\n showOnlyAnnotatedTranscriptsInDropdown: false,\n showTranscriptDropDown: false,\n enableCivic: true,\n enableOncoKb: true,\n filterMutationsBySelectedTranscript: false,\n cachePostMethodsOnClients: true,\n };\n\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n\n @observable\n private _trackVisibility: TrackVisibility | undefined;\n\n @observable\n protected lollipopPlotGeneX: number | undefined;\n\n @computed\n protected get geneWidth(): number {\n if (this.lollipopPlotGeneX) {\n return this.windowWrapper.size.width * 0.7 - this.lollipopPlotGeneX;\n } else {\n return 666;\n }\n }\n\n @computed\n protected get trackVisibility(): TrackVisibility {\n if (this.props.trackVisibility) {\n return this.props.trackVisibility!;\n } else {\n if (!this._trackVisibility) {\n this._trackVisibility = initDefaultTrackVisibility();\n }\n\n return this._trackVisibility;\n }\n }\n\n protected getTrackDataStatus(): TrackDataStatus {\n // TODO dummy method for now: move the implementation from cbioportal-frontend\n return {};\n }\n\n @computed get trackDataStatus() {\n return this.getTrackDataStatus();\n }\n\n protected get plotTopYAxisSymbol(): string | undefined {\n return this.props.plotTopYAxisSymbol;\n }\n\n protected get plotYMaxLabelPostfix(): string | undefined {\n return this.props.plotYMaxLabelPostfix;\n }\n\n protected get plotBottomYAxisSymbol(): string | undefined {\n return this.props.plotBottomYAxisSymbol;\n }\n\n protected get plotTopYAxisDefaultMax(): number | undefined {\n return this.props.plotTopYAxisDefaultMax;\n }\n\n protected get plotTopYAxisDefaultMin(): number | undefined {\n return this.props.plotTopYAxisDefaultMin;\n }\n\n protected get plotBottomYAxisDefaultMax(): number | undefined {\n return this.props.plotBottomYAxisDefaultMax;\n }\n\n protected get plotBottomYAxisDefaultMin(): number | undefined {\n return this.props.plotBottomYAxisDefaultMin;\n }\n\n @computed\n protected get store(): MutationMapperStore<Mutation> {\n return this.props.store\n ? this.props.store!\n : initDefaultMutationMapperStore(this.props);\n }\n\n protected get lollipopPlotControlsConfig(): LollipopPlotControlsConfig {\n return this.props.lollipopPlotControlsConfig\n ? this.props.lollipopPlotControlsConfig!\n : new DefaultLollipopPlotControlsConfig();\n }\n\n protected get pubMedCache(): MobxCache {\n return this.props.pubMedCache\n ? this.props.pubMedCache!\n : new DefaultPubMedCache();\n }\n\n protected get mutationAlignerCache(): MobxCache {\n // mutationAlignerUrlTemplate property is ignored if a custom cache implementation is provided\n return this.props.mutationAlignerCache\n ? this.props.mutationAlignerCache!\n : new MutationAlignerCache(this.props.mutationAlignerUrlTemplate);\n }\n\n protected getWindowWrapper() {\n return this.props.windowWrapper\n ? this.props.windowWrapper!\n : getDefaultWindowInstance();\n }\n\n @computed\n protected get windowWrapper(): { size: { width: number; height: number } } {\n return this.getWindowWrapper();\n }\n\n protected get mutationTableInfo(): JSX.Element | undefined {\n // TODO implement default\n // @computed\n // get multipleMutationInfo(): string {\n // const count = this.store.dataStore.duplicateMutationCountInMultipleSamples;\n // const mutationsLabel = count === 1 ? \"mutation\" : \"mutations\";\n //\n // return count > 0 ? `: includes ${count} duplicate ${mutationsLabel} in patients with multiple samples` : \"\";\n // }\n //\n // @computed get itemsLabelPlural(): string {\n // return `Mutations${this.multipleMutationInfo}`;\n // }\n\n return undefined;\n }\n\n protected get mutationTableComponent(): JSX.Element | null {\n if (this.props.mutationTable) {\n return this.props.mutationTable!;\n } else {\n let columns: DataTableColumn<\n Partial<Mutation>\n >[] = DEFAULT_MUTATION_COLUMNS;\n if (this.props.mutationTableColumns) {\n columns = this.props.mutationTableColumns!;\n }\n\n return (\n <DefaultMutationTable\n dataStore={this.store.dataStore}\n columns={columns}\n initialSort={this.props.mutationTableInitialSort}\n initialSortRemoteData={\n this.props.mutationTableInitialSortRemoteData\n }\n reactTableProps={this.props.customMutationTableProps}\n hotspotData={this.store.indexedHotspotData}\n oncoKbData={this.store.oncoKbData}\n usingPublicOncoKbInstance={\n this.store.usingPublicOncoKbInstance\n }\n oncoKbCancerGenes={this.store.oncoKbCancerGenes}\n myCancerGenomeData={this.store.myCancerGenomeData}\n enableCivic={this.props.enableCivic}\n civicGenes={this.store.civicGenes}\n civicVariants={this.store.civicVariants}\n indexedMyVariantInfoAnnotations={\n this.store.indexedMyVariantInfoAnnotations\n }\n indexedVariantAnnotations={\n this.store.indexedVariantAnnotations\n }\n selectedTranscriptId={this.store.selectedTranscript}\n pubMedCache={this.pubMedCache}\n info={this.mutationTableInfo}\n />\n );\n }\n }\n\n protected get mutationPlot(): JSX.Element | null {\n return (\n <LollipopMutationPlot\n store={this.store}\n controlsConfig={this.lollipopPlotControlsConfig}\n pubMedCache={this.pubMedCache}\n mutationAlignerCache={this.mutationAlignerCache}\n geneWidth={this.geneWidth}\n vizHeight={this.props.plotVizHeight}\n trackVisibility={this.trackVisibility}\n customControls={this.customControls}\n tracks={this.props.tracks}\n showYMaxSlider={this.props.showPlotYMaxSlider}\n showLegendToggle={this.props.showPlotLegendToggle}\n showDownloadControls={this.props.showPlotDownloadControls}\n filterResetPanel={\n this.props.showFilterResetPanel &&\n this.isFiltered &&\n this.filterResetPanel\n ? this.filterResetPanel\n : undefined\n }\n trackDataStatus={this.trackDataStatus}\n showTrackSelector={this.props.showTrackSelector}\n onXAxisOffset={this.onXAxisOffset}\n onTrackVisibilityChange={this.props.onTrackVisibilityChange}\n getMutationCount={this.props.getMutationCount}\n getLollipopColor={this.props.getLollipopColor}\n yMaxLabelPostfix={this.plotYMaxLabelPostfix}\n yMaxFractionDigits={this.props.plotYMaxFractionDigits}\n yAxisLabelPadding={this.props.plotYAxisLabelPadding}\n showYAxis={this.props.showPlotYAxis}\n topYAxisSymbol={this.plotTopYAxisSymbol}\n bottomYAxisSymbol={this.plotBottomYAxisSymbol}\n topYAxisDefaultMax={this.plotTopYAxisDefaultMax}\n topYAxisDefaultMin={this.plotBottomYAxisDefaultMin}\n bottomYAxisDefaultMax={this.plotBottomYAxisDefaultMax}\n bottomYAxisDefaultMin={this.plotBottomYAxisDefaultMin}\n lollipopTooltipCountInfo={\n this.props.plotLollipopTooltipCountInfo\n }\n collapsePtmTrack={this.props.collapsePtmTrack}\n collapseUniprotTopologyTrack={\n this.props.collapseUniprotTopologyTrack\n }\n />\n );\n }\n\n protected get customControls(): JSX.Element | undefined {\n return this.props.customControls;\n }\n\n protected get geneSummary(): JSX.Element | null {\n return (\n <GeneSummary\n hugoGeneSymbol={this.store.gene.hugoGeneSymbol}\n uniprotId={this.store.uniprotId.result}\n showDropDown={!!this.props.showTranscriptDropDown}\n showOnlyAnnotatedTranscriptsInDropdown={\n !!this.props.showOnlyAnnotatedTranscriptsInDropdown\n }\n transcriptsByTranscriptId={this.store.transcriptsByTranscriptId}\n canonicalTranscript={this.store.canonicalTranscript}\n loadingIndicator={this.props.geneSummaryLoadingIndicator}\n activeTranscript={this.store.activeTranscript!.result}\n indexedVariantAnnotations={this.store.indexedVariantAnnotations}\n transcriptsWithAnnotations={\n this.store.transcriptsWithAnnotations\n }\n transcriptsWithProteinLength={\n this.store.transcriptsWithProteinLength\n }\n mutationsByTranscriptId={this.store.mutationsByTranscriptId}\n transcriptSummaryUrlTemplate={\n this.props.transcriptSummaryUrlTemplate\n }\n onTranscriptChange={this.handleTranscriptChange}\n compactStyle={this.props.compactStyle}\n />\n );\n }\n\n protected get mutationRates(): MutationRate[] | undefined {\n return this.props.mutationRates;\n }\n\n protected getMutationRateSummary() {\n return this.mutationRates ? (\n <DefaultMutationRateSummary rates={this.mutationRates!} />\n ) : null;\n }\n\n protected get mutationRateSummary(): JSX.Element | null {\n return this.getMutationRateSummary();\n }\n\n protected get isFiltered(): boolean {\n return (\n this.store.dataStore.selectionFilters.length > 0 ||\n this.store.dataStore.dataFilters.length > 0\n );\n }\n\n protected get isMutationTableDataLoading(): boolean {\n // Child classes should override this method\n return false;\n }\n\n protected get filterResetPanel(): JSX.Element | null {\n const dataStore = this.store.dataStore;\n const tableData =\n dataStore.sortedFilteredSelectedData.length > 0\n ? dataStore.sortedFilteredSelectedData\n : dataStore.sortedFilteredData;\n const allData = dataStore.allData;\n\n return (\n <FilterResetPanel\n filterInfo={`Showing ${tableData.length} of ${allData.length} mutations.`}\n resetFilters={this.resetFilters}\n />\n );\n }\n\n protected get mutationTable(): JSX.Element | null {\n return <span>{this.mutationTableComponent}</span>;\n }\n\n protected get proteinChainPanel(): JSX.Element | null {\n // TODO move the implementation from cbioportal-frontend\n return null;\n }\n\n protected get mutationFilterPanel(): JSX.Element | null {\n // TODO move the implementation from cbioportal-frontend\n return null;\n }\n\n protected get view3dButton(): JSX.Element | null {\n // TODO move the implementation from cbioportal-frontend\n return null;\n }\n\n protected get isMutationPlotDataLoading(): boolean {\n return this.store.pfamDomainData.isPending;\n }\n\n protected get isLoading(): boolean {\n return (\n this.store.mutationData.isPending ||\n this.isMutationPlotDataLoading ||\n this.isMutationTableDataLoading ||\n (!!this.store.activeTranscript &&\n this.store.activeTranscript.isPending)\n );\n }\n\n protected get loadingIndicator(): JSX.Element {\n return this.props.mainLoadingIndicator ? (\n this.props.mainLoadingIndicator!\n ) : (\n <i className=\"fa fa-spinner fa-pulse fa-2x\" />\n );\n }\n\n public render(): ReactNode {\n return this.isLoading ? (\n this.loadingIndicator\n ) : (\n <div>\n <div style={{ display: 'flex' }}>\n <div\n className=\"borderedChart\"\n style={{ marginRight: '1rem' }}\n >\n {this.mutationPlot}\n {this.proteinChainPanel}\n </div>\n <div className=\"mutationMapperMetaColumn\">\n {this.geneSummary}\n {this.mutationRateSummary}\n {this.mutationFilterPanel}\n {this.view3dButton}\n </div>\n </div>\n {this.mutationTable}\n </div>\n );\n }\n\n @action.bound\n protected handleTranscriptChange(transcriptId: string) {\n if (this.store.setSelectedTranscript) {\n this.store.setSelectedTranscript(transcriptId);\n }\n // TODO this.close3dPanel();\n if (this.props.onTranscriptChange) {\n this.props.onTranscriptChange(transcriptId);\n }\n }\n\n @action.bound\n protected onXAxisOffset(offset: number) {\n if (this.props.onXAxisOffset) {\n this.props.onXAxisOffset(offset);\n } else {\n this.lollipopPlotGeneX = offset;\n }\n }\n\n @action.bound\n protected resetFilters() {\n this.store.dataStore.clearDataFilters();\n this.store.dataStore.clearSelectionFilters();\n this.store.dataStore.clearHighlightFilters();\n }\n}\n"],"names":["React.createElement","classNames","_","React.Component","sortValue","download","hideArrow","React","_a","placeArrow","oncoKbSortValue","civicSortValue","myCancerGenomeSortValue","hotspotSortValue","styles","React.Fragment","_.map","_.isEmpty","_.reduce","_.uniq","_.groupBy","_.keys"],"mappings":"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"}
1
+ {"version":3,"file":"index.es.js","sources":["../src/component/StatusHelpers.tsx","../src/images/civic_text_logo.png","../src/component/civic/CivicCard.tsx","../src/images/civic-logo.png","../src/images/civic-logo-no-variants.png","../src/component/civic/Civic.tsx","../src/component/clinvar/ClinvarSummary.tsx","../src/util/OncoKbUtils.ts","../src/images/mcg_logo.png","../src/component/myCancerGenome/MyCancerGenome.tsx","../src/component/oncokb/AnnotationIcon.tsx","../src/component/oncokb/CompactAnnotationIcon.tsx","../src/component/oncokb/constants.ts","../src/component/oncokb/OncoKbCardTitle.tsx","../src/component/oncokb/OncoKbCardLevelsOfEvidenceDropdown.tsx","../src/component/oncokb/OncoKBSuggestAnnotationLinkout.tsx","../src/component/oncokb/OncoKbHelper.tsx","../src/component/oncokb/ArticleAbstractItem.tsx","../src/component/oncokb/PmidItem.tsx","../src/component/oncokb/ReferenceList.tsx","../src/component/oncokb/RefComponent.tsx","../src/component/oncokb/SummaryWithRefs.tsx","../src/component/oncokb/oncokbCard/EvidenceReferenceContent.tsx","../src/component/oncokb/OncoKbTreatmentTable.tsx","../src/component/oncokb/oncokbCard/BiologicalContent.tsx","../src/component/oncokb/oncokbCard/ImplicationContent.tsx","../src/component/oncokb/OncoKbCardBody.tsx","../src/component/oncokb/OncoKbCard.tsx","../src/component/oncokb/OncoKbTooltip.tsx","../src/component/oncokb/OncoKbFeedback.tsx","../src/component/oncokb/OncoKB.tsx","../src/component/hotspot/HotspotInfo.tsx","../src/component/column/HotspotAnnotation.tsx","../src/util/DataFetcherUtils.ts","../src/component/column/Annotation.tsx","../src/component/clinvar/ClinvarHelper.ts","../src/component/column/ClinvarInterpretation.tsx","../src/component/column/ColumnHeader.tsx","../src/component/dbsnp/DbsnpId.tsx","../src/component/column/MyVariantInfoHelper.tsx","../src/component/column/Dbsnp.tsx","../src/util/GnomadUtils.ts","../src/component/gnomad/GnomadFrequencyTable.tsx","../src/component/gnomad/GnomadFrequency.tsx","../src/component/column/Gnomad.tsx","../src/component/column/VariantAnnotationHelper.ts","../src/component/column/HgvsHelper.ts","../src/component/column/Hgvsc.tsx","../src/component/column/Hgvsg.tsx","../src/component/column/MutationStatus.tsx","../src/component/column/ProteinChange.tsx","../src/component/column/Signal.tsx","../src/util/SelectorUtils.ts","../src/component/filter/DropdownSelector.tsx","../src/component/filter/BadgeLabel.tsx","../src/component/filter/BadgeSelector.tsx","../src/util/MutationTypeUtils.ts","../src/component/filter/ProteinImpactTypeHelper.tsx","../src/component/filter/ProteinImpactTypeDropdownSelector.tsx","../src/component/filter/ProteinImpactTypeBadgeSelector.tsx","../src/component/filter/MutationStatusBadgeSelector.tsx","../src/component/dataTable/ColumnSelector.tsx","../src/component/mutationMapper/FilterResetPanel.tsx","../src/model/DataFilter.ts","../src/util/FilterUtils.ts","../src/component/dataTable/SearchBox.tsx","../src/component/dataTable/DataTableToolbar.tsx","../src/component/dataTable/DataTable.tsx","../src/component/column/MutationType.tsx","../src/component/mutationTable/MutationColumnHelper.tsx","../src/component/mutationTable/DefaultMutationTable.tsx","../src/component/lollipopPlot/Domain.tsx","../src/model/LollipopSpec.ts","../src/component/lollipopPlot/Lollipop.tsx","../src/store/DefaultLollipopPlotControlsConfig.ts","../src/util/LollipopPlotUtils.ts","../src/util/PfamUtils.ts","../src/component/track/TrackSelector.tsx","../src/util/TrackUtils.ts","../src/component/lollipopMutationPlot/DefaultLollipopPlotLegend.tsx","../src/component/lollipopPlot/Sequence.tsx","../src/component/lollipopPlot/LollipopPlotNoTooltip.tsx","../src/component/lollipopPlot/LollipopPlot.tsx","../src/component/lollipopMutationPlot/LollipopMutationPlotControls.tsx","../src/filter/HotspotFilter.ts","../src/component/track/TrackCircle.tsx","../src/util/LabelUtils.tsx","../src/component/track/TrackRect.tsx","../src/component/track/TrackItem.tsx","../src/component/track/Track.tsx","../src/component/track/HotspotTrack.tsx","../src/filter/OncoKbFilter.ts","../src/component/oncokb/OncoKbSummaryTable.tsx","../src/component/track/OncoKbTrackTooltip.tsx","../src/component/track/OncoKbTrack.tsx","../src/component/track/ExonTrack.tsx","../src/component/ptm/PtmReferenceList.tsx","../src/component/ptm/PtmAnnotationTable.tsx","../src/component/track/PtmTrack.tsx","../src/component/track/UniprotTopologyTrack.tsx","../src/component/track/TrackPanel.tsx","../src/component/lollipopPlot/DomainTooltip.tsx","../src/component/lollipopMutationPlot/LollipopMutationPlot.tsx","../src/cache/DefaultStringQueryCache.ts","../src/cache/DefaultPubMedCache.ts","../src/cache/MutationAlignerCache.ts","../src/store/DefaultMutationMapperDataStore.ts","../src/store/DefaultMutationMapperDataFetcher.ts","../src/store/DefaultMutationMapperFilterApplier.ts","../src/store/DefaultMutationMapperStore.ts","../src/util/DefaultWindowInstance.ts","../src/component/mutationMapper/DefaultMutationRateSummary.tsx","../src/component/mutationMapper/TranscriptDropdown.tsx","../src/component/mutationMapper/GeneSummary.tsx","../src/component/mutationMapper/MutationMapper.tsx"],"sourcesContent":["import { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport annotationStyles from './column/annotation.module.scss';\n\nexport function loaderIcon(className?: string) {\n return (\n <span\n className={classNames(\n `${annotationStyles['annotation-item']}`,\n `${annotationStyles['annotation-item-load']}`,\n className\n )}\n >\n <i className=\"fa fa-spinner fa-pulse\" />\n </span>\n );\n}\n\nexport function errorIcon(errorMessage: string) {\n return (\n <DefaultTooltip\n overlay={<span>{errorMessage}</span>}\n placement=\"right\"\n trigger={['hover', 'focus']}\n destroyTooltipOnHide={true}\n >\n <span className={`${annotationStyles['annotation-item-error']}`}>\n <i className=\"fa fa-exclamation-triangle text-danger\" />\n </span>\n </DefaultTooltip>\n );\n}\n","export default \"data:image/png;base64,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\"","import * as React from 'react';\nimport _ from 'lodash';\nimport { ICivicVariantSummary } from 'cbioportal-utils';\n\nimport civicTextLogo from '../../images/civic_text_logo.png';\nimport './civicCard.scss';\n\nexport interface ICivicCardProps {\n title: string;\n geneName: string;\n geneDescription: string;\n geneUrl: string;\n variants: { [name: string]: ICivicVariantSummary };\n}\n\nexport default class CivicCard extends React.Component<ICivicCardProps, {}> {\n /**\n * Generate variants\n * @param variantMap\n * @returns {JSX.Element[]}\n */\n public generateVariants(variantMap: {\n [name: string]: ICivicVariantSummary;\n }) {\n const list: JSX.Element[] = [];\n\n if (_.isEmpty(variantMap)) {\n list.push(this.variantItem('_naVariant_'));\n } else {\n for (let name in variantMap) {\n let variant = variantMap[name];\n let entryTypes: string = '';\n for (let evidenceType in variant.evidenceCounts) {\n entryTypes +=\n evidenceType.toLowerCase() +\n ': ' +\n variant.evidenceCounts[evidenceType] +\n ', ';\n }\n entryTypes = entryTypes.slice(0, -2) + '.';\n\n list.push(\n this.variantItem(\n name,\n variant.url,\n variant.name,\n entryTypes,\n variant.description\n )\n );\n }\n }\n\n return list;\n }\n\n /**\n * Get variant item\n * @param url\n * @param name\n * @param entryTypes\n * @param description\n * @returns {any}\n */\n public variantItem(\n key: string,\n url?: string,\n name?: string,\n entryTypes?: string,\n description?: string\n ) {\n let result;\n\n if (url || name || entryTypes || description) {\n result = (\n <div key={key} className=\"civic-card-variant\">\n <div className=\"civic-card-variant-header\">\n <span className=\"civic-card-variant-name\">\n <a href={url} target=\"_blank\">\n {name}\n </a>\n </span>\n <span className=\"civic-card-variant-entry-types\">\n {' '}\n Entries: {entryTypes}\n </span>\n </div>\n <div className=\"civic-card-variant-description summary\">\n {description}\n </div>\n </div>\n );\n } else {\n result = (\n <div key={key} className=\"civic-card-variant\">\n <div className=\"civic-card-variant-description summary\">\n Information about the oncogenic activity of this\n alteration is not yet available in CIViC.\n </div>\n </div>\n );\n }\n\n return result;\n }\n\n /**\n * Render civic card component\n * @returns {any}\n */\n public render() {\n return (\n <div className=\"civic-card\">\n <span>\n <div className=\"col s12 tip-header\">{this.props.title}</div>\n <div className=\"col s12 civic-card-content\">\n <div className=\"col s12 civic-card-gene\">\n <p>\n <span className=\"civic-card-gene-name\">\n <a\n href={this.props.geneUrl}\n target=\"_blank\"\n >\n <b>{this.props.geneName}</b>\n </a>\n </span>{' '}\n - {this.props.geneDescription}\n </p>\n </div>\n <div className=\"col s12\">\n <ul>\n {this.generateVariants(this.props.variants)}\n </ul>\n </div>\n\n <div className=\"item disclaimer\">\n <span>\n Disclaimer: This resource is intended for purely\n research purposes. It should not be used for\n emergencies or medical or professional advice.\n </span>\n </div>\n </div>\n </span>\n\n <div className=\"item footer\">\n <a href={this.props.geneUrl} target=\"_blank\">\n <img\n src={civicTextLogo}\n className=\"civic-logo\"\n alt=\"CIViC\"\n />\n </a>\n </div>\n </div>\n );\n }\n}\n","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","import _ from 'lodash';\nimport { observable, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { DefaultTooltip } from 'cbioportal-frontend-commons';\n\nimport {\n CIVIC_NA_VALUE,\n ICivicEntry,\n ICivicVariantSummary,\n} from 'cbioportal-utils';\nimport { errorIcon, loaderIcon } from '../StatusHelpers';\nimport CivicCard from './CivicCard';\n\nimport civicLogoSrc from '../../images/civic-logo.png';\nimport civicLogoNoVariantsSrc from '../../images/civic-logo-no-variants.png';\n\nimport annotationStyles from '../column/annotation.module.scss';\n\nexport interface ICivicProps {\n civicEntry: ICivicEntry | null | undefined;\n civicStatus: 'pending' | 'error' | 'complete';\n hasCivicVariants: boolean;\n}\n\nexport function hideArrow(tooltipEl: any) {\n const arrowEl = tooltipEl.querySelector('.rc-tooltip-arrow');\n arrowEl.style.display = 'none';\n}\n\nexport function sortValue(civicEntry: ICivicEntry | null | undefined): number {\n let score = 0;\n\n if (civicEntry) {\n score = 1;\n }\n\n return score;\n}\n\nexport function download(civicEntry: ICivicEntry | null | undefined): string {\n if (!civicEntry) {\n return CIVIC_NA_VALUE;\n }\n\n const variants: ICivicVariantSummary[] = _.values(civicEntry.variants);\n const values: string[] = [];\n\n if (variants && variants.length > 0 && variants[0].evidenceCounts) {\n _.forEach(variants[0].evidenceCounts, (value, key) => {\n values.push(`${key}: ${value}`);\n });\n }\n\n // this indicates that we have an entry but the evidence is empty\n if (values.length === 0) {\n return CIVIC_NA_VALUE;\n }\n\n return values.join(', ');\n}\n\n@observer\nexport default class Civic extends React.Component<ICivicProps, {}> {\n @observable tooltipDataLoadComplete: boolean = false;\n\n constructor(props: ICivicProps) {\n super(props);\n\n makeObservable(this);\n\n this.cardContent = this.cardContent.bind(this);\n }\n\n public render() {\n let civicContent: JSX.Element = (\n <span className={`${annotationStyles['annotation-item']}`} />\n );\n\n const civicImgWidth: number = 14;\n let civicImgHeight: number = 14;\n let civicImgSrc = !this.props.hasCivicVariants\n ? civicLogoNoVariantsSrc\n : civicLogoSrc;\n\n if (this.props.civicStatus == 'error') {\n civicContent = errorIcon('Error fetching Civic data');\n } else if (this.props.civicEntry !== undefined) {\n if (\n this.props.civicEntry !== null &&\n this.props.civicStatus == 'complete'\n ) {\n civicContent = (\n <span className={`${annotationStyles['annotation-item']}`}>\n <img\n width={civicImgWidth}\n height={civicImgHeight}\n src={civicImgSrc}\n alt=\"Civic Variant Entry\"\n />\n </span>\n );\n\n civicContent = (\n <DefaultTooltip\n overlay={this.cardContent.bind(\n this,\n this.props.civicEntry\n )}\n placement=\"right\"\n trigger={['hover', 'focus']}\n onPopupAlign={hideArrow}\n destroyTooltipOnHide={false}\n >\n {civicContent}\n </DefaultTooltip>\n );\n }\n } else {\n // It's still unknown (undefined) if the current gene has a Civic entry or not.\n civicContent = loaderIcon('pull-left');\n }\n\n return civicContent;\n }\n\n private cardContent(civicEntry: ICivicEntry): JSX.Element {\n return (\n <CivicCard\n title={`CIViC Variants`}\n geneName={civicEntry.name}\n geneDescription={civicEntry.description}\n geneUrl={civicEntry.url}\n variants={civicEntry.variants}\n />\n );\n }\n}\n","import { DefaultTooltip, TruncatedText } from 'cbioportal-frontend-commons';\nimport { Clinvar } from 'genome-nexus-ts-api-client';\nimport _ from 'lodash';\nimport * as React from 'react';\n\nexport type ClinvarSummaryProps = {\n clinvar?: Clinvar;\n};\n\nconst NoClinvarData = () => {\n return (\n <DefaultTooltip\n placement=\"topLeft\"\n overlay={<span>Variant has no ClinVar data.</span>}\n >\n <span\n style={{\n height: '100%',\n width: '100%',\n display: 'block',\n overflow: 'hidden',\n }}\n >\n &nbsp;\n </span>\n </DefaultTooltip>\n );\n};\n\nconst ClinvarSummary = (props: ClinvarSummaryProps) => {\n if (!props.clinvar) {\n return <NoClinvarData />;\n } else {\n const clinvarId = props.clinvar.clinvarId;\n const clinvarLink = `https://www.ncbi.nlm.nih.gov/clinvar/variation/${clinvarId}/`;\n const clinicalSignificance = props.clinvar.clinicalSignificance;\n const conflictingClinicalSignificance =\n props.clinvar.conflictingClinicalSignificance;\n return (\n <TruncatedText\n maxLength={30}\n text={clinicalSignificance}\n addTooltip=\"always\"\n tooltip={\n <div style={{ maxWidth: 300 }}>\n <div>{clinicalSignificance}</div>\n {conflictingClinicalSignificance && (\n <div>{conflictingClinicalSignificance}</div>\n )}\n <div>\n (ClinVar ID:{' '}\n <a href={clinvarLink} target=\"_blank\">\n {clinvarId}\n </a>\n )\n </div>\n </div>\n }\n />\n );\n }\n};\n\nexport default ClinvarSummary;\n","import _ from 'lodash';\nimport {\n generateQueryVariantId,\n IOncoKbData,\n LEVELS,\n Mutation,\n OncoKbCardDataType,\n} from 'cbioportal-utils';\nimport { IndicatorQueryResp, TumorType } from 'oncokb-ts-api-client';\n\n// oncogenic value => oncogenic class name\nconst ONCOGENIC_CLASS_NAMES: { [oncogenic: string]: string } = {\n 'Likely Neutral': 'neutral',\n Unknown: 'unknown',\n Inconclusive: 'inconclusive',\n Resistance: 'oncogenic',\n 'Predicted Oncogenic': 'oncogenic',\n 'Likely Oncogenic': 'oncogenic',\n Oncogenic: 'oncogenic',\n};\n\n// oncogenic value => score\n// (used for sorting purposes)\nconst ONCOGENIC_SCORE: { [oncogenic: string]: number } = {\n Unknown: 0,\n Inconclusive: 0,\n 'Likely Neutral': 0,\n Resistance: 5,\n 'Predicted Oncogenic': 5,\n 'Likely Oncogenic': 5,\n Oncogenic: 5,\n};\n\n// sensitivity level => score\n// (used for sorting purposes)\nconst SENSITIVITY_LEVEL_SCORE: { [level: string]: number } = {\n '4': 1,\n '3B': 2,\n '3A': 3,\n '2': 5,\n '1': 6,\n};\n\n// resistance level <-> score\n// (used for sorting purposes)\nconst RESISTANCE_LEVEL_SCORE: { [level: string]: number } = {\n R3: 1,\n R2: 2,\n R1: 3,\n};\n\n// diagnostic level <-> score\n// (used for sorting purposes)\nconst DIAGNOSTIC_LEVEL_SCORE: { [level: string]: number } = {\n Dx3: 1,\n Dx2: 2,\n Dx1: 3,\n};\n\n// prognostic level <-> score\n// (used for sorting purposes)\nconst PROGNOSTIC_LEVEL_SCORE: { [level: string]: number } = {\n Px3: 1,\n Px2: 2,\n Px1: 3,\n};\n\nexport function normalizeLevel(level: string | null): string | null {\n if (level) {\n const matchArray = level.match(/LEVEL_(.*)/);\n\n if (matchArray && matchArray.length >= 2) {\n return matchArray[1];\n } else {\n return level;\n }\n } else {\n return null;\n }\n}\n\nexport function normalizeOncogenicity(oncogenicity?: string) {\n return (oncogenicity || 'unknown')\n .trim()\n .toLowerCase()\n .replace(/\\s/, '-');\n}\n\nexport function oncogenicXPosition(highestSensitiveLevel: string | null) {\n const map: { [id: string]: number } = {\n '1': 1,\n '2': 2,\n '3A': 4,\n '3B': 5,\n '4': 6,\n };\n\n let levelIndex =\n highestSensitiveLevel === null ? 0 : map[highestSensitiveLevel] || 0;\n return -(8 + levelIndex * 30);\n}\n\nexport function oncogenicYPosition(\n oncogenicity: string,\n isVUS: boolean,\n resistanceLevel: string | null\n) {\n const oncogenicityMap: { [id: string]: number } = {\n Oncogenic: 0,\n 'Predicted Oncogenic': 0,\n 'Likely Oncogenic': 0,\n Resistance: 0,\n Neutral: 1,\n 'Likely Neutral': 1,\n Unknown: 2,\n Inconclusive: 2,\n };\n const resistanceLevelMap: { [id: string]: number } = {\n R1: 1,\n R2: 2,\n R3: 3,\n };\n\n let oncogenicityIndex = oncogenicityMap[oncogenicity];\n if (oncogenicityIndex === undefined) {\n oncogenicityIndex = 4;\n }\n if (oncogenicityIndex > 1 && isVUS) {\n oncogenicityIndex = 3;\n }\n\n const defaultIndexForUnrecognizedResistanceLevel = 0;\n let resistanceLevelIndex =\n resistanceLevel === null\n ? defaultIndexForUnrecognizedResistanceLevel\n : resistanceLevelMap[resistanceLevel] ||\n defaultIndexForUnrecognizedResistanceLevel;\n return -(7 + oncogenicityIndex * 120 + resistanceLevelIndex * 30);\n}\n\nexport function levelIconClassNames(level: string) {\n if (level) {\n return `oncokb icon level-${level}`;\n }\n return '';\n}\n\nexport function oncogenicityIconClassNames(oncogenicity: string) {\n return `oncokb icon ${normalizeOncogenicity(oncogenicity)}`;\n}\n\nexport function annotationIconClassNames(\n type: OncoKbCardDataType,\n highestLevel: string,\n indicator?: IndicatorQueryResp\n) {\n return type === OncoKbCardDataType.BIOLOGICAL\n ? oncogenicityIconClassNames(indicator?.oncogenic || '')\n : levelIconClassNames(normalizeLevel(highestLevel) || '');\n}\n\nexport function calcHighestIndicatorLevel(\n type: OncoKbCardDataType,\n indicator?: IndicatorQueryResp\n) {\n let highestLevel = '';\n\n if (indicator) {\n switch (type) {\n case OncoKbCardDataType.TXS:\n highestLevel = indicator.highestSensitiveLevel;\n break;\n case OncoKbCardDataType.TXR:\n highestLevel = indicator.highestResistanceLevel;\n break;\n case OncoKbCardDataType.DX:\n highestLevel = indicator.highestDiagnosticImplicationLevel;\n break;\n case OncoKbCardDataType.PX:\n highestLevel = indicator.highestPrognosticImplicationLevel;\n break;\n }\n }\n\n return highestLevel;\n}\n\nexport function calcOncogenicScore(oncogenic: string) {\n return ONCOGENIC_SCORE[oncogenic] || 0;\n}\n\nexport function calcSensitivityLevelScore(level: string) {\n return SENSITIVITY_LEVEL_SCORE[normalizeLevel(level) || ''] || 0;\n}\n\nexport function calcResistanceLevelScore(level: string) {\n return RESISTANCE_LEVEL_SCORE[normalizeLevel(level) || ''] || 0;\n}\n\nexport function calcDiagnosticLevelScore(level: string) {\n return DIAGNOSTIC_LEVEL_SCORE[normalizeLevel(level) || ''] || 0;\n}\n\nexport function calcPrognosticLevelScore(level: string) {\n return PROGNOSTIC_LEVEL_SCORE[normalizeLevel(level) || ''] || 0;\n}\n\nexport function generateOncogenicCitations(oncogenicRefs: any): number[] {\n return _.isArray(oncogenicRefs)\n ? _.map(oncogenicRefs, (article: any) => {\n return Number(article.pmid);\n }).sort()\n : [];\n}\n\nexport function levelComparator(a: string, b: string) {\n return LEVELS.all.indexOf(a) > LEVELS.all.indexOf(b) ? -1 : 1;\n}\n\nfunction getLevel(level: string) {\n if (level) {\n var _level = level.match(/LEVEL_(R?\\d[AB]?)/);\n if (_level instanceof Array && _level.length >= 2) {\n return _level[1];\n } else {\n return level;\n }\n } else {\n return '';\n }\n}\n\nfunction treatmentsToStr(data: any[]) {\n if (_.isArray(data)) {\n var treatments: any[] = [];\n\n data.forEach(function(treatment: any) {\n treatments.push(drugToStr(treatment.drugs));\n });\n\n return treatments.sort().join(', ');\n } else {\n return '';\n }\n}\n\nfunction drugToStr(data: any) {\n var drugs: any[] = [];\n\n data.forEach(function(drug: any) {\n drugs.push(drug.drugName);\n });\n\n return drugs.sort().join(' + ');\n}\n\n/**\n * Return combined alterations name, separated by comma.\n * Same location variant will be truncated into AALocationAllele e.g. V600E/K\n *\n * @param {Array} alterations - List of alterations\n * @return {string} - Truncated alteration name\n */\nexport function mergeAlterations(alterations: string | string[]) {\n var positions: any = {};\n var regular: any[] = [];\n var regExp = new RegExp('^([A-Z])([0-9]+)([A-Z]$)');\n\n if (_.isString(alterations)) {\n return alterations;\n }\n\n _.each(alterations, function(alteration) {\n var result = regExp.exec(alteration);\n if (_.isArray(result) && result.length === 4) {\n if (!positions.hasOwnProperty(result[2])) {\n positions[result[2]] = {};\n }\n if (!positions[result[2]].hasOwnProperty(result[1])) {\n // Avoid duplication, use object instead of array\n positions[result[2]][result[1]] = {};\n }\n positions[result[2]][result[1]][result[3]] = 1;\n } else {\n regular.push(alteration);\n }\n });\n\n _.each(\n _.keys(positions)\n .map(function(e) {\n return Number(e);\n })\n .sort(),\n function(position) {\n _.each(_.keys(positions[position]).sort(), function(aa) {\n regular.push(\n aa +\n position +\n _.keys(positions[position][aa])\n .sort()\n .join('/')\n );\n });\n }\n );\n return regular.join(', ');\n}\n\n/**\n * Return the positional variant of the missense mutation\n * @param alteration The missense mutation\n */\nexport function getPositionalVariant(alteration: string) {\n const regExp = new RegExp('^([A-Z]+)([0-9]+)([A-Z]*)$');\n const result = regExp.exec(alteration);\n\n // Only if the alteration is missense mutation or positional variant\n // result[0]: matched alteration\n // result[1]: reference alleles (there could be multiple reference alleles, we only return the first allele)\n // result[2]: position(protein start/end)\n // result[3]: variant alleles (empty if the alteration is positional variant already)\n if (\n _.isArray(result) &&\n result.length === 4 &&\n (!result[3] || result[1].length === result[3].length)\n ) {\n return `${result[1][0]}${result[2]}`;\n }\n return undefined;\n}\n\nexport function getTumorTypeName(tumorType?: TumorType) {\n if (!tumorType) {\n return '';\n } else if (tumorType.name) {\n return tumorType.name;\n } else if (tumorType.mainType) {\n return tumorType.mainType.name;\n } else {\n return '';\n }\n}\n\nexport function groupOncoKbIndicatorDataByMutations(\n mutationsByPosition: { [pos: number]: Mutation[] },\n oncoKbData: IOncoKbData,\n getTumorType: (mutation: Mutation) => string,\n getEntrezGeneId: (mutation: Mutation) => number,\n filter?: (indicator: IndicatorQueryResp) => boolean\n): { [pos: number]: IndicatorQueryResp[] } {\n const indicatorMap: { [pos: number]: IndicatorQueryResp[] } = {};\n\n _.keys(mutationsByPosition).forEach(key => {\n const position = Number(key);\n const indicators: IndicatorQueryResp[] = mutationsByPosition[position]\n .map(mutation =>\n getIndicatorData(\n mutation,\n oncoKbData,\n getTumorType,\n getEntrezGeneId\n )\n )\n .filter(\n indicator =>\n indicator !== undefined && (!filter || filter(indicator))\n ) as IndicatorQueryResp[];\n\n if (position > 0 && indicators.length > 0) {\n indicatorMap[position] = indicators;\n }\n });\n\n return indicatorMap;\n}\n\nexport function getIndicatorData(\n mutation: Mutation,\n oncoKbData: IOncoKbData,\n getTumorType: (mutation: Mutation) => string,\n getEntrezGeneId: (mutation: Mutation) => number\n): IndicatorQueryResp | undefined {\n if (oncoKbData.indicatorMap === null) {\n return undefined;\n }\n\n const id = generateQueryVariantId(\n getEntrezGeneId(mutation),\n getTumorType(mutation),\n mutation.proteinChange,\n mutation.mutationType\n );\n\n return oncoKbData.indicatorMap[id];\n}\n\nexport function defaultOncoKbIndicatorFilter(indicator: IndicatorQueryResp) {\n return indicator.oncogenic\n .toLowerCase()\n .trim()\n .includes('oncogenic');\n}\n\nexport function defaultOncoKbFilter(\n mutation: Mutation,\n oncoKbData?: IOncoKbData,\n getTumorType?: (mutation: Mutation) => string,\n getEntrezGeneId?: (mutation: Mutation) => number\n): boolean {\n let filter = true;\n\n if (oncoKbData && getTumorType && getEntrezGeneId) {\n const indicatorData = getIndicatorData(\n mutation,\n oncoKbData,\n getTumorType,\n getEntrezGeneId\n );\n filter = indicatorData\n ? defaultOncoKbIndicatorFilter(indicatorData)\n : false;\n }\n\n return filter;\n}\n","export default \"data:image/png;base64,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\"","import * as React from 'react';\nimport _ from 'lodash';\nimport { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { parseMyCancerGenomeLink } from 'cbioportal-utils';\n\nimport mcgLogo from '../../images/mcg_logo.png';\nimport annotationStyles from '../column/annotation.module.scss';\nimport mcgStyles from './myCancerGenome.module.scss';\n\nexport interface IMyCancerGenomeProps {\n linksHTML: string[];\n}\n\nexport function placeArrow(tooltipEl: any) {\n const arrowEl = tooltipEl.querySelector('.rc-tooltip-arrow');\n arrowEl.style.left = '10px';\n}\n\nexport function sortValue(links: string[]): number {\n return links.length > 0 ? 1 : 0;\n}\n\nexport function download(links: string[]): string {\n return links.length > 0 ? 'present' : 'not present';\n}\n\nexport function myCancerGenomeLinks(linksHTML: string[]) {\n const links: any[] = [];\n\n _.each(linksHTML, (link: string, index: number) => {\n // TODO this is a workaround, ideally we should fix the data itself\n // parse the data as an HTML dom element, since it is formatted as an HTML link.\n const myCancerGenomeLink = parseMyCancerGenomeLink(link);\n\n if (myCancerGenomeLink) {\n links.push(\n <li key={index}>\n <a href={myCancerGenomeLink.url} target=\"_blank\">\n {myCancerGenomeLink.text}\n </a>\n </li>\n );\n }\n });\n\n return (\n <span>\n <b>My Cancer Genome links:</b>\n <br />\n <ul className={mcgStyles['link-list']}>{links}</ul>\n </span>\n );\n}\n\nexport default class MyCancerGenome extends React.Component<\n IMyCancerGenomeProps\n> {\n public render() {\n let myCancerGenomeContent: JSX.Element = (\n <span className={`${annotationStyles['annotation-item']}`} />\n );\n\n if (this.props.linksHTML.length > 0) {\n const arrowContent = <div className=\"rc-tooltip-arrow-inner\" />;\n const tooltipContent = myCancerGenomeLinks(this.props.linksHTML);\n\n myCancerGenomeContent = (\n <DefaultTooltip\n overlay={tooltipContent}\n placement=\"topLeft\"\n trigger={['hover', 'focus']}\n arrowContent={arrowContent}\n onPopupAlign={placeArrow}\n >\n <span\n className={`${annotationStyles['annotation-item']} mcg`}\n >\n <img\n width=\"14\"\n height=\"14\"\n src={mcgLogo}\n alt=\"My Cancer Genome Symbol\"\n />\n </span>\n </DefaultTooltip>\n );\n }\n\n return myCancerGenomeContent;\n }\n}\n","import React from 'react';\nimport { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { OncoKbCardDataType } from 'cbioportal-utils';\nimport { IndicatorQueryResp } from 'oncokb-ts-api-client';\n\nimport {\n annotationIconClassNames,\n calcHighestIndicatorLevel,\n} from '../../util/OncoKbUtils';\n\nimport annotationStyles from '../column/annotation.module.scss';\n\nfunction hideArrow(tooltipEl: any) {\n const arrowEl = tooltipEl.querySelector('.rc-tooltip-arrow');\n arrowEl.style.display = 'none';\n}\n\nexport const AnnotationIcon: React.FunctionComponent<{\n type: OncoKbCardDataType;\n tooltipOverlay?: JSX.Element;\n indicator?: IndicatorQueryResp;\n availableDataTypes?: OncoKbCardDataType[];\n}> = props => {\n if (\n props.availableDataTypes !== undefined &&\n !props.availableDataTypes.includes(props.type)\n ) {\n return null;\n }\n const highestLevel = calcHighestIndicatorLevel(props.type, props.indicator);\n\n return (\n <AnnotationIconWithTooltip\n tooltipOverlay={props.tooltipOverlay}\n icon={\n <i\n className={annotationIconClassNames(\n props.type,\n highestLevel,\n props.indicator\n )}\n data-test=\"oncogenic-icon-image\"\n />\n }\n />\n );\n};\n\nexport const AnnotationIconWithTooltip: React.FunctionComponent<{\n tooltipOverlay?: JSX.Element;\n icon?: JSX.Element;\n}> = props => {\n if (props.icon) {\n return (\n <DefaultTooltip\n overlayClassName=\"oncokb-tooltip\"\n overlay={() =>\n props.tooltipOverlay ? props.tooltipOverlay : null\n }\n placement=\"right\"\n trigger={['hover', 'focus']}\n onPopupAlign={hideArrow}\n destroyTooltipOnHide={true}\n >\n <span className={`${annotationStyles['annotation-item']}`}>\n {props.icon}\n </span>\n </DefaultTooltip>\n );\n } else {\n return null;\n }\n};\n","import React from 'react';\nimport { OncoKbCardDataType } from 'cbioportal-utils';\nimport { IndicatorQueryResp } from 'oncokb-ts-api-client';\n\nimport { normalizeLevel, normalizeOncogenicity } from '../../util/OncoKbUtils';\n\nconst BIOLOGICAL_COLOR_MAP: { [level: string]: string } = {\n oncogenic: '#0968C3',\n 'likely-oncogenic': '#0968C3',\n 'predicted-oncogenic': '#0968C3',\n resistance: '#0968C3',\n neutral: '#696969',\n 'likely-neutral': '#696969',\n inconclusive: '#AAAAAA',\n vus: '#696969',\n unknown: '#CCCCCC',\n};\n\nconst LEVEL_COLOR_MAP: { [level: string]: string } = {\n '1': '#33A02C',\n '2': '#1F78B4',\n '3': '#984EA3',\n '3A': '#984EA3',\n '3B': '#BE98CE',\n '4': '#424242',\n R1: '#EE3424',\n R2: '#F79A92',\n R3: '#FCD6D3',\n Dx1: '#33A02C',\n Dx2: '#1F78B4',\n Dx3: '#984EA3',\n Px1: '#33A02C',\n Px2: '#1F78B4',\n Px3: '#984EA3',\n};\n\nfunction getLevelColor(\n highestLevel?: string,\n defaultColor: string = '#CCCCCC'\n) {\n const level = normalizeLevel(highestLevel || null) || '';\n return LEVEL_COLOR_MAP[level] || defaultColor;\n}\n\nfunction shouldDrawShape(\n type: OncoKbCardDataType,\n level?: string,\n availableDataTypes?: OncoKbCardDataType[]\n) {\n return (\n level &&\n availableDataTypes !== undefined &&\n availableDataTypes.includes(type)\n );\n}\n\nfunction getOncogenicShape(indicator?: IndicatorQueryResp) {\n const oncogenicity = normalizeOncogenicity(indicator?.oncogenic || '');\n const color = BIOLOGICAL_COLOR_MAP[oncogenicity] || '#CCCCCC';\n\n return (\n <g transform=\"translate(9, 9)\">\n <circle r=\"6\" fill=\"none\" strokeWidth=\"2\" stroke={color} />\n {// conditionally draw inner circles\n oncogenicity !== 'vus' && oncogenicity !== 'unknown' && (\n <g>\n <circle r=\"3\" fill=\"none\" strokeWidth=\"2\" stroke={color} />\n <circle r=\"1.5\" fill={color} stroke=\"none\" />\n </g>\n )}\n </g>\n );\n}\n\nfunction getTherapeuticSensitivityShape(\n indicator?: IndicatorQueryResp,\n availableDataTypes?: OncoKbCardDataType[]\n) {\n const highestLevel = indicator?.highestSensitiveLevel;\n if (\n !shouldDrawShape(\n OncoKbCardDataType.TXS,\n highestLevel,\n availableDataTypes\n )\n ) {\n return null;\n }\n\n const fillColor = getLevelColor(highestLevel, '#33A02C');\n\n return (\n <g transform=\"translate(14.5, 3.5)\">\n <circle r=\"4\" fill={fillColor} stroke=\"#ffffff\" strokeWidth=\"1\" />\n </g>\n );\n}\n\nfunction getTherapeuticResistanceShape(\n indicator?: IndicatorQueryResp,\n availableDataTypes?: OncoKbCardDataType[]\n) {\n const highestLevel = indicator?.highestResistanceLevel;\n if (\n !shouldDrawShape(\n OncoKbCardDataType.TXR,\n highestLevel,\n availableDataTypes\n )\n ) {\n return null;\n }\n\n const fillColor = getLevelColor(highestLevel, '#EE3424');\n\n return (\n <g transform=\"translate(14.5, 14.5)\">\n <circle r=\"4\" fill={fillColor} stroke=\"#ffffff\" strokeWidth=\"1\" />\n </g>\n );\n}\n\nfunction getDiagnosticShape(\n indicator?: IndicatorQueryResp,\n availableDataTypes?: OncoKbCardDataType[]\n) {\n const highestLevel = indicator?.highestDiagnosticImplicationLevel;\n if (\n !shouldDrawShape(\n OncoKbCardDataType.DX,\n highestLevel,\n availableDataTypes\n )\n ) {\n return null;\n }\n\n const fillColor = getLevelColor(highestLevel, '#33A02C');\n\n return (\n <g transform=\"translate(-0.5, -0.5)\">\n <rect\n width=\"7\"\n height=\"7\"\n fill={fillColor}\n stroke=\"#ffffff\"\n strokeWidth=\"1\"\n />\n </g>\n );\n}\n\nfunction getPrognosticShape(\n indicator?: IndicatorQueryResp,\n availableDataTypes?: OncoKbCardDataType[]\n) {\n const highestLevel = indicator?.highestPrognosticImplicationLevel;\n if (\n !shouldDrawShape(\n OncoKbCardDataType.PX,\n highestLevel,\n availableDataTypes\n )\n ) {\n return null;\n }\n\n const fillColor = getLevelColor(highestLevel, '#33A02C');\n\n return (\n <g transform=\"translate(0, 10.5)\">\n <polygon\n points=\"3.5 0, 8 8, -1 8\"\n fill={fillColor}\n stroke=\"#ffffff\"\n strokeWidth=\"1\"\n />\n </g>\n );\n}\n\nexport const CompactAnnotationIcon: React.FunctionComponent<{\n usingPublicOncoKbInstance: boolean;\n indicator?: IndicatorQueryResp;\n availableDataTypes?: OncoKbCardDataType[];\n}> = props => {\n const indicatorForLevelIcons = props.usingPublicOncoKbInstance\n ? undefined\n : props.indicator;\n\n return (\n <svg\n version=\"1.1\"\n width=\"18\"\n height=\"18\"\n data-test=\"oncogenic-icon-image\"\n >\n {getOncogenicShape(props.indicator)}\n {getTherapeuticSensitivityShape(\n indicatorForLevelIcons,\n props.availableDataTypes\n )}\n {getTherapeuticResistanceShape(\n indicatorForLevelIcons,\n props.availableDataTypes\n )}\n {getDiagnosticShape(\n indicatorForLevelIcons,\n props.availableDataTypes\n )}\n {getPrognosticShape(\n indicatorForLevelIcons,\n props.availableDataTypes\n )}\n </svg>\n );\n};\n","export enum OtherBiomarkersQueryType {\n MSIH = 'MSIH',\n TMBH = 'TMBI',\n}\n\nexport const OTHER_BIOMARKER_HUGO_SYMBOL = 'Other Biomarkers';\nexport const MSI_H_NAME = 'MSI-H';\nexport const TMB_H_NAME = 'TMB-H';\nexport const OTHER_BIOMARKER_NAME: {\n [key in OtherBiomarkersQueryType]: string;\n} = {\n [OtherBiomarkersQueryType.MSIH]: MSI_H_NAME,\n [OtherBiomarkersQueryType.TMBH]: TMB_H_NAME,\n};\n","import * as React from 'react';\nimport mainStyles from './main.module.scss';\nimport { OTHER_BIOMARKER_HUGO_SYMBOL } from './constants';\n\ntype OncoKbCardDefaultTitleProps = {\n hugoSymbol: string;\n variant: string;\n tumorType: string;\n};\n\nexport const OncoKbCardTitle: React.FunctionComponent<OncoKbCardDefaultTitleProps> = (\n props: OncoKbCardDefaultTitleProps\n) => {\n const titleContent = [];\n if (\n props.hugoSymbol &&\n props.hugoSymbol !== OTHER_BIOMARKER_HUGO_SYMBOL &&\n (!props.variant || !props.variant.includes(props.hugoSymbol))\n ) {\n titleContent.push(props.hugoSymbol);\n }\n if (props.variant) {\n titleContent.push(props.variant);\n }\n if (props.tumorType) {\n if (titleContent.length > 0) {\n titleContent.push('in');\n }\n titleContent.push(props.tumorType);\n }\n return (\n <div className={mainStyles['title']} data-test=\"oncokb-card-title\">\n {<span>{titleContent.join(' ')}</span>}\n </div>\n );\n};\n","import React from 'react';\n\nimport levelStyles from './level.module.scss';\nimport mainStyles from './main.module.scss';\nimport collapsibleStyles from './collapsible.module.scss';\nimport { Collapse } from 'react-collapse';\nimport { levelIconClassNames } from '../../util/OncoKbUtils';\nimport classnames from 'classnames';\nimport { observable, action, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport autobind from 'autobind-decorator';\n\nexport type LevelsOfEvidenceDropdownProps = {\n levels: string[];\n levelDes: { [level: string]: JSX.Element };\n};\n\n@observer\nexport default class OncoKbCardLevelsOfEvidenceDropdown extends React.Component<\n LevelsOfEvidenceDropdownProps\n> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n @observable levelsCollapsed: boolean = true;\n\n public levelListItem(level: string, levelDes: JSX.Element) {\n return (\n <li key={level} className={levelStyles['levels-li']}>\n <i className={levelIconClassNames(level)} />\n {levelDes}\n </li>\n );\n }\n\n public generateLevelRows(): JSX.Element[] {\n const rows: JSX.Element[] = [];\n this.props.levels.forEach(level => {\n rows.push(this.levelListItem(level, this.props.levelDes[level]));\n });\n\n return rows;\n }\n\n @action.bound\n handleLevelCollapse(): void {\n this.levelsCollapsed = !this.levelsCollapsed;\n }\n\n render() {\n return (\n <div>\n <div\n data-test=\"oncokb-card-levels-of-evidence-dropdown-header\"\n className={collapsibleStyles['collapsible-header']}\n onClick={this.handleLevelCollapse}\n >\n Levels of Evidence\n <span style={{ float: 'right' }}>\n {this.levelsCollapsed ? (\n <i\n className={classnames(\n 'fa fa-chevron-down',\n mainStyles['blue-icon']\n )}\n />\n ) : (\n <i\n className={classnames(\n 'fa fa-chevron-up',\n mainStyles['blue-icon']\n )}\n />\n )}\n </span>\n </div>\n <Collapse isOpened={!this.levelsCollapsed}>\n <div\n className={classnames(\n levelStyles.levels,\n collapsibleStyles['levels-collapse']\n )}\n >\n <ul\n style={{\n lineHeight: 8,\n padding: 0,\n }}\n >\n {this.generateLevelRows()}\n </ul>\n </div>\n </Collapse>\n </div>\n );\n }\n}\n","import * as React from 'react';\n\nexport default class OncoKBSuggestAnnotationLinkout extends React.Component<{\n gene: string;\n}> {\n render() {\n return (\n <div>\n <span>The gene is listed under </span>\n <a href=\"https://www.oncokb.org/cancerGenes\" target=\"_blank\">\n OncoKB Cancer Gene List\n </a>\n <span> but hasn't been curated yet. Please feel free to </span>\n <a\n target=\"_blank\"\n href={`mailto:contact@oncokb.org?subject=Annotation suggestion for ${this.props.gene}&&body=Thank you for using OncoKB.%0APlease provide the following information for ${this.props.gene} curation:%0A%0AEvidence:%0APMIDs:%0AAbstracts:`}\n title=\"suggest to annotate this gene\"\n >\n suggest the team annotate the gene\n </a>\n .\n </div>\n );\n }\n}\n","import * as React from 'react';\nimport {\n normalizeLevel,\n levelIconClassNames,\n mergeAlterations,\n getPositionalVariant,\n} from '../../util/OncoKbUtils';\nimport { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport _ from 'lodash';\nimport {\n defaultArraySortMethod,\n defaultSortMethod,\n LEVELS,\n OncoKbCardDataType,\n} from 'cbioportal-utils';\n\nexport default class OncoKbHelper {\n public static get TX_LEVELS(): string[] {\n return ['1', '2', '3A', '3B', '4', 'R1', 'R2'];\n }\n\n public static get DX_LEVELS(): string[] {\n return ['Dx1', 'Dx2', 'Dx3'];\n }\n\n public static get PX_LEVELS(): string[] {\n return ['Px1', 'Px2', 'Px3'];\n }\n\n public static get LEVELS(): string[] {\n return [...this.TX_LEVELS, ...this.DX_LEVELS, ...this.PX_LEVELS];\n }\n\n public static getLevelsDesc(dataType: OncoKbCardDataType) {\n switch (dataType) {\n case OncoKbCardDataType.TXS:\n case OncoKbCardDataType.TXR:\n return _.pick(this.LEVEL_DESC, this.TX_LEVELS);\n case OncoKbCardDataType.DX:\n return _.pick(this.LEVEL_DESC, this.DX_LEVELS);\n case OncoKbCardDataType.PX:\n return _.pick(this.LEVEL_DESC, this.PX_LEVELS);\n default:\n return {};\n }\n }\n\n public static get LEVEL_DESC(): { [level: string]: JSX.Element } {\n return {\n '1': (\n <span>\n <b>FDA-recognized</b> biomarker predictive of response to an{' '}\n <b>FDA-approved drug</b> in this indication\n </span>\n ),\n '2': (\n <span>\n <b>Standard care</b> biomarker recommended by the NCCN or\n other expert panels predictive of response to an{' '}\n <b>FDA-approved drug</b> in this indication\n </span>\n ),\n '3A': (\n <span>\n <b>Compelling clinical evidence</b> supports the biomarker\n as being predictive of response to a drug in this indication\n </span>\n ),\n '3B': (\n <span>\n <b>Standard care</b> or <b>investigational</b> biomarker{' '}\n predictive of response to an <b>FDA-approved</b> or{' '}\n <b>investigational</b> drug in another indication\n </span>\n ),\n '4': (\n <span>\n <b>Compelling biological evidence</b> supports the biomarker\n as being predictive of response to a drug\n </span>\n ),\n R1: (\n <span>\n <b>Standard care</b> biomarker predictive of{' '}\n <b>resistance</b> to an <b>FDA-approved</b> drug{' '}\n <b>in this indication</b>\n </span>\n ),\n R2: (\n <span>\n <b>Compelling clinical evidence</b> supports the biomarker\n as being predictive of <b>resistance</b> to a drug\n </span>\n ),\n Dx1: (\n <span>\n <b>FDA and/or professional guideline-recognized</b>{' '}\n biomarker required for diagnosis in this indication\n </span>\n ),\n Dx2: (\n <span>\n <b>FDA and/or professional guideline-recognized</b>{' '}\n biomarker that supports diagnosis in this indication\n </span>\n ),\n Dx3: (\n <span>\n Biomarker that <b>may assist disease diagnosis</b> in this\n indication based on <b>clinical evidence</b>\n </span>\n ),\n Px1: (\n <span>\n <b>FDA and/or professional guideline-recognized</b>{' '}\n biomarker prognostic in this indication based on{' '}\n <b>well-powered studie(s)</b>\n </span>\n ),\n Px2: (\n <span>\n <b>FDA and/or professional guideline-recognized</b>{' '}\n biomarker prognostic in this indication based on{' '}\n <b>a single or multiple small studies</b>\n </span>\n ),\n Px3: (\n <span>\n Biomarker is prognostic in this indication based on{' '}\n <b>clinical evidence</b> in <b>well-powered studies</b>\n </span>\n ),\n };\n }\n\n public static levelTooltipContent = (level: string) => {\n return (\n <div style={{ maxWidth: '200px' }}>\n {OncoKbHelper.LEVEL_DESC[level]}\n </div>\n );\n };\n\n public static getDefaultColumnDefinition(\n columnKey: 'level' | 'alterations'\n ) {\n switch (columnKey) {\n case 'level':\n return {\n id: 'level',\n Header: <div style={{ textAlign: 'center' }}>Level</div>,\n accessor: 'level',\n maxWidth: 45,\n sortMethod: (a: string, b: string) =>\n defaultSortMethod(\n LEVELS.all.indexOf(normalizeLevel(a) || ''),\n LEVELS.all.indexOf(normalizeLevel(b) || '')\n ),\n Cell: (props: { value: string }) => {\n const normalizedLevel =\n normalizeLevel(props.value) || '';\n return (\n <DefaultTooltip\n overlay={this.levelTooltipContent(\n normalizedLevel\n )}\n placement=\"left\"\n trigger={['hover', 'focus']}\n destroyTooltipOnHide={true}\n >\n <i\n className={levelIconClassNames(\n normalizedLevel\n )}\n style={{ margin: 'auto' }}\n />\n </DefaultTooltip>\n );\n },\n };\n case 'alterations':\n return {\n id: 'alterations',\n Header: <span>Alteration(s)</span>,\n accessor: 'alterations',\n minWidth: 80,\n sortMethod: (a: string[], b: string[]) =>\n defaultArraySortMethod(a, b),\n };\n }\n }\n\n public static getAlterationsColumnCell = (\n alterations: string[],\n variant: string\n ) => {\n const mergedAlteration = mergeAlterations(alterations);\n let content = <span>{mergedAlteration}</span>;\n if (alterations.length > 5) {\n const lowerCasedQueryVariant = variant.toLowerCase();\n let matchedAlteration = _.find(\n alterations,\n alteration =>\n alteration.toLocaleLowerCase() === lowerCasedQueryVariant\n );\n if (!matchedAlteration) {\n matchedAlteration = getPositionalVariant(variant);\n }\n let pickedAlteration =\n matchedAlteration === undefined\n ? alterations[0]\n : matchedAlteration;\n content = (\n <span>\n {pickedAlteration} and{' '}\n <DefaultTooltip\n overlay={\n <div style={{ maxWidth: '400px' }}>\n {mergedAlteration}\n </div>\n }\n placement=\"right\"\n destroyTooltipOnHide={true}\n >\n <a>{alterations.length - 1} other alterations</a>\n </DefaultTooltip>\n </span>\n );\n }\n return (\n <div style={{ whiteSpace: 'normal', lineHeight: '1rem' }}>\n {content}\n </div>\n );\n };\n}\n","import * as React from 'react';\n\nimport styles from './listGroupItem.module.scss';\nimport { ArticleAbstract } from 'oncokb-ts-api-client';\n\nexport default class ArticleAbstractItem extends React.Component<\n ArticleAbstract\n> {\n render() {\n let content = <span>{this.props.abstract}</span>;\n if (this.props.link) {\n content = (\n <a href={this.props.link} target=\"_blank\">\n {content}\n </a>\n );\n }\n return (\n <li\n key={`abstract_${this.props.abstract}`}\n className={styles['list-group-item']}\n >\n <span className={styles['list-group-item-title']}>\n {content}\n </span>\n </li>\n );\n }\n}\n","import { getNCBIlink } from 'cbioportal-frontend-commons';\nimport * as React from 'react';\n\nimport styles from './listGroupItem.module.scss';\nimport { trimOffHtmlTagEntities } from 'cbioportal-frontend-commons';\n\ntype PmidItemProps = {\n title: string;\n author: string;\n source: string;\n date: string;\n pmid: string;\n};\n\nexport default class PmidItem extends React.Component<PmidItemProps> {\n render() {\n return (\n <li key={this.props.pmid} className={styles['list-group-item']}>\n <a\n className={styles['list-group-item-title']}\n href={getNCBIlink(`/pubmed/${this.props.pmid}`)}\n target=\"_blank\"\n >\n <span>{trimOffHtmlTagEntities(this.props.title)}</span>\n </a>\n <div className={styles['list-group-item-content']}>\n <span>\n {this.props.author} {this.props.source}.{' '}\n {this.props.date}\n </span>\n <span>PMID: {this.props.pmid}</span>\n </div>\n </li>\n );\n }\n}\n","import { ICache } from 'cbioportal-frontend-commons';\nimport { ArticleAbstract } from 'oncokb-ts-api-client';\nimport * as React from 'react';\nimport _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport { computed } from 'mobx';\n\nimport ArticleAbstractItem from './ArticleAbstractItem';\nimport PmidItem from './PmidItem';\n\nimport styles from './listGroupItem.module.scss';\n\ntype ReferenceListProps = {\n pmids: number[];\n pmidData?: ICache<any>;\n abstracts: ArticleAbstract[];\n};\n\n@observer\nexport default class ReferenceList extends React.Component<ReferenceListProps> {\n @computed get isLoading() {\n if (this.props.pmidData && this.props.pmids) {\n const loadingItems = _.filter(this.props.pmids, uid => {\n const cacheData = this.props.pmidData![uid.toString()];\n // when the cacheData is undefined, the pmidData will fetch the uid info later which eventually results to an object with a status\n return !cacheData || cacheData.status === 'pending';\n });\n return loadingItems.length > 0;\n } else {\n return false;\n }\n }\n\n render() {\n if (this.isLoading) {\n return <i className=\"fa fa-spinner fa-pulse fa-2x\" />;\n }\n const list: JSX.Element[] = [];\n\n if (this.props.pmidData) {\n this.props.pmids.forEach((uid: number) => {\n const cacheData = this.props.pmidData![uid.toString()];\n const articleContent = cacheData ? cacheData.data : null;\n\n if (articleContent) {\n list.push(\n <PmidItem\n title={articleContent.title}\n author={\n _.isArray(articleContent.authors) &&\n articleContent.authors.length > 0\n ? articleContent.authors[0].name + ' et al.'\n : 'Unknown'\n }\n source={articleContent.source}\n date={new Date(articleContent.pubdate)\n .getFullYear()\n .toString()}\n pmid={articleContent.uid}\n />\n );\n }\n });\n }\n this.props.abstracts.forEach(abstract => {\n list.push(\n <ArticleAbstractItem\n abstract={abstract.abstract}\n link={abstract.link}\n />\n );\n });\n return <ul className={styles['no-style-ul']}>{list}</ul>;\n }\n}\n","import {\n DefaultTooltip,\n getNCBIlink,\n ICache,\n} from 'cbioportal-frontend-commons';\nimport * as React from 'react';\n\nimport ReferenceList from './ReferenceList';\n\nimport mainStyles from './main.module.scss';\n\nexport default class RefComponent extends React.Component<{\n content: string;\n componentType: 'tooltip' | 'linkout';\n pmidData: ICache<any>;\n}> {\n render() {\n const parts = this.props.content.split(/pmid|nct/i);\n\n if (parts.length < 2) {\n return <span>{this.props.content}</span>;\n }\n\n const ids = parts[1].match(/[0-9]+/g);\n\n if (!ids) {\n return <span>{this.props.content}</span>;\n }\n\n let prefix: string | undefined;\n\n if (this.props.content.toLowerCase().indexOf('pmid') >= 0) {\n prefix = 'PMID: ';\n } else if (this.props.content.toLowerCase().indexOf('nct') >= 0) {\n prefix = 'NCT';\n }\n\n let link: JSX.Element | undefined;\n\n if (prefix) {\n link = (\n <a\n target=\"_blank\"\n href={getNCBIlink(`/pubmed/${ids.join(',')}`)}\n >\n {`${prefix}${ids.join(',')}`}\n </a>\n );\n }\n\n if (this.props.componentType === 'tooltip') {\n const tooltipContent = () => (\n <div className={mainStyles['tooltip-refs']}>\n <ReferenceList\n pmids={ids.map((id: string) => parseInt(id))}\n pmidData={this.props.pmidData}\n abstracts={[]}\n />\n </div>\n );\n\n return (\n <span key={this.props.content}>\n {parts[0]}\n <DefaultTooltip\n overlay={tooltipContent}\n placement=\"right\"\n trigger={['hover', 'focus']}\n destroyTooltipOnHide={true}\n >\n <i className=\"fa fa-book\" style={{ color: 'black' }} />\n </DefaultTooltip>\n {`)`}\n </span>\n );\n } else if (link) {\n return (\n <span key={this.props.content}>\n {parts[0]}\n {link}\n {`)`}\n </span>\n );\n } else {\n return <span>{this.props.content}</span>;\n }\n }\n}\n","import { ICache } from 'cbioportal-frontend-commons';\nimport * as React from 'react';\nimport RefComponent from './RefComponent';\n\ntype SummaryWithRefsProps = {\n content: string | undefined;\n type: 'tooltip' | 'linkout';\n pmidData: ICache<any>;\n};\n\nexport default class SummaryWithRefs extends React.Component<\n SummaryWithRefsProps\n> {\n render() {\n if (!this.props.content) {\n return <span />;\n }\n\n const content: Array<JSX.Element> = [];\n\n // example delimiters:\n // (PMID: 11900253)\n // (PMID: 11753428, 16007150, 21467160)\n // (cBioPortal, MSKCC, May 2015, PMID: 24718888)\n // (NCT1234567)\n const regex = /(\\(.*?[PMID|NCT].*?\\))/i;\n\n // split the string with delimiters included\n const parts = this.props.content.split(regex);\n\n parts.forEach((part: string) => {\n // if delimiter convert to a JSX component\n if (part.match(regex)) {\n content.push(\n <RefComponent\n pmidData={this.props.pmidData}\n componentType={this.props.type}\n content={part}\n />\n );\n } else {\n content.push(<span>{part}</span>);\n }\n });\n\n return <span>{content}</span>;\n }\n}\n","import React from 'react';\nimport { If, Then, Else } from 'react-if';\nimport { Citations } from 'oncokb-ts-api-client';\n\nimport SummaryWithRefs from '../SummaryWithRefs';\nimport ReferenceList from '../ReferenceList';\nimport { ICache } from '../../../model/SimpleCache';\n\nexport const EvidenceReferenceContent: React.FunctionComponent<{\n description?: string;\n citations?: Citations;\n noInfoDisclaimer?: string;\n pmidData?: ICache;\n}> = props => {\n return (\n <If condition={!!props.description}>\n <Then>\n <SummaryWithRefs\n content={props.description}\n type={'tooltip'}\n pmidData={props.pmidData!}\n />\n </Then>\n <Else>\n <If\n condition={\n props.citations != undefined &&\n (props.citations.abstracts.length > 0 ||\n props.citations.pmids.length > 0)\n }\n >\n <Then>\n <ReferenceList\n pmidData={props.pmidData}\n pmids={props.citations!.pmids.map(pmid =>\n Number(pmid)\n )}\n abstracts={props.citations!.abstracts}\n />\n </Then>\n <Else>\n {props.noInfoDisclaimer\n ? props.noInfoDisclaimer\n : 'Information is not available.'}\n </Else>\n </If>\n </Else>\n </If>\n );\n};\n","import { DefaultTooltip, ICache } from 'cbioportal-frontend-commons';\nimport { ArticleAbstract, IndicatorQueryTreatment } from 'oncokb-ts-api-client';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport ReactTable from 'react-table';\n\nimport { getTumorTypeName } from '../../util/OncoKbUtils';\nimport OncoKbHelper from './OncoKbHelper';\nimport { EvidenceReferenceContent } from './oncokbCard/EvidenceReferenceContent';\n\nimport mainStyles from './main.module.scss';\nimport './oncoKbTreatmentTable.scss';\n\ntype OncoKbTreatmentTableProps = {\n variant: string;\n treatments: IndicatorQueryTreatment[];\n pmidData: ICache<any>;\n};\n\n@observer\nexport default class OncoKbTreatmentTable extends React.Component<\n OncoKbTreatmentTableProps\n> {\n levelTooltipContent = (level: string) => {\n return (\n <div style={{ maxWidth: '200px' }}>\n {OncoKbHelper.LEVEL_DESC[level]}\n </div>\n );\n };\n\n treatmentTooltipContent = (\n abstracts: ArticleAbstract[],\n pmids: number[],\n pmidData: ICache<any>,\n description?: string\n ) => {\n return abstracts.length > 0 || pmids.length > 0 ? (\n () => (\n <div className={mainStyles['tooltip-refs']}>\n <EvidenceReferenceContent\n description={description}\n citations={{\n pmids: pmids.map(pmid => pmid.toString()),\n abstracts: abstracts,\n }}\n pmidData={pmidData}\n noInfoDisclaimer={\n 'Mutation effect information is not available.'\n }\n />\n </div>\n )\n ) : (\n <span />\n );\n };\n\n readonly columns = [\n OncoKbHelper.getDefaultColumnDefinition('level'),\n {\n ...OncoKbHelper.getDefaultColumnDefinition('alterations'),\n Cell: (props: { value: string[] }) => {\n return OncoKbHelper.getAlterationsColumnCell(\n props.value,\n this.props.variant\n );\n },\n },\n {\n id: 'treatment',\n Header: <span>Drug(s)</span>,\n accessor: 'drugs',\n Cell: (props: { original: IndicatorQueryTreatment }) => (\n <div style={{ whiteSpace: 'normal', lineHeight: '1rem' }}>\n {props.original.drugs\n .map(drug => drug.drugName)\n .join(' + ')}\n </div>\n ),\n },\n {\n id: 'cancerType',\n Header: (\n <span>\n Level-associated\n <br />\n cancer type(s)\n </span>\n ),\n accessor: 'levelAssociatedCancerType',\n minWidth: 120,\n Cell: (props: { original: IndicatorQueryTreatment }) => (\n <div style={{ whiteSpace: 'normal', lineHeight: '1rem' }}>\n {getTumorTypeName(props.original.levelAssociatedCancerType)}\n </div>\n ),\n },\n {\n id: 'referenceList',\n Header: <span />,\n sortable: false,\n maxWidth: 25,\n Cell: (props: { original: IndicatorQueryTreatment }) =>\n (props.original.abstracts.length > 0 ||\n props.original.pmids.length > 0) && (\n <DefaultTooltip\n overlay={this.treatmentTooltipContent(\n props.original.abstracts,\n props.original.pmids.map(pmid => Number(pmid)),\n this.props.pmidData,\n props.original.description\n )}\n placement=\"right\"\n trigger={['hover', 'focus']}\n destroyTooltipOnHide={true}\n >\n <i className=\"fa fa-book\" />\n </DefaultTooltip>\n ),\n },\n ];\n\n public render() {\n return (\n <div className=\"oncokb-treatment-table\">\n <ReactTable\n data={this.props.treatments}\n columns={this.columns}\n showPagination={false}\n pageSize={this.props.treatments.length}\n className=\"-striped -highlight\"\n />\n </div>\n );\n }\n}\n","import React from 'react';\nimport { Citations } from 'oncokb-ts-api-client';\n\nimport { ICache } from '../../../model/SimpleCache';\nimport { EvidenceReferenceContent } from './EvidenceReferenceContent';\n\nexport const BiologicalContent: React.FunctionComponent<{\n biologicalSummary: string;\n mutationEffectCitations: Citations;\n pmidData: ICache;\n}> = props => {\n return (\n <EvidenceReferenceContent\n description={props.biologicalSummary}\n citations={props.mutationEffectCitations}\n pmidData={props.pmidData}\n noInfoDisclaimer={'Mutation effect information is not available.'}\n />\n );\n};\n","import { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { Implication } from 'oncokb-ts-api-client';\nimport * as React from 'react';\n\nimport { ICache } from '../../../model/SimpleCache';\nimport OncoKbHelper from '../OncoKbHelper';\nimport ReactTable from 'react-table';\nimport { EvidenceReferenceContent } from './EvidenceReferenceContent';\nimport mainStyles from '../main.module.scss';\n\ntype ImplicationContentProps = {\n variant: string;\n summary: string;\n implications: Implication[];\n pmidData: ICache;\n};\n\nexport const ImplicationContent: React.FunctionComponent<ImplicationContentProps> = (\n props: ImplicationContentProps\n) => {\n const columns = [\n {\n ...OncoKbHelper.getDefaultColumnDefinition('level'),\n accessor: 'levelOfEvidence',\n maxWidth: 100,\n },\n {\n ...OncoKbHelper.getDefaultColumnDefinition('alterations'),\n Cell: (cellProps: { value: string[] }) => {\n return OncoKbHelper.getAlterationsColumnCell(\n cellProps.value,\n props.variant\n );\n },\n },\n {\n id: 'referenceList',\n Header: <span />,\n sortable: false,\n maxWidth: 50,\n Cell: (cellProps: { original: Implication }) => (\n <DefaultTooltip\n overlay={() => (\n <div className={mainStyles['tooltip-refs']}>\n <EvidenceReferenceContent\n description={cellProps.original.description}\n citations={{\n pmids: cellProps.original.pmids,\n abstracts: cellProps.original.abstracts,\n }}\n pmidData={props.pmidData}\n noInfoDisclaimer={\n 'Mutation effect information is not available.'\n }\n />\n </div>\n )}\n placement=\"right\"\n trigger={['hover', 'focus']}\n destroyTooltipOnHide={true}\n >\n <i className=\"fa fa-book\" />\n </DefaultTooltip>\n ),\n },\n ];\n\n return (\n <div>\n <p>{props.summary}</p>\n <div>\n <ReactTable\n data={props.implications}\n columns={columns}\n showPagination={false}\n pageSize={props.implications.length}\n className=\"-striped -highlight\"\n />\n </div>\n </div>\n );\n};\n","import React, { useState } from 'react';\nimport { Tab, Tabs } from 'react-bootstrap';\nimport classnames from 'classnames';\nimport { IndicatorQueryResp, MutationEffectResp } from 'oncokb-ts-api-client';\nimport { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { OncoKbCardDataType } from 'cbioportal-utils';\n\nimport { ICache } from '../../model/SimpleCache';\nimport {\n annotationIconClassNames,\n calcHighestIndicatorLevel,\n} from '../../util/OncoKbUtils';\nimport OncoKbCardLevelsOfEvidenceDropdown from './OncoKbCardLevelsOfEvidenceDropdown';\nimport OncoKBSuggestAnnotationLinkout from './OncoKBSuggestAnnotationLinkout';\nimport OncoKbHelper from './OncoKbHelper';\nimport OncoKbTreatmentTable from './OncoKbTreatmentTable';\nimport { BiologicalContent } from './oncokbCard/BiologicalContent';\nimport { ImplicationContent } from './oncokbCard/ImplicationContent';\n\nimport tabsStyles from './tabs.module.scss';\nimport mainStyles from './main.module.scss';\n\nconst OncoKbMedicalDisclaimer = (\n <p className={mainStyles.disclaimer}>\n The information above is intended for research purposes only and should\n not be used as a substitute for professional diagnosis and treatment.\n </p>\n);\n\nconst ONCOKB_DATA_ACCESS_PAGE_LINK =\n 'https://docs.cbioportal.org/2.4-integration-with-other-webservices/oncokb-data-access';\n\nconst publicInstanceDisclaimerOverLay = (\n <div>\n <p>\n This cBioPortal instance is not linked to an OncoKB license, and\n therefore some OncoKB content is not available including\n therapeutic, diagnostic and prognostic implications. To obtain a\n license, please follow{' '}\n <a href={ONCOKB_DATA_ACCESS_PAGE_LINK} target={'_blank'}>\n these instructions\n </a>\n .\n </p>\n {OncoKbMedicalDisclaimer}\n </div>\n);\n\nconst DATA_TYPE_TO_TITLE = {\n [OncoKbCardDataType.BIOLOGICAL]: 'Biological Effect',\n [OncoKbCardDataType.TXS]: 'Therapeutic Implications',\n [OncoKbCardDataType.TXR]: 'Therapeutic Implications',\n [OncoKbCardDataType.DX]: 'Diagnostic Implications',\n [OncoKbCardDataType.PX]: 'Prognostic Implications',\n};\n\nexport type OncoKbCardBodyProps = {\n type: OncoKbCardDataType;\n geneNotExist: boolean;\n isCancerGene: boolean;\n hugoSymbol: string;\n pmidData: ICache;\n indicator?: IndicatorQueryResp;\n usingPublicOncoKbInstance: boolean;\n displayHighestLevelInTabTitle?: boolean;\n};\n\nconst TabContentWrapper: React.FunctionComponent<{}> = props => {\n return <div className={mainStyles['tab-content']}>{props.children}</div>;\n};\n\nconst TabTitle: React.FunctionComponent<{\n type: OncoKbCardDataType;\n indicator?: IndicatorQueryResp;\n displayHighestLevelInTabTitle?: boolean;\n}> = props => {\n const title = DATA_TYPE_TO_TITLE[props.type];\n const icon = props.displayHighestLevelInTabTitle ? (\n <i\n className={annotationIconClassNames(\n props.type,\n calcHighestIndicatorLevel(props.type, props.indicator),\n props.indicator\n )}\n />\n ) : null;\n\n return icon ? (\n <span style={{ display: 'flex' }}>\n {icon} {title}\n </span>\n ) : (\n <span>{title}</span>\n );\n};\n\nexport const OncoKbCardBody: React.FunctionComponent<OncoKbCardBodyProps> = props => {\n let defaultTabActiveKey: OncoKbCardDataType | undefined;\n // Do not assign a default key if the data type specified through the property does not have any content\n // When the content is not available, we do not render the tab.\n if (dataTypeHasContent(props.type)) {\n defaultTabActiveKey = props.type;\n // Both TXS and TXR are therapeutic implication data type which will be shown in the same tab. We use TXS as the tab key when rendering\n if (\n [OncoKbCardDataType.TXS, OncoKbCardDataType.TXR].includes(\n defaultTabActiveKey\n )\n ) {\n defaultTabActiveKey = OncoKbCardDataType.TXS;\n }\n }\n\n const [activateTabKey, setActivateTabKey] = useState(defaultTabActiveKey);\n const [levelsOfEvidence, setLevelsOfEvidence] = useState(\n getLevelsOfEvidence(activateTabKey)\n );\n\n function updateActivateTabKey(newKey: any) {\n setActivateTabKey(newKey);\n setLevelsOfEvidence(getLevelsOfEvidence(newKey));\n }\n\n function hasMutationEffectInfo(mutationEffect?: MutationEffectResp) {\n return (\n mutationEffect &&\n (mutationEffect.description ||\n mutationEffect.citations.abstracts.length > 0 ||\n mutationEffect.citations.pmids.length > 0)\n );\n }\n\n function dataTypeHasContent(type: OncoKbCardDataType) {\n switch (type) {\n case OncoKbCardDataType.BIOLOGICAL:\n return hasMutationEffectInfo(props.indicator?.mutationEffect);\n case OncoKbCardDataType.TXS:\n case OncoKbCardDataType.TXR:\n return (\n !!props.indicator?.highestSensitiveLevel ||\n !!props.indicator?.highestResistanceLevel\n );\n case OncoKbCardDataType.DX:\n return !!props.indicator?.highestDiagnosticImplicationLevel;\n case OncoKbCardDataType.PX:\n return !!props.indicator?.highestPrognosticImplicationLevel;\n default:\n return false;\n }\n }\n\n function getBody(type: OncoKbCardDataType, indicator: IndicatorQueryResp) {\n const tabs = [];\n if (dataTypeHasContent(OncoKbCardDataType.BIOLOGICAL)) {\n tabs.push(\n <Tab\n eventKey={OncoKbCardDataType.BIOLOGICAL}\n title={\n <TabTitle\n type={OncoKbCardDataType.BIOLOGICAL}\n indicator={props.indicator}\n displayHighestLevelInTabTitle={\n props.displayHighestLevelInTabTitle\n }\n />\n }\n >\n <TabContentWrapper>\n <BiologicalContent\n mutationEffectCitations={\n indicator.mutationEffect.citations\n }\n biologicalSummary={\n indicator.mutationEffect.description\n }\n pmidData={props.pmidData}\n />\n </TabContentWrapper>\n </Tab>\n );\n }\n if (\n !props.usingPublicOncoKbInstance &&\n dataTypeHasContent(OncoKbCardDataType.TXS)\n ) {\n tabs.push(\n <Tab\n eventKey={OncoKbCardDataType.TXS}\n title={\n <TabTitle\n type={OncoKbCardDataType.TXS}\n indicator={props.indicator}\n displayHighestLevelInTabTitle={\n props.displayHighestLevelInTabTitle\n }\n />\n }\n >\n <TabContentWrapper>\n <div\n style={{\n marginTop: 10,\n }}\n >\n <OncoKbTreatmentTable\n variant={indicator.query.alteration || ''}\n pmidData={props.pmidData!}\n treatments={indicator.treatments!}\n />\n </div>\n </TabContentWrapper>\n </Tab>\n );\n }\n if (\n !props.usingPublicOncoKbInstance &&\n dataTypeHasContent(OncoKbCardDataType.DX)\n ) {\n tabs.push(\n <Tab\n eventKey={OncoKbCardDataType.DX}\n title={\n <TabTitle\n type={OncoKbCardDataType.DX}\n indicator={props.indicator}\n displayHighestLevelInTabTitle={\n props.displayHighestLevelInTabTitle\n }\n />\n }\n >\n <TabContentWrapper>\n <ImplicationContent\n variant={indicator.query.alteration}\n summary={indicator.diagnosticSummary}\n implications={indicator.diagnosticImplications}\n pmidData={props.pmidData}\n />\n </TabContentWrapper>\n </Tab>\n );\n }\n if (\n !props.usingPublicOncoKbInstance &&\n dataTypeHasContent(OncoKbCardDataType.PX)\n ) {\n tabs.push(\n <Tab\n eventKey={OncoKbCardDataType.PX}\n title={\n <TabTitle\n type={OncoKbCardDataType.PX}\n indicator={props.indicator}\n displayHighestLevelInTabTitle={\n props.displayHighestLevelInTabTitle\n }\n />\n }\n >\n <TabContentWrapper>\n <ImplicationContent\n variant={indicator.query.alteration}\n summary={indicator.prognosticSummary}\n implications={indicator.prognosticImplications}\n pmidData={props.pmidData}\n />\n </TabContentWrapper>\n </Tab>\n );\n }\n return (\n <div style={{ padding: '10px' }}>\n <p>{indicator.geneSummary}</p>\n <p>{indicator.variantSummary}</p>\n {props.usingPublicOncoKbInstance ? (\n <p className={mainStyles.disclaimer}>\n Therapeutic, diagnostic and prognostic implications are\n not available in this instance of cBioPortal.{' '}\n <DefaultTooltip\n overlayStyle={{\n maxWidth: 400,\n }}\n overlay={publicInstanceDisclaimerOverLay}\n >\n <i className={'fa fa-info-circle'} />\n </DefaultTooltip>\n </p>\n ) : (\n <p>{indicator.tumorTypeSummary}</p>\n )}\n {tabs.length > 0 && (\n <Tabs\n defaultActiveKey={defaultTabActiveKey}\n className={classnames('oncokb-card-tabs')}\n onSelect={updateActivateTabKey}\n >\n {tabs}\n </Tabs>\n )}\n </div>\n );\n }\n\n function getLevelsOfEvidence(activateTabKey?: OncoKbCardDataType) {\n switch (activateTabKey) {\n case OncoKbCardDataType.TXS:\n case OncoKbCardDataType.TXR:\n return {\n levels: OncoKbHelper.TX_LEVELS,\n levelDes: OncoKbHelper.getLevelsDesc(activateTabKey),\n };\n case OncoKbCardDataType.DX:\n return {\n levels: OncoKbHelper.DX_LEVELS,\n levelDes: OncoKbHelper.getLevelsDesc(OncoKbCardDataType.DX),\n };\n case OncoKbCardDataType.PX:\n return {\n levels: OncoKbHelper.PX_LEVELS,\n levelDes: OncoKbHelper.getLevelsDesc(OncoKbCardDataType.PX),\n };\n default:\n return {\n levels: [],\n levelDes: {},\n };\n }\n }\n\n const UNKNOWN = 'Unknown';\n\n function getOncogenicity() {\n let oncogenicity = props.indicator?.oncogenic;\n if (!oncogenicity || oncogenicity === UNKNOWN) {\n oncogenicity = 'Unknown Oncogenic Effect';\n }\n return oncogenicity;\n }\n\n function getMutationEffect() {\n let mutationEffect = props.indicator?.mutationEffect.knownEffect;\n if (!mutationEffect || mutationEffect === UNKNOWN) {\n mutationEffect = 'Unknown Biological Effect';\n }\n return mutationEffect;\n }\n\n return (\n <>\n {!props.geneNotExist && (\n <div>\n {props.indicator && (\n <>\n <div className={mainStyles['biological-info']}>\n <div style={{ flexGrow: 1 }}>\n {getOncogenicity()}\n </div>\n <div style={{ flexGrow: 1 }}>\n {getMutationEffect()}\n </div>\n </div>\n <div\n className={mainStyles['oncokb-card']}\n data-test=\"oncokb-card\"\n >\n {getBody(props.type, props.indicator)}\n </div>\n </>\n )}\n {!props.usingPublicOncoKbInstance && (\n <>\n {/*Use tab pane style for the disclaimer to keep the consistency since the info is attached right under the tab pane*/}\n <div className={tabsStyles['tab-pane']}>\n {OncoKbMedicalDisclaimer}\n </div>\n {levelsOfEvidence &&\n levelsOfEvidence.levels.length > 0 && (\n <OncoKbCardLevelsOfEvidenceDropdown\n levels={levelsOfEvidence.levels}\n levelDes={levelsOfEvidence.levelDes}\n />\n )}\n </>\n )}\n </div>\n )}\n {!props.isCancerGene && (\n <div\n className={mainStyles['additional-info']}\n data-test={'oncokb-card-additional-info'}\n >\n There is currently no information about this gene in OncoKB.\n </div>\n )}\n {props.geneNotExist && props.isCancerGene && (\n <div className={mainStyles['additional-info']}>\n <OncoKBSuggestAnnotationLinkout gene={props.hugoSymbol!} />\n </div>\n )}\n </>\n );\n};\n","import { IndicatorQueryResp } from 'oncokb-ts-api-client';\nimport { computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ICache } from '../../model/SimpleCache';\n\nimport oncoKbLogoImgSrc from '../../images/oncokb.svg';\nimport mainStyles from './main.module.scss';\nimport { OncoKbCardTitle } from './OncoKbCardTitle';\nimport { OncoKbCardBody } from './OncoKbCardBody';\nimport { OncoKbCardDataType } from 'cbioportal-utils';\n\nexport type OncoKbCardProps = {\n type: OncoKbCardDataType;\n hugoSymbol: string;\n geneNotExist: boolean;\n isCancerGene: boolean;\n usingPublicOncoKbInstance: boolean;\n pmidData: ICache;\n indicator?: IndicatorQueryResp;\n displayHighestLevelInTabTitle?: boolean;\n handleFeedbackOpen?: React.EventHandler<any>;\n};\n\n@observer\nexport default class OncoKbCard extends React.Component<OncoKbCardProps> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n @computed\n get oncokbLinkOut() {\n let link: string | undefined = undefined;\n if (this.props.hugoSymbol) {\n link = `https://www.oncokb.org/gene/${this.props.hugoSymbol}`;\n if (\n !this.props.geneNotExist &&\n this.props.indicator &&\n this.props.indicator.variantExist\n ) {\n link = `${link}/${this.props.indicator.query.alteration}`;\n }\n }\n return link;\n }\n\n public render() {\n const oncokbLogo = (\n <img\n src={oncoKbLogoImgSrc}\n className={mainStyles['oncokb-logo']}\n alt=\"OncoKB\"\n />\n );\n return (\n <div className={mainStyles['oncokb-card']} data-test=\"oncokb-card\">\n <div>\n {!this.props.geneNotExist && this.props.indicator && (\n <OncoKbCardTitle\n hugoSymbol={this.props.indicator.query.hugoSymbol}\n variant={this.props.indicator.query.alteration}\n tumorType={\n this.props.indicator\n ? this.props.indicator.query.tumorType\n : ''\n }\n />\n )}\n <OncoKbCardBody\n type={this.props.type}\n indicator={this.props.indicator}\n geneNotExist={this.props.geneNotExist}\n isCancerGene={this.props.isCancerGene}\n hugoSymbol={this.props.hugoSymbol}\n pmidData={this.props.pmidData}\n usingPublicOncoKbInstance={\n this.props.usingPublicOncoKbInstance\n }\n displayHighestLevelInTabTitle={\n this.props.displayHighestLevelInTabTitle\n }\n />\n <div className={mainStyles.footer}>\n {this.oncokbLinkOut === undefined ? (\n { oncokbLogo }\n ) : (\n <a\n href={`${this.oncokbLinkOut}`}\n target=\"_blank\"\n className={mainStyles['oncokb-logo']}\n >\n {oncokbLogo}\n </a>\n )}\n {this.props.handleFeedbackOpen && (\n <span>\n <button\n className=\"btn btn-default btn-xs\"\n onClick={this.props.handleFeedbackOpen}\n >\n Feedback\n </button>\n </span>\n )}\n </div>\n </div>\n </div>\n );\n }\n}\n","import { ICache } from 'cbioportal-frontend-commons';\nimport { MobxCache, OncoKbCardDataType } from 'cbioportal-utils';\nimport { IndicatorQueryResp } from 'oncokb-ts-api-client';\nimport * as React from 'react';\nimport _ from 'lodash';\nimport { observer } from 'mobx-react';\n\nimport OncoKbCard from './OncoKbCard';\n\nexport interface IOncoKbTooltipProps {\n type: OncoKbCardDataType;\n indicator?: IndicatorQueryResp;\n pubMedCache?: MobxCache;\n handleFeedbackOpen?: () => void;\n hugoSymbol: string;\n isCancerGene: boolean;\n geneNotExist: boolean;\n usingPublicOncoKbInstance: boolean;\n}\n\n/**\n * @author Selcuk Onur Sumer\n */\n@observer\nexport default class OncoKbTooltip extends React.Component<\n IOncoKbTooltipProps,\n {}\n> {\n public get pmidData(): ICache<any> {\n if (this.props.pubMedCache) {\n let allPmids: string[] = [];\n\n if (this.props.indicator) {\n if (this.props.indicator.mutationEffect) {\n allPmids = allPmids.concat(\n this.props.indicator.mutationEffect.citations.pmids\n );\n }\n this.props.indicator.treatments.forEach(treatment => {\n allPmids = allPmids.concat(treatment.pmids);\n });\n this.props.indicator.diagnosticImplications.forEach(\n implication => {\n allPmids = allPmids.concat(implication.pmids);\n }\n );\n this.props.indicator.prognosticImplications.forEach(\n implication => {\n allPmids = allPmids.concat(implication.pmids);\n }\n );\n }\n for (const ref of _.uniq(allPmids).map(pmid => Number(pmid))) {\n this.props.pubMedCache.get(ref);\n }\n }\n\n return (this.props.pubMedCache && this.props.pubMedCache.cache) || {};\n }\n\n public render() {\n let tooltipContent: JSX.Element = <span />;\n\n if (this.props.geneNotExist) {\n tooltipContent = (\n <OncoKbCard\n type={this.props.type}\n usingPublicOncoKbInstance={\n this.props.usingPublicOncoKbInstance\n }\n hugoSymbol={this.props.hugoSymbol}\n geneNotExist={this.props.geneNotExist}\n isCancerGene={this.props.isCancerGene}\n pmidData={{}}\n handleFeedbackOpen={this.props.handleFeedbackOpen}\n displayHighestLevelInTabTitle={true}\n />\n );\n }\n\n if (!this.props.indicator) {\n return tooltipContent;\n }\n\n if (!this.props.geneNotExist) {\n const pmidData: ICache<any> = this.pmidData;\n tooltipContent = (\n <OncoKbCard\n type={this.props.type}\n usingPublicOncoKbInstance={\n this.props.usingPublicOncoKbInstance\n }\n geneNotExist={this.props.geneNotExist}\n isCancerGene={this.props.isCancerGene}\n hugoSymbol={this.props.hugoSymbol}\n indicator={this.props.indicator}\n pmidData={pmidData}\n handleFeedbackOpen={this.props.handleFeedbackOpen}\n displayHighestLevelInTabTitle={true}\n />\n );\n }\n\n return tooltipContent;\n }\n}\n","import * as React from 'react';\nimport { Modal } from 'react-bootstrap';\n\ninterface IOncoKbFeedbackProps {\n showFeedback: boolean;\n hugoSymbol?: string;\n alteration?: string;\n userEmailAddress?: string;\n handleFeedbackClose: () => void;\n}\n\nexport default class OncoKbFeedback extends React.Component<\n IOncoKbFeedbackProps,\n {}\n> {\n public render() {\n const url =\n 'https://docs.google.com/forms/d/1lt6TtecxHrhIE06gAKVF_JW4zKFoowNFzxn6PJv4g7A/viewform';\n const geneParam = `entry.1744186665=${this.props.hugoSymbol || ''}`;\n const alterationParam = `entry.1671960263=${this.props.alteration ||\n ''}`;\n const userParam = `entry.1381123986=${this.props.userEmailAddress ||\n ''}`;\n const uriParam = `entry.1083850662=${encodeURIComponent(\n window.location.href\n )}`;\n\n return (\n <Modal\n show={this.props.showFeedback}\n onHide={this.props.handleFeedbackClose}\n >\n <Modal.Header closeButton>\n <Modal.Title>OncoKB Annotation Feedback</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <iframe\n src={`${url}?${geneParam}&${alterationParam}&entry.118699694&entry.1568641202&${userParam}&${uriParam}&embedded=true`}\n style={{\n width: 550,\n height: 500,\n border: 'none',\n marginLeft: '10px',\n }}\n marginHeight={0}\n marginWidth={0}\n >\n <i className=\"fa fa-spinner fa-pulse fa-2x\" />\n </iframe>\n </Modal.Body>\n </Modal>\n );\n }\n}\n","import autobind from 'autobind-decorator';\nimport { MobxCache, OncoKbCardDataType } from 'cbioportal-utils';\nimport { IndicatorQueryResp } from 'oncokb-ts-api-client';\nimport * as React from 'react';\nimport { makeObservable, observable } from 'mobx';\nimport { observer } from 'mobx-react';\n\nimport {\n calcDiagnosticLevelScore,\n calcOncogenicScore,\n calcPrognosticLevelScore,\n calcResistanceLevelScore,\n calcSensitivityLevelScore,\n} from '../../util/OncoKbUtils';\nimport { errorIcon, loaderIcon } from '../StatusHelpers';\nimport { AnnotationIcon, AnnotationIconWithTooltip } from './AnnotationIcon';\nimport { CompactAnnotationIcon } from './CompactAnnotationIcon';\nimport OncoKbTooltip from './OncoKbTooltip';\nimport OncoKbFeedback from './OncoKbFeedback';\n\nimport './oncokb.scss';\nimport 'oncokb-styles/dist/oncokb.css';\n\nexport interface IOncoKbProps {\n status: 'pending' | 'error' | 'complete';\n indicator?: IndicatorQueryResp;\n availableDataTypes?: OncoKbCardDataType[];\n mergeAnnotationIcons?: boolean;\n pubMedCache?: MobxCache;\n usingPublicOncoKbInstance: boolean;\n isCancerGene: boolean;\n geneNotExist: boolean;\n hugoGeneSymbol: string;\n userEmailAddress?: string;\n disableFeedback?: boolean;\n contentPadding?: number;\n}\n\nexport function sortValue(\n indicator?: IndicatorQueryResp | undefined | null\n): number[] {\n const values: number[] = [0, 0, 0];\n\n if (indicator) {\n values[0] = calcOncogenicScore(indicator.oncogenic);\n values[1] = calcSensitivityLevelScore(indicator.highestSensitiveLevel);\n values[2] = calcResistanceLevelScore(indicator.highestResistanceLevel);\n values[3] = calcDiagnosticLevelScore(\n indicator.highestDiagnosticImplicationLevel\n );\n values[4] = calcPrognosticLevelScore(\n indicator.highestPrognosticImplicationLevel\n );\n }\n\n return values;\n}\n\nexport function download(\n indicator?: IndicatorQueryResp | undefined | null\n): string {\n if (!indicator) {\n return 'NA';\n }\n\n const oncogenic = indicator.oncogenic ? indicator.oncogenic : 'Unknown';\n const sensitivityLevel =\n indicator.highestSensitiveLevel?.toLowerCase() || 'level NA';\n const resistanceLevel =\n indicator.highestResistanceLevel?.toLowerCase() || 'resistance NA';\n\n return `${oncogenic}, ${sensitivityLevel}, ${resistanceLevel}`;\n}\n\nfunction findDefaultDataTypeForTooltip(\n usingPublicOncoKbInstance: boolean,\n indicator?: IndicatorQueryResp,\n availableDataTypes?: OncoKbCardDataType[]\n) {\n if (usingPublicOncoKbInstance || !indicator) {\n return OncoKbCardDataType.BIOLOGICAL;\n }\n\n // priority is in this order: Tx > Dx > Px > Biological\n if (\n indicator.highestSensitiveLevel &&\n availableDataTypes &&\n availableDataTypes.includes(OncoKbCardDataType.TXS)\n ) {\n return OncoKbCardDataType.TXS;\n } else if (\n indicator.highestResistanceLevel &&\n availableDataTypes &&\n availableDataTypes.includes(OncoKbCardDataType.TXR)\n ) {\n return OncoKbCardDataType.TXR;\n } else if (\n indicator.highestDiagnosticImplicationLevel &&\n availableDataTypes &&\n availableDataTypes.includes(OncoKbCardDataType.DX)\n ) {\n return OncoKbCardDataType.DX;\n } else if (\n indicator.highestPrognosticImplicationLevel &&\n availableDataTypes &&\n availableDataTypes.includes(OncoKbCardDataType.PX)\n ) {\n return OncoKbCardDataType.PX;\n }\n\n return OncoKbCardDataType.BIOLOGICAL;\n}\n\n@observer\nexport default class OncoKB extends React.Component<IOncoKbProps, {}> {\n constructor(props: IOncoKbProps) {\n super(props);\n makeObservable(this);\n }\n\n @observable showFeedback: boolean = false;\n @observable tooltipDataLoadComplete: boolean = false;\n\n public render() {\n let oncoKbContent: JSX.Element;\n\n if (this.props.status === 'error') {\n oncoKbContent = errorIcon('Error fetching OncoKB data');\n } else if (this.props.status === 'pending') {\n oncoKbContent = loaderIcon('pull-left');\n } else {\n oncoKbContent = this.props.mergeAnnotationIcons\n ? this.singleAnnotationIcon()\n : this.multiAnnotationIcon();\n\n if (!this.props.disableFeedback && this.showFeedback) {\n oncoKbContent = (\n <span>\n {oncoKbContent}\n <OncoKbFeedback\n userEmailAddress={this.props.userEmailAddress}\n hugoSymbol={this.props.hugoGeneSymbol}\n alteration={\n this.props.indicator\n ? this.props.indicator.query.alteration\n : undefined\n }\n showFeedback={this.showFeedback}\n handleFeedbackClose={this.handleFeedbackClose}\n />\n </span>\n );\n }\n }\n\n return oncoKbContent;\n }\n\n private multiAnnotationIcon() {\n return (\n <span className=\"oncokb-content\" style={{ display: 'inline-flex' }}>\n <AnnotationIcon\n type={OncoKbCardDataType.BIOLOGICAL}\n tooltipOverlay={this.tooltipContent(\n OncoKbCardDataType.BIOLOGICAL\n )}\n indicator={this.props.indicator}\n availableDataTypes={this.props.availableDataTypes}\n />\n {this.levelIcons()}\n </span>\n );\n }\n\n private levelIcons() {\n if (this.props.usingPublicOncoKbInstance) {\n return null;\n }\n\n if (this.props.indicator) {\n return (\n <>\n {[\n OncoKbCardDataType.TXS,\n OncoKbCardDataType.TXR,\n OncoKbCardDataType.DX,\n OncoKbCardDataType.PX,\n ].map(dataType => (\n <AnnotationIcon\n type={dataType}\n tooltipOverlay={this.tooltipContent(dataType)}\n indicator={this.props.indicator}\n availableDataTypes={this.props.availableDataTypes}\n />\n ))}\n </>\n );\n } else {\n // workaround: use content padding value to draw an empty icon when there is no indicator data.\n // this is to keep the icon alignment consistent with the rest of the column.\n // ideally we should implement grouped columns to avoid these kind of workarounds\n // (see https://github.com/cBioPortal/cbioportal/issues/8723)\n return <i style={{ paddingRight: this.props.contentPadding }} />;\n }\n }\n\n private singleAnnotationIcon() {\n return (\n <span className=\"oncokb-content\" style={{ display: 'inline-flex' }}>\n <AnnotationIconWithTooltip\n tooltipOverlay={this.tooltipContent(\n findDefaultDataTypeForTooltip(\n this.props.usingPublicOncoKbInstance,\n this.props.indicator,\n this.props.availableDataTypes\n )\n )}\n icon={\n <CompactAnnotationIcon\n indicator={this.props.indicator}\n availableDataTypes={this.props.availableDataTypes}\n usingPublicOncoKbInstance={\n this.props.usingPublicOncoKbInstance\n }\n />\n }\n />\n </span>\n );\n }\n\n @autobind\n private tooltipContent(type: OncoKbCardDataType): JSX.Element {\n return (\n <OncoKbTooltip\n type={type}\n usingPublicOncoKbInstance={this.props.usingPublicOncoKbInstance}\n hugoSymbol={this.props.hugoGeneSymbol}\n geneNotExist={this.props.geneNotExist}\n isCancerGene={this.props.isCancerGene}\n indicator={this.props.indicator || undefined}\n pubMedCache={this.props.pubMedCache}\n handleFeedbackOpen={\n this.props.disableFeedback\n ? undefined\n : this.handleFeedbackOpen\n }\n />\n );\n }\n\n @autobind\n private handleFeedbackOpen(): void {\n this.showFeedback = true;\n }\n\n @autobind\n private handleFeedbackClose(): void {\n this.showFeedback = false;\n }\n}\n","import * as React from 'react';\n\nimport hotspotStyles from './hotspotInfo.module.scss';\nimport { getNCBIlink } from 'cbioportal-frontend-commons';\n\nexport type HotspotInfoProps = {\n isHotspot: boolean;\n is3dHotspot: boolean;\n count?: number;\n customInfo?: JSX.Element;\n};\n\nexport function title(\n isHotspot: boolean,\n is3dHotspot: boolean,\n count?: number,\n customInfo?: JSX.Element\n) {\n const recurrentHotspot = isHotspot ? <b>Recurrent Hotspot</b> : null;\n const maybeAnd = isHotspot && is3dHotspot ? <span>and</span> : null;\n const clusteredHotspot = is3dHotspot ? <b>3D Clustered Hotspot</b> : null;\n\n let countInfo: JSX.Element | null = null;\n\n if (count) {\n const sample = count > 1 ? 'samples' : 'sample';\n countInfo = (\n <span>\n <b>{count}</b> {sample} with\n </span>\n );\n }\n\n return (\n <span>\n {countInfo} {recurrentHotspot} {maybeAnd} {clusteredHotspot}{' '}\n {customInfo}\n </span>\n );\n}\n\nexport function publication(isHotspot: boolean, is3dHotspot: boolean) {\n const recurrentHotspot = isHotspot\n ? 'a recurrent hotspot (statistically significant)'\n : '';\n const maybeAnd = isHotspot && is3dHotspot ? 'and' : '';\n const clusteredHotspot = is3dHotspot ? 'a 3D clustered hotspot' : '';\n\n const recurrentPublication = isHotspot ? (\n <a href={getNCBIlink(`/pubmed/26619011`)} target=\"_blank\">\n Chang et al., Nat Biotechnol, 2016\n </a>\n ) : (\n ''\n );\n\n const clusteredPublication = is3dHotspot ? (\n <a\n href=\"http://genomemedicine.biomedcentral.com/articles/10.1186/s13073-016-0393-x\"\n target=\"_blank\"\n >\n Gao et al., Genome Medicine, 2017\n </a>\n ) : (\n ''\n );\n\n return (\n <span>\n This mutated amino acid was identified as {recurrentHotspot}{' '}\n {maybeAnd} {clusteredHotspot} in a population-scale cohort of tumor\n samples of various cancer types using methodology based in part on{' '}\n {recurrentPublication} {maybeAnd} {clusteredPublication}.\n </span>\n );\n}\n\nexport function link(isHotspot: boolean, is3dHotspot: boolean) {\n const recurrentLink = isHotspot ? (\n <a href=\"https://www.cancerhotspots.org/\" target=\"_blank\">\n https://cancerhotspots.org/\n </a>\n ) : (\n ''\n );\n\n const maybeAnd = isHotspot && is3dHotspot ? 'and' : '';\n\n const clusteredLink = is3dHotspot ? (\n <a href=\"https://www.3dhotspots.org/\" target=\"_blank\">\n https://3dhotspots.org/\n </a>\n ) : (\n ''\n );\n\n return (\n <span>\n Explore all mutations at {recurrentLink} {maybeAnd} {clusteredLink}.\n </span>\n );\n}\n\nexport const HotspotInfo: React.FunctionComponent<HotspotInfoProps> = props => {\n const { isHotspot, is3dHotspot, count, customInfo } = props;\n\n return (\n <span className={hotspotStyles['hotspot-info']}>\n {title(isHotspot, is3dHotspot, count, customInfo)}\n <br />\n {publication(isHotspot, is3dHotspot)}\n <br />\n <br />\n {link(isHotspot, is3dHotspot)}\n </span>\n );\n};\n","import * as React from 'react';\n\nimport { loaderIcon } from '../StatusHelpers';\nimport { HotspotInfo } from '../hotspot/HotspotInfo';\nimport { DefaultTooltip } from 'cbioportal-frontend-commons';\n\nimport hotspotImg from '../../images/cancer-hotspots.svg';\nimport hotspot3dImg from '../../images/3d-hotspots.svg';\nimport annotationStyles from './annotation.module.scss';\n\nexport interface ICancerHotspotsProps {\n status: 'pending' | 'error' | 'complete';\n isHotspot: boolean;\n is3dHotspot: boolean;\n}\n\nexport function sortValue(isHotspot: boolean, is3dHotspot: boolean): number {\n let score: number = 0;\n\n if (isHotspot) {\n score += 1;\n }\n\n if (is3dHotspot) {\n score += 0.5;\n }\n\n return score;\n}\n\nexport function placeArrow(tooltipEl: any) {\n const arrowEl = tooltipEl.querySelector('.rc-tooltip-arrow');\n arrowEl.style.left = '10px';\n}\n\nexport default class HotspotAnnotation extends React.Component<\n ICancerHotspotsProps,\n {}\n> {\n constructor(props: ICancerHotspotsProps) {\n super(props);\n this.state = {};\n }\n\n public render() {\n const { isHotspot, is3dHotspot } = this.props;\n\n let hotspotContent = (\n <span className={`${annotationStyles['annotation-item']}`} />\n );\n\n if (this.props.status === 'pending') {\n hotspotContent = loaderIcon('pull-left');\n } else if (isHotspot || is3dHotspot) {\n const hotspotsImgWidth: number = 14;\n let hotspotsImgHeight: number = 14;\n let hotspotsImgSrc = hotspotImg;\n\n // if it is a 3D hotspot but not a recurrent hotspot, show the 3D hotspot icon\n if (!isHotspot) {\n hotspotsImgSrc = hotspot3dImg;\n hotspotsImgHeight = 18;\n }\n\n const arrowContent = <div className=\"rc-tooltip-arrow-inner\" />;\n const tooltipContent = (\n <HotspotInfo isHotspot={isHotspot} is3dHotspot={is3dHotspot} />\n );\n\n hotspotContent = (\n <DefaultTooltip\n overlay={tooltipContent}\n placement=\"topLeft\"\n trigger={['hover', 'focus']}\n arrowContent={arrowContent}\n onPopupAlign={placeArrow}\n >\n <span\n className={`${annotationStyles['annotation-item']} chang_hotspot`}\n >\n <img\n width={hotspotsImgWidth}\n height={hotspotsImgHeight}\n src={hotspotsImgSrc}\n alt=\"Recurrent Hotspot Symbol\"\n />\n </span>\n </DefaultTooltip>\n );\n }\n\n return hotspotContent;\n }\n}\n","import { cachePostMethodsOnClient } from 'cbioportal-frontend-commons';\nimport {\n indexAnnotationsByGenomicLocation,\n IOncoKbData,\n Mutation,\n uniqueGenomicLocations,\n} from 'cbioportal-utils';\nimport {\n GenomeNexusAPI,\n GenomeNexusAPIInternal,\n} from 'genome-nexus-ts-api-client';\nimport { OncoKbAPI, OncoKBInfo } from 'oncokb-ts-api-client';\nimport _ from 'lodash';\n\nexport const DEFAULT_MUTATION_ALIGNER_URL_TEMPLATE =\n 'http://mutationaligner.org/api/domains/<%= pfamDomainId %>?metadata=true';\nexport const DEFAULT_MUTATION_ALIGNER_PROXY_URL_TEMPLATE =\n 'https://www.cbioportal.org/proxy/mutationaligner.org/api/domains/<%= pfamDomainId %>?metadata=true';\nexport const DEFAULT_MY_GENE_URL_TEMPLATE =\n 'https://mygene.info/v3/gene/<%= entrezGeneId %>?fields=uniprot';\nexport const DEFAULT_UNIPROT_ID_URL_TEMPLATE =\n 'https://www.uniprot.org/uniprot/?query=accession:<%= swissProtAccession %>&format=tab&columns=entry+name';\nexport const DEFAULT_GENOME_NEXUS_URL = 'https://www.genomenexus.org/';\n\n// The legacy instance does not require an authentication but the data will not be update.\nexport const DEFAULT_ONCO_KB_URL = 'https://legacy.oncokb.org/';\nexport const ONCOKB_DEFAULT_DATA: IOncoKbData = {\n indicatorMap: {},\n};\n\n// Set the default to false since most of the instances are not public instance.\n// The only one we have right now is public.api.oncokb.org\nexport const USE_DEFAULT_PUBLIC_INSTANCE_FOR_ONCOKB = false;\n\nexport const ONCOKB_DEFAULT_INFO: OncoKBInfo = {\n apiVersion: 'v1.0.0',\n dataVersion: {\n version: 'v2.0',\n date: '12/19/2019',\n },\n levels: [],\n ncitVersion: '19.03d',\n oncoTreeVersion: 'oncotree_2019_12_01',\n publicInstance: USE_DEFAULT_PUBLIC_INSTANCE_FOR_ONCOKB,\n};\n\nconst DEFAULT_GENOME_NEXUS_CLIENT = initGenomeNexusClient();\n\nexport function getUrl(urlTemplate: string, templateVariables: any) {\n return _.template(urlTemplate)(templateVariables);\n}\n\nexport async function fetchVariantAnnotationsByMutation(\n mutations: Partial<Mutation>[],\n fields: string[] = ['annotation_summary'],\n isoformOverrideSource: string = 'uniprot',\n client: Partial<GenomeNexusAPI> = DEFAULT_GENOME_NEXUS_CLIENT\n) {\n const genomicLocations = uniqueGenomicLocations(mutations);\n\n return genomicLocations.length > 0 &&\n client.fetchVariantAnnotationByGenomicLocationPOST\n ? await client.fetchVariantAnnotationByGenomicLocationPOST({\n genomicLocations,\n fields,\n isoformOverrideSource,\n })\n : [];\n}\n\nexport async function fetchVariantAnnotationsIndexedByGenomicLocation(\n mutations: Partial<Mutation>[],\n fields: string[] = ['annotation_summary'],\n isoformOverrideSource: string = 'uniprot',\n client: Partial<GenomeNexusAPI> = DEFAULT_GENOME_NEXUS_CLIENT\n) {\n const variantAnnotations = await fetchVariantAnnotationsByMutation(\n mutations,\n fields,\n isoformOverrideSource,\n client\n );\n return indexAnnotationsByGenomicLocation(variantAnnotations);\n}\n\nexport function initGenomeNexusClient(\n genomeNexusUrl?: string,\n cachePostMethods?: boolean,\n apiCacheLimit?: number\n): GenomeNexusAPI {\n const client = new GenomeNexusAPI(\n genomeNexusUrl || DEFAULT_GENOME_NEXUS_URL\n );\n\n if (cachePostMethods) {\n cachePostMethodsOnClient(GenomeNexusAPI, [], /POST$/, apiCacheLimit);\n }\n\n return client;\n}\n\nexport function initGenomeNexusInternalClient(\n genomeNexusUrl?: string,\n cachePostMethods?: boolean,\n apiCacheLimit?: number\n): GenomeNexusAPIInternal {\n const client = new GenomeNexusAPIInternal(\n genomeNexusUrl || DEFAULT_GENOME_NEXUS_URL\n );\n\n if (cachePostMethods) {\n cachePostMethodsOnClient(\n GenomeNexusAPIInternal,\n [],\n /POST$/,\n apiCacheLimit\n );\n }\n\n return client;\n}\n\nexport function initOncoKbClient(\n oncoKbUrl?: string,\n cachePostMethods?: boolean,\n apiCacheLimit?: number\n): OncoKbAPI {\n const client = new OncoKbAPI(oncoKbUrl || DEFAULT_ONCO_KB_URL);\n\n if (cachePostMethods) {\n cachePostMethodsOnClient(OncoKbAPI, [], undefined, apiCacheLimit);\n }\n\n return client;\n}\n","import {\n calculateOncoKbAvailableDataType,\n getCivicEntry,\n getMyCancerGenomeLinks,\n getRemoteDataGroupStatus,\n ICivicEntry,\n ICivicGeneIndex,\n ICivicVariantIndex,\n IHotspotIndex,\n IMyCancerGenomeData,\n IOncoKbData,\n is3dHotspot,\n isLinearClusterHotspot,\n MobxCache,\n Mutation,\n OncoKbCardDataType,\n RemoteData,\n} from 'cbioportal-utils';\nimport { CancerGene, IndicatorQueryResp } from 'oncokb-ts-api-client';\nimport _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { getIndicatorData } from '../../util/OncoKbUtils';\nimport { defaultArraySortMethod } from 'cbioportal-utils';\nimport Civic, { sortValue as civicSortValue } from '../civic/Civic';\nimport MyCancerGenome, {\n sortValue as myCancerGenomeSortValue,\n} from '../myCancerGenome/MyCancerGenome';\nimport OncoKB, { sortValue as oncoKbSortValue } from '../oncokb/OncoKB';\nimport HotspotAnnotation, {\n sortValue as hotspotSortValue,\n} from './HotspotAnnotation';\nimport { USE_DEFAULT_PUBLIC_INSTANCE_FOR_ONCOKB } from '../../util/DataFetcherUtils';\nimport { CanonicalMutationType } from 'cbioportal-frontend-commons';\n\nexport type AnnotationProps = {\n mutation?: Mutation;\n enableOncoKb: boolean;\n enableMyCancerGenome: boolean;\n enableHotspot: boolean;\n enableCivic: boolean;\n hotspotData?: RemoteData<IHotspotIndex | undefined>;\n oncoKbData?: RemoteData<IOncoKbData | Error | undefined>;\n oncoKbCancerGenes?: RemoteData<CancerGene[] | Error | undefined>;\n usingPublicOncoKbInstance: boolean;\n mergeOncoKbIcons?: boolean;\n oncoKbContentPadding?: number;\n pubMedCache?: MobxCache;\n resolveEntrezGeneId?: (mutation: Mutation) => number;\n resolveTumorType?: (mutation: Mutation) => string;\n myCancerGenomeData?: IMyCancerGenomeData;\n civicGenes?: RemoteData<ICivicGeneIndex | undefined>;\n civicVariants?: RemoteData<ICivicVariantIndex | undefined>;\n userEmailAddress?: string;\n};\n\nexport type GenericAnnotationProps = {\n annotation: IAnnotation;\n enableCivic: boolean;\n enableHotspot: boolean;\n enableMyCancerGenome: boolean;\n enableOncoKb: boolean;\n mergeOncoKbIcons?: boolean;\n oncoKbContentPadding?: number;\n pubMedCache?: MobxCache;\n userEmailAddress?: string;\n};\n\nexport interface IAnnotation {\n isHotspot: boolean;\n is3dHotspot: boolean;\n hotspotStatus: 'pending' | 'error' | 'complete';\n oncoKbIndicator?: IndicatorQueryResp;\n oncoKbAvailableDataTypes: OncoKbCardDataType[];\n oncoKbStatus: 'pending' | 'error' | 'complete';\n oncoKbGeneExist: boolean;\n isOncoKbCancerGene: boolean;\n usingPublicOncoKbInstance: boolean;\n myCancerGenomeLinks: string[];\n civicEntry?: ICivicEntry | null;\n civicStatus: 'pending' | 'error' | 'complete';\n hasCivicVariants: boolean;\n hugoGeneSymbol: string;\n}\n\nexport const DEFAULT_ANNOTATION_DATA: IAnnotation = {\n oncoKbStatus: 'complete',\n oncoKbGeneExist: false,\n isOncoKbCancerGene: false,\n oncoKbAvailableDataTypes: [],\n usingPublicOncoKbInstance: false,\n isHotspot: false,\n is3dHotspot: false,\n hotspotStatus: 'complete',\n hugoGeneSymbol: '',\n hasCivicVariants: true,\n myCancerGenomeLinks: [],\n civicStatus: 'complete',\n};\n\nfunction getDefaultEntrezGeneId(mutation: Mutation): number {\n return (mutation.gene && mutation.gene.entrezGeneId) || 0;\n}\n\nfunction getDefaultTumorType(): string {\n return 'Unknown';\n}\n\nconst memoized: Map<string, IAnnotation> = new Map();\nexport function getAnnotationData(\n mutation?: Mutation,\n oncoKbCancerGenes?: RemoteData<CancerGene[] | Error | undefined>,\n hotspotData?: RemoteData<IHotspotIndex | undefined>,\n myCancerGenomeData?: IMyCancerGenomeData,\n oncoKbData?: RemoteData<IOncoKbData | Error | undefined>,\n usingPublicOncoKbInstance?: boolean,\n civicGenes?: RemoteData<ICivicGeneIndex | undefined>,\n civicVariants?: RemoteData<ICivicVariantIndex | undefined>,\n resolveTumorType: (mutation: Mutation) => string = getDefaultTumorType,\n resolveEntrezGeneId: (mutation: Mutation) => number = getDefaultEntrezGeneId\n): IAnnotation {\n let value: Partial<IAnnotation>;\n\n if (mutation) {\n let key = '';\n const memoize =\n !!oncoKbCancerGenes &&\n oncoKbCancerGenes?.isComplete &&\n !!hotspotData &&\n hotspotData?.isComplete &&\n !!myCancerGenomeData &&\n !!oncoKbData &&\n oncoKbData?.isComplete &&\n !!civicGenes &&\n civicGenes?.isComplete &&\n !!civicVariants &&\n civicVariants?.isComplete;\n\n if (memoize) {\n key = JSON.stringify(mutation) + !!usingPublicOncoKbInstance;\n const val = memoized.get(key);\n if (val) {\n return val;\n }\n }\n\n const entrezGeneId = resolveEntrezGeneId(mutation);\n\n let oncoKbIndicator: IndicatorQueryResp | undefined;\n const hugoGeneSymbol = mutation.gene\n ? mutation.gene.hugoGeneSymbol\n : undefined;\n\n let oncoKbGeneExist = false;\n let isOncoKbCancerGene = false;\n if (oncoKbCancerGenes && !(oncoKbCancerGenes.result instanceof Error)) {\n oncoKbGeneExist =\n _.find(\n oncoKbCancerGenes.result,\n (gene: CancerGene) =>\n (mutation.mutationType &&\n mutation.mutationType.toLowerCase() ===\n CanonicalMutationType.FUSION) ||\n (gene.oncokbAnnotated &&\n gene.entrezGeneId === entrezGeneId)\n ) !== undefined;\n isOncoKbCancerGene =\n _.find(\n oncoKbCancerGenes.result,\n (gene: CancerGene) => gene.entrezGeneId === entrezGeneId\n ) !== undefined;\n }\n\n value = {\n hugoGeneSymbol,\n oncoKbGeneExist,\n isOncoKbCancerGene,\n usingPublicOncoKbInstance: usingPublicOncoKbInstance\n ? usingPublicOncoKbInstance\n : USE_DEFAULT_PUBLIC_INSTANCE_FOR_ONCOKB,\n civicEntry:\n civicGenes &&\n civicGenes.result &&\n civicVariants &&\n civicVariants.result\n ? getCivicEntry(\n mutation,\n civicGenes.result,\n civicVariants.result\n )\n : undefined,\n civicStatus:\n civicGenes &&\n civicGenes.status &&\n civicVariants &&\n civicVariants.status\n ? getRemoteDataGroupStatus(civicGenes, civicVariants)\n : 'pending',\n hasCivicVariants: true,\n myCancerGenomeLinks: myCancerGenomeData\n ? getMyCancerGenomeLinks(mutation, myCancerGenomeData)\n : [],\n isHotspot:\n hotspotData &&\n hotspotData.result &&\n hotspotData.status === 'complete'\n ? isLinearClusterHotspot(mutation, hotspotData.result)\n : false,\n is3dHotspot:\n hotspotData &&\n hotspotData.result &&\n hotspotData.status === 'complete'\n ? is3dHotspot(mutation, hotspotData.result)\n : false,\n hotspotStatus: hotspotData ? hotspotData.status : 'pending',\n };\n\n // oncoKbData may exist but it might be an instance of Error, in that case we flag the status as error\n if (oncoKbData && oncoKbData.result instanceof Error) {\n value = {\n ...value,\n oncoKbStatus: 'error',\n oncoKbIndicator: undefined,\n };\n } else if (oncoKbGeneExist) {\n // actually, oncoKbData.result shouldn't be an instance of Error in this case (we already check it above),\n // but we need to check it again in order to avoid TS errors/warnings\n\n // Always show oncogenicity icon even when the indicatorMapResult is empty.\n // We want to show an icon for genes that haven't been annotated by OncoKB\n let oncoKbAvailableDataTypes: OncoKbCardDataType[] = [\n OncoKbCardDataType.BIOLOGICAL,\n ];\n if (\n oncoKbData &&\n oncoKbData.result &&\n !(oncoKbData.result instanceof Error) &&\n oncoKbData.status === 'complete'\n ) {\n oncoKbIndicator = getIndicatorData(\n mutation,\n oncoKbData.result,\n resolveTumorType,\n resolveEntrezGeneId\n );\n oncoKbAvailableDataTypes = _.uniq([\n ...oncoKbAvailableDataTypes,\n ...calculateOncoKbAvailableDataType(\n _.values(oncoKbData.result.indicatorMap)\n ),\n ]);\n }\n\n value = {\n ...value,\n oncoKbStatus: oncoKbData ? oncoKbData.status : 'pending',\n oncoKbIndicator,\n oncoKbAvailableDataTypes,\n };\n } else if (oncoKbData && oncoKbData.isPending) {\n value = {\n ...value,\n oncoKbStatus: 'pending',\n oncoKbIndicator: undefined,\n };\n } else {\n value = {\n ...value,\n oncoKbStatus: 'complete',\n oncoKbIndicator: undefined,\n };\n }\n if (memoize) {\n memoized.set(key, value as any);\n }\n } else {\n value = DEFAULT_ANNOTATION_DATA;\n }\n\n return value as IAnnotation;\n}\n\nexport function annotationSortMethod(a: IAnnotation, b: IAnnotation) {\n return defaultArraySortMethod(sortValue(a), sortValue(b));\n}\n\nexport function sortValue(annotation: IAnnotation): number[] {\n return _.flatten([\n oncoKbSortValue(annotation.oncoKbIndicator),\n civicSortValue(annotation.civicEntry),\n myCancerGenomeSortValue(annotation.myCancerGenomeLinks),\n hotspotSortValue(annotation.isHotspot, annotation.is3dHotspot),\n annotation.isOncoKbCancerGene ? 1 : 0,\n ]);\n}\n\nexport function GenericAnnotation(props: GenericAnnotationProps): JSX.Element {\n const {\n annotation,\n enableCivic,\n enableHotspot,\n enableMyCancerGenome,\n enableOncoKb,\n pubMedCache,\n userEmailAddress,\n mergeOncoKbIcons,\n oncoKbContentPadding,\n } = props;\n\n return (\n <span style={{ display: 'flex', minWidth: 100 }}>\n {enableOncoKb && (\n <OncoKB\n usingPublicOncoKbInstance={\n annotation.usingPublicOncoKbInstance\n }\n hugoGeneSymbol={annotation.hugoGeneSymbol}\n geneNotExist={!annotation.oncoKbGeneExist}\n isCancerGene={annotation.isOncoKbCancerGene}\n status={annotation.oncoKbStatus}\n indicator={annotation.oncoKbIndicator}\n availableDataTypes={annotation.oncoKbAvailableDataTypes}\n mergeAnnotationIcons={mergeOncoKbIcons}\n pubMedCache={pubMedCache}\n userEmailAddress={userEmailAddress}\n contentPadding={oncoKbContentPadding}\n />\n )}\n {enableCivic && (\n <Civic\n civicEntry={annotation.civicEntry}\n civicStatus={annotation.civicStatus}\n hasCivicVariants={annotation.hasCivicVariants}\n />\n )}\n {enableMyCancerGenome && (\n <MyCancerGenome linksHTML={annotation.myCancerGenomeLinks} />\n )}\n {enableHotspot && (\n <HotspotAnnotation\n isHotspot={annotation.isHotspot}\n is3dHotspot={annotation.is3dHotspot}\n status={annotation.hotspotStatus}\n />\n )}\n </span>\n );\n}\n\n@observer\nexport default class Annotation extends React.Component<AnnotationProps, {}> {\n public render() {\n const annotation = this.getAnnotationData(this.props);\n\n return <GenericAnnotation {...this.props} annotation={annotation} />;\n }\n\n private getAnnotationData(props: AnnotationProps) {\n const {\n mutation,\n oncoKbCancerGenes,\n hotspotData,\n myCancerGenomeData,\n oncoKbData,\n usingPublicOncoKbInstance,\n resolveEntrezGeneId,\n resolveTumorType,\n civicGenes,\n civicVariants,\n } = props;\n\n return getAnnotationData(\n mutation,\n oncoKbCancerGenes,\n hotspotData,\n myCancerGenomeData,\n oncoKbData,\n usingPublicOncoKbInstance,\n civicGenes,\n civicVariants,\n resolveTumorType,\n resolveEntrezGeneId\n );\n }\n}\n","import { getVariantAnnotation, Mutation, RemoteData } from 'cbioportal-utils';\nimport { Clinvar, VariantAnnotation } from 'genome-nexus-ts-api-client';\n\nexport function getClinvarData(\n mutation: Mutation,\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >\n): Clinvar | undefined {\n const variantAnnotation = getVariantAnnotation(\n mutation,\n indexedVariantAnnotations!.result\n );\n return variantAnnotation?.clinvar?.annotation;\n}\n","import { Clinvar, VariantAnnotation } from 'genome-nexus-ts-api-client';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { defaultSortMethod, Mutation, RemoteData } from 'cbioportal-utils';\nimport ClinvarSummary from '../clinvar/ClinvarSummary';\nimport { getClinvarData } from '../clinvar/ClinvarHelper';\nimport { errorIcon, loaderIcon } from '../StatusHelpers';\n\ntype ClinvarInterpretationProps = {\n mutation: Mutation;\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >;\n};\n\nexport function download(clinvar?: Clinvar): string {\n const clinicalSignificance = clinvar?.clinicalSignificance;\n const conflictingClinicalSignificance =\n clinvar?.conflictingClinicalSignificance;\n if (clinicalSignificance && conflictingClinicalSignificance) {\n return (\n clinicalSignificance + '(' + conflictingClinicalSignificance + ')'\n );\n } else if (clinicalSignificance) {\n return clinicalSignificance;\n } else {\n return '';\n }\n}\n\nexport function sortValue(clinvar?: Clinvar): string | null {\n if (clinvar && clinvar.clinicalSignificance) {\n return clinvar.clinicalSignificance;\n } else {\n return null;\n }\n}\n\nexport function clinvarSortMethod(a: Clinvar, b: Clinvar) {\n return defaultSortMethod(sortValue(a), sortValue(b));\n}\n\n@observer\nexport default class ClinvarInterpretation extends React.Component<\n ClinvarInterpretationProps,\n {}\n> {\n public render() {\n if (this.props.indexedVariantAnnotations) {\n let content;\n const status = this.props.indexedVariantAnnotations.status;\n if (status === 'pending') {\n content = loaderIcon();\n } else if (status === 'error') {\n content = errorIcon('Error fetching Genome Nexus annotation');\n } else {\n const clinvarData = getClinvarData(\n this.props.mutation,\n this.props.indexedVariantAnnotations\n );\n content = <ClinvarSummary clinvar={clinvarData} />;\n }\n return content;\n } else {\n return <div />;\n }\n }\n}\n","import { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport * as React from 'react';\n\nexport type ColumnHeaderProps = {\n headerContent: string | JSX.Element;\n overlay?: JSX.Element;\n className?: string;\n};\n\nclass ColumnHeader extends React.Component<ColumnHeaderProps> {\n public static defaultProps = {\n className: 'text-wrap',\n };\n\n public render() {\n let content = this.props.headerContent;\n\n if (this.props.overlay) {\n content = (\n <DefaultTooltip\n mouseEnterDelay={0.5}\n placement=\"top\"\n overlay={this.props.overlay}\n destroyTooltipOnHide={true}\n >\n {content}\n </DefaultTooltip>\n );\n }\n\n return (\n <span\n className={\n this.props.className || ColumnHeader.defaultProps.className\n }\n >\n {content}\n </span>\n );\n }\n}\n\nexport default ColumnHeader;\n","import { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { getDbsnpRsId } from 'cbioportal-utils';\nimport { MyVariantInfo } from 'genome-nexus-ts-api-client';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nexport type DbsnpIdProps = {\n myVariantInfo?: MyVariantInfo;\n};\n\n@observer\nexport default class DbsnpId extends React.Component<DbsnpIdProps, {}> {\n public render() {\n const rsId = getDbsnpRsId(this.props.myVariantInfo);\n\n if (rsId == null) {\n return (\n <DefaultTooltip\n placement=\"topRight\"\n overlay={<span>Variant has no dbSNP data.</span>}\n >\n <span\n style={{\n height: '100%',\n width: '100%',\n display: 'block',\n overflow: 'hidden',\n }}\n >\n &nbsp;\n </span>\n </DefaultTooltip>\n );\n } else {\n let dbsnpLink = 'https://www.ncbi.nlm.nih.gov/snp/' + rsId;\n return (\n <DefaultTooltip\n placement=\"top\"\n overlay={\n <span>Click to see variant on dbSNP website.</span>\n }\n >\n <span style={{ textAlign: 'right', float: 'right' }}>\n <a href={dbsnpLink} target=\"_blank\">\n {rsId}\n </a>\n </span>\n </DefaultTooltip>\n );\n }\n }\n}\n","import {\n getMyVariantInfoAnnotation,\n getVariantAnnotation,\n Mutation,\n RemoteData,\n} from 'cbioportal-utils';\nimport { MyVariantInfo, VariantAnnotation } from 'genome-nexus-ts-api-client';\nimport * as React from 'react';\n\nimport { errorIcon, loaderIcon } from '../StatusHelpers';\n\nexport type MyVariantInfoProps = {\n mutation?: Mutation;\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >;\n indexedMyVariantInfoAnnotations?: RemoteData<\n { [genomicLocation: string]: MyVariantInfo } | undefined\n >;\n className?: string;\n};\n\nexport function renderMyVariantInfoContent(\n props: MyVariantInfoProps,\n getContent: (\n myVariantInfo?: MyVariantInfo,\n variantAnnotation?: VariantAnnotation\n ) => JSX.Element\n) {\n let content;\n const status = props.indexedMyVariantInfoAnnotations?.status || 'complete';\n const variantAnnotation = props.indexedVariantAnnotations\n ? getVariantAnnotation(\n props.mutation,\n props.indexedVariantAnnotations.result\n )\n : undefined;\n const myVariantInfo = getMyVariantInfoAnnotation(\n props.mutation,\n props.indexedMyVariantInfoAnnotations?.result\n );\n\n if (status === 'pending') {\n content = loaderIcon();\n } else if (status === 'error') {\n content = errorIcon('Error fetching Genome Nexus annotation');\n } else {\n content = getContent(myVariantInfo, variantAnnotation);\n }\n\n return <div className={props.className}>{content}</div>;\n}\n\nexport function getMyVariantInfoData(\n mutation?: Mutation,\n indexedMyVariantInfoAnnotations?: RemoteData<\n { [genomicLocation: string]: MyVariantInfo } | undefined\n >\n) {\n return getMyVariantInfoAnnotation(\n mutation,\n indexedMyVariantInfoAnnotations\n ? indexedMyVariantInfoAnnotations.result\n : undefined\n );\n}\n","import autobind from 'autobind-decorator';\nimport { getDbsnpRsId } from 'cbioportal-utils';\nimport { MyVariantInfo } from 'genome-nexus-ts-api-client';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { defaultSortMethod } from 'cbioportal-utils';\nimport DbsnpId from '../dbsnp/DbsnpId';\nimport {\n MyVariantInfoProps,\n renderMyVariantInfoContent,\n} from './MyVariantInfoHelper';\n\nexport function download(myVariantInfo?: MyVariantInfo): string {\n const value = sortValue(myVariantInfo);\n\n return value ? value.toString() : '';\n}\n\nexport function sortValue(myVariantInfo?: MyVariantInfo): string | null {\n return getDbsnpRsId(myVariantInfo);\n}\n\nexport function dbsnpSortMethod(a: MyVariantInfo, b: MyVariantInfo) {\n return defaultSortMethod(sortValue(a), sortValue(b));\n}\n\n@observer\nexport default class Dbsnp extends React.Component<MyVariantInfoProps, {}> {\n public static defaultProps: Partial<MyVariantInfoProps> = {\n className: 'pull-right mr-1',\n };\n\n public render() {\n return renderMyVariantInfoContent(this.props, this.getContent);\n }\n\n @autobind\n public getContent(myVariantInfo: MyVariantInfo) {\n return <DbsnpId myVariantInfo={myVariantInfo} />;\n }\n}\n","import _ from 'lodash';\n\nimport {\n AlleleCount,\n AlleleFrequency,\n AlleleNumber,\n Gnomad,\n Homozygotes,\n MyVariantInfo,\n VariantAnnotation,\n} from 'genome-nexus-ts-api-client';\nimport { GnomadSummary } from '../model/GnomadSummary';\n\nconst GNOMAD_POPULATION_NAME: { [key: string]: string } = {\n African: 'afr',\n Latino: 'amr',\n Other: 'oth',\n 'European (Non-Finnish)': 'nfe',\n 'European (Finnish)': 'fin',\n 'Ashkenazi Jewish': 'asj',\n 'East Asian': 'eas',\n 'South Asian': 'sas',\n Total: '',\n};\n\nexport enum GnomadTableColumnName {\n population = 'population',\n alleleCount = 'ac',\n alleleNumber = 'an',\n homozygotes = 'hom',\n alleleFrequency = 'af',\n}\n\nexport function calculateGnomadAlleleFrequency(\n count: number | null,\n totalNumber: number | null,\n frequency: number | null\n): number {\n if (frequency !== null) {\n return frequency;\n } else {\n return count && totalNumber && totalNumber !== 0\n ? count / totalNumber\n : 0;\n }\n}\n\nexport function calculateGnomadTableNumber(\n gnomadExome?: number | null,\n gnomadGenome?: number | null\n) {\n let result = 0;\n if (gnomadGenome && gnomadExome) {\n result = gnomadGenome + gnomadExome;\n } else if (gnomadGenome) {\n result = gnomadGenome;\n } else if (gnomadExome) {\n result = gnomadExome;\n }\n return result;\n}\n\nexport function getGnomadUrl(\n annotation?: VariantAnnotation,\n myVariantInfo?: MyVariantInfo\n) {\n let gnomadUrl = '';\n\n if (\n myVariantInfo &&\n (myVariantInfo.gnomadExome || myVariantInfo.gnomadGenome)\n ) {\n // get gnomad link from chrom, location, ref and alt\n gnomadUrl =\n myVariantInfo && myVariantInfo.vcf\n ? generateGnomadUrl(\n annotation?.seq_region_name || null,\n myVariantInfo.vcf.position,\n myVariantInfo.vcf.ref,\n myVariantInfo.vcf.alt\n )\n : '';\n }\n\n return gnomadUrl;\n}\n\nexport function getGnomadDataSortedByFrequency(myVariantInfo?: MyVariantInfo) {\n const gnomadData = getGnomadData(myVariantInfo);\n return gnomadData ? sortGnomadDataByFrequency(gnomadData) : gnomadData;\n}\n\nexport function sortGnomadDataByFrequency(gnomadData: {\n [key: string]: GnomadSummary;\n}) {\n // sort by frequency\n const sorted = _.sortBy(Object.values(gnomadData).slice(0, 8), [\n 'alleleFrequency',\n ]).reverse();\n\n // add the total row at the bottom\n sorted.push(gnomadData['Total']);\n\n return sorted;\n}\n\nexport function setGnomadTableData(\n key: string,\n data: Gnomad,\n result: { [key: string]: GnomadSummary }\n) {\n // Access data by population name and column name in the format of: GnomadTableColumnName_POPULATION_NAME, e.g. \"ac_afr\"\n // If access \"total\" data, the name would be e.g. \"ac\" for alleleCount, \"an\" for alleleNumber\n const alleleCountName: keyof AlleleCount = (GNOMAD_POPULATION_NAME[key]\n ? GnomadTableColumnName.alleleCount + '_' + GNOMAD_POPULATION_NAME[key]\n : GnomadTableColumnName.alleleCount\n ).toString() as keyof AlleleCount;\n const alleleNumberName: keyof AlleleNumber = (GNOMAD_POPULATION_NAME[key]\n ? GnomadTableColumnName.alleleNumber + '_' + GNOMAD_POPULATION_NAME[key]\n : GnomadTableColumnName.alleleNumber\n ).toString() as keyof AlleleNumber;\n const homozygotesName: keyof Homozygotes = (GNOMAD_POPULATION_NAME[key]\n ? GnomadTableColumnName.homozygotes + '_' + GNOMAD_POPULATION_NAME[key]\n : GnomadTableColumnName.homozygotes\n ).toString() as keyof Homozygotes;\n const alleleFrequencyName: keyof AlleleFrequency = (GNOMAD_POPULATION_NAME[\n key\n ]\n ? GnomadTableColumnName.alleleFrequency +\n '_' +\n GNOMAD_POPULATION_NAME[key]\n : GnomadTableColumnName.alleleFrequency\n ).toString() as keyof AlleleFrequency;\n\n result[key] = {\n population: key,\n alleleCount: data.alleleCount[alleleCountName]\n ? data.alleleCount[alleleCountName]\n : 0,\n alleleNumber: data.alleleNumber[alleleNumberName]\n ? data.alleleNumber[alleleNumberName]\n : 0,\n homozygotes: data.homozygotes[homozygotesName]\n ? data.homozygotes[homozygotesName]\n : 0,\n alleleFrequency: calculateGnomadAlleleFrequency(\n data.alleleCount[alleleCountName],\n data.alleleNumber[alleleNumberName],\n data.alleleFrequency[alleleFrequencyName]\n ),\n } as GnomadSummary;\n}\n\nexport function getGnomadData(myVariantInfo?: MyVariantInfo) {\n let gnomadData: { [key: string]: GnomadSummary } | undefined;\n\n // check if gnomad data is valid\n if (\n myVariantInfo &&\n (myVariantInfo.gnomadExome || myVariantInfo.gnomadGenome)\n ) {\n const gnomadExome: { [key: string]: GnomadSummary } = {};\n const gnomadGenome: { [key: string]: GnomadSummary } = {};\n const combinedGnomad: { [key: string]: GnomadSummary } = {};\n // If gnomadExome data exists, set gnomadExome\n if (myVariantInfo.gnomadExome) {\n Object.keys(GNOMAD_POPULATION_NAME).forEach(key =>\n setGnomadTableData(key, myVariantInfo.gnomadExome, gnomadExome)\n );\n gnomadData = gnomadExome;\n }\n\n // If gnomadGenome data exists, set gnomadGenome\n if (myVariantInfo.gnomadGenome) {\n Object.keys(GNOMAD_POPULATION_NAME).forEach(key =>\n setGnomadTableData(\n key,\n myVariantInfo.gnomadGenome,\n gnomadGenome\n )\n );\n gnomadData = gnomadGenome;\n }\n\n // If both gnomadExome and gnomadGenome exist, combine gnomadExome and gnomadGenome together, set to combinedGnomad\n if (myVariantInfo.gnomadExome && myVariantInfo.gnomadGenome) {\n Object.keys(GNOMAD_POPULATION_NAME).forEach(key => {\n combinedGnomad[key] = {\n population: key,\n alleleCount: calculateGnomadTableNumber(\n gnomadExome[key]?.alleleCount,\n gnomadGenome[key]?.alleleCount\n ),\n alleleNumber: calculateGnomadTableNumber(\n gnomadExome[key]?.alleleNumber,\n gnomadGenome[key]?.alleleNumber\n ),\n homozygotes: calculateGnomadTableNumber(\n gnomadExome[key]?.homozygotes,\n gnomadGenome[key]?.homozygotes\n ),\n alleleFrequency: calculateGnomadAlleleFrequency(\n calculateGnomadTableNumber(\n gnomadExome[key]?.alleleCount,\n gnomadGenome[key]?.alleleCount\n ),\n calculateGnomadTableNumber(\n gnomadExome[key]?.alleleNumber,\n gnomadGenome[key]?.alleleNumber\n ),\n null\n ),\n } as GnomadSummary;\n });\n gnomadData = combinedGnomad;\n }\n }\n // If only one type of gnomad(Exome or Genome) exists, show result from this type. If both types exist, show combined result.\n return gnomadData;\n}\n\nexport function generateGnomadUrl(\n chromosome: string | null,\n position: string | null,\n reference: string | null,\n variant: string | null\n) {\n if (chromosome && position && reference && variant) {\n return `https://gnomad.broadinstitute.org/variant/${chromosome}-${position}-${reference}-${variant}`;\n } else {\n return 'https://gnomad.broadinstitute.org/';\n }\n}\n","import autobind from 'autobind-decorator';\nimport * as React from 'react';\nimport ReactTable, { RowInfo } from 'react-table';\n\nimport { GnomadSummary } from '../../model/GnomadSummary';\nimport { GnomadTableColumnName } from '../../util/GnomadUtils';\nimport ColumnHeader from '../column/ColumnHeader';\n\nimport './gnomadFrequencyTable.scss';\n\nexport interface IGnomadFrequencyTableProps {\n data: GnomadSummary[];\n gnomadUrl: string;\n hideDisclaimer?: boolean;\n}\n\nexport function frequencyOutput(frequency: number) {\n if (frequency === 0) {\n return <span>0</span>;\n } else {\n // show frequency as number with 4 significant digits\n return (\n <span>\n {frequency.toLocaleString(undefined, {\n maximumSignificantDigits: 2,\n minimumSignificantDigits: 2,\n })}\n </span>\n );\n }\n}\n\nconst headerClassName = 'text-wrap font-weight-bold';\n\nconst HEADERS = {\n [GnomadTableColumnName.population]: (\n <ColumnHeader\n className={headerClassName}\n headerContent={<span>Population</span>}\n />\n ),\n [GnomadTableColumnName.alleleCount]: (\n <ColumnHeader\n className={headerClassName}\n headerContent={<span>Allele Count</span>}\n overlay={<span>Number of individuals with this allele</span>}\n />\n ),\n [GnomadTableColumnName.alleleNumber]: (\n <ColumnHeader\n className={headerClassName}\n headerContent={<span>Allele Number</span>}\n overlay={\n <span>\n Number of times any allele has been observed at this\n position in the population\n </span>\n }\n />\n ),\n [GnomadTableColumnName.homozygotes]: (\n <ColumnHeader\n className={headerClassName}\n headerContent={<span>Number of Homozygotes</span>}\n overlay={\n <span>\n Number of individuals carrying this allele in both copies\n </span>\n }\n />\n ),\n [GnomadTableColumnName.alleleFrequency]: (\n <ColumnHeader\n className={headerClassName}\n headerContent={<span>Allele Frequency</span>}\n overlay={<span>Proportion of the population with this allele</span>}\n />\n ),\n};\n\nfunction renderNumericalValue(column: any) {\n return <span className=\"pull-right mr-1\">{column.value}</span>;\n}\n\nconst Disclaimer: React.FunctionComponent<{ gnomadUrl: string }> = props => {\n const myVariantInfoLink = (\n <a href=\"https://myvariant.info/\" target=\"_blank\">\n myvariant.info\n </a>\n );\n\n const genomeNexusLink = (\n <a href=\"https://www.genomenexus.org/\" target=\"_blank\">\n genomenexus.org\n </a>\n );\n\n const gnomadLink = (\n <a href={props.gnomadUrl} target=\"_blank\">\n gnomAD\n </a>\n );\n\n return (\n <div\n style={{\n fontSize: 'x-small',\n textAlign: 'center',\n paddingTop: 5,\n }}\n >\n Source: {genomeNexusLink}, which serves {myVariantInfoLink}'s gnomAD\n data.\n <br />\n Latest {gnomadLink} data may differ.\n </div>\n );\n};\n\nexport default class GnomadFrequencyTable extends React.Component<\n IGnomadFrequencyTableProps,\n {}\n> {\n public render() {\n return (\n <div className=\"gnomad-frequency-table\" data-test=\"gnomad-table\">\n <ReactTable\n data={this.props.data}\n showPagination={false}\n pageSize={this.props.data.length}\n sortable={false}\n className=\"-striped -highlight\"\n getTrProps={this.getTrProps}\n columns={[\n {\n id: GnomadTableColumnName.population,\n accessor: 'population',\n Cell: renderNumericalValue,\n Header: HEADERS[GnomadTableColumnName.population],\n width: 160,\n },\n {\n id: GnomadTableColumnName.alleleCount,\n accessor: 'alleleCount',\n Cell: renderNumericalValue,\n Header: HEADERS[GnomadTableColumnName.alleleCount],\n width: 55,\n },\n {\n id: GnomadTableColumnName.alleleNumber,\n accessor: 'alleleNumber',\n Cell: renderNumericalValue,\n Header: HEADERS[GnomadTableColumnName.alleleNumber],\n width: 80,\n },\n {\n id: GnomadTableColumnName.homozygotes,\n Cell: renderNumericalValue,\n accessor: 'homozygotes',\n Header: HEADERS[GnomadTableColumnName.homozygotes],\n width: 100,\n },\n {\n id: GnomadTableColumnName.alleleFrequency,\n accessor: 'alleleFrequency',\n Header:\n HEADERS[GnomadTableColumnName.alleleFrequency],\n Cell: (column: any) => (\n <span\n className=\"pull-right mr-1\"\n data-test=\"allele-frequency-data\"\n >\n {frequencyOutput(column.value)}\n </span>\n ),\n width: 120,\n },\n ]}\n />\n {!this.props.hideDisclaimer && (\n <Disclaimer gnomadUrl={this.props.gnomadUrl} />\n )}\n </div>\n );\n }\n\n @autobind\n protected getTrProps(state: any, row?: RowInfo) {\n return {\n style: {\n fontWeight:\n state && row && row.index === this.props.data.length - 1\n ? 'bold'\n : undefined,\n },\n };\n }\n}\n","import { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { MyVariantInfo, VariantAnnotation } from 'genome-nexus-ts-api-client';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { GnomadSummary } from '../../model/GnomadSummary';\nimport GnomadFrequencyTable from './GnomadFrequencyTable';\nimport {\n getGnomadData,\n getGnomadDataSortedByFrequency,\n getGnomadUrl,\n sortGnomadDataByFrequency,\n} from '../../util/GnomadUtils';\n\nexport type GnomadFrequencyProps = {\n myVariantInfo?: MyVariantInfo;\n annotation?: VariantAnnotation;\n};\n\nexport const GnomadFrequencyValue: React.FunctionComponent<{\n gnomadData?: { [key: string]: GnomadSummary };\n}> = props => {\n if (props.gnomadData) {\n // The column will show the total frequency\n // Column will show 0 if the total frequency is 0, still has the tooltip to show the gnomad table (since gnomad data is still available)\n if (props.gnomadData['Total'].alleleFrequency === 0) {\n return <span>0</span>;\n } else {\n // show frequency as number with 4 significant digits\n return (\n <span>\n {props.gnomadData['Total'].alleleFrequency.toLocaleString(\n undefined,\n {\n maximumSignificantDigits: 2,\n minimumSignificantDigits: 2,\n }\n )}\n </span>\n );\n }\n } else {\n return (\n <span\n style={{\n height: '100%',\n width: '100%',\n display: 'block',\n overflow: 'hidden',\n }}\n >\n &nbsp;\n </span>\n );\n }\n};\n\nexport const GnomadFrequencyBreakdown: React.FunctionComponent<GnomadFrequencyProps & {\n gnomadData?: { [key: string]: GnomadSummary };\n hideDisclaimer?: boolean;\n}> = props => {\n const myVariantInfo = props.myVariantInfo;\n let content = <span>Variant has no data in gnomAD.</span>;\n\n // Checking if gnomad data is valid\n if (\n myVariantInfo &&\n (myVariantInfo.gnomadExome || myVariantInfo.gnomadGenome)\n ) {\n const gnomadUrl = getGnomadUrl(props.annotation, myVariantInfo);\n const sorted = props.gnomadData\n ? sortGnomadDataByFrequency(props.gnomadData)\n : getGnomadDataSortedByFrequency(myVariantInfo);\n\n if (sorted) {\n content = (\n <GnomadFrequencyTable\n data={sorted}\n gnomadUrl={gnomadUrl}\n hideDisclaimer={props.hideDisclaimer}\n />\n );\n }\n }\n\n return content;\n};\n\n@observer\nexport default class GnomadFrequency extends React.Component<\n GnomadFrequencyProps,\n {}\n> {\n public render() {\n const gnomadData = getGnomadData(this.props.myVariantInfo);\n\n return (\n <DefaultTooltip\n overlay={() => (\n <GnomadFrequencyBreakdown\n {...this.props}\n gnomadData={gnomadData}\n />\n )}\n placement=\"topRight\"\n trigger={['hover', 'focus']}\n destroyTooltipOnHide={true}\n >\n <span>\n <GnomadFrequencyValue gnomadData={gnomadData} />\n </span>\n </DefaultTooltip>\n );\n }\n}\n","import autobind from 'autobind-decorator';\nimport { MyVariantInfo, VariantAnnotation } from 'genome-nexus-ts-api-client';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { defaultSortMethod } from 'cbioportal-utils';\n\nimport { calculateGnomadAlleleFrequency } from '../../util/GnomadUtils';\nimport GnomadFrequency from '../gnomad/GnomadFrequency';\nimport {\n MyVariantInfoProps,\n renderMyVariantInfoContent,\n} from './MyVariantInfoHelper';\n\nexport function download(myVariantInfo?: MyVariantInfo): string {\n const value = sortValue(myVariantInfo);\n\n return value ? value.toString() : '';\n}\n\nexport function sortValue(myVariantInfo?: MyVariantInfo): number | null {\n // If has both gnomadExome and gnomadGenome, sort by the total frequency\n if (\n myVariantInfo &&\n myVariantInfo.gnomadExome &&\n myVariantInfo.gnomadGenome\n ) {\n return calculateGnomadAlleleFrequency(\n myVariantInfo.gnomadExome.alleleCount.ac +\n myVariantInfo.gnomadGenome.alleleCount.ac,\n myVariantInfo.gnomadExome.alleleNumber.an +\n myVariantInfo.gnomadGenome.alleleNumber.an,\n null\n );\n }\n\n // If only has gnomadExome, sort by gnomadExome frequency\n else if (myVariantInfo && myVariantInfo.gnomadExome) {\n return calculateGnomadAlleleFrequency(\n myVariantInfo.gnomadExome.alleleCount.ac,\n myVariantInfo.gnomadExome.alleleNumber.an,\n myVariantInfo.gnomadExome.alleleFrequency.af\n );\n }\n\n // If only has gnomadGenome, sort by gnomadGenome frequency\n else if (myVariantInfo && myVariantInfo.gnomadGenome) {\n return calculateGnomadAlleleFrequency(\n myVariantInfo.gnomadGenome.alleleCount.ac,\n myVariantInfo.gnomadGenome.alleleNumber.an,\n myVariantInfo.gnomadGenome.alleleFrequency.af\n );\n }\n\n // If myVariantInfo is null, return null\n return null;\n}\n\nexport function gnomadSortMethod(a: MyVariantInfo, b: MyVariantInfo) {\n return defaultSortMethod(sortValue(a), sortValue(b));\n}\n\n@observer\nexport default class Gnomad extends React.Component<MyVariantInfoProps, {}> {\n public static defaultProps: Partial<MyVariantInfoProps> = {\n className: 'pull-right mr-1',\n };\n\n public render() {\n return renderMyVariantInfoContent(this.props, this.getContent);\n }\n\n @autobind\n public getContent(\n myVariantInfo: MyVariantInfo,\n variantAnnotation?: VariantAnnotation\n ) {\n return (\n <GnomadFrequency\n myVariantInfo={myVariantInfo}\n annotation={variantAnnotation}\n />\n );\n }\n}\n","import { getVariantAnnotation, Mutation, RemoteData } from 'cbioportal-utils';\nimport { VariantAnnotation } from 'genome-nexus-ts-api-client';\n\nexport function getAnnotation(\n mutation?: Mutation,\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >\n) {\n return indexedVariantAnnotations\n ? getVariantAnnotation(mutation, indexedVariantAnnotations.result)\n : undefined;\n}\n","import { VariantAnnotation } from 'genome-nexus-ts-api-client';\nimport {\n generateHgvsgByMutation,\n Mutation,\n RemoteData,\n} from 'cbioportal-utils';\nimport { getAnnotation } from './VariantAnnotationHelper';\n\nexport function getHgvsgColumnData(mutation: Mutation): string | null {\n return generateHgvsgByMutation(mutation) || null;\n}\n\nexport function getHgvscColumnData(\n mutation: Mutation,\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >,\n selectedTranscriptId?: string\n): string | null {\n const variantAnnotation = getAnnotation(\n mutation,\n indexedVariantAnnotations\n );\n\n if (!variantAnnotation) {\n return null;\n }\n\n let data: string | null =\n variantAnnotation.annotation_summary?.transcriptConsequenceSummary\n ?.hgvsc || null;\n\n // return data from transcriptConsequenceSummaries if transcript dropdown is enabled\n if (selectedTranscriptId) {\n const transcriptConsequenceSummary = variantAnnotation.annotation_summary?.transcriptConsequenceSummaries?.find(\n transcriptConsequenceSummary =>\n transcriptConsequenceSummary.transcriptId ===\n selectedTranscriptId\n );\n data = transcriptConsequenceSummary\n ? transcriptConsequenceSummary.hgvsc\n : null;\n }\n\n return data;\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { defaultSortMethod, Mutation, RemoteData } from 'cbioportal-utils';\nimport { VariantAnnotation } from 'genome-nexus-ts-api-client';\n\nimport { getHgvscColumnData } from './HgvsHelper';\n\ntype HgvscProps = {\n mutation: Mutation;\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >;\n selectedTranscriptId?: string;\n};\n\nexport function download(hgvsc?: string | null): string {\n return hgvsc || '';\n}\n\nexport function sortValue(hgvsc?: string | null): number | null {\n return hgvsc ? parseInt(hgvsc.split('c.')[1]) : null;\n}\n\nexport function hgvscSortMethod(a: string | null, b: string | null) {\n return defaultSortMethod(sortValue(a), sortValue(b));\n}\n\n@observer\nexport default class Hgvsc extends React.Component<HgvscProps, {}> {\n get hgvsc() {\n return getHgvscColumnData(\n this.props.mutation,\n this.props.indexedVariantAnnotations,\n this.props.selectedTranscriptId\n );\n }\n\n public render() {\n return <div>{this.hgvsc}</div>;\n }\n}\n","import { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { generateHgvsgByMutation, Mutation } from 'cbioportal-utils';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { defaultSortMethod } from 'cbioportal-utils';\n\nimport hgvsgStyles from './hgvsg.module.scss';\n\ntype HgvsgProps = {\n mutation: Mutation;\n constructHref?: (hgvsg: string) => string;\n constructLink?: (\n hgvsg: string,\n content: JSX.Element,\n href?: string\n ) => JSX.Element;\n mainContent?: (hgvsg?: string) => JSX.Element;\n tooltipContent?: (hgvsg?: string) => JSX.Element;\n disableTooltip?: boolean;\n};\n\nexport function hgvsgSortMethod(a: string, b: string) {\n return defaultSortMethod(a, b);\n}\n\n@observer\nexport default class Hgvsg extends React.Component<HgvsgProps, {}> {\n public static defaultProps: Partial<HgvsgProps> = {\n constructLink: (hgvsg: string, content: JSX.Element, href?: string) => (\n <a\n href={href || `https:/www.genomenexus.org/variant/${hgvsg}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {content}\n </a>\n ),\n mainContent: (hgvsg?: string) => (\n <>\n {hgvsg}&nbsp;\n <i className=\"fa fa-external-link\" />\n </>\n ),\n tooltipContent: () => (\n <>\n Genome Nexus\n <div className={hgvsgStyles['genome-nexus-logo']} />\n </>\n ),\n };\n\n get hgvsg() {\n return generateHgvsgByMutation(this.props.mutation);\n }\n\n public render() {\n const constructLink = this.props.constructLink!;\n const mainContent = this.props.mainContent!;\n const tooltipContent = this.props.tooltipContent!;\n\n if (!this.hgvsg) {\n return <span />;\n } else {\n const href = this.props.constructHref\n ? this.props.constructHref(this.hgvsg)\n : undefined;\n\n const content = (\n <span className={hgvsgStyles['hgvsg-data']}>\n {constructLink(this.hgvsg, mainContent(this.hgvsg), href)}\n </span>\n );\n\n return this.props.disableTooltip ? (\n content\n ) : (\n <DefaultTooltip\n placement=\"topLeft\"\n overlay={\n <div>\n {this.hgvsg}\n <br />\n Click to see this variant on &nbsp;\n {constructLink(\n this.hgvsg,\n tooltipContent(this.hgvsg)\n )}\n </div>\n }\n >\n {content}\n </DefaultTooltip>\n );\n }\n }\n}\n","import { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { Mutation } from 'cbioportal-utils';\nimport * as React from 'react';\n\nimport styles from './mutationStatus.module.scss';\n\ntype MutationStatusProps = {\n value?: string;\n mutation?: Mutation;\n displayValueMap?: { [mutationStatus: string]: string };\n enableTooltip?: boolean;\n styleMap?: { [mutationStatus: string]: React.CSSProperties };\n};\n\nexport default class MutationStatus extends React.Component<\n MutationStatusProps,\n {}\n> {\n public static defaultProps: Partial<MutationStatusProps> = {\n enableTooltip: true,\n };\n\n public render() {\n const value =\n this.props.value ||\n (this.props.mutation\n ? this.props.mutation.mutationStatus\n : undefined);\n let content: JSX.Element;\n\n if (value) {\n if (value.toLowerCase().includes('somatic')) {\n content = (\n <span\n className={styles.somatic}\n style={\n this.props.styleMap\n ? this.props.styleMap[value.toLowerCase()]\n : undefined\n }\n >\n {(this.props.displayValueMap &&\n (this.props.displayValueMap[value.toLowerCase()] ||\n this.props.displayValueMap['somatic'])) ||\n 'Somatic'}\n </span>\n );\n } else if (value.toLowerCase().includes('germline')) {\n content = (\n <span\n className={styles.germline}\n style={\n this.props.styleMap\n ? this.props.styleMap[value.toLowerCase()]\n : undefined\n }\n >\n {(this.props.displayValueMap &&\n (this.props.displayValueMap[value.toLowerCase()] ||\n this.props.displayValueMap['germline'])) ||\n 'Germline'}\n </span>\n );\n } else {\n content = <span className={styles.unknown}>{value}</span>;\n }\n } else {\n content = <span />;\n }\n\n if (this.props.enableTooltip) {\n content = (\n <DefaultTooltip\n overlay={<span>{value}</span>}\n placement=\"right\"\n >\n {content}\n </DefaultTooltip>\n );\n }\n\n return content;\n }\n}\n","import { calcProteinChangeSortValue, Mutation } from 'cbioportal-utils';\nimport * as React from 'react';\n\nimport { defaultSortMethod } from 'cbioportal-utils';\nimport styles from './proteinChange.module.scss';\n\ntype ProteinChangeProps = {\n mutation: Mutation;\n enableMutationStatusIndicator?: boolean;\n};\n\nexport function proteinChangeSortMethod(a: string, b: string) {\n return defaultSortMethod(\n a ? calcProteinChangeSortValue(a) : null,\n b ? calcProteinChangeSortValue(b) : null\n );\n}\n\nexport default class ProteinChange extends React.Component<\n ProteinChangeProps,\n {}\n> {\n public static defaultProps: Partial<ProteinChangeProps> = {\n enableMutationStatusIndicator: true,\n };\n\n public render() {\n // use text as display value\n const mutation = this.props.mutation;\n const proteinChange = mutation.proteinChange;\n const mutationStatus = mutation.mutationStatus;\n\n // TODO TruncatedText\n // let content = (\n // <TruncatedText\n // text={proteinChange}\n // tooltip={<span>{proteinChange}</span>}\n // className={styles.proteinChange}\n // maxLength={40}\n // />\n // );\n\n let content = (\n <span className={styles.proteinChange}>{proteinChange}</span>\n );\n\n // add a germline indicator next to protein change if it is a germline mutation!\n if (\n this.props.enableMutationStatusIndicator &&\n mutationStatus &&\n mutationStatus.toLowerCase().includes('germline')\n ) {\n content = (\n <React.Fragment>\n {content}\n <span className={styles.germline}>Germline</span>\n </React.Fragment>\n );\n }\n\n return content;\n }\n}\n","import * as React from 'react';\nimport 'rc-tooltip/assets/bootstrap_white.css';\nimport {\n extendMutations,\n getVariantAnnotation,\n IExtendedSignalMutation,\n Mutation,\n RemoteData,\n formatNumberValueInSignificantDigits,\n defaultSortMethod,\n generateTumorTypeDecomposition,\n Pathogenicity,\n} from 'cbioportal-utils';\nimport { VariantAnnotation } from 'genome-nexus-ts-api-client';\nimport {\n MutationTumorTypeFrequencyTable,\n FrequencyTableColumnEnum,\n DefaultTooltip,\n FREQUENCY_COLUMNS_DEFINITION,\n} from 'cbioportal-frontend-commons';\nimport { observer } from 'mobx-react';\nimport { errorIcon, loaderIcon } from '../StatusHelpers';\ntype SignalProps = {\n mutation: Mutation;\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >;\n mutationType?: Pathogenicity;\n};\n\ntype SignalValueProps = SignalProps & {\n significantDigits?: number;\n};\n\nexport function getSignalData(\n mutation: Mutation,\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >,\n mutationType?: Pathogenicity // mutationType could be \"germline\", \"somatic\", or \"undefined\" which means both\n): IExtendedSignalMutation[] {\n let signalData: IExtendedSignalMutation[] = [];\n const variantAnnotation = indexedVariantAnnotations\n ? getVariantAnnotation(mutation, indexedVariantAnnotations.result)\n : undefined;\n if (\n variantAnnotation &&\n variantAnnotation.signalAnnotation &&\n variantAnnotation.signalAnnotation.annotation &&\n variantAnnotation.signalAnnotation.annotation.length > 0\n ) {\n // if mutation is somatic OR germline, get annotation depending on mutationType\n if (variantAnnotation.signalAnnotation.annotation.length === 1) {\n if (\n (mutationType === Pathogenicity.GERMLINE &&\n variantAnnotation.signalAnnotation.annotation[0].mutationStatus.includes(\n 'germline'\n )) ||\n (mutationType === Pathogenicity.SOMATIC &&\n variantAnnotation.signalAnnotation.annotation[0].mutationStatus.includes(\n 'somatic'\n ))\n ) {\n signalData = extendMutations([\n variantAnnotation.signalAnnotation.annotation[0],\n ]);\n }\n }\n // if mutation is both somatic AND germline, get annotation for both or get one of them depending on mutationType\n else {\n // if mutationType is undefined, get annotation for both somatic and germline\n if (mutationType === undefined) {\n signalData = extendMutations(\n variantAnnotation.signalAnnotation.annotation\n );\n }\n // if mutationType is defined, get annotation depending on mutationType\n else {\n variantAnnotation.signalAnnotation.annotation.forEach(\n annotation => {\n if (\n mutationType === Pathogenicity.GERMLINE &&\n annotation.mutationStatus.includes('germline')\n ) {\n signalData = extendMutations([annotation]);\n } else if (\n mutationType === Pathogenicity.SOMATIC &&\n annotation.mutationStatus.includes('somatic')\n ) {\n signalData = extendMutations([annotation]);\n }\n }\n );\n }\n }\n }\n return signalData;\n}\nexport function signalSortMethod(\n a: IExtendedSignalMutation,\n b: IExtendedSignalMutation\n) {\n return defaultSortMethod(getSortValue(a), getSortValue(b));\n}\nexport function getSortValue(\n signalData: IExtendedSignalMutation\n): number | null {\n return signalData ? signalData.germlineFrequency || null : null;\n}\n\nexport function download(\n signalData: IExtendedSignalMutation,\n mutationType?: Pathogenicity\n): string {\n return signalData && signalData.germlineFrequency !== null\n ? `${formatNumberValueInSignificantDigits(\n signalData.germlineFrequency,\n 2\n )}`\n : '';\n}\n\n// Get germline OR somatic frequency value\nexport function getSingleSignalValue(\n mutation: Mutation,\n mutationType: Pathogenicity,\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >,\n significantDigits?: number\n) {\n const signalData = getSignalData(\n mutation,\n indexedVariantAnnotations,\n mutationType\n );\n if (\n signalData &&\n signalData.length === 1 &&\n signalData[0].tumorTypeDecomposition\n ) {\n return formatNumberValueInSignificantDigits(\n signalData[0].germlineFrequency || signalData[0].somaticFrequency,\n significantDigits || 2\n );\n } else {\n return null;\n }\n}\n\nexport const SignalTable: React.FunctionComponent<SignalValueProps> = props => {\n // signal data should be either germline or somatic, so should be only one element\n const signalData = getSignalData(\n props.mutation,\n props.indexedVariantAnnotations,\n props.mutationType\n )[0];\n if (\n getSingleSignalValue(\n props.mutation,\n props.mutationType || Pathogenicity.GERMLINE,\n props.indexedVariantAnnotations\n ) !== null\n ) {\n return (\n <MutationTumorTypeFrequencyTable\n data={generateTumorTypeDecomposition(\n signalData,\n signalData.countsByTumorType,\n signalData.biallelicCountsByTumorType,\n signalData.qcPassCountsByTumorType,\n signalData.statsByTumorType\n )}\n columns={[\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.TUMOR_TYPE\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.MUTATION_STATUS\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.SAMPLE_COUNT\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.VARIANT_COUNT\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.PREVALENCE_FREQUENCY\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.BIALLELIC_RATIO\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.MEDIAN_AGE_AT_DX\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.MEDIAN_TMB\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.MSI_SCORE\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.MEDIAN_HRD_LST\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.MEDIAN_HRD_NTELOMERIC_AI\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.MEDIAN_HRD_FRACTION_LOH\n ],\n ]}\n />\n );\n } else {\n return null;\n }\n};\n\n@observer\nexport default class Signal extends React.Component<SignalProps, {}> {\n public render() {\n if (this.props.indexedVariantAnnotations) {\n let content;\n const status = this.props.indexedVariantAnnotations.status;\n if (status === 'pending') {\n content = loaderIcon();\n } else if (status === 'error') {\n content = errorIcon('Error fetching Genome Nexus annotation');\n } else {\n content = <div />;\n const signalValue = getSingleSignalValue(\n this.props.mutation,\n this.props.mutationType || Pathogenicity.GERMLINE,\n this.props.indexedVariantAnnotations\n );\n if (signalValue !== null) {\n content = (\n <DefaultTooltip\n placement=\"top\"\n overlayStyle={{\n width: 800,\n }}\n overlay={\n <SignalTable\n mutation={this.props.mutation}\n indexedVariantAnnotations={\n this.props.indexedVariantAnnotations\n }\n mutationType={this.props.mutationType}\n />\n }\n >\n <span>{signalValue}</span>\n </DefaultTooltip>\n );\n }\n }\n\n return content;\n } else {\n return <div />;\n }\n }\n}\n","import { DataFilter } from '../model/DataFilter';\n\nexport function handleOptionSelect(\n selectedValues: Array<{ value: string }>,\n allValues: string[],\n onSelect?: (\n selectedOptionIds: string[],\n allValuesSelected?: boolean\n ) => void\n) {\n if (onSelect) {\n onSelect(\n selectedValues.map(o => o.value),\n allValues.length === selectedValues.length\n );\n }\n}\n\nexport function getAllOptionValues(options?: { value: string }[]) {\n return (options || []).map(option => option.value);\n}\n\nexport function getSelectedOptionValues(\n allValues: string[],\n filter?: DataFilter<string>\n) {\n return allValues\n .filter(\n value =>\n !filter ||\n filter.values.find(\n filterValue =>\n value.toLowerCase() === filterValue.toLowerCase()\n )\n )\n .map(value => ({ value }));\n}\n","import { CheckedSelect, Option } from 'cbioportal-frontend-commons';\nimport classNames from 'classnames';\nimport { action, computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { components } from 'react-select';\n\nimport { DataFilter } from '../../model/DataFilter';\nimport {\n getAllOptionValues,\n getSelectedOptionValues,\n handleOptionSelect,\n} from '../../util/SelectorUtils';\n\nexport type DropdownSelectorProps = {\n name?: string;\n placeholder?: string;\n onSelect?: (\n selectedOptionIds: string[],\n allValuesSelected?: boolean\n ) => void;\n showControls?: boolean;\n showNumberOfSelectedValues?: boolean;\n selectionIndicatorClassNames?: {\n base: string;\n allSelected: string;\n partiallySelected: string;\n };\n filter?: DataFilter<string>;\n options?: { label?: string | JSX.Element; value: string }[];\n};\n\nconst SelectionIndicator: React.FunctionComponent<{\n allValues: string[];\n selectedValues: { value: string }[];\n selectionIndicatorClassNames: string;\n}> = observer(props => {\n return (\n <div\n style={{\n marginRight: 5,\n marginTop: 'auto',\n marginBottom: 'auto',\n }}\n className={props.selectionIndicatorClassNames}\n >\n {props.selectedValues.length}/{props.allValues.length}\n </div>\n );\n});\n\n@observer\nexport class DropdownSelector extends React.Component<\n DropdownSelectorProps,\n {}\n> {\n public static defaultProps: Partial<DropdownSelectorProps> = {\n showNumberOfSelectedValues: true,\n selectionIndicatorClassNames: {\n base: 'badge',\n allSelected: 'badge-light',\n partiallySelected: 'badge-warning',\n },\n };\n\n constructor(props: DropdownSelectorProps) {\n super(props);\n makeObservable(this);\n }\n\n @computed\n public get allValues(): string[] {\n return getAllOptionValues(this.props.options);\n }\n\n @computed\n public get selectedValues(): { value: string }[] {\n return getSelectedOptionValues(this.allValues, this.props.filter);\n }\n\n @computed\n public get options(): Option[] {\n return (this.props.options || []).map(option => ({\n label: <span>{option.label || option.value}</span>,\n value: option.value,\n }));\n }\n\n @computed\n public get selectionIndicatorClassNames(): string {\n const allValuesSelected =\n this.allValues.length === this.selectedValues.length;\n const classes = this.props.selectionIndicatorClassNames!;\n\n return classNames(classes.base, {\n [classes.allSelected]: allValuesSelected,\n [classes.partiallySelected]: !allValuesSelected,\n });\n }\n\n @computed\n public get components() {\n return this.props.showNumberOfSelectedValues\n ? {\n IndicatorsContainer: this.indicatorsContainer,\n }\n : undefined;\n }\n\n public render() {\n return (\n <CheckedSelect\n name={this.props.name}\n placeholder={this.props.placeholder}\n reactSelectComponents={this.components}\n onChange={this.onChange}\n options={this.options}\n value={this.selectedValues}\n showControls={this.props.showControls}\n />\n );\n }\n\n protected indicatorsContainer = (props: any) => {\n return (\n <div style={{ display: 'flex' }}>\n <SelectionIndicator\n allValues={this.allValues}\n selectedValues={this.selectedValues}\n selectionIndicatorClassNames={\n this.selectionIndicatorClassNames\n }\n />\n <components.IndicatorsContainer {...props} />\n </div>\n );\n };\n\n @action.bound\n private onChange(values: Array<{ value: string }>) {\n handleOptionSelect(values, this.allValues, this.props.onSelect);\n }\n}\n\nexport default DropdownSelector;\n","import * as React from 'react';\nimport { CSSProperties } from 'react';\n\nexport type BadgeLabelProps = {\n label: JSX.Element | string;\n badgeContent?: number | string;\n badgeStyleOverride?: CSSProperties;\n badgeClassName?: string;\n badgeFirst?: boolean;\n};\n\nexport const DEFAULT_BADGE_STYLE = {\n color: '#FFF',\n backgroundColor: '#000',\n borderStyle: 'solid',\n borderWidth: 'thin',\n};\n\nexport class BadgeLabel extends React.Component<BadgeLabelProps, {}> {\n public static defaultProps: Partial<BadgeLabelProps> = {\n badgeClassName: 'badge',\n badgeFirst: false,\n };\n\n protected get badge(): JSX.Element {\n return (\n <span\n style={\n this.props.badgeFirst\n ? { marginRight: 5 }\n : { marginLeft: 5 }\n }\n >\n <span\n className={this.props.badgeClassName}\n style={{\n ...DEFAULT_BADGE_STYLE,\n ...this.props.badgeStyleOverride,\n }}\n >\n {this.props.badgeContent}\n </span>\n </span>\n );\n }\n\n protected get badgeFirst(): JSX.Element {\n return (\n <React.Fragment>\n {this.badge}\n {this.props.label}\n </React.Fragment>\n );\n }\n\n protected get badgeLast(): JSX.Element {\n return (\n <React.Fragment>\n {this.props.label}\n {this.badge}\n </React.Fragment>\n );\n }\n\n public render(): JSX.Element {\n return this.props.badgeFirst ? this.badgeFirst : this.badgeLast;\n }\n}\n\nexport default BadgeLabel;\n","import autobind from 'autobind-decorator';\nimport {\n CheckBoxType,\n Checklist,\n getSelectedValuesMap,\n Option,\n} from 'cbioportal-frontend-commons';\nimport _ from 'lodash';\nimport { action, computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { CSSProperties } from 'react';\n\nimport { DataFilter } from '../../model/DataFilter';\nimport {\n getAllOptionValues,\n getSelectedOptionValues,\n handleOptionSelect,\n} from '../../util/SelectorUtils';\nimport { BadgeLabel, DEFAULT_BADGE_STYLE } from './BadgeLabel';\n\nexport type BadgeSelectorOption = {\n value: string;\n label?: string | JSX.Element;\n badgeContent?: number | string;\n badgeStyleOverride?: CSSProperties;\n badgeStyleSelectedOverride?: CSSProperties;\n};\n\nexport type BadgeSelectorProps = {\n name?: string;\n placeholder?: string;\n isDisabled?: boolean;\n unselectOthersWhenAllSelected?: boolean;\n numberOfColumnsPerRow?: number;\n alignColumns?: boolean;\n uniformBadgeWidth?: boolean;\n alignmentPaddingWithinBadge?: boolean;\n onSelect?: (\n selectedOptionIds: string[],\n allValuesSelected?: boolean\n ) => void;\n selectedValues?: { value: string }[];\n getOptionLabel?: (\n option: Option,\n selectedValues: { [optionValue: string]: any },\n checkBoxType?: CheckBoxType\n ) => JSX.Element;\n getBadgeLabel?: (\n option: BadgeSelectorOption,\n selectedValues: { [optionValue: string]: any },\n badgeClassName?: string,\n badgeAlignmentStyle?: CSSProperties\n ) => JSX.Element;\n filter?: DataFilter<string>;\n options?: BadgeSelectorOption[];\n badgeClassName?: string;\n badgeContentPadding?: number;\n badgeCharWidth?: number;\n};\n\nexport const DEFAULT_BADGE_CHAR_WIDTH = 10;\nexport const DEFAULT_BADGE_CONTENT_PADDING = 7;\n\nexport function getBadgeStyleOverride(\n option: BadgeSelectorOption,\n selectedValues: { [optionValue: string]: any },\n badgeAlignmentStyle?: CSSProperties\n) {\n let override: CSSProperties = {\n ...badgeAlignmentStyle,\n ...option.badgeStyleOverride,\n };\n\n const defaultStyle = {\n ...DEFAULT_BADGE_STYLE,\n ...override,\n };\n\n const isSelected = option.value in selectedValues;\n\n if (!isSelected) {\n // by default swap background color and text color for unselected options\n override = option.badgeStyleSelectedOverride\n ? {\n ...badgeAlignmentStyle,\n ...option.badgeStyleSelectedOverride,\n }\n : {\n ...defaultStyle,\n color: defaultStyle.backgroundColor,\n backgroundColor: defaultStyle.color,\n borderColor: defaultStyle.backgroundColor,\n };\n }\n\n return override;\n}\n\nexport function calculateBadgeAlignmentStyle(\n maxLengthInCol: number,\n optionLength: number,\n badgeCharWidth: number = DEFAULT_BADGE_CHAR_WIDTH,\n badgeContentPadding: number = DEFAULT_BADGE_CONTENT_PADDING,\n padWithinBadge: boolean = false\n): CSSProperties {\n // this is an approximation with the assumption that each character has more or less equal width\n const totalWidth =\n maxLengthInCol * badgeCharWidth + badgeContentPadding * 2;\n\n if (padWithinBadge) {\n // no additional left or right margin, since all the padding is applied within the badge width\n return {\n width: totalWidth,\n };\n } else {\n // need additional left and right margins to adjust the alignment\n const width = optionLength * badgeCharWidth + badgeContentPadding * 2;\n const margin = (totalWidth - width) / 2;\n return {\n width,\n marginLeft: margin,\n marginRight: margin,\n };\n }\n}\n\nexport function getOptionContentLengths(\n options: BadgeSelectorOption[]\n): number[] {\n // string length of each badge content of an option\n return options\n .map((option: BadgeSelectorOption) => option.badgeContent)\n .filter(content => content !== undefined)\n .map(content => content!.toString().length);\n}\n\nexport function calculateBadgeAlignmentStyles(\n options: BadgeSelectorOption[],\n numberOfColumnsPerRow: number = 1,\n uniformBadgeWidth: boolean = false,\n badgeCharWidth: number = DEFAULT_BADGE_CHAR_WIDTH,\n badgeContentPadding: number = DEFAULT_BADGE_CONTENT_PADDING,\n alignmentPaddingWithinBadge: boolean = false\n): CSSProperties[] {\n // regardless of number of columns or alignmentPaddingWithinBadge value\n // set the width of all badges to the width of badge with the longest content\n if (uniformBadgeWidth) {\n const iterationCount = options.length;\n const maxLength = Math.max(...getOptionContentLengths(options));\n const badgeWidth = calculateBadgeAlignmentStyle(\n maxLength,\n maxLength,\n badgeCharWidth,\n badgeContentPadding,\n true\n );\n\n return _.times(iterationCount, () => badgeWidth);\n } else if (numberOfColumnsPerRow > 0) {\n const groupedByCol = _.groupBy(\n options,\n option => options.indexOf(option) % numberOfColumnsPerRow\n );\n\n return options.map((option: BadgeSelectorOption, index: number) => {\n // define a max badge length for each column\n const maxLengthInCol = Math.max(\n ...getOptionContentLengths(\n groupedByCol[index % numberOfColumnsPerRow]\n )\n );\n const length =\n option.badgeContent === undefined\n ? 0\n : option.badgeContent.toString().length;\n\n // align all badges with respect to the max badge length for the corresponding column\n return calculateBadgeAlignmentStyle(\n maxLengthInCol,\n length,\n badgeCharWidth,\n badgeContentPadding,\n alignmentPaddingWithinBadge\n );\n });\n } else {\n return [];\n }\n}\n\n@observer\nexport class BadgeSelector extends React.Component<BadgeSelectorProps, {}> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n @computed\n public get allValues() {\n return getAllOptionValues(this.props.options);\n }\n\n @computed\n public get selectedValues() {\n return (\n this.props.selectedValues ||\n getSelectedOptionValues(this.allValues, this.props.filter)\n );\n }\n\n @computed\n public get selectedValuesMap(): { [optionValue: string]: any } {\n return getSelectedValuesMap(this.selectedValues);\n }\n\n public getBadgeLabel(\n option: BadgeSelectorOption,\n selectedValues: { [optionValue: string]: any },\n badgeClassName?: string,\n badgeAlignmentStyle?: CSSProperties\n ): JSX.Element {\n return this.props.getBadgeLabel ? (\n this.props.getBadgeLabel(\n option,\n selectedValues,\n badgeClassName,\n badgeAlignmentStyle\n )\n ) : (\n <BadgeLabel\n label={option.label || option.value}\n badgeContent={option.badgeContent}\n badgeStyleOverride={getBadgeStyleOverride(\n option,\n selectedValues,\n badgeAlignmentStyle\n )}\n badgeClassName={this.props.badgeClassName}\n />\n );\n }\n\n @computed\n public get badgeAlignmentStyles(): CSSProperties[] | undefined {\n return this.props.alignColumns && this.props.options\n ? calculateBadgeAlignmentStyles(\n this.props.options,\n this.props.numberOfColumnsPerRow,\n this.props.uniformBadgeWidth,\n this.props.badgeCharWidth,\n this.props.badgeContentPadding,\n this.props.alignmentPaddingWithinBadge\n )\n : undefined;\n }\n\n @computed\n public get options(): Option[] {\n return (this.props.options || []).map((option, index) => ({\n label: this.getBadgeLabel(\n option,\n this.selectedValuesMap,\n this.props.badgeClassName,\n this.badgeAlignmentStyles && this.props.numberOfColumnsPerRow\n ? this.badgeAlignmentStyles[index]\n : undefined\n ),\n value: option.value,\n }));\n }\n\n public render() {\n return (\n <Checklist\n onChange={this.onChange}\n options={this.options}\n getOptionLabel={this.props.getOptionLabel}\n value={this.selectedValues}\n isDisabled={this.props.isDisabled}\n numberOfColumnsPerRow={this.props.numberOfColumnsPerRow}\n unselectOthersWhenAllSelected={\n this.props.unselectOthersWhenAllSelected\n }\n />\n );\n }\n\n @action.bound\n private onChange(values: Array<{ value: string }>) {\n handleOptionSelect(values, this.allValues, this.props.onSelect);\n }\n}\n\nexport default BadgeSelector;\n","import {\n CanonicalMutationType,\n findFirstMostCommonElt,\n getCanonicalMutationType,\n getProteinImpactTypeFromCanonical,\n ProteinImpactType,\n MUT_COLOR_MISSENSE,\n MUT_COLOR_INFRAME,\n MUT_COLOR_TRUNC,\n MUT_COLOR_SPLICE,\n STRUCTURAL_VARIANT_COLOR,\n MUT_COLOR_OTHER,\n MUT_COLOR_MISSENSE_PASSENGER,\n MUT_COLOR_INFRAME_PASSENGER,\n MUT_COLOR_TRUNC_PASSENGER,\n MUT_COLOR_SPLICE_PASSENGER,\n STRUCTURAL_VARIANT_PASSENGER_COLOR,\n} from 'cbioportal-frontend-commons';\nimport { Mutation } from 'cbioportal-utils';\nimport _ from 'lodash';\n\nimport { IProteinImpactTypeColors } from '../model/ProteinImpact';\n\nexport const DEFAULT_PROTEIN_IMPACT_TYPE_COLORS: IProteinImpactTypeColors = {\n missenseColor: MUT_COLOR_MISSENSE,\n missenseVusColor: MUT_COLOR_MISSENSE_PASSENGER,\n inframeColor: MUT_COLOR_INFRAME,\n inframeVusColor: MUT_COLOR_INFRAME_PASSENGER,\n truncatingColor: MUT_COLOR_TRUNC,\n truncatingVusColor: MUT_COLOR_TRUNC_PASSENGER,\n spliceColor: MUT_COLOR_SPLICE,\n spliceVusColor: MUT_COLOR_SPLICE_PASSENGER,\n fusionColor: STRUCTURAL_VARIANT_COLOR,\n fusionVusColor: STRUCTURAL_VARIANT_PASSENGER_COLOR,\n otherColor: MUT_COLOR_OTHER,\n};\n\nexport const MUTATION_TYPE_PRIORITY: {\n [canonicalMutationType: string]: number;\n} = {\n missense: 1,\n inframe: 2,\n truncating: 4,\n nonsense: 6,\n nonstop: 7,\n nonstart: 8,\n frameshift: 4,\n frame_shift_del: 4,\n frame_shift_ins: 5,\n in_frame_ins: 3,\n in_frame_del: 2,\n splice_site: 9,\n fusion: 10,\n silent: 11,\n other: 11,\n};\n\nexport function mutationTypeSort(\n typeA: CanonicalMutationType,\n typeB: CanonicalMutationType\n) {\n const priorityA = MUTATION_TYPE_PRIORITY[typeA];\n const priorityB = MUTATION_TYPE_PRIORITY[typeB];\n if (priorityA < priorityB) {\n return -1;\n } else if (priorityA > priorityB) {\n return 1;\n } else {\n return typeA.localeCompare(typeB);\n }\n}\n\nexport function getColorForProteinImpactType<T extends Mutation>(\n mutations: Partial<T>[],\n colors: IProteinImpactTypeColors = DEFAULT_PROTEIN_IMPACT_TYPE_COLORS,\n getMutationCount: (mutation: Partial<T>) => number = () => 1,\n isPutativeDriver?: (mutation: Partial<T>) => boolean\n): string {\n const processedMutations = mutations.map(m => {\n return {\n count: Math.ceil(getMutationCount(m)),\n\n // if not coloring drivers vs vus, color everything as driver\n isPutativeDriver: !!(!isPutativeDriver || isPutativeDriver(m)),\n\n canonicalType: getCanonicalMutationType(\n (m.mutationType || '') as string\n ),\n };\n });\n // aggregate counts by type + driver status\n const counts: any = {};\n for (const pMut of processedMutations) {\n const key = `${pMut.canonicalType}_${pMut.isPutativeDriver}`;\n counts[key] = counts[key] || {\n count: 0,\n isPutativeDriver: pMut.isPutativeDriver,\n canonicalType: pMut.canonicalType,\n };\n counts[key].count += pMut.count;\n }\n\n const sortedMutations = _.sortBy(_.values(counts), [\n pMut => (pMut.isPutativeDriver ? 0 : 1), // putative driver preferred non putative driver\n pMut => -pMut.count, // sort descending by count - higher count preferred to lower count\n pMut => MUTATION_TYPE_PRIORITY[pMut.canonicalType], // finally, sort by specified priority\n ]);\n\n if (sortedMutations.length > 0) {\n const chosenMutation = sortedMutations[0];\n\n const proteinImpactType: ProteinImpactType = getProteinImpactTypeFromCanonical(\n chosenMutation.canonicalType\n );\n\n switch (proteinImpactType) {\n case ProteinImpactType.MISSENSE:\n return chosenMutation.isPutativeDriver\n ? colors.missenseColor\n : colors.missenseVusColor;\n case ProteinImpactType.TRUNCATING:\n return chosenMutation.isPutativeDriver\n ? colors.truncatingColor\n : colors.truncatingVusColor;\n case ProteinImpactType.INFRAME:\n return chosenMutation.isPutativeDriver\n ? colors.inframeColor\n : colors.inframeVusColor;\n case ProteinImpactType.FUSION:\n return chosenMutation.isPutativeDriver\n ? colors.fusionColor\n : colors.fusionVusColor;\n case ProteinImpactType.SPLICE:\n return chosenMutation.isPutativeDriver\n ? colors.spliceColor\n : colors.spliceVusColor;\n default:\n return colors.otherColor;\n }\n } else {\n return '#FF0000'; // we only get here if theres no mutations, which shouldnt happen. red to indicate an error\n }\n}\n","import { ProteinImpactType } from 'cbioportal-frontend-commons';\nimport * as React from 'react';\n\nimport { IProteinImpactTypeColors } from '../../model/ProteinImpact';\n\nexport function getProteinImpactTypeOptionDisplayValueMap(proteinImpactTypeColorMap: {\n [proteinImpactType: string]: string;\n}): { [proteinImpactType: string]: JSX.Element } {\n return {\n [ProteinImpactType.MISSENSE]: (\n <strong\n style={{\n color:\n proteinImpactTypeColorMap[ProteinImpactType.MISSENSE],\n }}\n >\n Missense\n </strong>\n ),\n [ProteinImpactType.TRUNCATING]: (\n <strong\n style={{\n color:\n proteinImpactTypeColorMap[ProteinImpactType.TRUNCATING],\n }}\n >\n Truncating\n </strong>\n ),\n [ProteinImpactType.INFRAME]: (\n <strong\n style={{\n color: proteinImpactTypeColorMap[ProteinImpactType.INFRAME],\n }}\n >\n Inframe\n </strong>\n ),\n [ProteinImpactType.SPLICE]: (\n <strong\n style={{\n color: proteinImpactTypeColorMap[ProteinImpactType.SPLICE],\n }}\n >\n Splice\n </strong>\n ),\n [ProteinImpactType.FUSION]: (\n <strong\n style={{\n color: proteinImpactTypeColorMap[ProteinImpactType.FUSION],\n }}\n >\n SV/Fusion\n </strong>\n ),\n [ProteinImpactType.OTHER]: (\n <strong\n style={{\n color: proteinImpactTypeColorMap[ProteinImpactType.OTHER],\n }}\n >\n Other\n </strong>\n ),\n };\n}\n\nexport function getProteinImpactTypeColorMap(\n colors: IProteinImpactTypeColors\n): { [proteinImpactType: string]: string } {\n return {\n [ProteinImpactType.MISSENSE]: colors.missenseColor,\n [ProteinImpactType.TRUNCATING]: colors.truncatingColor,\n [ProteinImpactType.INFRAME]: colors.inframeColor,\n [ProteinImpactType.SPLICE]: colors.spliceColor,\n [ProteinImpactType.FUSION]: colors.fusionColor,\n [ProteinImpactType.OTHER]: colors.otherColor,\n };\n}\n","import { ProteinImpactType } from 'cbioportal-frontend-commons';\nimport { computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IProteinImpactTypeColors } from '../../model/ProteinImpact';\nimport { DEFAULT_PROTEIN_IMPACT_TYPE_COLORS } from '../../util/MutationTypeUtils';\nimport DropdownSelector, { DropdownSelectorProps } from './DropdownSelector';\nimport {\n getProteinImpactTypeColorMap,\n getProteinImpactTypeOptionDisplayValueMap,\n} from './ProteinImpactTypeHelper';\n\nexport type ProteinImpactTypeDropdownSelectorProps = DropdownSelectorProps & {\n colors: IProteinImpactTypeColors;\n};\n\n@observer\nexport class ProteinImpactTypeDropdownSelector extends React.Component<\n ProteinImpactTypeDropdownSelectorProps,\n {}\n> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n public static defaultProps: Partial<\n ProteinImpactTypeDropdownSelectorProps\n > = {\n colors: DEFAULT_PROTEIN_IMPACT_TYPE_COLORS,\n };\n\n @computed\n protected get optionDisplayValueMap() {\n return getProteinImpactTypeOptionDisplayValueMap(\n this.proteinImpactTypeColors\n );\n }\n\n @computed\n protected get proteinImpactTypeColors() {\n return getProteinImpactTypeColorMap(this.props.colors);\n }\n\n @computed\n protected get options() {\n return Object.values(ProteinImpactType).map(value => ({\n value,\n label: this.optionDisplayValueMap[value],\n }));\n }\n\n public render() {\n return (\n <DropdownSelector\n name=\"proteinImpactTypeFilter\"\n placeholder=\"Protein Impact\"\n showControls={true}\n options={this.options}\n {...this.props}\n />\n );\n }\n}\n\nexport default ProteinImpactTypeDropdownSelector;\n","import { Option, ProteinImpactType } from 'cbioportal-frontend-commons';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { CSSProperties } from 'react';\n\nimport { IProteinImpactTypeColors } from '../../model/ProteinImpact';\nimport { DEFAULT_PROTEIN_IMPACT_TYPE_COLORS } from '../../util/MutationTypeUtils';\nimport { BadgeLabel } from './BadgeLabel';\nimport BadgeSelector, {\n BadgeSelectorOption,\n BadgeSelectorProps,\n getBadgeStyleOverride,\n} from './BadgeSelector';\nimport {\n getProteinImpactTypeColorMap,\n getProteinImpactTypeOptionDisplayValueMap,\n} from './ProteinImpactTypeHelper';\n\nexport type ProteinImpactTypeBadgeSelectorProps = BadgeSelectorProps & {\n colors: IProteinImpactTypeColors;\n counts?: { [proteinImpactType: string]: number };\n};\n\nconst VALUES = [\n ProteinImpactType.MISSENSE,\n ProteinImpactType.TRUNCATING,\n ProteinImpactType.INFRAME,\n ProteinImpactType.SPLICE,\n ProteinImpactType.FUSION,\n ProteinImpactType.OTHER,\n];\n\nexport function getProteinImpactTypeOptionLabel(option: Option): JSX.Element {\n return <span>{option.label || option.value}</span>;\n}\n\nexport function getProteinImpactTypeBadgeLabel(\n option: BadgeSelectorOption,\n selectedValues: { [optionValue: string]: any },\n badgeClassName?: string,\n badgeAlignmentStyle?: CSSProperties\n): JSX.Element {\n return (\n <BadgeLabel\n label={option.label || option.value}\n badgeContent={option.badgeContent}\n badgeStyleOverride={getBadgeStyleOverride(\n option,\n selectedValues,\n badgeAlignmentStyle\n )}\n badgeClassName={badgeClassName}\n badgeFirst={true}\n />\n );\n}\n\n@observer\nexport class ProteinImpactTypeBadgeSelector<\n P extends ProteinImpactTypeBadgeSelectorProps = ProteinImpactTypeBadgeSelectorProps\n> extends React.Component<P, {}> {\n constructor(props: any) {\n super(props);\n }\n\n public static defaultProps: Partial<ProteinImpactTypeBadgeSelectorProps> = {\n colors: DEFAULT_PROTEIN_IMPACT_TYPE_COLORS,\n alignColumns: true,\n unselectOthersWhenAllSelected: false,\n numberOfColumnsPerRow: 2,\n };\n\n protected get optionDisplayValueMap() {\n return getProteinImpactTypeOptionDisplayValueMap(\n this.proteinImpactTypeColors\n );\n }\n\n protected get proteinImpactTypeColors() {\n return getProteinImpactTypeColorMap(this.props.colors);\n }\n\n protected get options() {\n // get options, hide \"Other\" if it's 0\n return VALUES.map(value => ({\n value,\n label: this.optionDisplayValueMap[value],\n badgeContent: this.props.counts\n ? this.props.counts[value]\n : undefined,\n badgeStyleOverride: {\n backgroundColor: this.proteinImpactTypeColors[value],\n },\n })).filter(\n type =>\n !(\n type.value === ProteinImpactType.OTHER &&\n type.badgeContent === 0\n )\n );\n }\n\n public render() {\n return (\n <BadgeSelector\n options={this.options}\n getOptionLabel={getProteinImpactTypeOptionLabel}\n getBadgeLabel={getProteinImpactTypeBadgeLabel}\n {...this.props}\n />\n );\n }\n}\n\nexport default ProteinImpactTypeBadgeSelector;\n","import { computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { formatPercentValue } from 'cbioportal-utils';\n\nimport BadgeSelector, {\n BadgeSelectorOption,\n BadgeSelectorProps,\n} from './BadgeSelector';\n\nexport type MutationStatusBadgeSelectorProps = BadgeSelectorProps & {\n rates?: { [mutationStatus: string]: number };\n badgeSelectorOptions?: BadgeSelectorOption[];\n};\n\nexport const MUTATION_STATUS_BADGE_STYLE_OVERRIDE = {\n color: '#000',\n backgroundColor: '#FFF',\n borderColor: '#FFF',\n};\n\nexport function getMutationStatusFilterOptions() {\n return [\n {\n value: 'somatic',\n label: 'Somatic Mutation Frequency',\n badgeStyleOverride: MUTATION_STATUS_BADGE_STYLE_OVERRIDE,\n badgeStyleSelectedOverride: MUTATION_STATUS_BADGE_STYLE_OVERRIDE,\n },\n {\n value: 'germline',\n label: 'Germline Mutation Frequency',\n badgeStyleOverride: MUTATION_STATUS_BADGE_STYLE_OVERRIDE,\n badgeStyleSelectedOverride: MUTATION_STATUS_BADGE_STYLE_OVERRIDE,\n },\n ];\n}\n\n@observer\nexport class MutationStatusBadgeSelector extends React.Component<\n MutationStatusBadgeSelectorProps,\n {}\n> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n public static defaultProps: Partial<MutationStatusBadgeSelectorProps> = {\n badgeSelectorOptions: getMutationStatusFilterOptions(),\n };\n\n @computed\n public get options() {\n return this.props.badgeSelectorOptions!.map(option => ({\n ...option,\n badgeContent: this.props.rates\n ? `${formatPercentValue(this.props.rates[option.value])}%`\n : undefined,\n }));\n }\n\n public render() {\n return <BadgeSelector options={this.options} {...this.props} />;\n }\n}\n\nexport default MutationStatusBadgeSelector;\n","import autobind from 'autobind-decorator';\nimport { CheckedSelect, Option } from 'cbioportal-frontend-commons';\nimport { action, computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nexport type ColumnVisibilityDef = {\n id: string;\n name: string;\n visible: boolean;\n togglable?: boolean;\n};\n\nexport type ColumnSelectorProps = {\n name?: string;\n placeholder?: string;\n columnVisibility?: ColumnVisibilityDef[];\n onColumnToggled?: (selectedColumnIds: string[]) => void;\n showControls?: boolean;\n};\n\n@observer\nexport class ColumnSelector extends React.Component<ColumnSelectorProps, {}> {\n public static defaultProps: Partial<ColumnSelectorProps> = {\n name: 'dataTableColumns',\n placeholder: 'Columns',\n showControls: false,\n };\n\n constructor(props: ColumnSelectorProps) {\n super(props);\n makeObservable<ColumnSelector, 'onChange'>(this);\n }\n\n @computed\n public get selectedValues() {\n return (this.props.columnVisibility || [])\n .filter(c => c.visible)\n .map(c => ({ value: c.id }));\n }\n\n @computed\n public get options(): Option[] {\n return (this.props.columnVisibility || []).map(c => ({\n label: <span>{c.name}</span>,\n value: c.id,\n }));\n }\n\n public render() {\n return (\n <CheckedSelect\n name={this.props.name}\n placeholder={this.props.placeholder}\n onChange={this.onChange}\n options={this.options}\n value={this.selectedValues}\n showControls={this.props.showControls}\n />\n );\n }\n\n @action.bound\n private onChange(values: { value: string }[]) {\n if (this.props.onColumnToggled) {\n this.props.onColumnToggled(values.map(o => o.value));\n }\n }\n}\n\nexport default ColumnSelector;\n","import classNames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport styles from './filterResetPanel.module.scss';\n\ntype FilterResetPanelProps = {\n resetFilters: () => void;\n filterInfo?: JSX.Element | string;\n className?: string;\n buttonText?: string;\n buttonClass?: string;\n};\n\n@observer\nexport class FilterResetPanel extends React.Component<\n FilterResetPanelProps,\n {}\n> {\n public static defaultProps: Partial<FilterResetPanelProps> = {\n buttonText: 'Show all',\n buttonClass: classNames('btn', 'btn-secondary', 'btn-sm'),\n className: classNames(\n 'alert',\n 'alert-success',\n styles.filterResetPanel\n ),\n };\n\n public render() {\n return (\n <div className={this.props.className}>\n <span style={{ verticalAlign: 'middle' }}>\n {this.props.filterInfo}\n <button\n className={this.props.buttonClass}\n style={{ cursor: 'pointer', marginLeft: 6 }}\n onClick={this.props.resetFilters}\n >\n {this.props.buttonText}\n </button>\n </span>\n </div>\n );\n }\n}\n\nexport default FilterResetPanel;\n","export enum DataFilterType {\n ONCOKB = 'oncokb',\n HOTSPOT = 'hotspot',\n POSITION = 'position',\n MUTATION = 'mutation',\n CANCER_TYPE = 'cancerType',\n PROTEIN_IMPACT_TYPE = 'proteinImpactType',\n MUTATION_STATUS = 'mutationStatus',\n}\n\nexport type DataFilter<T = any> = {\n id?: string;\n type: string;\n values: T[];\n};\n","import {\n getProteinImpactType,\n ProteinImpactType,\n} from 'cbioportal-frontend-commons';\nimport { Mutation } from 'cbioportal-utils';\nimport _ from 'lodash';\n\nimport { MutationFilter, MutationFilterValue } from '../filter/MutationFilter';\nimport { MutationStatusFilter } from '../filter/MutationStatusFilter';\nimport { PositionFilter } from '../filter/PositionFilter';\nimport { ProteinImpactTypeFilter } from '../filter/ProteinImpactTypeFilter';\nimport { NumericalFilterValue } from '../filter/NumericalFilter';\nimport { CategoricalFilterValue } from '../filter/CategoricalFilter';\nimport DataStore from '../model/DataStore';\nimport { DataFilter, DataFilterType } from '../model/DataFilter';\nimport { ApplyFilterFn } from '../model/FilterApplier';\n\nexport const TEXT_INPUT_FILTER_ID = '_mutationTableTextInputFilter_';\n\nexport function updatePositionSelectionFilters(\n dataStore: DataStore,\n position: number,\n isMultiSelect: boolean = false,\n defaultFilters: DataFilter[] = []\n) {\n const currentlySelected = dataStore.isPositionSelected(position);\n let selectedPositions: number[] = [];\n\n if (isMultiSelect) {\n // we need to keep previous positions if shift pressed,\n // but we still want to clear other filters tied with these positions\n selectedPositions = findAllUniquePositions(dataStore.selectionFilters);\n\n // remove current position if already selected\n if (currentlySelected) {\n selectedPositions = _.without(selectedPositions, position);\n }\n }\n\n // add current position into list if not selected\n if (!currentlySelected) {\n selectedPositions.push(position);\n }\n\n const positionFilter = {\n type: DataFilterType.POSITION,\n values: selectedPositions,\n };\n // we want to keep other filters (filters not related to positions) as is\n const otherFilters = dataStore.selectionFilters.filter(\n f => f.type !== DataFilterType.POSITION\n );\n\n // reset filters\n dataStore.clearSelectionFilters();\n dataStore.setSelectionFilters([\n positionFilter,\n ...defaultFilters,\n ...otherFilters,\n ]);\n}\n\nexport function updatePositionHighlightFilters(\n dataStore: DataStore,\n positions: number[],\n defaultFilters: DataFilter[] = []\n) {\n dataStore.clearHighlightFilters();\n\n const positionFilter = {\n type: DataFilterType.POSITION,\n values: positions,\n };\n dataStore.setHighlightFilters([...defaultFilters, positionFilter]);\n}\n\nexport function updatePositionRangeHighlightFilters(\n dataStore: DataStore,\n startPosition: number,\n endPosition: number,\n defaultFilters: DataFilter[] = []\n) {\n const positions: number[] = [];\n\n for (let i = startPosition; i <= endPosition; i++) {\n positions.push(i);\n }\n\n updatePositionHighlightFilters(dataStore, positions, defaultFilters);\n}\n\nexport function findAllUniquePositions(filters: DataFilter[]): number[] {\n return _.uniq(\n _.flatten(\n filters\n // pick only position filters\n .filter(f => f.type === DataFilterType.POSITION)\n // we need to spread f.values, since it might be an observable mobx array\n // (mobx observable arrays does not play well with some array functions)\n .map(f => [...f.values])\n )\n );\n}\n\nexport function indexPositions(\n filters: DataFilter[]\n): { [position: string]: { position: number } } {\n return _.keyBy(\n findAllUniquePositions(filters).map(p => ({ position: p })),\n 'position'\n );\n}\n\nexport function includesSearchTextIgnoreCase(\n value?: string,\n searchText?: string\n) {\n return (\n searchText &&\n (value || '').toLowerCase().includes(searchText.toLowerCase())\n );\n}\n\nexport function findTextInputFilter(dataFilters: DataFilter[]) {\n return dataFilters.find(f => f.id === TEXT_INPUT_FILTER_ID);\n}\n\nexport function findNonTextInputFilters(dataFilters: DataFilter[]) {\n return dataFilters.filter(f => f.id !== TEXT_INPUT_FILTER_ID);\n}\n\nexport function findOneMutationFilterValue(filter: MutationFilter) {\n return filter.values.length > 0 ? _.values(filter.values[0])[0] : undefined;\n}\n\nexport function applyDefaultPositionFilter(\n filter: PositionFilter,\n mutation: Mutation\n) {\n // const positions: {[position: string]: {position: number}} = indexPositions([filter]);\n // return !positions || !!positions[mutation.proteinPosStart+\"\"];\n\n return filter.values.includes(mutation.proteinPosStart);\n}\n\nexport function applyDefaultProteinImpactTypeFilter(\n filter: ProteinImpactTypeFilter,\n mutation: Mutation\n) {\n return filter.values.includes(\n getProteinImpactType(mutation.mutationType || 'other')\n );\n}\n\nexport function applyDefaultMutationStatusFilter(\n filter: MutationStatusFilter,\n mutation: Mutation\n) {\n return (\n mutation.mutationStatus !== undefined &&\n _.some(\n filter.values,\n value =>\n value.toLowerCase() === mutation.mutationStatus!.toLowerCase()\n )\n );\n}\n\nexport function applyDefaultMutationFilter(\n filter: MutationFilter,\n mutation: Mutation\n) {\n const filterPredicates = filter.values.map((value: MutationFilterValue) => {\n const valuePredicates = Object.keys(value).map(key =>\n includesSearchTextIgnoreCase(\n (mutation as any)[key]\n ? (mutation as any)[key].toString()\n : undefined,\n (value as any)[key] ? (value as any)[key.toString()] : undefined\n )\n );\n\n // all predicates should be true in order for a match with a single MutationFilterValue\n // (multiple values within the same MutationFilterValue are subject to AND)\n return !valuePredicates.includes(false);\n });\n\n // a single true within a set of MutationFilterValues is a match for the entire filter\n // (multiple MutationFilterValues within the same MutationFilter are subject to OR)\n return filterPredicates.includes(true);\n}\n\nexport function groupDataByGroupFilters(\n groupFilters: { group: string; filter: DataFilter }[],\n sortedFilteredData: any[],\n applyFilter: ApplyFilterFn\n) {\n return groupFilters.map(groupFilter => ({\n group: groupFilter.group,\n data: sortedFilteredData.filter(\n // TODO simplify array flatten if possible\n m => applyFilter(groupFilter.filter, _.flatten([m])[0])\n ),\n }));\n}\n\nexport function groupDataByProteinImpactType(sortedFilteredData: any[]) {\n const filters = Object.values(ProteinImpactType).map(value => ({\n group: value,\n filter: {\n type: DataFilterType.PROTEIN_IMPACT_TYPE,\n values: [value],\n },\n }));\n\n const groupedData = groupDataByGroupFilters(\n filters,\n sortedFilteredData,\n applyDefaultProteinImpactTypeFilter\n );\n\n return _.keyBy(groupedData, d => d.group);\n}\n\nexport function onFilterOptionSelect(\n selectedValues:\n | string[]\n | NumericalFilterValue[]\n | CategoricalFilterValue[],\n allValuesSelected: boolean,\n dataStore: DataStore,\n dataFilterType: string,\n dataFilterId: string\n) {\n // all other filters except the current filter with the given data filter id\n const otherFilters = dataStore.dataFilters.filter(\n (f: DataFilter) => f.id !== dataFilterId\n );\n\n if (allValuesSelected) {\n // if all values are selected just remove the existing filter with the given data filter id\n // (assuming that no filtering required if everything is selected)\n dataStore.setDataFilters(otherFilters);\n } else {\n const dataFilter = {\n id: dataFilterId,\n type: dataFilterType,\n values: selectedValues,\n };\n\n // replace the existing data filter wrt the current selection (other filters + new data filter)\n dataStore.setDataFilters([...otherFilters, dataFilter]);\n }\n}\n\nexport function applyDataFiltersOnDatum(\n datum: any,\n dataFilters: DataFilter[],\n applyFilter: ApplyFilterFn\n) {\n return (\n dataFilters.length > 0 &&\n !dataFilters\n .map(dataFilter => applyFilter(dataFilter, datum))\n .includes(false)\n );\n}\n\nexport function applyDataFilters(\n data: any[],\n dataFilters: DataFilter[],\n applyFilter: ApplyFilterFn\n) {\n return dataFilters.length > 0\n ? data.filter(m => applyDataFiltersOnDatum(m, dataFilters, applyFilter))\n : data;\n}\n","import autobind from 'autobind-decorator';\nimport * as React from 'react';\nimport { FormEvent } from 'react';\n\ninterface ISearchBoxProps {\n onChange?: (input: string) => void;\n filterInputRef?: (input: HTMLInputElement) => void;\n placeholder?: string;\n searchIconClassName?: string;\n boxHeight?: number;\n}\n\nexport class SearchBox extends React.Component<ISearchBoxProps> {\n public static defaultProps = {\n placeholder: '',\n searchIconClassName: 'fa fa-search form-control-feedback',\n boxHeight: 33.5,\n };\n\n public render() {\n return (\n <div className=\"input-group\" style={{ display: 'flex' }}>\n <input\n type=\"text\"\n onInput={this.onChange}\n ref={this.props.filterInputRef}\n className=\"form-control\"\n placeholder={this.props.placeholder}\n aria-label=\"Search\"\n style={{ height: this.props.boxHeight }}\n />\n <div\n className=\"input-group-append\"\n style={{ height: this.props.boxHeight }}\n >\n <button\n className=\"btn btn-outline-secondary\"\n type=\"button\"\n disabled={true}\n >\n <i className=\"fa fa-search\" />\n </button>\n </div>\n </div>\n );\n }\n\n @autobind\n private onChange(event: FormEvent<any>) {\n if (this.props.onChange) {\n this.props.onChange(event.currentTarget.value);\n }\n }\n}\n\nexport default SearchBox;\n","import _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport {\n ColumnSelector,\n ColumnSelectorProps,\n ColumnVisibilityDef,\n} from './ColumnSelector';\nimport { SearchBox } from './SearchBox';\n\ntype DataTableToolbarProps = {\n showColumnVisibility?: boolean;\n visibilityToggle?: (selectedColumnIds: string[]) => void;\n columnVisibility?: ColumnVisibilityDef[];\n columnSelectorProps?: ColumnSelectorProps;\n showSearchBox?: boolean;\n onSearch?: (searchText: string) => void;\n filterInputRef?: (input: HTMLInputElement) => void;\n searchDelay?: number;\n searchPlaceHolder?: string;\n info?: JSX.Element;\n};\n\n@observer\nexport class DataTableToolbar extends React.Component<\n DataTableToolbarProps,\n {}\n> {\n public static defaultProps: Partial<DataTableToolbarProps> = {\n showColumnVisibility: true,\n showSearchBox: true,\n searchDelay: 400,\n };\n\n protected get searchBoxMargin() {\n return this.props.showColumnVisibility ? 5 : 'auto';\n }\n\n public render() {\n return (\n <div\n className=\"dataTableMainToolbar\"\n style={{\n paddingBottom: '0.4rem',\n display: 'flex',\n alignItems: 'flex-end',\n }}\n >\n {this.props.info}\n {this.props.showColumnVisibility && (\n <div\n className=\"small\"\n style={{ width: 150, marginLeft: 'auto' }}\n >\n <ColumnSelector\n columnVisibility={this.props.columnVisibility}\n onColumnToggled={this.props.visibilityToggle}\n {...this.props.columnSelectorProps}\n />\n </div>\n )}\n {this.props.showSearchBox && (\n <div\n className=\"small\"\n style={{ width: 200, marginLeft: this.searchBoxMargin }}\n >\n <SearchBox\n placeholder={this.props.searchPlaceHolder}\n onChange={\n this.props.onSearch\n ? _.debounce(\n this.props.onSearch,\n this.props.searchDelay\n )\n : this.props.onSearch\n }\n filterInputRef={this.props.filterInputRef}\n />\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default DataTableToolbar;\n","import autobind from 'autobind-decorator';\nimport {\n resolveColumnVisibility,\n resolveColumnVisibilityByColumnDefinition,\n} from 'cbioportal-frontend-commons';\nimport { getRemoteDataGroupStatus, RemoteData } from 'cbioportal-utils';\nimport classnames from 'classnames';\nimport _ from 'lodash';\nimport {\n action,\n computed,\n IReactionDisposer,\n IReactionPublic,\n observable,\n reaction,\n makeObservable,\n} from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport ReactTable, { Column, RowInfo, TableProps } from 'react-table';\n\nimport { DataFilter } from '../../model/DataFilter';\nimport { DataStore } from '../../model/DataStore';\nimport { TEXT_INPUT_FILTER_ID } from '../../util/FilterUtils';\nimport { ColumnSelectorProps, ColumnVisibilityDef } from './ColumnSelector';\nimport { DataTableToolbar } from './DataTableToolbar';\n\nexport type DataTableColumn<T> = Column<T> & {\n name?: string;\n togglable?: boolean;\n searchable?: boolean;\n};\n\nexport enum ColumnSortDirection {\n ASC = 'asc',\n DESC = 'desc',\n}\n\nexport type ColumnSort = {\n column: string;\n sortDirection?: ColumnSortDirection;\n};\n\nexport type DataTableProps<T> = {\n data?: T[];\n dataStore?: DataStore;\n columns?: DataTableColumn<T>[];\n className?: string;\n reactTableProps?: Partial<TableProps<T>>;\n\n initialSort?: ColumnSort[];\n initialSortRemoteData?: (RemoteData<any> | undefined)[];\n initialItemsPerPage?: number;\n\n highlightColorLight?: string;\n highlightColorDark?: string;\n\n showColumnVisibility?: boolean;\n showSearchBox?: boolean;\n onSearch?: (\n input: string,\n visibleSearchableColumns: DataTableColumn<T>[]\n ) => void;\n searchDelay?: number;\n searchPlaceholder?: string;\n info?: JSX.Element;\n columnVisibility?: { [columnId: string]: boolean };\n columnSelectorProps?: ColumnSelectorProps;\n};\n\nexport function getInitialSortDataStatus(\n initialSortRemoteData?: (RemoteData<any> | undefined)[]\n) {\n return initialSortRemoteData\n ? getRemoteDataGroupStatus(..._.compact(initialSortRemoteData))\n : 'complete';\n}\n\nfunction getColumnVisibilityDef<T>(\n columns: DataTableColumn<T>[],\n columnVisibility: { [columnId: string]: boolean }\n) {\n const colVisProp: ColumnVisibilityDef[] = [];\n\n (columns || [])\n .filter(column => column.id)\n .forEach(column =>\n colVisProp.push({\n id: column.id!,\n name: column.name || column.id!,\n visible: columnVisibility[column.id!],\n togglable:\n column.togglable !== undefined ? column.togglable : true,\n })\n );\n\n return colVisProp;\n}\n\nexport default class DataTable<T> extends React.Component<\n DataTableProps<T>,\n {}\n> {\n public static defaultProps = {\n data: [],\n initialItemsPerPage: 10,\n highlightColorLight: '#B0BED9',\n highlightColorDark: '#9FAFD1',\n };\n\n private filterInput: HTMLInputElement | undefined;\n private filterInputReaction: IReactionDisposer | undefined;\n\n // this keeps the state of the latest action (latest user selection)\n @observable\n private _columnVisibilityOverride:\n | { [columnId: string]: boolean }\n | undefined;\n\n @observable\n private expanded: { [index: number]: boolean } = {};\n\n constructor(props: DataTableProps<T>) {\n super(props);\n\n makeObservable<\n DataTable<T>,\n | '_columnVisibilityOverride'\n | 'expanded'\n | 'onSearch'\n | 'onVisibilityToggle'\n | 'updateColumnVisibility'\n | 'onExpandedChange'\n | 'resetExpander'\n >(this);\n\n this.filterInputReaction = this.props.dataStore\n ? this.createFilterInputResetReaction(this.props.dataStore)\n : undefined;\n }\n\n @computed\n get tableData(): T[] | undefined {\n let data = this.props.data;\n\n if (this.props.dataStore) {\n data =\n this.props.dataStore.sortedFilteredSelectedData.length > 0\n ? this.props.dataStore.sortedFilteredSelectedData\n : this.props.dataStore.sortedFilteredData;\n }\n\n return data;\n }\n\n @computed\n get columns(): DataTableColumn<T>[] {\n return (this.props.columns || []).map(c => ({\n ...c,\n show: c.id ? this.columnVisibility[c.id] : c.expander || c.show,\n }));\n }\n\n @computed\n get needToCustomizeRowStyle() {\n return this.props.dataStore && this.props.dataStore.highlightFilters;\n }\n\n @computed\n get showPagination() {\n const initialItemsPerPage = this.props.initialItemsPerPage;\n\n return (\n this.tableData !== undefined &&\n this.tableData.length > initialItemsPerPage!\n );\n }\n\n @computed\n get initialSortDataStatus() {\n return getInitialSortDataStatus(this.props.initialSortRemoteData);\n }\n\n @computed\n get defaultSorted() {\n // we need to wait for the async data to complete,\n // otherwise initial sort won't work\n if (\n this.props.initialSort === undefined ||\n this.initialSortDataStatus === 'pending'\n ) {\n return undefined;\n } else {\n return this.props.initialSort.map(s => ({\n id: s.column,\n desc: s.sortDirection !== ColumnSortDirection.ASC, // default: DESC\n }));\n }\n }\n\n @computed\n public get columnVisibility(): { [columnId: string]: boolean } {\n return resolveColumnVisibility(\n this.columnVisibilityByColumnDefinition,\n this.props.columnVisibility,\n this._columnVisibilityOverride\n );\n }\n\n @computed\n public get columnVisibilityDef(): ColumnVisibilityDef[] {\n return getColumnVisibilityDef(\n this.props.columns || [],\n this.columnVisibility\n );\n }\n\n @computed\n public get columnVisibilityByColumnDefinition() {\n return resolveColumnVisibilityByColumnDefinition(\n (this.props.columns || [])\n .filter(c => c.id)\n .map(c => ({\n name: c.name || c.id!,\n id: c.id,\n visible: c.show,\n }))\n );\n }\n\n public render() {\n return (\n <div className=\"cbioportal-frontend\">\n <DataTableToolbar\n visibilityToggle={this.onVisibilityToggle}\n showSearchBox={this.props.showSearchBox}\n onSearch={this.onSearch}\n filterInputRef={this.filterInputRef}\n searchDelay={this.props.searchDelay}\n searchPlaceHolder={this.props.searchPlaceholder}\n info={this.props.info}\n showColumnVisibility={this.props.showColumnVisibility}\n columnVisibility={this.columnVisibilityDef}\n columnSelectorProps={this.props.columnSelectorProps}\n />\n <div\n className={classnames(\n this.props.className,\n 'cbioportal-frontend',\n 'default-data-table'\n )}\n >\n <ReactTable\n data={this.tableData}\n columns={this.columns}\n getTrProps={\n this.needToCustomizeRowStyle\n ? this.getTrProps\n : undefined\n }\n defaultSorted={this.defaultSorted}\n defaultPageSize={this.props.initialItemsPerPage}\n showPagination={this.showPagination}\n className=\"-striped -highlight\"\n previousText=\"<\"\n nextText=\">\"\n expanded={this.expanded}\n onExpandedChange={this.onExpandedChange}\n onPageChange={this.resetExpander}\n onPageSizeChange={this.resetExpander}\n onSortedChange={this.resetExpander}\n minRows={1}\n {...this.props.reactTableProps}\n />\n </div>\n </div>\n );\n }\n\n componentWillReceiveProps(nextProps: Readonly<DataTableProps<T>>) {\n if (nextProps.dataStore) {\n this.createExpanderResetReaction(nextProps.dataStore);\n }\n }\n\n componentWillUnmount(): void {\n if (this.filterInputReaction) {\n this.filterInputReaction();\n }\n }\n\n /**\n * This reaction is to reset expander component every time the data or selection filters update.\n * It would be cleaner if we could do this with a ReactTable callback (something like onDataChange),\n * but no such callback exists.\n */\n protected createExpanderResetReaction(dataStore: DataStore) {\n return reaction(\n () => [dataStore.selectionFilters, dataStore.dataFilters],\n (\n filters: DataFilter[][],\n prev: DataFilter[][],\n disposer: IReactionPublic\n ) => {\n if (filters.length > 0) {\n this.resetExpander();\n }\n disposer.dispose();\n }\n );\n }\n\n /**\n * This reaction is to reset search input box content when text input filter is reset.\n * TODO if possible directly render the value in the actual search box component instead of adding this reaction\n */\n protected createFilterInputResetReaction(dataStore: DataStore) {\n return reaction(\n () => dataStore.dataFilters,\n dataFilters => {\n if (this.filterInput) {\n const inputFilter = dataFilters.find(\n f => f.id === TEXT_INPUT_FILTER_ID\n );\n\n // reset the input text value in case of no text input filter\n if (!inputFilter) {\n this.filterInput.value = '';\n }\n }\n }\n );\n }\n\n @autobind\n protected getTrProps(state: any, row?: RowInfo) {\n return {\n style: {\n background: state && row && this.getRowBackground(row),\n },\n };\n }\n\n @autobind\n protected filterInputRef(input: HTMLInputElement) {\n this.filterInput = input;\n }\n\n @action.bound\n protected onSearch(searchText: string) {\n if (this.props.onSearch) {\n this.props.onSearch(\n searchText,\n this.columns.filter(c => c.searchable && c.show)\n );\n }\n }\n\n @action.bound\n protected onVisibilityToggle(selectedColumnIds: string[]) {\n // reset all column visibility\n Object.keys(this.columnVisibility).forEach(columnId =>\n this.updateColumnVisibility(columnId, false)\n );\n\n // make selected columns visible\n selectedColumnIds.forEach(columnId =>\n this.updateColumnVisibility(columnId, true)\n );\n }\n\n @action.bound\n protected updateColumnVisibility(id: string, visible: boolean) {\n // no previous action, need to init\n if (this._columnVisibilityOverride === undefined) {\n this._columnVisibilityOverride = resolveColumnVisibility(\n this.columnVisibilityByColumnDefinition,\n this.props.columnVisibility\n );\n }\n\n // update visibility\n if (\n this._columnVisibilityOverride &&\n this._columnVisibilityOverride[id] !== undefined\n ) {\n this._columnVisibilityOverride[id] = visible;\n }\n }\n\n @action.bound\n protected onExpandedChange(expanded: { [index: number]: boolean }) {\n this.expanded = expanded;\n }\n\n @action.bound\n protected resetExpander() {\n this.expanded = {};\n }\n\n protected isRowHighlighted(datum: T) {\n return (\n this.props.dataStore &&\n this.props.dataStore.dataHighlightFilter(datum)\n );\n }\n\n protected getRowBackground(row: RowInfo) {\n let background: string | undefined;\n\n if (this.isRowHighlighted(row.original)) {\n background =\n row.viewIndex % 2 === 1\n ? this.props.highlightColorDark\n : this.props.highlightColorLight;\n }\n\n return background;\n }\n}\n","import {\n DefaultTooltip,\n getCanonicalMutationType,\n} from 'cbioportal-frontend-commons';\nimport { Mutation } from 'cbioportal-utils';\nimport * as React from 'react';\n\nimport styles from './mutationType.module.scss';\n\ntype MutationTypeProps = {\n mutation: Mutation;\n};\n\ntype MutationTypeFormat = {\n label?: string;\n className: string;\n};\n\nexport const MAIN_MUTATION_TYPE_MAP: { [key: string]: MutationTypeFormat } = {\n missense: {\n label: 'Missense',\n className: 'missense-mutation',\n },\n inframe: {\n label: 'IF',\n className: 'inframe-mutation',\n },\n truncating: {\n label: 'Truncating',\n className: 'trunc-mutation',\n },\n nonsense: {\n label: 'Nonsense',\n className: 'trunc-mutation',\n },\n nonstop: {\n label: 'Nonstop',\n className: 'trunc-mutation',\n },\n nonstart: {\n label: 'Nonstart',\n className: 'trunc-mutation',\n },\n frameshift: {\n label: 'FS',\n className: 'trunc-mutation',\n },\n frame_shift_del: {\n label: 'FS del',\n className: 'trunc-mutation',\n },\n frame_shift_ins: {\n label: 'FS ins',\n className: 'trunc-mutation',\n },\n in_frame_ins: {\n label: 'IF ins',\n className: 'inframe-mutation',\n },\n in_frame_del: {\n label: 'IF del',\n className: 'inframe-mutation',\n },\n splice_site: {\n label: 'Splice',\n className: 'splice',\n },\n fusion: {\n label: 'Fusion',\n className: 'fusion',\n },\n silent: {\n label: 'Silent',\n className: 'other-mutation',\n },\n other: {\n label: 'Other',\n className: 'other-mutation',\n },\n};\n\n/**\n * Determines the display value by using the impact field.\n *\n * @param mutation column formatter data\n * @returns {string} mutation assessor text value\n */\nfunction getDisplayValue(mutation: Mutation): string {\n const entry: MutationTypeFormat | undefined = getMapEntry(mutation);\n\n // first, try to find a mapped value\n if (entry && entry.label) {\n return entry.label;\n }\n // if no mapped value, then return the text value as is\n else {\n return mutation.mutationType || '';\n }\n}\n\nfunction getClassName(mutation: Mutation): string {\n const value: MutationTypeFormat | undefined = getMapEntry(mutation);\n\n if (value && value.className) {\n return value.className;\n }\n // for unmapped values, use the \"other\" style\n else {\n return MAIN_MUTATION_TYPE_MAP['other'].className;\n }\n}\n\nfunction getMapEntry(mutation: Mutation) {\n const mutationType = mutation.mutationType;\n\n if (mutationType) {\n return MAIN_MUTATION_TYPE_MAP[getCanonicalMutationType(mutationType)];\n } else {\n return undefined;\n }\n}\n\nexport default class MutationType extends React.Component<\n MutationTypeProps,\n {}\n> {\n public render() {\n // use text for all purposes (display, sort, filter)\n const text = getDisplayValue(this.props.mutation);\n const className = getClassName(this.props.mutation);\n\n // use actual value for tooltip\n const toolTip = this.props.mutation.mutationType;\n\n let content = (\n <span className={(styles as any)[className]}>{text}</span>\n );\n\n // add tooltip only if the display value differs from the actual text value!\n if (toolTip && toolTip.toLowerCase() !== text.toLowerCase()) {\n content = (\n <DefaultTooltip\n overlay={<span>{toolTip}</span>}\n placement=\"left\"\n >\n {content}\n </DefaultTooltip>\n );\n }\n\n return content;\n }\n}\n","import { Mutation } from 'cbioportal-utils';\nimport _ from 'lodash';\nimport * as React from 'react';\n\nimport ColumnHeader from '../column/ColumnHeader';\nimport { Column } from 'react-table';\nimport ProteinChange, {\n proteinChangeSortMethod,\n} from '../column/ProteinChange';\nimport { annotationSortMethod } from '../column/Annotation';\nimport { gnomadSortMethod } from '../column/Gnomad';\nimport { clinvarSortMethod } from '../column/ClinvarInterpretation';\nimport MutationType from '../column/MutationType';\nimport MutationStatus from '../column/MutationStatus';\nimport { dbsnpSortMethod } from '../column/Dbsnp';\nimport { hgvscSortMethod } from '../column/Hgvsc';\nimport { hgvsgSortMethod } from '../column/Hgvsg';\nimport { signalSortMethod } from '../column/Signal';\n\nexport enum MutationColumn {\n PROTEIN_CHANGE = 'proteinChange',\n ANNOTATION = 'annotation',\n MUTATION_STATUS = 'mutationStatus',\n MUTATION_TYPE = 'mutationType',\n CHROMOSOME = 'chromosome',\n START_POSITION = 'startPosition',\n END_POSITION = 'endPosition',\n REFERENCE_ALLELE = 'referenceAllele',\n VARIANT_ALLELE = 'variantAllele',\n HGVSG = 'hgvsg',\n HGVSC = 'hgvsc',\n GNOMAD = 'gnomad',\n CLINVAR = 'clinvar',\n DBSNP = 'dbsnp',\n SIGNAL = 'signal',\n}\n\nexport enum MutationColumnName {\n PROTEIN_CHANGE = 'Protein Change',\n ANNOTATION = 'Annotation',\n MUTATION_STATUS = 'Mutation Status',\n MUTATION_TYPE = 'Mutation Type',\n CHROMOSOME = 'Chromosome',\n START_POSITION = 'Start Pos',\n END_POSITION = 'End Pos',\n REFERENCE_ALLELE = 'Ref',\n VARIANT_ALLELE = 'Var',\n HGVSG = 'HGVSg',\n HGVSC = 'HGVSc',\n GNOMAD = 'gnomAD',\n CLINVAR = 'ClinVar',\n DBSNP = 'dbSNP',\n SIGNAL = 'SIGNAL',\n}\n\nexport function rightAlignedCell(cellProps: any) {\n return <span className=\"pull-right mr-3\">{cellProps.value}</span>;\n}\n\nexport const MUTATION_COLUMN_HEADERS = {\n [MutationColumn.PROTEIN_CHANGE]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-left\">\n {MutationColumnName.PROTEIN_CHANGE}\n </span>\n }\n />\n ),\n [MutationColumn.ANNOTATION]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-left\">\n {MutationColumnName.ANNOTATION}\n </span>\n }\n />\n ),\n [MutationColumn.MUTATION_STATUS]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-left\">\n {MutationColumnName.MUTATION_STATUS}\n </span>\n }\n />\n ),\n [MutationColumn.MUTATION_TYPE]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-left\">\n {MutationColumnName.MUTATION_TYPE}\n </span>\n }\n />\n ),\n [MutationColumn.CHROMOSOME]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-right mr-3\">\n {MutationColumnName.CHROMOSOME}\n </span>\n }\n />\n ),\n [MutationColumn.START_POSITION]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-right mr-3\">\n {MutationColumnName.START_POSITION}\n </span>\n }\n />\n ),\n [MutationColumn.END_POSITION]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-right mr-3\">\n {MutationColumnName.END_POSITION}\n </span>\n }\n />\n ),\n [MutationColumn.REFERENCE_ALLELE]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-left\">\n {MutationColumnName.REFERENCE_ALLELE}\n </span>\n }\n overlay={<span>Reference Allele</span>}\n />\n ),\n [MutationColumn.VARIANT_ALLELE]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-left\">\n {MutationColumnName.VARIANT_ALLELE}\n </span>\n }\n overlay={<span>Variant Allele</span>}\n />\n ),\n [MutationColumn.HGVSG]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-left\">{MutationColumnName.HGVSG}</span>\n }\n />\n ),\n [MutationColumn.HGVSC]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-left\">{MutationColumnName.HGVSC}</span>\n }\n />\n ),\n [MutationColumn.GNOMAD]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-right mr-3\">\n {MutationColumnName.GNOMAD}{' '}\n <i className=\"fa fa-info-circle\" />\n </span>\n }\n overlay={\n <span>\n <a\n href=\"https://gnomad.broadinstitute.org/\"\n target=\"_blank\"\n >\n gnomAD\n </a>{' '}\n population allele frequencies. Overall population allele\n frequency is shown. Hover over a frequency to see the\n frequency for each specific population.\n </span>\n }\n />\n ),\n [MutationColumn.CLINVAR]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-left\">\n {MutationColumnName.CLINVAR}{' '}\n <i className=\"fa fa-info-circle\" />\n </span>\n }\n overlay={\n <span>\n <a\n href=\"https://www.ncbi.nlm.nih.gov/clinvar/\"\n target=\"_blank\"\n >\n ClinVar\n </a>{' '}\n aggregates information about genomic variation and its\n relationship to human health.\n </span>\n }\n />\n ),\n [MutationColumn.DBSNP]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-right mr-3\">\n {MutationColumnName.DBSNP}{' '}\n <i className=\"fa fa-info-circle\" />\n </span>\n }\n overlay={\n <span>\n The Single Nucleotide Polymorphism Database (\n <a href=\"https://www.ncbi.nlm.nih.gov/snp/\" target=\"_blank\">\n dbSNP\n </a>\n ) is a free public archive for genetic variation within and\n across different species.\n <br />\n NOTE: Currently only SNPs, single base deletions and\n insertions are supported.\n </span>\n }\n />\n ),\n [MutationColumn.SIGNAL]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-right mr-3\">\n {MutationColumnName.SIGNAL}{' '}\n <i className=\"fa fa-info-circle\" />\n </span>\n }\n overlay={\n <span>\n Prevalence of germline mutations in cancer patients from{' '}\n <a href=\"https://www.signaldb.org/\" target=\"_blank\">\n SIGNAL\n </a>\n </span>\n }\n />\n ),\n};\n\n/**\n * These default columns only include static props.\n * So, for some columns, like Annotation, no default accessor or Cell (render) properties included.\n */\nexport const MUTATION_COLUMNS_DEFINITION = {\n [MutationColumn.PROTEIN_CHANGE]: {\n id: MutationColumn.PROTEIN_CHANGE,\n name: MutationColumnName.PROTEIN_CHANGE,\n accessor: MutationColumn.PROTEIN_CHANGE,\n searchable: true,\n Cell: (column: any) => <ProteinChange mutation={column.original} />,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.PROTEIN_CHANGE],\n sortMethod: proteinChangeSortMethod,\n },\n [MutationColumn.ANNOTATION]: {\n id: MutationColumn.ANNOTATION,\n name: MutationColumnName.ANNOTATION,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.ANNOTATION],\n sortMethod: annotationSortMethod,\n },\n [MutationColumn.MUTATION_TYPE]: {\n id: MutationColumn.MUTATION_TYPE,\n name: MutationColumnName.MUTATION_TYPE,\n accessor: MutationColumn.MUTATION_TYPE,\n searchable: true,\n Cell: (column: any) => <MutationType mutation={column.original} />,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.MUTATION_TYPE],\n },\n [MutationColumn.MUTATION_STATUS]: {\n id: MutationColumn.MUTATION_STATUS,\n name: MutationColumnName.MUTATION_STATUS,\n accessor: MutationColumn.MUTATION_STATUS,\n searchable: true,\n Cell: (column: any) => <MutationStatus mutation={column.original} />,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.MUTATION_STATUS],\n },\n [MutationColumn.CHROMOSOME]: {\n id: MutationColumn.CHROMOSOME,\n name: MutationColumnName.CHROMOSOME,\n accessor: MutationColumn.CHROMOSOME,\n searchable: true,\n Cell: rightAlignedCell,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.CHROMOSOME],\n show: false,\n },\n [MutationColumn.START_POSITION]: {\n id: MutationColumn.START_POSITION,\n name: MutationColumnName.START_POSITION,\n accessor: MutationColumn.START_POSITION,\n searchable: true,\n Cell: rightAlignedCell,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.START_POSITION],\n show: false,\n },\n [MutationColumn.END_POSITION]: {\n id: MutationColumn.END_POSITION,\n name: MutationColumnName.END_POSITION,\n accessor: MutationColumn.END_POSITION,\n searchable: true,\n Cell: rightAlignedCell,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.END_POSITION],\n show: false,\n },\n [MutationColumn.REFERENCE_ALLELE]: {\n id: MutationColumn.REFERENCE_ALLELE,\n name: MutationColumnName.REFERENCE_ALLELE,\n accessor: MutationColumn.REFERENCE_ALLELE,\n searchable: true,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.REFERENCE_ALLELE],\n show: false,\n },\n [MutationColumn.VARIANT_ALLELE]: {\n id: MutationColumn.VARIANT_ALLELE,\n name: MutationColumnName.VARIANT_ALLELE,\n accessor: MutationColumn.VARIANT_ALLELE,\n searchable: true,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.VARIANT_ALLELE],\n show: false,\n },\n [MutationColumn.HGVSG]: {\n id: MutationColumn.HGVSG,\n name: MutationColumnName.HGVSG,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.HGVSG],\n sortMethod: hgvsgSortMethod,\n },\n [MutationColumn.HGVSC]: {\n id: MutationColumn.HGVSC,\n name: MutationColumnName.HGVSC,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.HGVSC],\n sortMethod: hgvscSortMethod,\n },\n [MutationColumn.GNOMAD]: {\n id: MutationColumn.GNOMAD,\n name: MutationColumnName.GNOMAD,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.GNOMAD],\n sortMethod: gnomadSortMethod,\n },\n [MutationColumn.CLINVAR]: {\n id: MutationColumn.CLINVAR,\n name: MutationColumnName.CLINVAR,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.CLINVAR],\n sortMethod: clinvarSortMethod,\n show: false,\n },\n [MutationColumn.DBSNP]: {\n id: MutationColumn.DBSNP,\n name: MutationColumnName.DBSNP,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.DBSNP],\n sortMethod: dbsnpSortMethod,\n show: false,\n },\n [MutationColumn.SIGNAL]: {\n id: MutationColumn.SIGNAL,\n name: MutationColumnName.SIGNAL,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.SIGNAL],\n sortMethod: signalSortMethod,\n show: false,\n },\n};\n\nexport const DEFAULT_MUTATION_COLUMNS = [\n MUTATION_COLUMNS_DEFINITION[MutationColumn.PROTEIN_CHANGE],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.MUTATION_TYPE],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.MUTATION_STATUS],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.CHROMOSOME],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.START_POSITION],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.END_POSITION],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.REFERENCE_ALLELE],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.VARIANT_ALLELE],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.HGVSG],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.HGVSC],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.CLINVAR],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.GNOMAD],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.DBSNP],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.SIGNAL],\n];\n\nexport function mergeColumns(\n defaultColumns: Column<Partial<Mutation>>[],\n customColumns: Column<Partial<Mutation>>[]\n) {\n const merged: Column<Partial<Mutation>>[] = [];\n const overrides: Column<Partial<Mutation>>[] = [];\n\n defaultColumns.forEach(column => {\n const colOverride = customColumns.find(c => c.id === column.id);\n merged.push(colOverride || column);\n\n if (colOverride) {\n overrides.push(colOverride);\n }\n });\n\n return [...merged, ..._.difference(customColumns, overrides)];\n}\n","import {\n ICivicGeneIndex,\n ICivicVariantIndex,\n IHotspotIndex,\n IMyCancerGenomeData,\n IOncoKbData,\n getRemoteDataGroupStatus,\n MobxCache,\n Mutation,\n RemoteData,\n Pathogenicity,\n} from 'cbioportal-utils';\nimport { MyVariantInfo, VariantAnnotation } from 'genome-nexus-ts-api-client';\nimport { CancerGene } from 'oncokb-ts-api-client';\nimport _ from 'lodash';\nimport { action, computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { Column } from 'react-table';\n\nimport Annotation, { getAnnotationData } from '../column/Annotation';\nimport ClinvarInterpretation from '../column/ClinvarInterpretation';\nimport Dbsnp from '../column/Dbsnp';\nimport Gnomad from '../column/Gnomad';\nimport Hgvsc from '../column/Hgvsc';\nimport Hgvsg from '../column/Hgvsg';\nimport Signal, { getSignalData } from '../column/Signal';\nimport { getHgvscColumnData, getHgvsgColumnData } from '../column/HgvsHelper';\nimport { getMyVariantInfoData } from '../column/MyVariantInfoHelper';\nimport { MutationFilterValue } from '../../filter/MutationFilter';\nimport { DataFilterType } from '../../model/DataFilter';\nimport {\n findNonTextInputFilters,\n TEXT_INPUT_FILTER_ID,\n} from '../../util/FilterUtils';\nimport DataTable, {\n DataTableColumn,\n DataTableProps,\n} from '../dataTable/DataTable';\nimport { MutationColumn } from './MutationColumnHelper';\n\nimport './defaultMutationTable.scss';\nimport { getClinvarData } from '../clinvar/ClinvarHelper';\n\nexport type DefaultMutationTableProps = {\n hotspotData?: RemoteData<IHotspotIndex | undefined>;\n oncoKbData?: RemoteData<IOncoKbData | Error | undefined>;\n myCancerGenomeData?: IMyCancerGenomeData;\n oncoKbCancerGenes?: RemoteData<CancerGene[] | Error | undefined>;\n usingPublicOncoKbInstance: boolean;\n indexedMyVariantInfoAnnotations?: RemoteData<\n { [genomicLocation: string]: MyVariantInfo } | undefined\n >;\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >;\n selectedTranscriptId?: string;\n enableCivic?: boolean;\n civicGenes?: RemoteData<ICivicGeneIndex | undefined>;\n civicVariants?: RemoteData<ICivicVariantIndex | undefined>;\n pubMedCache?: MobxCache;\n columns: Column<Partial<Mutation>>[];\n appendColumns?: boolean;\n} & DataTableProps<Partial<Mutation>>;\n\n@observer\nclass DefaultMutationTableComponent extends DataTable<Partial<Mutation>> {}\n\n@observer\nexport default class DefaultMutationTable extends React.Component<\n DefaultMutationTableProps,\n {}\n> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n public static defaultProps = {\n initialSort: [{ column: MutationColumn.ANNOTATION }],\n appendColumns: true,\n };\n\n @computed\n get annotationColumnData() {\n return [\n this.props.oncoKbCancerGenes,\n this.props.hotspotData,\n this.props.oncoKbData,\n this.props.civicVariants,\n ];\n }\n\n @computed\n get annotationColumnDataStatus() {\n return getRemoteDataGroupStatus(\n ..._.compact(this.annotationColumnData)\n );\n }\n\n @computed\n get indexedVariantAnnotationDataStatus() {\n return this.props.indexedVariantAnnotations\n ? this.props.indexedVariantAnnotations.status\n : 'complete';\n }\n\n @computed\n get myVariantInfoAnnotationsDataStatus() {\n return this.props.indexedMyVariantInfoAnnotations\n ? this.props.indexedMyVariantInfoAnnotations.status\n : 'complete';\n }\n\n @computed\n get annotationColumnAccessor() {\n return this.annotationColumnDataStatus === 'pending'\n ? () => undefined\n : (mutation: Mutation) =>\n getAnnotationData(\n mutation,\n this.props.oncoKbCancerGenes,\n this.props.hotspotData,\n this.props.myCancerGenomeData,\n this.props.oncoKbData,\n this.props.usingPublicOncoKbInstance,\n this.props.civicGenes,\n this.props.civicVariants\n );\n }\n\n @computed\n get myVariantInfoAccessor() {\n return this.myVariantInfoAnnotationsDataStatus === 'pending'\n ? () => undefined\n : (mutation: Mutation) =>\n getMyVariantInfoData(\n mutation,\n this.props.indexedMyVariantInfoAnnotations\n );\n }\n\n @computed\n get hgvsgAccessor() {\n return this.indexedVariantAnnotationDataStatus === 'pending'\n ? () => undefined\n : (mutation: Mutation) => getHgvsgColumnData(mutation);\n }\n\n @computed\n get hgvscAccessor() {\n return this.indexedVariantAnnotationDataStatus === 'pending'\n ? () => undefined\n : (mutation: Mutation) =>\n getHgvscColumnData(\n mutation,\n this.props.indexedVariantAnnotations,\n this.props.selectedTranscriptId\n );\n }\n\n @computed\n get signalAccessor() {\n return this.indexedVariantAnnotationDataStatus === 'pending'\n ? () => undefined\n : (mutation: Mutation) =>\n getSignalData(\n mutation,\n this.props.indexedVariantAnnotations,\n Pathogenicity.GERMLINE\n )[0];\n }\n\n @computed\n get clinvarAccessor() {\n return this.indexedVariantAnnotationDataStatus === 'pending'\n ? () => undefined\n : (mutation: Mutation) =>\n getClinvarData(\n mutation,\n this.props.indexedVariantAnnotations\n );\n }\n\n @computed\n get initialSortRemoteData() {\n return this.props.initialSortRemoteData || this.annotationColumnData;\n }\n\n protected getDefaultColumnAccessor(columnKey: MutationColumn) {\n switch (columnKey) {\n case MutationColumn.ANNOTATION:\n return this.annotationColumnAccessor;\n case MutationColumn.HGVSG:\n return this.hgvsgAccessor;\n case MutationColumn.HGVSC:\n return this.hgvscAccessor;\n case MutationColumn.GNOMAD:\n return this.myVariantInfoAccessor;\n case MutationColumn.CLINVAR:\n return this.clinvarAccessor;\n case MutationColumn.DBSNP:\n return this.myVariantInfoAccessor;\n case MutationColumn.SIGNAL:\n return this.signalAccessor;\n default:\n return undefined;\n }\n }\n\n protected getDefaultColumnCellRender(columnKey: MutationColumn) {\n switch (columnKey) {\n case MutationColumn.ANNOTATION:\n return (column: any) => (\n <Annotation\n mutation={column.original}\n enableOncoKb={true}\n enableHotspot={true}\n enableCivic={this.props.enableCivic || false}\n enableMyCancerGenome={true}\n hotspotData={this.props.hotspotData}\n oncoKbData={this.props.oncoKbData}\n oncoKbCancerGenes={this.props.oncoKbCancerGenes}\n usingPublicOncoKbInstance={\n this.props.usingPublicOncoKbInstance\n }\n pubMedCache={this.props.pubMedCache}\n civicGenes={this.props.civicGenes}\n civicVariants={this.props.civicVariants}\n />\n );\n case MutationColumn.HGVSG:\n return (column: any) => <Hgvsg mutation={column.original} />;\n case MutationColumn.HGVSC:\n return (column: any) => (\n <Hgvsc\n mutation={column.original}\n indexedVariantAnnotations={\n this.props.indexedVariantAnnotations\n }\n selectedTranscriptId={this.props.selectedTranscriptId}\n />\n );\n case MutationColumn.GNOMAD:\n return (column: any) => (\n <Gnomad\n mutation={column.original}\n indexedMyVariantInfoAnnotations={\n this.props.indexedMyVariantInfoAnnotations\n }\n indexedVariantAnnotations={\n this.props.indexedVariantAnnotations\n }\n />\n );\n case MutationColumn.CLINVAR:\n return (column: any) => (\n <ClinvarInterpretation\n mutation={column.original}\n indexedVariantAnnotations={\n this.props.indexedVariantAnnotations\n }\n />\n );\n case MutationColumn.DBSNP:\n return (column: any) => (\n <Dbsnp\n mutation={column.original}\n indexedMyVariantInfoAnnotations={\n this.props.indexedMyVariantInfoAnnotations\n }\n />\n );\n case MutationColumn.SIGNAL:\n return (column: any) => (\n <Signal\n mutation={column.original}\n indexedVariantAnnotations={\n this.props.indexedVariantAnnotations\n }\n mutationType={Pathogenicity.GERMLINE}\n />\n );\n default:\n return undefined;\n }\n }\n\n @computed\n get columns() {\n return this.props.columns.map(c => {\n // we need to clone the column definition first,\n // directly modifying the props.columns breaks certain column functionality\n const column = { ...c };\n\n if (!column.accessor) {\n const defaultAccessor = this.getDefaultColumnAccessor(\n column.id as MutationColumn\n );\n if (defaultAccessor) {\n column.accessor = defaultAccessor;\n }\n }\n if (!column.Cell) {\n const defaultCellRender = this.getDefaultColumnCellRender(\n column.id as MutationColumn\n );\n if (defaultCellRender) {\n column.Cell = defaultCellRender;\n }\n }\n return column;\n });\n }\n\n public render() {\n return (\n <DefaultMutationTableComponent\n {...this.props}\n columns={this.columns}\n initialSortRemoteData={this.initialSortRemoteData}\n onSearch={this.onSearch}\n className=\"default-mutation-table\"\n />\n );\n }\n\n @action.bound\n protected onSearch(\n searchText: string,\n visibleSearchableColumns: DataTableColumn<Mutation>[]\n ) {\n if (this.props.dataStore) {\n // all other filters except current text input filter\n const otherFilters = findNonTextInputFilters(\n this.props.dataStore.dataFilters\n );\n\n let dataFilterValues: MutationFilterValue[] = [];\n\n if (searchText.length > 0) {\n dataFilterValues = visibleSearchableColumns.map(\n c => ({ [c.id!]: searchText } as MutationFilterValue)\n );\n\n const textInputFilter = {\n id: TEXT_INPUT_FILTER_ID,\n type: DataFilterType.MUTATION,\n values: dataFilterValues,\n };\n\n // replace current text input filter with the new one\n this.props.dataStore.setDataFilters([\n ...otherFilters,\n textInputFilter,\n ]);\n } else {\n // if no text input remove text input filter (set data filters to all other filters except input)\n this.props.dataStore.setDataFilters(otherFilters);\n }\n }\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { action, computed, observable, makeObservable } from 'mobx';\n\nimport $ from 'jquery';\n\nimport { DomainSpec } from '../../model/DomainSpec';\n\ntype DomainProps = {\n x: number;\n y: number;\n width: number;\n height: number;\n color: string;\n label?: string;\n labelColor?: string;\n hitzoneClassName?: string;\n spec: DomainSpec;\n};\n\n@observer\nexport default class Domain extends React.Component<DomainProps, {}> {\n @observable private textElt: SVGTextElement | null = null;\n @observable private isMounted: boolean = false;\n private handlers: any;\n\n constructor(props: DomainProps) {\n super(props);\n makeObservable<Domain, 'textElt' | 'isMounted' | 'displayText'>(this);\n this.state = {\n displayText: props.label || '',\n };\n this.handlers = {\n textRef: action((text: SVGTextElement | null) => {\n this.textElt = text;\n }),\n };\n }\n public get hitRect() {\n return {\n x: this.props.x,\n y: this.props.y,\n width: this.props.width,\n height: this.props.height,\n };\n }\n\n private get centerX() {\n return this.props.x + this.props.width / 2;\n }\n\n private get centerY() {\n return this.props.y + this.props.height / 2;\n }\n\n @action componentDidMount() {\n this.isMounted = true;\n }\n\n @computed private get displayText() {\n // Truncate text if necessary\n const label = this.props.label || '';\n if (!this.textElt || !this.isMounted) {\n return label;\n }\n\n if (!$(this.textElt).is(':visible')) {\n return label;\n }\n\n let substringLength = label.length;\n // Find the number of characters that will fit inside\n while (\n substringLength > 0 &&\n this.textElt.getSubStringLength(0, substringLength) >\n this.props.width\n ) {\n substringLength -= 1;\n }\n let displayText = label;\n if (substringLength < label.length) {\n // If we have to do shortening\n substringLength -= 2; // make room for ellipsis \"..\"\n if (substringLength <= 0) {\n // too short to show any string\n displayText = '';\n } else {\n // if it's long enough to show anything at all\n displayText = label.substr(0, substringLength) + '..';\n }\n }\n return displayText;\n }\n\n private makeTextElement(reference: boolean) {\n let props: any = {\n x: this.centerX,\n y: this.centerY,\n textAnchor: 'middle',\n dy: '0.3em',\n fill: this.props.labelColor || '#FFFFFF',\n style: {\n fontSize: '12px',\n fontFamily: 'arial',\n },\n };\n const text = reference ? this.props.label || '' : this.displayText;\n if (reference) {\n props.ref = this.handlers.textRef;\n props.visibility = 'hidden';\n props.style = { opacity: 0 };\n props.className = this.props.hitzoneClassName;\n }\n return <text {...props}>{text}</text>;\n }\n\n render() {\n return (\n <g>\n <rect\n x={this.props.x}\n y={this.props.y}\n width={this.props.width}\n height={this.props.height}\n fill={this.props.color}\n />\n {this.makeTextElement(true)}\n {this.makeTextElement(false)}\n <rect\n className={this.props.hitzoneClassName}\n x={this.props.x}\n y={this.props.y}\n width={this.props.width}\n height={this.props.height}\n style={{ opacity: 0 }}\n />\n </g>\n );\n }\n}\n","export enum LollipopPlacement {\n TOP,\n BOTTOM,\n}\n\nexport type LollipopSpec = {\n codon: number;\n count: number;\n group?: string;\n placement?: LollipopPlacement;\n label?: LollipopLabel;\n color?: string;\n tooltip?: JSX.Element;\n};\n\nexport type LollipopLabel = {\n text: string;\n textAnchor?: string;\n fontSize?: number;\n fontFamily?: string;\n show: boolean;\n};\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { computed, makeObservable, observable } from 'mobx';\n\nimport {\n LollipopLabel,\n LollipopPlacement,\n LollipopSpec,\n} from '../../model/LollipopSpec';\n\ntype LollipopProps = {\n x: number;\n stickBaseY: number;\n stickHeight: number;\n headRadius: number;\n hoverHeadRadius: number;\n headColor?: string;\n stickColor?: string;\n label?: LollipopLabel;\n hitzoneClassName?: string;\n spec: LollipopSpec;\n};\n\n@observer\nexport default class Lollipop extends React.Component<LollipopProps, {}> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n @observable public isHovered: boolean = false;\n\n @computed private get headRadius() {\n return this.isHovered\n ? this.props.hoverHeadRadius\n : this.props.headRadius;\n }\n\n @computed private get circleX() {\n return this.props.x;\n }\n\n @computed private get circleY() {\n return this.props.stickBaseY - this.props.stickHeight;\n }\n\n @computed private get textY() {\n if (this.props.spec.placement === LollipopPlacement.BOTTOM) {\n return (\n this.props.stickBaseY -\n this.props.stickHeight +\n this.props.headRadius +\n 5\n );\n } else {\n return (\n this.props.stickBaseY -\n this.props.stickHeight -\n this.props.headRadius -\n 5\n );\n }\n }\n\n @computed public get circleHitRect() {\n return {\n x: this.circleX - this.props.hoverHeadRadius,\n y: this.circleY - this.props.hoverHeadRadius,\n width: this.props.hoverHeadRadius * 2,\n height: this.props.hoverHeadRadius * 2,\n };\n }\n\n render() {\n let label = null;\n if (this.props.label) {\n label = (\n <text\n fill=\"#2E3436\"\n style={{\n fontSize: this.props.label.fontSize || 10,\n fontFamily: this.props.label.fontFamily || 'arial',\n }}\n textAnchor={this.props.label.textAnchor || 'middle'}\n dominantBaseline={\n this.props.spec.placement === LollipopPlacement.BOTTOM\n ? 'hanging'\n : 'baseline'\n }\n x={this.props.x}\n y={this.textY}\n >\n {this.props.label.show ? this.props.label.text : ''}\n </text>\n );\n }\n return (\n <g>\n <line\n strokeWidth=\"1\"\n stroke={this.props.stickColor || '#BABDB6'}\n x1={this.props.x}\n x2={this.props.x}\n y1={this.props.stickBaseY}\n y2={this.props.stickBaseY - this.props.stickHeight}\n />\n <circle\n stroke=\"#BABDB6\"\n strokeWidth=\"0.5\"\n fill={this.props.headColor || '#000000'}\n r={this.headRadius}\n cx={this.circleX}\n cy={this.circleY}\n />\n <circle\n className={this.props.hitzoneClassName}\n r={this.props.hoverHeadRadius}\n cx={this.circleX}\n cy={this.circleY}\n cursor=\"pointer\"\n style={{ opacity: 0 }}\n />\n {label}\n </g>\n );\n }\n}\n","import { observable, makeObservable } from 'mobx';\n\nimport LollipopPlotControlsConfig from '../model/LollipopPlotControlsConfig';\n\nexport class DefaultLollipopPlotControlsConfig\n implements LollipopPlotControlsConfig {\n @observable\n public bottomYMaxInput: number | undefined;\n\n @observable\n public legendShown = false;\n\n @observable\n public yMaxInput: number | undefined;\n\n constructor() {\n makeObservable(this);\n }\n}\n\nexport default DefaultLollipopPlotControlsConfig;\n","import {\n getTextWidth,\n longestCommonStartingSubstring,\n} from 'cbioportal-frontend-commons';\nimport { countMutationsByProteinChange, Mutation } from 'cbioportal-utils';\nimport { PfamDomainRange } from 'genome-nexus-ts-api-client';\n\nimport { LollipopSpec } from '../model/LollipopSpec';\n\nexport function lollipopLabelText(\n mutationsAtPosition: Mutation[],\n size?: number\n): string {\n const mutationCountsByProteinChange = countMutationsByProteinChange(\n mutationsAtPosition\n ).filter(c => c.proteinChange !== undefined);\n\n // only pick specified number of protein change values\n const proteinChanges = mutationCountsByProteinChange\n .map(m => m.proteinChange)\n .slice(0, size && size > 0 ? size : undefined);\n\n // sort alphabetically (to make it easier to find longest common starting substring)\n const proteinChangesSorted = proteinChanges.slice(0).sort();\n\n let startStr = '';\n if (proteinChangesSorted.length > 1) {\n // only need to compare first and last element of sorted string list to find longest common starting substring of all of them\n startStr = longestCommonStartingSubstring(\n proteinChangesSorted[0],\n proteinChangesSorted[proteinChangesSorted.length - 1]\n );\n }\n\n // remove longest common starting substring from all protein change values\n const proteinChangesTrimmed = proteinChanges.map(p =>\n p.substring(startStr.length)\n );\n\n // construct label (sorted by protein change count, not alphabetically)\n let label = startStr + proteinChangesTrimmed.join('/');\n\n if (proteinChanges.length < mutationCountsByProteinChange.length) {\n label = `${label} and ${mutationCountsByProteinChange.length -\n proteinChanges.length} more`;\n }\n\n return label;\n}\n\nexport function lollipopLabelTextAnchor(\n labelText: string,\n codon: number,\n fontFamily: string,\n fontSize: number,\n geneWidth: number,\n proteinLength: number\n): string {\n let anchor = 'middle';\n const approxLabelWidth = getTextWidth(\n labelText,\n fontFamily,\n `${fontSize}px`\n );\n const lollipopDistanceToOrigin = codon * (geneWidth / proteinLength);\n const lollipopDistanceToXMax = geneWidth - lollipopDistanceToOrigin;\n\n // if lollipop is too close to the origin, in order to prevent label overlap set anchor to \"start\"\n if (approxLabelWidth / 2 > lollipopDistanceToOrigin) {\n anchor = 'start';\n }\n // if lollipop is too close to the end of the protein, in order to prevent overflow set anchor to \"end\"\n else if (approxLabelWidth / 2 > lollipopDistanceToXMax) {\n anchor = 'end';\n }\n\n return anchor;\n}\n\nexport function calcYMaxInput(\n yMaxInput: number | undefined,\n yMaxStep: number,\n countRange: number[],\n oppositeCountRange: number[],\n yAxisSameScale?: boolean\n) {\n // allow the user input value to go over the actual count range\n let input = yMaxInput;\n\n if (input === undefined) {\n input = yAxisSameScale\n ? getCommonYAxisMaxSliderValue(\n yMaxStep,\n countRange,\n oppositeCountRange\n )\n : getYAxisMaxSliderValue(yMaxStep, countRange);\n }\n\n return input;\n}\n\nexport function getCommonYAxisMaxSliderValue(\n yMaxStep: number,\n countRange: number[],\n oppositeCountRange: number[],\n yMaxInput?: number\n) {\n const defaultTopMin = getYAxisMaxSliderValue(\n yMaxStep,\n countRange,\n yMaxInput\n );\n const defaultBottomMin = getYAxisMaxSliderValue(\n yMaxStep,\n oppositeCountRange,\n yMaxInput\n );\n\n return Math.max(defaultTopMin, defaultBottomMin);\n}\n\nexport function getYAxisMaxSliderValue(\n yMaxStep: number,\n countRange: number[],\n yMaxInput?: number\n) {\n const defaultMin = yMaxStep * Math.ceil(countRange[1] / yMaxStep);\n // we don't want max slider value to go over the actual max, even if the user input goes over it\n return Math.min(defaultMin, yMaxInput || defaultMin);\n}\n\nexport function getYAxisMaxInputValue(yMaxStep: number, input: string) {\n const value = parseFloat(input);\n return value < yMaxStep ? yMaxStep : value;\n}\n\nexport function calcCountRange(\n lollipops: LollipopSpec[],\n defaultMax: number = 5,\n defaultMin: number = 1\n): [number, number] {\n if (lollipops.length === 0) {\n return [0, 0];\n } else {\n let max = defaultMax;\n let min = defaultMin;\n\n for (const lollipop of lollipops) {\n max = Math.max(max, lollipop.count);\n min = Math.min(min, lollipop.count);\n }\n\n return [min, Math.max(min, max)];\n }\n}\n\nfunction isInThisDomain(codon: number) {\n return (range: PfamDomainRange): boolean => {\n return codon >= range.pfamDomainStart && codon <= range.pfamDomainEnd;\n };\n}\n\nexport function byMiddlemostPosition(averageCodon: number) {\n return (x: LollipopSpec, y: LollipopSpec): 1 | -1 | 0 => {\n const yDistance = Math.abs(y.codon - averageCodon);\n const xDistance = Math.abs(x.codon - averageCodon);\n if (yDistance > xDistance) {\n return -1;\n } else if (xDistance > yDistance) {\n return 1;\n } else {\n return 0;\n }\n };\n}\n\nexport function byWhetherExistsInADomain(remainingDomains: PfamDomainRange[]) {\n return (x: LollipopSpec, y: LollipopSpec): 0 | 1 | -1 => {\n const isYInADomain = remainingDomains.some(isInThisDomain(y.codon));\n const isXInADomain = remainingDomains.some(isInThisDomain(x.codon));\n if (\n (isYInADomain && isXInADomain) ||\n (!isYInADomain && !isXInADomain)\n ) {\n return 0;\n } else if (isYInADomain) {\n return 1;\n } else {\n return -1;\n }\n };\n}\n\nexport function byMutationCount(x: LollipopSpec, y: LollipopSpec): number {\n if (y.count > x.count) {\n return 1;\n } else if (y.count < x.count) {\n return -1;\n }\n return 0;\n}\n","import { PfamDomainRange } from 'genome-nexus-ts-api-client';\n\nexport function generatePfamDomainColorMap(\n pfamDomains: PfamDomainRange[]\n): { [pfamAccession: string]: string } {\n const colors: string[] = [\n '#2dcf00',\n '#ff5353',\n '#5b5bff',\n '#ebd61d',\n '#ba21e0',\n '#ff9c42',\n '#ff7dff',\n '#b9264f',\n '#baba21',\n '#c48484',\n '#1f88a7',\n '#cafeb8',\n '#4a9586',\n '#ceb86c',\n '#0e180f',\n ];\n\n const map: { [pfamAccession: string]: string } = {};\n\n let colorIdx = 0;\n\n // sort domains by start position,\n // then assign a different color for each unique domain id.\n pfamDomains\n .sort(\n (a: PfamDomainRange, b: PfamDomainRange): number =>\n a.pfamDomainStart - b.pfamDomainStart\n )\n .forEach((domain: PfamDomainRange) => {\n if (map[domain.pfamDomainId] === undefined) {\n map[domain.pfamDomainId] = colors[colorIdx % colors.length];\n colorIdx++;\n }\n });\n\n return map;\n}\n","import * as React from 'react';\nimport { action, computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\n\nimport { CheckedSelect, Option } from 'cbioportal-frontend-commons';\n\nexport type TrackVisibility = { [trackName: string]: 'visible' | 'hidden' };\nexport type TrackDataStatus = {\n [trackName: string]: 'pending' | 'error' | 'complete' | 'empty';\n};\n\nexport enum TrackName {\n PDB = 'PDB',\n CancerHotspots = 'CANCER_HOTSPOTS',\n OncoKB = 'ONCO_KB',\n dbPTM = 'DB_PTM',\n UniprotPTM = 'UNIPROT_PTM',\n Exon = 'EXON',\n UniprotTopology = 'UNIPROT_TOPOLOGY',\n}\n\ntype TrackSelectorProps = {\n tracks?: TrackName[];\n trackVisibility: TrackVisibility;\n trackDataStatus?: TrackDataStatus;\n onChange: (selectedTrackIds: string[]) => void;\n name?: string;\n placeholder?: string;\n};\n\n@observer\nexport default class TrackSelector extends React.Component<\n TrackSelectorProps,\n {}\n> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n public static defaultProps: Partial<TrackSelectorProps> = {\n name: 'mutationMapperTrackSelector',\n placeholder: 'Add annotation tracks',\n tracks: [\n TrackName.CancerHotspots,\n TrackName.OncoKB,\n TrackName.dbPTM,\n TrackName.PDB,\n TrackName.Exon,\n TrackName.UniprotTopology,\n ],\n };\n\n @action.bound\n private onChange(values: { value: string }[]) {\n this.props.onChange(values.map(o => o.value));\n }\n\n @computed get selectedValues() {\n return Object.keys(this.props.trackVisibility)\n .filter(id => this.props.trackVisibility[id] === 'visible')\n .map(id => ({ value: id }));\n }\n\n @computed get availableOptions() {\n return {\n [TrackName.CancerHotspots]: {\n label: (\n <span>\n Cancer Hotspots\n {this.isPending(TrackName.CancerHotspots) &&\n this.loaderIcon()}\n </span>\n ),\n value: TrackName.CancerHotspots,\n },\n [TrackName.OncoKB]: {\n label: (\n <span>\n OncoKB\n {this.isPending(TrackName.OncoKB) && this.loaderIcon()}\n </span>\n ),\n value: TrackName.OncoKB,\n },\n [TrackName.dbPTM]: {\n label: (\n <span>\n Post Translational Modifications (dbPTM)\n {this.isPending(TrackName.dbPTM) && this.loaderIcon()}\n </span>\n ),\n value: TrackName.dbPTM,\n },\n [TrackName.UniprotPTM]: {\n label: (\n <span>\n Post Translational Modifications (Uniprot)\n {this.isPending(TrackName.UniprotPTM) &&\n this.loaderIcon()}\n </span>\n ),\n value: TrackName.UniprotPTM,\n },\n [TrackName.PDB]: {\n label: (\n <span>\n 3D Structure\n {this.isPending(TrackName.PDB) && this.loaderIcon()}\n </span>\n ),\n value: TrackName.PDB,\n disabled: this.isDisabled(TrackName.PDB),\n },\n [TrackName.Exon]: {\n label: (\n <span>\n Exon\n {this.isPending(TrackName.Exon) && this.loaderIcon()}\n </span>\n ),\n value: TrackName.Exon,\n },\n [TrackName.UniprotTopology]: {\n label: (\n <span>\n Uniprot Topology\n {this.isPending(TrackName.UniprotTopology) &&\n this.loaderIcon()}\n </span>\n ),\n value: TrackName.UniprotTopology,\n },\n };\n }\n\n @computed get options(): Option[] {\n return this.props\n .tracks!.filter(t => this.props.trackVisibility[t] !== undefined)\n .map(t => this.availableOptions[t]);\n }\n\n private isPending(trackName: string) {\n return (\n this.props.trackDataStatus &&\n this.props.trackDataStatus[trackName] === 'pending'\n );\n }\n\n private isDisabled(trackName: string) {\n return (\n this.props.trackDataStatus &&\n this.props.trackDataStatus[trackName] !== 'complete'\n );\n }\n\n private loaderIcon() {\n return (\n <span\n style={{\n display: 'inline-block',\n verticalAlign: 'bottom',\n marginLeft: 5,\n }}\n >\n <i className=\"fa fa-spinner fa-pulse\" />\n </span>\n );\n }\n\n public render() {\n return (\n <CheckedSelect\n name={this.props.name}\n placeholder={this.props.placeholder}\n onChange={this.onChange}\n options={this.options}\n value={this.selectedValues}\n />\n );\n }\n}\n","import { TrackName, TrackVisibility } from '../component/track/TrackSelector';\n\nexport function initDefaultTrackVisibility(): TrackVisibility {\n return {\n [TrackName.OncoKB]: 'hidden',\n [TrackName.CancerHotspots]: 'hidden',\n [TrackName.dbPTM]: 'hidden',\n [TrackName.UniprotPTM]: 'hidden',\n [TrackName.PDB]: 'hidden',\n [TrackName.Exon]: 'hidden',\n [TrackName.UniprotTopology]: 'hidden',\n };\n}\n","import * as React from 'react';\nimport {\n MUT_COLOR_MISSENSE,\n MUT_COLOR_TRUNC,\n MUT_COLOR_INFRAME,\n STRUCTURAL_VARIANT_COLOR,\n MUT_COLOR_SPLICE,\n MUT_COLOR_OTHER,\n} from 'cbioportal-frontend-commons';\n\ntype DefaultLollipopPlotLegendProps = {\n missenseColor?: string;\n truncatingColor?: string;\n inframeColor?: string;\n spliceColor?: string;\n fusionColor?: string;\n otherColor?: string;\n};\n\nexport default class DefaultLollipopPlotLegend extends React.Component<\n DefaultLollipopPlotLegendProps\n> {\n public static defaultProps: DefaultLollipopPlotLegendProps = {\n missenseColor: MUT_COLOR_MISSENSE,\n truncatingColor: MUT_COLOR_TRUNC,\n inframeColor: MUT_COLOR_INFRAME,\n spliceColor: MUT_COLOR_SPLICE,\n fusionColor: STRUCTURAL_VARIANT_COLOR,\n otherColor: MUT_COLOR_OTHER,\n };\n\n public render() {\n return (\n <div style={{ maxWidth: 700, marginTop: 5 }}>\n <strong style={{ color: '#2153AA' }}>Color Codes</strong>\n <p>\n Mutation diagram circles are colored with respect to the\n corresponding mutation types. In case of different mutation\n types at a single position, color of the circle is\n determined with respect to the most frequent mutation type.\n </p>\n <br />\n <div>\n Mutation types and corresponding color codes are as follows:\n <ul>\n <li>\n <strong style={{ color: this.props.missenseColor }}>\n Missense Mutations\n </strong>\n </li>\n <li>\n <strong\n style={{ color: this.props.truncatingColor }}\n >\n Truncating Mutations\n </strong>\n : Nonsense, Nonstop, Frameshift deletion, Frameshift\n insertion, Splice site\n </li>\n <li>\n <strong style={{ color: this.props.inframeColor }}>\n Inframe Mutations\n </strong>\n : Inframe deletion, Inframe insertion\n </li>\n <li>\n <strong style={{ color: this.props.spliceColor }}>\n Splice Mutations\n </strong>\n </li>\n <li>\n <strong style={{ color: this.props.fusionColor }}>\n Fusion Mutations\n </strong>\n </li>\n <li>\n <strong style={{ color: this.props.otherColor }}>\n Other Mutations\n </strong>\n : All other types of mutations\n </li>\n </ul>\n </div>\n </div>\n );\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { observable, makeObservable } from 'mobx';\n\nimport { SequenceSpec } from '../../model/SequenceSpec';\n\ntype SequenceProps = {\n x: number;\n y: number;\n width: number;\n height: number;\n color?: string;\n hitzoneClassName?: string;\n spec?: SequenceSpec;\n};\n\n@observer\nexport default class Sequence extends React.Component<SequenceProps, {}> {\n @observable isMounted: boolean = false;\n\n constructor(props: SequenceProps) {\n super(props);\n makeObservable(this);\n }\n\n public get hitRect() {\n return {\n x: this.props.x,\n y: this.props.y,\n width: this.props.width,\n height: this.props.height,\n };\n }\n\n componentDidMount() {\n this.isMounted = true;\n }\n\n render() {\n return (\n <g>\n <rect\n x={this.props.x}\n y={this.props.y}\n width={this.props.width}\n height={this.props.height}\n fill={this.props.color}\n />\n <rect\n className={this.props.hitzoneClassName}\n x={this.props.x}\n y={this.props.y}\n width={this.props.width}\n height={this.props.height}\n style={{ opacity: 0 }}\n />\n </g>\n );\n }\n}\n","import * as React from 'react';\nimport { SyntheticEvent } from 'react';\nimport $ from 'jquery';\nimport autobind from 'autobind-decorator';\nimport _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport { action, computed, makeObservable } from 'mobx';\n\nimport {\n getComponentIndex,\n SVGAxis,\n Tick,\n unhoverAllComponents,\n} from 'cbioportal-frontend-commons';\n\nimport { LollipopPlacement, LollipopSpec } from '../../model/LollipopSpec';\nimport { DomainSpec } from '../../model/DomainSpec';\nimport {\n updatePositionHighlightFilters,\n updatePositionSelectionFilters,\n} from '../../util/FilterUtils';\nimport Sequence from './Sequence';\nimport Lollipop from './Lollipop';\nimport Domain from './Domain';\nimport { LollipopPlotProps } from './LollipopPlot';\n\nexport type LollipopPlotNoTooltipProps = LollipopPlotProps & {\n setHitZone?: (\n hitRect: { x: number; y: number; width: number; height: number },\n tooltipContent?: JSX.Element,\n onMouseOver?: () => void,\n onClick?: () => void,\n onMouseOut?: () => void,\n cursor?: string,\n tooltipPlacement?: string\n ) => void;\n onMouseLeave?: () => void;\n onBackgroundMouseMove?: () => void;\n};\n\nconst DELETE_FOR_DOWNLOAD_CLASS = 'delete-for-download';\nconst LOLLIPOP_ID_CLASS_PREFIX = 'lollipop-';\nconst DOMAIN_ID_CLASS_PREFIX = 'domain-';\nconst SEQUENCE_ID_CLASS_PREFIX = 'sequence-';\n\n@observer\nexport default class LollipopPlotNoTooltip extends React.Component<\n LollipopPlotNoTooltipProps,\n {}\n> {\n private lollipopComponents: { [lollipopIndex: string]: Lollipop } = {};\n private domainComponents: { [domainIndex: string]: Domain } = {};\n private sequenceComponents: Sequence[] = [];\n\n private svg: SVGElement | undefined;\n private shiftPressed: boolean = false;\n\n private lollipopLabelPadding = 20;\n private domainPadding = 5;\n private xAxisCandidateTickIntervals = [\n 50,\n 100,\n 200,\n 250,\n 500,\n 1000,\n 2500,\n 5000,\n 10000,\n 25000,\n ];\n private yAxisCandidateTickIntervals = [1, 2, 5, 10, 20, 50, 100, 200, 500];\n private xAxisHeight = 30;\n private yAxisWidth = 50;\n private yAxisPadding = 10;\n private geneHeight = 14;\n private domainHeight = 24;\n\n public static defaultProps: Partial<LollipopPlotNoTooltipProps> = {\n showYAxis: true,\n };\n\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n\n @autobind\n protected ref(svg: SVGElement) {\n this.svg = svg;\n }\n\n @action.bound\n protected onBackgroundClick() {\n if (this.props.dataStore) {\n this.props.dataStore.clearSelectionFilters();\n }\n }\n\n @action.bound\n protected onBackgroundMouseMove() {\n this.props.onBackgroundMouseMove && this.props.onBackgroundMouseMove();\n // unhover all of the lollipops if mouse hits background\n this.unhoverAllLollipops();\n }\n\n @action.bound\n protected onLollipopClick(codon: number) {\n if (this.props.dataStore) {\n updatePositionSelectionFilters(\n this.props.dataStore,\n codon,\n this.shiftPressed\n );\n }\n }\n\n @action.bound\n protected onKeyDown(e: JQueryKeyEventObject) {\n if (e.which === 16) {\n this.shiftPressed = true;\n }\n }\n\n @action.bound\n protected onKeyUp(e: JQueryKeyEventObject) {\n if (e.which === 16) {\n this.shiftPressed = false;\n }\n }\n\n @action.bound\n protected onMouseOver(e: SyntheticEvent<any>) {\n // No matter what, unhover all lollipops - if we're hovering one, we'll set it later in this method\n this.unhoverAllLollipops();\n\n const target = e.target as SVGElement;\n const className = target.getAttribute('class') || '';\n const lollipopIndex: number | null = this.getLollipopIndex(className);\n let domainIndex: number | null = null;\n let sequenceIndex: number | null = null;\n\n if (lollipopIndex !== null) {\n const lollipopComponent = this.lollipopComponents[lollipopIndex];\n if (lollipopComponent) {\n lollipopComponent.isHovered = true;\n if (this.props.setHitZone) {\n this.props.setHitZone(\n lollipopComponent.circleHitRect,\n lollipopComponent.props.spec.tooltip,\n action(() => {\n if (this.props.dataStore) {\n updatePositionHighlightFilters(\n this.props.dataStore,\n [lollipopComponent.props.spec.codon]\n );\n }\n lollipopComponent.isHovered = true;\n }),\n action(() =>\n this.onLollipopClick(\n lollipopComponent.props.spec.codon\n )\n )\n );\n }\n }\n } else {\n domainIndex = this.getDomainIndex(className);\n }\n\n if (domainIndex !== null) {\n const domainComponent = this.domainComponents[domainIndex];\n if (domainComponent) {\n if (this.props.setHitZone) {\n this.props.setHitZone(\n domainComponent.hitRect,\n domainComponent.props.spec.tooltip,\n undefined,\n undefined,\n undefined,\n 'auto'\n );\n }\n }\n } else {\n sequenceIndex = this.getSequenceIndex(className);\n }\n\n if (sequenceIndex !== null) {\n const sequenceComponent = this.sequenceComponents[sequenceIndex];\n if (sequenceComponent) {\n if (this.props.setHitZone) {\n this.props.setHitZone(\n sequenceComponent.hitRect,\n sequenceComponent.props.spec\n ? sequenceComponent.props.spec.tooltip\n : undefined,\n undefined,\n undefined,\n undefined,\n 'auto'\n );\n }\n }\n }\n }\n\n @action.bound\n protected onSVGMouseLeave(e: SyntheticEvent<any>) {\n const target = e.target as Element;\n\n if (target.tagName.toLowerCase() === 'svg') {\n this.props.onMouseLeave && this.props.onMouseLeave();\n }\n }\n\n private unhoverAllLollipops() {\n unhoverAllComponents(this.lollipopComponents);\n\n if (this.props.dataStore) {\n this.props.dataStore.clearHighlightFilters();\n }\n }\n\n componentDidMount() {\n // Make it so that if you hold down shift, you can select more than one lollipop at once\n $(document).on('keydown', this.onKeyDown);\n $(document).on('keyup', this.onKeyUp);\n this.props.onXAxisOffset && this.props.onXAxisOffset(this.geneX);\n }\n\n componentWillUnmount() {\n $(document).off('keydown', this.onKeyDown as any);\n $(document).off('keyup', this.onKeyUp as any);\n }\n\n componentDidUpdate() {\n this.props.onXAxisOffset && this.props.onXAxisOffset(this.geneX);\n }\n\n private codonToX(codon: number) {\n return (codon / this.props.xMax) * this.props.vizWidth;\n }\n\n private countToHeight(count: number, yMax: number, zeroHeight: number = 0) {\n return zeroHeight + Math.min(1, count / yMax) * this.yAxisHeight;\n }\n\n private calculateTickInterval(\n candidates: number[],\n rangeSize: number,\n maxTickCount: number\n ) {\n let ret: number;\n const tickInterval = candidates.find(\n c => rangeSize / c < maxTickCount - 1\n );\n if (!tickInterval) {\n ret = 10;\n while (rangeSize / ret > maxTickCount - 1) {\n ret *= 10;\n }\n } else {\n ret = tickInterval;\n }\n return ret;\n }\n\n private calculateTicks(\n tickInterval: number,\n rangeSize: number,\n labelEvenTicks: boolean\n ) {\n const ret: { position: number; label: string | undefined }[] = [];\n let nextTick = tickInterval;\n while (nextTick < rangeSize) {\n let label: string | undefined = undefined;\n\n // add label only for the even ticks\n // but do not add label if it is too close to the end value\n if (\n labelEvenTicks &&\n rangeSize - nextTick > (2 * tickInterval) / 3 &&\n nextTick % (2 * tickInterval) === 0\n ) {\n label = nextTick + '';\n }\n ret.push({\n position: nextTick,\n label,\n });\n nextTick += tickInterval;\n }\n return ret;\n }\n\n @computed private get xAxisTickInterval() {\n return this.calculateTickInterval(\n this.xAxisCandidateTickIntervals,\n this.props.xMax,\n 16\n );\n }\n\n @computed private get yAxisTickInterval() {\n return this.calculateTickInterval(\n this.yAxisCandidateTickIntervals,\n this.yMax,\n 10\n );\n }\n\n @computed private get bottomYAxisTickInterval() {\n return this.calculateTickInterval(\n this.yAxisCandidateTickIntervals,\n this.bottomYMax,\n 10\n );\n }\n\n @computed private get xTicks() {\n let ret: Tick[] = [];\n // Start and end, always there\n ret.push({\n position: 0,\n label: '0',\n });\n ret.push({\n position: this.props.xMax,\n label: this.props.xMax + 'aa',\n });\n // Intermediate ticks, every other one labeled\n ret = ret.concat(\n this.calculateTicks(this.xAxisTickInterval, this.props.xMax, true)\n );\n return ret;\n }\n\n @computed private get yTicks() {\n return this.axisTicks(\n this.yMax,\n this.yMaxLabel,\n this.yAxisTickInterval\n );\n }\n\n @computed private get bottomYTicks() {\n return this.axisTicks(\n this.bottomYMax,\n this.bottomYMaxLabel,\n this.bottomYAxisTickInterval\n );\n }\n\n @computed private get yMax() {\n return (\n this.props.yMax ||\n this.props.lollipops\n .filter(l => l.placement !== LollipopPlacement.BOTTOM)\n .reduce(\n (max: number, next: LollipopSpec) =>\n Math.max(max, next.count),\n 1\n )\n );\n }\n\n @computed private get yMaxDisplay() {\n return this.props.yMaxFractionDigits\n ? Number(this.yMax.toFixed(this.props.yMaxFractionDigits))\n : this.yMax;\n }\n\n @computed private get yMaxPostfix() {\n return this.props.yMaxLabelPostfix ? this.props.yMaxLabelPostfix : '';\n }\n\n @computed private get bottomYMax() {\n return (\n this.props.bottomYMax ||\n this.props.lollipops\n .filter(l => l.placement === LollipopPlacement.BOTTOM)\n .reduce(\n (max: number, next: LollipopSpec) =>\n Math.max(max, next.count),\n 1\n )\n );\n }\n\n @computed private get bottomYMaxDisplay() {\n return this.props.yMaxFractionDigits\n ? Number(this.bottomYMax.toFixed(this.props.yMaxFractionDigits))\n : this.bottomYMax;\n }\n\n @computed private get yMaxLabel() {\n return (\n (this.props.lollipops\n .filter(l => l.placement !== LollipopPlacement.BOTTOM)\n .find(lollipop => lollipop.count > this.yMax)\n ? '>= '\n : '') +\n this.yMaxDisplay +\n this.yMaxPostfix\n );\n }\n\n @computed private get bottomYMaxLabel() {\n return (\n (this.props.lollipops\n .filter(l => l.placement === LollipopPlacement.BOTTOM)\n .find(lollipop => lollipop.count > this.bottomYMax)\n ? '>= '\n : '') +\n this.bottomYMaxDisplay +\n this.yMaxPostfix\n );\n }\n\n @computed private get needBottomPlacement() {\n return this.props.groups && this.props.groups.length > 1;\n }\n\n @computed private get xAxisOnTop() {\n return this.props.xAxisOnTop || this.needBottomPlacement;\n }\n\n @computed private get xAxisOnBottom() {\n return this.props.xAxisOnBottom || !this.needBottomPlacement;\n }\n\n @computed private get topGroupName() {\n return this.props.groups ? this.props.groups[0] : undefined;\n }\n\n @computed private get topGroupSymbol() {\n return this.props.topYAxisSymbol || '#';\n }\n\n @computed private get bottomGroupName() {\n return this.props.groups ? this.props.groups[1] : undefined;\n }\n\n @computed private get bottomGroupSymbol() {\n return this.props.bottomYAxisSymbol || '#';\n }\n\n @computed private get combinedXAxisHeight() {\n // number of visible x-axes depends on the props\n return (\n ((this.xAxisOnTop ? 1 : 0) + (this.xAxisOnBottom ? 1 : 0)) *\n this.xAxisHeight\n );\n }\n\n @computed private get yAxisHeight() {\n if (this.needBottomPlacement) {\n return (\n (2 * this.props.vizHeight -\n (2 * this.lollipopLabelPadding +\n this.combinedXAxisHeight +\n 2 * this.domainPadding +\n this.domainHeight)) /\n 2\n );\n } else {\n return (\n this.props.vizHeight -\n (this.lollipopLabelPadding +\n this.combinedXAxisHeight +\n 2 * this.domainPadding +\n this.domainHeight)\n );\n }\n }\n\n @computed private get xAxisY() {\n const base = this.domainY + this.domainHeight + this.domainPadding;\n\n if (this.needBottomPlacement) {\n return base + this.yAxisHeight + this.lollipopLabelPadding;\n } else {\n return base;\n }\n }\n\n @computed private get geneCenterY() {\n return this.geneY + this.geneHeight / 2;\n }\n\n @computed private get yAxisY() {\n return (\n this.geneCenterY -\n this.plotAreaDistanceToGeneCenter -\n this.yAxisHeight\n );\n }\n\n @computed private get bottomYAxisY() {\n return this.geneCenterY + this.plotAreaDistanceToGeneCenter;\n }\n\n @computed private get plotAreaDistanceToGeneCenter() {\n return this.domainPadding + this.domainHeight / 2;\n }\n\n @computed private get geneX() {\n // TODO make + 75 customizable\n return this.yAxisWidth + 75;\n }\n\n @computed private get geneY() {\n return (\n this.lollipopLabelPadding +\n this.yAxisHeight +\n this.domainPadding +\n (this.domainHeight - this.geneHeight) / 2 +\n (this.xAxisOnTop ? this.xAxisHeight : 0)\n );\n }\n\n @computed private get domainY() {\n return this.geneY - (this.domainHeight - this.geneHeight) / 2;\n }\n\n // we need to create segments for the sequence rectangle for better handling of the tooltip hit zone\n @computed get sequenceSegments() {\n const sequenceComponents: JSX.Element[] = [];\n\n let start = 0;\n\n let segments = _.map(this.props.domains, (domain: DomainSpec) => {\n const segment = {\n start,\n end: this.codonToX(domain.startCodon), // segment ends at the start of the current domain\n };\n\n // next segment starts at the end of the current domain\n start = this.codonToX(domain.endCodon);\n\n return segment;\n });\n\n // last segment after the last domain\n const end = this.props.vizWidth;\n segments.push({ start, end });\n\n // sort segments by start position\n segments.sort(\n (\n a: { start: number; end: number },\n b: { start: number; end: number }\n ) => {\n return a.start - b.start;\n }\n );\n\n segments.forEach(\n (segment: { start: number; end: number }, index: number) => {\n sequenceComponents.push(\n <Sequence\n ref={sequenceComponent => {\n if (sequenceComponent !== null) {\n this.sequenceComponents[\n index\n ] = sequenceComponent;\n }\n }}\n color=\"#BABDB6\"\n x={this.geneX + segment.start}\n y={this.geneY}\n height={this.geneHeight}\n width={segment.end - segment.start}\n spec={this.props.sequence}\n hitzoneClassName={[\n DELETE_FOR_DOWNLOAD_CLASS,\n this.makeSequenceIndexClass(index),\n ].join(' ')}\n />\n );\n }\n );\n\n return sequenceComponents;\n }\n\n @computed private get zeroHeight() {\n // we need to add a non-zero value if the stick needs to start from the gene center\n return this.props.zeroStickBaseY\n ? 0\n : this.domainPadding + this.domainHeight / 2;\n }\n\n @computed private get lollipops() {\n this.lollipopComponents = {};\n const hoverHeadRadius = 5;\n return this.props.lollipops.map((lollipop: LollipopSpec, i: number) => {\n const stickHeight =\n lollipop.placement === LollipopPlacement.BOTTOM\n ? -this.countToHeight(\n lollipop.count,\n this.bottomYMax,\n this.zeroHeight\n )\n : this.countToHeight(\n lollipop.count,\n this.yMax,\n this.zeroHeight\n );\n\n const stickBaseY = this.calcStickBaseY(lollipop.placement);\n\n return (\n <Lollipop\n key={`${lollipop.codon}_${\n lollipop.placement === LollipopPlacement.BOTTOM\n ? 'bottom'\n : 'top'\n }`}\n ref={(lollipopComponent: Lollipop) => {\n if (lollipopComponent !== null) {\n this.lollipopComponents[i] = lollipopComponent;\n }\n }}\n x={this.geneX + this.codonToX(lollipop.codon)}\n stickBaseY={stickBaseY}\n stickHeight={stickHeight}\n headRadius={\n this.props.dataStore &&\n (this.props.dataStore.isPositionSelected(\n lollipop.codon\n ) ||\n this.props.dataStore.isPositionHighlighted(\n lollipop.codon\n ))\n ? 5\n : 2.8\n }\n hoverHeadRadius={hoverHeadRadius}\n label={lollipop.label}\n headColor={lollipop.color}\n hitzoneClassName={[\n DELETE_FOR_DOWNLOAD_CLASS,\n this.makeLollipopIndexClass(i),\n ].join(' ')}\n spec={lollipop}\n />\n );\n });\n }\n\n @computed private get domains() {\n this.domainComponents = {};\n return this.props.domains.map((domain: DomainSpec, index: number) => {\n const x = this.codonToX(domain.startCodon);\n const width = this.codonToX(domain.endCodon) - x;\n return (\n <Domain\n key={index}\n ref={(domainComponent: Domain) => {\n if (domainComponent !== null) {\n this.domainComponents[index] = domainComponent;\n }\n }}\n x={this.geneX + x}\n y={this.domainY}\n width={width}\n height={this.domainHeight}\n color={domain.color}\n label={domain.label}\n labelColor={domain.labelColor}\n hitzoneClassName={[\n DELETE_FOR_DOWNLOAD_CLASS,\n this.makeDomainIndexClass(index),\n ].join(' ')}\n spec={domain}\n />\n );\n });\n }\n\n private yAxis(\n y: number,\n yMax: number,\n ticks: Tick[],\n placement?: LollipopPlacement,\n groupName?: string,\n symbol: string = '#'\n ) {\n const label = groupName\n ? `${symbol} ${this.props.hugoGeneSymbol ||\n ''} ${groupName} Mutations`\n : `${symbol} ${this.props.hugoGeneSymbol || ''} Mutations`;\n\n const placeOnBottom = placement === LollipopPlacement.BOTTOM;\n\n return (\n <SVGAxis\n key={`lollipopPlotYAxis_${placeOnBottom ? 'bottom' : 'top'}`}\n x={this.geneX - this.yAxisPadding}\n y={y}\n length={this.yAxisHeight}\n tickLength={7}\n rangeLower={0}\n rangeUpper={yMax}\n ticks={ticks}\n vertical={true}\n verticalLabelPadding={this.props.yAxisLabelPadding}\n reverse={placeOnBottom}\n label={label}\n />\n );\n }\n\n private xAxis(y: number, placement?: LollipopPlacement) {\n const placeOnTop = placement === LollipopPlacement.TOP;\n\n return (\n <SVGAxis\n key={`lollipopPlotXAxis_${placeOnTop ? 'top' : 'bottom'}`}\n x={this.geneX}\n y={y + (placeOnTop ? this.xAxisHeight : 0)}\n length={this.props.vizWidth}\n tickLength={7}\n rangeLower={0}\n rangeUpper={this.props.xMax}\n ticks={this.xTicks}\n invertTicks={placeOnTop}\n />\n );\n }\n\n private axisTicks(max: number, maxLabel: string, tickInterval: number) {\n let ticks: Tick[] = [];\n\n // Start and end, always there\n ticks.push({\n position: 0,\n label: '0',\n });\n ticks.push({\n position: max,\n label: maxLabel,\n });\n // Intermediate ticks, unlabeled\n ticks = ticks.concat(this.calculateTicks(tickInterval, max, false));\n\n return ticks;\n }\n\n @computed public get svgWidth() {\n return this.props.vizWidth + this.geneX + 30;\n }\n\n @computed public get svgHeight() {\n return this.needBottomPlacement\n ? 2 * this.props.vizHeight\n : this.props.vizHeight;\n }\n\n private calcStickBaseY(placement?: LollipopPlacement) {\n // by default start from the center of the plot\n let stickBaseY = this.geneCenterY;\n\n // calculation needed when the stick starts from the axis zero (above domains)\n if (this.props.zeroStickBaseY) {\n stickBaseY =\n placement === LollipopPlacement.BOTTOM\n ? this.bottomYAxisY\n : this.yAxisY + this.yAxisHeight;\n }\n\n return stickBaseY;\n }\n\n private makeDomainIndexClass(index: number) {\n return `${DOMAIN_ID_CLASS_PREFIX}${index}`;\n }\n\n private makeLollipopIndexClass(index: number) {\n return `${LOLLIPOP_ID_CLASS_PREFIX}${index}`;\n }\n\n private makeSequenceIndexClass(index: number) {\n return `${SEQUENCE_ID_CLASS_PREFIX}${index}`;\n }\n\n private getDomainIndex(classes: string): number | null {\n return getComponentIndex(classes, DOMAIN_ID_CLASS_PREFIX);\n }\n\n private getLollipopIndex(classes: string): number | null {\n return getComponentIndex(classes, LOLLIPOP_ID_CLASS_PREFIX);\n }\n\n private getSequenceIndex(classes: string): number | null {\n return getComponentIndex(classes, SEQUENCE_ID_CLASS_PREFIX);\n }\n\n public toSVGDOMNode(): Element {\n if (this.svg) {\n // Clone node\n const svg = this.svg.cloneNode(true) as Element;\n $(svg)\n .find('.' + DELETE_FOR_DOWNLOAD_CLASS)\n .remove();\n return svg;\n } else {\n return document.createElementNS(\n 'http://www.w3.org/2000/svg',\n 'svg'\n );\n }\n }\n\n render() {\n return (\n <div onMouseOver={this.onMouseOver}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n ref={this.ref as any}\n width={this.svgWidth}\n height={this.svgHeight}\n className=\"lollipop-svgnode\"\n onMouseLeave={this.onSVGMouseLeave}\n >\n <rect\n fill=\"#FFFFFF\"\n x={0}\n y={0}\n width={this.svgWidth}\n height={this.svgHeight}\n onClick={this.onBackgroundClick}\n onMouseMove={this.onBackgroundMouseMove}\n />\n {\n // Originally this had tooltips by having separate segments\n // with hit zones. We disabled those separate segments with\n // tooltips (this.sequenceSegments) and instead just draw\n // one rectangle\n // this.sequenceSegments\n }\n <rect\n fill=\"#BABDB6\"\n x={this.geneX}\n y={this.geneY}\n height={this.geneHeight}\n width={\n // the x-axis start from 0, so the rectangle size should be (width + 1)\n this.props.vizWidth + 1\n }\n />\n {this.lollipops}\n {this.domains}\n {this.xAxisOnTop && this.xAxis(0, LollipopPlacement.TOP)}\n {this.xAxisOnBottom &&\n this.xAxis(this.xAxisY, LollipopPlacement.BOTTOM)}\n {this.props.showYAxis &&\n this.yAxis(\n this.yAxisY,\n this.yMax,\n this.yTicks,\n LollipopPlacement.TOP,\n this.topGroupName,\n this.topGroupSymbol\n )}\n {this.props.showYAxis &&\n this.needBottomPlacement &&\n this.yAxis(\n this.bottomYAxisY,\n this.bottomYMax,\n this.bottomYTicks,\n LollipopPlacement.BOTTOM,\n this.bottomGroupName,\n this.bottomGroupSymbol\n )}\n </svg>\n </div>\n );\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { observable, computed, makeObservable } from 'mobx';\nimport {\n HitZoneConfig,\n defaultHitzoneConfig,\n initHitZoneFromConfig,\n DefaultTooltip,\n} from 'cbioportal-frontend-commons';\n\nimport DataStore from '../../model/DataStore';\nimport { SequenceSpec } from '../../model/SequenceSpec';\nimport { LollipopSpec } from '../../model/LollipopSpec';\nimport { DomainSpec } from '../../model/DomainSpec';\nimport LollipopPlotNoTooltip from './LollipopPlotNoTooltip';\n\nexport type LollipopPlotProps = {\n sequence?: SequenceSpec;\n lollipops: LollipopSpec[];\n domains: DomainSpec[];\n vizWidth: number;\n vizHeight: number;\n xMax: number;\n yMax?: number;\n bottomYMax?: number;\n yMaxFractionDigits?: number;\n yMaxLabelPostfix?: string;\n yAxisLabelPadding?: number;\n showYAxis?: boolean;\n xAxisOnTop?: boolean;\n xAxisOnBottom?: boolean;\n groups?: string[];\n topYAxisSymbol?: string;\n bottomYAxisSymbol?: string;\n zeroStickBaseY?: boolean;\n hugoGeneSymbol?: string;\n dataStore?: DataStore;\n onXAxisOffset?: (offset: number) => void;\n};\n\n@observer\nexport default class LollipopPlot extends React.Component<\n LollipopPlotProps,\n {}\n> {\n @observable private hitZoneConfig: HitZoneConfig = defaultHitzoneConfig();\n\n private plot: LollipopPlotNoTooltip | undefined;\n private handlers: any;\n\n public static defaultProps: Partial<LollipopPlotProps> = {\n vizHeight: 200,\n };\n\n constructor(props: LollipopPlotProps) {\n super(props);\n\n makeObservable<\n LollipopPlot,\n 'hitZoneConfig' | 'tooltipVisible' | 'hitZone'\n >(this);\n\n this.handlers = {\n ref: (plot: LollipopPlotNoTooltip) => {\n this.plot = plot;\n },\n setHitZone: (\n hitRect: {\n x: number;\n y: number;\n width: number;\n height: number;\n },\n content?: JSX.Element,\n onMouseOver?: () => void,\n onClick?: () => void,\n onMouseOut?: () => void,\n cursor: string = 'pointer',\n tooltipPlacement: string = 'top'\n ) => {\n this.hitZoneConfig = {\n hitRect,\n content,\n onMouseOver,\n onClick,\n onMouseOut,\n cursor,\n tooltipPlacement,\n };\n },\n getOverlay: () => this.hitZoneConfig.content,\n getOverlayPlacement: () => this.hitZoneConfig.tooltipPlacement,\n onMouseLeave: () => {\n this.hitZoneConfig.onMouseOut &&\n this.hitZoneConfig.onMouseOut();\n },\n onBackgroundMouseMove: () => {\n this.hitZoneConfig.onMouseOut &&\n this.hitZoneConfig.onMouseOut();\n },\n };\n }\n\n @computed private get tooltipVisible() {\n return !!this.hitZoneConfig.content;\n }\n\n @computed private get hitZone() {\n return initHitZoneFromConfig(this.hitZoneConfig);\n }\n\n public toSVGDOMNode(): Element {\n if (this.plot) {\n // Clone node\n return this.plot.toSVGDOMNode();\n } else {\n return document.createElementNS(\n 'http://www.w3.org/2000/svg',\n 'svg'\n );\n }\n }\n\n render() {\n const tooltipVisibleProps: any = {};\n if (!this.tooltipVisible) {\n tooltipVisibleProps.visible = false;\n }\n return (\n <div\n style={{\n position: 'relative',\n display: 'inline-block',\n }}\n data-test=\"LollipopPlot\"\n >\n <DefaultTooltip\n placement={this.handlers.getOverlayPlacement()}\n overlay={this.handlers.getOverlay}\n {...tooltipVisibleProps}\n >\n {this.hitZone}\n </DefaultTooltip>\n <LollipopPlotNoTooltip\n ref={this.handlers.ref}\n setHitZone={this.handlers.setHitZone}\n onMouseLeave={this.handlers.onMouseLeave}\n onBackgroundMouseMove={this.handlers.onBackgroundMouseMove}\n {...this.props}\n />\n </div>\n );\n }\n}\n","import { DownloadControls, EditableSpan } from 'cbioportal-frontend-commons';\nimport { numberOfLeadingDecimalZeros } from 'cbioportal-utils';\nimport classnames from 'classnames';\nimport _ from 'lodash';\nimport * as React from 'react';\nimport Slider from 'react-rangeslider';\nimport { computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\n\nimport { calcYMaxInput } from '../../util/LollipopPlotUtils';\nimport TrackSelector, {\n TrackDataStatus,\n TrackName,\n TrackVisibility,\n} from '../track/TrackSelector';\n\nimport 'react-rangeslider/lib/index.css';\nimport styles from './lollipopMutationPlot.module.scss';\n\ntype LollipopMutationPlotControlsProps = {\n showControls: boolean;\n hugoGeneSymbol: string;\n countRange: [number, number];\n bottomCountRange?: [number, number];\n onYAxisMaxSliderChange: (event: any) => void;\n onYAxisMaxChange: (inputValue: string) => void;\n onBottomYAxisMaxSliderChange?: (event: any) => void;\n onBottomYAxisMaxChange?: (inputValue: string) => void;\n onYMaxInputFocused: () => void;\n onYMaxInputBlurred: () => void;\n onToggleLegend: () => void;\n yMaxSlider: number;\n yMaxSliderStep: number;\n yMaxSliderWidth: number;\n yMaxInput: number;\n yAxisSameScale?: boolean;\n bottomYMaxSlider?: number;\n bottomYMaxSliderStep: number;\n bottomYMaxInput?: number;\n customControls?: JSX.Element;\n filterResetPanel?: JSX.Element;\n tracks?: TrackName[];\n trackVisibility?: TrackVisibility;\n trackDataStatus?: TrackDataStatus;\n showTrackSelector?: boolean;\n showYMaxSlider?: boolean;\n showLegendToggle?: boolean;\n showDownloadControls?: boolean;\n onTrackVisibilityChange?: (selectedTrackIds: string[]) => void;\n getSVG: () => SVGElement;\n};\n\nfunction formatInputValue(value: number, step: number = 1) {\n const decimalZeros = numberOfLeadingDecimalZeros(step);\n const fixed = decimalZeros < 0 ? 0 : decimalZeros + 1;\n\n return value.toFixed(fixed);\n}\n\n@observer\nexport default class LollipopMutationPlotControls extends React.Component<\n LollipopMutationPlotControlsProps,\n {}\n> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n public static defaultProps: Partial<LollipopMutationPlotControlsProps> = {\n showTrackSelector: true,\n showYMaxSlider: true,\n showLegendToggle: true,\n showDownloadControls: true,\n yMaxSliderWidth: 100,\n };\n\n @computed\n get showBottomYAxisSlider() {\n return (\n this.props.bottomCountRange &&\n _.compact(this.props.bottomCountRange).length > 0 &&\n this.props.onBottomYAxisMaxSliderChange &&\n this.props.onBottomYAxisMaxChange &&\n this.props.bottomYMaxSlider &&\n this.props.bottomYMaxInput\n );\n }\n\n protected maxValueSlider(\n countRange: [number, number],\n oppositeCountRange: [number, number],\n onYAxisMaxSliderChange: (event: any) => void,\n onYAxisMaxChange: (inputValue: string) => void,\n yMaxSlider: number,\n yMaxInput: number,\n yAxisSameScale: boolean = false,\n label: string = 'Y-Axis Max',\n width: number = 100,\n yMaxSliderStep: number = 1\n ) {\n return (\n <div\n className=\"small\"\n style={{\n display: 'flex',\n alignItems: 'center',\n marginLeft: 10,\n }}\n >\n <span>{label}:</span>\n <div\n style={{\n width: width,\n marginLeft: 10,\n marginRight: 10,\n }}\n >\n <Slider\n min={yMaxSliderStep}\n max={calcYMaxInput(\n undefined,\n yMaxSliderStep,\n countRange,\n oppositeCountRange,\n yAxisSameScale\n )}\n tooltip={false}\n step={yMaxSliderStep}\n onChange={onYAxisMaxSliderChange}\n value={yMaxSlider}\n />\n </div>\n <EditableSpan\n className={styles['ymax-number-input']}\n value={formatInputValue(yMaxInput, yMaxSliderStep)}\n setValue={onYAxisMaxChange}\n numericOnly={yMaxSliderStep >= 1}\n onFocus={this.props.onYMaxInputFocused}\n onBlur={this.props.onYMaxInputBlurred}\n />\n </div>\n );\n }\n\n protected get yMaxSlider() {\n return this.maxValueSlider(\n this.props.countRange,\n this.props.bottomCountRange!,\n this.props.onYAxisMaxSliderChange,\n this.props.onYAxisMaxChange,\n this.props.yMaxSlider,\n this.props.yMaxInput,\n this.props.yAxisSameScale,\n this.showBottomYAxisSlider ? 'Top Y-Axis Max' : 'Y-Axis Max',\n this.props.yMaxSliderWidth,\n this.props.yMaxSliderStep\n );\n }\n\n protected get bottomYMaxSlider() {\n if (this.showBottomYAxisSlider) {\n return this.maxValueSlider(\n this.props.bottomCountRange!,\n this.props.countRange,\n this.props.onBottomYAxisMaxSliderChange!,\n this.props.onBottomYAxisMaxChange!,\n this.props.bottomYMaxSlider!,\n this.props.bottomYMaxInput!,\n this.props.yAxisSameScale,\n 'Bottom Y-Axis Max',\n 100,\n this.props.bottomYMaxSliderStep\n );\n } else {\n return null;\n }\n }\n\n protected get trackSelector() {\n return (\n <div\n className={classnames('annotation-track-selector', 'small')}\n style={{ width: 180, marginRight: 7 }}\n >\n <TrackSelector\n tracks={this.props.tracks}\n trackVisibility={this.props.trackVisibility}\n trackDataStatus={this.props.trackDataStatus}\n onChange={this.props.onTrackVisibilityChange}\n />\n </div>\n );\n }\n\n protected get legendToggle() {\n return (\n <button\n className=\"btn btn-default btn-xs\"\n onClick={this.props.onToggleLegend}\n style={{ marginRight: 7 }}\n >\n Legend <i className=\"fa fa-eye\" aria-hidden=\"true\" />\n </button>\n );\n }\n\n protected get downloadControls() {\n return (\n <DownloadControls\n getSvg={this.props.getSVG}\n filename={`${this.props.hugoGeneSymbol}_lollipop`}\n dontFade={true}\n type=\"button\"\n />\n );\n }\n\n public render() {\n return (\n <div\n className={classnames(\n 'lollipop_mutation_plot__controls',\n this.props.showControls\n ? styles['fade-in']\n : styles['fade-out']\n )}\n >\n <div style={{ display: 'flex', alignItems: 'center' }}>\n {this.props.trackVisibility &&\n this.props.onTrackVisibilityChange &&\n this.props.showTrackSelector &&\n this.trackSelector}\n {this.props.showYMaxSlider && this.yMaxSlider}\n {this.props.showYMaxSlider && this.bottomYMaxSlider}\n {this.props.filterResetPanel}\n {this.props.customControls}\n <div style={{ display: 'flex', marginLeft: 'auto' }}>\n {this.props.showLegendToggle && this.legendToggle}\n {this.props.showDownloadControls &&\n this.downloadControls}\n </div>\n </div>\n {' '}\n </div>\n );\n }\n}\n","import { DataFilter } from '../model/DataFilter';\n\nexport enum HotspotFilterValue {\n DefaultHotspot = 'DEFAULT_HOTSPOT',\n}\n\nexport type HotspotFilter = DataFilter<HotspotFilterValue>;\n","import * as React from 'react';\nimport { computed, makeObservable, observable } from 'mobx';\nimport { observer } from 'mobx-react';\n\ntype TrackCircleProps = {\n x: number;\n y: number;\n radius?: number;\n isHovered: boolean;\n hoverRadius?: number;\n hitZoneClassName?: string;\n hitZoneXOffset?: number;\n spec: TrackCircleSpec;\n};\n\nexport type TrackCircleSpec = {\n startCodon: number;\n label?: string;\n color?: string;\n tooltip?: JSX.Element;\n};\n\n@observer\nexport default class TrackCircle extends React.Component<TrackCircleProps, {}> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n public static defaultProps = {\n radius: 2.8,\n hoverRadius: 5,\n };\n\n @computed get circleRadius() {\n return this.props.isHovered\n ? this.props.hoverRadius\n : this.props.radius;\n }\n\n public render() {\n return (\n <g>\n <circle\n stroke=\"#BABDB6\"\n strokeWidth=\"0.5\"\n fill={this.props.spec.color}\n r={this.circleRadius}\n cx={this.props.x}\n cy={this.props.y}\n />\n <circle\n className={this.props.hitZoneClassName}\n r={this.props.hoverRadius}\n cx={this.props.x}\n cy={this.props.y}\n cursor=\"pointer\"\n style={{ opacity: 0 }}\n />\n </g>\n );\n }\n}\n","import $ from 'jquery';\n\nexport function truncateDisplayText(\n label: string,\n textElt: SVGTextElement | null,\n width: number\n) {\n // Truncate text if necessary\n if (!textElt) {\n return label;\n }\n\n if (!$(textElt!).is(':visible')) {\n return label;\n }\n\n let substringLength = label.length;\n // Find the number of characters that will fit inside\n while (\n substringLength > 0 &&\n textElt!.getSubStringLength(0, substringLength) > width\n ) {\n substringLength -= 1;\n }\n let displayText = label;\n if (substringLength < label.length) {\n // If we have to do shortening\n substringLength -= 2; // make room for ellipsis \"..\"\n if (substringLength <= 0) {\n // too short to show any string\n displayText = '';\n } else {\n // if it's long enough to show anything at all\n displayText = label.substr(0, substringLength) + '..';\n }\n }\n return displayText;\n}\n","import * as React from 'react';\nimport { action, computed, makeObservable, observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport { truncateDisplayText } from '../../util/LabelUtils';\n\ntype TrackRectProps = {\n x: number;\n y: number;\n width?: number;\n height?: number;\n isHovered: boolean;\n hitZoneClassName?: string;\n hitZoneXOffset?: number;\n spec: TrackRectSpec;\n};\n\nexport type TrackRectSpec = {\n startCodon: number;\n endCodon?: number;\n label?: string;\n labelColor?: string;\n color?: string;\n tooltip?: JSX.Element;\n};\n\n@observer\nexport default class TrackRect extends React.Component<TrackRectProps, {}> {\n @observable private textElt: SVGTextElement | null = null;\n private handlers: any;\n constructor(props: any) {\n super(props);\n makeObservable(this);\n this.handlers = {\n textRef: action((text: SVGTextElement | null) => {\n this.textElt = text;\n }),\n };\n }\n\n public static defaultProps = {\n width: 50,\n height: 15,\n };\n\n private get centerX() {\n return this.props.x + this.props.width! / 2;\n }\n\n private get centerY() {\n return this.props.y + this.props.height! / 2;\n }\n\n private makeTextElement(reference: boolean) {\n let props: any = {\n x: this.centerX,\n y: this.centerY,\n textAnchor: 'middle',\n dy: '0.3em',\n fill: this.props.spec.labelColor || '#FFFFFF',\n style: {\n fontSize: '12px',\n fontFamily: 'arial',\n },\n };\n const label = this.props.spec.label || '';\n const displayText = truncateDisplayText(\n label,\n this.textElt,\n this.props.width!\n );\n const text = reference ? this.props.spec.labelColor || '' : displayText;\n if (reference) {\n props.ref = this.handlers.textRef;\n props.visibility = 'hidden';\n props.style = { opacity: 0 };\n props.className = this.props.hitZoneClassName;\n }\n return <text {...props}>{text}</text>;\n }\n\n @computed get strokeWidth() {\n return this.props.isHovered ? 2 : 0.5;\n }\n\n @computed get strokeColor() {\n return this.props.isHovered ? '#666666' : '#BABDB6';\n }\n\n public render() {\n return (\n <g>\n <rect\n stroke={this.strokeColor}\n strokeWidth={this.strokeWidth}\n fill={this.props.spec.color}\n width={this.props.width}\n height={this.props.height}\n x={this.props.x}\n y={this.props.y}\n />\n {this.makeTextElement(true)};{this.makeTextElement(false)}\n <rect\n className={this.props.hitZoneClassName}\n x={this.props.x}\n y={this.props.y}\n width={this.props.width}\n height={this.props.height}\n style={{ opacity: 0 }}\n />\n </g>\n );\n }\n}\n","import * as React from 'react';\nimport { computed, makeObservable, observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport TrackCircle from './TrackCircle';\nimport TrackRect from './TrackRect';\n\ntype TrackItemProps = {\n x: number;\n y: number;\n dim1: number; // radius or width\n dim2?: number; // height if necessary\n hoverdim1?: number;\n hitZoneClassName?: string;\n hitZoneXOffset?: number;\n spec: TrackItemSpec;\n};\n\nexport enum TrackItemType {\n CIRCLE,\n RECTANGLE,\n}\n\nexport type TrackItemSpec = {\n startCodon: number;\n endCodon?: number;\n itemType?: TrackItemType;\n label?: string;\n color?: string;\n tooltip?: JSX.Element;\n height?: number;\n};\n\n@observer\nexport default class TrackItem extends React.Component<TrackItemProps> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n\n @observable public isHovered = false;\n\n @computed public get hitRectangle() {\n let hoverWidth;\n let hoverHeight;\n let xOffset;\n if (this.props.spec.itemType === TrackItemType.CIRCLE) {\n hoverHeight =\n this.props.hoverdim1 || TrackCircle.defaultProps.hoverRadius;\n\n hoverWidth =\n this.props.hoverdim1 || TrackCircle.defaultProps.hoverRadius;\n\n xOffset =\n this.props.x - hoverWidth + (this.props.hitZoneXOffset || 0);\n } else {\n hoverHeight = this.props.dim2! / 2;\n\n hoverWidth = this.props.dim1! / 2;\n\n xOffset = this.props.x + (this.props.hitZoneXOffset || 0);\n }\n\n return {\n x: xOffset,\n y: this.props.y,\n width: hoverWidth * 2,\n height: hoverHeight * 2,\n };\n }\n\n public render() {\n if (this.props.spec.itemType === TrackItemType.CIRCLE) {\n return (\n <TrackCircle\n isHovered={this.isHovered}\n radius={this.props.dim1}\n hoverRadius={this.props.hoverdim1}\n {...this.props}\n />\n );\n } else {\n return (\n <TrackRect\n isHovered={this.isHovered}\n width={this.props.dim1}\n height={this.props.dim2}\n {...this.props}\n />\n );\n }\n }\n}\n","import * as React from 'react';\nimport $ from 'jquery';\nimport { observer } from 'mobx-react';\nimport { SyntheticEvent } from 'react';\nimport { action, computed, observable, makeObservable } from 'mobx';\nimport autobind from 'autobind-decorator';\nimport classnames from 'classnames';\n\nimport {\n defaultHitzoneConfig,\n DefaultTooltip,\n getComponentIndex,\n HitZoneConfig,\n initHitZoneFromConfig,\n unhoverAllComponents,\n} from 'cbioportal-frontend-commons';\n\nimport { DataFilter } from '../../model/DataFilter';\nimport DataStore from '../../model/DataStore';\nimport {\n updatePositionSelectionFilters,\n updatePositionRangeHighlightFilters,\n} from '../../util/FilterUtils';\nimport TrackItem, { TrackItemSpec, TrackItemType } from './TrackItem';\nimport styles from './trackStyles.module.scss';\n\nconst DEFAULT_ID_CLASS_PREFIX = 'track-circle-';\nconst DEFAULT_HEIGHT = 15; // height of rectangle element\n\nexport type TrackProps = {\n dataStore: DataStore;\n width: number;\n proteinLength: number;\n trackItems?: TrackItemSpec[];\n trackTitle?: JSX.Element;\n hideBaseline?: boolean;\n xOffset?: number;\n defaultFilters?: DataFilter[];\n idClassPrefix?: string;\n isSubTrack?: boolean;\n};\n\n@observer\nexport default class Track extends React.Component<TrackProps, {}> {\n @observable private hitZoneConfig: HitZoneConfig = defaultHitzoneConfig();\n @observable private shiftPressed = false;\n private tooltipActive = false;\n\n private shapes: { [index: string]: TrackItem };\n\n constructor(props: TrackProps) {\n super(props);\n makeObservable<\n Track,\n | 'hitZoneConfig'\n | 'shiftPressed'\n | 'unhoverAllComponents'\n | 'tooltipVisible'\n | 'hitZone'\n >(this);\n }\n\n @autobind\n setHitZone(\n hitRect: { x: number; y: number; width: number; height: number },\n content?: JSX.Element,\n onMouseOver?: () => void,\n onClick?: () => void,\n onMouseOut?: () => void,\n cursor: string = 'pointer',\n tooltipPlacement: string = 'top'\n ) {\n this.hitZoneConfig = {\n hitRect,\n content,\n onMouseOver,\n onClick,\n onMouseOut,\n cursor,\n tooltipPlacement,\n };\n }\n\n @autobind\n getOverlay() {\n return this.hitZoneConfig.content;\n }\n\n @autobind\n getOverlayPlacement() {\n return this.hitZoneConfig.tooltipPlacement;\n }\n\n @action.bound\n onMouseLeave() {\n if (this.hitZoneConfig.onMouseOut) {\n this.hitZoneConfig.onMouseOut();\n }\n }\n\n @autobind\n onBackgroundMouseMove() {\n if (this.hitZoneConfig.onMouseOut) {\n this.hitZoneConfig.onMouseOut();\n }\n }\n\n @action.bound\n onBackgroundClick() {\n this.props.dataStore.clearSelectionFilters();\n }\n\n @action.bound\n onTrackItemClick(shapeComponent: TrackItem) {\n if (shapeComponent.props.spec.itemType === TrackItemType.CIRCLE) {\n updatePositionSelectionFilters(\n this.props.dataStore,\n shapeComponent.props.spec.startCodon,\n this.shiftPressed,\n this.props.defaultFilters\n );\n }\n }\n\n @action.bound\n onTrackItemHover(shapeComponent: TrackItem) {\n const endCodon: number = shapeComponent.props.spec.endCodon\n ? Math.trunc(shapeComponent.props.spec.endCodon)\n : Math.trunc(shapeComponent.props.spec.startCodon);\n\n updatePositionRangeHighlightFilters(\n this.props.dataStore,\n Math.trunc(shapeComponent.props.spec.startCodon),\n endCodon,\n this.props.defaultFilters\n );\n shapeComponent.isHovered = true;\n }\n\n @action.bound\n onKeyDown(e: JQueryKeyEventObject) {\n if (e.which === 16) {\n this.shiftPressed = true;\n }\n }\n\n @action.bound\n onKeyUp(e: JQueryKeyEventObject) {\n if (e.which === 16) {\n this.shiftPressed = false;\n }\n }\n\n @action.bound\n onMouseOver(e: SyntheticEvent<any>) {\n // No matter what, unhover all components - if we're hovering one, we'll set it later in this method\n this.unhoverAllComponents();\n\n const target = e.target as SVGElement;\n const className = target.getAttribute('class') || '';\n const componentIndex: number | null = this.getComponentIndex(className);\n\n if (componentIndex !== null) {\n const shapeComponent = this.shapes[componentIndex];\n if (shapeComponent) {\n this.setHitZone(\n shapeComponent.hitRectangle,\n shapeComponent.props.spec.tooltip,\n action(() => this.onTrackItemHover(shapeComponent)),\n action(() => this.onTrackItemClick(shapeComponent)),\n this.onHitzoneMouseOut,\n 'pointer',\n 'bottom'\n );\n }\n }\n }\n\n @action.bound\n onSVGMouseLeave(e: SyntheticEvent<any>) {\n const target = e.target as Element;\n if (target.tagName.toLowerCase() === 'svg') {\n this.onMouseLeave();\n }\n }\n\n @action.bound\n onTooltipVisibleChange(visible: boolean) {\n this.tooltipActive = visible;\n\n if (!visible) {\n this.unhoverAllComponents();\n }\n }\n\n @action.bound\n onHitzoneMouseOut() {\n if (!this.tooltipActive) {\n this.unhoverAllComponents();\n }\n }\n\n get svgHeight() {\n return 10; // height of baseline element\n }\n\n get items() {\n this.shapes = {};\n\n return (this.props.trackItems || []).map((spec, index) => {\n let dim1;\n let dim2;\n let hoverdim1;\n let specFeats;\n let y;\n if (spec.endCodon !== undefined) {\n dim1 =\n ((spec.endCodon! - spec.startCodon) /\n this.props.proteinLength) *\n this.props.width;\n dim2 = spec.height || DEFAULT_HEIGHT;\n hoverdim1 = dim1;\n y = (this.svgHeight - dim2) / 2; // y is the vertical start position of rectangle, half of baseline element height = half of element height + y\n specFeats = {\n ...spec,\n endCodon: spec.endCodon!,\n itemType: TrackItemType.RECTANGLE,\n };\n } else {\n dim1 =\n this.props.dataStore.isPositionSelected(spec.startCodon) ||\n this.props.dataStore.isPositionHighlighted(spec.startCodon)\n ? 5\n : 2.8;\n hoverdim1 = 5;\n y = this.svgHeight / 2;\n dim2 = dim1;\n specFeats = { ...spec, itemType: TrackItemType.CIRCLE };\n }\n return (\n <TrackItem\n ref={(item: TrackItem) => {\n if (item !== null) {\n this.shapes[index] = item;\n }\n }}\n key={spec.startCodon}\n hitZoneClassName={`${this.props.idClassPrefix}${index}`}\n hitZoneXOffset={this.props.xOffset}\n x={\n (spec.startCodon / this.props.proteinLength) *\n this.props.width\n }\n y={y}\n dim1={dim1}\n dim2={dim2}\n spec={specFeats}\n />\n );\n });\n }\n\n @action\n private unhoverAllComponents() {\n unhoverAllComponents(this.shapes);\n this.props.dataStore.clearHighlightFilters();\n }\n\n private getComponentIndex(classes: string): number | null {\n return getComponentIndex(\n classes,\n this.props.idClassPrefix || DEFAULT_ID_CLASS_PREFIX\n );\n }\n\n @computed private get tooltipVisible() {\n return !!this.hitZoneConfig.content;\n }\n\n @computed private get hitZone() {\n return initHitZoneFromConfig(this.hitZoneConfig);\n }\n\n get tooltipVisibleProps() {\n const tooltipVisibleProps: any = {};\n\n if (!this.tooltipVisible) {\n tooltipVisibleProps.visible = false;\n }\n\n return tooltipVisibleProps;\n }\n\n public componentDidMount() {\n // Make it so that if you hold down shift, you can select more than one item at once\n $(document).on('keydown', this.onKeyDown);\n $(document).on('keyup', this.onKeyUp);\n }\n\n componentWillUnmount() {\n $(document).off('keydown', this.onKeyDown as any);\n $(document).off('keyup', this.onKeyUp as any);\n }\n\n public render() {\n return (\n <div\n style={{\n position: 'relative',\n display: 'flex',\n }}\n >\n <span\n className={classnames(\n styles.trackTitle,\n 'small',\n `${this.props.isSubTrack ? 'subtrack-' : ''}trackTitle`\n )}\n >\n {this.props.trackTitle}\n </span>\n <span>\n <DefaultTooltip\n placement={this.getOverlayPlacement()}\n overlay={this.getOverlay}\n onVisibleChange={this.onTooltipVisibleChange}\n destroyTooltipOnHide={true}\n {...this.tooltipVisibleProps}\n >\n {this.hitZone}\n </DefaultTooltip>\n <span\n style={{ marginLeft: this.props.xOffset }}\n onMouseOver={this.onMouseOver}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={this.props.width}\n height={this.svgHeight}\n className=\"track-svgnode\"\n onMouseLeave={this.onSVGMouseLeave}\n style={{ overflow: 'visible' }}\n >\n <rect\n fill=\"#FFFFFF\"\n x={0}\n y={0}\n width={this.props.width}\n height={this.svgHeight}\n onClick={action(this.onBackgroundClick)}\n onMouseMove={this.onBackgroundMouseMove}\n />\n {!this.props.hideBaseline && (\n <line\n stroke=\"#666666\"\n strokeWidth=\"0.5\"\n x1={0}\n x2={this.props.width}\n y1={this.svgHeight / 2}\n y2={this.svgHeight / 2}\n />\n )}\n {this.items}\n </svg>\n </span>\n </span>\n </div>\n );\n }\n}\n","import {\n defaultHotspotFilter,\n filter3dHotspotsByMutations,\n filterLinearClusterHotspotsByMutations,\n IHotspotIndex,\n isHotspot,\n Mutation,\n} from 'cbioportal-utils';\nimport { Hotspot } from 'genome-nexus-ts-api-client';\nimport * as React from 'react';\nimport _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport { computed, makeObservable } from 'mobx';\n\nimport { HotspotFilterValue } from '../../filter/HotspotFilter';\nimport { DataFilterType } from '../../model/DataFilter';\nimport MutationMapperStore from '../../model/MutationMapperStore';\nimport { HotspotInfo } from '../hotspot/HotspotInfo';\nimport Track, { TrackProps } from './Track';\nimport { TrackItemSpec } from './TrackItem';\n\nimport hotspotImg from '../../images/cancer-hotspots.svg';\n\ntype HotspotTrackProps = TrackProps & {\n store: MutationMapperStore<Mutation>;\n hotspotIndex: IHotspotIndex;\n};\n\nexport function hotspotTooltip(\n mutations: Mutation[],\n hotspotIndex: IHotspotIndex,\n hotspots: Hotspot[]\n) {\n const hotspotsLinearCluster = filterLinearClusterHotspotsByMutations(\n mutations,\n hotspotIndex\n );\n\n const hotspots3d = filter3dHotspotsByMutations(mutations, hotspotIndex);\n\n const hotspotCount = mutations.filter(mutation =>\n isHotspot(mutation, hotspotIndex, defaultHotspotFilter)\n ).length;\n\n // generate custom info\n const residues = _.uniq(hotspots.map(hotspot => hotspot.residue));\n const residuesText = <b>{`${residues.join(', ')}`}</b>;\n const pluralSuffix = residues.length > 1 ? 's' : undefined;\n const residueInfo = (\n <span>\n on residue{pluralSuffix} {residuesText}\n </span>\n );\n\n return (\n <HotspotInfo\n isHotspot={hotspotsLinearCluster.length > 0}\n is3dHotspot={hotspots3d.length > 0}\n count={hotspotCount}\n customInfo={residueInfo}\n />\n );\n}\n\nexport function getHotspotImage() {\n return <img src={hotspotImg} alt=\"Recurrent Hotspot Symbol\" />;\n}\n\n@observer\nexport default class HotspotTrack extends React.Component<\n HotspotTrackProps,\n {}\n> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n @computed get hotspotSpecs(): TrackItemSpec[] {\n const filteredHotspotsByProteinPosStart = this.props.store\n .hotspotsByPosition;\n\n if (!_.isEmpty(filteredHotspotsByProteinPosStart)) {\n return _.keys(filteredHotspotsByProteinPosStart)\n .filter(position => Number(position) >= 0)\n .map(position => ({\n startCodon: Number(position),\n color: '#FF9900',\n tooltip: hotspotTooltip(\n this.props.store.mutationsByPosition[Number(position)],\n this.props.store.indexedHotspotData.result || {},\n filteredHotspotsByProteinPosStart[Number(position)]\n ),\n }));\n } else {\n return [];\n }\n }\n\n @computed get trackTitle() {\n return (\n <span>\n <span style={{ marginRight: 2 }}>{getHotspotImage()}</span>\n Cancer Hotspots\n </span>\n );\n }\n\n public render() {\n return (\n <Track\n dataStore={this.props.dataStore}\n defaultFilters={[\n {\n type: DataFilterType.HOTSPOT,\n values: [HotspotFilterValue.DefaultHotspot],\n },\n ]}\n width={this.props.width}\n xOffset={this.props.xOffset}\n proteinLength={this.props.proteinLength}\n trackTitle={this.trackTitle}\n trackItems={this.hotspotSpecs}\n idClassPrefix={'cancer-hotspot-'}\n />\n );\n }\n}\n","import { DataFilter } from '../model/DataFilter';\n\nexport enum OncoKbFilterValue {\n Oncogenic = 'ONCOGENIC',\n}\n\nexport type OncoKbFilter = DataFilter<OncoKbFilterValue>;\n","import classnames from 'classnames';\nimport { computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport ReactTable, { Column } from 'react-table';\n\nimport { EllipsisTextTooltip } from 'cbioportal-frontend-commons';\nimport { calcProteinChangeSortValue } from 'cbioportal-utils';\n\nimport {\n defaultSortMethod,\n defaultStringArraySortMethod,\n} from 'cbioportal-utils';\nimport { levelIconClassNames } from '../../util/OncoKbUtils';\n\nexport type OncoKbSummaryTableProps = {\n usingPublicOncoKbInstance: boolean;\n data: OncoKbSummary[];\n initialSortColumn?: string;\n initialSortDirection?: 'asc' | 'desc';\n initialItemsPerPage?: number;\n};\n\nexport type OncoKbSummary = {\n count: number;\n proteinChange: string;\n clinicalImplication: string[];\n biologicalEffect: string[];\n level: { level: string; tumorTypes: string[] }[];\n};\n\n@observer\nexport default class OncoKbSummaryTable extends React.Component<\n OncoKbSummaryTableProps,\n {}\n> {\n public static defaultProps = {\n data: [],\n initialSortColumn: 'count',\n initialSortDirection: 'desc',\n initialItemsPerPage: 10,\n };\n\n constructor(props: OncoKbSummaryTableProps) {\n super(props);\n makeObservable(this);\n this.state = {};\n }\n\n @computed\n get hasLevelData(): boolean {\n return this.props.data.find(d => d.level.length > 0) !== undefined;\n }\n\n @computed\n get columns(): Column[] {\n let columns: Column[] = [\n {\n id: 'proteinChange',\n accessor: 'proteinChange',\n Header: 'Protein Change',\n sortMethod: (a: string, b: string) =>\n defaultSortMethod(\n calcProteinChangeSortValue(a),\n calcProteinChangeSortValue(b)\n ),\n },\n {\n id: 'count',\n accessor: 'count',\n Header: 'Occurrence',\n maxWidth: 80,\n },\n {\n id: 'clinicalImplication',\n accessor: 'clinicalImplication',\n Header: 'Implication',\n Cell: (props: { original: OncoKbSummary }) => (\n <span>{props.original.clinicalImplication.join(', ')}</span>\n ),\n sortMethod: defaultStringArraySortMethod,\n minWidth: 120,\n },\n {\n id: 'biologicalEffect',\n accessor: 'biologicalEffect',\n Header: 'Effect',\n Cell: (props: { original: OncoKbSummary }) => (\n <span>{props.original.biologicalEffect.join(', ')}</span>\n ),\n sortMethod: defaultStringArraySortMethod,\n minWidth: 150,\n },\n ];\n if (!this.props.usingPublicOncoKbInstance) {\n columns.push({\n id: 'level',\n accessor: 'level',\n Header: 'Level',\n sortable: false,\n Cell: (props: { original: OncoKbSummary }) => (\n <React.Fragment>\n {props.original.level.map(level => (\n <div\n key={level.level}\n style={{\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }}\n >\n <i\n className={levelIconClassNames(level.level)}\n style={{\n verticalAlign: 'text-bottom',\n display: 'inline-block',\n }}\n />\n <span>: </span>\n <EllipsisTextTooltip\n text={level.tumorTypes.join(', ')}\n style={{\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n }}\n />\n </div>\n ))}\n </React.Fragment>\n ),\n minWidth: this.hasLevelData ? 180 : 50,\n });\n }\n return columns;\n }\n\n public render() {\n const {\n data,\n initialSortColumn,\n initialSortDirection,\n initialItemsPerPage,\n } = this.props;\n\n const showPagination =\n data.length >\n (this.props.initialItemsPerPage ||\n OncoKbSummaryTable.defaultProps.initialItemsPerPage);\n\n return (\n <div\n className={classnames(\n 'cbioportal-frontend',\n 'default-track-tooltip-table'\n )}\n >\n <ReactTable\n data={data}\n columns={this.columns}\n defaultSorted={[\n {\n id:\n initialSortColumn ||\n OncoKbSummaryTable.defaultProps\n .initialSortColumn,\n desc: initialSortDirection === 'desc',\n },\n ]}\n defaultPageSize={\n data.length > initialItemsPerPage!\n ? initialItemsPerPage\n : data.length\n }\n showPagination={showPagination}\n showPaginationTop={true}\n showPaginationBottom={false}\n className=\"-striped -highlight\"\n previousText=\"<\"\n nextText=\">\"\n />\n </div>\n );\n }\n}\n","import * as React from 'react';\nimport _ from 'lodash';\n\nimport { LEVELS, Mutation } from 'cbioportal-utils';\nimport { IndicatorQueryResp } from 'oncokb-ts-api-client';\n\nimport OncoKbSummaryTable from '../oncokb/OncoKbSummaryTable';\nimport { makeObservable } from 'mobx';\n\ntype OncoKbTrackTooltipProps = {\n usingPublicOncoKbInstance: boolean;\n mutations: Mutation[];\n indicatorData?: IndicatorQueryResp[];\n hugoGeneSymbol?: string;\n};\n\nexport function oncoKbTooltip(\n usingPublicOncoKbInstance: boolean,\n indicatorData: IndicatorQueryResp[]\n) {\n const sampleCount = indicatorData.length;\n\n // generate info\n\n const pluralSuffix = sampleCount > 1 ? 's' : undefined;\n const groupedByImplication = _.groupBy(indicatorData, 'oncogenic');\n const oncogenicKeywords = _.keys(groupedByImplication).map(keyword => (\n <b>{keyword}</b>\n ));\n let oncogenicInfo: (JSX.Element | string)[] = [];\n\n if (oncogenicKeywords.length > 1) {\n // join all except the last one with ','\n const joined = oncogenicKeywords\n .slice(0, oncogenicKeywords.length - 1)\n .reduce((prev: JSX.Element, curr: JSX.Element): any => [\n prev,\n ', ',\n curr,\n ]);\n\n oncogenicInfo.push(joined);\n\n // add the last one after \"and\"\n oncogenicInfo.push(' and ');\n oncogenicInfo.push(oncogenicKeywords[oncogenicKeywords.length - 1]);\n } else {\n // use oncogenic keywords array as is\n oncogenicInfo = oncogenicKeywords;\n }\n\n const groupedByProteinChange = _.groupBy(\n indicatorData,\n d => d.query.alteration\n );\n const tableData = _.keys(groupedByProteinChange).map(proteinChange => ({\n count: groupedByProteinChange[proteinChange].length,\n proteinChange: proteinChange,\n clinicalImplication: _.uniq(\n groupedByProteinChange[proteinChange].map(indicator =>\n indicator.oncogenic ? indicator.oncogenic : 'Unknown'\n )\n ),\n biologicalEffect: _.uniq(\n groupedByProteinChange[proteinChange].map(indicator =>\n indicator.mutationEffect && indicator.mutationEffect.knownEffect\n ? indicator.mutationEffect.knownEffect\n : 'Unknown'\n )\n ),\n level: generateLevelData(groupedByProteinChange[proteinChange]),\n }));\n\n // generate the tooltip\n\n return (\n <span>\n <b>{sampleCount}</b> sample{pluralSuffix} with {oncogenicInfo}{' '}\n mutations.\n <OncoKbSummaryTable\n usingPublicOncoKbInstance={usingPublicOncoKbInstance}\n data={tableData}\n />\n </span>\n );\n}\n\nexport function generateLevelData(indicatorData: IndicatorQueryResp[]) {\n const levels: { [level: string]: string[] } = {};\n\n indicatorData.forEach(indicator => {\n indicator.treatments.forEach(treatment => {\n const parts = treatment.level.split('_');\n const level = parts.length === 2 ? parts[1] : treatment.level;\n\n levels[level] = levels[level] || [];\n levels[level].push(indicator.query.tumorType);\n });\n });\n\n return _.keys(levels)\n .sort((a, b) =>\n LEVELS.all.indexOf(a) > LEVELS.all.indexOf(b) ? -1 : 1\n )\n .map(level => ({ level: level, tumorTypes: _.uniq(levels[level]) }));\n}\n\nexport const OncoKbTrackTooltip: React.FunctionComponent<OncoKbTrackTooltipProps> = props => {\n return props.indicatorData\n ? oncoKbTooltip(props.usingPublicOncoKbInstance, props.indicatorData)\n : null;\n};\n","import * as React from 'react';\nimport _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport { computed, makeObservable } from 'mobx';\n\nimport { OncoKbFilterValue } from '../../filter/OncoKbFilter';\nimport { DataFilterType } from '../../model/DataFilter';\nimport MutationMapperStore from '../../model/MutationMapperStore';\nimport { OncoKbTrackTooltip } from './OncoKbTrackTooltip';\nimport { default as Track, TrackProps } from './Track';\nimport { TrackItemSpec } from './TrackItem';\nimport { Mutation } from 'cbioportal-utils';\n\nimport oncoKbImg from '../../images/oncogenic-only.svg';\n\ntype OncoKbTrackProps = TrackProps & {\n store: MutationMapperStore<Mutation>;\n};\n\nexport function getOncoKbImage() {\n return <img src={oncoKbImg} alt=\"OncoKB Oncogenic Symbol\" />;\n}\n\n@observer\nexport default class OncoKbTrack extends React.Component<OncoKbTrackProps, {}> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n\n @computed get oncoKbSpecs(): TrackItemSpec[] {\n const filteredOncoKbDataByProteinPosStart = this.props.store\n .oncoKbDataByPosition;\n\n if (!_.isEmpty(filteredOncoKbDataByProteinPosStart)) {\n return _.keys(filteredOncoKbDataByProteinPosStart)\n .filter(position => Number(position) >= 0)\n .map(position => ({\n startCodon: Number(position),\n color: '#007FFF',\n tooltip: (\n <OncoKbTrackTooltip\n usingPublicOncoKbInstance={\n this.props.store.usingPublicOncoKbInstance\n }\n mutations={\n this.props.store.mutationsByPosition[\n Number(position)\n ]\n }\n indicatorData={\n filteredOncoKbDataByProteinPosStart[\n Number(position)\n ]\n }\n hugoGeneSymbol={\n this.props.store.gene.hugoGeneSymbol\n }\n />\n ),\n }));\n } else {\n return [];\n }\n }\n\n @computed get trackTitle() {\n return (\n <span>\n <span style={{ marginRight: 2 }}>{getOncoKbImage()}</span>\n OncoKB\n </span>\n );\n }\n\n public render() {\n return (\n <Track\n dataStore={this.props.dataStore}\n defaultFilters={[\n {\n type: DataFilterType.ONCOKB,\n values: [OncoKbFilterValue.Oncogenic],\n },\n ]}\n width={this.props.width}\n xOffset={this.props.xOffset}\n proteinLength={this.props.proteinLength}\n trackTitle={this.trackTitle}\n trackItems={this.oncoKbSpecs}\n idClassPrefix={'onco-kb-'}\n />\n );\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { computed, makeObservable } from 'mobx';\nimport MutationMapperStore from '../../model/MutationMapperStore';\nimport { default as Track, TrackProps } from './Track';\nimport { TrackItemSpec } from './TrackItem';\nimport {\n Mutation,\n ExonDatum,\n extractExonInformation,\n formatExonLocation,\n formatExonLength,\n} from 'cbioportal-utils';\nimport { EnsemblTranscript } from 'genome-nexus-ts-api-client';\n\ntype ExonTrackProps = TrackProps & {\n store: MutationMapperStore<Mutation>;\n};\n\n@observer\nexport default class ExonTrack extends React.Component<ExonTrackProps, {}> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n\n @computed get transcriptId(): string | undefined {\n return this.props.store.activeTranscript?.result;\n }\n\n @computed get transcript(): EnsemblTranscript | undefined {\n return this.transcriptId\n ? this.props.store.transcriptsByTranscriptId[this.transcriptId]\n : undefined;\n }\n\n @computed get exonSpecs(): TrackItemSpec[] {\n if (!this.transcriptId || !this.transcript) {\n return [];\n }\n\n const exons = this.transcript!.exons;\n const utrs = this.transcript!.utrs || [];\n\n const exonInfo = exons\n ? extractExonInformation(exons, utrs, this.props.proteinLength)\n : undefined;\n\n const altColors = ['#007FFF', '#35BAF6'];\n\n return exonInfo\n ? exonInfo.map((exon: ExonDatum, index: number) => {\n const startCodon = exon.start;\n const endCodon = exon.start + exon.length;\n const exonLength = exon.length;\n const isSkippable = Number.isInteger(exonLength);\n const stringStart = formatExonLocation(startCodon, index);\n const stringEnd = formatExonLocation(endCodon);\n const stringLength = formatExonLength(exonLength);\n\n return {\n color: altColors[index % 2],\n startCodon: startCodon,\n endCodon: endCodon,\n label: exon.rank.toString(),\n labelColor: '#FFFFFF',\n tooltip: (\n <span>\n <h5> Exon {exon.rank} </h5>\n Start: {stringStart}\n <br></br>\n End: {stringEnd}\n <br></br>\n Length: {stringLength}\n </span>\n ),\n };\n })\n : [];\n }\n\n @computed get trackTitle() {\n return (\n <span>\n <span style={{ marginLeft: 16 }}></span>\n Exon\n </span>\n );\n }\n\n public render() {\n return (\n <Track\n dataStore={this.props.dataStore}\n width={this.props.width}\n xOffset={this.props.xOffset}\n proteinLength={this.props.proteinLength}\n trackTitle={this.trackTitle}\n trackItems={this.exonSpecs}\n idClassPrefix={'exon-'}\n />\n );\n }\n}\n","import { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { Cache } from 'cbioportal-utils';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport ReferenceList from '../oncokb/ReferenceList';\n\ntype PtmReferenceListProps = {\n pubmedIds: string[];\n pmidData: Cache;\n};\n\nfunction extractNumericalPart(pmid: string) {\n const matched = pmid.match(/[0-9]+/);\n\n if (matched) {\n return Number(matched[0]);\n } else {\n return undefined;\n }\n}\n\n@observer\nexport default class PtmReferenceList extends React.Component<\n PtmReferenceListProps,\n {}\n> {\n public render() {\n return (\n <DefaultTooltip\n placement=\"right\"\n overlay={\n <div\n style={{\n maxWidth: 400,\n maxHeight: 400,\n overflowY: 'auto',\n }}\n >\n <ReferenceList\n pmids={\n this.props.pubmedIds\n .map(id => extractNumericalPart(id))\n .filter(id => id !== undefined) as number[]\n }\n pmidData={this.props.pmidData}\n abstracts={[]}\n />\n </div>\n }\n destroyTooltipOnHide={true}\n >\n <div style={{ textAlign: 'right' }}>\n <i className=\"fa fa-book\" style={{ color: 'black' }} />\n </div>\n </DefaultTooltip>\n );\n }\n}\n","import _ from 'lodash';\nimport classnames from 'classnames';\nimport * as React from 'react';\nimport ReactTable, { Column } from 'react-table';\nimport { computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\n\nimport {\n Cache,\n MobxCache,\n PostTranslationalModification,\n} from 'cbioportal-utils';\n\nimport PtmReferenceList from './PtmReferenceList';\n\nexport type PtmSummaryTableProps = {\n data: PostTranslationalModification[];\n pubMedCache?: MobxCache;\n initialSortColumn?: string;\n initialSortDirection?: 'asc' | 'desc';\n initialItemsPerPage?: number;\n columnOverrides?: { [id: string]: Partial<Column> };\n};\n\nexport enum PtmAnnotationTableColumnId {\n POSITION = 'position',\n TYPE = 'type',\n DESCRIPTION = 'description',\n PUBMED_IDS = 'pubmedIds',\n}\n\nexport const PTM_ANNOTATION_DEFAULT_COLUMNS: { [id: string]: Column } = {\n [PtmAnnotationTableColumnId.POSITION]: {\n id: PtmAnnotationTableColumnId.POSITION,\n accessor: (ptm: PostTranslationalModification) => ptm.residue.start,\n Header: 'Residue',\n Cell: (props: { original: PostTranslationalModification }) => (\n <div style={{ textAlign: 'right' }}>\n {getResidue(props.original)}\n </div>\n ),\n maxWidth: 64,\n },\n [PtmAnnotationTableColumnId.TYPE]: {\n id: PtmAnnotationTableColumnId.TYPE,\n accessor: (ptm: PostTranslationalModification) => ptm.type,\n Header: 'Type',\n minWidth: 100,\n },\n [PtmAnnotationTableColumnId.DESCRIPTION]: {\n id: PtmAnnotationTableColumnId.DESCRIPTION,\n accessor: (ptm: PostTranslationalModification) => ptm.description,\n Header: 'Description',\n minWidth: 180,\n },\n [PtmAnnotationTableColumnId.PUBMED_IDS]: {\n id: PtmAnnotationTableColumnId.PUBMED_IDS,\n Header: '',\n sortable: false,\n maxWidth: 32,\n },\n};\n\nfunction getResidue(ptm: PostTranslationalModification): string {\n if (ptm.residue.end && ptm.residue.end > ptm.residue.start) {\n return `${ptm.residue.start}-${ptm.residue.end}`;\n } else {\n return ptm.residue.start.toString();\n }\n}\n\n@observer\nexport default class PtmAnnotationTable extends React.Component<\n PtmSummaryTableProps\n> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n public static defaultProps = {\n data: [],\n initialSortColumn: 'type',\n initialSortDirection: 'asc',\n initialItemsPerPage: 10,\n };\n\n @computed\n get pmidData(): Cache {\n if (this.props.pubMedCache) {\n this.props.data.forEach(ptm =>\n (ptm.pubmedIds || []).forEach(id =>\n this.props.pubMedCache!.get(Number(id))\n )\n );\n }\n\n return (this.props.pubMedCache && this.props.pubMedCache.cache) || {};\n }\n\n @computed\n get columns(): Column[] {\n const columnOverrides = this.props.columnOverrides\n ? this.props.columnOverrides\n : {};\n return [\n {\n ...PTM_ANNOTATION_DEFAULT_COLUMNS[\n PtmAnnotationTableColumnId.POSITION\n ],\n ...columnOverrides[PtmAnnotationTableColumnId.POSITION],\n },\n {\n ...PTM_ANNOTATION_DEFAULT_COLUMNS[\n PtmAnnotationTableColumnId.TYPE\n ],\n ...columnOverrides[PtmAnnotationTableColumnId.TYPE],\n },\n {\n ...PTM_ANNOTATION_DEFAULT_COLUMNS[\n PtmAnnotationTableColumnId.DESCRIPTION\n ],\n ...columnOverrides[PtmAnnotationTableColumnId.DESCRIPTION],\n },\n {\n ...PTM_ANNOTATION_DEFAULT_COLUMNS[\n PtmAnnotationTableColumnId.PUBMED_IDS\n ],\n Cell: this.pubmedCellRender,\n ...columnOverrides[PtmAnnotationTableColumnId.PUBMED_IDS],\n },\n ];\n }\n\n @computed\n public get pubmedCellRender() {\n let cellRenderFn: (props: {\n original: PostTranslationalModification;\n }) => JSX.Element | null;\n\n // we need to observe the observable this.pmidData here to trigger a new render cycle,\n // observing it inside the cellRenderFn does not work because it is handled by the table library\n if (!this.props.pubMedCache) {\n cellRenderFn = () => null;\n } else if (!_.isEmpty(this.pmidData)) {\n cellRenderFn = (props: {\n original: PostTranslationalModification;\n }) =>\n !_.isEmpty(props.original.pubmedIds) ? (\n <PtmReferenceList\n pmidData={this.pmidData}\n pubmedIds={props.original.pubmedIds || []}\n />\n ) : null;\n } else {\n cellRenderFn = (props: {\n original: PostTranslationalModification;\n }) =>\n !_.isEmpty(props.original.pubmedIds) ? (\n <i className=\"fa fa-spinner fa-pulse\" />\n ) : null;\n }\n\n return cellRenderFn;\n }\n\n public render() {\n const {\n data,\n initialSortColumn,\n initialSortDirection,\n initialItemsPerPage,\n } = this.props;\n\n const showPagination =\n data.length >\n (this.props.initialItemsPerPage ||\n PtmAnnotationTable.defaultProps.initialItemsPerPage);\n\n return (\n <div\n className={classnames(\n 'cbioportal-frontend',\n 'default-track-tooltip-table'\n )}\n >\n <ReactTable\n data={data}\n columns={this.columns}\n defaultSorted={[\n {\n id:\n initialSortColumn ||\n PtmAnnotationTable.defaultProps\n .initialSortColumn,\n desc: initialSortDirection === 'desc',\n },\n ]}\n defaultPageSize={\n data.length > initialItemsPerPage!\n ? initialItemsPerPage\n : data.length\n }\n showPagination={showPagination}\n showPaginationTop={true}\n showPaginationBottom={false}\n className=\"-striped -highlight\"\n previousText=\"<\"\n nextText=\">\"\n />\n </div>\n );\n }\n}\n","import * as React from 'react';\nimport _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport { action, computed, makeObservable, observable } from 'mobx';\nimport { Collapse } from 'react-collapse';\nimport { Column } from 'react-table';\nimport {\n DefaultTooltip,\n EllipsisTextTooltip,\n} from 'cbioportal-frontend-commons';\nimport {\n compareByPtmTypePriority,\n ptmColor,\n MobxCache,\n Mutation,\n PostTranslationalModification,\n} from 'cbioportal-utils';\n\nimport MutationMapperStore from '../../model/MutationMapperStore';\nimport PtmAnnotationTable from '../ptm/PtmAnnotationTable';\nimport { default as Track, TrackProps } from './Track';\nimport { TrackItemSpec } from './TrackItem';\n\nimport styles from './ptmTrackStyles.module.scss';\n\ntype PtmTrackProps = TrackProps & {\n store: MutationMapperStore<Mutation>;\n pubMedCache?: MobxCache;\n ensemblTranscriptId?: string;\n subTrackMargin?: number;\n dataSource?: string;\n dataSourceUrl?: string;\n ptmTooltipColumnOverrides?: { [id: string]: Partial<Column> };\n collapsed?: boolean;\n};\n\nexport const PtmTooltip: React.FunctionComponent<{\n ptms: PostTranslationalModification[];\n pubMedCache?: MobxCache;\n columnOverrides?: { [id: string]: Partial<Column> };\n}> = props => {\n return (\n <PtmAnnotationTable\n data={props.ptms}\n pubMedCache={props.pubMedCache}\n columnOverrides={props.columnOverrides}\n />\n );\n};\n\nexport function ptmInfoTooltip(\n transcriptId?: string,\n dataSource?: string,\n dataSourceUrl?: string\n) {\n let dataSourceDiv = null;\n\n if (dataSource) {\n dataSourceDiv = (\n <div>\n Data Source:{' '}\n {dataSourceUrl ? (\n <a href={dataSourceUrl} target=\"_blank\">\n {dataSource}\n </a>\n ) : (\n dataSource\n )}\n </div>\n );\n }\n\n return (\n <div style={{ maxWidth: 400 }}>\n <p>\n Displays all Post Translational Modifications (PTMs) available\n {transcriptId && (\n <span> for the Ensembl transcript {transcriptId}</span>\n )}\n .\n </p>\n <p className={styles.ptmLegend}>\n PTM types and corresponding color codes are as follows:\n <ul>\n <li className={styles.Phosphorylation}>\n <strong>Phosphorylation</strong>\n </li>\n <li className={styles.Acetylation}>\n <strong>Acetylation</strong>\n </li>\n <li className={styles.Ubiquitination}>\n <strong>Ubiquitination</strong>\n </li>\n <li className={styles.Methylation}>\n <strong>Methylation</strong>\n </li>\n <li className={styles.multiType}>\n <strong>Multiple Type</strong>: Sites with more than one\n PTM type\n </li>\n <li className={styles.default}>\n <strong>Other</strong>: All other PTM types\n </li>\n </ul>\n </p>\n {dataSourceDiv}\n </div>\n );\n}\n\nfunction filterPtmsBySource(\n ptms: PostTranslationalModification[],\n source?: string\n): PostTranslationalModification[] {\n return source ? ptms.filter(ptm => ptm.source === source) : ptms;\n}\n\n@observer\nexport default class PtmTrack extends React.Component<PtmTrackProps, {}> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n public static defaultProps = {\n subTrackMargin: 25,\n };\n\n @observable\n private expanded = !this.props.collapsed;\n\n @computed get ptmSpecs(): TrackItemSpec[] {\n const ptmDataByProteinPosStart = this.props.store\n .ptmDataByProteinPosStart.result;\n\n if (ptmDataByProteinPosStart && !_.isEmpty(ptmDataByProteinPosStart)) {\n return _.reduce(\n ptmDataByProteinPosStart,\n this.ptmDataToTrackItemSpecsReducer,\n []\n );\n } else {\n return [];\n }\n }\n\n @computed get ptmSubSpecs(): { title: string; specs: TrackItemSpec[] }[] {\n const ptmDataByTypeAndProteinPosStart = this.props.store\n .ptmDataByTypeAndProteinPosStart.result;\n\n if (\n ptmDataByTypeAndProteinPosStart &&\n !_.isEmpty(ptmDataByTypeAndProteinPosStart)\n ) {\n return _.keys(ptmDataByTypeAndProteinPosStart)\n .sort(compareByPtmTypePriority)\n .map(type => ({\n title: type,\n specs: _.reduce(\n ptmDataByTypeAndProteinPosStart[type],\n this.ptmDataToTrackItemSpecsReducer,\n []\n ),\n }))\n .filter(s => !_.isEmpty(s.specs));\n } else {\n return [];\n }\n }\n\n @computed get mainTrackTitle() {\n return (\n <span style={{ cursor: 'pointer' }}>\n <span onClick={this.handleToggleExpand}>{this.expander}</span>\n <DefaultTooltip\n placement=\"left\"\n overlay={() =>\n ptmInfoTooltip(\n this.props.ensemblTranscriptId,\n this.props.dataSource,\n this.props.dataSourceUrl\n )\n }\n destroyTooltipOnHide={true}\n >\n <span\n style={{ marginLeft: 4 }}\n onClick={this.handleToggleExpand}\n >\n PTM{' '}\n {this.props.dataSource\n ? `(${this.props.dataSource})`\n : 'Sites'}{' '}\n <i className=\"fa fa-info-circle\" />\n </span>\n </DefaultTooltip>\n </span>\n );\n }\n\n @computed get expander(): JSX.Element | null {\n const className = this.hasSubTracks\n ? this.mainTrackHidden\n ? 'fa fa-caret-down'\n : 'fa fa-caret-right'\n : null;\n\n if (className) {\n return (\n <i className={className} style={{ width: 10, marginLeft: 2 }} />\n );\n }\n\n return null;\n }\n\n @computed get subTrackMargin() {\n return (\n this.props.subTrackMargin || PtmTrack.defaultProps.subTrackMargin\n );\n }\n\n @computed get subTrackTitleWidth() {\n return this.props.xOffset\n ? this.props.xOffset - this.subTrackMargin\n : 0;\n }\n\n @computed get subTracks() {\n return this.hasSubTracks\n ? this.ptmSubSpecs.map((item, index) => (\n <Track\n key={item.title}\n dataStore={this.props.dataStore}\n xOffset={this.props.xOffset}\n trackTitle={\n <span\n style={{\n marginLeft: this.subTrackMargin,\n width: this.subTrackTitleWidth,\n display: 'flex',\n }}\n >\n <EllipsisTextTooltip\n text={item.title}\n style={{\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n }}\n />\n </span>\n }\n width={this.props.width}\n proteinLength={this.props.proteinLength}\n trackItems={item.specs}\n idClassPrefix={`ptm-${index}-`}\n isSubTrack={true}\n />\n ))\n : null;\n }\n\n @computed get mainTrackHidden() {\n return this.expanded && this.hasSubTracks;\n }\n\n @computed get hasSubTracks() {\n return this.ptmSubSpecs.length > 0;\n }\n\n public render() {\n return (\n <span>\n <Track\n dataStore={this.props.dataStore}\n width={this.props.width}\n xOffset={this.props.xOffset}\n proteinLength={this.props.proteinLength}\n trackTitle={this.mainTrackTitle}\n trackItems={this.mainTrackHidden ? [] : this.ptmSpecs}\n hideBaseline={this.mainTrackHidden}\n idClassPrefix={'ptm-'}\n />\n <Collapse isOpened={this.mainTrackHidden}>\n <span>{this.subTracks}</span>\n </Collapse>\n </span>\n );\n }\n\n private ptmDataToTrackItemSpecsReducer = (\n acc: TrackItemSpec[],\n ptmData: PostTranslationalModification[],\n position: string\n ): TrackItemSpec[] => {\n const ptms =\n Number(position) >= 0\n ? filterPtmsBySource(ptmData, this.props.dataSource)\n : [];\n\n if (!_.isEmpty(ptms)) {\n acc.push({\n startCodon: Number(position),\n color: ptmColor(ptms),\n tooltip: (\n <PtmTooltip\n ptms={ptms}\n pubMedCache={this.props.pubMedCache}\n columnOverrides={this.props.ptmTooltipColumnOverrides}\n />\n ),\n });\n }\n\n return acc;\n };\n\n @action.bound\n private handleToggleExpand() {\n this.expanded = !this.expanded;\n }\n}\n","import * as React from 'react';\nimport * as _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport { action, computed, makeObservable, observable } from 'mobx';\n\nimport { default as Track, TrackProps } from './Track';\nimport { Collapse } from 'react-collapse';\nimport { TrackItemSpec } from './TrackItem';\nimport { MutationMapperStore } from '../../model/MutationMapperStore';\nimport {\n Mutation,\n UniprotTopology,\n UniprotTopologyTypeToTitle,\n UniprotTopologyTrackToColor,\n} from 'cbioportal-utils';\n\nimport {\n DefaultTooltip,\n EllipsisTextTooltip,\n} from 'cbioportal-frontend-commons';\n\ntype UniprotTopologyTrackProps = TrackProps & {\n store: MutationMapperStore<Mutation>;\n subTrackMargin?: number;\n collapsed?: boolean;\n};\n\nfunction topologyRectangleBlockSpec(\n color: string,\n title: string,\n uniprotData: UniprotTopology\n) {\n return {\n color: color,\n startCodon: uniprotData.startPosition,\n endCodon: uniprotData.endPosition,\n tooltip: (\n <span>\n <h5>{title}</h5>\n Start: {uniprotData.startPosition}\n <br></br>\n End: {uniprotData.endPosition}\n <br></br>\n Length: {uniprotData.endPosition - uniprotData.startPosition}\n <br></br>\n Description: {uniprotData.description}\n </span>\n ),\n };\n}\n\nexport const UniprotTopologyTrackDescriptionTooltip: React.FunctionComponent<{\n displayList: string[];\n uniprotId?: string;\n}> = props => {\n const dataSourceDiv = props.uniprotId ? (\n <div>\n Data Source:{' '}\n <a\n href={`https://www.uniprot.org/uniprot/${props.uniprotId}`}\n target=\"_blank\"\n >\n UniProt\n </a>\n </div>\n ) : (\n <div>\n Data Source:{' '}\n <a href={'https://www.uniprot.org/'} target=\"_blank\">\n UniProt\n </a>\n </div>\n );\n return (\n <div style={{ maxWidth: 400 }}>\n <p>\n Information of the subcellular location of the mature protein.\n </p>\n {props.displayList.length > 0 && (\n <p>\n Domains and corresponding color codes are as follows:\n <ul>\n {_.map(props.displayList, type => (\n <li\n style={{\n color: UniprotTopologyTrackToColor[type],\n }}\n >\n <strong>\n {UniprotTopologyTypeToTitle[type]}\n </strong>\n </li>\n ))}\n </ul>\n </p>\n )}\n {dataSourceDiv}\n </div>\n );\n};\n\n@observer\nexport default class UniprotTopologyTrack extends React.Component<\n UniprotTopologyTrackProps,\n {}\n> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n public static defaultProps = {\n subTrackMargin: 25,\n };\n\n @observable\n private expanded = !this.props.collapsed;\n\n @computed get subTrackMargin() {\n return (\n this.props.subTrackMargin ||\n UniprotTopologyTrack.defaultProps.subTrackMargin\n );\n }\n\n @computed get subTrackTitleWidth() {\n return this.props.xOffset\n ? this.props.xOffset - this.subTrackMargin\n : 0;\n }\n\n @computed get uniprotTopologySpecs(): TrackItemSpec[] {\n const uniprotData = this.props.store.uniprotTopologyData.result;\n if (uniprotData && !_.isEmpty(uniprotData)) {\n return _.reduce(\n uniprotData,\n this.uniprotDataToTrackItemSpecsReducer,\n []\n );\n } else {\n return [];\n }\n }\n\n @computed get expander(): JSX.Element | null {\n const className = this.hasSubTracks\n ? this.mainTrackHidden\n ? 'fa fa-caret-down'\n : 'fa fa-caret-right'\n : null;\n\n if (className) {\n return (\n <i className={className} style={{ width: 10, marginLeft: 2 }} />\n );\n }\n return null;\n }\n\n @computed get mainTrackTitle() {\n return (\n <span style={{ cursor: 'pointer' }}>\n <span onClick={this.handleToggleExpand}>{this.expander}</span>\n <DefaultTooltip\n placement=\"right\"\n overlay={\n <UniprotTopologyTrackDescriptionTooltip\n displayList={this.uniprotTopologyTypes}\n uniprotId={this.props.store.uniprotId.result}\n />\n }\n destroyTooltipOnHide={true}\n >\n <span\n style={{ marginLeft: 4 }}\n onClick={this.handleToggleExpand}\n >\n Topology <i className=\"fa fa-info-circle\" />\n </span>\n </DefaultTooltip>\n </span>\n );\n }\n\n @computed get uniprotTopologyTypes(): string[] {\n const uniprotData = this.props.store.uniprotTopologyData.result;\n const uniprotDataByType = _.uniq(_.map(uniprotData, data => data.type));\n return uniprotDataByType || [];\n }\n\n @computed get uniprotTopologySubSpecs(): {\n title: string;\n specs: TrackItemSpec[];\n }[] {\n const uniprotData = this.props.store.uniprotTopologyData.result;\n const uniprotDataByType = _.groupBy(uniprotData, data => data.type);\n return _.keys(uniprotDataByType)\n .map(type => ({\n title: UniprotTopologyTypeToTitle[type],\n specs: _.reduce(\n uniprotDataByType[type],\n this.uniprotDataToTrackItemSpecsReducer,\n []\n ),\n }))\n .filter(s => !_.isEmpty(s.specs));\n }\n\n private uniprotDataToTrackItemSpecsReducer = (\n acc: TrackItemSpec[],\n uniprotData: UniprotTopology\n ): TrackItemSpec[] => {\n const trackColor = UniprotTopologyTrackToColor[uniprotData.type];\n const trackTitle = UniprotTopologyTypeToTitle[uniprotData.type];\n\n if (trackTitle && trackColor) {\n acc.push(\n topologyRectangleBlockSpec(trackColor, trackTitle, uniprotData)\n );\n }\n return acc;\n };\n\n @computed get mainTrackHidden() {\n return this.expanded && this.hasSubTracks;\n }\n\n @computed get hasSubTracks() {\n return this.uniprotTopologySubSpecs.length > 0;\n }\n\n @computed get subTracks() {\n return this.hasSubTracks\n ? this.uniprotTopologySubSpecs.map((item, index) => (\n <Track\n key={item.title}\n dataStore={this.props.dataStore}\n xOffset={this.props.xOffset}\n trackTitle={\n <span\n style={{\n marginLeft: this.subTrackMargin,\n width: this.subTrackTitleWidth,\n display: 'flex',\n }}\n >\n <EllipsisTextTooltip\n text={item.title}\n style={{\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n }}\n />\n </span>\n }\n width={this.props.width}\n proteinLength={this.props.proteinLength}\n trackItems={item.specs}\n idClassPrefix={`uniprot-topology-${index}-`}\n isSubTrack={true}\n />\n ))\n : null;\n }\n\n public render() {\n return (\n <span>\n <Track\n dataStore={this.props.dataStore}\n width={this.props.width}\n xOffset={this.props.xOffset}\n proteinLength={this.props.proteinLength}\n trackTitle={this.mainTrackTitle}\n trackItems={\n this.mainTrackHidden ? [] : this.uniprotTopologySpecs\n }\n hideBaseline={this.mainTrackHidden}\n idClassPrefix={'uniprot-topology-track-'}\n />\n <Collapse isOpened={this.mainTrackHidden}>\n <span>{this.subTracks}</span>\n </Collapse>\n </span>\n );\n }\n\n @action.bound\n private handleToggleExpand() {\n this.expanded = !this.expanded;\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { computed, makeObservable } from 'mobx';\nimport {\n MobxCache,\n Mutation,\n PTM_SOURCE_URL,\n PtmSource,\n} from 'cbioportal-utils';\n\nimport MutationMapperStore from '../../model/MutationMapperStore';\nimport { TrackName, TrackVisibility } from './TrackSelector';\nimport HotspotTrack from './HotspotTrack';\nimport OncoKbTrack from './OncoKbTrack';\nimport ExonTrack from './ExonTrack';\nimport PtmTrack from './PtmTrack';\n\nimport './defaultTrackTooltipTable.scss';\nimport { PtmAnnotationTableColumnId } from '../ptm/PtmAnnotationTable';\nimport UniprotTopologyTrack from './UniprotTopologyTrack';\n\ntype TrackPanelProps = {\n store: MutationMapperStore<Mutation>;\n pubMedCache?: MobxCache;\n geneWidth: number;\n proteinLength?: number;\n geneXOffset?: number;\n maxHeight?: number;\n trackVisibility?: TrackVisibility;\n tracks?: TrackName[];\n collapsePtmTrack?: boolean;\n collapseUniprotTopologyTrack?: boolean;\n};\n\n@observer\nexport default class TrackPanel extends React.Component<TrackPanelProps, {}> {\n public static defaultProps: Partial<TrackPanelProps> = {\n tracks: [\n TrackName.CancerHotspots,\n TrackName.OncoKB,\n TrackName.dbPTM,\n TrackName.Exon,\n TrackName.UniprotTopology,\n ],\n };\n\n constructor(props: TrackPanelProps) {\n super(props);\n makeObservable(this);\n }\n\n @computed get proteinLength() {\n const proteinLength = this.props.proteinLength || 0;\n return Math.max(proteinLength, 1);\n }\n\n get availableTracks(): { [trackName: string]: JSX.Element | null } {\n return {\n [TrackName.CancerHotspots]:\n !this.props.trackVisibility ||\n this.props.trackVisibility[TrackName.CancerHotspots] ===\n 'visible' ? (\n <HotspotTrack\n store={this.props.store}\n dataStore={this.props.store.dataStore}\n hotspotIndex={\n this.props.store.indexedHotspotData.result || {}\n }\n width={this.props.geneWidth}\n xOffset={this.props.geneXOffset}\n proteinLength={this.proteinLength}\n />\n ) : null,\n [TrackName.OncoKB]:\n !this.props.trackVisibility ||\n this.props.trackVisibility[TrackName.OncoKB] === 'visible' ? (\n <OncoKbTrack\n store={this.props.store}\n dataStore={this.props.store.dataStore}\n width={this.props.geneWidth}\n xOffset={this.props.geneXOffset}\n proteinLength={this.proteinLength}\n />\n ) : null,\n [TrackName.dbPTM]: this.getPtmTrack(\n TrackName.dbPTM,\n PtmSource.dbPTM\n ),\n [TrackName.UniprotPTM]: this.getPtmTrack(\n TrackName.UniprotPTM,\n PtmSource.Uniprot\n ),\n [TrackName.Exon]:\n !this.props.trackVisibility ||\n this.props.trackVisibility[TrackName.Exon] === 'visible' ? (\n <ExonTrack\n store={this.props.store}\n dataStore={this.props.store.dataStore}\n width={this.props.geneWidth}\n xOffset={this.props.geneXOffset}\n proteinLength={this.proteinLength}\n />\n ) : null,\n [TrackName.UniprotTopology]:\n !this.props.trackVisibility ||\n this.props.trackVisibility[TrackName.UniprotTopology] ===\n 'visible' ? (\n <UniprotTopologyTrack\n store={this.props.store}\n dataStore={this.props.store.dataStore}\n width={this.props.geneWidth}\n xOffset={this.props.geneXOffset}\n proteinLength={this.proteinLength}\n collapsed={this.props.collapseUniprotTopologyTrack}\n />\n ) : null,\n };\n }\n\n public render() {\n return (\n <div\n style={{\n overflowY: 'hidden',\n maxHeight: this.props.maxHeight,\n position: 'relative',\n }}\n >\n {this.props\n .tracks!.map(t => this.availableTracks[t])\n .filter(e => e !== undefined && e !== null)}\n </div>\n );\n }\n\n private getPtmTrack(trackName: TrackName, ptmSource: PtmSource) {\n return !this.props.trackVisibility ||\n this.props.trackVisibility[trackName] === 'visible' ? (\n <PtmTrack\n store={this.props.store}\n pubMedCache={this.props.pubMedCache}\n ensemblTranscriptId={this.props.store.activeTranscript?.result}\n dataStore={this.props.store.dataStore}\n width={this.props.geneWidth}\n xOffset={this.props.geneXOffset}\n proteinLength={this.proteinLength}\n dataSource={ptmSource}\n dataSourceUrl={PTM_SOURCE_URL[ptmSource]}\n ptmTooltipColumnOverrides={this.getPtmTooltipColumnOverrides(\n ptmSource\n )}\n collapsed={this.props.collapsePtmTrack}\n />\n ) : null;\n }\n\n private getPtmTooltipColumnOverrides(ptmSource: PtmSource) {\n if (ptmSource === PtmSource.dbPTM) {\n // hide description column for dbPTM, we don't have description data.\n return {\n [PtmAnnotationTableColumnId.DESCRIPTION]: {\n show: false,\n },\n };\n } else {\n return undefined;\n }\n }\n}\n","import { PfamDomain, PfamDomainRange } from 'genome-nexus-ts-api-client';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { MobxCache } from 'cbioportal-utils';\n\nexport interface IDomainTooltipProps {\n mutationAlignerCache?: MobxCache<string>;\n range: PfamDomainRange;\n domain: PfamDomain | undefined;\n pfamDomainId: string;\n}\n\ninterface IMutationAlignerLinkProps {\n mutationAlignerCache?: MobxCache<string>;\n pfamAccession: string;\n}\n\nconst MutationAlignerLink = observer((props: IMutationAlignerLinkProps) => {\n function getMutationAlignerCacheData(pfamAccession: string) {\n return props.mutationAlignerCache && props.mutationAlignerCache.cache\n ? props.mutationAlignerCache.cache[pfamAccession]\n : null;\n }\n\n if (props.mutationAlignerCache) {\n props.mutationAlignerCache.get(props.pfamAccession);\n }\n\n const mutationAlignerCacheData = getMutationAlignerCacheData(\n props.pfamAccession\n );\n\n return mutationAlignerCacheData &&\n mutationAlignerCacheData.status === 'complete' &&\n mutationAlignerCacheData.data ? (\n <a href={mutationAlignerCacheData.data} target=\"_blank\">\n Mutation Aligner\n </a>\n ) : null;\n});\n\nconst DomainTooltip = (props: IDomainTooltipProps) => {\n const { range, domain, pfamDomainId } = props;\n\n const pfamAccession = domain ? domain.pfamAccession : pfamDomainId;\n\n // if no domain info, then just display the accession\n const domainInfo = domain\n ? `${domain.name}: ${domain.description}`\n : pfamAccession;\n\n return (\n <div style={{ maxWidth: 200 }}>\n <div>\n {domainInfo} ({range.pfamDomainStart} - {range.pfamDomainEnd})\n </div>\n <div>\n <a\n style={{ marginRight: '5px' }}\n href={`http://pfam.xfam.org/family/${pfamAccession}`}\n target=\"_blank\"\n >\n PFAM\n </a>\n <MutationAlignerLink\n mutationAlignerCache={props.mutationAlignerCache}\n pfamAccession={pfamAccession}\n />\n </div>\n </div>\n );\n};\n\nexport default DomainTooltip;\n","import autobind from 'autobind-decorator';\nimport { MobxCache, Mutation } from 'cbioportal-utils';\nimport { PfamDomain, PfamDomainRange } from 'genome-nexus-ts-api-client';\nimport _ from 'lodash';\nimport { action, computed, observable, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { Collapse } from 'react-collapse';\n\nimport $ from 'jquery';\n\nimport { DomainSpec } from '../../model/DomainSpec';\nimport { LollipopPlotControlsConfig } from '../../model/LollipopPlotControlsConfig';\nimport {\n LollipopLabel,\n LollipopPlacement,\n LollipopSpec,\n} from '../../model/LollipopSpec';\nimport { MutationMapperStore } from '../../model/MutationMapperStore';\nimport { SequenceSpec } from '../../model/SequenceSpec';\nimport { DefaultLollipopPlotControlsConfig } from '../../store/DefaultLollipopPlotControlsConfig';\nimport {\n byMiddlemostPosition,\n byMutationCount,\n byWhetherExistsInADomain,\n calcCountRange,\n calcYMaxInput,\n getYAxisMaxInputValue,\n lollipopLabelText,\n lollipopLabelTextAnchor,\n} from '../../util/LollipopPlotUtils';\nimport {\n DEFAULT_PROTEIN_IMPACT_TYPE_COLORS,\n getColorForProteinImpactType,\n} from '../../util/MutationTypeUtils';\nimport { generatePfamDomainColorMap } from '../../util/PfamUtils';\nimport { initDefaultTrackVisibility } from '../../util/TrackUtils';\nimport DefaultLollipopPlotLegend from './DefaultLollipopPlotLegend';\nimport LollipopPlot from '../lollipopPlot/LollipopPlot';\nimport LollipopMutationPlotControls from './LollipopMutationPlotControls';\nimport {\n TrackDataStatus,\n TrackName,\n TrackVisibility,\n} from '../track/TrackSelector';\nimport TrackPanel from '../track/TrackPanel';\n\nimport './lollipopMutationPlot.scss';\nimport DomainTooltip from '../lollipopPlot/DomainTooltip';\n\nconst DEFAULT_PROTEIN_LENGTH = 10;\n\nconst SVG_NS = 'http://www.w3.org/2000/svg';\nfunction createTextTag(\n textNode?: Text,\n style: string = '',\n x: number = 0,\n y: number = 0\n) {\n const text = (document.createElementNS(\n SVG_NS,\n 'text'\n ) as unknown) as SVGTextElement;\n $(text).attr({ style, x, y });\n if (textNode) {\n text.append(textNode);\n }\n return text;\n}\n\nfunction createGroupTag(transform?: string) {\n const group = (document.createElementNS(\n SVG_NS,\n 'g'\n ) as unknown) as SVGGElement;\n group.setAttribute('transform', transform || '');\n return group;\n}\n\nexport type LollipopMutationPlotProps<T extends Mutation> = {\n store: MutationMapperStore<T>;\n controlsConfig?: LollipopPlotControlsConfig;\n pubMedCache?: MobxCache;\n mutationAlignerCache?: MobxCache<string>;\n getLollipopColor?: (mutations: Partial<T>[]) => string;\n isPutativeDriver?: (mutation: Partial<T>) => boolean;\n getMutationCount?: (mutation: Partial<T>) => number;\n topYAxisSymbol?: string;\n bottomYAxisSymbol?: string;\n topYAxisDefaultMax?: number;\n topYAxisDefaultMin?: number;\n yMaxFractionDigits?: number;\n yMaxLabelPostfix?: string;\n showYAxis?: boolean;\n yAxisSameScale?: boolean;\n bottomYAxisDefaultMax?: number;\n bottomYAxisDefaultMin?: number;\n yAxisLabelPadding?: number;\n lollipopTooltipCountInfo?: (\n count: number,\n mutations?: Partial<T>[]\n ) => JSX.Element;\n customControls?: JSX.Element;\n onXAxisOffset?: (offset: number) => void;\n geneWidth: number;\n vizHeight?: number;\n trackVisibility?: TrackVisibility;\n tracks?: TrackName[];\n trackDataStatus?: TrackDataStatus;\n showTrackSelector?: boolean;\n onTrackVisibilityChange?: (selectedTrackIds: string[]) => void;\n autoHideControls?: boolean;\n showYMaxSlider?: boolean;\n showLegendToggle?: boolean;\n showDownloadControls?: boolean;\n filterResetPanel?: JSX.Element;\n legend?: JSX.Element;\n loadingIndicator?: JSX.Element;\n collapsePtmTrack?: boolean;\n collapseUniprotTopologyTrack?: boolean;\n};\n\n@observer\nexport default class LollipopMutationPlot<\n T extends Mutation\n> extends React.Component<LollipopMutationPlotProps<T>, {}> {\n public static defaultProps: Partial<LollipopMutationPlotProps<any>> = {\n yMaxFractionDigits: 1,\n yAxisSameScale: true,\n };\n\n @observable private mouseInPlot: boolean = true;\n @observable private yMaxInputFocused: boolean = false;\n @observable private geneXOffset: number;\n @observable\n private _trackVisibility: TrackVisibility = initDefaultTrackVisibility();\n\n private _controlsConfig: LollipopPlotControlsConfig = new DefaultLollipopPlotControlsConfig();\n\n private handlers: any;\n private divContainer: HTMLDivElement;\n\n @computed private get showControls(): boolean {\n return this.props.autoHideControls\n ? this.yMaxInputFocused || this.mouseInPlot\n : true;\n }\n\n @computed private get trackVisibility(): TrackVisibility {\n return this.props.trackVisibility || this._trackVisibility;\n }\n\n @computed private get controlsConfig(): LollipopPlotControlsConfig {\n return this.props.controlsConfig || this._controlsConfig;\n }\n\n private lollipopTooltip(\n mutationsAtPosition: T[],\n countsByPosition: { [pos: number]: number }\n ): JSX.Element {\n const codon = mutationsAtPosition[0].proteinPosStart;\n const count = countsByPosition[codon];\n const countInfo = this.props.lollipopTooltipCountInfo ? (\n this.props.lollipopTooltipCountInfo(count, mutationsAtPosition)\n ) : (\n <strong>\n {count} mutation{`${count !== 1 ? 's' : ''}`}\n </strong>\n );\n const label = lollipopLabelText(mutationsAtPosition);\n\n return (\n <div>\n {countInfo}\n <br />\n <span>AA Change: {label}</span>\n </div>\n );\n }\n\n @computed\n protected get groups(): string[] | undefined {\n if (this.props.store.groupedMutationsByPosition.length > 0) {\n return this.props.store.groupedMutationsByPosition.map(\n g => g.group\n );\n } else {\n return undefined;\n }\n }\n\n @computed\n protected get lollipops(): LollipopSpec[] {\n let lollipops: LollipopSpec[] = [];\n\n // ignore grouped mutations with less than 2 groups\n // also ignore other groups except first and second\n if (this.props.store.groupedMutationsByPosition.length > 1) {\n const groupTop = this.props.store.groupedMutationsByPosition[0]\n .group;\n const mutationsTop = this.props.store.groupedMutationsByPosition[0]\n .mutations;\n const countsTop = this.props.store\n .uniqueGroupedMutationCountsByPosition[0].counts;\n lollipops = this.getLollipopSpecs(\n mutationsTop,\n countsTop,\n groupTop,\n LollipopPlacement.TOP\n );\n\n const groupBottom = this.props.store.groupedMutationsByPosition[1]\n .group;\n const mutationsBottom = this.props.store\n .groupedMutationsByPosition[1].mutations;\n const countsBottom = this.props.store\n .uniqueGroupedMutationCountsByPosition[1].counts;\n lollipops = lollipops.concat(\n this.getLollipopSpecs(\n mutationsBottom,\n countsBottom,\n groupBottom,\n LollipopPlacement.BOTTOM\n )\n );\n } else if (\n Object.keys(this.props.store.mutationsByPosition).length > 0\n ) {\n return this.getLollipopSpecs(\n this.props.store.mutationsByPosition,\n this.props.store.uniqueMutationCountsByPosition\n );\n }\n\n return lollipops;\n }\n\n protected getLollipopSpecs(\n mutationsByPosition: { [pos: number]: T[] },\n countsByPosition: { [pos: number]: number },\n group?: string,\n placement?: LollipopPlacement\n ): LollipopSpec[] {\n // positionMutations: Mutation[][], in descending order of mutation count\n const positionMutations = Object.keys(mutationsByPosition)\n .map(position => mutationsByPosition[parseInt(position, 10)])\n .sort((x, y) =>\n countsByPosition[x[0].proteinPosStart] <\n countsByPosition[y[0].proteinPosStart]\n ? 1\n : -1\n );\n\n const specs: LollipopSpec[] = this.createInitialSpecs(\n positionMutations,\n countsByPosition,\n group,\n placement\n );\n const noLabelsAreShown =\n !_.isEmpty(specs) && specs.every(spec => !spec.label!.show);\n if (noLabelsAreShown) {\n this.labelOneLollipopByDefault(\n this.getRemainingDomains(positionMutations),\n specs\n );\n }\n\n return specs;\n }\n\n private createInitialSpecs(\n positionMutations: T[][],\n countsByPosition: { [pos: number]: number },\n group?: string,\n placement?: LollipopPlacement\n ): LollipopSpec[] {\n const specs: LollipopSpec[] = [];\n const numLabelsToShow = this.getNumLabelsToShow(\n positionMutations,\n countsByPosition\n );\n const minMutationsToShowLabel = 0;\n\n positionMutations.forEach((mutations, index) => {\n const codon = mutations[0].proteinPosStart;\n if (this.isInvalidPosition(codon)) {\n return;\n }\n\n const mutationCount = countsByPosition[codon];\n const showLabel =\n index < numLabelsToShow &&\n mutationCount > minMutationsToShowLabel;\n const label = this.createLabel(mutations, codon, showLabel);\n\n specs.push({\n codon,\n group,\n placement,\n count: mutationCount,\n tooltip: this.lollipopTooltip(mutations, countsByPosition),\n color: this.props.getLollipopColor\n ? this.props.getLollipopColor(mutations)\n : getColorForProteinImpactType(\n mutations,\n DEFAULT_PROTEIN_IMPACT_TYPE_COLORS,\n this.props.getMutationCount,\n this.props.isPutativeDriver\n ),\n label,\n });\n });\n\n return specs;\n }\n\n private getNumLabelCandidates(\n positionMutations: T[][],\n countsByPosition: { [pos: number]: number }\n ): number {\n // maxCount: max number of mutations at a position\n const maxCount =\n positionMutations && positionMutations[0]\n ? countsByPosition[positionMutations[0][0].proteinPosStart]\n : 0;\n\n // numLabelCandidates: number of positions with maxCount mutations\n let numLabelCandidates = positionMutations\n ? positionMutations.findIndex(\n mutations =>\n countsByPosition[mutations[0].proteinPosStart] !==\n maxCount\n )\n : -1;\n\n if (numLabelCandidates === -1) {\n numLabelCandidates = positionMutations\n ? positionMutations.length\n : 0;\n }\n return numLabelCandidates;\n }\n\n private labelOneLollipopByDefault(\n remainingDomains: PfamDomainRange[],\n specs: LollipopSpec[]\n ): void {\n const codons = specs.map(spec => spec.codon);\n const averageCodon = (Math.max(...codons) + Math.min(...codons)) / 2;\n const candidateIndex = 0;\n specs = specs\n .sort(byMiddlemostPosition(averageCodon))\n .sort(byWhetherExistsInADomain(remainingDomains))\n .sort(byMutationCount);\n specs[candidateIndex].label!.show = true;\n }\n\n private getNumLabelsToShow(\n positionMutations: T[][],\n countsByPosition: { [pos: number]: number }\n ): number {\n let numLabelCandidates = this.getNumLabelCandidates(\n positionMutations,\n countsByPosition\n );\n\n const maxAllowedTies = 2;\n const maxLabels = 1;\n\n const areMoreCandidatesThanShowable = numLabelCandidates > maxLabels;\n const areMoreCandidatesThanAllowedForATie =\n numLabelCandidates > maxAllowedTies;\n const shouldNotShowLabels =\n areMoreCandidatesThanShowable &&\n areMoreCandidatesThanAllowedForATie;\n\n return shouldNotShowLabels\n ? 0\n : Math.min(numLabelCandidates, maxLabels);\n }\n\n private isInvalidPosition(codon: number): boolean | '' | undefined {\n const notInDomain = isNaN(codon) || codon < 0;\n const isBeyondStopCodon =\n this.props.store.allTranscripts.isComplete &&\n this.props.store.allTranscripts.result &&\n this.props.store.activeTranscript &&\n this.props.store.activeTranscript.isComplete &&\n this.props.store.activeTranscript.result &&\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ] &&\n // we want to show the stop codon too (so we allow proteinLength +1 as well)\n codon >\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ].proteinLength +\n 1;\n\n return notInDomain || isBeyondStopCodon;\n }\n\n private getRemainingDomains(positionMutations: T[][]): PfamDomainRange[] {\n if (\n this.props.store.activeTranscript &&\n this.props.store.activeTranscript.result &&\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ].pfamDomains.length !== 0\n ) {\n const pfamDomains = this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript!.result!\n ].pfamDomains;\n\n const domainHasMutations = (domain: PfamDomainRange) =>\n positionMutations.some(mutation => {\n const codon = mutation[0].proteinPosStart;\n return (\n codon >= domain.pfamDomainStart &&\n codon <= domain.pfamDomainEnd\n );\n });\n\n return pfamDomains.filter(domainHasMutations);\n }\n\n return [];\n }\n\n private createLabel(\n mutations: T[],\n codon: number,\n show: boolean\n ): LollipopLabel {\n const fontSize = 10;\n const fontFamily = 'arial';\n // limit number of protein changes to 3\n const text = lollipopLabelText(mutations, 3);\n const textAnchor = lollipopLabelTextAnchor(\n text,\n codon,\n fontFamily,\n fontSize,\n this.props.geneWidth,\n this.proteinLength\n );\n\n return {\n text,\n textAnchor,\n fontSize,\n fontFamily,\n show,\n };\n }\n\n @computed private get domains(): DomainSpec[] {\n if (\n !this.props.store.pfamDomainData.isComplete ||\n !this.props.store.pfamDomainData.result ||\n this.props.store.pfamDomainData.result.length === 0 ||\n !this.props.store.allTranscripts.isComplete ||\n !this.props.store.allTranscripts.result ||\n !(\n this.props.store.activeTranscript &&\n this.props.store.activeTranscript.isComplete\n ) ||\n !this.props.store.activeTranscript.result ||\n !this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ] ||\n !this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ].pfamDomains ||\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ].pfamDomains.length === 0\n ) {\n return [];\n } else {\n return this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ].pfamDomains.map((range: PfamDomainRange) => {\n const domain = this.domainMap[range.pfamDomainId];\n return {\n startCodon: range.pfamDomainStart,\n endCodon: range.pfamDomainEnd,\n label: domain ? domain.name : range.pfamDomainId,\n color: this.domainColorMap[range.pfamDomainId],\n tooltip: (\n <DomainTooltip\n range={range}\n domain={domain}\n pfamDomainId={range.pfamDomainId}\n mutationAlignerCache={\n this.props.mutationAlignerCache\n }\n />\n ),\n };\n });\n }\n }\n\n @computed private get domainColorMap(): {\n [pfamAccession: string]: string;\n } {\n if (\n !this.props.store.allTranscripts.isPending &&\n this.props.store.allTranscripts.result &&\n this.props.store.activeTranscript &&\n !this.props.store.activeTranscript.isPending &&\n this.props.store.activeTranscript.result &&\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ] &&\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ].pfamDomains &&\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ].pfamDomains.length > 0\n ) {\n return generatePfamDomainColorMap(\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ].pfamDomains\n );\n } else {\n return {};\n }\n }\n\n @computed private get domainMap(): { [pfamAccession: string]: PfamDomain } {\n if (\n !this.props.store.pfamDomainData.isPending &&\n this.props.store.pfamDomainData.result &&\n this.props.store.pfamDomainData.result.length > 0\n ) {\n return _.keyBy(\n this.props.store.pfamDomainData.result,\n 'pfamAccession'\n );\n } else {\n return {};\n }\n }\n\n private get proteinLength(): number {\n return (\n (this.props.store.allTranscripts.result &&\n this.props.store.activeTranscript &&\n this.props.store.activeTranscript.result &&\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ] &&\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ].proteinLength) ||\n // Math.round(this.props.store.gene.length / 3);\n DEFAULT_PROTEIN_LENGTH\n );\n }\n\n private sequenceTooltip(): JSX.Element {\n return (\n <div style={{ maxWidth: 200 }}>\n <a\n href={`http://www.uniprot.org/uniprot/${this.props.store.uniprotId.result}`}\n target=\"_blank\"\n >\n {this.props.store.uniprotId.result}\n </a>\n </div>\n );\n }\n\n @computed private get sequence(): SequenceSpec {\n return {\n tooltip: this.sequenceTooltip(),\n };\n }\n\n @autobind\n private getSVG(): SVGElement {\n let lollipopSvg: SVGElement = $(this.divContainer).find(\n '.lollipop-svgnode'\n )[0] as any;\n\n const TEXT_STYLE = 'font-size: 12px; font-family:Arial;';\n const TRACK_INDENT = 16;\n const SUBTRACK_INDENT = TRACK_INDENT + 12;\n const INVISIBLE_SVG_CLASS_NAMES = ['invisible', 'hide-svg'];\n\n var outerSvg = document.createElementNS(SVG_NS, 'svg') as SVGElement;\n\n // Make copy of chart to be used in download\n var chartClone = lollipopSvg.cloneNode(true);\n outerSvg.append(chartClone);\n\n // Make svg invisible so it does not affect UI\n outerSvg.classList.add(...INVISIBLE_SVG_CLASS_NAMES);\n\n //Add svg to the dom so getBBox can calculate dimensions\n document.body.appendChild(outerSvg);\n\n // Group the tracks and translate below the lollipop chart\n const allTracksG = createGroupTag(\n `translate(0, ${LollipopPlot.defaultProps.vizHeight})`\n );\n outerSvg.append(allTracksG);\n\n let trackSvgList = $(this.divContainer).find('.track-svgnode');\n let trackTitles = $(this.divContainer).find('span[class*=trackTitle]');\n var trackYShift = 0;\n\n trackSvgList.each((idx: number, track: HTMLElement) => {\n var trackSvgGroup = createGroupTag(\n `translate(${this.geneXOffset},${trackYShift})`\n );\n trackSvgGroup.appendChild(track.cloneNode(true));\n\n var trackNameGroup = createGroupTag(\n `translate(0,${trackYShift + 8})`\n );\n var isSubTrack = trackTitles[idx].className.includes('subtrack-');\n var trackName = createTextTag(\n document.createTextNode(trackTitles[idx].innerText),\n TEXT_STYLE,\n isSubTrack ? SUBTRACK_INDENT : TRACK_INDENT,\n 0\n );\n trackNameGroup.append(trackName);\n\n allTracksG.append(trackNameGroup, trackSvgGroup);\n trackYShift += 20;\n });\n\n // Get the dimensions of the outer SVG before removing from DOM\n const outerSvgDimensions = (outerSvg as SVGGraphicsElement).getBBox();\n $(outerSvg).attr({\n width: outerSvgDimensions.width,\n height: outerSvgDimensions.height,\n });\n\n // Remove unused classes\n outerSvg.classList.remove(...INVISIBLE_SVG_CLASS_NAMES);\n document.body.removeChild(outerSvg);\n\n return outerSvg;\n }\n\n @computed get hugoGeneSymbol() {\n return this.props.store.gene.hugoGeneSymbol;\n }\n\n @computed get countRange(): [number, number] {\n return calcCountRange(\n this.lollipops.filter(\n l => l.placement !== LollipopPlacement.BOTTOM\n ),\n this.props.topYAxisDefaultMax,\n this.props.topYAxisDefaultMin\n );\n }\n\n @computed get bottomCountRange(): [number, number] {\n return calcCountRange(\n this.lollipops.filter(\n l => l.placement === LollipopPlacement.BOTTOM\n ),\n this.props.bottomYAxisDefaultMax,\n this.props.bottomYAxisDefaultMin\n );\n }\n\n constructor(props: LollipopMutationPlotProps<T>) {\n super(props);\n\n makeObservable<\n LollipopMutationPlot<T>,\n | 'mouseInPlot'\n | 'yMaxInputFocused'\n | 'geneXOffset'\n | '_trackVisibility'\n | 'showControls'\n | 'trackVisibility'\n | 'controlsConfig'\n | 'groups'\n | 'lollipops'\n | 'domains'\n | 'domainColorMap'\n | 'domainMap'\n | 'sequence'\n | 'onXAxisOffset'\n | 'onTrackVisibilityChange'\n >(this);\n\n this.handlers = {\n handleYAxisMaxSliderChange: action(\n (value: number) =>\n (this.controlsConfig.yMaxInput = calcYMaxInput(\n value,\n this.yMaxStep,\n this.countRange,\n this.bottomCountRange,\n this.props.yAxisSameScale\n ))\n ),\n handleYAxisMaxChange: action(\n (input: string) =>\n (this.controlsConfig.yMaxInput = getYAxisMaxInputValue(\n this.yMaxStep,\n input\n ))\n ),\n handleBottomYAxisMaxSliderChange: action(\n (value: number) =>\n (this.controlsConfig.bottomYMaxInput = calcYMaxInput(\n value,\n this.yMaxStep,\n this.bottomCountRange,\n this.countRange,\n this.props.yAxisSameScale\n ))\n ),\n handleBottomYAxisMaxChange: action(\n (input: string) =>\n (this.controlsConfig.bottomYMaxInput = getYAxisMaxInputValue(\n this.yMaxStep,\n input\n ))\n ),\n onYMaxInputFocused: () => {\n this.yMaxInputFocused = true;\n },\n onYMaxInputBlurred: () => {\n this.yMaxInputFocused = false;\n },\n handleToggleLegend: action(() => {\n this.controlsConfig.legendShown = !this.controlsConfig\n .legendShown;\n }),\n onMouseEnterPlot: action(() => {\n this.mouseInPlot = true;\n }),\n onMouseLeavePlot: action(() => {\n this.mouseInPlot = false;\n }),\n };\n }\n\n @computed get yMaxSlider() {\n return this.yMaxInput;\n }\n\n @computed get yMaxStep() {\n return Math.pow(10, -(this.props.yMaxFractionDigits || 0));\n }\n\n @computed get yMaxSliderStep() {\n return this.countRange[0] < 1 ? this.yMaxStep : 1;\n }\n\n @computed get bottomYMaxSlider() {\n return this.bottomYMaxInput;\n }\n\n @computed get bottomYMaxSliderStep() {\n return this.bottomCountRange[0] < 1 ? this.yMaxStep : 1;\n }\n\n @computed get yMaxInput() {\n return calcYMaxInput(\n this.controlsConfig.yMaxInput,\n this.yMaxStep,\n this.countRange,\n this.bottomCountRange,\n this.props.yAxisSameScale\n );\n }\n\n @computed get bottomYMaxInput() {\n return calcYMaxInput(\n this.controlsConfig.bottomYMaxInput,\n this.yMaxStep,\n this.bottomCountRange,\n this.countRange,\n this.props.yAxisSameScale\n );\n }\n\n @action.bound\n private onXAxisOffset(offset: number) {\n this.geneXOffset = offset;\n\n if (this.props.onXAxisOffset) {\n this.props.onXAxisOffset(offset);\n }\n }\n\n @action.bound\n protected onTrackVisibilityChange(selectedTrackNames: string[]) {\n if (this.props.onTrackVisibilityChange) {\n this.props.onTrackVisibilityChange(selectedTrackNames);\n } else {\n // clear visibility\n Object.keys(this.trackVisibility).forEach(\n trackName => (this.trackVisibility[trackName] = 'hidden')\n );\n\n // reset visibility values for the visible ones\n selectedTrackNames.forEach(\n trackName => (this.trackVisibility[trackName] = 'visible')\n );\n }\n }\n\n render() {\n if (\n this.props.store.pfamDomainData.isComplete &&\n this.props.store.pfamDomainData.result\n ) {\n return (\n <div\n style={{ display: 'inline-block' }}\n ref={(div: HTMLDivElement) => (this.divContainer = div)}\n onMouseEnter={this.handlers.onMouseEnterPlot}\n onMouseLeave={this.handlers.onMouseLeavePlot}\n >\n <LollipopMutationPlotControls\n showControls={this.showControls}\n showYMaxSlider={this.props.showYMaxSlider}\n showLegendToggle={this.props.showLegendToggle}\n showDownloadControls={this.props.showDownloadControls}\n hugoGeneSymbol={this.hugoGeneSymbol}\n countRange={this.countRange}\n bottomCountRange={this.bottomCountRange}\n onYAxisMaxSliderChange={\n this.handlers.handleYAxisMaxSliderChange\n }\n onYAxisMaxChange={this.handlers.handleYAxisMaxChange}\n onBottomYAxisMaxSliderChange={\n this.handlers.handleBottomYAxisMaxSliderChange\n }\n onBottomYAxisMaxChange={\n this.handlers.handleBottomYAxisMaxChange\n }\n onYMaxInputFocused={this.handlers.onYMaxInputFocused}\n onYMaxInputBlurred={this.handlers.onYMaxInputBlurred}\n onToggleLegend={this.handlers.handleToggleLegend}\n yMaxSlider={this.yMaxSlider}\n yMaxSliderStep={this.yMaxSliderStep}\n yMaxInput={this.yMaxInput}\n yAxisSameScale={this.props.yAxisSameScale}\n bottomYMaxSlider={this.bottomYMaxSlider}\n bottomYMaxSliderStep={this.bottomYMaxSliderStep}\n bottomYMaxInput={this.bottomYMaxInput}\n customControls={this.props.customControls}\n filterResetPanel={this.props.filterResetPanel}\n trackVisibility={this.trackVisibility}\n tracks={this.props.tracks}\n trackDataStatus={this.props.trackDataStatus}\n showTrackSelector={this.props.showTrackSelector}\n onTrackVisibilityChange={this.onTrackVisibilityChange}\n getSVG={this.getSVG}\n />\n <Collapse isOpened={this.controlsConfig.legendShown}>\n {this.props.legend || <DefaultLollipopPlotLegend />}\n </Collapse>\n <LollipopPlot\n sequence={this.sequence}\n lollipops={this.lollipops}\n domains={this.domains}\n dataStore={this.props.store.dataStore}\n vizWidth={this.props.geneWidth}\n vizHeight={this.props.vizHeight}\n hugoGeneSymbol={this.hugoGeneSymbol}\n xMax={this.proteinLength}\n yMax={this.yMaxInput}\n yMaxFractionDigits={\n this.yMaxSliderStep < 1\n ? this.props.yMaxFractionDigits\n : undefined\n }\n yMaxLabelPostfix={this.props.yMaxLabelPostfix}\n yAxisLabelPadding={this.props.yAxisLabelPadding}\n showYAxis={this.props.showYAxis}\n bottomYMax={this.bottomYMaxInput}\n onXAxisOffset={this.onXAxisOffset}\n topYAxisSymbol={this.props.topYAxisSymbol}\n bottomYAxisSymbol={this.props.bottomYAxisSymbol}\n groups={this.groups}\n />\n <TrackPanel\n store={this.props.store}\n geneWidth={this.props.geneWidth}\n tracks={this.props.tracks}\n trackVisibility={this.trackVisibility}\n pubMedCache={this.props.pubMedCache}\n proteinLength={this.proteinLength}\n geneXOffset={this.geneXOffset}\n collapsePtmTrack={this.props.collapsePtmTrack}\n collapseUniprotTopologyTrack={\n this.props.collapseUniprotTopologyTrack\n }\n />\n </div>\n );\n } else if (\n this.props.store.canonicalTranscript.isComplete &&\n this.props.store.canonicalTranscript.result === undefined\n ) {\n return (\n <span>\n <i className=\"fa fa-exclamation-triangle text-danger\" /> No\n Transcript found for {this.hugoGeneSymbol}\n </span>\n );\n } else {\n return (\n this.props.loadingIndicator || (\n <i className=\"fa fa-spinner fa-pulse fa-2x\" />\n )\n );\n }\n }\n}\n","import { action, observable, makeObservable } from 'mobx';\nimport { CacheData, MobxCache } from 'cbioportal-utils';\nimport _ from 'lodash';\n\nexport abstract class DefaultStringQueryCache<D>\n implements MobxCache<D, string> {\n protected _cache = observable.map<string, CacheData>({}, { deep: false });\n\n constructor() {\n makeObservable(this);\n }\n\n @action\n public get(query: string) {\n if (!this._cache.get(query)) {\n this._cache.set(query, { status: 'pending' });\n\n this.fetch(query)\n .then((d: D) =>\n this._cache.set(query, { status: 'complete', data: d })\n )\n .catch(() => this._cache.set(query, { status: 'error' }));\n }\n\n const data = this._cache.get(query);\n\n return data ? data : null;\n }\n\n public abstract fetch(query: string): Promise<D>;\n\n public get cache() {\n return _.fromPairs(this._cache.toJSON());\n }\n}\n","import request from 'superagent';\n\nimport { DefaultStringQueryCache } from './DefaultStringQueryCache';\n\nexport class DefaultPubMedCache extends DefaultStringQueryCache<any> {\n public async fetch(query: string) {\n const pubMedRecords = await new Promise<any>((resolve, reject) => {\n // TODO duplicate code from cbioportal-frontend\n request\n .post(\n 'https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pubmed&retmode=json'\n )\n .type('form')\n .send({ id: query })\n .end((err, res) => {\n if (!err && res.ok) {\n const response = JSON.parse(res.text);\n const result = response.result;\n const uids = result.uids;\n const ret: any = {};\n for (let uid of uids) {\n ret[uid] = result[uid];\n }\n resolve(ret);\n } else {\n reject(err);\n }\n });\n });\n\n return pubMedRecords[query];\n }\n}\n","import request from 'superagent';\n\nimport {\n DEFAULT_MUTATION_ALIGNER_PROXY_URL_TEMPLATE,\n getUrl,\n} from '../util/DataFetcherUtils';\nimport { DefaultStringQueryCache } from './DefaultStringQueryCache';\n\nexport function fetchMutationAlignerLink(\n pfamDomainId: string,\n mutationAlignerUrlTemplate: string = DEFAULT_MUTATION_ALIGNER_PROXY_URL_TEMPLATE\n): request.SuperAgentRequest {\n return request\n .get(getUrl(mutationAlignerUrlTemplate, { pfamDomainId }))\n .accept('application/json');\n}\n\nexport class MutationAlignerCache extends DefaultStringQueryCache<string> {\n constructor(private mutationAlignerUrlTemplate?: string) {\n super();\n }\n\n public fetch(pfamAccession: string): Promise<string> {\n return fetchMutationAlignerLink(\n pfamAccession,\n this.mutationAlignerUrlTemplate\n )\n .then(res =>\n Promise.resolve(\n `http://mutationaligner.org/domains/${res.body.pfamId}`\n )\n )\n .catch(e => Promise.reject(e));\n }\n}\n","import autobind from 'autobind-decorator';\nimport _ from 'lodash';\nimport { action, computed, observable, makeObservable } from 'mobx';\n\nimport { Mutation } from 'cbioportal-utils';\n\nimport { DataFilter, DataFilterType } from '../model/DataFilter';\nimport DataStore from '../model/DataStore';\nimport { FilterApplier } from '../model/FilterApplier';\nimport {\n applyDataFiltersOnDatum,\n groupDataByGroupFilters,\n indexPositions,\n} from '../util/FilterUtils';\n\ntype GroupedData = Array<{ group: string; data: Array<Mutation | Mutation[]> }>;\n\nexport class DefaultMutationMapperDataStore implements DataStore {\n @observable public dataFilters: DataFilter[];\n @observable public selectionFilters: DataFilter[];\n @observable public highlightFilters: DataFilter[];\n @observable public groupFilters: { group: string; filter: DataFilter }[];\n\n // TODO simplify data if possible\n private data: Array<Mutation | Mutation[]>;\n\n // this custom filter applier allows us to interpret selection and highlight filters in a customized way,\n // by default only position filters are taken into account\n protected customFilterApplier: FilterApplier | undefined;\n\n constructor(\n data: Array<Mutation | Mutation[]>,\n customFilterApplier?: FilterApplier,\n dataFilters: DataFilter[] = [],\n selectionFilters: DataFilter[] = [],\n highlightFilters: DataFilter[] = [],\n groupFilters: { group: string; filter: DataFilter }[] = []\n ) {\n makeObservable(this);\n this.data = data;\n this.customFilterApplier = customFilterApplier;\n\n this.dataFilters = dataFilters;\n this.selectionFilters = selectionFilters;\n this.highlightFilters = highlightFilters;\n this.groupFilters = groupFilters;\n }\n\n @computed get groupFiltersKeyedByGroup() {\n return _.keyBy(this.groupFilters, 'group');\n }\n\n @computed\n public get allData() {\n return this.data;\n }\n\n @computed\n public get filteredData() {\n return this.dataFilters.length > 0\n ? // TODO simplify array flatten if possible\n this.data.filter(m => this.dataMainFilter(_.flatten([m])[0]))\n : this.data;\n }\n\n @computed\n public get sortedFilteredData() {\n return this.filteredData;\n }\n\n @computed\n public get sortedFilteredGroupedData(): GroupedData {\n return groupDataByGroupFilters(\n this.groupFilters,\n this.sortedFilteredData,\n this.applyFilter\n );\n }\n\n @computed\n public get sortedFilteredSelectedData() {\n return this.selectionFilters.length > 0\n ? // TODO simplify array flatten if possible\n this.sortedFilteredData.filter(m =>\n this.dataSelectFilter(_.flatten([m])[0])\n )\n : [];\n }\n\n @computed\n public get selectedPositions() {\n return indexPositions(this.selectionFilters);\n }\n\n @computed\n public get highlightedPositions() {\n return indexPositions(this.highlightFilters);\n }\n\n @action\n public clearHighlightFilters() {\n if (this.highlightFilters.length > 0) {\n this.highlightFilters = [];\n }\n }\n\n @action\n public clearSelectionFilters() {\n if (this.selectionFilters.length > 0) {\n this.selectionFilters = [];\n }\n }\n\n @action\n public clearDataFilters() {\n if (this.dataFilters.length > 0) {\n this.dataFilters = [];\n }\n }\n\n @action\n public setDataFilters(filters: DataFilter[]) {\n this.dataFilters = filters;\n }\n\n @action\n public setHighlightFilters(filters: DataFilter[]) {\n this.highlightFilters = filters;\n }\n\n @action\n public setSelectionFilters(filters: DataFilter[]) {\n this.selectionFilters = filters;\n }\n\n @action\n public setGroupFilters(filters: { group: string; filter: DataFilter }[]) {\n this.groupFilters = filters;\n }\n\n public isPositionSelected(position: number) {\n return !!this.selectedPositions[position + ''];\n }\n\n public isPositionHighlighted(position: number) {\n return !!this.highlightedPositions[position + ''];\n }\n\n public dataMainFilter(mutation: Mutation): boolean {\n return applyDataFiltersOnDatum(\n mutation,\n this.dataFilters,\n this.applyFilter\n );\n }\n\n public dataSelectFilter(mutation: Mutation): boolean {\n return applyDataFiltersOnDatum(\n mutation,\n this.selectionFilters,\n this.applyFilter\n );\n }\n\n public dataHighlightFilter(mutation: Mutation): boolean {\n return applyDataFiltersOnDatum(\n mutation,\n this.highlightFilters,\n this.applyFilter\n );\n }\n\n @autobind\n public applyFilter(filter: DataFilter, mutation: Mutation): boolean {\n if (this.customFilterApplier) {\n // let the custom filter applier decide how to apply the given filter\n return this.customFilterApplier.applyFilter(filter, mutation);\n } else {\n // by default only filter by position\n return (\n filter.type !== DataFilterType.POSITION ||\n filter.values.includes(mutation.proteinPosStart)\n );\n }\n }\n}\n\nexport default DefaultMutationMapperDataStore;\n","import _ from 'lodash';\nimport request from 'superagent';\nimport Response = request.Response;\n\nimport {\n AggregatedHotspots,\n EvidenceType,\n generateProteinChangeQuery,\n generateAnnotateStructuralVariantQuery,\n getMyVariantInfoAnnotationsFromIndexedVariantAnnotations,\n IOncoKbData,\n Mutation,\n UniprotFeature,\n UniprotFeatureList,\n uniqueGenomicLocations,\n StructuralVariantType,\n} from 'cbioportal-utils';\nimport {\n AnnotateMutationByProteinChangeQuery,\n AnnotateStructuralVariantQuery,\n CancerGene,\n OncoKbAPI,\n OncoKBInfo,\n} from 'oncokb-ts-api-client';\nimport {\n EnsemblFilter,\n EnsemblTranscript,\n GenomeNexusAPI,\n GenomeNexusAPIInternal,\n GenomicLocation,\n Hotspot,\n PfamDomain,\n PostTranslationalModification,\n VariantAnnotation,\n MyVariantInfo,\n} from 'genome-nexus-ts-api-client';\n\nimport { MutationMapperDataFetcher } from '../model/MutationMapperDataFetcher';\nimport {\n DEFAULT_MY_GENE_URL_TEMPLATE,\n DEFAULT_UNIPROT_ID_URL_TEMPLATE,\n fetchVariantAnnotationsIndexedByGenomicLocation,\n getUrl,\n initGenomeNexusClient,\n initGenomeNexusInternalClient,\n initOncoKbClient,\n ONCOKB_DEFAULT_DATA,\n} from '../util/DataFetcherUtils';\nimport { CanonicalMutationType } from 'cbioportal-frontend-commons';\n\nexport interface MutationMapperDataFetcherConfig {\n myGeneUrlTemplate?: string;\n uniprotIdUrlTemplate?: string;\n mutationAlignerUrlTemplate?: string;\n cachePostMethodsOnClients?: boolean;\n apiCacheLimit?: number;\n genomeNexusUrl?: string;\n oncoKbUrl?: string;\n}\n\nexport class DefaultMutationMapperDataFetcher\n implements MutationMapperDataFetcher {\n public oncoKbClient: OncoKbAPI;\n public genomeNexusClient: GenomeNexusAPI;\n public genomeNexusInternalClient: GenomeNexusAPIInternal;\n\n constructor(\n private config: MutationMapperDataFetcherConfig,\n genomeNexusClient?: Partial<GenomeNexusAPI>,\n genomeNexusInternalClient?: Partial<GenomeNexusAPIInternal>,\n oncoKbClient?: Partial<OncoKbAPI>\n ) {\n this.genomeNexusClient =\n (genomeNexusClient as GenomeNexusAPI) ||\n initGenomeNexusClient(\n config.genomeNexusUrl,\n config.cachePostMethodsOnClients,\n config.apiCacheLimit\n );\n this.genomeNexusInternalClient =\n (genomeNexusInternalClient as GenomeNexusAPIInternal) ||\n initGenomeNexusInternalClient(\n config.genomeNexusUrl,\n config.cachePostMethodsOnClients,\n config.apiCacheLimit\n );\n this.oncoKbClient =\n (oncoKbClient as OncoKbAPI) ||\n initOncoKbClient(\n config.oncoKbUrl,\n config.cachePostMethodsOnClients,\n config.apiCacheLimit\n );\n }\n\n public async fetchSwissProtAccession(entrezGeneId: number): Promise<any> {\n const myGeneData: Response = await request.get(\n getUrl(\n this.config.myGeneUrlTemplate || DEFAULT_MY_GENE_URL_TEMPLATE,\n { entrezGeneId }\n )\n );\n return JSON.parse(myGeneData.text).uniprot['Swiss-Prot'];\n }\n\n public async fetchUniprotId(swissProtAccession: string): Promise<string> {\n const uniprotData: Response = await request.get(\n getUrl(\n this.config.uniprotIdUrlTemplate ||\n DEFAULT_UNIPROT_ID_URL_TEMPLATE,\n { swissProtAccession }\n )\n );\n return uniprotData.text.split('\\n')[1];\n }\n\n public async fetchPfamDomainData(\n pfamAccessions: string[],\n client: GenomeNexusAPI = this.genomeNexusClient\n ): Promise<PfamDomain[]> {\n return await client.fetchPfamDomainsByPfamAccessionPOST({\n pfamAccessions: pfamAccessions,\n });\n }\n\n public async fetchVariantAnnotationsIndexedByGenomicLocation(\n mutations: Partial<Mutation>[],\n fields: string[] = ['annotation_summary'],\n isoformOverrideSource: string = 'uniprot',\n client: GenomeNexusAPI = this.genomeNexusClient\n ): Promise<{ [genomicLocation: string]: VariantAnnotation }> {\n return await fetchVariantAnnotationsIndexedByGenomicLocation(\n mutations,\n fields,\n isoformOverrideSource,\n client\n );\n }\n\n public async fetchMyVariantInfoAnnotationsIndexedByGenomicLocation(\n mutations: Partial<Mutation>[],\n isoformOverrideSource: string = 'uniprot',\n client: GenomeNexusAPI = this.genomeNexusClient\n ): Promise<{ [genomicLocation: string]: MyVariantInfo }> {\n const indexedVariantAnnotations = await fetchVariantAnnotationsIndexedByGenomicLocation(\n mutations,\n ['my_variant_info'],\n isoformOverrideSource,\n client\n );\n return getMyVariantInfoAnnotationsFromIndexedVariantAnnotations(\n indexedVariantAnnotations\n );\n }\n\n /*\n * Gets the canonical transcript. If there is none pick the transcript with max length.\n */\n public async fetchCanonicalTranscriptWithFallback(\n hugoSymbol: string,\n isoformOverrideSource: string,\n allTranscripts: EnsemblTranscript[] | undefined,\n client: GenomeNexusAPI = this.genomeNexusClient\n ): Promise<EnsemblTranscript | undefined> {\n return this.fetchCanonicalTranscript(\n hugoSymbol,\n isoformOverrideSource,\n client\n ).catch(() => {\n // get transcript with max protein length in given list of all transcripts\n const transcript = _.maxBy(\n allTranscripts,\n (t: EnsemblTranscript) => t.proteinLength\n );\n return transcript ? transcript : undefined;\n });\n }\n\n public async fetchCanonicalTranscript(\n hugoSymbol: string,\n isoformOverrideSource: string,\n client: GenomeNexusAPI = this.genomeNexusClient\n ): Promise<EnsemblTranscript> {\n return await client.fetchCanonicalEnsemblTranscriptByHugoSymbolGET({\n hugoSymbol,\n isoformOverrideSource,\n });\n }\n\n public async fetchEnsemblTranscriptsByEnsemblFilter(\n ensemblFilter: Partial<EnsemblFilter>,\n client: GenomeNexusAPI = this.genomeNexusClient\n ): Promise<EnsemblTranscript[] | undefined> {\n return await client.fetchEnsemblTranscriptsByEnsemblFilterPOST({\n ensemblFilter: Object.assign(\n // set default to empty array\n {\n geneIds: [],\n hugoSymbols: [],\n proteinIds: [],\n transcriptIds: [],\n },\n ensemblFilter\n ),\n });\n }\n\n public fetchPtmData(\n ensemblId: string,\n client: GenomeNexusAPI = this.genomeNexusClient\n ): Promise<PostTranslationalModification[]> {\n if (ensemblId) {\n return client.fetchPostTranslationalModificationsGET({\n ensemblTranscriptId: ensemblId,\n });\n } else {\n return Promise.resolve([]);\n }\n }\n\n public async fetchUniprotFeatures(\n swissProtId: string,\n category: string[],\n client: GenomeNexusAPI = this.genomeNexusClient\n ): Promise<UniprotFeature[]> {\n if (swissProtId) {\n // TODO for now fetching only PTM and TOPOLOGY features\n const uniprotData: Response = await request.get(\n getUrl(\n `https://www.ebi.ac.uk/proteins/api/features/<%= uniprotAccession %>?categories=${category.join(\n ','\n )}`,\n { uniprotAccession: swissProtId }\n )\n );\n\n const featureList: UniprotFeatureList = JSON.parse(\n uniprotData.text\n );\n return featureList.features;\n } else {\n return Promise.resolve([]);\n }\n }\n\n public fetchCancerHotspotData(\n ensemblId: string,\n client: GenomeNexusAPIInternal = this.genomeNexusInternalClient\n ): Promise<Hotspot[]> {\n if (ensemblId) {\n return client.fetchHotspotAnnotationByTranscriptIdGET({\n transcriptId: ensemblId,\n });\n } else {\n return Promise.resolve([]);\n }\n }\n\n public fetchAggregatedHotspotsData(\n mutations: Mutation[],\n client: GenomeNexusAPIInternal = this.genomeNexusInternalClient\n ): Promise<AggregatedHotspots[]> {\n // TODO filter out non-hotspot genes\n\n if (mutations.length === 0) {\n return Promise.resolve([]);\n }\n\n const genomicLocations: GenomicLocation[] = uniqueGenomicLocations(\n mutations\n );\n return client.fetchHotspotAnnotationByGenomicLocationPOST({\n genomicLocations: genomicLocations,\n });\n }\n\n public fetchOncoKbCancerGenes(\n client: OncoKbAPI = this.oncoKbClient\n ): Promise<CancerGene[]> {\n return client.utilsCancerGeneListGetUsingGET_1({});\n }\n\n public fetchOncoKbInfo(\n client: OncoKbAPI = this.oncoKbClient\n ): Promise<OncoKBInfo> {\n return client.infoGetUsingGET_1({});\n }\n\n public async fetchOncoKbData(\n mutations: Mutation[],\n annotatedGenes: { [entrezGeneId: number]: boolean } | Error,\n getTumorType: (mutation: Mutation) => string,\n getEntrezGeneId: (mutation: Mutation) => number,\n evidenceTypes?: EvidenceType[],\n client: OncoKbAPI = this.oncoKbClient\n ): Promise<IOncoKbData | Error> {\n if (annotatedGenes instanceof Error) {\n return new Error();\n } else if (mutations.length === 0) {\n return ONCOKB_DEFAULT_DATA;\n }\n\n const mutationsToQuery = _.filter(\n mutations,\n m =>\n (m.mutationType &&\n m.mutationType.toLowerCase() ===\n CanonicalMutationType.FUSION) ||\n !!annotatedGenes[getEntrezGeneId(m)]\n );\n\n return this.queryOncoKbData(\n mutationsToQuery,\n getTumorType,\n getEntrezGeneId,\n client,\n evidenceTypes\n );\n }\n\n public async queryOncoKbData(\n queryVariants: Mutation[],\n getTumorType: (mutation: Mutation) => string,\n getEntrezGeneId: (mutation: Mutation) => number,\n client: OncoKbAPI = this.oncoKbClient,\n evidenceTypes?: EvidenceType[]\n ) {\n const mutationQueryVariants: AnnotateMutationByProteinChangeQuery[] = _.uniqBy(\n _.map(\n queryVariants.filter(\n mutation => mutation.mutationType !== 'Fusion'\n ),\n (mutation: Mutation) => {\n return generateProteinChangeQuery(\n getEntrezGeneId(mutation),\n getTumorType(mutation),\n mutation.proteinChange,\n mutation.mutationType,\n mutation.proteinPosStart,\n mutation.proteinPosEnd,\n evidenceTypes\n );\n }\n ),\n 'id'\n );\n const structuralQueryVariants: AnnotateStructuralVariantQuery[] = _.uniqBy(\n _.map(\n queryVariants.filter(\n mutation =>\n mutation.mutationType?.toUpperCase() ===\n StructuralVariantType.FUSION\n ),\n (mutation: Mutation) => {\n return generateAnnotateStructuralVariantQuery(\n getEntrezGeneId(mutation),\n getTumorType(mutation),\n mutation.proteinChange,\n mutation.mutationType,\n evidenceTypes\n );\n }\n ),\n 'id'\n );\n\n const mutationQueryResult =\n mutationQueryVariants.length === 0\n ? []\n : await client.annotateMutationsByProteinChangePostUsingPOST_1({\n body: mutationQueryVariants,\n });\n\n const structuralVariantQueryResult =\n structuralQueryVariants.length === 0\n ? []\n : await client.annotateStructuralVariantsPostUsingPOST_1({\n body: structuralQueryVariants,\n });\n\n return {\n // generateIdToIndicatorMap(oncokbSearch)\n indicatorMap: _.keyBy(\n mutationQueryResult.concat(structuralVariantQueryResult),\n indicator => indicator.query.id\n ),\n };\n }\n}\n\nexport default DefaultMutationMapperDataFetcher;\n","import autobind from 'autobind-decorator';\nimport MobxPromise from 'mobxpromise';\nimport {\n defaultHotspotFilter,\n IHotspotIndex,\n IOncoKbData,\n isHotspot,\n Mutation,\n} from 'cbioportal-utils';\n\nimport { HotspotFilter } from '../filter/HotspotFilter';\nimport { MutationFilter } from '../filter/MutationFilter';\nimport { MutationStatusFilter } from '../filter/MutationStatusFilter';\nimport { OncoKbFilter } from '../filter/OncoKbFilter';\nimport { PositionFilter } from '../filter/PositionFilter';\nimport { ProteinImpactTypeFilter } from '../filter/ProteinImpactTypeFilter';\nimport { DataFilter, DataFilterType } from '../model/DataFilter';\nimport { ApplyFilterFn, FilterApplier } from '../model/FilterApplier';\nimport {\n applyDefaultMutationFilter,\n applyDefaultMutationStatusFilter,\n applyDefaultPositionFilter,\n applyDefaultProteinImpactTypeFilter,\n} from '../util/FilterUtils';\nimport { defaultOncoKbFilter } from '../util/OncoKbUtils';\n\nexport class DefaultMutationMapperFilterApplier implements FilterApplier {\n protected get customFilterAppliers(): {\n [filterType: string]: ApplyFilterFn;\n } {\n return {\n [DataFilterType.POSITION]: this.applyPositionFilter,\n [DataFilterType.ONCOKB]: this.applyOncoKbFilter,\n [DataFilterType.HOTSPOT]: this.applyHostpotFilter,\n [DataFilterType.MUTATION]: this.applyMutationFilter,\n [DataFilterType.PROTEIN_IMPACT_TYPE]: this\n .applyProteinImpactTypeFilter,\n [DataFilterType.MUTATION_STATUS]: this.applyMutationStatusFilter,\n ...this.filterAppliersOverride,\n };\n }\n\n constructor(\n protected indexedHotspotData: MobxPromise<IHotspotIndex | undefined>,\n protected oncoKbData: MobxPromise<IOncoKbData | Error>,\n protected getDefaultTumorType: (mutation: Mutation) => string,\n protected getDefaultEntrezGeneId: (mutation: Mutation) => number,\n protected filterAppliersOverride?: {\n [filterType: string]: ApplyFilterFn;\n }\n ) {}\n\n @autobind\n public applyFilter(filter: DataFilter, mutation: Mutation) {\n const applyFilter = this.customFilterAppliers[filter.type];\n\n return !applyFilter || applyFilter(filter, mutation);\n }\n\n @autobind\n protected applyMutationFilter(filter: MutationFilter, mutation: Mutation) {\n return applyDefaultMutationFilter(filter, mutation);\n }\n\n @autobind\n protected applyOncoKbFilter(filter: OncoKbFilter, mutation: Mutation) {\n // TODO for now ignoring the actual filter value and treating as a boolean\n return (\n !filter.values ||\n !this.oncoKbData.result ||\n this.oncoKbData.result instanceof Error ||\n defaultOncoKbFilter(\n mutation,\n this.oncoKbData.result,\n this.getDefaultTumorType,\n this.getDefaultEntrezGeneId\n )\n );\n }\n\n @autobind\n protected applyHostpotFilter(filter: HotspotFilter, mutation: Mutation) {\n // TODO for now ignoring the actual filter value and treating as a boolean\n return (\n !filter.values ||\n !this.indexedHotspotData.result ||\n isHotspot(\n mutation,\n this.indexedHotspotData.result,\n defaultHotspotFilter\n )\n );\n }\n\n @autobind\n protected applyPositionFilter(filter: PositionFilter, mutation: Mutation) {\n return applyDefaultPositionFilter(filter, mutation);\n }\n\n @autobind\n protected applyProteinImpactTypeFilter(\n filter: ProteinImpactTypeFilter,\n mutation: Mutation\n ) {\n return applyDefaultProteinImpactTypeFilter(filter, mutation);\n }\n\n @autobind\n protected applyMutationStatusFilter(\n filter: MutationStatusFilter,\n mutation: Mutation\n ) {\n return applyDefaultMutationStatusFilter(filter, mutation);\n }\n}\n\nexport default DefaultMutationMapperFilterApplier;\n","import autobind from 'autobind-decorator';\nimport { remoteData } from 'cbioportal-frontend-commons';\nimport {\n AggregatedHotspots,\n convertDbPtmToPtm,\n convertUniprotFeatureToPtm,\n defaultHotspotFilter,\n genomicLocationString,\n getMyCancerGenomeData,\n groupCancerHotspotDataByPosition,\n groupHotspotsByMutations,\n getMutationsByTranscriptId,\n groupMutationsByProteinStartPos,\n groupPtmDataByPosition,\n groupPtmDataByTypeAndPosition,\n indexHotspotsData,\n ICivicGeneIndex,\n ICivicVariantIndex,\n IHotspotIndex,\n IMyCancerGenomeData,\n IOncoKbData,\n fetchCivicGenes,\n fetchCivicVariants,\n PostTranslationalModification,\n PtmSource,\n UniprotFeature,\n uniqueGenomicLocations,\n UniprotCategory,\n convertUniprotFeatureToUniprotTopology,\n UniprotTopology,\n} from 'cbioportal-utils';\nimport { Gene, Mutation, IMyVariantInfoIndex } from 'cbioportal-utils';\nimport memoize from 'memoize-weak-decorator';\n\nimport {\n CancerGene,\n IndicatorQueryResp,\n OncoKBInfo,\n} from 'oncokb-ts-api-client';\nimport {\n EnsemblTranscript,\n GenomicLocation,\n Hotspot,\n PfamDomain,\n PfamDomainRange,\n PostTranslationalModification as DbPtm,\n // TODO UniprotFeature, UniprotFeatureList\n VariantAnnotation,\n} from 'genome-nexus-ts-api-client';\nimport _ from 'lodash';\nimport { computed, observable, makeObservable } from 'mobx';\nimport MobxPromise, { cached } from 'mobxpromise';\n\nimport { DataFilter, DataFilterType } from '../model/DataFilter';\nimport DataStore from '../model/DataStore';\nimport { ApplyFilterFn, FilterApplier } from '../model/FilterApplier';\nimport { MutationMapperDataFetcher } from '../model/MutationMapperDataFetcher';\nimport { MutationMapperStore } from '../model/MutationMapperStore';\nimport {\n ONCOKB_DEFAULT_DATA,\n ONCOKB_DEFAULT_INFO,\n USE_DEFAULT_PUBLIC_INSTANCE_FOR_ONCOKB,\n} from '../util/DataFetcherUtils';\nimport {\n applyDataFilters,\n groupDataByProteinImpactType,\n} from '../util/FilterUtils';\nimport {\n defaultOncoKbIndicatorFilter,\n groupOncoKbIndicatorDataByMutations,\n} from '../util/OncoKbUtils';\nimport { DefaultMutationMapperDataStore } from './DefaultMutationMapperDataStore';\nimport { DefaultMutationMapperDataFetcher } from './DefaultMutationMapperDataFetcher';\nimport { DefaultMutationMapperFilterApplier } from './DefaultMutationMapperFilterApplier';\n\ninterface DefaultMutationMapperStoreConfig {\n annotationFields?: string[];\n isoformOverrideSource?: string;\n ptmSources?: string[];\n filterMutationsBySelectedTranscript?: boolean;\n genomeNexusUrl?: string;\n oncoKbUrl?: string;\n enableCivic?: boolean;\n enableOncoKb?: boolean;\n cachePostMethodsOnClients?: boolean;\n apiCacheLimit?: number;\n getMutationCount?: (mutation: Partial<Mutation>) => number;\n getTumorType?: (mutation: Partial<Mutation>) => string;\n filterApplier?: FilterApplier;\n filterAppliersOverride?: {\n [filterType: string]: ApplyFilterFn;\n };\n dataFetcher?: MutationMapperDataFetcher;\n dataFilters?: DataFilter[];\n selectionFilters?: DataFilter[];\n highlightFilters?: DataFilter[];\n groupFilters?: { group: string; filter: DataFilter }[];\n}\n\nclass DefaultMutationMapperStore<T extends Mutation>\n implements MutationMapperStore<T> {\n protected getDataFetcher?: () => MutationMapperDataFetcher;\n\n @observable\n private _selectedTranscript: string | undefined = undefined;\n\n // this allows us to keep selected transcript state in one of two places\n // external (e.g. url)\n // internal (_selectedTranscript)\n // we default to external\n @computed get selectedTranscript(): string | undefined {\n if (this.getTranscriptId) {\n return this.getTranscriptId();\n } else {\n return this._selectedTranscript;\n }\n }\n\n constructor(\n public gene: Gene,\n protected config: DefaultMutationMapperStoreConfig,\n protected getMutations: () => T[],\n public getTranscriptId?: () => string | undefined\n ) {\n makeObservable<\n DefaultMutationMapperStore<T>,\n '_selectedTranscript' | 'mutationsGroupedByProteinImpactType'\n >(this);\n }\n\n readonly activeTranscript: MobxPromise<string | undefined> = remoteData(\n {\n await: () => [\n this.allTranscripts,\n this.canonicalTranscript,\n this.transcriptsWithAnnotations,\n ],\n invoke: async () => {\n let activeTranscript;\n const canonicalTranscriptId = this.canonicalTranscript.result\n ? this.canonicalTranscript.result.transcriptId\n : undefined;\n const selectedTranscript =\n this.selectedTranscript &&\n this.allTranscripts.result &&\n this.allTranscripts.result.find(\n transcript =>\n transcript.transcriptId === this.selectedTranscript\n )\n ? this.selectedTranscript\n : undefined;\n\n if (selectedTranscript) {\n activeTranscript = selectedTranscript;\n } else if (this.config.filterMutationsBySelectedTranscript) {\n if (\n this.transcriptsWithAnnotations.result &&\n this.transcriptsWithAnnotations.result.length > 0 &&\n canonicalTranscriptId &&\n !this.transcriptsWithAnnotations.result.includes(\n canonicalTranscriptId\n )\n ) {\n activeTranscript = this.transcriptsWithAnnotations\n .result[0];\n } else {\n activeTranscript = canonicalTranscriptId;\n }\n } else {\n activeTranscript = canonicalTranscriptId;\n }\n\n return activeTranscript;\n },\n },\n undefined\n );\n\n public setSelectedTranscript(transcript: string | undefined) {\n this._selectedTranscript = transcript;\n }\n\n @computed\n public get isoformOverrideSource(): string {\n return this.config.isoformOverrideSource || 'uniprot';\n }\n\n @computed\n public get ptmSources(): string[] {\n return this.config.ptmSources || [PtmSource.dbPTM];\n }\n\n @computed\n public get annotationFields(): string[] {\n return _.uniq(\n ['annotation_summary', 'hotspots'].concat(\n this.config.annotationFields || []\n )\n );\n }\n\n protected getDataStore?: () => DataStore;\n\n @cached\n @computed\n public get dataStore(): DataStore {\n if (this.getDataStore) {\n return this.getDataStore();\n }\n return new DefaultMutationMapperDataStore(\n this.mutations,\n this.filterApplier,\n this.config.dataFilters,\n this.config.selectionFilters,\n this.config.highlightFilters,\n this.config.groupFilters\n );\n }\n\n public readonly myCancerGenomeData: IMyCancerGenomeData = getMyCancerGenomeData();\n\n @computed\n public get mutations(): T[] {\n if (\n this.canonicalTranscript.isPending ||\n (this.config.filterMutationsBySelectedTranscript &&\n (this.transcriptsWithAnnotations.isPending ||\n this.indexedVariantAnnotations.isPending) &&\n this.canonicalTranscript.isPending)\n ) {\n return [];\n } else if (\n this.config.filterMutationsBySelectedTranscript &&\n this.activeTranscript.result &&\n this.indexedVariantAnnotations.result &&\n !_.isEmpty(this.indexedVariantAnnotations.result)\n ) {\n return this.getAnnotatedMutations(this.activeTranscript.result);\n } else {\n return this.getMutations();\n }\n }\n\n @memoize\n protected getAnnotatedMutationsByTranscriptId(\n mutations: T[],\n transcriptId: string,\n indexedVariantAnnotations: {\n [genomicLocation: string]: VariantAnnotation;\n }\n ): T[] {\n // by default annotate every mutation, no check for canonical transcript\n return getMutationsByTranscriptId(\n mutations,\n transcriptId,\n indexedVariantAnnotations\n );\n }\n\n public getAnnotatedMutations(transcriptId: string): T[] {\n // in case we don't have any annotation for the given set of mutations or the annotation fails due to an error\n // (external service error, etc.) we just return the input set of mutations as is. Ideally this function\n // should not be invoked when this.indexedVariantAnnotations.result is undefined\n if (this.indexedVariantAnnotations.result) {\n return this.getAnnotatedMutationsByTranscriptId(\n this.getMutations(),\n transcriptId,\n this.indexedVariantAnnotations.result\n );\n } else {\n return this.getMutations();\n }\n }\n\n @computed\n public get filterApplier() {\n return (\n this.config.filterApplier ||\n new DefaultMutationMapperFilterApplier(\n this.indexedHotspotData,\n this.oncoKbData,\n this.getDefaultTumorType,\n this.getDefaultEntrezGeneId,\n this.config.filterAppliersOverride\n )\n );\n }\n\n @computed\n public get dataFetcher(): MutationMapperDataFetcher {\n return (\n this.config.dataFetcher ||\n (this.getDataFetcher && this.getDataFetcher()) ||\n new DefaultMutationMapperDataFetcher({\n genomeNexusUrl: this.config.genomeNexusUrl,\n oncoKbUrl: this.config.oncoKbUrl,\n cachePostMethodsOnClients: this.config\n .cachePostMethodsOnClients,\n apiCacheLimit: this.config.apiCacheLimit,\n })\n );\n }\n\n @computed\n public get mutationsByPosition(): { [pos: number]: T[] } {\n return groupMutationsByProteinStartPos(\n _.flatten(this.dataStore.sortedFilteredData)\n );\n }\n\n @computed\n public get groupedMutationsByPosition(): {\n group: string;\n mutations: { [pos: number]: T[] };\n }[] {\n return this.dataStore.sortedFilteredGroupedData.map(groupedData => ({\n group: groupedData.group,\n mutations: groupMutationsByProteinStartPos(\n _.flatten(groupedData.data)\n ),\n }));\n }\n\n protected getMutationsGroupedByProteinImpactType?: () => {\n [type: string]: { group: string; data: any[] };\n };\n\n @computed\n protected get mutationsGroupedByProteinImpactType() {\n if (this.getMutationsGroupedByProteinImpactType) {\n return this.getMutationsGroupedByProteinImpactType();\n }\n const filtersWithoutProteinImpactTypeFilter = this.dataStore.dataFilters.filter(\n f => f.type !== DataFilterType.PROTEIN_IMPACT_TYPE\n );\n\n // apply filters excluding the protein impact type filters\n // this prevents number of unchecked protein impact types from being counted as zero\n const sortedFilteredData = applyDataFilters(\n this.dataStore.allData,\n filtersWithoutProteinImpactTypeFilter,\n this.dataStore.applyFilter\n );\n\n return groupDataByProteinImpactType(sortedFilteredData);\n }\n\n @computed\n public get mutationCountsByProteinImpactType(): {\n [proteinImpactType: string]: number;\n } {\n const map: { [proteinImpactType: string]: number } = {};\n\n Object.keys(this.mutationsGroupedByProteinImpactType).forEach(\n proteinImpactType => {\n const g = this.mutationsGroupedByProteinImpactType[\n proteinImpactType\n ];\n map[g.group] = g.data.length;\n }\n );\n\n return map;\n }\n\n @computed\n public get uniqueMutationCountsByPosition(): { [pos: number]: number } {\n return this.countUniqueMutationsByPosition(this.mutationsByPosition);\n }\n\n @computed\n public get uniqueGroupedMutationCountsByPosition(): {\n group: string;\n counts: { [pos: number]: number };\n }[] {\n return this.groupedMutationsByPosition.map(groupedMutations => ({\n group: groupedMutations.group,\n counts: this.countUniqueMutationsByPosition(\n groupedMutations.mutations\n ),\n }));\n }\n\n @computed\n public get transcriptsByTranscriptId(): {\n [transcriptId: string]: EnsemblTranscript;\n } {\n return _.keyBy(\n this.allTranscripts.result,\n (transcript: EnsemblTranscript) => transcript.transcriptId\n );\n }\n\n public countUniqueMutationsByPosition(mutationsByPosition: {\n [pos: number]: T[];\n }): { [pos: number]: number } {\n const map: { [pos: number]: number } = {};\n\n Object.keys(mutationsByPosition).forEach(pos => {\n const position = parseInt(pos, 10);\n // for each position multiple mutations for the same patient is counted only once\n const mutations = mutationsByPosition[position];\n if (mutations) {\n map[position] = this.countUniqueMutations(mutations);\n }\n });\n\n return map;\n }\n\n public countUniqueMutations(mutations: T[]): number {\n // assume by default all mutations are unique\n // child classes need to override this method to have a custom way of counting unique mutations\n return this.config.getMutationCount\n ? this.getMutationCount(mutations, this.config.getMutationCount)\n : mutations.length;\n }\n\n protected getMutationCount(\n mutations: T[],\n getMutationCount: (mutation: Partial<T>) => number\n ) {\n return mutations\n .map(m => getMutationCount(m))\n .reduce((sum, count) => sum + count);\n }\n\n readonly mutationData: MobxPromise<Partial<T>[] | undefined> = remoteData(\n {\n await: () => {\n if (this.config.filterMutationsBySelectedTranscript) {\n return [\n this.canonicalTranscript,\n this.indexedVariantAnnotations,\n ];\n } else {\n return [this.canonicalTranscript];\n }\n },\n invoke: async () => {\n return this.mutations;\n },\n },\n []\n );\n\n readonly swissProtId: MobxPromise<string> = remoteData(\n {\n invoke: async () => {\n // do not try fetching swissprot data for invalid entrez gene ids,\n // just return the default value\n if (!this.gene.entrezGeneId || this.gene.entrezGeneId < 1) {\n return '';\n }\n\n const accession:\n | string\n | string[] = await this.dataFetcher.fetchSwissProtAccession(\n this.gene.entrezGeneId\n );\n\n if (_.isArray(accession)) {\n return accession[0];\n } else {\n return accession;\n }\n },\n onError: () => {\n // fail silently\n },\n },\n ''\n );\n\n readonly uniprotId: MobxPromise<string | undefined> = remoteData(\n {\n await: () => [this.swissProtId],\n invoke: async () => {\n if (this.swissProtId.result) {\n return this.dataFetcher.fetchUniprotId(\n this.swissProtId.result\n );\n } else {\n return '';\n }\n },\n onError: () => {\n // fail silently\n },\n },\n ''\n );\n\n readonly pfamDomainData: MobxPromise<PfamDomain[] | undefined> = remoteData(\n {\n await: () => [\n this.canonicalTranscript,\n this.transcriptsWithProteinLength,\n ],\n invoke: async () => {\n if (\n this.canonicalTranscript.result &&\n this.canonicalTranscript.result.pfamDomains &&\n this.canonicalTranscript.result.pfamDomains.length > 0\n ) {\n let domainRanges = this.canonicalTranscript.result\n .pfamDomains;\n if (\n this.config.filterMutationsBySelectedTranscript &&\n this.transcriptsWithProteinLength.result &&\n this.transcriptsWithProteinLength.result.length > 0\n ) {\n // add domain ranges for all transcripts to this call\n domainRanges = [].concat.apply(\n [domainRanges],\n _.compact(\n this.transcriptsWithProteinLength.result.map(\n (transcriptId: string) =>\n this.transcriptsByTranscriptId[\n transcriptId\n ].pfamDomains\n )\n )\n );\n }\n return this.dataFetcher.fetchPfamDomainData(\n domainRanges.map((x: PfamDomainRange) => x.pfamDomainId)\n );\n } else {\n return undefined;\n }\n },\n },\n undefined\n );\n\n readonly canonicalTranscript: MobxPromise<\n EnsemblTranscript | undefined\n > = remoteData(\n {\n await: () => [this.transcriptsByHugoSymbol],\n invoke: async () => {\n if (this.gene) {\n return this.dataFetcher.fetchCanonicalTranscriptWithFallback(\n this.gene.hugoGeneSymbol,\n this.isoformOverrideSource,\n this.transcriptsByHugoSymbol.result\n );\n } else {\n return undefined;\n }\n },\n onError: () => {\n throw new Error('Failed to get canonical transcript');\n },\n },\n undefined\n );\n\n readonly allTranscripts: MobxPromise<\n EnsemblTranscript[] | undefined\n > = remoteData(\n {\n await: () => [\n this.transcriptsByHugoSymbol,\n this.canonicalTranscript,\n ],\n invoke: async () => {\n return _.compact(\n _.unionBy(\n this.transcriptsByHugoSymbol.result,\n [this.canonicalTranscript.result],\n t => t && t.transcriptId\n )\n );\n },\n onError: () => {\n throw new Error('Failed to get all transcripts');\n },\n },\n undefined\n );\n\n readonly transcriptsByHugoSymbol: MobxPromise<\n EnsemblTranscript[] | undefined\n > = remoteData(\n {\n invoke: async () => {\n if (this.gene) {\n return this.dataFetcher.fetchEnsemblTranscriptsByEnsemblFilter(\n { hugoSymbols: [this.gene.hugoGeneSymbol] }\n );\n } else {\n return undefined;\n }\n },\n onError: () => {\n throw new Error('Failed to fetch all transcripts');\n },\n },\n undefined\n );\n\n readonly transcriptsWithProteinLength: MobxPromise<\n string[] | undefined\n > = remoteData(\n {\n await: () => [this.allTranscripts, this.canonicalTranscript],\n invoke: async () => {\n if (\n this.allTranscripts.result &&\n this.canonicalTranscript.result\n ) {\n // ignore transcripts without protein length\n // TODO: better solution is to hide lollipop plot for those transcripts\n return _.compact(\n this.allTranscripts.result.map(\n (et: EnsemblTranscript) =>\n et.proteinLength && et.transcriptId\n )\n );\n } else {\n return [];\n }\n },\n onError: () => {\n throw new Error('Failed to get transcriptsWithProteinLength');\n },\n },\n undefined\n );\n\n readonly transcriptsWithAnnotations: MobxPromise<\n string[] | undefined\n > = remoteData(\n {\n await: () => [\n this.indexedVariantAnnotations,\n this.allTranscripts,\n this.transcriptsWithProteinLength,\n this.canonicalTranscript,\n ],\n invoke: async () => {\n if (\n this.indexedVariantAnnotations.result &&\n this.allTranscripts.result &&\n this.transcriptsWithProteinLength.result &&\n this.transcriptsWithProteinLength.result.length > 0\n ) {\n // ignore transcripts without protein length\n // TODO: better solution is to show only mutations table, not lollipop plot for those transcripts\n const transcripts: string[] = _.uniq(\n [].concat.apply(\n [],\n uniqueGenomicLocations(this.getMutations()).map(\n (gl: GenomicLocation) => {\n const variantAnnotation = this\n .indexedVariantAnnotations.result\n ? this.indexedVariantAnnotations.result[\n genomicLocationString(gl)\n ]\n : undefined;\n\n if (\n variantAnnotation &&\n !_.isEmpty(\n variantAnnotation.transcript_consequences\n )\n ) {\n return variantAnnotation.transcript_consequences\n .map(tc => tc.transcript_id)\n .filter((transcriptId: string) =>\n this.transcriptsWithProteinLength.result!.includes(\n transcriptId\n )\n );\n } else {\n return [];\n }\n }\n )\n )\n );\n // makes sure the annotations are actually of the form we are displaying (e.g. nonsynonymous)\n return transcripts.filter(\n t => this.getAnnotatedMutations(t).length > 0\n );\n } else {\n return [];\n }\n },\n onError: () => {\n throw new Error('Failed to get transcriptsWithAnnotations');\n },\n },\n undefined\n );\n\n readonly ptmData: MobxPromise<PostTranslationalModification[]> = remoteData(\n {\n await: () => {\n const waitList = [];\n\n if (this.ptmSources.includes(PtmSource.Uniprot)) {\n waitList.push(this.uniprotPtmData);\n }\n if (this.ptmSources.includes(PtmSource.dbPTM)) {\n waitList.push(this.dbPtmData);\n }\n\n return waitList;\n },\n invoke: () => {\n const data: PostTranslationalModification[] = [];\n\n if (\n this.ptmSources.includes(PtmSource.Uniprot) &&\n this.uniprotPtmData.result\n ) {\n data.push(\n ...this.uniprotPtmData.result.map(\n convertUniprotFeatureToPtm\n )\n );\n }\n\n if (\n this.ptmSources.includes(PtmSource.dbPTM) &&\n this.dbPtmData.result\n ) {\n data.push(...this.dbPtmData.result.map(convertDbPtmToPtm));\n }\n\n return Promise.resolve(data);\n },\n onError: () => {\n // fail silently\n },\n }\n );\n\n readonly uniprotPtmData: MobxPromise<UniprotFeature[]> = remoteData(\n {\n await: () => [\n this.mutationData,\n this.activeTranscript,\n this.allTranscripts,\n ],\n invoke: async () => {\n let uniprotId: string | undefined;\n\n if (this.activeTranscript.result) {\n const transcript = this.transcriptsByTranscriptId[\n this.activeTranscript.result\n ];\n uniprotId = transcript?.uniprotId;\n }\n\n if (uniprotId) {\n // TODO we need to update genome nexus for this one to work,\n // for now we are getting the data directly from uniprot API\n // return this.dataFetcher.fetchPtmData(\n // this.activeTranscript.result\n // );\n return this.dataFetcher.fetchUniprotFeatures(uniprotId, [\n UniprotCategory.PTM,\n ]);\n } else {\n return [];\n }\n },\n onError: () => {\n // fail silently\n },\n },\n []\n );\n\n readonly uniprotTopologyData: MobxPromise<UniprotTopology[]> = remoteData(\n {\n await: () => [\n this.mutationData,\n this.activeTranscript,\n this.allTranscripts,\n ],\n invoke: async () => {\n let uniprotId: string | undefined;\n const data: UniprotTopology[] = [];\n\n if (this.activeTranscript.result) {\n const transcript = this.transcriptsByTranscriptId[\n this.activeTranscript.result\n ];\n uniprotId = transcript?.uniprotId;\n }\n\n if (uniprotId) {\n // TODO we need to update genome nexus for this one to work,\n // for now we are getting the data directly from uniprot API\n const uniprotFeatures = await this.dataFetcher.fetchUniprotFeatures(\n uniprotId,\n [UniprotCategory.TOPOLOGY]\n );\n uniprotFeatures.forEach(uniprotFeature => {\n let uniprotTopology = convertUniprotFeatureToUniprotTopology(\n uniprotFeature\n );\n if (uniprotTopology) {\n data.push(uniprotTopology);\n }\n });\n return data;\n } else {\n return [];\n }\n },\n onError: () => {\n // fail silently\n },\n },\n []\n );\n\n readonly dbPtmData: MobxPromise<DbPtm[]> = remoteData(\n {\n await: () => [this.mutationData, this.activeTranscript],\n invoke: async () => {\n if (this.activeTranscript.result) {\n return this.dataFetcher.fetchPtmData(\n this.activeTranscript.result\n );\n } else {\n return [];\n }\n },\n onError: () => {\n // fail silently\n },\n },\n []\n );\n\n readonly ptmDataByProteinPosStart: MobxPromise<\n { [pos: number]: PostTranslationalModification[] } | undefined\n > = remoteData(\n {\n await: () => [this.ptmData],\n invoke: async () =>\n this.ptmData.result\n ? groupPtmDataByPosition(this.ptmData.result)\n : {},\n },\n {}\n );\n\n readonly ptmDataByTypeAndProteinPosStart: MobxPromise<\n | {\n [type: string]: {\n [position: number]: PostTranslationalModification[];\n };\n }\n | undefined\n > = remoteData(\n {\n await: () => [this.ptmData],\n invoke: async () =>\n this.ptmData.result\n ? groupPtmDataByTypeAndPosition(this.ptmData.result)\n : {},\n },\n {}\n );\n\n readonly cancerHotspotsData: MobxPromise<Hotspot[]> = remoteData(\n {\n await: () => [this.mutationData, this.activeTranscript],\n invoke: async () => {\n if (this.activeTranscript.result) {\n // TODO resolve protein start pos if missing\n return this.dataFetcher.fetchCancerHotspotData(\n this.activeTranscript.result\n );\n } else {\n return [];\n }\n },\n onError: () => {\n // fail silently\n },\n },\n []\n );\n\n readonly cancerHotspotsDataByProteinPosStart: MobxPromise<{\n [pos: number]: Hotspot[];\n }> = remoteData(\n {\n await: () => [this.cancerHotspotsData],\n invoke: async () =>\n this.cancerHotspotsData.result\n ? groupCancerHotspotDataByPosition(\n this.cancerHotspotsData.result\n )\n : {},\n },\n {}\n );\n\n // Hotspots\n readonly hotspotData: MobxPromise<AggregatedHotspots[]> = remoteData({\n await: () => [this.mutationData],\n invoke: () => {\n return this.dataFetcher.fetchAggregatedHotspotsData(this.mutations);\n },\n });\n\n readonly indexedHotspotData: MobxPromise<\n IHotspotIndex | undefined\n > = remoteData({\n await: () => [this.hotspotData],\n invoke: () => Promise.resolve(indexHotspotsData(this.hotspotData)),\n });\n\n @computed\n get hotspotsByPosition(): { [pos: number]: Hotspot[] } {\n if (this.indexedHotspotData.result) {\n return groupHotspotsByMutations(\n this.mutationsByPosition,\n this.indexedHotspotData.result,\n defaultHotspotFilter\n );\n } else {\n return {};\n }\n }\n\n readonly oncoKbCancerGenes: MobxPromise<CancerGene[] | Error> = remoteData(\n {\n invoke: () => this.dataFetcher.fetchOncoKbCancerGenes(),\n },\n []\n );\n\n readonly oncoKbInfo: MobxPromise<OncoKBInfo> = remoteData(\n {\n invoke: () => this.dataFetcher.fetchOncoKbInfo(),\n onError: () => ONCOKB_DEFAULT_INFO,\n },\n ONCOKB_DEFAULT_INFO\n );\n\n @computed\n get usingPublicOncoKbInstance() {\n return this.oncoKbInfo.result\n ? this.oncoKbInfo.result.publicInstance\n : USE_DEFAULT_PUBLIC_INSTANCE_FOR_ONCOKB;\n }\n\n readonly oncoKbAnnotatedGenes: MobxPromise<{\n [entrezGeneId: number]: boolean;\n }> = remoteData(\n {\n await: () => [this.oncoKbCancerGenes],\n invoke: () =>\n Promise.resolve(\n _.reduce(\n this.oncoKbCancerGenes.result,\n (\n map: { [entrezGeneId: number]: boolean },\n next: CancerGene\n ) => {\n if (next.oncokbAnnotated) {\n map[next.entrezGeneId] = true;\n }\n return map;\n },\n {}\n )\n ),\n },\n {}\n );\n\n readonly oncoKbData: MobxPromise<IOncoKbData | Error> = remoteData(\n {\n await: () => [this.mutationData, this.oncoKbAnnotatedGenes],\n invoke: () =>\n this.config.enableOncoKb\n ? this.dataFetcher.fetchOncoKbData(\n this.mutations,\n this.oncoKbAnnotatedGenes.result!,\n this.getDefaultTumorType,\n this.getDefaultEntrezGeneId\n )\n : Promise.resolve(ONCOKB_DEFAULT_DATA),\n onError: () => {\n // fail silently, leave the error handling responsibility to the data consumer\n },\n },\n ONCOKB_DEFAULT_DATA\n );\n\n @computed\n get oncoKbDataByPosition(): { [pos: number]: IndicatorQueryResp[] } {\n if (\n this.oncoKbData.result &&\n !(this.oncoKbData.result instanceof Error)\n ) {\n return groupOncoKbIndicatorDataByMutations(\n this.mutationsByPosition,\n this.oncoKbData.result,\n this.getDefaultTumorType,\n this.getDefaultEntrezGeneId,\n defaultOncoKbIndicatorFilter\n );\n } else {\n return {};\n }\n }\n\n readonly civicGenes: MobxPromise<ICivicGeneIndex | undefined> = remoteData({\n await: () => [this.mutationData],\n invoke: async () =>\n this.config.enableCivic\n ? fetchCivicGenes(\n this.mutationData.result || [],\n this.getDefaultEntrezGeneId\n )\n : {},\n onError: () => {\n // fail silently\n },\n });\n\n readonly civicVariants = remoteData<ICivicVariantIndex | undefined>({\n await: () => [this.civicGenes, this.mutationData],\n invoke: async () => {\n if (this.config.enableCivic && this.civicGenes.result) {\n return fetchCivicVariants(\n this.civicGenes.result as ICivicGeneIndex,\n this.mutationData.result || []\n );\n } else {\n return {};\n }\n },\n onError: () => {\n // fail silently\n },\n });\n\n readonly indexedVariantAnnotations: MobxPromise<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n > = remoteData({\n invoke: async () =>\n !_.isEmpty(this.getMutations())\n ? await this.dataFetcher.fetchVariantAnnotationsIndexedByGenomicLocation(\n this.getMutations(),\n this.annotationFields,\n this.isoformOverrideSource\n )\n : undefined,\n onError: () => {\n // fail silently, leave the error handling responsibility to the data consumer\n },\n });\n\n readonly indexedMyVariantInfoAnnotations: MobxPromise<\n IMyVariantInfoIndex | undefined\n > = remoteData({\n await: () => [this.mutationData],\n invoke: async () =>\n !_.isEmpty(this.getMutations())\n ? await this.dataFetcher.fetchMyVariantInfoAnnotationsIndexedByGenomicLocation(\n this.getMutations(),\n this.isoformOverrideSource\n )\n : undefined,\n onError: () => {\n // fail silently, leave the error handling responsibility to the data consumer\n },\n });\n\n @computed\n get mutationsByTranscriptId(): { [transcriptId: string]: T[] } {\n if (\n this.indexedVariantAnnotations.result &&\n this.transcriptsWithAnnotations.result &&\n this.canonicalTranscript.isComplete\n ) {\n return _.fromPairs(\n this.transcriptsWithAnnotations.result.map((t: string) => [\n t,\n this.getAnnotatedMutations(t),\n ])\n );\n } else {\n return {};\n }\n }\n\n @autobind\n protected getDefaultTumorType(mutation: T): string {\n return this.config.getTumorType\n ? this.config.getTumorType(mutation)\n : 'Unknown';\n }\n\n @autobind\n protected getDefaultEntrezGeneId(mutation: T): number {\n // assuming all mutations in this store is for the same gene\n return (\n this.gene.entrezGeneId ||\n (mutation.gene && mutation.gene.entrezGeneId) ||\n 0\n );\n }\n}\n\nexport default DefaultMutationMapperStore;\n","import { WindowWrapper } from 'cbioportal-frontend-commons';\n\nlet windowInstance: WindowWrapper | undefined;\n\nexport function getDefaultWindowInstance() {\n if (!windowInstance) {\n windowInstance = new WindowWrapper();\n }\n\n return windowInstance;\n}\n","import { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { formatPercentValue } from 'cbioportal-utils';\nimport * as React from 'react';\n\nimport styles from './defaultMutationRateSummary.module.scss';\n\nexport type MutationRate = {\n rate: number;\n title: string;\n description?: string;\n};\n\nexport type DefaultMutationRateSummaryProps = {\n rates: MutationRate[];\n fractionDigits?: number;\n};\n\nexport default class DefaultMutationRateSummary extends React.Component<\n DefaultMutationRateSummaryProps\n> {\n public render() {\n return (\n <React.Fragment>\n {this.props.rates.map(r => (\n <div key={r.title} className={styles.mutationRateSummary}>\n <span>{r.title}: </span>\n <span>\n {formatPercentValue(\n r.rate,\n this.props.fractionDigits\n )}\n %\n </span>\n {r.description && (\n <DefaultTooltip\n placement=\"right\"\n overlay={<span>{r.description}</span>}\n >\n <i\n className=\"fa fa-info-circle\"\n style={{ marginLeft: '0.2rem' }}\n />\n </DefaultTooltip>\n )}\n </div>\n ))}\n </React.Fragment>\n );\n }\n}\n","import classNames from 'classnames';\nimport _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport Select from 'react-select';\n\nimport { Mutation, RemoteData } from 'cbioportal-utils';\nimport {\n EnsemblTranscript,\n VariantAnnotation,\n} from 'genome-nexus-ts-api-client';\n\nimport styles from './transcriptDropdown.module.scss';\n\nexport type TranscriptDropdownProps = {\n showDropDown: boolean;\n showOnlyAnnotatedTranscriptsInDropdown: boolean;\n activeTranscript?: string;\n transcriptsByTranscriptId: { [transcriptId: string]: EnsemblTranscript };\n canonicalTranscript: RemoteData<EnsemblTranscript | undefined>;\n transcriptsWithProteinLength: RemoteData<string[] | undefined>;\n transcriptsWithAnnotations: RemoteData<string[] | undefined>;\n indexedVariantAnnotations: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >;\n mutationsByTranscriptId?: { [transcriptId: string]: Mutation[] };\n onChange: (value: string) => void;\n loadingIndicator?: JSX.Element;\n};\n\n@observer\nexport default class TranscriptDropdown extends React.Component<\n TranscriptDropdownProps,\n {}\n> {\n public render() {\n const {\n showDropDown,\n canonicalTranscript,\n showOnlyAnnotatedTranscriptsInDropdown,\n activeTranscript,\n transcriptsByTranscriptId,\n transcriptsWithProteinLength,\n transcriptsWithAnnotations,\n indexedVariantAnnotations,\n mutationsByTranscriptId,\n } = this.props;\n\n const canonicalTranscriptId =\n canonicalTranscript.result &&\n canonicalTranscript.result.transcriptId;\n\n if (!showDropDown) {\n return <span />;\n } else if (showOnlyAnnotatedTranscriptsInDropdown) {\n const isLoading =\n transcriptsWithProteinLength.isPending ||\n transcriptsWithAnnotations.isPending ||\n canonicalTranscript.isPending;\n const requiredData =\n indexedVariantAnnotations.result &&\n Object.keys(indexedVariantAnnotations.result).length > 0 &&\n canonicalTranscriptId &&\n transcriptsWithAnnotations.result &&\n transcriptsWithAnnotations.result.length > 0;\n\n return (\n <div className={classNames('small', styles.dropDown)}>\n {this.loadingIndicator(isLoading)}\n {!isLoading &&\n requiredData &&\n this.getDropdownTranscripts(\n activeTranscript || canonicalTranscriptId!,\n transcriptsWithAnnotations.result!,\n canonicalTranscriptId!,\n transcriptsByTranscriptId,\n mutationsByTranscriptId\n )}\n </div>\n );\n } else {\n // using existing annotations, show all transcripts with protein length\n const isLoading =\n transcriptsWithProteinLength.isPending ||\n canonicalTranscript.isPending;\n const requiredData =\n transcriptsWithProteinLength.result &&\n transcriptsWithProteinLength.result.length > 0 &&\n canonicalTranscriptId;\n return (\n <div className={classNames('small', styles.dropDown)}>\n {this.loadingIndicator(isLoading)}\n {!isLoading &&\n requiredData &&\n this.getDropdownTranscripts(\n activeTranscript || canonicalTranscriptId!!,\n transcriptsWithProteinLength.result!!,\n canonicalTranscriptId!!,\n transcriptsByTranscriptId\n )}\n </div>\n );\n }\n }\n\n private getDropdownTranscripts(\n activeTranscript: string,\n allTranscripts: string[],\n canonicalTranscript: string,\n transcriptsByTranscriptId: {\n [transcriptId: string]: EnsemblTranscript;\n },\n mutationsByTranscriptId?: { [transcriptId: string]: Mutation[] }\n ) {\n const activeRefseqMrnaId =\n transcriptsByTranscriptId[activeTranscript].refseqMrnaId;\n return (\n <div>\n <Select\n value={{\n label: activeRefseqMrnaId\n ? activeRefseqMrnaId\n : activeTranscript,\n value: activeTranscript,\n }}\n clearable={false}\n // need to explicitly set delteRemoves for cleable\n // https://github.com/JedWatson/react-select/issues/1560\n deleteRemoves={false}\n options={this.sortTranscripts(allTranscripts).map(\n (t: string) => {\n const length =\n transcriptsByTranscriptId[t].proteinLength;\n const refseqMrnaId =\n transcriptsByTranscriptId[t].refseqMrnaId;\n const ccdsId = transcriptsByTranscriptId[t].ccdsId;\n const nrOfMutations =\n mutationsByTranscriptId &&\n mutationsByTranscriptId[t] &&\n mutationsByTranscriptId[t].length;\n const label = `${\n refseqMrnaId ? `${refseqMrnaId} / ` : ''\n }${t} ${ccdsId ? `(${ccdsId})` : ''} ${\n length ? `(${length} amino acids)` : ''\n } ${\n nrOfMutations\n ? `(${nrOfMutations} mutations)`\n : ''\n } ${t === canonicalTranscript ? ' (default)' : ''}`;\n return { label: label, value: t };\n }\n )}\n onChange={(option: any) => {\n if (option.value) {\n this.props.onChange(option.value);\n }\n }}\n />\n </div>\n );\n }\n\n private sortTranscripts(transcripts: string[]) {\n const { canonicalTranscript, transcriptsByTranscriptId } = this.props;\n\n // sort transcripts for dropdown\n // canonical id first\n // then ones with refseq id\n // then protein length\n // lastly the ensembl id\n transcripts = _.orderBy(\n transcripts,\n [\n t =>\n canonicalTranscript.result &&\n t === canonicalTranscript.result.transcriptId,\n t =>\n transcriptsByTranscriptId[t].hasOwnProperty('refseqMrnaId'),\n t => transcriptsByTranscriptId[t].proteinLength,\n t => t,\n ],\n ['desc', 'desc', 'desc', 'asc']\n );\n return transcripts;\n }\n\n private loadingIndicator(isLoading: boolean) {\n return isLoading\n ? this.props.loadingIndicator || (\n <i className=\"fa fa-spinner fa-pulse fa-2x\" />\n )\n : null;\n }\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { getNCBIlink } from 'cbioportal-frontend-commons';\nimport { Mutation, RemoteData } from 'cbioportal-utils';\nimport {\n EnsemblTranscript,\n VariantAnnotation,\n} from 'genome-nexus-ts-api-client';\n\nimport { getUrl } from '../../util/DataFetcherUtils';\nimport TranscriptDropdown from './TranscriptDropdown';\nimport styles from './geneSummary.module.scss';\n\nexport type GeneSummaryProps = {\n hugoGeneSymbol: string;\n uniprotId?: string;\n transcriptSummaryUrlTemplate?: string;\n showDropDown: boolean;\n showOnlyAnnotatedTranscriptsInDropdown: boolean;\n compactStyle?: boolean; // compactStyle = false: \"RefSeq: NM_000546 Ensembl: ENST00000269305...\", compactStyle = true: \"NM_000546 | ENST00000269305...\"\n transcriptsByTranscriptId: { [transcriptId: string]: EnsemblTranscript };\n activeTranscript?: string;\n canonicalTranscript: RemoteData<EnsemblTranscript | undefined>;\n transcriptsWithProteinLength: RemoteData<string[] | undefined>;\n transcriptsWithAnnotations: RemoteData<string[] | undefined>;\n indexedVariantAnnotations: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >;\n mutationsByTranscriptId?: { [transcriptId: string]: Mutation[] };\n onTranscriptChange: (transcriptId: string) => void;\n loadingIndicator?: JSX.Element;\n};\n\nconst GeneSummaryInfo: React.FunctionComponent<GeneSummaryProps> = ({\n uniprotId,\n showDropDown,\n canonicalTranscript,\n compactStyle,\n activeTranscript,\n transcriptsByTranscriptId,\n transcriptSummaryUrlTemplate,\n}) => {\n const canonicalTranscriptId =\n canonicalTranscript.result && canonicalTranscript.result.transcriptId;\n const transcript =\n activeTranscript && activeTranscript === canonicalTranscriptId\n ? (canonicalTranscript.result as EnsemblTranscript)\n : transcriptsByTranscriptId[activeTranscript!];\n const refseqMrnaId = transcript && transcript.refseqMrnaId;\n const ccdsId = transcript && transcript.ccdsId;\n\n const refSeq = refseqMrnaId ? (\n <a href={getNCBIlink(`/nuccore/${refseqMrnaId}`)} target=\"_blank\">\n {refseqMrnaId}\n </a>\n ) : (\n '-'\n );\n const ensembl = showDropDown\n ? activeTranscript && (\n <a\n href={getUrl(transcriptSummaryUrlTemplate!, {\n transcriptId: activeTranscript,\n })}\n target=\"_blank\"\n >\n {activeTranscript}\n </a>\n )\n : canonicalTranscriptId && (\n // down't show drop down, only the canonical transcript\n <a\n href={getUrl(transcriptSummaryUrlTemplate!, {\n transcriptId: canonicalTranscriptId,\n })}\n target=\"_blank\"\n >\n {canonicalTranscriptId}\n </a>\n );\n const ccds = ccdsId ? (\n <a\n href={getNCBIlink({\n pathname: '/CCDS/CcdsBrowse.cgi',\n query: {\n REQUEST: 'CCDS',\n DATA: ccdsId,\n },\n })}\n target=\"_blank\"\n >\n {ccdsId}\n </a>\n ) : (\n '-'\n );\n\n const uniprot = uniprotId ? (\n <a href={`http://www.uniprot.org/uniprot/${uniprotId}`} target=\"_blank\">\n {uniprotId}\n </a>\n ) : (\n '-'\n );\n\n const compactGeneSummaryInfo = (\n <div>\n <span data-test=\"compactGeneSummaryRefSeq\">{refSeq}</span>\n {` | `}\n {ensembl}\n <br />\n <span data-test=\"compactGeneSummaryCCDS\">{ccds}</span>\n {` | `}\n <span data-test=\"compactGeneSummaryUniProt\">{uniprot}</span>\n </div>\n );\n\n const geneSummaryInfo = (\n <div>\n <div>\n <span data-test=\"GeneSummaryRefSeq\">\n {'RefSeq: '}\n {refSeq}\n </span>\n </div>\n <div>\n <span>Ensembl: </span>\n {ensembl}\n </div>\n <div>\n <span data-test=\"GeneSummaryCCDS\">\n {'CCDS: '}\n {ccds}\n </span>\n </div>\n <div>\n <span data-test=\"GeneSummaryUniProt\">\n {'UniProt: '}\n {uniprot}\n </span>\n </div>\n </div>\n );\n return compactStyle ? compactGeneSummaryInfo : geneSummaryInfo;\n};\n\n@observer\nexport default class GeneSummary extends React.Component<GeneSummaryProps, {}> {\n public static defaultProps: Partial<GeneSummaryProps> = {\n transcriptSummaryUrlTemplate:\n 'http://grch37.ensembl.org/homo_sapiens/Transcript/Summary?t=<%= transcriptId %>',\n compactStyle: false,\n };\n\n public render() {\n const {\n hugoGeneSymbol,\n showDropDown,\n showOnlyAnnotatedTranscriptsInDropdown,\n canonicalTranscript,\n activeTranscript,\n transcriptsByTranscriptId,\n transcriptsWithAnnotations,\n transcriptsWithProteinLength,\n indexedVariantAnnotations,\n mutationsByTranscriptId,\n onTranscriptChange,\n loadingIndicator,\n } = this.props;\n\n return (\n <div\n className={\n this.props.compactStyle\n ? styles.geneSummaryCompact\n : styles.geneSummary\n }\n >\n {!this.props.compactStyle && (\n <h4 className={styles.hugoSymbol}>{hugoGeneSymbol}</h4>\n )}\n <TranscriptDropdown\n showDropDown={showDropDown}\n showOnlyAnnotatedTranscriptsInDropdown={\n showOnlyAnnotatedTranscriptsInDropdown\n }\n activeTranscript={activeTranscript}\n transcriptsByTranscriptId={transcriptsByTranscriptId}\n canonicalTranscript={canonicalTranscript}\n transcriptsWithProteinLength={transcriptsWithProteinLength}\n transcriptsWithAnnotations={transcriptsWithAnnotations}\n indexedVariantAnnotations={indexedVariantAnnotations}\n mutationsByTranscriptId={mutationsByTranscriptId}\n onChange={onTranscriptChange}\n loadingIndicator={loadingIndicator}\n />\n <GeneSummaryInfo {...this.props} />\n </div>\n );\n }\n}\n","import { action, computed, makeObservable, observable } from 'mobx';\nimport * as React from 'react';\nimport { ReactNode } from 'react';\nimport { TableProps } from 'react-table';\n\nimport { MobxCache, Mutation, RemoteData } from 'cbioportal-utils';\n\nimport { DefaultPubMedCache } from '../../cache/DefaultPubMedCache';\nimport { MutationAlignerCache } from '../../cache/MutationAlignerCache';\nimport { FilterResetPanel } from './FilterResetPanel';\nimport { DataFilter } from '../../model/DataFilter';\nimport { ApplyFilterFn, FilterApplier } from '../../model/FilterApplier';\nimport { LollipopPlotControlsConfig } from '../../model/LollipopPlotControlsConfig';\nimport { MutationMapperDataFetcher } from '../../model/MutationMapperDataFetcher';\nimport { MutationMapperStore } from '../../model/MutationMapperStore';\nimport { DefaultLollipopPlotControlsConfig } from '../../store/DefaultLollipopPlotControlsConfig';\nimport DefaultMutationMapperStore from '../../store/DefaultMutationMapperStore';\nimport { initDefaultTrackVisibility } from '../../util/TrackUtils';\nimport { getDefaultWindowInstance } from '../../util/DefaultWindowInstance';\nimport { ColumnSort, DataTableColumn } from '../dataTable/DataTable';\nimport DefaultMutationRateSummary, {\n MutationRate,\n} from './DefaultMutationRateSummary';\nimport DefaultMutationTable from '../mutationTable/DefaultMutationTable';\nimport GeneSummary from './GeneSummary';\nimport LollipopMutationPlot from '../lollipopMutationPlot/LollipopMutationPlot';\nimport { DEFAULT_MUTATION_COLUMNS } from '../mutationTable/MutationColumnHelper';\nimport {\n TrackDataStatus,\n TrackName,\n TrackVisibility,\n} from '../track/TrackSelector';\n\nexport type MutationMapperProps = {\n hugoSymbol?: string;\n entrezGeneId?: number;\n data?: Partial<Mutation>[];\n store?: MutationMapperStore<Mutation>;\n lollipopPlotControlsConfig?: LollipopPlotControlsConfig;\n windowWrapper?: { size: { width: number; height: number } };\n trackVisibility?: TrackVisibility;\n tracks?: TrackName[];\n showTrackSelector?: boolean;\n mutationTableColumns?: DataTableColumn<Partial<Mutation>>[];\n customMutationTableProps?: Partial<TableProps<Partial<Mutation>>>;\n showFilterResetPanel?: boolean;\n showPlotYAxis?: boolean;\n showPlotYMaxSlider?: boolean;\n showPlotLegendToggle?: boolean;\n showPlotDownloadControls?: boolean;\n plotYMaxFractionDigits?: number;\n plotYMaxLabelPostfix?: string;\n plotTopYAxisSymbol?: string;\n plotBottomYAxisSymbol?: string;\n plotTopYAxisDefaultMax?: number;\n plotTopYAxisDefaultMin?: number;\n plotBottomYAxisDefaultMax?: number;\n plotBottomYAxisDefaultMin?: number;\n plotYAxisLabelPadding?: number;\n plotLollipopTooltipCountInfo?: (\n count: number,\n mutations?: Partial<Mutation>[]\n ) => JSX.Element;\n plotVizHeight?: number;\n customControls?: JSX.Element;\n mutationTable?: JSX.Element;\n mutationTableInitialSort?: ColumnSort[];\n mutationTableInitialSortRemoteData?: (RemoteData<any> | undefined)[];\n mutationRates?: MutationRate[];\n pubMedCache?: MobxCache;\n mutationAlignerCache?: MobxCache;\n // TODO annotateMutations?: boolean;\n dataFetcher?: MutationMapperDataFetcher;\n mutationAlignerUrlTemplate?: string;\n genomeNexusUrl?: string;\n oncoKbUrl?: string;\n enableOncoKb?: boolean;\n enableCivic?: boolean;\n cachePostMethodsOnClients?: boolean;\n apiCacheLimit?: number;\n showTranscriptDropDown?: boolean;\n showOnlyAnnotatedTranscriptsInDropdown?: boolean;\n filterMutationsBySelectedTranscript?: boolean;\n transcriptSummaryUrlTemplate?: string;\n isoformOverrideSource?: string;\n ptmSources?: string[];\n annotationFields?: string[];\n mainLoadingIndicator?: JSX.Element;\n geneSummaryLoadingIndicator?: JSX.Element;\n getLollipopColor?: (mutations: Partial<Mutation>[]) => string;\n getMutationCount?: (mutation: Partial<Mutation>) => number;\n getTumorType?: (mutation: Partial<Mutation>) => string;\n onXAxisOffset?: (offset: number) => void;\n onTrackVisibilityChange?: (selectedTrackIds: string[]) => void;\n\n dataFilters?: DataFilter[];\n selectionFilters?: DataFilter[];\n highlightFilters?: DataFilter[];\n groupFilters?: { group: string; filter: DataFilter }[];\n filterAppliersOverride?: { [filterType: string]: ApplyFilterFn };\n filterApplier?: FilterApplier;\n onTranscriptChange?: (transcript: string) => void;\n compactStyle?: boolean;\n collapsePtmTrack?: boolean;\n collapseUniprotTopologyTrack?: boolean;\n};\n\nexport function initDefaultMutationMapperStore(props: MutationMapperProps) {\n return new DefaultMutationMapperStore(\n {\n entrezGeneId: props.entrezGeneId, // entrezGeneId is required to display uniprot id\n hugoGeneSymbol: props.hugoSymbol ? props.hugoSymbol! : '',\n },\n {\n annotationFields: props.annotationFields,\n isoformOverrideSource: props.isoformOverrideSource,\n ptmSources: props.ptmSources,\n filterMutationsBySelectedTranscript:\n props.filterMutationsBySelectedTranscript,\n genomeNexusUrl: props.genomeNexusUrl,\n oncoKbUrl: props.oncoKbUrl,\n enableCivic: props.enableCivic,\n enableOncoKb: props.enableOncoKb,\n cachePostMethodsOnClients: props.cachePostMethodsOnClients,\n apiCacheLimit: props.apiCacheLimit,\n getMutationCount: props.getMutationCount,\n getTumorType: props.getTumorType,\n dataFetcher: props.dataFetcher,\n filterApplier: props.filterApplier,\n filterAppliersOverride: props.filterAppliersOverride,\n dataFilters: props.dataFilters,\n selectionFilters: props.selectionFilters,\n highlightFilters: props.highlightFilters,\n groupFilters: props.groupFilters,\n },\n () => (props.data || []) as Mutation[]\n );\n}\n\nexport default class MutationMapper<\n P extends MutationMapperProps = MutationMapperProps\n> extends React.Component<P, {}> {\n public static defaultProps: Partial<MutationMapperProps> = {\n showFilterResetPanel: true,\n showOnlyAnnotatedTranscriptsInDropdown: false,\n showTranscriptDropDown: false,\n enableCivic: true,\n enableOncoKb: true,\n filterMutationsBySelectedTranscript: false,\n cachePostMethodsOnClients: true,\n };\n\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n\n @observable\n private _trackVisibility: TrackVisibility | undefined;\n\n @observable\n protected lollipopPlotGeneX: number | undefined;\n\n @computed\n protected get geneWidth(): number {\n if (this.lollipopPlotGeneX) {\n return this.windowWrapper.size.width * 0.7 - this.lollipopPlotGeneX;\n } else {\n return 666;\n }\n }\n\n @computed\n protected get trackVisibility(): TrackVisibility {\n if (this.props.trackVisibility) {\n return this.props.trackVisibility!;\n } else {\n if (!this._trackVisibility) {\n this._trackVisibility = initDefaultTrackVisibility();\n }\n\n return this._trackVisibility;\n }\n }\n\n protected getTrackDataStatus(): TrackDataStatus {\n // TODO dummy method for now: move the implementation from cbioportal-frontend\n return {};\n }\n\n @computed get trackDataStatus() {\n return this.getTrackDataStatus();\n }\n\n protected get plotTopYAxisSymbol(): string | undefined {\n return this.props.plotTopYAxisSymbol;\n }\n\n protected get plotYMaxLabelPostfix(): string | undefined {\n return this.props.plotYMaxLabelPostfix;\n }\n\n protected get plotBottomYAxisSymbol(): string | undefined {\n return this.props.plotBottomYAxisSymbol;\n }\n\n protected get plotTopYAxisDefaultMax(): number | undefined {\n return this.props.plotTopYAxisDefaultMax;\n }\n\n protected get plotTopYAxisDefaultMin(): number | undefined {\n return this.props.plotTopYAxisDefaultMin;\n }\n\n protected get plotBottomYAxisDefaultMax(): number | undefined {\n return this.props.plotBottomYAxisDefaultMax;\n }\n\n protected get plotBottomYAxisDefaultMin(): number | undefined {\n return this.props.plotBottomYAxisDefaultMin;\n }\n\n @computed\n protected get store(): MutationMapperStore<Mutation> {\n return this.props.store\n ? this.props.store!\n : initDefaultMutationMapperStore(this.props);\n }\n\n protected get lollipopPlotControlsConfig(): LollipopPlotControlsConfig {\n return this.props.lollipopPlotControlsConfig\n ? this.props.lollipopPlotControlsConfig!\n : new DefaultLollipopPlotControlsConfig();\n }\n\n protected get pubMedCache(): MobxCache {\n return this.props.pubMedCache\n ? this.props.pubMedCache!\n : new DefaultPubMedCache();\n }\n\n protected get mutationAlignerCache(): MobxCache {\n // mutationAlignerUrlTemplate property is ignored if a custom cache implementation is provided\n return this.props.mutationAlignerCache\n ? this.props.mutationAlignerCache!\n : new MutationAlignerCache(this.props.mutationAlignerUrlTemplate);\n }\n\n protected getWindowWrapper() {\n return this.props.windowWrapper\n ? this.props.windowWrapper!\n : getDefaultWindowInstance();\n }\n\n @computed\n protected get windowWrapper(): { size: { width: number; height: number } } {\n return this.getWindowWrapper();\n }\n\n protected get mutationTableInfo(): JSX.Element | undefined {\n // TODO implement default\n // @computed\n // get multipleMutationInfo(): string {\n // const count = this.store.dataStore.duplicateMutationCountInMultipleSamples;\n // const mutationsLabel = count === 1 ? \"mutation\" : \"mutations\";\n //\n // return count > 0 ? `: includes ${count} duplicate ${mutationsLabel} in patients with multiple samples` : \"\";\n // }\n //\n // @computed get itemsLabelPlural(): string {\n // return `Mutations${this.multipleMutationInfo}`;\n // }\n\n return undefined;\n }\n\n protected get mutationTableComponent(): JSX.Element | null {\n if (this.props.mutationTable) {\n return this.props.mutationTable!;\n } else {\n let columns: DataTableColumn<\n Partial<Mutation>\n >[] = DEFAULT_MUTATION_COLUMNS;\n if (this.props.mutationTableColumns) {\n columns = this.props.mutationTableColumns!;\n }\n\n return (\n <DefaultMutationTable\n dataStore={this.store.dataStore}\n columns={columns}\n initialSort={this.props.mutationTableInitialSort}\n initialSortRemoteData={\n this.props.mutationTableInitialSortRemoteData\n }\n reactTableProps={this.props.customMutationTableProps}\n hotspotData={this.store.indexedHotspotData}\n oncoKbData={this.store.oncoKbData}\n usingPublicOncoKbInstance={\n this.store.usingPublicOncoKbInstance\n }\n oncoKbCancerGenes={this.store.oncoKbCancerGenes}\n myCancerGenomeData={this.store.myCancerGenomeData}\n enableCivic={this.props.enableCivic}\n civicGenes={this.store.civicGenes}\n civicVariants={this.store.civicVariants}\n indexedMyVariantInfoAnnotations={\n this.store.indexedMyVariantInfoAnnotations\n }\n indexedVariantAnnotations={\n this.store.indexedVariantAnnotations\n }\n selectedTranscriptId={this.store.selectedTranscript}\n pubMedCache={this.pubMedCache}\n info={this.mutationTableInfo}\n />\n );\n }\n }\n\n protected get mutationPlot(): JSX.Element | null {\n return (\n <LollipopMutationPlot\n store={this.store}\n controlsConfig={this.lollipopPlotControlsConfig}\n pubMedCache={this.pubMedCache}\n mutationAlignerCache={this.mutationAlignerCache}\n geneWidth={this.geneWidth}\n vizHeight={this.props.plotVizHeight}\n trackVisibility={this.trackVisibility}\n customControls={this.customControls}\n tracks={this.props.tracks}\n showYMaxSlider={this.props.showPlotYMaxSlider}\n showLegendToggle={this.props.showPlotLegendToggle}\n showDownloadControls={this.props.showPlotDownloadControls}\n filterResetPanel={\n this.props.showFilterResetPanel &&\n this.isFiltered &&\n this.filterResetPanel\n ? this.filterResetPanel\n : undefined\n }\n trackDataStatus={this.trackDataStatus}\n showTrackSelector={this.props.showTrackSelector}\n onXAxisOffset={this.onXAxisOffset}\n onTrackVisibilityChange={this.props.onTrackVisibilityChange}\n getMutationCount={this.props.getMutationCount}\n getLollipopColor={this.props.getLollipopColor}\n yMaxLabelPostfix={this.plotYMaxLabelPostfix}\n yMaxFractionDigits={this.props.plotYMaxFractionDigits}\n yAxisLabelPadding={this.props.plotYAxisLabelPadding}\n showYAxis={this.props.showPlotYAxis}\n topYAxisSymbol={this.plotTopYAxisSymbol}\n bottomYAxisSymbol={this.plotBottomYAxisSymbol}\n topYAxisDefaultMax={this.plotTopYAxisDefaultMax}\n topYAxisDefaultMin={this.plotBottomYAxisDefaultMin}\n bottomYAxisDefaultMax={this.plotBottomYAxisDefaultMax}\n bottomYAxisDefaultMin={this.plotBottomYAxisDefaultMin}\n lollipopTooltipCountInfo={\n this.props.plotLollipopTooltipCountInfo\n }\n collapsePtmTrack={this.props.collapsePtmTrack}\n collapseUniprotTopologyTrack={\n this.props.collapseUniprotTopologyTrack\n }\n />\n );\n }\n\n protected get customControls(): JSX.Element | undefined {\n return this.props.customControls;\n }\n\n protected get geneSummary(): JSX.Element | null {\n return (\n <GeneSummary\n hugoGeneSymbol={this.store.gene.hugoGeneSymbol}\n uniprotId={this.store.uniprotId.result}\n showDropDown={!!this.props.showTranscriptDropDown}\n showOnlyAnnotatedTranscriptsInDropdown={\n !!this.props.showOnlyAnnotatedTranscriptsInDropdown\n }\n transcriptsByTranscriptId={this.store.transcriptsByTranscriptId}\n canonicalTranscript={this.store.canonicalTranscript}\n loadingIndicator={this.props.geneSummaryLoadingIndicator}\n activeTranscript={this.store.activeTranscript!.result}\n indexedVariantAnnotations={this.store.indexedVariantAnnotations}\n transcriptsWithAnnotations={\n this.store.transcriptsWithAnnotations\n }\n transcriptsWithProteinLength={\n this.store.transcriptsWithProteinLength\n }\n mutationsByTranscriptId={this.store.mutationsByTranscriptId}\n transcriptSummaryUrlTemplate={\n this.props.transcriptSummaryUrlTemplate\n }\n onTranscriptChange={this.handleTranscriptChange}\n compactStyle={this.props.compactStyle}\n />\n );\n }\n\n protected get mutationRates(): MutationRate[] | undefined {\n return this.props.mutationRates;\n }\n\n protected getMutationRateSummary() {\n return this.mutationRates ? (\n <DefaultMutationRateSummary rates={this.mutationRates!} />\n ) : null;\n }\n\n protected get mutationRateSummary(): JSX.Element | null {\n return this.getMutationRateSummary();\n }\n\n protected get isFiltered(): boolean {\n return (\n this.store.dataStore.selectionFilters.length > 0 ||\n this.store.dataStore.dataFilters.length > 0\n );\n }\n\n protected get isMutationTableDataLoading(): boolean {\n // Child classes should override this method\n return false;\n }\n\n protected get filterResetPanel(): JSX.Element | null {\n const dataStore = this.store.dataStore;\n const tableData =\n dataStore.sortedFilteredSelectedData.length > 0\n ? dataStore.sortedFilteredSelectedData\n : dataStore.sortedFilteredData;\n const allData = dataStore.allData;\n\n return (\n <FilterResetPanel\n filterInfo={`Showing ${tableData.length} of ${allData.length} mutations.`}\n resetFilters={this.resetFilters}\n />\n );\n }\n\n protected get mutationTable(): JSX.Element | null {\n return <span>{this.mutationTableComponent}</span>;\n }\n\n protected get proteinChainPanel(): JSX.Element | null {\n // TODO move the implementation from cbioportal-frontend\n return null;\n }\n\n protected get mutationFilterPanel(): JSX.Element | null {\n // TODO move the implementation from cbioportal-frontend\n return null;\n }\n\n protected get view3dButton(): JSX.Element | null {\n // TODO move the implementation from cbioportal-frontend\n return null;\n }\n\n protected get isMutationPlotDataLoading(): boolean {\n return this.store.pfamDomainData.isPending;\n }\n\n protected get isLoading(): boolean {\n return (\n this.store.mutationData.isPending ||\n this.isMutationPlotDataLoading ||\n this.isMutationTableDataLoading ||\n (!!this.store.activeTranscript &&\n this.store.activeTranscript.isPending)\n );\n }\n\n protected get loadingIndicator(): JSX.Element {\n return this.props.mainLoadingIndicator ? (\n this.props.mainLoadingIndicator!\n ) : (\n <i className=\"fa fa-spinner fa-pulse fa-2x\" />\n );\n }\n\n public render(): ReactNode {\n return this.isLoading ? (\n this.loadingIndicator\n ) : (\n <div>\n <div style={{ display: 'flex' }}>\n <div\n className=\"borderedChart\"\n style={{ marginRight: '1rem' }}\n >\n {this.mutationPlot}\n {this.proteinChainPanel}\n </div>\n <div className=\"mutationMapperMetaColumn\">\n {this.geneSummary}\n {this.mutationRateSummary}\n {this.mutationFilterPanel}\n {this.view3dButton}\n </div>\n </div>\n {this.mutationTable}\n </div>\n );\n }\n\n @action.bound\n protected handleTranscriptChange(transcriptId: string) {\n if (this.store.setSelectedTranscript) {\n this.store.setSelectedTranscript(transcriptId);\n }\n // TODO this.close3dPanel();\n if (this.props.onTranscriptChange) {\n this.props.onTranscriptChange(transcriptId);\n }\n }\n\n @action.bound\n protected onXAxisOffset(offset: number) {\n if (this.props.onXAxisOffset) {\n this.props.onXAxisOffset(offset);\n } else {\n this.lollipopPlotGeneX = offset;\n }\n }\n\n @action.bound\n protected resetFilters() {\n this.store.dataStore.clearDataFilters();\n this.store.dataStore.clearSelectionFilters();\n this.store.dataStore.clearHighlightFilters();\n }\n}\n"],"names":["React.createElement","classNames","_","React.Component","sortValue","download","hideArrow","React","_a","placeArrow","oncoKbSortValue","civicSortValue","myCancerGenomeSortValue","hotspotSortValue","styles","React.Fragment","_.map","_.isEmpty","_.reduce","_.uniq","_.groupBy","_.keys"],"mappings":"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"}