@teselagen/sequence-utils 0.1.22 → 0.1.23

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.
Files changed (135) hide show
  1. package/index.js +12030 -26126
  2. package/index.mjs +12119 -26124
  3. package/index.umd.js +24056 -38154
  4. package/package.json +2 -2
  5. package/src/DNAComplementMap.js +32 -0
  6. package/src/addGapsToSeqReads.js +417 -0
  7. package/src/addGapsToSeqReads.test.js +358 -0
  8. package/src/adjustAnnotationsToInsert.js +19 -0
  9. package/src/adjustBpsToReplaceOrInsert.js +50 -0
  10. package/src/adjustBpsToReplaceOrInsert.test.js +59 -0
  11. package/src/aliasedEnzymesByName.js +7363 -0
  12. package/src/aminoAcidToDegenerateDnaMap.js +32 -0
  13. package/src/aminoAcidToDegenerateRnaMap.js +32 -0
  14. package/src/aminoAcidToDnaRna.test.js +27 -0
  15. package/src/annotateSingleSeq.js +29 -0
  16. package/src/annotateSingleSeq.test.js +64 -0
  17. package/src/annotationTypes.js +23 -0
  18. package/src/autoAnnotate.js +242 -0
  19. package/src/autoAnnotate.test.js +1039 -0
  20. package/src/bioData.js +431 -0
  21. package/src/calculateNebTa.js +34 -0
  22. package/src/calculateNebTa.test.js +57 -0
  23. package/src/calculateNebTm.js +127 -0
  24. package/src/calculateNebTm.test.js +32 -0
  25. package/src/calculatePercentGC.js +3 -0
  26. package/src/calculatePercentGC.test.js +14 -0
  27. package/src/calculateTm.js +297 -0
  28. package/src/calculateTm.test.js +7 -0
  29. package/src/computeDigestFragments.js +179 -0
  30. package/src/computeDigestFragments.test.js +73 -0
  31. package/src/condensePairwiseAlignmentDifferences.js +85 -0
  32. package/src/condensePairwiseAlignmentDifferences.test.js +66 -0
  33. package/src/convertAACaretPositionOrRangeToDna.js +24 -0
  34. package/src/convertAACaretPositionOrRangeToDna.test.js +34 -0
  35. package/src/convertDnaCaretPositionOrRangeToAA.js +24 -0
  36. package/src/convertDnaCaretPositionOrRangeToAA.test.js +37 -0
  37. package/src/cutSequenceByRestrictionEnzyme.js +301 -0
  38. package/src/cutSequenceByRestrictionEnzyme.test.js +296 -0
  39. package/src/defaultEnzymesByName.js +278 -0
  40. package/src/degenerateDnaToAminoAcidMap.js +5 -0
  41. package/src/degenerateRnaToAminoAcidMap.js +5 -0
  42. package/src/deleteSequenceDataAtRange.js +5 -0
  43. package/src/deleteSequenceDataAtRange.test.js +146 -0
  44. package/src/diffUtils.js +64 -0
  45. package/src/diffUtils.test.js +74 -0
  46. package/src/doesEnzymeChopOutsideOfRecognitionSite.js +10 -0
  47. package/src/doesEnzymeChopOutsideOfRecognitionSite.test.js +41 -0
  48. package/src/featureTypesAndColors.js +152 -0
  49. package/src/featureTypesAndColors.test.js +52 -0
  50. package/src/filterAminoAcidSequenceString.js +13 -0
  51. package/src/filterAminoAcidSequenceString.test.js +22 -0
  52. package/src/filterSequenceString.js +22 -0
  53. package/src/filterSequenceString.test.js +13 -0
  54. package/src/findNearestRangeOfSequenceOverlapToPosition.js +39 -0
  55. package/src/findNearestRangeOfSequenceOverlapToPosition.test.js +31 -0
  56. package/src/findOrfsInPlasmid.js +26 -0
  57. package/src/findSequenceMatches.js +133 -0
  58. package/src/findSequenceMatches.test.js +286 -0
  59. package/src/generateAnnotations.js +34 -0
  60. package/src/generateSequenceData.js +206 -0
  61. package/src/generateSequenceData.test.js +22 -0
  62. package/src/getAllInsertionsInSeqReads.js +83 -0
  63. package/src/getAllInsertionsInSeqReads.test.js +26 -0
  64. package/src/getAminoAcidDataForEachBaseOfDna.js +163 -0
  65. package/src/getAminoAcidDataForEachBaseOfDna.test.js +424 -0
  66. package/src/getAminoAcidFromSequenceTriplet.js +22 -0
  67. package/src/getAminoAcidStringFromSequenceString.js +18 -0
  68. package/src/getAminoAcidStringFromSequenceString.test.js +18 -0
  69. package/src/getCodonRangeForAASliver.js +63 -0
  70. package/src/getComplementAminoAcidStringFromSequenceString.js +11 -0
  71. package/src/getComplementSequenceAndAnnotations.js +20 -0
  72. package/src/getComplementSequenceString.js +19 -0
  73. package/src/getComplementSequenceString.test.js +13 -0
  74. package/src/getCutsiteType.js +10 -0
  75. package/src/getCutsitesFromSequence.js +17 -0
  76. package/src/getDegenerateDnaStringFromAAString.js +8 -0
  77. package/src/getDegenerateRnaStringFromAAString.js +8 -0
  78. package/src/getDigestFragmentsForCutsites.js +105 -0
  79. package/src/getDigestFragmentsForRestrictionEnzymes.js +27 -0
  80. package/src/getDigestFragmentsForRestrictionEnzymes.test.js +228 -0
  81. package/src/getInsertBetweenVals.js +28 -0
  82. package/src/getInsertBetweenVals.test.js +33 -0
  83. package/src/getLeftAndRightOfSequenceInRangeGivenPosition.js +39 -0
  84. package/src/getLeftAndRightOfSequenceInRangeGivenPosition.test.js +80 -0
  85. package/src/getMassOfAaString.js +24 -0
  86. package/src/getMassofAaString.test.js +18 -0
  87. package/src/getOrfsFromSequence.js +124 -0
  88. package/src/getOrfsFromSequence.test.js +210 -0
  89. package/src/getOverlapBetweenTwoSequences.js +30 -0
  90. package/src/getOverlapBetweenTwoSequences.test.js +23 -0
  91. package/src/getPossiblePartsFromSequenceAndEnzymes.js +121 -0
  92. package/src/getPossiblePartsFromSequenceAndEnzymes.test.js +208 -0
  93. package/src/getReverseAminoAcidStringFromSequenceString.js +20 -0
  94. package/src/getReverseAminoAcidStringFromSequenceString.test.js +11 -0
  95. package/src/getReverseComplementAminoAcidStringFromSequenceString.js +7 -0
  96. package/src/getReverseComplementAnnotation.js +23 -0
  97. package/src/getReverseComplementAnnotation.test.js +44 -0
  98. package/src/getReverseComplementSequenceAndAnnotations.js +38 -0
  99. package/src/getReverseComplementSequenceAndAnnotations.test.js +105 -0
  100. package/src/getReverseComplementSequenceString.js +17 -0
  101. package/src/getReverseComplementSequenceString.test.js +11 -0
  102. package/src/getReverseSequenceString.js +12 -0
  103. package/src/getReverseSequenceString.test.js +9 -0
  104. package/src/getSequenceDataBetweenRange.js +131 -0
  105. package/src/getSequenceDataBetweenRange.test.js +474 -0
  106. package/src/getVirtualDigest.js +125 -0
  107. package/src/getVirtualDigest.test.js +134 -0
  108. package/src/guessIfSequenceIsDnaAndNotProtein.js +33 -0
  109. package/src/guessIfSequenceIsDnaAndNotProtein.test.js +34 -0
  110. package/src/index.js +106 -0
  111. package/src/index.test.js +38 -0
  112. package/src/insertGapsIntoRefSeq.js +38 -0
  113. package/src/insertGapsIntoRefSeq.test.js +20 -0
  114. package/src/insertSequenceDataAtPosition.js +2 -0
  115. package/src/insertSequenceDataAtPosition.test.js +75 -0
  116. package/src/insertSequenceDataAtPositionOrRange.js +249 -0
  117. package/src/insertSequenceDataAtPositionOrRange.test.js +547 -0
  118. package/src/isEnzymeType2S.js +3 -0
  119. package/src/mapAnnotationsToRows.js +174 -0
  120. package/src/mapAnnotationsToRows.test.js +425 -0
  121. package/src/prepareCircularViewData.js +17 -0
  122. package/src/prepareCircularViewData.test.js +196 -0
  123. package/src/prepareRowData.js +41 -0
  124. package/src/prepareRowData.test.js +36 -0
  125. package/src/prepareRowData_output1.json +391 -0
  126. package/src/proteinAlphabet.js +257 -0
  127. package/src/rotateBpsToPosition.js +13 -0
  128. package/src/rotateBpsToPosition.test.js +6 -0
  129. package/src/rotateSequenceDataToPosition.js +48 -0
  130. package/src/rotateSequenceDataToPosition.test.js +71 -0
  131. package/src/shiftAnnotationsByLen.js +17 -0
  132. package/src/threeLetterSequenceStringToAminoAcidMap.js +106 -0
  133. package/src/tidyUpAnnotation.js +182 -0
  134. package/src/tidyUpSequenceData.js +169 -0
  135. package/src/tidyUpSequenceData.test.js +332 -0
