gnomad-browser icon indicating copy to clipboard operation
gnomad-browser copied to clipboard

Find and remove copy/pasted code

Open phildarnowsky-broad opened this issue 1 year ago • 7 comments

There is a significant amount of code in this codebase written by copy/paste. For many commonly known reasons, this is a very bad practice. Look for opportunities to improve the code by reducing duplication.

phildarnowsky-broad avatar Aug 10 '23 21:08 phildarnowsky-broad

Some examples: variantTableColumns.tsx, structuralVariantTableColumns.tsx, and structuralVariantTableColumns.tsx all have multiple functions that are the same from one to the next.

phildarnowsky-broad avatar Aug 10 '23 21:08 phildarnowsky-broad

Found a tool to detect copypasta that seems decent--at least, it's fast and I spot-checked some results and verified that they're correct. Here's what the output looks like:

~/src/gnomad-browser/browser $ npx jscpd --pattern "src/**/*.ts(x)?"
Clone found (tsx):
 - src/VariantPage/VariantPage.spec.tsx [66:17 - 81:9] (15 lines, 127 tokens)
   src/VariantPage/VariantPage.spec.tsx [49:17 - 64:20]

Clone found (tsx):
 - src/VariantPage/VariantPage.spec.tsx [81:2 - 92:2] (11 lines, 117 tokens)
   src/VariantPage/VariantPage.spec.tsx [64:10 - 58:2]

Clone found (tsx):
 - src/VariantPage/VariantLiftover.tsx [111:22 - 118:22] (7 lines, 77 tokens)
   src/VariantPage/VariantLiftover.tsx [59:22 - 66:22]

Clone found (tsx):
 - src/VariantPage/VariantInSilicoPredictors.tsx [92:3 - 102:2] (10 lines, 115 tokens)
   src/VariantPage/VariantInSilicoPredictors.tsx [78:6 - 89:7]

Clone found (javascript):
 - src/VariantPage/VariantGenotypeQualityMetrics.tsx [178:7 - 189:20] (11 lines, 83 tokens)
   src/VariantPage/VariantGenotypeQualityMetrics.tsx [99:7 - 110:31]

Clone found (javascript):
 - src/VariantPage/VariantGenotypeQualityMetrics.tsx [189:20 - 296:15] (107 lines, 786 tokens)
   src/VariantPage/VariantGenotypeQualityMetrics.tsx [110:31 - 185:2]

Clone found (tsx):
 - src/VariantPage/VariantGenotypeQualityMetrics.tsx [199:13 - 208:17] (9 lines, 107 tokens)
   src/VariantPage/VariantGenotypeQualityMetrics.tsx [120:13 - 129:19]

Clone found (tsx):
 - src/VariantPage/VariantGenotypeQualityMetrics.tsx [224:13 - 242:15] (18 lines, 175 tokens)
   src/VariantPage/VariantGenotypeQualityMetrics.tsx [145:13 - 163:26]

Clone found (tsx):
 - src/VariantPage/TranscriptConsequenceList.tsx [130:23 - 140:3] (10 lines, 97 tokens)
   src/VariantPage/TranscriptConsequenceList.tsx [97:2 - 107:2]

Clone found (tsx):
 - src/VariantPage/HGDPPopulationsTable.tsx [91:9 - 103:22] (12 lines, 130 tokens)
   src/VariantPage/TGPPopulationsTable.tsx [39:28 - 51:21]

Clone found (tsx):
 - src/VariantPage/HGDPPopulationsTable.tsx [103:22 - 121:23] (18 lines, 127 tokens)
   src/VariantPage/TGPPopulationsTable.tsx [51:21 - 69:22]

Clone found (tsx):
 - src/VariantPage/HGDPPopulationsTable.tsx [160:23 - 168:23] (8 lines, 88 tokens)
   src/VariantPage/TGPPopulationsTable.tsx [108:22 - 116:22]

Clone found (tsx):
 - src/VariantPage/HGDPPopulationsTable.tsx [180:23 - 193:29] (13 lines, 99 tokens)
   src/VariantPage/TGPPopulationsTable.tsx [128:22 - 141:28]

Clone found (tsx):
 - src/VariantPage/GnomadPopulationsTable.tsx [49:1 - 60:24] (11 lines, 128 tokens)
   src/VariantPage/TGPPopulationsTable.tsx [40:1 - 51:21]

Clone found (tsx):
 - src/VariantPage/GnomadAgeDistribution.tsx [111:1 - 126:27] (15 lines, 97 tokens)
   src/VariantPage/VariantGenotypeQualityMetrics.tsx [53:1 - 68:35]

Clone found (tsx):
 - src/VariantPage/GnomadAgeDistribution.tsx [270:33 - 283:3] (13 lines, 116 tokens)
   src/VariantPage/VariantGenotypeQualityMetrics.tsx [310:41 - 324:2]

Clone found (tsx):
 - src/VariantPage/ExacVariantOccurrenceTable.tsx [117:11 - 127:2] (10 lines, 79 tokens)
   src/VariantPage/VariantOccurrenceTable.tsx [363:11 - 373:2]

Clone found (tsx):
 - src/VariantPage/ExacVariantOccurrenceTable.tsx [128:13 - 139:2] (11 lines, 95 tokens)
   src/VariantPage/VariantOccurrenceTable.tsx [391:13 - 402:2]

Clone found (tsx):
 - src/VariantPage/ExacVariantOccurrenceTable.tsx [140:13 - 150:71] (10 lines, 74 tokens)
   src/VariantPage/VariantOccurrenceTable.tsx [405:13 - 415:11]

Clone found (tsx):
 - src/VariantList/VariantTableConfigurationModal.tsx [265:15 - 288:2] (23 lines, 185 tokens)
   src/VariantList/VariantTableConfigurationModal.tsx [102:16 - 126:6]

Clone found (tsx):
 - src/VariantCooccurrencePage/VariantCooccurrenceDetailsTable.tsx [62:2 - 77:2] (15 lines, 154 tokens)
   src/VariantCooccurrencePage/VariantCooccurrenceHaplotypeCountsTable.tsx [48:2 - 62:3]

Clone found (tsx):
 - src/VariantCooccurrencePage/VariantCooccurrenceDetailsTable.tsx [83:2 - 93:2] (10 lines, 120 tokens)
   src/VariantCooccurrencePage/VariantCooccurrenceHaplotypeCountsTable.tsx [63:2 - 71:3]

Clone found (tsx):
 - src/TranscriptPage/TranscriptPageContainer.spec.tsx [12:1 - 32:2] (20 lines, 170 tokens)
   src/VariantPage/VariantPage.spec.tsx [11:1 - 31:75]

