Skip to content

Commit 70598bb

Browse files
committed
Added nego-example with all possible assemblies
1 parent cd37e88 commit 70598bb

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+3889
-17
lines changed

dnacauldron/Assembly/builtin_assembly_classes/Type2sRestrictionAssembly.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ def simulate(self, sequence_repository, annotate_parts_homologies=True):
186186
error = AssemblyFlaw(
187187
assembly=self,
188188
message="Failed to find suitable connectors",
189-
suggestion="Check assembly plan or parts design",
189+
suggestion="Check assembly plan/parts/connectors design",
190190
)
191191
return AssemblySimulation(
192192
assembly=self,

dnacauldron/AssemblyPlan/AssemblyPlan.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,10 @@ def _raise_an_error_if_duplicate_assembly_names(self):
3838
if any(len(indices) > 1 for indices in names_indices.values()):
3939
duplicates = ", ".join(
4040
[
41-
"%s (%s)" % (name, "-".join([str(i) for i in indices]))
41+
"%s (lines %s)"
42+
% (name, "-".join([str(i) for i in indices]))
4243
for name, indices in sorted(names_indices.items())
44+
if len(indices) > 1
4345
]
4446
)
4547
raise ValueError("Multiple assemblies named " + duplicates)

dnacauldron/AssemblyPlan/AssemblyPlanSimulation.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,10 @@ def _plot_assembly_graph(self, report_root):
174174

175175
def parts_sort_key(name):
176176
assemblies = enumerate(self.assembly_plan.assemblies)
177-
return [i for i, asm in assemblies if name in asm.parts][0]
177+
indices = [i for i, asm in assemblies if name in asm.parts]
178+
if indices == []:
179+
return 1000000
180+
return indices[0]
178181

179182
all_parts = (
180183
self.list_all_original_parts_used() + self.assembly_plan.all_parts
@@ -209,7 +212,7 @@ def _write_errors_spreadsheet(self, report_root, error_type="error"):
209212
for simulation in self.assembly_simulations
210213
for error in (
211214
simulation.errors
212-
if error_type == "errors"
215+
if error_type == "error"
213216
else simulation.warnings
214217
)
215218
]
@@ -228,12 +231,12 @@ def _write_errors_spreadsheet(self, report_root, error_type="error"):
228231
)
229232
for err in all_errors
230233
]
231-
filename = "assembly_%s.csv" % error_type
234+
filename = "%s_%ss.csv" % (self.assembly_plan.name, error_type)
232235
errors_spreadsheet = report_root._file(filename)
233236
errors_spreadsheet.write("\n".join([columns] + all_error_rows))
234237

235238
def _write_assembly_reports(self, report_root, report_writer, logger):
236-
all_records_folder = report_root._dir("all_records")
239+
all_records_folder = report_root._dir("all_construct_records")
237240
logger(message="Generating assemblies reports...")
238241
for simulation in logger.iter_bar(assembly=self.assembly_simulations):
239242
# TODO: skip cancelled assemblies!

dnacauldron/SequenceRepository.py

Lines changed: 35 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,32 @@
33
set_record_topology,
44
sequence_to_biopython_record,
55
)
6+
from fuzzywuzzy import process
67

78

89
class NotInRepositoryError(Exception):
910
def __init__(self, parts, repository):
1011
self.parts = parts
1112
self.repository = repository
12-
parts_list = ", ".join(parts)
13-
if len(parts_list) > 150:
14-
parts_list = parts_list[:150] + "..."
15-
parts = "Part%s %s" % ("s" if len(parts) > 1 else "", parts_list)
16-
repo_name = (" in " + repository.name) if repository.name else ""
17-
message = parts + " not found" + repo_name
13+
14+
# CREATE THE MESSAGE AND INITIALIZE THE EXCEPTION:
15+
16+
suggestions = [
17+
self.create_part_suggestion_string(part_name)
18+
for part_name in parts
19+
]
20+
suggestions = ", ".join(suggestions)
21+
message = "Parts not found in %s: %s" % (repository.name, suggestions)
1822
super().__init__(message)
23+
24+
def create_part_suggestion_string(self, part_name):
25+
suggestions = self.repository.suggest_part_names(part_name)
26+
if len(suggestions) == 0:
27+
return part_name
28+
return "%s (did you mean %s ?)" % (part_name, " or ".join(suggestions))
1929

