Skip to content

Commit 1201768

Browse files
author
Koeng101
authored
Synthesis fixer panic (#210)
* Updated synthesisFixer to not use SQL. * Add comment to go to fixcdssimple * Added developer docs * Removed need for magic number * increase code coverage to 100% * Fixed if suggestion for fix is larger than the sequence itself * Added 2 different fixes for particular sequence
1 parent 87dbfca commit 1201768

File tree

2 files changed

+14
-8
lines changed

2 files changed

+14
-8
lines changed

synthesis/synthesis.go

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -67,13 +67,7 @@ func RemoveSequence(sequencesToRemove []string, reason string) func(string, chan
6767
for _, location := range locations {
6868
codonLength := 3
6969
position := location[0] / codonLength
70-
leftover := location[0] % codonLength
71-
switch {
72-
case leftover == 0:
73-
c <- DnaSuggestion{position, (location[1] / codonLength), "NA", 1, reason}
74-
case leftover != 0:
75-
c <- DnaSuggestion{position, (location[1] / codonLength) - 1, "NA", 1, reason}
76-
}
70+
c <- DnaSuggestion{position, (location[1] / codonLength) - 1, "NA", 1, reason}
7771
}
7872
}
7973
}
@@ -327,7 +321,7 @@ func FixCds(sequence string, codontable codon.Table, problematicSequenceFuncs []
327321

328322
// For each suggestion, get a list of potential changes that could fix the problem.
329323
var potentialChanges []Change
330-
for positionSelector := suggestion.Start; positionSelector <= suggestion.End; positionSelector++ {
324+
for positionSelector := suggestion.Start; positionSelector <= suggestion.End && positionSelector < len(historicalMap); positionSelector++ {
331325
codonList := historicalMap[positionSelector]
332326
lastCodon := codonList[len(codonList)-1]
333327
unavailableCodons := make(map[string]bool)

synthesis/synthesis_test.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,3 +226,15 @@ func TestBadCodonTable(t *testing.T) {
226226
t.Errorf("TestBadCodonTable should fail with 'incomplete codon table'")
227227
}
228228
}
229+
230+
func TestPanicIndex(t *testing.T) {
231+
// lastCodon := codonList[len(codonList)-1] used to fail here with a panic
232+
// panic: runtime error: index out of range [-1]
233+
// This was because there is a BbsI at the end of the gene and sometimes a
234+
// synthesis fix would be requested at 825, out of the sequence range.
235+
236+
codonTable := codon.ReadCodonJSON(dataDir + "freqB.json")
237+
gene := "ATGTCCGAAAAGAATCTGGAGCACAACCACGGTATCATCAAGGGTATCGATATTGCAGCGGAGGTGCGTAAAGACTTCCTGGAGTACAGCATGAGCGTCATCGTGAGCCGCGCACTGCCGGACCTGAAAGACGGTCTGAAACCGGTTCACCGTCGTATTATCTATGCGATGAACGACCTGGGTATCACCGCGGATAAGCCGCACAAGAAGAGCGCGCGTATCGTCGGTGAAGTTATTGGCAAGTATCACCCGCATGGTGACACCGCAGTTTATGATAGCATGGTTCGTATGGCGCAAGATTTTAGCTACCGCTATCCGCTGGTTGACGGCCACGGTAACTTTGGTAGCATCGACGGTGATGGCGCGGCGGCCATGCGTTACACCGAGGCGCGTTTGGCAAAAGTGTCCAATTTTATTATCAAGGACATCGATATGAATACCGTGCCGTTCGTGGACAACTACGACGCAAGCGAGCGTGAACCGGCTTACCTGACGGGCTATTTCCCGAATCTGCTGGCAAATGGTGCAATGGGTATCGCGGTCGGTATGGCTACCAGCATCCCGCCGCATAATCTGCGTGAGGTGATCTCCGCGATTCATGCATTTATCGATAACAAAGATATCACCATCGATGAGATCCTGGACAATCATATTATGGGTCCGGATTTCCCGACCGGTGCTCTGATGACCAACGGTATTCGTATGCGTGAGGGTTACAAAACGGGTCGCGGTGCGGTGACCATCCGCGCTAAAGTCGCACTGGAAGAGAATGATCGCCATGCGCGCTTCATCATTACGGAGATTCCGTATCAGACCAACAAGGCGAAACTGATTGAGCGCATCGCAGAGCTGGTCAAGACGAAGCAGCTGGAAGGTATCAGCGACATTCGTGACGAGAGCAATTATGAAGGTATTCGCATCGTTATCGAGCTGCGTCGCGACAGCAATCCGGACGTGGTCCTGAGCAAGCTGTACAAATTTACCAACTTGCAAACCACGTATAGCTTGAACCTGCTGAGCCTGCACAATAATATTCCGGTTCTGCTGGACCTGAAAAGCATCATCAAACACTACGTCGACTTTCAGATCAACGTTATTATCAAGCGCAGCATTTTTGAGAAGGATAAGATCGAAAAACGCTTCCACATCCTGGAAGCGCTGGATACCGCGCTGGACAATATCGACGCGATTGTCAACATTCTGCGTAACAGCCCGGAGAGCAACGAGGCTAAAATGAAGCTGACCGAAGCGTTCGGCTTCGATGAAGAACAAAATAAAGCGATCCTGGATATGCGTCTGCAACGTTTGGTCGGTCTGGAACGTGGCAAAATCCAGCAGGAGATGGCGCAGATCAAAGAGCGTATTGACTACCTGACCCTGCTGATTAGCGATGAAACCGAACAGAACAATGTTCTGAAGAACCAGCTGAGCGAAATTGCTGAGAAATTCGGTGACAACCGTCGCACGGAGACGATTGACGAGGGTCTGATGGATATCGAGGATGAGGAACTGATTCCGGACGTGAAGACGATGATTCTGCTGAGCGACGAAGGCTATATTCGTCGTGTGGATCCGGAGGAATTTCGCGTCCAAAAGCGCGGTGGTCGCGGTGTGAGCGTGAACTCCAGCAATGAGGACCCGATTGTTATCGCGACGATGGGTAAGATGCGTGACTGGGTCCTGTTTTTCACGAATAGCGGTAAGGTCTTCCGCACCAAAGCCTACAACATTCGCCAATACAGCCGTACCGCGCGCGGCCTGCCGATCGTGAATTTTCTGAACGGTCTGACCGCGGGCGACAAGATTACCGCGATTCTGCCGCTGCGTAATGTGAAAGAGAAAATGAATTATTTGACCTTTATTACCGAGAAGGGTATGATTAAGAAAACCGATATTAGCCTGTTTGACAATATCAACAAAAACGGTAAAATCGCGATTAACTTGAAAGAGGACGACCAACTGGTGACCGTTTTCGCGACCACGGGCGAGGATACCATCTTTGTGGCAAACAAGAGCGGTAAAGTTATCCGTATTCAGGAAAACATCGTCCGCCCGTTGTCTCGTACGGCATCTGGTGTGAAAGCGATTAAGTTGGACGAGAACGATGTGGTGGTGGGTGCAGTTACGAGCTTCGGTATTGAGAACATTACGACCATTTCCTCCAAGGGTAGCTTCAAAAAGACGAACATCGATGAGTATCGTATCAGCGGCCGTAATGGTAAAGGCATCAAAGTCATGAATCTGAACGAAAAGACCGGTGATTTCAAAAGCATCATTGCGGCACGCGAAACCGATCTGGTTTGTATTATTAGCACGGACGGCAATCTGATTAAGACCAAAGCGAGCGATATCCCGGTGCTGGGCCGTGCGGCTGCCGGCGTGCGTGGTATTCGCCTGTCCGAGGGTAATAAGATTCAGGCCGTTATGCTGGAGTACCGTAAACACGGTGAAGAGAACCAGGAATTCGAGGAAGAC"
238+
_, _, _ = FixCdsSimple(gene, codonTable, []string{"GAAGAC", "GGTCTC", "GCGATG", "CGTCTC", "GCTCTTC", "CACCTGC", "CGTCTC"})
239+
240+
}

0 commit comments

Comments
 (0)