Clone found (tsx):
 - src/TranscriptPage/TranscriptPageContainer.spec.tsx [32:3 - 44:15] (12 lines, 87 tokens)
   src/VariantPage/VariantPage.spec.tsx [35:3 - 47:20]

Clone found (tsx):
 - src/TranscriptPage/MitochondrialVariantsInTranscript.spec.tsx [14:1 - 46:52] (32 lines, 259 tokens)
   src/VariantPage/VariantPage.spec.tsx [11:1 - 44:42]

Clone found (tsx):
 - src/TranscriptPage/MitochondrialTranscriptCoverageTrack.spec.tsx [13:1 - 45:6] (32 lines, 257 tokens)
   src/VariantPage/VariantPage.spec.tsx [11:1 - 47:20]

Clone found (tsx):
 - src/StructuralVariantPage/StructuralVariantPopulationsTable.tsx [7:1 - 45:6] (38 lines, 292 tokens)
   src/VariantPage/GnomadPopulationsTable.tsx [66:1 - 104:5]

Clone found (tsx):
 - src/StructuralVariantPage/StructuralVariantPopulationsTable.tsx [43:1 - 53:5] (10 lines, 121 tokens)
   src/VariantPage/TGPPopulationsTable.tsx [40:1 - 50:140]

Clone found (tsx):
 - src/StructuralVariantPage/StructuralVariantPage.spec.tsx [11:1 - 43:15] (32 lines, 259 tokens)
   src/VariantPage/VariantPage.spec.tsx [11:1 - 47:12]

Clone found (tsx):
 - src/StructuralVariantPage/StructuralVariantPage.spec.tsx [72:9 - 88:9] (16 lines, 100 tokens)
   src/StructuralVariantPage/StructuralVariantPage.spec.tsx [48:2 - 64:9]

Clone found (tsx):
 - src/StructuralVariantPage/StructuralVariantPage.spec.tsx [92:6 - 107:2] (15 lines, 99 tokens)
   src/StructuralVariantPage/StructuralVariantPage.spec.tsx [71:4 - 64:9]

Clone found (tsx):
 - src/StructuralVariantPage/StructuralVariantGenotypeQualityMetrics.tsx [35:2 - 40:7] (5 lines, 73 tokens)
   src/VariantPage/VariantGenotypeQualityMetrics.tsx [120:2 - 152:21]

Clone found (tsx):
 - src/StructuralVariantPage/StructuralVariantAgeDistribution.tsx [58:8 - 66:2] (8 lines, 105 tokens)
   src/VariantPage/GnomadAgeDistribution.tsx [145:2 - 41:68]

Clone found (tsx):
 - src/StructuralVariantPage/StructuralVariantAgeDistribution.tsx [115:9 - 123:3] (8 lines, 96 tokens)
   src/StructuralVariantPage/StructuralVariantGenotypeQualityMetrics.tsx [66:9 - 75:2]

Clone found (typescript):
 - src/StructuralVariantList/filterStructuralVariants.ts [22:3 - 43:7] (21 lines, 240 tokens)
   src/VariantList/filterVariants.ts [43:3 - 64:26]

Clone found (tsx):
 - src/StructuralVariantList/StructuralVariants.tsx [91:5 - 102:8] (11 lines, 91 tokens)
   src/VariantList/Variants.tsx [86:5 - 97:19]

Clone found (tsx):
 - src/StructuralVariantList/StructuralVariants.tsx [120:6 - 148:25] (28 lines, 202 tokens)
   src/VariantList/Variants.tsx [110:5 - 137:2]

Clone found (tsx):
 - src/StructuralVariantList/ExportStructuralVariantsButton.tsx [54:2 - 72:2] (18 lines, 154 tokens)
   src/VariantList/ExportVariantsButton.tsx [94:2 - 112:2]

Clone found (tsx):
 - src/StructuralVariantList/ExportStructuralVariantsButton.tsx [75:3 - 118:36] (43 lines, 338 tokens)
   src/VariantList/ExportVariantsButton.tsx [147:3 - 190:8]

Clone found (typescript):
 - src/ShortTandemRepeatPage/ShortTandemRepeatPropTypes.ts [72:7 - 79:13] (7 lines, 79 tokens)
   src/ShortTandemRepeatPage/ShortTandemRepeatPropTypes.ts [16:5 - 23:2]

Clone found (typescript):
 - src/ShortTandemRepeatPage/ShortTandemRepeatPropTypes.ts [81:22 - 90:10] (9 lines, 97 tokens)
   src/ShortTandemRepeatPage/ShortTandemRepeatPropTypes.ts [71:25 - 79:36]

Clone found (typescript):
 - src/ShortTandemRepeatPage/ShortTandemRepeatPropTypes.ts [91:2 - 100:2] (9 lines, 88 tokens)
   src/ShortTandemRepeatPage/ShortTandemRepeatPropTypes.ts [15:7 - 26:5]

Clone found (typescript):
 - src/ShortTandemRepeatPage/ShortTandemRepeatPropTypes.ts [135:2 - 159:17] (24 lines, 160 tokens)
   src/ShortTandemRepeatPage/ShortTandemRepeatPropTypes.ts [34:7 - 58:2]

Clone found (typescript):
 - src/ShortTandemRepeatPage/ShortTandemRepeatPropTypes.ts [187:7 - 195:6] (8 lines, 75 tokens)
   src/ShortTandemRepeatPage/ShortTandemRepeatPropTypes.ts [63:11 - 70:7]

Clone found (typescript):
 - src/ShortTandemRepeatPage/ShortTandemRepeatPropTypes.ts [199:5 - 231:17] (32 lines, 333 tokens)
   src/ShortTandemRepeatPage/ShortTandemRepeatPropTypes.ts [70:7 - 102:2]

Clone found (javascript):
 - src/ShortTandemRepeatPage/ShortTandemRepeatPage.tsx [425:41 - 468:18] (43 lines, 348 tokens)
   src/ShortTandemRepeatPage/ShortTandemRepeatPage.tsx [328:44 - 358:2]

Clone found (javascript):
 - src/ShortTandemRepeatPage/ShortTandemRepeatPage.tsx [695:26 - 713:20] (18 lines, 104 tokens)
   src/ShortTandemRepeatsPage/ShortTandemRepeatsPage.tsx [122:36 - 140:12]

Clone found (tsx):
 - src/ShortTandemRepeatPage/ShortTandemRepeatPage.tsx [416:9 - 443:2] (27 lines, 204 tokens)
   src/ShortTandemRepeatPage/ShortTandemRepeatPage.tsx [319:9 - 346:2]