20-
class RepositoryDuplicateError(Exception):
2130

31+
class RepositoryDuplicateError(Exception):
2232
def __init__(self, parts, repository):
2333
self.parts = parts
2434
self.repository = repository
@@ -31,7 +41,6 @@ def __init__(self, parts, repository):
3141
super().__init__(message)
3242

3343

34-
3544
class SequenceRepository:
3645
"""Sequence repositories store and provide sequence records.
3746
@@ -177,3 +186,21 @@ def get_part_names_by_collection(self, format="dict"):
177186
"\n".join([name] + ["- " + part for part in sorted(parts)])
178187
for name, parts in result.items()
179188
)
189+
190+
def get_all_part_names(self):
191+
"""Return the list of all part names"""
192+
parts = [
193+
part
194+
for collection in self.collections.values()
195+
for part in collection
196+
]
197+
return sorted(parts)
198+
199+
def suggest_part_names(self, query, cutoff=90, limit=3):
200+
"""Suggest part names in the repo close to the given query."""
201+
search = process.extract(query, self.get_all_part_names())
202+
return [
203+
name
204+
for (name, score) in sorted(search, key=lambda e: -e[1])
205+
if score >= cutoff
206+
][:limit]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
,valentin,valentin-EGF-iMac,05.02.2020 18:05,file:///home/valentin/.config/libreoffice/4;

examples/hierarchical_golden_gate/hierarchical_golden_gate.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,7 @@
77
path="golden_gate_two_levels.csv",
88
)
99
plan_simulation = assembly_plan.simulate(sequence_repository=repository)
10-
plan_simulation.write_report("output")
10+
report_writer = dc.AssemblyReportWriter(
11+
include_mix_graphs=True, include_assembly_plots=True
12+
)
13+
plan_simulation.write_report("output", assembly_report_writer=report_writer)
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
,valentin,valentin-EGF-iMac,05.02.2020 18:07,file:///home/valentin/.config/libreoffice/4;
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Multi-assembly plan example
2+
3+
Note: you can run this example from the command line with
4+
5+
```
6+
dnacauldron multi_assembly.xlsx part_sequences output --connectors=connector_sequences
7+
```
Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
LOCUS part_B 4259 bp ds-DNA circular UNK 29-OCT-2019
2+
DEFINITION .
3+
ACCESSION part_B
4+
VERSION part_B
5+
KEYWORDS "Source" "Sequence" "Freezer" "Shelf" "Box" "Concentration" "Use".
6+
SOURCE .
7+
ORGANISM .
8+
.
9+
FEATURES Location/Qualifiers
10+
primer_bind 531..550
11+
/label="feature"
12+
/ApEinfo_fwdcolor="#faac61"
13+
terminator 3078..3135
14+
/label="another feature"
15+
/ApEinfo_fwdcolor="#c6c9d1"
16+
CDS complement(join(4216..4259,1..616))
17+
/label="yet another feature"
18+
/ApEinfo_fwdcolor="#f58a5e"
19+
exon 2863..3060
20+
/label="feature"
21+
/ApEinfo_fwdcolor="#75c6a9"
22+
gene 2863..3060
23+
/label="another feature"
24+
/ApEinfo_fwdcolor="#faac61"
25+
terminator 4101..4195
26+
/label="yet another feature"
27+
/ApEinfo_fwdcolor="#9eafd2"
28+
primer_bind complement(3410..3429)
29+
/label="feature"
30+
/ApEinfo_fwdcolor="#faac61"
31+
primer_bind 778..796
32+
/label="another feature"
33+
/ApEinfo_fwdcolor="#75c6a9"
34+
misc_feature 859..862
35+
/label="yet another feature"
36+
/ApEinfo_fwdcolor="#ffef86"
37+
primer_bind complement(3159..3176)
38+
/label="feature"
39+
/ApEinfo_fwdcolor="#faac61"
40+
misc_feature 863..3060
41+
/label="another feature"
42+
/ApEinfo_fwdcolor="#f58a5e"
43+
rep_origin complement(3330..3918)
44+
/label="yet another feature"
45+
/ApEinfo_fwdcolor="#84b0dc"
46+
misc_feature 3061..3064
47+
/label="feature"
48+
/ApEinfo_fwdcolor="#ffef86"
49+
terminator 800..843
50+
/label="another feature"
51+
/ApEinfo_fwdcolor="#85dae9"
52+
ORIGIN
53+
1 cgggtctagc cacgcggctg aaaatgcgcc tcaccaagtt cagagagttg taatttaaag
54+
61 gaccaaagaa cgtccattat gaagacacca atgagaaaag ttcattgcga tcgcagctta
55+
121 gactgacgtg aagttccaac atttggcata cgtacttgtt aagttcctcc ggctatatgc
56+
181 gctaggcgca ggtatattag ccggacatct gcaaggttga cgctgaagcc ttatcggtaa
57+
241 tgcaagcaca acggtattgc agacacacaa taggaagtta tgttaacagg agagggtgat
58+
301 gccgatgatt acgccccgcg tcgacagtac aataaaacag ctagatcatg tcgaaagtgt
59+
361 aggcaaaaca ggtaggtgca ggacaggagg gttccctcaa gtcggcttgc tttatgtggc
60+
421 gaatctgata cccataccgg ctatacatcg gccagggaat atcacagatt ttaaatgagc
61+
481 ggagatagac ctatgggacc gcatcgatgc aagacatcgc ctacagatac ataatctgga
62+
541 agacgcagat atcagtacgc tccttcctgg gaggcgtggt ccttggcacc agtcggccac
63+
601 cccttagcgt ttcacctaag caacgaatcc aggactcctc ttttagcgtt tgggtgtcag
64+
661 gcgcatcagg agtggttaaa tgaacgctgt acttcgcaag ataattgtga agatctctgc
65+
721 tattccttaa cattaccacc aactttgcct acatatggcg taatcaaaaa tgcagcgggg
66+
781 tgctcgatcg tgaaccctca atcacgatgt gctatggcgt agccacacaa catagttccg
67+
841 gtctggaatt cggtctctgg agagcatacg gtgctctggg ctcacacgta cttcctcttg
68+
901 tcacgcgcct ttgtagagca ttagggcgga ggtcactggg acggggatca gagagcttaa
69+
961 aatcccaagt agcagtgcct aaggtgtaga atcttgtgca gatcttcgtc tggcccgaaa
70+
1021 cctgggcctc cacaacaatg tcgggtcttt tataatttga aaacatcgcg ccttacccgc
71+
1081 accgcgcagg acgattagac acagggggtc atgtccatgg ttcggggtaa gccaaattta
72+
1141 catcgagtgt gggcttcatt gaggagaggg cgttacgata cccgttaaat gaaaacccgg
73+
1201 acagtctcta actgataggc ctgataatcg ccaaatgaag tcgcaattag cagtacatga
74+
1261 ctggcagata tgtcgccgga gacggtatgg gggacctatc ctaggttggc acgcgagcgc
75+
1321 gaatgacgcc tatcttatcc ccctgcacgt gatggtatcg tcccaactat cttttacctc
76+
1381 atcaacgttt tcctgcataa tctgcaagat ggagagtccg cgagtgcggg gagtacgaga
77+
1441 tcacaaatct gccctgaaga caaagctcgc aggccgtact caggaaatag catcgactca
78+
1501 cacatatcgg gaacggcaaa gagtgcatcg gccaatgcaa actattgaac gtccatgaaa
79+
1561 ttgtgtcaaa ctactagtgt gtggacttgc gtcaaggcca tggcgcaata ctcaaagccc
80+
1621 cggtatttat cccccgcaga gtatccgtgc ggatggagtt ccacagctct ttggacatgc
81+
1681 aatgcgtggc gctacatgct ccgctgatac agaatatcta atgtctcgcc tcttgccgtc
82+
1741 gaccctacaa ctactgcacg ggcagagtgg acgcgacccc tgagcggtgc agaaccttag
83+
1801 tataaggcaa gggtggcacg gccgagccgc acttgctcct actaggccgt gctcgaagct
84+
1861 attgatgcaa gcacagtatt cccgatttgt aaagcaaggt gcccgtagcc atacacccag
85+
1921 ctactcaccg gccaatttcg accctctcta tctcagacct ccgcatattc ccaaactcct
86+
1981 gctcaagtat gaaatgaccg gctcctccta aggcctgcgg acatggagtc atgcgtggaa
87+
2041 tgccgtgtag gtagggtaca cacagcctta ccatgtaggg caataaatta tagactactg
88+
2101 acattgattc cttgagggcc cgttcacttg tgggggaacc aggaaggcgc cgatagtcat
89+
2161 cacttaaaca catgcgacgc atccatttca agaaagacac gctacgggtc tacaccgcct
90+
2221 atagttctaa tttgggcccc ggtacgcaca tcgatgtact ctccattaca gcatagcaca
91+
2281 tcagcggccc tagttagcgc ttctttttgt tccaacattc aatagcgggg actgcattat
92+
2341 cctcacccta tttgttgcat aggtatttgg ccgtatactt gggaaagagc aaccacggga
93+
2401 gtgcactaga aactgattca cccatgttat aacgcgttgc tcgcaagtcg tactgtggcc
94+
2461 acgcacaggt caggcaatcg caaccatgtc ttagcagttt gtaagaagac ctttaaacat
95+
2521 gtacctcaca gcaatctcgg aacttttaat tttcctgagt caatgacatg ctagctccgt
96+
2581 ccacttgtaa tcaccgtcat aacacagtta gcctgcaaaa gggcgtgtac accttgccac
97+
2641 tttaaagctg accgaataac ctacctacag gagatgctta gtgccacgga atgatctcgc
98+
2701 aatgcttagt cttacaccca gtgaatcaac ccaagacctc gccgactgaa cggtattgag
99+
2761 tccaatcccg agaggcaatt tatggccgtt agtgacagtc ggtcgctgat agaataaggc
100+
2821 agactcgtct taagcgggct gctttaagag aaaatggagc cctgacgaag aagtggatga
101+
2881 accaggtttt gacaacgtcc catattggta atgtaggctc gttatcaaga gataggttta
102+
2941 gaaggctcaa tgctcgacgt aaaagaagtc ttaagctcta tgagccagtg atgagagcta
103+
3001 attatagggc gcattcgttg gggtaaggtt gcgaattgtc atttaactaa aaccgacggc
104+
3061 aatgtgagac cctgcagtcc gcctacacct ggctcactga ggcggcaacc gttatcgaag
105+
3121 cagcatgtat tggtagtacc tgtcgccgat ttccttggga gtgcgctgtt gcgataacgc
106+
3181 ttatttatgg tttgcgcggg atgtatctaa tgcggccgcc gcccgatcag cctgaacact
107+
3241 gcggtcatga gccggtccat catgcagttc gcctgtaatt ataacctatt tgttaatggg
108+
3301 gcttacagag gagcttccaa cgcatctacg agtaacggct gggatcacaa cttagccacc
109+
3361 ttgtagcagg gacataccgc tttgcgacta ctgcgattct ctaacgagtc ttctgattgg
110+
3421 tcctatgctc tttcaaaatc tcgataccgt agccaaccct gctgcccacc ttaaactatg
111+
3481 acaggacaca ccattgtgcc aacctacacc ttaccagtag ttctgctctc caccactaat
112+
3541 acgatgtcag aggccagaag gagcaccgtc aacaaacgcg ataatcaggg cggcgaagat
113+
3601 ggaagtagct tgggttgtcg gtgggcaggt caggcgttag tgttatttga ataccaactg
114+
3661 ttagaccaca gcgactcgaa cagtccgcaa gtcaagtgcg gtcggctttt acaggtggcg
115+
3721 gattttcatt ccaccattcg ggtctaggtg tggtactaac cgcggtcata cgtggagttg
116+
3781 aaccgcctga cgcactaagc tatgcgggca acaatatcgc caaagtcatt gtgttgggtt
117+
3841 ttcacaacag tcacttcgct cacggccgaa ttaaatatct ctaactatta agccattttc
118+
3901 caaccatcgg ctatcccagc ggttcaatcc gaatcgttac cagtgggtag ctgcagagga
119+
3961 tcctaagggc gggtcccgct tactgtaact cgtcatgtct cgtggtctac caattcggtt
120+
4021 agtattcgtg ccatgtatct cataagggtt gcagtttcgt cattgtcgta gttccttaat
121+
4081 ggactggtac gacccggttg ttatacaacc atcaatcgtt aacggacatt agtgagccga
122+
4141 ggagaagacc catcagcgga taacccgcca ttatcaccga tactgacata tgagtgccat
123+
4201 actgggactg gcttcacgtg agggacctca aagtgagtcg tacaaggcag ctcctcaaa
124+
//
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
LOCUS part_C 3423 bp ds-DNA linear UNK 20-NOV-2019
2+
DEFINITION .
3+
ACCESSION part_C
4+
VERSION part_C
5+
KEYWORDS .
6+
SOURCE .
7+
ORGANISM .
8+
.
9+
FEATURES Location/Qualifiers
10+
CDS 18..3275
11+
/label="feature"
12+
/ApEinfo_fwdcolor="#ffef86"
13+
CDS 3276..3404
14+
/label="another feature"
15+
/ApEinfo_fwdcolor="#ffef86"
16+
misc_feature 2486
17+
/label="yet another feature"
18+
/ApEinfo_fwdcolor="#b1ff67"
19+
misc_feature 3411..3423
20+
/label="feature"
21+
/ApEinfo_fwdcolor="#faac61"
22+
misc_feature 3407..3410
23+
/label="another feature"
24+
/ApEinfo_fwdcolor="#f8d3a9"
25+
misc_feature 14..17
26+
/label="yet another feature"
27+
/ApEinfo_fwdcolor="#f8d3a9"
28+
misc_feature 1..13
29+
/label="feature"
30+
/ApEinfo_fwdcolor="#faac61"
31+
misc_feature 3131
32+
/label="another feature"
33+
/ApEinfo_fwdcolor="#b1ff67"
34+
misc_feature 2078
35+
/label="yet another feature"
36+
/ApEinfo_fwdcolor="#b1ff67"
37+
misc_feature 14
38+
/label="feature"
39+
/ApEinfo_fwdcolor="#b1ff67"
40+
ORIGIN
41+
1 tggctaggtc tccaatggtt tcaccggagc tgagatcgca ttaaagtcac actacgaatt
42+
61 atttgtcccc gcggctccag agacaaattt ctaggagtgg gttcatggag aaccgtgaca
43+
121 agcatggtag cttcaaatag cgtcatcgga tcttaaagtg attgtgacat atatgggatt
44+
181 gcgcgtctct cttacacaag ctagtgtgcg cgaggtgctg aacacctatt acgtcaactc
45+
241 ccgggatccc ggcgggttac agagacataa gcagggtgtc catcattaac ttcgatgttg
46+
301 agcccgtgcc ctgatcaaac acctctcgta gtagtgggtg ccggccgtgt attattttgg
47+
361 gggagaggat gcgccctaag caatttcttt ccatcggcca gccattcgac gccggcacgc
48+
421 aagttgttgc gggcactgtt gcagttcccg tactagagtc tcaagtctag aggtaccagc
49+
481 atcaggaaga tgggtacttc gtgtggatct tctcctgaac ctgaaacctg aagagctaaa
50+
541 gcgcgtcgcg ctgccatacg ataagtcgct ctcatttccg gaagacgtcg ttgggtgatg
51+
601 gcgaacaatc gcgaaacgaa aatcgcggtc ggtatgttga ttcaagacgg gctacgggcg
52+
661 ggttactaac aggtgcgcag aaatgtgatg ggtcacttga ccatgaactt tcgcgccgtc
53+
721 gcttctgtgg actggccggc tccctgatag tgcactagcc cgttgatatg cccattacca
54+
781 tttggcggcg cagtgtgcca gcgggattaa gatgcgtggc gtacaactat ccgcactttg
55+
841 ctgacgcaca aaggcaactg atggacagcc ttcgggcatt cgactggttg gctgagttcg
56+
901 cctgcctatt aatatgcttg tggaaattga tttacagcgc ctacttctac ttaggtgtac
57+
961 ctatttacgg cacagggata aaggctgaca gaaaagtcct ggacaggtca taggtagttg
58+
1021 tcagacctac aatggtataa cttgagagtc ctgtaccgca catgcggttg tagctagatg
59+
1081 tccagaagac cgtagctagc gacgagtggg ttgcacgcgc attttgggaa ggggctgcgc
60+
1141 gagggtgggg tcacgggtta ttccatttct aaatgctaaa ccagcagttg ctttagttct
61+
1201 gacctagcag gcatgtcata tgtatggcta gattattagt acaatgcagg actaagaaag
62+
1261 cctgagactt aaatgcgttg gtttttcagc cgacgggccg ggagggcaga tggccgaatg
63+
1321 cgcactgagg agtgcattgc gagggaatag gcggaccacc aggtcccctc acatactgtg
64+
1381 gataaaccta cccagggaca actcacgcca tcattttcaa gagtagcact actttccact
65+
1441 aagtacggtt tgtcgagagc cggtggcacc gtgcgacgag cttgtgggca ctaggcgaac
66+
1501 cgggttatat aggactgcct tgcggtgcgg gaatacttta ccccgtggag aggccataaa
67+
1561 agcttacatt tattgtagcc gctagcggtt tcgacgcgct caagtggggc tttatcttag
68+
1621 agtatcaaat aatgccctct cagcttcatc ttgatttttg tgtttggggt agtgtatccg
69+
1681 atgggtcacc ttcttgacct tggggagctc catccatcgt accaatactc cgtttctttg
70+
1741 tgttgcctac cgagtaatcg aataccgcac gagggctaga atctaattta aggtgggtct
71+
1801 tatccctgtt gtttggacct aacgctgtaa caaatcactt ccgcgacggg tgtcattacg
72+
1861 tcttctatcc gccaccggtt caacagtgcg tcgaatgcca agtccctatt acccgcattg
73+
1921 taaagccatt acaatacctc cggtgatata attgattgcc ggttggcaag ggatcatctg
74+
1981 tacgggccgc gattgattgc tgataaggaa cggcggtaag gaacgtatcg cgtacgaggt
75+
2041 tgtacactgg aaccgctaaa caagcggtat cgctaaatta ccggcgatta tatcaaggga
76+
2101 atcttaggta gcacgaagcc ctacgccctg gaaacaggat cggcgcgagg ccgtggacat
77+
2161 attagcctac gtttttttac acccagattt ccgacgatgt ccacagctaa ggctatccta
78+
2221 aaccgcaaac acatataacc gcagtataaa gcacgggatg attccttggc catcttgcaa
79+
2281 gcagtgcaag gcaattctgg tgataggggc aaggcagtga accgagtggt cagcgtattg
80+
2341 tgaccctgca attgtcatgg cagataattg tttatgaacc tgtttcacac acccatccct
81+
2401 tggatctcca gcgtagttac taatagtacg atttcctggt gttctgtcac ccgccttgct
82+
2461 gccttcacgc ctgccccacg ttttgctgtc cactgaatat cgctctaatt aataggtgtc
83+
2521 acactgtatc aggtaagtcc attccgggtg ctattggatc attcctgaga tgtaccaccg
84+
2581 atcccatagg cgttaggtct tacatctgga gtgaaaaaga tcagcatcga actataggta
85+
2641 gataaaggtc atgactgtta acagagaatc gttcctatcg caaccttcac taactggaag
86+
2701 gcacccccac actttgatta gtaagcccct agcgaatgta gtgatccaag aacatcgagt
87+
2761 atactttagc tctcggttca ggcatgtatg caatcgacca cccttccgtt cagagtactc
88+
2821 tcaaccagca gatttctaaa ctttatagcc tccgcccact aaaattgcct tatctcaggt
89+
2881 tgactcttgg atgtagctgt aatctaacat acacatggag ctgcggcaaa ttatcgtacg
90+
2941 tccaaaccac caccggatca gtggcgatac tattctcgca aaaaagccat ccagcattgg
91+
3001 aacaagtgtt aaccagcatt tttctgagtc ccccggaaag aaagttgact acactacatc
92+
3061 cataaatgct agagtgtgga ttcgccatgt gttacaacgg tcaaccgaaa ggttagcatg
93+
3121 atacttcgtt gttcaatcgg acgttcgagc gccctccctg tttatcactt gatccccctt
94+
3181 ttgaaacatg tgcgctgcga cgcagggctg ggagagtcac cggaaaccaa aagcccgacc
95+
3241 tcggacgtgt agggccctcc gtttgccatc aatggcgatg taggattctc ttttaataca
96+
3301 acgttcactc aattaacgtc ttggtataag cgtcgaacgt gaccgaggtt gacaccagtg
97+
3361 tcacggctgc gccggggttt gttgctccgc gtgtacaggg tattggttcg tgagacctag
98+
3421 cca
99+
//

0 commit comments

Comments
 (0)