@teselagen/sequence-utils 0.3.7 → 0.3.9
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/README.md +89 -0
- package/bioData.d.ts +1 -339
- package/filterSequenceString.d.ts +26 -1
- package/index.d.ts +7 -8
- package/index.js +329 -413
- package/index.mjs +329 -413
- package/index.umd.js +329 -413
- package/package.json +1 -2
- package/src/addGapsToSeqReads.js +2 -2
- package/src/adjustAnnotationsToInsert.js +3 -3
- package/src/adjustBpsToReplaceOrInsert.js +3 -3
- package/src/adjustBpsToReplaceOrInsert.test.js +0 -1
- package/src/aminoAcidToDnaRna.test.js +1 -1
- package/src/annotateSingleSeq.js +1 -1
- package/src/annotateSingleSeq.test.js +1 -4
- package/src/autoAnnotate.js +5 -2
- package/src/autoAnnotate.test.js +6 -30
- package/src/bioData.js +1 -366
- package/src/calculateNebTa.js +1 -1
- package/src/calculateNebTm.js +1 -1
- package/src/calculatePercentGC.js +2 -2
- package/src/calculateTm.js +19 -102
- package/src/computeDigestFragments.js +7 -4
- package/src/computeDigestFragments.test.js +1 -1
- package/src/condensePairwiseAlignmentDifferences.js +1 -1
- package/src/convertAACaretPositionOrRangeToDna.js +1 -1
- package/src/convertDnaCaretPositionOrRangeToAA.js +1 -1
- package/src/cutSequenceByRestrictionEnzyme.js +3 -3
- package/src/cutSequenceByRestrictionEnzyme.test.js +0 -1
- package/src/degenerateDnaToAminoAcidMap.js +1 -1
- package/src/degenerateRnaToAminoAcidMap.js +1 -1
- package/src/deleteSequenceDataAtRange.js +1 -1
- package/src/deleteSequenceDataAtRange.test.js +23 -9
- package/src/diffUtils.js +4 -4
- package/src/diffUtils.test.js +2 -2
- package/src/doesEnzymeChopOutsideOfRecognitionSite.js +1 -1
- package/src/doesEnzymeChopOutsideOfRecognitionSite.test.js +0 -2
- package/src/featureTypesAndColors.js +5 -5
- package/src/featureTypesAndColors.test.js +1 -1
- package/src/filterSequenceString.js +111 -16
- package/src/filterSequenceString.test.js +62 -3
- package/src/findNearestRangeOfSequenceOverlapToPosition.js +1 -1
- package/src/findOrfsInPlasmid.js +1 -1
- package/src/findSequenceMatches.js +9 -10
- package/src/generateAnnotations.js +1 -1
- package/src/generateSequenceData.js +1 -1
- package/src/generateSequenceData.test.js +1 -1
- package/src/getAllInsertionsInSeqReads.js +1 -1
- package/src/getAminoAcidDataForEachBaseOfDna.js +2 -2
- package/src/getAminoAcidDataForEachBaseOfDna.test.js +0 -2
- package/src/getAminoAcidFromSequenceTriplet.js +1 -1
- package/src/getAminoAcidStringFromSequenceString.js +1 -1
- package/src/getCodonRangeForAASliver.js +1 -1
- package/src/getComplementAminoAcidStringFromSequenceString.js +2 -5
- package/src/getComplementSequenceAndAnnotations.js +1 -2
- package/src/getComplementSequenceString.js +5 -3
- package/src/getComplementSequenceString.test.js +6 -6
- package/src/getCutsiteType.js +1 -1
- package/src/getCutsitesFromSequence.js +1 -1
- package/src/getDegenerateDnaStringFromAAString.js +1 -1
- package/src/getDegenerateRnaStringFromAAString.js +1 -1
- package/src/getDigestFragmentsForCutsites.js +5 -2
- package/src/getDigestFragmentsForRestrictionEnzymes.js +2 -2
- package/src/getInsertBetweenVals.js +2 -2
- package/src/getLeftAndRightOfSequenceInRangeGivenPosition.js +2 -2
- package/src/getLeftAndRightOfSequenceInRangeGivenPosition.test.js +0 -2
- package/src/getMassOfAaString.js +4 -1
- package/src/getMassofAaString.test.js +9 -8
- package/src/getOrfsFromSequence.js +1 -2
- package/src/getOrfsFromSequence.test.js +1 -3
- package/src/getOverlapBetweenTwoSequences.js +3 -3
- package/src/getOverlapBetweenTwoSequences.test.js +1 -1
- package/src/getPossiblePartsFromSequenceAndEnzymes.js +2 -2
- package/src/getReverseAminoAcidStringFromSequenceString.js +1 -1
- package/src/getReverseComplementAminoAcidStringFromSequenceString.js +9 -6
- package/src/getReverseComplementAnnotation.js +1 -1
- package/src/getReverseComplementSequenceAndAnnotations.js +2 -3
- package/src/getReverseComplementSequenceString.js +1 -2
- package/src/getReverseSequenceString.js +1 -1
- package/src/getSequenceDataBetweenRange.js +7 -4
- package/src/getSequenceDataBetweenRange.test.js +0 -1
- package/src/getVirtualDigest.js +6 -3
- package/src/guessIfSequenceIsDnaAndNotProtein.js +2 -2
- package/src/index.js +79 -80
- package/src/index.test.js +5 -4
- package/src/insertGapsIntoRefSeq.js +1 -1
- package/src/insertSequenceDataAtPosition.test.js +4 -2
- package/src/insertSequenceDataAtPositionOrRange.js +5 -5
- package/src/insertSequenceDataAtPositionOrRange.test.js +3 -17
- package/src/isEnzymeType2S.js +1 -1
- package/src/mapAnnotationsToRows.js +3 -3
- package/src/mapAnnotationsToRows.test.js +1 -3
- package/src/prepareCircularViewData.js +5 -5
- package/src/prepareCircularViewData.test.js +1 -1
- package/src/prepareRowData.js +1 -2
- package/src/prepareRowData.test.js +1 -3
- package/src/prepareRowData_output1.json +381 -381
- package/src/proteinAlphabet.js +31 -26
- package/src/rotateBpsToPosition.js +7 -11
- package/src/rotateBpsToPosition.test.js +6 -6
- package/src/rotateSequenceDataToPosition.js +4 -4
- package/src/shiftAnnotationsByLen.js +2 -2
- package/src/tidyUpAnnotation.js +8 -7
- package/src/tidyUpSequenceData.js +15 -18
- package/filterAminoAcidSequenceString.d.ts +0 -1
- package/filterAminoAcidSequenceString.test.d.ts +0 -1
- package/src/filterAminoAcidSequenceString.js +0 -13
- package/src/filterAminoAcidSequenceString.test.js +0 -22
package/index.js
CHANGED
|
@@ -5999,31 +5999,8 @@ lodash.exports;
|
|
|
5999
5999
|
})(lodash, lodash.exports);
|
|
6000
6000
|
var lodashExports = lodash.exports;
|
|
6001
6001
|
const protein_letters = "ACDEFGHIKLMNPQRSTVWY";
|
|
6002
|
+
const protein_letters_withUandX = "ACDEFGHIKLMNPQRSTVWYUX";
|
|
6002
6003
|
const extended_protein_letters = "ACDEFGHIKLMNPQRSTVWYBXZJUO.*-";
|
|
6003
|
-
const protein_letters_1to3 = {
|
|
6004
|
-
A: "Ala",
|
|
6005
|
-
C: "Cys",
|
|
6006
|
-
D: "Asp",
|
|
6007
|
-
E: "Glu",
|
|
6008
|
-
F: "Phe",
|
|
6009
|
-
G: "Gly",
|
|
6010
|
-
H: "His",
|
|
6011
|
-
I: "Ile",
|
|
6012
|
-
K: "Lys",
|
|
6013
|
-
L: "Leu",
|
|
6014
|
-
M: "Met",
|
|
6015
|
-
N: "Asn",
|
|
6016
|
-
P: "Pro",
|
|
6017
|
-
Q: "Gln",
|
|
6018
|
-
R: "Arg",
|
|
6019
|
-
S: "Ser",
|
|
6020
|
-
T: "Thr",
|
|
6021
|
-
V: "Val",
|
|
6022
|
-
W: "Trp",
|
|
6023
|
-
Y: "Tyr",
|
|
6024
|
-
O: "Pyl",
|
|
6025
|
-
U: "Sec"
|
|
6026
|
-
};
|
|
6027
6004
|
const ambiguous_dna_letters = "GATCRYWSMKHBVDN";
|
|
6028
6005
|
const unambiguous_dna_letters = "GATC";
|
|
6029
6006
|
const ambiguous_rna_letters = "GAUCRYWSMKHBVDN";
|
|
@@ -6048,135 +6025,6 @@ const ambiguous_dna_values = {
|
|
|
6048
6025
|
X: "GATC",
|
|
6049
6026
|
N: "GATC"
|
|
6050
6027
|
};
|
|
6051
|
-
const ambiguous_rna_values = {
|
|
6052
|
-
".": ".",
|
|
6053
|
-
A: "A",
|
|
6054
|
-
C: "C",
|
|
6055
|
-
G: "G",
|
|
6056
|
-
U: "U",
|
|
6057
|
-
M: "AC",
|
|
6058
|
-
R: "AG",
|
|
6059
|
-
W: "AU",
|
|
6060
|
-
S: "CG",
|
|
6061
|
-
Y: "CU",
|
|
6062
|
-
K: "GU",
|
|
6063
|
-
V: "ACG",
|
|
6064
|
-
H: "ACU",
|
|
6065
|
-
D: "AGU",
|
|
6066
|
-
B: "CGU",
|
|
6067
|
-
X: "GAUC",
|
|
6068
|
-
N: "GAUC"
|
|
6069
|
-
};
|
|
6070
|
-
const ambiguous_dna_complement = {
|
|
6071
|
-
".": ".",
|
|
6072
|
-
A: "T",
|
|
6073
|
-
C: "G",
|
|
6074
|
-
G: "C",
|
|
6075
|
-
T: "A",
|
|
6076
|
-
M: "K",
|
|
6077
|
-
R: "Y",
|
|
6078
|
-
W: "W",
|
|
6079
|
-
S: "S",
|
|
6080
|
-
Y: "R",
|
|
6081
|
-
K: "M",
|
|
6082
|
-
V: "B",
|
|
6083
|
-
H: "D",
|
|
6084
|
-
D: "H",
|
|
6085
|
-
B: "V",
|
|
6086
|
-
X: "X",
|
|
6087
|
-
N: "N"
|
|
6088
|
-
};
|
|
6089
|
-
const ambiguous_rna_complement = {
|
|
6090
|
-
".": ".",
|
|
6091
|
-
A: "U",
|
|
6092
|
-
C: "G",
|
|
6093
|
-
G: "C",
|
|
6094
|
-
U: "A",
|
|
6095
|
-
M: "K",
|
|
6096
|
-
R: "Y",
|
|
6097
|
-
W: "W",
|
|
6098
|
-
S: "S",
|
|
6099
|
-
Y: "R",
|
|
6100
|
-
K: "M",
|
|
6101
|
-
V: "B",
|
|
6102
|
-
H: "D",
|
|
6103
|
-
D: "H",
|
|
6104
|
-
B: "V",
|
|
6105
|
-
X: "X",
|
|
6106
|
-
N: "N"
|
|
6107
|
-
};
|
|
6108
|
-
const unambiguous_dna_weights = {
|
|
6109
|
-
A: 331.2218,
|
|
6110
|
-
C: 307.1971,
|
|
6111
|
-
G: 347.2212,
|
|
6112
|
-
T: 322.2085
|
|
6113
|
-
};
|
|
6114
|
-
const monoisotopic_unambiguous_dna_weights = {
|
|
6115
|
-
A: 331.06817,
|
|
6116
|
-
C: 307.056936,
|
|
6117
|
-
G: 347.063084,
|
|
6118
|
-
T: 322.056602
|
|
6119
|
-
};
|
|
6120
|
-
const unambiguous_rna_weights = {
|
|
6121
|
-
A: 347.2212,
|
|
6122
|
-
C: 323.1965,
|
|
6123
|
-
G: 363.2206,
|
|
6124
|
-
U: 324.1813
|
|
6125
|
-
};
|
|
6126
|
-
const monoisotopic_unambiguous_rna_weights = {
|
|
6127
|
-
A: 347.063084,
|
|
6128
|
-
C: 323.051851,
|
|
6129
|
-
G: 363.057999,
|
|
6130
|
-
U: 324.035867
|
|
6131
|
-
};
|
|
6132
|
-
const protein_weights = {
|
|
6133
|
-
A: 89.0932,
|
|
6134
|
-
C: 121.1582,
|
|
6135
|
-
D: 133.1027,
|
|
6136
|
-
E: 147.1293,
|
|
6137
|
-
F: 165.1891,
|
|
6138
|
-
G: 75.0666,
|
|
6139
|
-
H: 155.1546,
|
|
6140
|
-
I: 131.1729,
|
|
6141
|
-
K: 146.1876,
|
|
6142
|
-
L: 131.1729,
|
|
6143
|
-
M: 149.2113,
|
|
6144
|
-
N: 132.1179,
|
|
6145
|
-
O: 255.3134,
|
|
6146
|
-
P: 115.1305,
|
|
6147
|
-
Q: 146.1445,
|
|
6148
|
-
R: 174.201,
|
|
6149
|
-
S: 105.0926,
|
|
6150
|
-
T: 119.1192,
|
|
6151
|
-
U: 168.0532,
|
|
6152
|
-
V: 117.1463,
|
|
6153
|
-
W: 204.2252,
|
|
6154
|
-
Y: 181.1885
|
|
6155
|
-
};
|
|
6156
|
-
const monoisotopic_protein_weights = {
|
|
6157
|
-
A: 89.047678,
|
|
6158
|
-
C: 121.019749,
|
|
6159
|
-
D: 133.037508,
|
|
6160
|
-
E: 147.053158,
|
|
6161
|
-
F: 165.078979,
|
|
6162
|
-
G: 75.032028,
|
|
6163
|
-
H: 155.069477,
|
|
6164
|
-
I: 131.094629,
|
|
6165
|
-
K: 146.105528,
|
|
6166
|
-
L: 131.094629,
|
|
6167
|
-
M: 149.051049,
|
|
6168
|
-
N: 132.053492,
|
|
6169
|
-
O: 255.158292,
|
|
6170
|
-
P: 115.063329,
|
|
6171
|
-
Q: 146.069142,
|
|
6172
|
-
R: 174.111676,
|
|
6173
|
-
S: 105.042593,
|
|
6174
|
-
T: 119.058243,
|
|
6175
|
-
U: 168.964203,
|
|
6176
|
-
V: 117.078979,
|
|
6177
|
-
W: 204.089878,
|
|
6178
|
-
Y: 181.073893
|
|
6179
|
-
};
|
|
6180
6028
|
const extended_protein_values = {
|
|
6181
6029
|
A: "A",
|
|
6182
6030
|
B: "ND",
|
|
@@ -6211,140 +6059,18 @@ const extended_protein_values = {
|
|
|
6211
6059
|
".": "\\.\\.",
|
|
6212
6060
|
"-": "\\-"
|
|
6213
6061
|
};
|
|
6214
|
-
const atom_weights = {
|
|
6215
|
-
H: 1.00794,
|
|
6216
|
-
D: 2.0141,
|
|
6217
|
-
He: 4.002602,
|
|
6218
|
-
Li: 6.941,
|
|
6219
|
-
Be: 9.012182,
|
|
6220
|
-
B: 10.811,
|
|
6221
|
-
C: 12.0107,
|
|
6222
|
-
N: 14.0067,
|
|
6223
|
-
O: 15.9994,
|
|
6224
|
-
F: 18.9984032,
|
|
6225
|
-
Ne: 20.1797,
|
|
6226
|
-
Na: 22.98977,
|
|
6227
|
-
Mg: 24.305,
|
|
6228
|
-
Al: 26.981538,
|
|
6229
|
-
Si: 28.0855,
|
|
6230
|
-
P: 30.973761,
|
|
6231
|
-
S: 32.065,
|
|
6232
|
-
Cl: 35.453,
|
|
6233
|
-
Ar: 39.948,
|
|
6234
|
-
K: 39.0983,
|
|
6235
|
-
Ca: 40.078,
|
|
6236
|
-
Sc: 44.95591,
|
|
6237
|
-
Ti: 47.867,
|
|
6238
|
-
V: 50.9415,
|
|
6239
|
-
Cr: 51.9961,
|
|
6240
|
-
Mn: 54.938049,
|
|
6241
|
-
Fe: 55.845,
|
|
6242
|
-
Co: 58.9332,
|
|
6243
|
-
Ni: 58.6934,
|
|
6244
|
-
Cu: 63.546,
|
|
6245
|
-
Zn: 65.39,
|
|
6246
|
-
Ga: 69.723,
|
|
6247
|
-
Ge: 72.64,
|
|
6248
|
-
As: 74.9216,
|
|
6249
|
-
Se: 78.96,
|
|
6250
|
-
Br: 79.904,
|
|
6251
|
-
Kr: 83.8,
|
|
6252
|
-
Rb: 85.4678,
|
|
6253
|
-
Sr: 87.62,
|
|
6254
|
-
Y: 88.90585,
|
|
6255
|
-
Zr: 91.224,
|
|
6256
|
-
Nb: 92.90638,
|
|
6257
|
-
Mo: 95.94,
|
|
6258
|
-
Tc: 98,
|
|
6259
|
-
Ru: 101.07,
|
|
6260
|
-
Rh: 102.9055,
|
|
6261
|
-
Pd: 106.42,
|
|
6262
|
-
Ag: 107.8682,
|
|
6263
|
-
Cd: 112.411,
|
|
6264
|
-
In: 114.818,
|
|
6265
|
-
Sn: 118.71,
|
|
6266
|
-
Sb: 121.76,
|
|
6267
|
-
Te: 127.6,
|
|
6268
|
-
I: 126.90447,
|
|
6269
|
-
Xe: 131.293,
|
|
6270
|
-
Cs: 132.90545,
|
|
6271
|
-
Ba: 137.327,
|
|
6272
|
-
La: 138.9055,
|
|
6273
|
-
Ce: 140.116,
|
|
6274
|
-
Pr: 140.90765,
|
|
6275
|
-
Nd: 144.24,
|
|
6276
|
-
Pm: 145,
|
|
6277
|
-
Sm: 150.36,
|
|
6278
|
-
Eu: 151.964,
|
|
6279
|
-
Gd: 157.25,
|
|
6280
|
-
Tb: 158.92534,
|
|
6281
|
-
Dy: 162.5,
|
|
6282
|
-
Ho: 164.93032,
|
|
6283
|
-
Er: 167.259,
|
|
6284
|
-
Tm: 168.93421,
|
|
6285
|
-
Yb: 173.04,
|
|
6286
|
-
Lu: 174.967,
|
|
6287
|
-
Hf: 178.49,
|
|
6288
|
-
Ta: 180.9479,
|
|
6289
|
-
W: 183.84,
|
|
6290
|
-
Re: 186.207,
|
|
6291
|
-
Os: 190.23,
|
|
6292
|
-
Ir: 192.217,
|
|
6293
|
-
Pt: 195.078,
|
|
6294
|
-
Au: 196.96655,
|
|
6295
|
-
Hg: 200.59,
|
|
6296
|
-
Tl: 204.3833,
|
|
6297
|
-
Pb: 207.2,
|
|
6298
|
-
Bi: 208.98038,
|
|
6299
|
-
Po: 208.98,
|
|
6300
|
-
At: 209.99,
|
|
6301
|
-
Rn: 222.02,
|
|
6302
|
-
Fr: 223.02,
|
|
6303
|
-
Ra: 226.03,
|
|
6304
|
-
Ac: 227.03,
|
|
6305
|
-
Th: 232.0381,
|
|
6306
|
-
Pa: 231.03588,
|
|
6307
|
-
U: 238.02891,
|
|
6308
|
-
Np: 237.05,
|
|
6309
|
-
Pu: 244.06,
|
|
6310
|
-
Am: 243.06,
|
|
6311
|
-
Cm: 247.07,
|
|
6312
|
-
Bk: 247.07,
|
|
6313
|
-
Cf: 251.08,
|
|
6314
|
-
Es: 252.08,
|
|
6315
|
-
Fm: 257.1,
|
|
6316
|
-
Md: 258.1,
|
|
6317
|
-
No: 259.1,
|
|
6318
|
-
Lr: 262.11,
|
|
6319
|
-
Rf: 261.11,
|
|
6320
|
-
Db: 262.11,
|
|
6321
|
-
Sg: 266.12,
|
|
6322
|
-
Bh: 264.12,
|
|
6323
|
-
Hs: 269.13,
|
|
6324
|
-
Mt: 268.14
|
|
6325
|
-
};
|
|
6326
6062
|
const bioData = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
6327
6063
|
__proto__: null,
|
|
6328
|
-
ambiguous_dna_complement,
|
|
6329
6064
|
ambiguous_dna_letters,
|
|
6330
6065
|
ambiguous_dna_values,
|
|
6331
|
-
ambiguous_rna_complement,
|
|
6332
6066
|
ambiguous_rna_letters,
|
|
6333
|
-
ambiguous_rna_values,
|
|
6334
|
-
atom_weights,
|
|
6335
6067
|
extended_dna_letters,
|
|
6336
6068
|
extended_protein_letters,
|
|
6337
6069
|
extended_protein_values,
|
|
6338
|
-
monoisotopic_protein_weights,
|
|
6339
|
-
monoisotopic_unambiguous_dna_weights,
|
|
6340
|
-
monoisotopic_unambiguous_rna_weights,
|
|
6341
6070
|
protein_letters,
|
|
6342
|
-
|
|
6343
|
-
protein_weights,
|
|
6071
|
+
protein_letters_withUandX,
|
|
6344
6072
|
unambiguous_dna_letters,
|
|
6345
|
-
|
|
6346
|
-
unambiguous_rna_letters,
|
|
6347
|
-
unambiguous_rna_weights
|
|
6073
|
+
unambiguous_rna_letters
|
|
6348
6074
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
6349
6075
|
const aminoAcidToDegenerateDnaMap = {
|
|
6350
6076
|
"-": "---",
|
|
@@ -6458,8 +6184,8 @@ function getOverlapsOfPotentiallyCircularRanges(rangeA, rangeB, maxRangeLength,
|
|
|
6458
6184
|
maxRangeLength
|
|
6459
6185
|
);
|
|
6460
6186
|
let overlaps = [];
|
|
6461
|
-
normalizedRangeA.forEach(function(nonCircularRangeA
|
|
6462
|
-
normalizedRangeB.forEach(function(nonCircularRangeB
|
|
6187
|
+
normalizedRangeA.forEach(function(nonCircularRangeA) {
|
|
6188
|
+
normalizedRangeB.forEach(function(nonCircularRangeB) {
|
|
6463
6189
|
const overlap = getOverlapOfNonCircularRanges(
|
|
6464
6190
|
nonCircularRangeA,
|
|
6465
6191
|
nonCircularRangeB
|
|
@@ -6471,7 +6197,7 @@ function getOverlapsOfPotentiallyCircularRanges(rangeA, rangeB, maxRangeLength,
|
|
|
6471
6197
|
});
|
|
6472
6198
|
if (joinIfPossible && normalizedRangeA.length === 2 && normalizedRangeB.length === 2 && maxRangeLength) {
|
|
6473
6199
|
const joinedOverlap = {};
|
|
6474
|
-
overlaps = lodashExports.flatMap(overlaps, (o
|
|
6200
|
+
overlaps = lodashExports.flatMap(overlaps, (o) => {
|
|
6475
6201
|
if (o.start === 0) {
|
|
6476
6202
|
joinedOverlap.end = o.end;
|
|
6477
6203
|
return [];
|
|
@@ -6569,12 +6295,14 @@ function trimRangeByAnotherRange(rangeToBeTrimmed, trimmingRange, sequenceLength
|
|
|
6569
6295
|
});
|
|
6570
6296
|
splitRangesToBeTrimmed[index] = nonCircularRangeToBeTrimmed;
|
|
6571
6297
|
});
|
|
6572
|
-
const outputSplitRanges = splitRangesToBeTrimmed.filter(
|
|
6573
|
-
|
|
6574
|
-
|
|
6298
|
+
const outputSplitRanges = splitRangesToBeTrimmed.filter(
|
|
6299
|
+
function(trimmedRange) {
|
|
6300
|
+
if (trimmedRange) {
|
|
6301
|
+
return true;
|
|
6302
|
+
}
|
|
6303
|
+
return false;
|
|
6575
6304
|
}
|
|
6576
|
-
|
|
6577
|
-
});
|
|
6305
|
+
);
|
|
6578
6306
|
let outputTrimmedRange;
|
|
6579
6307
|
if (outputSplitRanges.length < 0)
|
|
6580
6308
|
;
|
|
@@ -6673,11 +6401,19 @@ function checkIfNonCircularRangesOverlap(range, comparisonRange) {
|
|
|
6673
6401
|
}
|
|
6674
6402
|
__name(checkIfNonCircularRangesOverlap, "checkIfNonCircularRangesOverlap");
|
|
6675
6403
|
function checkIfPotentiallyCircularRangesOverlap(range, comparisonRange) {
|
|
6676
|
-
return splitRangeIntoTwoPartsIfItIsCircular(range, Infinity).some(
|
|
6677
|
-
|
|
6678
|
-
return
|
|
6679
|
-
|
|
6680
|
-
|
|
6404
|
+
return splitRangeIntoTwoPartsIfItIsCircular(range, Infinity).some(
|
|
6405
|
+
function(splitRange) {
|
|
6406
|
+
return splitRangeIntoTwoPartsIfItIsCircular(
|
|
6407
|
+
comparisonRange,
|
|
6408
|
+
Infinity
|
|
6409
|
+
).some(function(splitComparisonRange) {
|
|
6410
|
+
return checkIfNonCircularRangesOverlap(
|
|
6411
|
+
splitRange,
|
|
6412
|
+
splitComparisonRange
|
|
6413
|
+
);
|
|
6414
|
+
});
|
|
6415
|
+
}
|
|
6416
|
+
);
|
|
6681
6417
|
}
|
|
6682
6418
|
__name(checkIfPotentiallyCircularRangesOverlap, "checkIfPotentiallyCircularRangesOverlap");
|
|
6683
6419
|
function collapseOverlapsGeneratedFromRangeComparisonIfPossible(overlaps, sequenceLength, optionalOriginalRange) {
|
|
@@ -6686,15 +6422,19 @@ function collapseOverlapsGeneratedFromRangeComparisonIfPossible(overlaps, sequen
|
|
|
6686
6422
|
return overlaps;
|
|
6687
6423
|
} else if (overlaps.length === 2) {
|
|
6688
6424
|
if (overlaps[0].start === 0 && overlaps[1].end + 1 === sequenceLength && !originalRangeLinear) {
|
|
6689
|
-
return [
|
|
6690
|
-
|
|
6691
|
-
|
|
6692
|
-
|
|
6425
|
+
return [
|
|
6426
|
+
{
|
|
6427
|
+
start: overlaps[1].start,
|
|
6428
|
+
end: overlaps[0].end
|
|
6429
|
+
}
|
|
6430
|
+
];
|
|
6693
6431
|
} else if (overlaps[1].start === 0 && overlaps[0].end + 1 === sequenceLength && !originalRangeLinear) {
|
|
6694
|
-
return [
|
|
6695
|
-
|
|
6696
|
-
|
|
6697
|
-
|
|
6432
|
+
return [
|
|
6433
|
+
{
|
|
6434
|
+
start: overlaps[0].start,
|
|
6435
|
+
end: overlaps[1].end
|
|
6436
|
+
}
|
|
6437
|
+
];
|
|
6698
6438
|
} else {
|
|
6699
6439
|
return overlaps;
|
|
6700
6440
|
}
|
|
@@ -6702,17 +6442,29 @@ function collapseOverlapsGeneratedFromRangeComparisonIfPossible(overlaps, sequen
|
|
|
6702
6442
|
const firstOverlap = overlaps[0];
|
|
6703
6443
|
const secondOverlap = overlaps[1];
|
|
6704
6444
|
const thirdOverlap = overlaps[2];
|
|
6705
|
-
let collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(
|
|
6445
|
+
let collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(
|
|
6446
|
+
[firstOverlap, secondOverlap],
|
|
6447
|
+
sequenceLength,
|
|
6448
|
+
optionalOriginalRange
|
|
6449
|
+
);
|
|
6706
6450
|
if (collapsedOverlaps.length === 1) {
|
|
6707
6451
|
collapsedOverlaps.push(thirdOverlap);
|
|
6708
6452
|
return collapsedOverlaps;
|
|
6709
6453
|
} else {
|
|
6710
|
-
collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(
|
|
6454
|
+
collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(
|
|
6455
|
+
[firstOverlap, thirdOverlap],
|
|
6456
|
+
sequenceLength,
|
|
6457
|
+
optionalOriginalRange
|
|
6458
|
+
);
|
|
6711
6459
|
if (collapsedOverlaps.length === 1) {
|
|
6712
6460
|
collapsedOverlaps.push(secondOverlap);
|
|
6713
6461
|
return collapsedOverlaps;
|
|
6714
6462
|
} else {
|
|
6715
|
-
collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(
|
|
6463
|
+
collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(
|
|
6464
|
+
[secondOverlap, thirdOverlap],
|
|
6465
|
+
sequenceLength,
|
|
6466
|
+
optionalOriginalRange
|
|
6467
|
+
);
|
|
6716
6468
|
if (collapsedOverlaps.length === 1) {
|
|
6717
6469
|
collapsedOverlaps.push(firstOverlap);
|
|
6718
6470
|
return collapsedOverlaps;
|
|
@@ -6819,13 +6571,23 @@ function expandOrContractRangeByLength(range, shiftBy, shiftStart, sequenceLengt
|
|
|
6819
6571
|
__name(expandOrContractRangeByLength, "expandOrContractRangeByLength");
|
|
6820
6572
|
function translateRange(rangeToBeAdjusted, translateBy, rangeLength) {
|
|
6821
6573
|
return lodashExports.assign({}, rangeToBeAdjusted, {
|
|
6822
|
-
start: normalizePositionByRangeLength(
|
|
6823
|
-
|
|
6574
|
+
start: normalizePositionByRangeLength(
|
|
6575
|
+
rangeToBeAdjusted.start + translateBy,
|
|
6576
|
+
rangeLength
|
|
6577
|
+
),
|
|
6578
|
+
end: normalizePositionByRangeLength(
|
|
6579
|
+
rangeToBeAdjusted.end + translateBy,
|
|
6580
|
+
rangeLength
|
|
6581
|
+
)
|
|
6824
6582
|
});
|
|
6825
6583
|
}
|
|
6826
6584
|
__name(translateRange, "translateRange");
|
|
6827
|
-
function flipRelativeRange(innerRange, outerRange, sequenceLength
|
|
6828
|
-
const isFullyContained = isRangeWithinRange(
|
|
6585
|
+
function flipRelativeRange(innerRange, outerRange, sequenceLength) {
|
|
6586
|
+
const isFullyContained = isRangeWithinRange(
|
|
6587
|
+
innerRange,
|
|
6588
|
+
outerRange,
|
|
6589
|
+
sequenceLength
|
|
6590
|
+
);
|
|
6829
6591
|
if (isFullyContained) {
|
|
6830
6592
|
return flipFullyContainedRange(innerRange, outerRange, sequenceLength);
|
|
6831
6593
|
} else {
|
|
@@ -6833,42 +6595,92 @@ function flipRelativeRange(innerRange, outerRange, sequenceLength, options) {
|
|
|
6833
6595
|
}
|
|
6834
6596
|
}
|
|
6835
6597
|
__name(flipRelativeRange, "flipRelativeRange");
|
|
6836
|
-
function flipNonFullyContainedRange(innerRange, outerRange, sequenceLength
|
|
6837
|
-
const outerFullyContained = isRangeWithinRange(
|
|
6598
|
+
function flipNonFullyContainedRange(innerRange, outerRange, sequenceLength) {
|
|
6599
|
+
const outerFullyContained = isRangeWithinRange(
|
|
6600
|
+
outerRange,
|
|
6601
|
+
innerRange,
|
|
6602
|
+
sequenceLength
|
|
6603
|
+
);
|
|
6838
6604
|
let flippedInnerRange;
|
|
6839
6605
|
if (outerFullyContained) {
|
|
6840
|
-
const expandBy1 = getRangeLength(
|
|
6841
|
-
|
|
6842
|
-
|
|
6843
|
-
|
|
6844
|
-
|
|
6845
|
-
|
|
6846
|
-
|
|
6847
|
-
|
|
6848
|
-
|
|
6849
|
-
|
|
6606
|
+
const expandBy1 = getRangeLength(
|
|
6607
|
+
{
|
|
6608
|
+
start: innerRange.start,
|
|
6609
|
+
end: outerRange.start
|
|
6610
|
+
},
|
|
6611
|
+
sequenceLength
|
|
6612
|
+
) - 1;
|
|
6613
|
+
flippedInnerRange = expandOrContractRangeByLength(
|
|
6614
|
+
outerRange,
|
|
6615
|
+
expandBy1,
|
|
6616
|
+
false,
|
|
6617
|
+
sequenceLength
|
|
6618
|
+
);
|
|
6619
|
+
const expandBy2 = getRangeLength(
|
|
6620
|
+
{
|
|
6621
|
+
end: innerRange.end,
|
|
6622
|
+
start: outerRange.end
|
|
6623
|
+
},
|
|
6624
|
+
sequenceLength
|
|
6625
|
+
) - 1;
|
|
6626
|
+
flippedInnerRange = expandOrContractRangeByLength(
|
|
6627
|
+
flippedInnerRange,
|
|
6628
|
+
expandBy2,
|
|
6629
|
+
true,
|
|
6630
|
+
sequenceLength
|
|
6631
|
+
);
|
|
6850
6632
|
} else {
|
|
6851
|
-
const overlaps = getOverlapsOfPotentiallyCircularRanges(
|
|
6633
|
+
const overlaps = getOverlapsOfPotentiallyCircularRanges(
|
|
6634
|
+
innerRange,
|
|
6635
|
+
outerRange,
|
|
6636
|
+
sequenceLength
|
|
6637
|
+
);
|
|
6852
6638
|
if (overlaps.length >= 1) {
|
|
6853
|
-
let overlapExtendsForward;
|
|
6854
6639
|
const firstOverlap = overlaps[0];
|
|
6855
|
-
overlapExtendsForward = firstOverlap.start !== outerRange.start;
|
|
6856
|
-
const flippedTruncatedInner = flipFullyContainedRange(
|
|
6640
|
+
const overlapExtendsForward = firstOverlap.start !== outerRange.start;
|
|
6641
|
+
const flippedTruncatedInner = flipFullyContainedRange(
|
|
6642
|
+
firstOverlap,
|
|
6643
|
+
outerRange,
|
|
6644
|
+
sequenceLength
|
|
6645
|
+
);
|
|
6857
6646
|
const lengthToExtend = getRangeLength(innerRange, sequenceLength) - getRangeLength(flippedTruncatedInner, sequenceLength);
|
|
6858
|
-
flippedInnerRange = expandOrContractRangeByLength(
|
|
6647
|
+
flippedInnerRange = expandOrContractRangeByLength(
|
|
6648
|
+
flippedTruncatedInner,
|
|
6649
|
+
lengthToExtend,
|
|
6650
|
+
overlapExtendsForward,
|
|
6651
|
+
sequenceLength
|
|
6652
|
+
);
|
|
6859
6653
|
} else {
|
|
6860
|
-
throw new Error(
|
|
6654
|
+
throw new Error(
|
|
6655
|
+
"This case (relative ranges that do not overlap) is unsupported! "
|
|
6656
|
+
);
|
|
6861
6657
|
}
|
|
6862
6658
|
}
|
|
6863
6659
|
return flippedInnerRange;
|
|
6864
6660
|
}
|
|
6865
6661
|
__name(flipNonFullyContainedRange, "flipNonFullyContainedRange");
|
|
6866
|
-
function flipFullyContainedRange(innerRange, outerRange, sequenceLength
|
|
6662
|
+
function flipFullyContainedRange(innerRange, outerRange, sequenceLength) {
|
|
6867
6663
|
const translateBy = -outerRange.start;
|
|
6868
|
-
const translatedOuterRange = translateRange(
|
|
6869
|
-
|
|
6870
|
-
|
|
6871
|
-
|
|
6664
|
+
const translatedOuterRange = translateRange(
|
|
6665
|
+
outerRange,
|
|
6666
|
+
translateBy,
|
|
6667
|
+
sequenceLength
|
|
6668
|
+
);
|
|
6669
|
+
const translatedInnerRange = translateRange(
|
|
6670
|
+
innerRange,
|
|
6671
|
+
translateBy,
|
|
6672
|
+
sequenceLength
|
|
6673
|
+
);
|
|
6674
|
+
const translatedFlippedInnerRange = flipNonOriginSpanningContainedRange(
|
|
6675
|
+
translatedInnerRange,
|
|
6676
|
+
translatedOuterRange,
|
|
6677
|
+
sequenceLength
|
|
6678
|
+
);
|
|
6679
|
+
const flippedInnerRange = translateRange(
|
|
6680
|
+
translatedFlippedInnerRange,
|
|
6681
|
+
-translateBy,
|
|
6682
|
+
sequenceLength
|
|
6683
|
+
);
|
|
6872
6684
|
return flippedInnerRange;
|
|
6873
6685
|
}
|
|
6874
6686
|
__name(flipFullyContainedRange, "flipFullyContainedRange");
|
|
@@ -6886,7 +6698,10 @@ function generateRandomRange(minStart, maxEnd, maxLength) {
|
|
|
6886
6698
|
const start = getRandomInt$1(minStart, maxEnd);
|
|
6887
6699
|
let end;
|
|
6888
6700
|
if (maxLength) {
|
|
6889
|
-
end = normalizePositionByRangeLength(
|
|
6701
|
+
end = normalizePositionByRangeLength(
|
|
6702
|
+
getRandomInt$1(start, start + maxLength),
|
|
6703
|
+
maxEnd
|
|
6704
|
+
);
|
|
6890
6705
|
} else {
|
|
6891
6706
|
end = getRandomInt$1(minStart, maxEnd);
|
|
6892
6707
|
}
|
|
@@ -6929,18 +6744,26 @@ function getShortestDistanceBetweenTwoPositions(position1, position2, sequenceLe
|
|
|
6929
6744
|
__name(getShortestDistanceBetweenTwoPositions, "getShortestDistanceBetweenTwoPositions");
|
|
6930
6745
|
function getYOffsetForPotentiallyCircularRange(range, YOffsetLevelsWithRanges, assignYOffsetToRange) {
|
|
6931
6746
|
let yOffset = [];
|
|
6932
|
-
const openYOffsetFound = YOffsetLevelsWithRanges.some(
|
|
6933
|
-
|
|
6934
|
-
|
|
6935
|
-
|
|
6936
|
-
|
|
6937
|
-
|
|
6938
|
-
|
|
6939
|
-
|
|
6940
|
-
|
|
6941
|
-
|
|
6747
|
+
const openYOffsetFound = YOffsetLevelsWithRanges.some(
|
|
6748
|
+
function(rangesAlreadyAddedToYOffset, index) {
|
|
6749
|
+
const rangeBlocked = rangesAlreadyAddedToYOffset.some(
|
|
6750
|
+
function(comparisonRange) {
|
|
6751
|
+
return checkIfPotentiallyCircularRangesOverlap(
|
|
6752
|
+
range,
|
|
6753
|
+
comparisonRange
|
|
6754
|
+
);
|
|
6755
|
+
}
|
|
6756
|
+
);
|
|
6757
|
+
if (!rangeBlocked) {
|
|
6758
|
+
yOffset = index;
|
|
6759
|
+
if (assignYOffsetToRange)
|
|
6760
|
+
range.yOffset = index;
|
|
6761
|
+
rangesAlreadyAddedToYOffset.push(range);
|
|
6762
|
+
return true;
|
|
6763
|
+
}
|
|
6764
|
+
return false;
|
|
6942
6765
|
}
|
|
6943
|
-
|
|
6766
|
+
);
|
|
6944
6767
|
if (!openYOffsetFound) {
|
|
6945
6768
|
yOffset = YOffsetLevelsWithRanges.length;
|
|
6946
6769
|
if (assignYOffsetToRange)
|
|
@@ -6954,7 +6777,11 @@ function getYOffsetsForPotentiallyCircularRanges(ranges, assignYOffsetToRange) {
|
|
|
6954
6777
|
let maxYOffset = 0;
|
|
6955
6778
|
const yOffsetLevels = [];
|
|
6956
6779
|
ranges.forEach(function(range) {
|
|
6957
|
-
const yOffset = getYOffsetForPotentiallyCircularRange(
|
|
6780
|
+
const yOffset = getYOffsetForPotentiallyCircularRange(
|
|
6781
|
+
range,
|
|
6782
|
+
yOffsetLevels,
|
|
6783
|
+
assignYOffsetToRange
|
|
6784
|
+
);
|
|
6958
6785
|
yOffsets.push(yOffset);
|
|
6959
6786
|
if (yOffset > maxYOffset) {
|
|
6960
6787
|
maxYOffset = yOffset;
|
|
@@ -6987,8 +6814,16 @@ function invertRange$1(rangeOrCaret, rangeMax) {
|
|
|
6987
6814
|
}
|
|
6988
6815
|
__name(invertRange$1, "invertRange$1");
|
|
6989
6816
|
function isPositionCloserToRangeStartThanRangeEnd(position, range, maxLength) {
|
|
6990
|
-
const distanceFromStart = getShortestDistanceBetweenTwoPositions(
|
|
6991
|
-
|
|
6817
|
+
const distanceFromStart = getShortestDistanceBetweenTwoPositions(
|
|
6818
|
+
range.start,
|
|
6819
|
+
position,
|
|
6820
|
+
maxLength
|
|
6821
|
+
);
|
|
6822
|
+
const distanceFromEnd = getShortestDistanceBetweenTwoPositions(
|
|
6823
|
+
range.end,
|
|
6824
|
+
position,
|
|
6825
|
+
maxLength
|
|
6826
|
+
);
|
|
6992
6827
|
return distanceFromStart <= distanceFromEnd;
|
|
6993
6828
|
}
|
|
6994
6829
|
__name(isPositionCloserToRangeStartThanRangeEnd, "isPositionCloserToRangeStartThanRangeEnd");
|
|
@@ -7019,9 +6854,15 @@ function reversePositionInRange(position, rangeLength, isInBetweenPositions) {
|
|
|
7019
6854
|
}
|
|
7020
6855
|
__name(reversePositionInRange, "reversePositionInRange");
|
|
7021
6856
|
function zeroSubrangeByContainerRange(subRange, containerRange, sequenceLength) {
|
|
7022
|
-
const trimmedSubRange = trimRangeByAnotherRange(
|
|
6857
|
+
const trimmedSubRange = trimRangeByAnotherRange(
|
|
6858
|
+
subRange,
|
|
6859
|
+
containerRange,
|
|
6860
|
+
sequenceLength
|
|
6861
|
+
);
|
|
7023
6862
|
if (trimmedSubRange) {
|
|
7024
|
-
throw new Error(
|
|
6863
|
+
throw new Error(
|
|
6864
|
+
"subRange must be fully contained by containerRange! Otherwise this function does not make sense"
|
|
6865
|
+
);
|
|
7025
6866
|
}
|
|
7026
6867
|
const newSubrange = {};
|
|
7027
6868
|
newSubrange.start = subRange.start - containerRange.start;
|
|
@@ -7049,12 +6890,24 @@ function modulo(n, m) {
|
|
|
7049
6890
|
}
|
|
7050
6891
|
__name(modulo, "modulo");
|
|
7051
6892
|
function getZeroedRangeOverlaps(annotation, selection, sequenceLength) {
|
|
7052
|
-
const overlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(
|
|
6893
|
+
const overlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(
|
|
6894
|
+
getOverlapsOfPotentiallyCircularRanges(
|
|
6895
|
+
annotation,
|
|
6896
|
+
selection,
|
|
6897
|
+
sequenceLength
|
|
6898
|
+
),
|
|
6899
|
+
sequenceLength,
|
|
6900
|
+
annotation
|
|
6901
|
+
);
|
|
7053
6902
|
const zeroedOverlaps = overlaps.map((overlap) => {
|
|
7054
|
-
return zeroSubrangeByContainerRange(
|
|
7055
|
-
|
|
7056
|
-
|
|
7057
|
-
|
|
6903
|
+
return zeroSubrangeByContainerRange(
|
|
6904
|
+
overlap,
|
|
6905
|
+
{
|
|
6906
|
+
start: selection.start,
|
|
6907
|
+
end: normalizePositionByRangeLength(selection.start - 1, sequenceLength)
|
|
6908
|
+
},
|
|
6909
|
+
sequenceLength
|
|
6910
|
+
);
|
|
7058
6911
|
});
|
|
7059
6912
|
return zeroedOverlaps;
|
|
7060
6913
|
}
|
|
@@ -11962,7 +11815,7 @@ const proteinAlphabet = {
|
|
|
11962
11815
|
hydrophobicity: 1.8,
|
|
11963
11816
|
colorByFamily: "#00FFFF",
|
|
11964
11817
|
color: "hsl(327.3, 100%, 69%)",
|
|
11965
|
-
mass:
|
|
11818
|
+
mass: 71.0779
|
|
11966
11819
|
},
|
|
11967
11820
|
R: {
|
|
11968
11821
|
value: "R",
|
|
@@ -11971,7 +11824,7 @@ const proteinAlphabet = {
|
|
|
11971
11824
|
hydrophobicity: -4.5,
|
|
11972
11825
|
colorByFamily: "#FFC0CB",
|
|
11973
11826
|
color: "hsl(258.1, 100%, 69%)",
|
|
11974
|
-
mass:
|
|
11827
|
+
mass: 156.18568
|
|
11975
11828
|
},
|
|
11976
11829
|
N: {
|
|
11977
11830
|
value: "N",
|
|
@@ -11980,7 +11833,7 @@ const proteinAlphabet = {
|
|
|
11980
11833
|
hydrophobicity: -3.5,
|
|
11981
11834
|
colorByFamily: "#D3D3D3",
|
|
11982
11835
|
color: "hsl(268.9, 100%, 69%)",
|
|
11983
|
-
mass:
|
|
11836
|
+
mass: 114.10264
|
|
11984
11837
|
},
|
|
11985
11838
|
D: {
|
|
11986
11839
|
value: "D",
|
|
@@ -11989,7 +11842,7 @@ const proteinAlphabet = {
|
|
|
11989
11842
|
hydrophobicity: -3.5,
|
|
11990
11843
|
colorByFamily: "#EE82EE",
|
|
11991
11844
|
color: "hsl(268.9, 100%, 69%)",
|
|
11992
|
-
mass:
|
|
11845
|
+
mass: 115.0874
|
|
11993
11846
|
},
|
|
11994
11847
|
C: {
|
|
11995
11848
|
value: "C",
|
|
@@ -11998,7 +11851,7 @@ const proteinAlphabet = {
|
|
|
11998
11851
|
hydrophobicity: 2.5,
|
|
11999
11852
|
colorByFamily: "#FFFF00",
|
|
12000
11853
|
color: "hsl(335.1, 100%, 69%)",
|
|
12001
|
-
mass:
|
|
11854
|
+
mass: 103.1429
|
|
12002
11855
|
},
|
|
12003
11856
|
E: {
|
|
12004
11857
|
value: "E",
|
|
@@ -12007,7 +11860,7 @@ const proteinAlphabet = {
|
|
|
12007
11860
|
hydrophobicity: -3.5,
|
|
12008
11861
|
colorByFamily: "#EE82EE",
|
|
12009
11862
|
color: "hsl(268.9, 100%, 69%)",
|
|
12010
|
-
mass:
|
|
11863
|
+
mass: 129.11398
|
|
12011
11864
|
},
|
|
12012
11865
|
Q: {
|
|
12013
11866
|
value: "Q",
|
|
@@ -12016,7 +11869,7 @@ const proteinAlphabet = {
|
|
|
12016
11869
|
hydrophobicity: -3.5,
|
|
12017
11870
|
colorByFamily: "#D3D3D3",
|
|
12018
11871
|
color: "hsl(268.9, 100%, 69%)",
|
|
12019
|
-
mass:
|
|
11872
|
+
mass: 128.12922
|
|
12020
11873
|
},
|
|
12021
11874
|
G: {
|
|
12022
11875
|
value: "G",
|
|
@@ -12025,7 +11878,7 @@ const proteinAlphabet = {
|
|
|
12025
11878
|
hydrophobicity: -0.4,
|
|
12026
11879
|
colorByFamily: "#00FFFF",
|
|
12027
11880
|
color: "hsl(303.1, 100%, 69%)",
|
|
12028
|
-
mass:
|
|
11881
|
+
mass: 57.05132
|
|
12029
11882
|
},
|
|
12030
11883
|
H: {
|
|
12031
11884
|
value: "H",
|
|
@@ -12034,7 +11887,7 @@ const proteinAlphabet = {
|
|
|
12034
11887
|
hydrophobicity: -3.2,
|
|
12035
11888
|
colorByFamily: "#FFC0CB",
|
|
12036
11889
|
color: "hsl(272.2, 100%, 69%)",
|
|
12037
|
-
mass:
|
|
11890
|
+
mass: 137.13928
|
|
12038
11891
|
},
|
|
12039
11892
|
I: {
|
|
12040
11893
|
value: "I",
|
|
@@ -12043,7 +11896,7 @@ const proteinAlphabet = {
|
|
|
12043
11896
|
hydrophobicity: 4.5,
|
|
12044
11897
|
colorByFamily: "#00FFFF",
|
|
12045
11898
|
color: "hsl(356.9, 100%, 69%)",
|
|
12046
|
-
mass:
|
|
11899
|
+
mass: 113.15764
|
|
12047
11900
|
},
|
|
12048
11901
|
L: {
|
|
12049
11902
|
value: "L",
|
|
@@ -12052,7 +11905,7 @@ const proteinAlphabet = {
|
|
|
12052
11905
|
hydrophobicity: 3.8,
|
|
12053
11906
|
colorByFamily: "#00FFFF",
|
|
12054
11907
|
color: "hsl(349.4, 100%, 69%)",
|
|
12055
|
-
mass:
|
|
11908
|
+
mass: 113.15764
|
|
12056
11909
|
},
|
|
12057
11910
|
K: {
|
|
12058
11911
|
value: "K",
|
|
@@ -12061,7 +11914,7 @@ const proteinAlphabet = {
|
|
|
12061
11914
|
hydrophobicity: -3.9,
|
|
12062
11915
|
colorByFamily: "#FFC0CB",
|
|
12063
11916
|
color: "hsl(264.7, 100%, 69%)",
|
|
12064
|
-
mass:
|
|
11917
|
+
mass: 128.17228
|
|
12065
11918
|
},
|
|
12066
11919
|
M: {
|
|
12067
11920
|
value: "M",
|
|
@@ -12070,7 +11923,7 @@ const proteinAlphabet = {
|
|
|
12070
11923
|
hydrophobicity: 1.9,
|
|
12071
11924
|
colorByFamily: "#FFFF00",
|
|
12072
11925
|
color: "hsl(328.5, 100%, 69%)",
|
|
12073
|
-
mass:
|
|
11926
|
+
mass: 131.19606
|
|
12074
11927
|
},
|
|
12075
11928
|
F: {
|
|
12076
11929
|
value: "F",
|
|
@@ -12079,7 +11932,7 @@ const proteinAlphabet = {
|
|
|
12079
11932
|
hydrophobicity: 2.8,
|
|
12080
11933
|
colorByFamily: "#FFA500",
|
|
12081
11934
|
color: "hsl(338.4, 100%, 69%)",
|
|
12082
|
-
mass:
|
|
11935
|
+
mass: 147.17386
|
|
12083
11936
|
},
|
|
12084
11937
|
P: {
|
|
12085
11938
|
value: "P",
|
|
@@ -12088,7 +11941,7 @@ const proteinAlphabet = {
|
|
|
12088
11941
|
hydrophobicity: -1.6,
|
|
12089
11942
|
colorByFamily: "#00FFFF",
|
|
12090
11943
|
color: "hsl(289.9, 100%, 69%)",
|
|
12091
|
-
mass:
|
|
11944
|
+
mass: 97.11518
|
|
12092
11945
|
},
|
|
12093
11946
|
S: {
|
|
12094
11947
|
value: "S",
|
|
@@ -12097,7 +11950,7 @@ const proteinAlphabet = {
|
|
|
12097
11950
|
hydrophobicity: -0.8,
|
|
12098
11951
|
colorByFamily: "#90EE90",
|
|
12099
11952
|
color: "hsl(298.6, 100%, 69%)",
|
|
12100
|
-
mass:
|
|
11953
|
+
mass: 87.0773
|
|
12101
11954
|
},
|
|
12102
11955
|
T: {
|
|
12103
11956
|
value: "T",
|
|
@@ -12106,7 +11959,7 @@ const proteinAlphabet = {
|
|
|
12106
11959
|
hydrophobicity: -0.7,
|
|
12107
11960
|
colorByFamily: "#90EE90",
|
|
12108
11961
|
color: "hsl(299.8, 100%, 69%)",
|
|
12109
|
-
mass:
|
|
11962
|
+
mass: 101.10388
|
|
12110
11963
|
},
|
|
12111
11964
|
U: {
|
|
12112
11965
|
value: "U",
|
|
@@ -12114,7 +11967,7 @@ const proteinAlphabet = {
|
|
|
12114
11967
|
threeLettersName: "Sec",
|
|
12115
11968
|
colorByFamily: "#FF0000",
|
|
12116
11969
|
color: "hsl(0, 100%, 69%)",
|
|
12117
|
-
mass:
|
|
11970
|
+
mass: 150.3079
|
|
12118
11971
|
},
|
|
12119
11972
|
W: {
|
|
12120
11973
|
value: "W",
|
|
@@ -12123,7 +11976,7 @@ const proteinAlphabet = {
|
|
|
12123
11976
|
hydrophobicity: -0.9,
|
|
12124
11977
|
colorByFamily: "#FFA500",
|
|
12125
11978
|
color: "hsl(297.6, 100%, 69%)",
|
|
12126
|
-
mass:
|
|
11979
|
+
mass: 186.2099
|
|
12127
11980
|
},
|
|
12128
11981
|
Y: {
|
|
12129
11982
|
value: "Y",
|
|
@@ -12132,7 +11985,7 @@ const proteinAlphabet = {
|
|
|
12132
11985
|
hydrophobicity: -1.3,
|
|
12133
11986
|
colorByFamily: "#FFA500",
|
|
12134
11987
|
color: "hsl(293.2, 100%, 69%)",
|
|
12135
|
-
mass:
|
|
11988
|
+
mass: 163.17326
|
|
12136
11989
|
},
|
|
12137
11990
|
V: {
|
|
12138
11991
|
value: "V",
|
|
@@ -12141,7 +11994,7 @@ const proteinAlphabet = {
|
|
|
12141
11994
|
hydrophobicity: 4.2,
|
|
12142
11995
|
colorByFamily: "#00FFFF",
|
|
12143
11996
|
color: "hsl(353.6, 100%, 69%)",
|
|
12144
|
-
mass:
|
|
11997
|
+
mass: 99.13106
|
|
12145
11998
|
},
|
|
12146
11999
|
"*": {
|
|
12147
12000
|
value: "*",
|
|
@@ -12470,20 +12323,91 @@ const modifiableTypes = [
|
|
|
12470
12323
|
"primers",
|
|
12471
12324
|
"guides"
|
|
12472
12325
|
];
|
|
12473
|
-
function filterSequenceString(sequenceString,
|
|
12474
|
-
|
|
12475
|
-
|
|
12476
|
-
|
|
12477
|
-
|
|
12478
|
-
|
|
12479
|
-
|
|
12480
|
-
|
|
12326
|
+
function filterSequenceString(sequenceString, {
|
|
12327
|
+
additionalValidChars = "",
|
|
12328
|
+
isOligo,
|
|
12329
|
+
name,
|
|
12330
|
+
isProtein,
|
|
12331
|
+
isRna,
|
|
12332
|
+
isMixedRnaAndDna,
|
|
12333
|
+
includeStopCodon
|
|
12334
|
+
} = {}) {
|
|
12335
|
+
const acceptedChars = getAcceptedChars({
|
|
12336
|
+
isOligo,
|
|
12337
|
+
isProtein,
|
|
12338
|
+
isRna,
|
|
12339
|
+
isMixedRnaAndDna,
|
|
12340
|
+
includeStopCodon
|
|
12341
|
+
});
|
|
12342
|
+
const replaceChars = getReplaceChars({
|
|
12343
|
+
isOligo,
|
|
12344
|
+
isProtein,
|
|
12345
|
+
isRna,
|
|
12346
|
+
isMixedRnaAndDna
|
|
12347
|
+
});
|
|
12348
|
+
let sanitizedVal = "";
|
|
12349
|
+
const invalidChars = [];
|
|
12350
|
+
const chars = `${acceptedChars}${additionalValidChars.split("").join("\\")}`;
|
|
12351
|
+
const warnings = [];
|
|
12352
|
+
const replaceCount = {};
|
|
12353
|
+
sequenceString.split("").forEach((letter) => {
|
|
12354
|
+
const lowerLetter = letter.toLowerCase();
|
|
12355
|
+
if (replaceChars && replaceChars[lowerLetter]) {
|
|
12356
|
+
if (!replaceCount[lowerLetter]) {
|
|
12357
|
+
replaceCount[lowerLetter] = 0;
|
|
12358
|
+
}
|
|
12359
|
+
replaceCount[lowerLetter]++;
|
|
12360
|
+
const isUpper = lowerLetter !== letter;
|
|
12361
|
+
sanitizedVal += isUpper ? replaceChars[lowerLetter].toUpperCase() : replaceChars[lowerLetter];
|
|
12362
|
+
} else if (chars.includes(lowerLetter)) {
|
|
12363
|
+
sanitizedVal += letter;
|
|
12364
|
+
} else {
|
|
12365
|
+
invalidChars.push(letter);
|
|
12366
|
+
}
|
|
12367
|
+
});
|
|
12368
|
+
Object.keys(replaceCount).forEach((letter) => {
|
|
12369
|
+
warnings.push(
|
|
12370
|
+
`Replaced "${letter}" with "${replaceChars[letter]}"${replaceCount[letter] > 1 ? ` ${replaceCount[letter]} times` : ""}`
|
|
12481
12371
|
);
|
|
12482
|
-
}
|
|
12483
|
-
|
|
12372
|
+
});
|
|
12373
|
+
if (sequenceString.length !== sanitizedVal.length) {
|
|
12374
|
+
warnings.push(
|
|
12375
|
+
`${name ? `Sequence ${name}: ` : ""}Invalid character(s) detected and removed: ${invalidChars.slice(0, 100).join(", ")} `
|
|
12376
|
+
);
|
|
12377
|
+
}
|
|
12378
|
+
if (typeof window !== "undefined" && window.toastr && warnings.length) {
|
|
12379
|
+
warnings.forEach((warning) => {
|
|
12380
|
+
window.toastr.warning(warning);
|
|
12381
|
+
});
|
|
12484
12382
|
}
|
|
12383
|
+
return [sanitizedVal, warnings];
|
|
12485
12384
|
}
|
|
12486
12385
|
__name(filterSequenceString, "filterSequenceString");
|
|
12386
|
+
function getAcceptedChars({
|
|
12387
|
+
isOligo,
|
|
12388
|
+
isProtein,
|
|
12389
|
+
isRna,
|
|
12390
|
+
isMixedRnaAndDna,
|
|
12391
|
+
includeStopCodon
|
|
12392
|
+
} = {}) {
|
|
12393
|
+
return isProtein ? `${protein_letters_withUandX.toLowerCase()}${includeStopCodon ? "*." : ""}}` : isOligo ? ambiguous_rna_letters.toLowerCase() + "t" : isRna ? ambiguous_rna_letters.toLowerCase() + "t" : isMixedRnaAndDna ? ambiguous_rna_letters.toLowerCase() + ambiguous_dna_letters.toLowerCase() : (
|
|
12394
|
+
//just plain old dna
|
|
12395
|
+
ambiguous_rna_letters.toLowerCase() + ambiguous_dna_letters.toLowerCase()
|
|
12396
|
+
);
|
|
12397
|
+
}
|
|
12398
|
+
__name(getAcceptedChars, "getAcceptedChars");
|
|
12399
|
+
function getReplaceChars({
|
|
12400
|
+
isOligo,
|
|
12401
|
+
isProtein,
|
|
12402
|
+
isRna,
|
|
12403
|
+
isMixedRnaAndDna
|
|
12404
|
+
} = {}) {
|
|
12405
|
+
return isProtein ? {} : isOligo ? {} : isRna ? { t: "u" } : isMixedRnaAndDna ? {} : (
|
|
12406
|
+
//just plain old dna
|
|
12407
|
+
{}
|
|
12408
|
+
);
|
|
12409
|
+
}
|
|
12410
|
+
__name(getReplaceChars, "getReplaceChars");
|
|
12487
12411
|
function tidyUpAnnotation(_annotation, {
|
|
12488
12412
|
sequenceData = {},
|
|
12489
12413
|
convertAnnotationsFromAAIndices,
|
|
@@ -12596,13 +12520,13 @@ function coerceLocation({
|
|
|
12596
12520
|
messages.push(
|
|
12597
12521
|
"Invalid annotation start: " + location.start + " detected for " + location.name + " and set to size: " + size
|
|
12598
12522
|
);
|
|
12599
|
-
location.start = size - (isProtein ? 3 : 1);
|
|
12523
|
+
location.start = Math.max(0, size - (isProtein ? 3 : 1));
|
|
12600
12524
|
}
|
|
12601
12525
|
if (location.end < 0 || !(location.end <= size - 1) || location.end > size - 1) {
|
|
12602
12526
|
messages.push(
|
|
12603
12527
|
"Invalid annotation end: " + location.end + " detected for " + location.name + " and set to seq size: " + size
|
|
12604
12528
|
);
|
|
12605
|
-
location.end = size - 1;
|
|
12529
|
+
location.end = Math.max(0, size - 1);
|
|
12606
12530
|
}
|
|
12607
12531
|
if (location.start > location.end && circular === false) {
|
|
12608
12532
|
messages.push(
|
|
@@ -12612,14 +12536,6 @@ function coerceLocation({
|
|
|
12612
12536
|
}
|
|
12613
12537
|
}
|
|
12614
12538
|
__name(coerceLocation, "coerceLocation");
|
|
12615
|
-
function filterAminoAcidSequenceString(sequenceString, options) {
|
|
12616
|
-
options = options || {};
|
|
12617
|
-
if (options.includeStopCodon) {
|
|
12618
|
-
return sequenceString.replace(/[^xtgalmfwkqespvicyhrndu.*]/gi, "");
|
|
12619
|
-
}
|
|
12620
|
-
return sequenceString.replace(/[^xtgalmfwkqespvicyhrndu]/gi, "");
|
|
12621
|
-
}
|
|
12622
|
-
__name(filterAminoAcidSequenceString, "filterAminoAcidSequenceString");
|
|
12623
12539
|
function getDegenerateDnaStringFromAAString(aaString) {
|
|
12624
12540
|
return aaString.split("").map((char) => aminoAcidToDegenerateDnaMap[char.toLowerCase()] || "nnn").join("");
|
|
12625
12541
|
}
|
|
@@ -12631,11 +12547,10 @@ function tidyUpSequenceData(pSeqData, options = {}) {
|
|
|
12631
12547
|
removeUnwantedChars,
|
|
12632
12548
|
additionalValidChars,
|
|
12633
12549
|
noTranslationData,
|
|
12634
|
-
charOverrides,
|
|
12635
12550
|
doNotProvideIdsForAnnotations,
|
|
12636
|
-
proteinFilterOptions,
|
|
12637
12551
|
noCdsTranslations,
|
|
12638
|
-
convertAnnotationsFromAAIndices
|
|
12552
|
+
convertAnnotationsFromAAIndices,
|
|
12553
|
+
topLevelSeqData
|
|
12639
12554
|
} = options;
|
|
12640
12555
|
let seqData = lodashExports.cloneDeep(pSeqData);
|
|
12641
12556
|
const response = {
|
|
@@ -12665,16 +12580,15 @@ function tidyUpSequenceData(pSeqData, options = {}) {
|
|
|
12665
12580
|
}
|
|
12666
12581
|
if (removeUnwantedChars) {
|
|
12667
12582
|
if (seqData.isProtein) {
|
|
12668
|
-
seqData.proteinSequence
|
|
12669
|
-
|
|
12670
|
-
|
|
12671
|
-
|
|
12583
|
+
const [newSeq] = filterSequenceString(seqData.proteinSequence, __spreadValues({
|
|
12584
|
+
includeStopCodon: true
|
|
12585
|
+
}, topLevelSeqData || seqData));
|
|
12586
|
+
seqData.proteinSequence = newSeq;
|
|
12672
12587
|
} else {
|
|
12673
|
-
|
|
12674
|
-
|
|
12675
|
-
|
|
12676
|
-
|
|
12677
|
-
);
|
|
12588
|
+
const [newSeq] = filterSequenceString(seqData.sequence, __spreadValues({
|
|
12589
|
+
additionalValidChars
|
|
12590
|
+
}, topLevelSeqData || seqData));
|
|
12591
|
+
seqData.sequence = newSeq;
|
|
12678
12592
|
}
|
|
12679
12593
|
}
|
|
12680
12594
|
if (seqData.isProtein) {
|
|
@@ -13108,7 +13022,7 @@ const calcTmMethods = {
|
|
|
13108
13022
|
calculateTemperature: function(sequence, type, A, R, C, Na) {
|
|
13109
13023
|
if (typeof type === "undefined") {
|
|
13110
13024
|
type = this.TABLE_BRESLAUER;
|
|
13111
|
-
} else if (type != this.TABLE_BRESLAUER &&
|
|
13025
|
+
} else if (type != this.TABLE_BRESLAUER && type != this.TABLE_UNIFIED && type != this.TABLE_SUGIMOTO) {
|
|
13112
13026
|
throw new Error("Invalid table type!");
|
|
13113
13027
|
}
|
|
13114
13028
|
if (!A) {
|
|
@@ -21470,12 +21384,7 @@ function findSequenceMatches(sequence, searchString, options = {}) {
|
|
|
21470
21384
|
}
|
|
21471
21385
|
__name(findSequenceMatches, "findSequenceMatches");
|
|
21472
21386
|
function findSequenceMatchesTopStrand(sequence, searchString, options = {}) {
|
|
21473
|
-
const {
|
|
21474
|
-
isCircular,
|
|
21475
|
-
isAmbiguous,
|
|
21476
|
-
isProteinSequence,
|
|
21477
|
-
isProteinSearch
|
|
21478
|
-
} = options;
|
|
21387
|
+
const { isCircular, isAmbiguous, isProteinSequence, isProteinSearch } = options;
|
|
21479
21388
|
let searchStringToUse = escapeStringRegexp(searchString);
|
|
21480
21389
|
if (isAmbiguous) {
|
|
21481
21390
|
if (isProteinSearch || isProteinSequence) {
|
|
@@ -21608,7 +21517,10 @@ function getComplementAminoAcidStringFromSequenceString(sequenceString) {
|
|
|
21608
21517
|
__name(getComplementAminoAcidStringFromSequenceString, "getComplementAminoAcidStringFromSequenceString");
|
|
21609
21518
|
function getComplementSequenceString(sequence, isRna) {
|
|
21610
21519
|
let complementSeqString = "";
|
|
21611
|
-
const complementMap = lodashExports.merge(
|
|
21520
|
+
const complementMap = lodashExports.merge(
|
|
21521
|
+
DNAComplementMap,
|
|
21522
|
+
isRna ? { a: "u", A: "U" } : { a: "t", A: "T" }
|
|
21523
|
+
);
|
|
21612
21524
|
for (let i = 0; i < sequence.length; i++) {
|
|
21613
21525
|
let complementChar = complementMap[sequence[i]];
|
|
21614
21526
|
if (!complementChar) {
|
|
@@ -21912,7 +21824,9 @@ function getReverseAminoAcidStringFromSequenceString(sequenceString) {
|
|
|
21912
21824
|
}
|
|
21913
21825
|
__name(getReverseAminoAcidStringFromSequenceString, "getReverseAminoAcidStringFromSequenceString");
|
|
21914
21826
|
function getReverseComplementAminoAcidStringFromSequenceString(sequenceString) {
|
|
21915
|
-
return getAminoAcidStringFromSequenceString(
|
|
21827
|
+
return getAminoAcidStringFromSequenceString(
|
|
21828
|
+
getReverseComplementSequenceString(sequenceString)
|
|
21829
|
+
);
|
|
21916
21830
|
}
|
|
21917
21831
|
__name(getReverseComplementAminoAcidStringFromSequenceString, "getReverseComplementAminoAcidStringFromSequenceString");
|
|
21918
21832
|
function getReverseComplementAnnotation(annotation, sequenceLength) {
|
|
@@ -22762,6 +22676,9 @@ function getMassOfAaString(aaString, numsAfterDecimal = 2, divideByThree = false
|
|
|
22762
22676
|
if (divideByThree) {
|
|
22763
22677
|
sumMass /= 3;
|
|
22764
22678
|
}
|
|
22679
|
+
if (aaString.length > 0) {
|
|
22680
|
+
sumMass = sumMass + 18.0153;
|
|
22681
|
+
}
|
|
22765
22682
|
return Math.round(sumMass * __pow(10, numsAfterDecimal)) / __pow(10, numsAfterDecimal);
|
|
22766
22683
|
}
|
|
22767
22684
|
__name(getMassOfAaString, "getMassOfAaString");
|
|
@@ -22811,7 +22728,6 @@ exports.degenerateRnaToAminoAcidMap = degenerateRnaToAminoAcidMap;
|
|
|
22811
22728
|
exports.deleteSequenceDataAtRange = deleteSequenceDataAtRange;
|
|
22812
22729
|
exports.doesEnzymeChopOutsideOfRecognitionSite = doesEnzymeChopOutsideOfRecognitionSite;
|
|
22813
22730
|
exports.featureColors = featureColors;
|
|
22814
|
-
exports.filterAminoAcidSequenceString = filterAminoAcidSequenceString;
|
|
22815
22731
|
exports.filterSequenceString = filterSequenceString;
|
|
22816
22732
|
exports.findNearestRangeOfSequenceOverlapToPosition = findNearestRangeOfSequenceOverlapToPosition;
|
|
22817
22733
|
exports.findOrfsInPlasmid = findOrfsInPlasmid;
|