Clone found (tsx):
 - src/ShortTandemRepeatPage/ShortTandemRepeatGenotypeDistributionPlot.tsx [340:17 - 355:6] (15 lines, 120 tokens)
   src/ShortTandemRepeatPage/ShortTandemRepeatGenotypeDistributionPlot.tsx [262:17 - 277:6]

Clone found (tsx):
 - src/ShortTandemRepeatPage/ShortTandemRepeatGenotypeDistributionPlot.tsx [355:2 - 387:9] (32 lines, 250 tokens)
   src/ShortTandemRepeatPage/ShortTandemRepeatGenotypeDistributionPlot.tsx [277:2 - 309:3]

Clone found (tsx):
 - src/ShortTandemRepeatPage/ShortTandemRepeatAttributes.tsx [104:9 - 114:19] (10 lines, 90 tokens)
   src/ShortTandemRepeatPage/ShortTandemRepeatAttributes.tsx [33:7 - 43:13]

Clone found (javascript):
 - src/ShortTandemRepeatPage/ShortTandemRepeatAlleleSizeDistributionPlot.tsx [227:2 - 323:12] (96 lines, 860 tokens)
   src/ShortTandemRepeatPage/ShortTandemRepeatGenotypeDistributionPlot.tsx [223:25 - 320:12]

Clone found (tsx):
 - src/ShortTandemRepeatPage/ShortTandemRepeatAlleleSizeDistributionPlot.tsx [19:1 - 40:11] (21 lines, 148 tokens)
   src/StructuralVariantPage/MultiallelicCopyNumberVariantPlot.tsx [21:1 - 42:7]

Clone found (tsx):
 - src/ShortTandemRepeatPage/ShortTandemRepeatAlleleSizeDistributionPlot.tsx [143:2 - 169:10] (26 lines, 161 tokens)
   src/ShortTandemRepeatPage/ShortTandemRepeatGenotypeDistributionPlot.tsx [151:2 - 177:2]

Clone found (tsx):
 - src/ShortTandemRepeatPage/ShortTandemRepeatAlleleSizeDistributionPlot.tsx [261:7 - 320:2] (59 lines, 485 tokens)
   src/ShortTandemRepeatPage/ShortTandemRepeatGenotypeDistributionPlot.tsx [259:8 - 318:3]

Clone found (javascript):
 - src/ShortTandemRepeatPage/ShortTandemRepeatAgeDistributionPlot.tsx [128:7 - 199:7] (71 lines, 540 tokens)
   src/ShortTandemRepeatPage/ShortTandemRepeatGenotypeDistributionPlot.tsx [140:7 - 208:2]

Clone found (javascript):
 - src/ShortTandemRepeatPage/ShortTandemRepeatAgeDistributionPlot.tsx [188:2 - 213:12] (25 lines, 179 tokens)
   src/ShortTandemRepeatPage/ShortTandemRepeatGenotypeDistributionPlot.tsx [208:2 - 221:2]

Clone found (javascript):
 - src/ShortTandemRepeatPage/ShortTandemRepeatAgeDistributionPlot.tsx [204:2 - 293:2] (89 lines, 819 tokens)
   src/ShortTandemRepeatPage/ShortTandemRepeatGenotypeDistributionPlot.tsx [223:2 - 311:2]

Clone found (tsx):
 - src/ShortTandemRepeatPage/ShortTandemRepeatAgeDistributionPlot.tsx [1:1 - 24:14] (23 lines, 135 tokens)
   src/ShortTandemRepeatPage/ShortTandemRepeatGenotypeDistributionPlot.tsx [1:1 - 24:42]

Clone found (tsx):
 - src/ShortTandemRepeatPage/ShortTandemRepeatAgeDistributionPlot.tsx [41:5 - 51:9] (10 lines, 90 tokens)
   src/ShortTandemRepeatPage/ShortTandemRepeatAlleleSizeDistributionPlot.tsx [62:5 - 72:8]

Clone found (tsx):
 - src/ShortTandemRepeatPage/ShortTandemRepeatAgeDistributionPlot.tsx [43:3 - 51:2] (8 lines, 87 tokens)
   src/ShortTandemRepeatPage/ShortTandemRepeatGenotypeDistributionPlot.tsx [45:3 - 53:2]

Clone found (tsx):
 - src/ShortTandemRepeatPage/ShortTandemRepeatAgeDistributionPlot.tsx [56:5 - 65:7] (9 lines, 123 tokens)
   src/ShortTandemRepeatPage/ShortTandemRepeatGenotypeDistributionPlot.tsx [59:5 - 67:7]

Clone found (tsx):
 - src/ShortTandemRepeatPage/ShortTandemRepeatAgeDistributionPlot.tsx [85:5 - 115:7] (30 lines, 282 tokens)
   src/ShortTandemRepeatPage/ShortTandemRepeatGenotypeDistributionPlot.tsx [96:5 - 126:3]

Clone found (tsx):
 - src/ShortTandemRepeatPage/ShortTandemRepeatAgeDistributionPlot.tsx [131:13 - 165:6] (34 lines, 225 tokens)
   src/ShortTandemRepeatPage/ShortTandemRepeatGenotypeDistributionPlot.tsx [143:13 - 177:2]

Clone found (tsx):
 - src/ShortTandemRepeatPage/ShortTandemRepeatAgeDistributionPlot.tsx [166:3 - 195:2] (29 lines, 257 tokens)
   src/ShortTandemRepeatPage/ShortTandemRepeatGenotypeDistributionPlot.tsx [178:3 - 207:2]

Clone found (tsx):
 - src/ShortTandemRepeatPage/ShortTandemRepeatAgeDistributionPlot.tsx [206:23 - 218:9] (12 lines, 131 tokens)
   src/ShortTandemRepeatPage/ShortTandemRepeatAlleleSizeDistributionPlot.tsx [228:21 - 240:8]

Clone found (tsx):
 - src/ShortTandemRepeatPage/ShortTandemRepeatAgeDistributionPlot.tsx [217:11 - 225:2] (8 lines, 89 tokens)
   src/ShortTandemRepeatPage/ShortTandemRepeatGenotypeDistributionPlot.tsx [235:7 - 243:2]

Clone found (tsx):
 - src/ShortTandemRepeatPage/ShortTandemRepeatAgeDistributionPlot.tsx [225:11 - 241:7] (16 lines, 161 tokens)
   src/ShortTandemRepeatPage/ShortTandemRepeatGenotypeDistributionPlot.tsx [243:2 - 259:8]