@@ -0,0 +1,296 @@
1
+ /* eslint-disable no-unused-expressions */
2
+
3
+
4
+ import chai from "chai";
5
+ import cutSequenceByRestrictionEnzyme from "./cutSequenceByRestrictionEnzyme.js";
6
+ import enzymeList from "./aliasedEnzymesByName";
7
+
8
+ const should = chai.should();
9
+ describe("a simple, palindromic enzyme", () => {
10
+ //bamhi
11
+ // "bamhi": {
12
+ // "name": "bamhi",
13
+ // "site": "ggatcdc",
14
+ // "forwardRegex": "g{2}atc{2}",
15
+ // "reverseRegex": "g{2}atc{2}",
16
+ // "topSnipOffset": 1,
17
+ // "bottomSnipOffset": 5
18
+ // },
19
+ // ATGATCAGA
20
+ // 012345678
21
+ it.skip("cuts on the reverse strand and the recognition site wraps the origin", () => {
22
+ const cutsites = cutSequenceByRestrictionEnzyme(
23
+ "gcatccagagagagagagagagagagagagaaga",
24
+ true,
25
+ enzymeList["sapi"]
26
+ );
27
+ cutsites.should.be.an("array");
28
+ cutsites.length.should.equal(1);
29
+ cutsites[0].start.should.equal(0);
30
+ cutsites[0].end.should.equal(5);
31
+ cutsites[0].recognitionSiteRange.start.should.equal(0);
32
+ cutsites[0].recognitionSiteRange.end.should.equal(5);
33
+ cutsites[0].topSnipPosition.should.equal(1);
34
+ cutsites[0].bottomSnipPosition.should.equal(5);
35
+ cutsites[0].topSnipBeforeBottom.should.equal(true);
36
+ should.not.exist(cutsites[0].upstreamTopSnip);
37
+ should.not.exist(cutsites[0].upstreamBottomSnip);
38
+ });
39
+ it("cuts a single non-circular cutsite", () => {
40
+ const cutsites = cutSequenceByRestrictionEnzyme(
41
+ "GGATCC",
42
+ true,
43
+ enzymeList["bamhi"]
44
+ );
45
+ cutsites.should.be.an("array");
46
+ cutsites.length.should.equal(1);
47
+ cutsites[0].start.should.equal(0);
48
+ cutsites[0].end.should.equal(5);
49
+ cutsites[0].recognitionSiteRange.start.should.equal(0);
50
+ cutsites[0].recognitionSiteRange.end.should.equal(5);
51
+ cutsites[0].topSnipPosition.should.equal(1);
52
+ cutsites[0].bottomSnipPosition.should.equal(5);
53
+ cutsites[0].topSnipBeforeBottom.should.equal(true);
54
+ should.not.exist(cutsites[0].upstreamTopSnip);
55
+ should.not.exist(cutsites[0].upstreamBottomSnip);
56
+ });
57
+ it("cuts a single circular cutsite", () => {
58
+ const cutsites = cutSequenceByRestrictionEnzyme(
59
+ "CCrrrrGGAT",
60
+ true,
61
+ enzymeList["bamhi"]
62
+ );
63
+ cutsites.should.be.an("array");
64
+ cutsites.length.should.equal(1);
65
+ cutsites[0].start.should.equal(6);
66
+ cutsites[0].end.should.equal(1);
67
+ cutsites[0].recognitionSiteRange.start.should.equal(6);
68
+ cutsites[0].recognitionSiteRange.end.should.equal(1);
69
+ cutsites[0].topSnipPosition.should.equal(7);
70
+ cutsites[0].bottomSnipPosition.should.equal(1);
71
+ should.not.exist(cutsites[0].upstreamTopSnip);
72
+ should.not.exist(cutsites[0].upstreamBottomSnip);
73
+ });
74
+ it("does not cut a circular cutsite if sequence is non-circular", () => {
75
+ const cutsites = cutSequenceByRestrictionEnzyme(
76
+ "ccrrrrggat",
77
+ false,
78
+ enzymeList["bamhi"]
79
+ );
80
+ cutsites.should.be.an("array");
81
+ cutsites.length.should.equal(0);
82
+ });
83
+ it("cuts multiple times", () => {
84
+ //bamhi
85
+ // "bamhi": {
86
+ // "name": "bamhi",
87
+ // "site": "ggatcdc",
88
+ // "forwardRegex": "g{2}atc{2}",
89
+ // "reverseRegex": "g{2}atc{2}",
90
+ // "topSnipOffset": 1,
91
+ // "bottomSnipOffset": 5
92
+ // },
93
+ const cutsites = cutSequenceByRestrictionEnzyme(
94
+ "ggatccttttggatcc",
95
+ true,
96
+ enzymeList["bamhi"]
97
+ );
98
+ cutsites.should.be.an("array");
99
+ cutsites.length.should.equal(2);
100
+ cutsites[0].start.should.equal(0);
101
+ cutsites[0].end.should.equal(5);
102
+ cutsites[0].recognitionSiteRange.start.should.equal(0);
103
+ cutsites[0].recognitionSiteRange.end.should.equal(5);
104
+ cutsites[0].topSnipPosition.should.equal(1);
105
+ cutsites[0].bottomSnipPosition.should.equal(5);
106
+ should.not.exist(cutsites[0].upstreamTopSnip);
107
+ should.not.exist(cutsites[0].upstreamBottomSnip);
108
+ cutsites[1].start.should.equal(10);
109
+ cutsites[1].end.should.equal(15);
110
+ cutsites[1].recognitionSiteRange.start.should.equal(10);
111
+ cutsites[1].recognitionSiteRange.end.should.equal(15);
112
+ cutsites[1].topSnipPosition.should.equal(11);
113
+ cutsites[1].bottomSnipPosition.should.equal(15);
114
+ should.not.exist(cutsites[1].upstreamTopSnip);
115
+ should.not.exist(cutsites[1].upstreamBottomSnip);
116
+ });
117
+ it("it does not get into an infinite loop if the enzyme's forward/reverse regex are empty strings", () => {
118
+ // ttttttttttttttttttttrccggyttttttttttttttttttttt
119
+ // 01234567890123456789012345678901234567890123456
120
+ const cutsites = cutSequenceByRestrictionEnzyme(
121
+ "rccggyttttttttttttttttttttt",
122
+ false,
123
+ {
124
+ name: "fake enzyme",
125
+ site: "ccgcgg",
126
+ forwardRegex: "",
127
+ reverseRegex: "",
128
+ topSnipOffset: 1,
129
+ bottomSnipOffset: 1
130
+ }
131
+ );
132
+ cutsites.should.be.an("array");
133
+ cutsites.length.should.equal(0);
134
+ cutsites.error.should.not.be.null;
135
+ cutsites.error.should.equal(
136
+ "Cannot cut sequence. Enzyme restriction site must be at least 1 bp long."
137
+ );
138
+ });
139
+ });
140
+ describe("non-palindromic enzyme", () => {
141
+ // "bsmbi": {
142
+ // "name": "BsmBI",
143
+ // "site": "cgtctc",
144
+ // "forwardRegex": "cgtctc",
145
+ // "reverseRegex": "gagacg",
146
+ // "topSnipOffset": 7,
147
+ // "bottomSnipOffset": 11
148
+ // },
149
+ //
150
+ it("does not cut if the enzyme cuts outside of a linear sequence", () => {
151
+ const cutsites = cutSequenceByRestrictionEnzyme(
152
+ "cgtctc",
153
+ false,
154
+ enzymeList["bsmbi"]
155
+ );
156
+ cutsites.should.be.an("array");
157
+ cutsites.length.should.equal(0);
158
+ });
159
+ it("does cut if the enzyme fits within circular sequence", () => {
160
+ const cutsites = cutSequenceByRestrictionEnzyme(
161
+ "cgtctc",
162
+ true,
163
+ enzymeList["bsmbi"]
164
+ );
165
+ cutsites.should.be.an("array");
166
+ cutsites.length.should.equal(1);
167
+ cutsites[0].start.should.equal(0);
168
+ cutsites[0].end.should.equal(4);
169
+ cutsites[0].recognitionSiteRange.start.should.equal(0);
170
+ cutsites[0].recognitionSiteRange.end.should.equal(5);
171
+ cutsites[0].topSnipPosition.should.equal(1);
172
+ cutsites[0].bottomSnipPosition.should.equal(5);
173
+ should.not.exist(cutsites[0].upstreamTopSnip);
174
+ });
175
+ it("does cut if the sequence is long enough", () => {
176
+ // 0123456 7890 12345678
177
+ // cgtctct tttt tttttttttttttttttt
178
+ // rrrrrr
179
+ // | dsTopSnip
180
+ // | dsBottomSnip
181
+ const cutsites = cutSequenceByRestrictionEnzyme(
182
+ "cgtctcttttttttttttttttttttttt",
183
+ true,
184
+ enzymeList["bsmbi"]
185
+ );
186
+ cutsites.should.be.an("array");
187
+ cutsites.length.should.equal(1);
188
+ cutsites[0].start.should.equal(0);
189
+ cutsites[0].end.should.equal(10);
190
+ cutsites[0].recognitionSiteRange.start.should.equal(0);
191
+ cutsites[0].recognitionSiteRange.end.should.equal(5);
192
+ cutsites[0].topSnipPosition.should.equal(7);
193
+ cutsites[0].bottomSnipPosition.should.equal(11);
194
+ should.not.exist(cutsites[0].upstreamTopSnip);
195
+ should.not.exist(cutsites[0].upstreamBottomSnip);
196
+ });
197
+ it("cuts on reverse strand", () => {
198
+ // 0123456 7890 12345678
199
+ // cgtctct tttt tttttttttttttttttt
200
+ // rrrrrr
201
+ // | dsTopSnip
202
+ // | dsBottomSnip
203
+ const cutsites = cutSequenceByRestrictionEnzyme(
204
+ "aaaaaaaaaaaaaaaaaaaaaaagagacg",
205
+ true,
206
+ enzymeList["bsmbi"]
207
+ );
208
+ cutsites.should.be.an("array");
209
+ cutsites.length.should.equal(1);
210
+ cutsites[0].start.should.equal(18);
211
+ cutsites[0].end.should.equal(28);
212
+ cutsites[0].recognitionSiteRange.start.should.equal(23);
213
+ cutsites[0].recognitionSiteRange.end.should.equal(28);
214
+ cutsites[0].topSnipPosition.should.equal(18);
215
+ cutsites[0].bottomSnipPosition.should.equal(22);
216
+ should.not.exist(cutsites[0].upstreamTopSnip);
217
+ should.not.exist(cutsites[0].upstreamBottomSnip);
218
+ });
219
+ });
220
+ describe("palindromic enzyme that cuts both upstream and downstream", () => {
221
+ // "nmedi": {
222
+ // "name": "NmeDI",
223
+ // "site": "rccggy",
224
+ // "forwardRegex": "[agr]c{2}g{2}[cty]",
225
+ // "reverseRegex": "[agr]c{2}g{2}[cty]",
226
+ // "cutsTwice": true,
227
+ // "topSnipOffset": 13,
228
+ // "bottomSnipOffset": 18
229
+ // },
230
+ it("does not cut if the enzyme cuts outside of a linear sequence", () => {
231
+ const cutsites = cutSequenceByRestrictionEnzyme(
232
+ "rccggy",
233
+ false,
234
+ enzymeList["nmedi"]
235
+ );
236
+ cutsites.should.be.an("array");
237
+ cutsites.length.should.equal(0);
238
+ });
239
+ it("does cut twice if the enzyme fits within linear sequence", () => {
240
+ // ttttttttttttttttttttrccggyttttttttttttttttttttt
241
+ // 01234567890123456789012345678901234567890123456
242
+ const cutsites = cutSequenceByRestrictionEnzyme(
243
+ "ttttttttttttttttttttrccggyttttttttttttttttttttt",
244
+ false,
245
+ enzymeList["nmedi"]
246
+ );
247
+ cutsites.should.be.an("array");
248
+ cutsites.length.should.equal(1);
249
+ cutsites[0].start.should.equal(8);
250
+ cutsites[0].end.should.equal(37);
251
+ cutsites[0].recognitionSiteRange.start.should.equal(20);
252
+ cutsites[0].recognitionSiteRange.end.should.equal(25);
253
+ cutsites[0].topSnipPosition.should.equal(33);
254
+ cutsites[0].bottomSnipPosition.should.equal(38);
255
+ cutsites[0].upstreamTopSnip.should.equal(12);
256
+ cutsites[0].upstreamBottomSnip.should.equal(7);
257
+ });
258
+ it("cuts only once if only the upstream cutting end fits within linear sequence", () => {
259
+ // ttttttttttttttttttttrccggyttttttttttttttttttttt
260
+ // 01234567890123456789012345678901234567890123456
261
+ const cutsites = cutSequenceByRestrictionEnzyme(
262
+ "ttttttttttttttttttttrccggy",
263
+ false,
264
+ enzymeList["nmedi"]
265
+ );
266
+ cutsites.should.be.an("array");
267
+ cutsites.length.should.equal(1);
268
+ cutsites[0].start.should.equal(8);
269
+ cutsites[0].end.should.equal(25);
270
+ cutsites[0].recognitionSiteRange.start.should.equal(20);
271
+ cutsites[0].recognitionSiteRange.end.should.equal(25);
272
+ should.not.exist(cutsites[0].topSnipPosition);
273
+ should.not.exist(cutsites[0].bottomSnipPosition);
274
+ cutsites[0].upstreamTopSnip.should.equal(12);
275
+ cutsites[0].upstreamBottomSnip.should.equal(7);
276
+ });
277
+ it("cuts only once if only the downstream cutting end fits within linear sequence", () => {
278
+ // ttttttttttttttttttttrccggyttttttttttttttttttttt
279
+ // 01234567890123456789012345678901234567890123456
280
+ const cutsites = cutSequenceByRestrictionEnzyme(
281
+ "rccggyttttttttttttttttttttt",
282
+ false,
283
+ enzymeList["nmedi"]
284
+ );
285
+ cutsites.should.be.an("array");
286
+ cutsites.length.should.equal(1);
287
+ cutsites[0].start.should.equal(0);
288
+ cutsites[0].end.should.equal(17);
289
+ cutsites[0].recognitionSiteRange.start.should.equal(0);
290
+ cutsites[0].recognitionSiteRange.end.should.equal(5);
291
+ cutsites[0].topSnipPosition.should.equal(13);
292
+ cutsites[0].bottomSnipPosition.should.equal(18);
293
+ should.not.exist(cutsites[0].upstreamTopSnip);
294
+ should.not.exist(cutsites[0].upstreamBottomSnip);
295
+ });
296
+ });
@@ -0,0 +1,278 @@
1
+ import aliasedEnzymesByName from "./aliasedEnzymesByName";
2
+
3
+ const defaultEnzymes = [
4
+ "aari",
5
+ "aatii",
6
+ "aaui",
7
+ "accebi",
8
+ "acci",
9
+ "accii",
10
+ "acciii",
11
+ "acsi",
12
+ "afai",
13
+ "aflii",
14
+ "alui",
15
+ "aor13hi",
16
+ "aor51hi",
17
+ "apai",
18
+ "apali",
19
+ "asci",
20
+ "asisi",
21
+ "asp35hi",
22
+ "asp713i",
23
+ "aspmi",
24
+ "atsi",
25
+ "atu1i",
26
+ "atu1ii",
27
+ "avrbi",
28
+ "avrii",
29
+ "bali",
30
+ "bamhi",
31
+ "banii",
32
+ "bari",
33
+ "baui",
34
+ "bbvbi",
35
+ "bcni",
36
+ "bcoki",
37
+ "bdii",
38
+ "bgli",
39
+ "bglii",
40
+ "blni",
41
+ "bme216i",
42
+ "bmet110i",
43
+ "bmgt120i",
44
+ "bmui",
45
+ "bnai",
46
+ "bpu1102i",
47
+ "bpuai",
48
+ "bpub5i",
49
+ "bsai",
50
+ "bsavi",
51
+ "bseri",
52
+ "bsgi",
53
+ "bshhi",
54
+ "bsiwi",
55
+ "bsmbi",
56
+ "bsmfi",
57
+ "bsofi",
58
+ "bsp105i",
59
+ "bsp1286i",
60
+ "bsp139i",
61
+ "bsp1407i",
62
+ "bsp4009i",
63
+ "bsp70i",
64
+ "bsp71i",
65
+ "bspa2i",
66
+ "bspci",
67
+ "bspfni",
68
+ "bspt104i",
69
+ "bspt107i",
70
+ "bsrfi",
71
+ "bsshii",
72
+ "bst1107i",
73
+ "bstb7si",
74
+ "bsthi",
75
+ "bstiz316i",
76
+ "bstli",
77
+ "bstpi",
78
+ "bstri",
79
+ "bstxi",
80
+ "bsu1532i",
81
+ "bsu8565i",
82
+ "bsu90i",
83
+ "btgai",
84
+ "btsci",
85
+ "btsi",
86
+ "bvei",
87
+ "ccini",
88
+ "ccop95i",
89
+ "ceqi",
90
+ "cfr10i",
91
+ "cfr45i",
92
+ "cfr47i",
93
+ "cfr6i",
94
+ "cjuii",
95
+ "clai",
96
+ "cpaai",
97
+ "cpoi",
98
+ "cspai",
99
+ "cspci",
100
+ "ddei",
101
+ "dpni",
102
+ "drai",
103
+ "dsai",
104
+ "dsavi",
105
+ "eaei",
106
+ "eagi",
107
+ "eam1105i",
108
+ "ecidi",
109
+ "ecl37i",
110
+ "eco211i",
111
+ "eco240i",
112
+ "eco241i",
113
+ "eco246i",
114
+ "eco247i",
115
+ "eco52i",
116
+ "eco68i",
117
+ "eco81i",
118
+ "eco93i",
119
+ "ecoicri",
120
+ "ecoo109i",
121
+ "ecoo65i",
122
+ "ecopi",
123
+ "ecoprri",
124
+ "ecori",
125
+ "ecorv",
126
+ "ecot14i",
127
+ "ecot22i",
128
+ "ecoviii",
129
+ "ehei",
130
+ "esphk22i",
131
+ "fbai",
132
+ "fdiii",
133
+ "foki",
134
+ "fsei",
135
+ "haeii",
136
+ "haeiii",
137
+ "hapii",
138
+ "hgiai",
139
+ "hgibi",
140
+ "hhai",
141
+ "hin1i",
142
+ "hincii",
143
+ "hindiii",
144
+ "hinfi",
145
+ "hpai",
146
+ "hpyf13iii",
147
+ "hpyf19ii",
148
+ "hpyf21i",
149
+ "hpyf28i",
150
+ "hpyf29i",
151
+ "hpyf36i",
152
+ "hpyf62i",
153
+ "hpyf65i",
154
+ "hpyii",
155
+ "koyi",
156
+ "kpni",
157
+ "m.bbu297i",
158
+ "m.pmudam",
159
+ "maek81i",
160
+ "mboi",
161
+ "mboii",
162
+ "mfli",
163
+ "mizi",
164
+ "mlui",
165
+ "mph1103ii",
166
+ "msei",
167
+ "msii",
168
+ "mspi",
169
+ "mthai",
170
+ "muni",
171
+ "naei",
172
+ "ncoi",
173
+ "ndai",
174
+ "ndei",
175
+ "nflaii",
176
+ "ngbi",
177
+ "ngobviii",
178
+ "ngodviii",
179
+ "ngoeii",
180
+ "ngotii",
181
+ "nhei",
182
+ "nlaiv",
183
+ "noci",
184
+ "noti",
185
+ "novii",
186
+ "nrui",
187
+ "nsbi",
188
+ "nsici",
189
+ "nsp29132i",
190
+ "paci",
191
+ "pae17ki",
192
+ "pca17ai",
193
+ "pfaaiii",
194
+ "pfl16i",
195
+ "ple214i",
196
+ "pmaci",
197
+ "pmei",
198
+ "pru2i",
199
+ "psb9879i",
200
+ "pshai",
201
+ "pshbi",
202
+ "psp1406i",
203
+ "psp31i",
204
+ "psp33i",
205
+ "psp5i",
206
+ "psti",
207
+ "psuni",
208
+ "pvui",
209
+ "pvuii",
210
+ "ral8i",
211
+ "rsplki",
212
+ "saci",
213
+ "sacii",
214
+ "sali",
215
+ "sapi",
216
+ "sau3ai",
217
+ "sauni",
218
+ "sbai",
219
+ "sbfi",
220
+ "scai",
221
+ "sfii",
222
+ "sflhk115731i",
223
+ "slu1777i",
224
+ "smai",
225
+ "smii",
226
+ "snabi",
227
+ "spei",
228
+ "sphi",
229
+ "srfi",
230
+ "srl61di",
231
+ "sse8387i",
232
+ "ssp2i",
233
+ "sspi",
234
+ "stui",
235
+ "suii",
236
+ "swai",
237
+ "taqi",
238
+ "tauii",
239
+ "tsci",
240
+ "tth111i",
241
+ "tthhb8i",
242
+ "uba1093i",
243
+ "uba1095i",
244
+ "uba1122i",
245
+ "uba1160i",
246
+ "uba1229i",
247
+ "uba1371i",
248
+ "uba1380i",
249
+ "uba1403i",
250
+ "uba1415i",
251
+ "uba1437i",
252
+ "uba1439i",
253
+ "uba1440i",
254
+ "uba36i",
255
+ "uba41i",
256
+ "uba42i",
257
+ "uba89i",
258
+ "uban13i",
259
+ "van91i",
260
+ "vcho66i",
261
+ "vpak11bi",
262
+ "vpakutji",
263
+ "xbai",
264
+ "xcyi",
265
+ "xhoi",
266
+ "xmai",
267
+ "xmli",
268
+ "xphi",
269
+ "xspi"
270
+ ];
271
+
272
+ const defaultEnzymesByName = {};
273
+
274
+ defaultEnzymes.forEach(name => {
275
+ defaultEnzymesByName[name] = aliasedEnzymesByName[name];
276
+ });
277
+
278
+ export default defaultEnzymesByName;
@@ -0,0 +1,5 @@
1
+ import {invert} from "lodash";
2
+ import aminoAcidToDegenerateDnaMap from "./aminoAcidToDegenerateDnaMap";
3
+
4
+ const degenerateDnaToAminoAcidMap = invert(aminoAcidToDegenerateDnaMap);
5
+ export default degenerateDnaToAminoAcidMap;
@@ -0,0 +1,5 @@
1
+ import {invert} from "lodash";
2
+ import aminoAcidToDegenerateRnaMap from "./aminoAcidToDegenerateRnaMap";
3
+
4
+ const degenerateRnaToAminoAcidMap = invert(aminoAcidToDegenerateRnaMap);
5
+ export default degenerateRnaToAminoAcidMap;
@@ -0,0 +1,5 @@
1
+ import insertSequenceDataAtPositionOrRange from "./insertSequenceDataAtPositionOrRange";
2
+
3
+ export default function deleteSequenceDataAtRange(sequenceData, range) {
4
+ return insertSequenceDataAtPositionOrRange({}, sequenceData, range);
5
+ };