@teselagen/sequence-utils 0.1.21 → 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.
- package/index.js +12030 -26126
- package/index.mjs +12119 -26124
- package/index.umd.js +24056 -38154
- package/package.json +2 -2
- package/src/DNAComplementMap.js +32 -0
- package/src/addGapsToSeqReads.js +417 -0
- package/src/addGapsToSeqReads.test.js +358 -0
- package/src/adjustAnnotationsToInsert.js +19 -0
- package/src/adjustBpsToReplaceOrInsert.js +50 -0
- package/src/adjustBpsToReplaceOrInsert.test.js +59 -0
- package/src/aliasedEnzymesByName.js +7363 -0
- package/src/aminoAcidToDegenerateDnaMap.js +32 -0
- package/src/aminoAcidToDegenerateRnaMap.js +32 -0
- package/src/aminoAcidToDnaRna.test.js +27 -0
- package/src/annotateSingleSeq.js +29 -0
- package/src/annotateSingleSeq.test.js +64 -0
- package/src/annotationTypes.js +23 -0
- package/src/autoAnnotate.js +242 -0
- package/src/autoAnnotate.test.js +1039 -0
- package/src/bioData.js +431 -0
- package/src/calculateNebTa.js +34 -0
- package/src/calculateNebTa.test.js +57 -0
- package/src/calculateNebTm.js +127 -0
- package/src/calculateNebTm.test.js +32 -0
- package/src/calculatePercentGC.js +3 -0
- package/src/calculatePercentGC.test.js +14 -0
- package/src/calculateTm.js +297 -0
- package/src/calculateTm.test.js +7 -0
- package/src/computeDigestFragments.js +179 -0
- package/src/computeDigestFragments.test.js +73 -0
- package/src/condensePairwiseAlignmentDifferences.js +85 -0
- package/src/condensePairwiseAlignmentDifferences.test.js +66 -0
- package/src/convertAACaretPositionOrRangeToDna.js +24 -0
- package/src/convertAACaretPositionOrRangeToDna.test.js +34 -0
- package/src/convertDnaCaretPositionOrRangeToAA.js +24 -0
- package/src/convertDnaCaretPositionOrRangeToAA.test.js +37 -0
- package/src/cutSequenceByRestrictionEnzyme.js +301 -0
- package/src/cutSequenceByRestrictionEnzyme.test.js +296 -0
- package/src/defaultEnzymesByName.js +278 -0
- package/src/degenerateDnaToAminoAcidMap.js +5 -0
- package/src/degenerateRnaToAminoAcidMap.js +5 -0
- package/src/deleteSequenceDataAtRange.js +5 -0
- package/src/deleteSequenceDataAtRange.test.js +146 -0
- package/src/diffUtils.js +64 -0
- package/src/diffUtils.test.js +74 -0
- package/src/doesEnzymeChopOutsideOfRecognitionSite.js +10 -0
- package/src/doesEnzymeChopOutsideOfRecognitionSite.test.js +41 -0
- package/src/featureTypesAndColors.js +152 -0
- package/src/featureTypesAndColors.test.js +52 -0
- package/src/filterAminoAcidSequenceString.js +13 -0
- package/src/filterAminoAcidSequenceString.test.js +22 -0
- package/src/filterSequenceString.js +22 -0
- package/src/filterSequenceString.test.js +13 -0
- package/src/findNearestRangeOfSequenceOverlapToPosition.js +39 -0
- package/src/findNearestRangeOfSequenceOverlapToPosition.test.js +31 -0
- package/src/findOrfsInPlasmid.js +26 -0
- package/src/findSequenceMatches.js +133 -0
- package/src/findSequenceMatches.test.js +286 -0
- package/src/generateAnnotations.js +34 -0
- package/src/generateSequenceData.js +206 -0
- package/src/generateSequenceData.test.js +22 -0
- package/src/getAllInsertionsInSeqReads.js +83 -0
- package/src/getAllInsertionsInSeqReads.test.js +26 -0
- package/src/getAminoAcidDataForEachBaseOfDna.js +163 -0
- package/src/getAminoAcidDataForEachBaseOfDna.test.js +424 -0
- package/src/getAminoAcidFromSequenceTriplet.js +22 -0
- package/src/getAminoAcidStringFromSequenceString.js +18 -0
- package/src/getAminoAcidStringFromSequenceString.test.js +18 -0
- package/src/getCodonRangeForAASliver.js +63 -0
- package/src/getComplementAminoAcidStringFromSequenceString.js +11 -0
- package/src/getComplementSequenceAndAnnotations.js +20 -0
- package/src/getComplementSequenceString.js +19 -0
- package/src/getComplementSequenceString.test.js +13 -0
- package/src/getCutsiteType.js +10 -0
- package/src/getCutsitesFromSequence.js +17 -0
- package/src/getDegenerateDnaStringFromAAString.js +8 -0
- package/src/getDegenerateRnaStringFromAAString.js +8 -0
- package/src/getDigestFragmentsForCutsites.js +105 -0
- package/src/getDigestFragmentsForRestrictionEnzymes.js +27 -0
- package/src/getDigestFragmentsForRestrictionEnzymes.test.js +228 -0
- package/src/getInsertBetweenVals.js +28 -0
- package/src/getInsertBetweenVals.test.js +33 -0
- package/src/getLeftAndRightOfSequenceInRangeGivenPosition.js +39 -0
- package/src/getLeftAndRightOfSequenceInRangeGivenPosition.test.js +80 -0
- package/src/getMassOfAaString.js +24 -0
- package/src/getMassofAaString.test.js +18 -0
- package/src/getOrfsFromSequence.js +124 -0
- package/src/getOrfsFromSequence.test.js +210 -0
- package/src/getOverlapBetweenTwoSequences.js +30 -0
- package/src/getOverlapBetweenTwoSequences.test.js +23 -0
- package/src/getPossiblePartsFromSequenceAndEnzymes.js +121 -0
- package/src/getPossiblePartsFromSequenceAndEnzymes.test.js +208 -0
- package/src/getReverseAminoAcidStringFromSequenceString.js +20 -0
- package/src/getReverseAminoAcidStringFromSequenceString.test.js +11 -0
- package/src/getReverseComplementAminoAcidStringFromSequenceString.js +7 -0
- package/src/getReverseComplementAnnotation.js +23 -0
- package/src/getReverseComplementAnnotation.test.js +44 -0
- package/src/getReverseComplementSequenceAndAnnotations.js +38 -0
- package/src/getReverseComplementSequenceAndAnnotations.test.js +105 -0
- package/src/getReverseComplementSequenceString.js +17 -0
- package/src/getReverseComplementSequenceString.test.js +11 -0
- package/src/getReverseSequenceString.js +12 -0
- package/src/getReverseSequenceString.test.js +9 -0
- package/src/getSequenceDataBetweenRange.js +131 -0
- package/src/getSequenceDataBetweenRange.test.js +474 -0
- package/src/getVirtualDigest.js +125 -0
- package/src/getVirtualDigest.test.js +134 -0
- package/src/guessIfSequenceIsDnaAndNotProtein.js +33 -0
- package/src/guessIfSequenceIsDnaAndNotProtein.test.js +34 -0
- package/src/index.js +106 -0
- package/src/index.test.js +38 -0
- package/src/insertGapsIntoRefSeq.js +38 -0
- package/src/insertGapsIntoRefSeq.test.js +20 -0
- package/src/insertSequenceDataAtPosition.js +2 -0
- package/src/insertSequenceDataAtPosition.test.js +75 -0
- package/src/insertSequenceDataAtPositionOrRange.js +249 -0
- package/src/insertSequenceDataAtPositionOrRange.test.js +547 -0
- package/src/isEnzymeType2S.js +3 -0
- package/src/mapAnnotationsToRows.js +174 -0
- package/src/mapAnnotationsToRows.test.js +425 -0
- package/src/prepareCircularViewData.js +17 -0
- package/src/prepareCircularViewData.test.js +196 -0
- package/src/prepareRowData.js +41 -0
- package/src/prepareRowData.test.js +36 -0
- package/src/prepareRowData_output1.json +391 -0
- package/src/proteinAlphabet.js +257 -0
- package/src/rotateBpsToPosition.js +13 -0
- package/src/rotateBpsToPosition.test.js +6 -0
- package/src/rotateSequenceDataToPosition.js +48 -0
- package/src/rotateSequenceDataToPosition.test.js +71 -0
- package/src/shiftAnnotationsByLen.js +17 -0
- package/src/threeLetterSequenceStringToAminoAcidMap.js +106 -0
- package/src/tidyUpAnnotation.js +182 -0
- package/src/tidyUpSequenceData.js +169 -0
- 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;
|