Clone found (tsx):
 - src/ShortTandemRepeatPage/ShortTandemRepeatAgeDistributionPlot.tsx [230:9 - 301:3] (71 lines, 593 tokens)
   src/ShortTandemRepeatPage/ShortTandemRepeatAlleleSizeDistributionPlot.tsx [251:8 - 320:2]

Clone found (tsx):
 - src/ShortTandemRepeatPage/ShortTandemRepeatAdjacentRepeat.tsx [130:2 - 138:2] (8 lines, 79 tokens)
   src/ShortTandemRepeatPage/ShortTandemRepeatPage.tsx [396:11 - 403:2]

Clone found (tsx):
 - src/ShortTandemRepeatPage/ShortTandemRepeatAdjacentRepeat.tsx [151:15 - 171:3] (20 lines, 109 tokens)
   src/ShortTandemRepeatPage/ShortTandemRepeatPage.tsx [455:8 - 476:2]

Clone found (tsx):
 - src/RegionPage/VariantsInRegion.tsx [43:3 - 63:7] (20 lines, 188 tokens)
   src/TranscriptPage/VariantsInTranscript.tsx [54:3 - 74:11]

Clone found (tsx):
 - src/RegionPage/RegionPage.spec.tsx [29:4 - 41:2] (12 lines, 96 tokens)
   src/RegionPage/RegionPage.spec.tsx [13:5 - 26:5]

Clone found (tsx):
 - src/RegionPage/RegionCoverageTrack.tsx [74:5 - 84:7] (10 lines, 76 tokens)
   src/TranscriptPage/TranscriptCoverageTrack.tsx [68:13 - 78:11]

Clone found (tsx):
 - src/RegionPage/MitochondrialVariantsInRegion.tsx [94:2 - 115:7] (21 lines, 140 tokens)
   src/TranscriptPage/MitochondrialVariantsInTranscript.tsx [102:2 - 122:11]

Clone found (tsx):
 - src/RegionPage/MitochondrialVariantsInRegion.tsx [115:7 - 135:7] (20 lines, 189 tokens)
   src/TranscriptPage/MitochondrialVariantsInTranscript.tsx [122:11 - 142:11]

Clone found (tsx):
 - src/RegionPage/MitochondrialVariantsInRegion.tsx [135:7 - 148:7] (13 lines, 153 tokens)
   src/TranscriptPage/MitochondrialVariantsInTranscript.tsx [142:11 - 159:11]

Clone found (tsx):
 - src/RegionPage/MitochondrialVariantsInRegion.spec.tsx [15:1 - 59:6] (44 lines, 325 tokens)
   src/VariantPage/VariantPage.spec.tsx [11:1 - 57:9]

Clone found (tsx):
 - src/RegionPage/MitochondrialRegionCoverageTrack.tsx [34:2 - 59:7] (25 lines, 198 tokens)
   src/TranscriptPage/MitochondrialTranscriptCoverageTrack.tsx [33:2 - 56:11]

Clone found (tsx):
 - src/RegionPage/MitochondrialRegionCoverageTrack.spec.tsx [11:1 - 58:51] (47 lines, 350 tokens)
   src/TranscriptPage/MitochondrialTranscriptCoverageTrack.spec.tsx [11:1 - 58:55]

Clone found (javascript):
 - src/RegionPage/EditRegion.tsx [77:15 - 207:14] (130 lines, 993 tokens)
   src/RegionViewer/ZoomRegionForm.tsx [115:2 - 198:2]

Clone found (tsx):
 - src/RegionPage/EditRegion.tsx [233:9 - 245:17] (12 lines, 121 tokens)
   src/RegionPage/RegionControls.tsx [137:9 - 150:21]

Clone found (tsx):
 - src/ReadData/ReadData.spec.tsx [17:1 - 28:5] (11 lines, 81 tokens)
   src/VariantPage/VariantPage.spec.tsx [11:1 - 22:6]

Clone found (tsx):
 - src/ReadData/ReadData.spec.tsx [38:1 - 58:5] (20 lines, 160 tokens)
   src/TranscriptPage/TranscriptPageContainer.spec.tsx [23:2 - 47:20]

Clone found (tsx):
 - src/MitochondrialVariantPage/MitochondrialVariantTranscriptConsequenceList.tsx [87:24 - 94:2] (7 lines, 79 tokens)
   src/VariantPage/TranscriptConsequenceList.tsx [173:23 - 180:140]

Clone found (tsx):
 - src/MitochondrialVariantPage/MitochondrialVariantTranscriptConsequence.tsx [23:1 - 35:14] (12 lines, 98 tokens)
   src/VariantPage/TranscriptConsequence.tsx [29:1 - 41:7]

Clone found (tsx):
 - src/MitochondrialVariantPage/MitochondrialVariantTranscriptConsequence.tsx [41:1 - 101:5] (60 lines, 362 tokens)
   src/VariantPage/TranscriptConsequence.tsx [41:1 - 101:6]

Clone found (tsx):
 - src/MitochondrialVariantPage/MitochondrialVariantTranscriptConsequence.tsx [265:9 - 275:3] (10 lines, 96 tokens)
   src/VariantPage/TranscriptConsequence.tsx [170:9 - 180:2]

Clone found (tsx):
 - src/MitochondrialVariantPage/MitochondrialVariantTranscriptConsequence.tsx [296:9 - 304:2] (8 lines, 87 tokens)
   src/VariantPage/TranscriptConsequence.tsx [201:9 - 209:2]

Clone found (tsx):
 - src/MitochondrialVariantPage/MitochondrialVariantSiteQualityMetrics.tsx [26:2 - 44:15] (18 lines, 157 tokens)
   src/StructuralVariantPage/MultiallelicCopyNumberVariantPlot.tsx [29:2 - 45:44]

Clone found (tsx):
 - src/MitochondrialVariantPage/MitochondrialVariantPage.spec.tsx [13:1 - 45:43] (32 lines, 259 tokens)
   src/VariantPage/VariantPage.spec.tsx [11:1 - 44:42]

Clone found (tsx):
 - src/MitochondrialVariantPage/MitochondrialVariantHaplogroupFrequenciesTable.tsx [63:5 - 87:7] (24 lines, 222 tokens)
   src/MitochondrialVariantPage/MitochondrialVariantPopulationFrequenciesTable.tsx [63:5 - 87:6]

Clone found (tsx):
 - src/MitochondrialVariantPage/MitochondrialVariantHaplogroupFrequenciesTable.tsx [172:11 - 193:2] (21 lines, 169 tokens)
   src/MitochondrialVariantPage/MitochondrialVariantPopulationFrequenciesTable.tsx [163:11 - 184:2]

