Skip to content

Commit 165561e

Browse files
committed
fixed bug where linear, non-directional, single cuts were copying and not just moving overhangs from the fragment sequence.
1 parent d0f6ab3 commit 165561e

File tree

2 files changed

+24
-12
lines changed

2 files changed

+24
-12
lines changed

clone/clone.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -186,19 +186,25 @@ func CutWithEnzyme(part Part, directional bool, enzyme Enzyme) []Fragment {
186186
// 2 fragments
187187
if len(overhangs) == 1 && !directional && !part.Circular { // Check the case of a single cut
188188
// In the case of a single cut in a linear sequence, we get two fragments with only 1 stick end
189-
fragmentSequence1 := sequence[overhangs[0].Position+overhangs[0].Length:]
190-
fragmentSequence2 := sequence[:overhangs[0].Position]
191189

190+
var fragmentSequence1 string
191+
var fragmentSequence2 string
192192
var overhangSequence string
193193

194194
if len(forwardOverhangs) > 0 {
195+
fragmentSequence1 = sequence[overhangs[0].Position+overhangs[0].Length:]
196+
fragmentSequence2 = sequence[:overhangs[0].Position]
195197
overhangSequence = sequence[overhangs[0].Position : overhangs[0].Position+overhangs[0].Length]
198+
fragments = append(fragments, Fragment{fragmentSequence1, overhangSequence, ""})
199+
fragments = append(fragments, Fragment{fragmentSequence2, "", overhangSequence})
196200
} else {
201+
fragmentSequence1 = sequence[overhangs[0].Position:]
202+
fragmentSequence2 = sequence[:overhangs[0].Position-overhangs[0].Length]
197203
overhangSequence = sequence[overhangs[0].Position-overhangs[0].Length : overhangs[0].Position]
204+
fragments = append(fragments, Fragment{fragmentSequence2, "", overhangSequence})
205+
fragments = append(fragments, Fragment{fragmentSequence1, overhangSequence, ""})
198206
}
199207

200-
fragments = append(fragments, Fragment{fragmentSequence1, overhangSequence, ""})
201-
fragments = append(fragments, Fragment{fragmentSequence2, "", overhangSequence})
202208
return fragments
203209
}
204210

clone/clone_test.go

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -116,20 +116,26 @@ func TestCutWithEnzymeRegression(t *testing.T) {
116116
t.Errorf("Expected 2 fragments, got: %d", len(fragments))
117117
}
118118

119-
if fragments[0].ForwardOverhang != "ACTT" {
120-
t.Errorf("Expected forward overhang to be ACTT, got: %s", fragments[0].ForwardOverhang)
119+
if fragments[0].ForwardOverhang != "" {
120+
t.Errorf("Expected forward overhang to be empty, got: %s", fragments[1].ForwardOverhang)
121121
}
122122

123-
if fragments[0].ReverseOverhang != "" {
124-
t.Errorf("Expected reverse overhang to be GAGT, got: %s", fragments[0].ReverseOverhang)
123+
if fragments[0].ReverseOverhang != "ACTT" {
124+
t.Errorf("Expected reverse overhang to be GAGT, got: %s", fragments[1].ReverseOverhang)
125125
}
126126

127-
if fragments[1].ForwardOverhang != "" {
128-
t.Errorf("Expected forward overhang to be empty, got: %s", fragments[1].ForwardOverhang)
127+
if fragments[1].ForwardOverhang != "ACTT" {
128+
t.Errorf("Expected forward overhang to be ACTT, got: %s", fragments[0].ForwardOverhang)
129129
}
130130

131-
if fragments[1].ReverseOverhang != "ACTT" {
132-
t.Errorf("Expected reverse overhang to be GAGT, got: %s", fragments[1].ReverseOverhang)
131+
if fragments[1].ReverseOverhang != "" {
132+
t.Errorf("Expected reverse overhang to be GAGT, got: %s", fragments[0].ReverseOverhang)
133+
}
134+
135+
// assemble the fragments back together
136+
assembly := fragments[0].Sequence + fragments[0].ReverseOverhang + fragments[1].Sequence
137+
if assembly != sequence {
138+
t.Errorf("Expected assembly to be %s, got: %s", sequence, assembly)
133139
}
134140
}
135141

0 commit comments

Comments
 (0)