Clone found (tsx):
 - src/MitochondrialVariantPage/MitochondrialVariantGenotypeQualityMetrics.tsx [36:7 - 42:4] (6 lines, 90 tokens)
   src/StructuralVariantPage/StructuralVariantGenotypeQualityMetrics.tsx [34:17 - 41:68]

Clone found (tsx):
 - src/MitochondrialVariantPage/MitochondrialVariantGenotypeQualityMetrics.tsx [58:11 - 64:32] (6 lines, 74 tokens)
   src/StructuralVariantPage/StructuralVariantGenotypeQualityMetrics.tsx [66:9 - 72:30]

Clone found (tsx):
 - src/MitochondrialVariantPage/MitochondrialVariantAgeDistribution.tsx [37:23 - 44:8] (7 lines, 98 tokens)
   src/VariantPage/GnomadAgeDistribution.tsx [145:4 - 40:2]

Clone found (tsx):
 - src/MitochondrialVariantPage/MitochondrialVariantAgeDistribution.tsx [71:7 - 110:39] (39 lines, 305 tokens)
   src/StructuralVariantPage/StructuralVariantAgeDistribution.tsx [98:7 - 138:42]

Clone found (javascript):
 - src/MitochondrialVariantList/mitochondrialVariantTableColumns.tsx [110:5 - 186:7] (76 lines, 669 tokens)
   src/VariantList/variantTableColumns.tsx [111:5 - 198:6]

Clone found (tsx):
 - src/MitochondrialVariantList/mitochondrialVariantTableColumns.tsx [14:1 - 33:8] (19 lines, 141 tokens)
   src/VariantList/variantTableColumns.tsx [18:1 - 37:12]

Clone found (tsx):
 - src/MitochondrialVariantList/mitochondrialVariantTableColumns.tsx [105:2 - 152:4] (47 lines, 390 tokens)
   src/VariantList/variantTableColumns.tsx [106:22 - 154:7]

Clone found (tsx):
 - src/MitochondrialVariantList/mitochondrialVariantTableColumns.tsx [152:2 - 170:7] (18 lines, 178 tokens)
   src/VariantList/variantTableColumns.tsx [155:9 - 173:19]

Clone found (tsx):
 - src/MitochondrialVariantList/mitochondrialVariantTableColumns.tsx [166:9 - 180:6] (14 lines, 101 tokens)
   src/VariantList/variantTableColumns.tsx [181:4 - 195:5]

Clone found (tsx):
 - src/MitochondrialVariantList/mitochondrialVariantTableColumns.tsx [187:9 - 235:19] (48 lines, 369 tokens)
   src/VariantList/variantTableColumns.tsx [198:2 - 246:19]

Clone found (tsx):
 - src/MitochondrialVariantList/mitochondrialVariantTableColumns.tsx [260:6 - 276:33] (16 lines, 129 tokens)
   src/StructuralVariantList/structuralVariantTableColumns.tsx [164:13 - 180:30]

Clone found (tsx):
 - src/MitochondrialVariantList/mitochondrialVariantTableColumns.tsx [278:1 - 290:7] (12 lines, 95 tokens)
   src/VariantList/variantTableColumns.tsx [366:1 - 378:6]

Clone found (tsx):
 - src/MitochondrialVariantList/mitochondrialVariantTableColumns.tsx [291:5 - 302:2] (11 lines, 124 tokens)
   src/VariantList/variantTableColumns.tsx [379:5 - 391:3]

Clone found (typescript):
 - src/MitochondrialVariantList/filterMitochondrialVariants.ts [3:2 - 20:7] (17 lines, 162 tokens)
   src/VariantList/filterVariants.ts [3:2 - 20:4]

Clone found (typescript):
 - src/MitochondrialVariantList/filterMitochondrialVariants.ts [19:3 - 47:28] (28 lines, 296 tokens)
   src/StructuralVariantList/filterStructuralVariants.ts [18:3 - 46:15]

Clone found (tsx):
 - src/MitochondrialVariantList/MitochondrialVariants.tsx [71:35 - 108:11] (37 lines, 273 tokens)
   src/VariantList/Variants.tsx [70:22 - 107:12]

Clone found (tsx):
 - src/MitochondrialVariantList/MitochondrialVariants.tsx [105:6 - 135:28] (30 lines, 216 tokens)
   src/StructuralVariantList/StructuralVariants.tsx [118:4 - 137:2]

Clone found (tsx):
 - src/MitochondrialVariantList/MitochondrialVariants.tsx [139:2 - 148:24] (9 lines, 91 tokens)
   src/VariantList/Variants.tsx [143:2 - 150:23]

Clone found (tsx):
 - src/MitochondrialVariantList/MitochondrialVariants.tsx [153:22 - 207:3] (54 lines, 416 tokens)
   src/VariantList/Variants.tsx [148:3 - 201:6]

Clone found (tsx):
 - src/MitochondrialVariantList/MitochondrialVariantFilterControls.tsx [56:4 - 72:3] (16 lines, 129 tokens)
   src/VariantList/VariantFilterControls.tsx [82:26 - 98:2]

Clone found (tsx):
 - src/MitochondrialVariantList/MitochondrialVariantFilterControls.tsx [83:4 - 112:35] (29 lines, 187 tokens)
   src/VariantList/VariantFilterControls.tsx [171:23 - 201:22]

Clone found (tsx):
 - src/MitochondrialVariantList/ExportMitochondrialVariantsButton.tsx [26:2 - 39:4] (13 lines, 107 tokens)
   src/VariantList/ExportVariantsButton.tsx [82:2 - 94:5]

Clone found (tsx):
 - src/MitochondrialVariantList/ExportMitochondrialVariantsButton.tsx [76:3 - 119:9] (43 lines, 338 tokens)
   src/VariantList/ExportVariantsButton.tsx [147:3 - 190:8]

Clone found (tsx):
 - src/MNVPage/MNVConstituentSNVFrequencyTable.tsx [30:2 - 41:5] (11 lines, 142 tokens)
   src/VariantPage/VariantOccurrenceTable.tsx [42:2 - 53:6]

Clone found (tsx):
 - src/MNVPage/MNVConsequence.tsx [9:1 - 25:5] (16 lines, 104 tokens)
   src/VariantList/variantTableColumns.tsx [18:1 - 34:6]

Clone found (tsx):
 - src/GenePage/VariantsInGene.tsx [102:6 - 122:5] (20 lines, 164 tokens)
   src/TranscriptPage/VariantsInTranscript.tsx [54:10 - 74:11]

Clone found (tsx):
 - src/GenePage/VariantsInGene.tsx [134:2 - 140:2] (6 lines, 118 tokens)
   src/TranscriptPage/VariantsInTranscript.tsx [87:2 - 96:2]

Clone found (tsx):
 - src/GenePage/VariantCooccurrenceCountsTable.spec.tsx [43:5 - 69:2] (26 lines, 246 tokens)
   src/GenePage/VariantCooccurrenceCountsTable.spec.tsx [15:5 - 42:5]

Clone found (tsx):
 - src/GenePage/TranscriptsTissueExpressionPlot.tsx [192:2 - 199:68] (7 lines, 71 tokens)
   src/GenePage/TranscriptsTissueExpressionPlot.tsx [184:2 - 190:2]

Clone found (javascript):
 - src/GenePage/TissueExpressionTrack.tsx [437:2 - 471:15] (34 lines, 396 tokens)
   src/GenePage/TissueExpressionTrack.tsx [100:6 - 220:3]

Clone found (tsx):
 - src/GenePage/TissueExpressionTrack.tsx [397:9 - 409:6] (12 lines, 139 tokens)
   src/GenePage/TranscriptsTissueExpression.tsx [140:9 - 152:3]

Clone found (tsx):
 - src/GenePage/TissueExpressionTrack.tsx [441:2 - 456:3] (15 lines, 260 tokens)
   src/GenePage/TissueExpressionTrack.tsx [190:2 - 205:2]

Clone found (tsx):
 - src/GenePage/StructuralVariantsInGene.tsx [68:5 - 88:25] (20 lines, 106 tokens)
   src/RegionPage/StructuralVariantsInRegion.tsx [73:7 - 93:27]

Clone found (tsx):
 - src/GenePage/MitochondrialVariantsInGene.tsx [98:2 - 118:5] (20 lines, 134 tokens)
   src/TranscriptPage/MitochondrialVariantsInTranscript.tsx [102:2 - 122:11]

Clone found (tsx):
 - src/GenePage/MitochondrialVariantsInGene.tsx [118:5 - 138:5] (20 lines, 189 tokens)
   src/TranscriptPage/MitochondrialVariantsInTranscript.tsx [122:11 - 142:11]

Clone found (tsx):
 - src/GenePage/MitochondrialGeneCoverageTrack.tsx [34:2 - 57:5] (23 lines, 191 tokens)
   src/TranscriptPage/MitochondrialTranscriptCoverageTrack.tsx [33:2 - 56:11]

Clone found (tsx):
 - src/GenePage/GeneReferences.tsx [36:7 - 46:2] (10 lines, 106 tokens)
   src/TranscriptPage/TranscriptInfo.tsx [32:13 - 43:3]

Clone found (javascript):
 - src/GenePage/GenePage.tsx [437:23 - 484:28] (47 lines, 303 tokens)
   src/TranscriptPage/TranscriptPage.tsx [235:29 - 282:2]

Clone found (tsx):
 - src/GenePage/GenePage.tsx [157:1 - 212:5] (55 lines, 136 tokens)
   src/TranscriptPage/TranscriptPage.tsx [75:1 - 130:6]

Clone found (tsx):
 - src/GenePage/GenePage.tsx [273:1 - 290:5] (17 lines, 98 tokens)
   src/TranscriptPage/TranscriptPage.tsx [130:1 - 147:11]

Clone found (tsx):
 - src/GenePage/GenePage.tsx [436:2 - 482:23] (46 lines, 297 tokens)
   src/TranscriptPage/TranscriptPage.tsx [234:2 - 280:19]

Clone found (javascript):
 - src/GenePage/GenePage.spec.tsx [83:10 - 219:10] (136 lines, 1359 tokens)
   src/GenePage/GenePage.spec.tsx [74:10 - 172:5]

Clone found (tsx):
 - src/GenePage/GenePage.spec.tsx [15:1 - 32:2] (17 lines, 112 tokens)
   src/StructuralVariantPage/StructuralVariantPage.spec.tsx [9:1 - 22:2]

Clone found (tsx):
 - src/GenePage/GenePage.spec.tsx [119:2 - 131:9] (12 lines, 97 tokens)
   src/GenePage/GenePage.spec.tsx [101:2 - 113:6]

Clone found (tsx):
 - src/GenePage/GenePage.spec.tsx [140:6 - 157:2] (17 lines, 124 tokens)
   src/TranscriptPage/TranscriptPage.spec.tsx [27:2 - 44:2]

Clone found (tsx):
 - src/GenePage/GeneCoverageTrack.tsx [68:7 - 78:5] (10 lines, 76 tokens)
   src/TranscriptPage/TranscriptCoverageTrack.tsx [68:13 - 78:11]

Clone found (javascript):
 - src/DownloadsPage/downloadsPageStyles.tsx [304:17 - 406:24] (102 lines, 564 tokens)
   src/DownloadsPage/downloadsPageStyles.tsx [176:6 - 370:11]

Clone found (tsx):
 - src/DownloadsPage/downloadsPageStyles.tsx [264:26 - 277:2] (13 lines, 87 tokens)
   src/DownloadsPage/downloadsPageStyles.tsx [134:19 - 147:5]

Clone found (tsx):
 - src/DownloadsPage/downloadsPageStyles.tsx [350:30 - 398:2] (48 lines, 281 tokens)
   src/DownloadsPage/downloadsPageStyles.tsx [134:19 - 312:2]

Clone found (tsx):
 - src/DownloadsPage/downloadsPageStyles.tsx [400:2 - 438:25] (38 lines, 197 tokens)
   src/DownloadsPage/downloadsPageStyles.tsx [278:2 - 316:21]

Clone found (tsx):
 - src/DownloadsPage/GnomadV3Downloads.tsx [201:25 - 216:21] (15 lines, 106 tokens)
   src/DownloadsPage/GnomadV3Downloads.tsx [112:21 - 127:12]

Clone found (tsx):
 - src/DownloadsPage/GnomadV2Downloads.tsx [186:2 - 199:55] (13 lines, 101 tokens)
   src/DownloadsPage/GnomadV2LiftoverDownloads.tsx [88:13 - 101:87]

Clone found (tsx):
 - src/DownloadsPage/GnomadV2Downloads.tsx [212:20 - 233:57] (21 lines, 136 tokens)
   src/DownloadsPage/GnomadV2LiftoverDownloads.tsx [114:28 - 135:89]

Clone found (tsx):
 - src/DownloadsPage/GnomadV2Downloads.tsx [254:21 - 271:12] (17 lines, 116 tokens)
   src/DownloadsPage/GnomadV2LiftoverDownloads.tsx [147:29 - 164:32]

Clone found (tsx):
 - src/DownloadsPage/GnomadV2Downloads.tsx [370:27 - 385:15] (15 lines, 121 tokens)
   src/DownloadsPage/GnomadV3Downloads.tsx [262:27 - 277:13]

Clone found (tsx):
 - src/ClinvarVariantsTrack/ClinvarVariantDetails.tsx [11:1 - 69:37] (58 lines, 467 tokens)
   src/VariantPage/VariantClinvarInfo.tsx [9:1 - 67:24]

Clone found (tsx):
 - src/ClinvarVariantsTrack/ClinvarVariantDetails.tsx [153:15 - 165:3] (12 lines, 89 tokens)
   src/VariantPage/VariantClinvarInfo.tsx [74:8 - 86:14]

Clone found (tsx):
 - src/ClinvarVariantsTrack/ClinvarVariantDetails.tsx [179:15 - 204:15] (25 lines, 213 tokens)
   src/VariantPage/VariantClinvarInfo.tsx [89:8 - 114:8]

Clone found (tsx):
 - src/queryHelperExample.spec.tsx [31:1 - 48:53] (17 lines, 140 tokens)
   src/VariantPage/VariantPage.spec.tsx [25:1 - 42:10]

Clone found (tsx):
 - src/StackedHistogram.tsx [19:1 - 37:5] (18 lines, 159 tokens)
   src/MitochondrialVariantPage/MitochondrialVariantSiteQualityMetrics.tsx [26:1 - 45:6]

Clone found (tsx):
 - src/StackedHistogram.tsx [162:9 - 180:2] (18 lines, 125 tokens)
   src/MitochondrialVariantPage/MitochondrialVariantSiteQualityMetrics.tsx [149:9 - 167:2]

Clone found (javascript):
 - src/Legend.tsx [60:3 - 75:2] (15 lines, 155 tokens)
   src/StackedHistogram.tsx [138:6 - 218:12]

Clone found (tsx):
 - src/Legend.tsx [68:7 - 75:5] (7 lines, 104 tokens)
   src/StackedHistogram.tsx [210:9 - 218:2]

Clone found (tsx):
 - src/Histogram.tsx [20:1 - 43:3] (23 lines, 158 tokens)
   src/StackedHistogram.tsx [10:1 - 43:3]

Clone found (tsx):
 - src/Histogram.tsx [113:4 - 154:5] (41 lines, 323 tokens)
   src/StackedHistogram.tsx [138:2 - 168:12]

Clone found (tsx):
 - src/DatasetSelector.tsx [289:9 - 295:10] (6 lines, 88 tokens)
   src/DatasetSelector.tsx [277:2 - 283:12]

┌────────────┬────────────────┬─────────────┬──────────────┬──────────────┬──────────────────┬───────────────────┐
│ Format     │ Files analyzed │ Total lines │ Total tokens │ Clones found │ Duplicated lines │ Duplicated tokens │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ typescript │ 55             │ 2865        │ 22461        │ 9            │ 155 (5.41%)      │ 1530 (6.81%)      │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ javascript │ 194            │ 16654       │ 124850       │ 15           │ 1000 (6%)        │ 8158 (6.53%)      │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ tsx        │ 221            │ 36707       │ 259592       │ 135          │ 2751 (7.49%)     │ 22207 (8.55%)     │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ Total:     │ 470            │ 56226       │ 406903       │ 159          │ 3906 (6.95%)     │ 31895 (7.84%)     │
└────────────┴────────────────┴─────────────┴──────────────┴──────────────┴──────────────────┴───────────────────┘
Found 159 clones.
Detection time:: 1.978s

phildarnowsky-broad avatar Aug 10 '23 23:08 phildarnowsky-broad

That's a lot, so here's another report showing only the clones 50 lines long or longer, i.e., the most severe cases.

~/src/gnomad-browser/browser $ npx jscpd --pattern "src/**/*.ts(x)?" -l 50
Clone found (javascript):
 - src/VariantPage/VariantGenotypeQualityMetrics.tsx [189:20 - 296:15] (107 lines, 786 tokens)
   src/VariantPage/VariantGenotypeQualityMetrics.tsx [110:31 - 185:2]

Clone found (javascript):
 - src/ShortTandemRepeatPage/ShortTandemRepeatAlleleSizeDistributionPlot.tsx [227:2 - 323:12] (96 lines, 860 tokens)
   src/ShortTandemRepeatPage/ShortTandemRepeatGenotypeDistributionPlot.tsx [223:25 - 320:12]

Clone found (tsx):
 - src/ShortTandemRepeatPage/ShortTandemRepeatAlleleSizeDistributionPlot.tsx [261:7 - 320:2] (59 lines, 485 tokens)
   src/ShortTandemRepeatPage/ShortTandemRepeatGenotypeDistributionPlot.tsx [259:8 - 318:3]

Clone found (javascript):
 - src/ShortTandemRepeatPage/ShortTandemRepeatAgeDistributionPlot.tsx [128:7 - 199:7] (71 lines, 540 tokens)
   src/ShortTandemRepeatPage/ShortTandemRepeatGenotypeDistributionPlot.tsx [140:7 - 208:2]

Clone found (javascript):
 - src/ShortTandemRepeatPage/ShortTandemRepeatAgeDistributionPlot.tsx [204:2 - 293:2] (89 lines, 819 tokens)
   src/ShortTandemRepeatPage/ShortTandemRepeatGenotypeDistributionPlot.tsx [223:2 - 311:2]

Clone found (tsx):
 - src/ShortTandemRepeatPage/ShortTandemRepeatAgeDistributionPlot.tsx [230:9 - 301:3] (71 lines, 593 tokens)
   src/ShortTandemRepeatPage/ShortTandemRepeatAlleleSizeDistributionPlot.tsx [251:8 - 320:2]

Clone found (javascript):
 - src/RegionPage/EditRegion.tsx [77:15 - 207:14] (130 lines, 993 tokens)
   src/RegionViewer/ZoomRegionForm.tsx [115:2 - 198:2]

Clone found (tsx):
 - src/MitochondrialVariantPage/MitochondrialVariantTranscriptConsequence.tsx [41:1 - 101:5] (60 lines, 362 tokens)
   src/VariantPage/TranscriptConsequence.tsx [41:1 - 101:6]

Clone found (javascript):
 - src/MitochondrialVariantList/mitochondrialVariantTableColumns.tsx [110:5 - 186:7] (76 lines, 669 tokens)
   src/VariantList/variantTableColumns.tsx [111:5 - 198:6]

Clone found (tsx):
 - src/MitochondrialVariantList/MitochondrialVariants.tsx [153:22 - 207:3] (54 lines, 416 tokens)
   src/VariantList/Variants.tsx [148:3 - 201:6]

Clone found (tsx):
 - src/GenePage/GenePage.tsx [157:1 - 212:5] (55 lines, 136 tokens)
   src/TranscriptPage/TranscriptPage.tsx [75:1 - 130:6]

Clone found (javascript):
 - src/GenePage/GenePage.spec.tsx [83:10 - 219:10] (136 lines, 1359 tokens)
   src/GenePage/GenePage.spec.tsx [74:10 - 172:5]

Clone found (javascript):
 - src/DownloadsPage/downloadsPageStyles.tsx [304:17 - 406:24] (102 lines, 564 tokens)
   src/DownloadsPage/downloadsPageStyles.tsx [176:6 - 370:11]

Clone found (tsx):
 - src/ClinvarVariantsTrack/ClinvarVariantDetails.tsx [11:1 - 69:37] (58 lines, 467 tokens)
   src/VariantPage/VariantClinvarInfo.tsx [9:1 - 67:24]

┌────────────┬────────────────┬─────────────┬──────────────┬──────────────┬──────────────────┬───────────────────┐
│ Format     │ Files analyzed │ Total lines │ Total tokens │ Clones found │ Duplicated lines │ Duplicated tokens │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ javascript │ 175            │ 16568       │ 123920       │ 8            │ 807 (4.87%)      │ 6590 (5.32%)      │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ tsx        │ 186            │ 35751       │ 252203       │ 6            │ 357 (1%)         │ 2459 (0.98%)      │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ typescript │ 18             │ 1982        │ 14770        │ 0            │ 0 (0%)           │ 0 (0%)            │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ Total:     │ 379            │ 54301       │ 390893       │ 14           │ 1164 (2.14%)     │ 9049 (2.31%)      │
└────────────┴────────────────┴─────────────┴──────────────┴──────────────┴──────────────────┴───────────────────┘
Found 14 clones.
Detection time:: 1.840s

phildarnowsky-broad avatar Aug 10 '23 23:08 phildarnowsky-broad

@rileyhgrant @phildarnowsky-broad You have been super helpful with my questions about data pipeline etc. I figure this issue is one where I can be helpful to you in return. Is anyone working on this at the moment? If not, I'd be very happy to work through the list above to make things more DRY.

ignatiusm avatar Dec 03 '23 20:12 ignatiusm

Hiya @ignatiusm, wow that's very generous of you. We'll definitely not say no if you'd like to help out the state of the codebase :).

We are constantly improving our test suite, and it is better than it was, but it's not yet quite at a point where we can be confident on the test suite alone that any changes that result in passing tests don't also cause unintended changes.

That said, to try our best to make sure both you and us are on the same page with changes, would it make sense to start with a single instance from the list of DRYing up some of the code, and opening a PR for that? That way could have a few members from our team review one instance of the refactoring, before you spend more of your own time working through the list.

If that works for you, maybe the first instance in that list? Let us know :)

rileyhgrant avatar Dec 05 '23 17:12 rileyhgrant

Great! That sounds like an excellent approach - I was wondering how best to mitigate the risk of unintended changes. I have some work to finish off today and tomorrow but will get on the PR after that.

ignatiusm avatar Dec 05 '23 20:12 ignatiusm

Making a table to track progress:

Done Location 1 Location 2 PR
:heavy_check_mark: src/VariantPage/VariantGenotypeQualityMetrics.tsx [189:20 - 296:15] src/VariantPage/VariantGenotypeQualityMetrics.tsx [110:31 - 185:2] #1354
src/ShortTandemRepeatPage/ShortTandemRepeatAlleleSizeDistributionPlot.tsx [227:2 - 323:12] src/ShortTandemRepeatPage/ShortTandemRepeatGenotypeDistributionPlot.tsx [223:25 - 320:12]
src/ShortTandemRepeatPage/ShortTandemRepeatAlleleSizeDistributionPlot.tsx [261:7 - 320:2] src/ShortTandemRepeatPage/ShortTandemRepeatGenotypeDistributionPlot.tsx [259:8 - 318:3]
src/ShortTandemRepeatPage/ShortTandemRepeatAgeDistributionPlot.tsx [128:7 - 199:7] src/ShortTandemRepeatPage/ShortTandemRepeatGenotypeDistributionPlot.tsx [140:7 - 208:
src/ShortTandemRepeatPage/ShortTandemRepeatAgeDistributionPlot.tsx [204:2 - 293:2] src/ShortTandemRepeatPage/ShortTandemRepeatGenotypeDistributionPlot.tsx [223:2 - 311:2]
src/ShortTandemRepeatPage/ShortTandemRepeatAgeDistributionPlot.tsx [230:9 - 301:3] src/ShortTandemRepeatPage/ShortTandemRepeatAlleleSizeDistributionPlot.tsx [251:8 - 320:2]
src/RegionPage/EditRegion.tsx [77:15 - 207:14] (130 lines, 993 tokens) src/RegionViewer/ZoomRegionForm.tsx [115:2 - 198:2]
src/MitochondrialVariantPage/MitochondrialVariantTranscriptConsequence.tsx [41:1 - 101:5] src/VariantPage/TranscriptConsequence.tsx [41:1 - 101:6]
src/MitochondrialVariantList/mitochondrialVariantTableColumns.tsx [110:5 - 186:7] src/VariantList/variantTableColumns.tsx [111:5 - 198:6]
src/MitochondrialVariantList/MitochondrialVariants.tsx [153:22 - 207:3] src/VariantList/Variants.tsx [148:3 - 201:6]
:heavy_check_mark: src/GenePage/GenePage.tsx [157:1 - 212:5] src/TranscriptPage/TranscriptPage.tsx [75:1 - 130:6] #1384
src/GenePage/GenePage.spec.tsx [83:10 - 219:10] src/GenePage/GenePage.spec.tsx [74:10 - 172:5]
:heavy_check_mark: src/DownloadsPage/downloadsPageStyles.tsx [304:17 - 406:24] src/DownloadsPage/downloadsPageStyles.tsx [176:6 - 370:11] #1379
:heavy_check_mark: src/ClinvarVariantsTrack/ClinvarVariantDetails.tsx [11:1 - 69:37] src/VariantPage/VariantClinvarInfo.tsx [9:1 - 67:24] #1383

ignatiusm avatar Jan 17 '24 21:01 ignatiusm