@teselagen/sequence-utils 0.3.7 → 0.3.8

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 (104) hide show
  1. package/README.md +89 -0
  2. package/bioData.d.ts +0 -339
  3. package/index.d.ts +7 -7
  4. package/index.js +238 -384
  5. package/index.mjs +238 -384
  6. package/index.umd.js +238 -384
  7. package/package.json +1 -2
  8. package/src/addGapsToSeqReads.js +2 -2
  9. package/src/adjustAnnotationsToInsert.js +3 -3
  10. package/src/adjustBpsToReplaceOrInsert.js +3 -3
  11. package/src/adjustBpsToReplaceOrInsert.test.js +0 -1
  12. package/src/aminoAcidToDnaRna.test.js +1 -1
  13. package/src/annotateSingleSeq.js +1 -1
  14. package/src/annotateSingleSeq.test.js +1 -4
  15. package/src/autoAnnotate.js +5 -2
  16. package/src/autoAnnotate.test.js +6 -30
  17. package/src/bioData.js +0 -365
  18. package/src/calculateNebTa.js +1 -1
  19. package/src/calculateNebTm.js +1 -1
  20. package/src/calculatePercentGC.js +2 -2
  21. package/src/calculateTm.js +19 -102
  22. package/src/computeDigestFragments.js +7 -4
  23. package/src/computeDigestFragments.test.js +1 -1
  24. package/src/condensePairwiseAlignmentDifferences.js +1 -1
  25. package/src/convertAACaretPositionOrRangeToDna.js +1 -1
  26. package/src/convertDnaCaretPositionOrRangeToAA.js +1 -1
  27. package/src/cutSequenceByRestrictionEnzyme.js +3 -3
  28. package/src/cutSequenceByRestrictionEnzyme.test.js +0 -1
  29. package/src/degenerateDnaToAminoAcidMap.js +1 -1
  30. package/src/degenerateRnaToAminoAcidMap.js +1 -1
  31. package/src/deleteSequenceDataAtRange.js +1 -1
  32. package/src/deleteSequenceDataAtRange.test.js +23 -9
  33. package/src/diffUtils.js +4 -4
  34. package/src/diffUtils.test.js +2 -2
  35. package/src/doesEnzymeChopOutsideOfRecognitionSite.js +1 -1
  36. package/src/doesEnzymeChopOutsideOfRecognitionSite.test.js +0 -2
  37. package/src/featureTypesAndColors.js +5 -5
  38. package/src/featureTypesAndColors.test.js +1 -1
  39. package/src/filterAminoAcidSequenceString.js +4 -7
  40. package/src/filterAminoAcidSequenceString.test.js +3 -1
  41. package/src/filterSequenceString.js +5 -3
  42. package/src/findNearestRangeOfSequenceOverlapToPosition.js +1 -1
  43. package/src/findOrfsInPlasmid.js +1 -1
  44. package/src/findSequenceMatches.js +9 -10
  45. package/src/generateAnnotations.js +1 -1
  46. package/src/generateSequenceData.js +1 -1
  47. package/src/generateSequenceData.test.js +1 -1
  48. package/src/getAllInsertionsInSeqReads.js +1 -1
  49. package/src/getAminoAcidDataForEachBaseOfDna.js +2 -2
  50. package/src/getAminoAcidDataForEachBaseOfDna.test.js +0 -2
  51. package/src/getAminoAcidFromSequenceTriplet.js +1 -1
  52. package/src/getAminoAcidStringFromSequenceString.js +1 -1
  53. package/src/getCodonRangeForAASliver.js +1 -1
  54. package/src/getComplementAminoAcidStringFromSequenceString.js +2 -5
  55. package/src/getComplementSequenceAndAnnotations.js +1 -2
  56. package/src/getComplementSequenceString.js +5 -3
  57. package/src/getComplementSequenceString.test.js +6 -6
  58. package/src/getCutsiteType.js +1 -1
  59. package/src/getCutsitesFromSequence.js +1 -1
  60. package/src/getDegenerateDnaStringFromAAString.js +1 -1
  61. package/src/getDegenerateRnaStringFromAAString.js +1 -1
  62. package/src/getDigestFragmentsForCutsites.js +5 -2
  63. package/src/getDigestFragmentsForRestrictionEnzymes.js +2 -2
  64. package/src/getInsertBetweenVals.js +2 -2
  65. package/src/getLeftAndRightOfSequenceInRangeGivenPosition.js +2 -2
  66. package/src/getLeftAndRightOfSequenceInRangeGivenPosition.test.js +0 -2
  67. package/src/getMassOfAaString.js +4 -1
  68. package/src/getMassofAaString.test.js +9 -8
  69. package/src/getOrfsFromSequence.js +1 -2
  70. package/src/getOrfsFromSequence.test.js +1 -3
  71. package/src/getOverlapBetweenTwoSequences.js +3 -3
  72. package/src/getOverlapBetweenTwoSequences.test.js +1 -1
  73. package/src/getPossiblePartsFromSequenceAndEnzymes.js +2 -2
  74. package/src/getReverseAminoAcidStringFromSequenceString.js +1 -1
  75. package/src/getReverseComplementAminoAcidStringFromSequenceString.js +9 -6
  76. package/src/getReverseComplementAnnotation.js +1 -1
  77. package/src/getReverseComplementSequenceAndAnnotations.js +2 -3
  78. package/src/getReverseComplementSequenceString.js +1 -2
  79. package/src/getReverseSequenceString.js +1 -1
  80. package/src/getSequenceDataBetweenRange.js +7 -4
  81. package/src/getSequenceDataBetweenRange.test.js +0 -1
  82. package/src/getVirtualDigest.js +6 -3
  83. package/src/guessIfSequenceIsDnaAndNotProtein.js +2 -2
  84. package/src/index.js +80 -80
  85. package/src/index.test.js +5 -4
  86. package/src/insertGapsIntoRefSeq.js +1 -1
  87. package/src/insertSequenceDataAtPosition.test.js +4 -2
  88. package/src/insertSequenceDataAtPositionOrRange.js +5 -5
  89. package/src/insertSequenceDataAtPositionOrRange.test.js +3 -17
  90. package/src/isEnzymeType2S.js +1 -1
  91. package/src/mapAnnotationsToRows.js +3 -3
  92. package/src/mapAnnotationsToRows.test.js +1 -3
  93. package/src/prepareCircularViewData.js +5 -5
  94. package/src/prepareCircularViewData.test.js +1 -1
  95. package/src/prepareRowData.js +1 -2
  96. package/src/prepareRowData.test.js +1 -3
  97. package/src/prepareRowData_output1.json +381 -381
  98. package/src/proteinAlphabet.js +34 -26
  99. package/src/rotateBpsToPosition.js +7 -11
  100. package/src/rotateBpsToPosition.test.js +6 -6
  101. package/src/rotateSequenceDataToPosition.js +4 -4
  102. package/src/shiftAnnotationsByLen.js +2 -2
  103. package/src/tidyUpAnnotation.js +8 -7
  104. package/src/tidyUpSequenceData.js +3 -3
package/index.js CHANGED
@@ -6000,30 +6000,6 @@ lodash.exports;
6000
6000
  var lodashExports = lodash.exports;
6001
6001
  const protein_letters = "ACDEFGHIKLMNPQRSTVWY";
6002
6002
  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
6003
  const ambiguous_dna_letters = "GATCRYWSMKHBVDN";
6028
6004
  const unambiguous_dna_letters = "GATC";
6029
6005
  const ambiguous_rna_letters = "GAUCRYWSMKHBVDN";
@@ -6048,135 +6024,6 @@ const ambiguous_dna_values = {
6048
6024
  X: "GATC",
6049
6025
  N: "GATC"
6050
6026
  };
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
6027
  const extended_protein_values = {
6181
6028
  A: "A",
6182
6029
  B: "ND",
@@ -6211,140 +6058,17 @@ const extended_protein_values = {
6211
6058
  ".": "\\.\\.",
6212
6059
  "-": "\\-"
6213
6060
  };
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
6061
  const bioData = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
6327
6062
  __proto__: null,
6328
- ambiguous_dna_complement,
6329
6063
  ambiguous_dna_letters,
6330
6064
  ambiguous_dna_values,
6331
- ambiguous_rna_complement,
6332
6065
  ambiguous_rna_letters,
6333
- ambiguous_rna_values,
6334
- atom_weights,
6335
6066
  extended_dna_letters,
6336
6067
  extended_protein_letters,
6337
6068
  extended_protein_values,
6338
- monoisotopic_protein_weights,
6339
- monoisotopic_unambiguous_dna_weights,
6340
- monoisotopic_unambiguous_rna_weights,
6341
6069
  protein_letters,
6342
- protein_letters_1to3,
6343
- protein_weights,
6344
6070
  unambiguous_dna_letters,
6345
- unambiguous_dna_weights,
6346
- unambiguous_rna_letters,
6347
- unambiguous_rna_weights
6071
+ unambiguous_rna_letters
6348
6072
  }, Symbol.toStringTag, { value: "Module" }));
6349
6073
  const aminoAcidToDegenerateDnaMap = {
6350
6074
  "-": "---",
@@ -6458,8 +6182,8 @@ function getOverlapsOfPotentiallyCircularRanges(rangeA, rangeB, maxRangeLength,
6458
6182
  maxRangeLength
6459
6183
  );
6460
6184
  let overlaps = [];
6461
- normalizedRangeA.forEach(function(nonCircularRangeA, iA) {
6462
- normalizedRangeB.forEach(function(nonCircularRangeB, iB) {
6185
+ normalizedRangeA.forEach(function(nonCircularRangeA) {
6186
+ normalizedRangeB.forEach(function(nonCircularRangeB) {
6463
6187
  const overlap = getOverlapOfNonCircularRanges(
6464
6188
  nonCircularRangeA,
6465
6189
  nonCircularRangeB
@@ -6471,7 +6195,7 @@ function getOverlapsOfPotentiallyCircularRanges(rangeA, rangeB, maxRangeLength,
6471
6195
  });
6472
6196
  if (joinIfPossible && normalizedRangeA.length === 2 && normalizedRangeB.length === 2 && maxRangeLength) {
6473
6197
  const joinedOverlap = {};
6474
- overlaps = lodashExports.flatMap(overlaps, (o, i) => {
6198
+ overlaps = lodashExports.flatMap(overlaps, (o) => {
6475
6199
  if (o.start === 0) {
6476
6200
  joinedOverlap.end = o.end;
6477
6201
  return [];
@@ -6569,12 +6293,14 @@ function trimRangeByAnotherRange(rangeToBeTrimmed, trimmingRange, sequenceLength
6569
6293
  });
6570
6294
  splitRangesToBeTrimmed[index] = nonCircularRangeToBeTrimmed;
6571
6295
  });
6572
- const outputSplitRanges = splitRangesToBeTrimmed.filter(function(trimmedRange) {
6573
- if (trimmedRange) {
6574
- return true;
6296
+ const outputSplitRanges = splitRangesToBeTrimmed.filter(
6297
+ function(trimmedRange) {
6298
+ if (trimmedRange) {
6299
+ return true;
6300
+ }
6301
+ return false;
6575
6302
  }
6576
- return false;
6577
- });
6303
+ );
6578
6304
  let outputTrimmedRange;
6579
6305
  if (outputSplitRanges.length < 0)
6580
6306
  ;
@@ -6673,11 +6399,19 @@ function checkIfNonCircularRangesOverlap(range, comparisonRange) {
6673
6399
  }
6674
6400
  __name(checkIfNonCircularRangesOverlap, "checkIfNonCircularRangesOverlap");
6675
6401
  function checkIfPotentiallyCircularRangesOverlap(range, comparisonRange) {
6676
- return splitRangeIntoTwoPartsIfItIsCircular(range, Infinity).some(function(splitRange) {
6677
- return splitRangeIntoTwoPartsIfItIsCircular(comparisonRange, Infinity).some(function(splitComparisonRange) {
6678
- return checkIfNonCircularRangesOverlap(splitRange, splitComparisonRange);
6679
- });
6680
- });
6402
+ return splitRangeIntoTwoPartsIfItIsCircular(range, Infinity).some(
6403
+ function(splitRange) {
6404
+ return splitRangeIntoTwoPartsIfItIsCircular(
6405
+ comparisonRange,
6406
+ Infinity
6407
+ ).some(function(splitComparisonRange) {
6408
+ return checkIfNonCircularRangesOverlap(
6409
+ splitRange,
6410
+ splitComparisonRange
6411
+ );
6412
+ });
6413
+ }
6414
+ );
6681
6415
  }
6682
6416
  __name(checkIfPotentiallyCircularRangesOverlap, "checkIfPotentiallyCircularRangesOverlap");
6683
6417
  function collapseOverlapsGeneratedFromRangeComparisonIfPossible(overlaps, sequenceLength, optionalOriginalRange) {
@@ -6686,15 +6420,19 @@ function collapseOverlapsGeneratedFromRangeComparisonIfPossible(overlaps, sequen
6686
6420
  return overlaps;
6687
6421
  } else if (overlaps.length === 2) {
6688
6422
  if (overlaps[0].start === 0 && overlaps[1].end + 1 === sequenceLength && !originalRangeLinear) {
6689
- return [{
6690
- start: overlaps[1].start,
6691
- end: overlaps[0].end
6692
- }];
6423
+ return [
6424
+ {
6425
+ start: overlaps[1].start,
6426
+ end: overlaps[0].end
6427
+ }
6428
+ ];
6693
6429
  } else if (overlaps[1].start === 0 && overlaps[0].end + 1 === sequenceLength && !originalRangeLinear) {
6694
- return [{
6695
- start: overlaps[0].start,
6696
- end: overlaps[1].end
6697
- }];
6430
+ return [
6431
+ {
6432
+ start: overlaps[0].start,
6433
+ end: overlaps[1].end
6434
+ }
6435
+ ];
6698
6436
  } else {
6699
6437
  return overlaps;
6700
6438
  }
@@ -6702,17 +6440,29 @@ function collapseOverlapsGeneratedFromRangeComparisonIfPossible(overlaps, sequen
6702
6440
  const firstOverlap = overlaps[0];
6703
6441
  const secondOverlap = overlaps[1];
6704
6442
  const thirdOverlap = overlaps[2];
6705
- let collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible([firstOverlap, secondOverlap], sequenceLength, optionalOriginalRange);
6443
+ let collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(
6444
+ [firstOverlap, secondOverlap],
6445
+ sequenceLength,
6446
+ optionalOriginalRange
6447
+ );
6706
6448
  if (collapsedOverlaps.length === 1) {
6707
6449
  collapsedOverlaps.push(thirdOverlap);
6708
6450
  return collapsedOverlaps;
6709
6451
  } else {
6710
- collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible([firstOverlap, thirdOverlap], sequenceLength, optionalOriginalRange);
6452
+ collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(
6453
+ [firstOverlap, thirdOverlap],
6454
+ sequenceLength,
6455
+ optionalOriginalRange
6456
+ );
6711
6457
  if (collapsedOverlaps.length === 1) {
6712
6458
  collapsedOverlaps.push(secondOverlap);
6713
6459
  return collapsedOverlaps;
6714
6460
  } else {
6715
- collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible([secondOverlap, thirdOverlap], sequenceLength, optionalOriginalRange);
6461
+ collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(
6462
+ [secondOverlap, thirdOverlap],
6463
+ sequenceLength,
6464
+ optionalOriginalRange
6465
+ );
6716
6466
  if (collapsedOverlaps.length === 1) {
6717
6467
  collapsedOverlaps.push(firstOverlap);
6718
6468
  return collapsedOverlaps;
@@ -6819,13 +6569,23 @@ function expandOrContractRangeByLength(range, shiftBy, shiftStart, sequenceLengt
6819
6569
  __name(expandOrContractRangeByLength, "expandOrContractRangeByLength");
6820
6570
  function translateRange(rangeToBeAdjusted, translateBy, rangeLength) {
6821
6571
  return lodashExports.assign({}, rangeToBeAdjusted, {
6822
- start: normalizePositionByRangeLength(rangeToBeAdjusted.start + translateBy, rangeLength),
6823
- end: normalizePositionByRangeLength(rangeToBeAdjusted.end + translateBy, rangeLength)
6572
+ start: normalizePositionByRangeLength(
6573
+ rangeToBeAdjusted.start + translateBy,
6574
+ rangeLength
6575
+ ),
6576
+ end: normalizePositionByRangeLength(
6577
+ rangeToBeAdjusted.end + translateBy,
6578
+ rangeLength
6579
+ )
6824
6580
  });
6825
6581
  }
6826
6582
  __name(translateRange, "translateRange");
6827
- function flipRelativeRange(innerRange, outerRange, sequenceLength, options) {
6828
- const isFullyContained = isRangeWithinRange(innerRange, outerRange, sequenceLength);
6583
+ function flipRelativeRange(innerRange, outerRange, sequenceLength) {
6584
+ const isFullyContained = isRangeWithinRange(
6585
+ innerRange,
6586
+ outerRange,
6587
+ sequenceLength
6588
+ );
6829
6589
  if (isFullyContained) {
6830
6590
  return flipFullyContainedRange(innerRange, outerRange, sequenceLength);
6831
6591
  } else {
@@ -6833,42 +6593,92 @@ function flipRelativeRange(innerRange, outerRange, sequenceLength, options) {
6833
6593
  }
6834
6594
  }
6835
6595
  __name(flipRelativeRange, "flipRelativeRange");
6836
- function flipNonFullyContainedRange(innerRange, outerRange, sequenceLength, options) {
6837
- const outerFullyContained = isRangeWithinRange(outerRange, innerRange, sequenceLength);
6596
+ function flipNonFullyContainedRange(innerRange, outerRange, sequenceLength) {
6597
+ const outerFullyContained = isRangeWithinRange(
6598
+ outerRange,
6599
+ innerRange,
6600
+ sequenceLength
6601
+ );
6838
6602
  let flippedInnerRange;
6839
6603
  if (outerFullyContained) {
6840
- const expandBy1 = getRangeLength({
6841
- start: innerRange.start,
6842
- end: outerRange.start
6843
- }, sequenceLength) - 1;
6844
- flippedInnerRange = expandOrContractRangeByLength(outerRange, expandBy1, false, sequenceLength);
6845
- const expandBy2 = getRangeLength({
6846
- end: innerRange.end,
6847
- start: outerRange.end
6848
- }, sequenceLength) - 1;
6849
- flippedInnerRange = expandOrContractRangeByLength(flippedInnerRange, expandBy2, true, sequenceLength);
6604
+ const expandBy1 = getRangeLength(
6605
+ {
6606
+ start: innerRange.start,
6607
+ end: outerRange.start
6608
+ },
6609
+ sequenceLength
6610
+ ) - 1;
6611
+ flippedInnerRange = expandOrContractRangeByLength(
6612
+ outerRange,
6613
+ expandBy1,
6614
+ false,
6615
+ sequenceLength
6616
+ );
6617
+ const expandBy2 = getRangeLength(
6618
+ {
6619
+ end: innerRange.end,
6620
+ start: outerRange.end
6621
+ },
6622
+ sequenceLength
6623
+ ) - 1;
6624
+ flippedInnerRange = expandOrContractRangeByLength(
6625
+ flippedInnerRange,
6626
+ expandBy2,
6627
+ true,
6628
+ sequenceLength
6629
+ );
6850
6630
  } else {
6851
- const overlaps = getOverlapsOfPotentiallyCircularRanges(innerRange, outerRange, sequenceLength);
6631
+ const overlaps = getOverlapsOfPotentiallyCircularRanges(
6632
+ innerRange,
6633
+ outerRange,
6634
+ sequenceLength
6635
+ );
6852
6636
  if (overlaps.length >= 1) {
6853
- let overlapExtendsForward;
6854
6637
  const firstOverlap = overlaps[0];
6855
- overlapExtendsForward = firstOverlap.start !== outerRange.start;
6856
- const flippedTruncatedInner = flipFullyContainedRange(firstOverlap, outerRange, sequenceLength);
6638
+ const overlapExtendsForward = firstOverlap.start !== outerRange.start;
6639
+ const flippedTruncatedInner = flipFullyContainedRange(
6640
+ firstOverlap,
6641
+ outerRange,
6642
+ sequenceLength
6643
+ );
6857
6644
  const lengthToExtend = getRangeLength(innerRange, sequenceLength) - getRangeLength(flippedTruncatedInner, sequenceLength);
6858
- flippedInnerRange = expandOrContractRangeByLength(flippedTruncatedInner, lengthToExtend, overlapExtendsForward, sequenceLength);
6645
+ flippedInnerRange = expandOrContractRangeByLength(
6646
+ flippedTruncatedInner,
6647
+ lengthToExtend,
6648
+ overlapExtendsForward,
6649
+ sequenceLength
6650
+ );
6859
6651
  } else {
6860
- throw new Error("This case (relative ranges that do not overlap) is unsupported! ");
6652
+ throw new Error(
6653
+ "This case (relative ranges that do not overlap) is unsupported! "
6654
+ );
6861
6655
  }
6862
6656
  }
6863
6657
  return flippedInnerRange;
6864
6658
  }
6865
6659
  __name(flipNonFullyContainedRange, "flipNonFullyContainedRange");
6866
- function flipFullyContainedRange(innerRange, outerRange, sequenceLength, options) {
6660
+ function flipFullyContainedRange(innerRange, outerRange, sequenceLength) {
6867
6661
  const translateBy = -outerRange.start;
6868
- const translatedOuterRange = translateRange(outerRange, translateBy, sequenceLength);
6869
- const translatedInnerRange = translateRange(innerRange, translateBy, sequenceLength);
6870
- const translatedFlippedInnerRange = flipNonOriginSpanningContainedRange(translatedInnerRange, translatedOuterRange, sequenceLength);
6871
- const flippedInnerRange = translateRange(translatedFlippedInnerRange, -translateBy, sequenceLength);
6662
+ const translatedOuterRange = translateRange(
6663
+ outerRange,
6664
+ translateBy,
6665
+ sequenceLength
6666
+ );
6667
+ const translatedInnerRange = translateRange(
6668
+ innerRange,
6669
+ translateBy,
6670
+ sequenceLength
6671
+ );
6672
+ const translatedFlippedInnerRange = flipNonOriginSpanningContainedRange(
6673
+ translatedInnerRange,
6674
+ translatedOuterRange,
6675
+ sequenceLength
6676
+ );
6677
+ const flippedInnerRange = translateRange(
6678
+ translatedFlippedInnerRange,
6679
+ -translateBy,
6680
+ sequenceLength
6681
+ );
6872
6682
  return flippedInnerRange;
6873
6683
  }
6874
6684
  __name(flipFullyContainedRange, "flipFullyContainedRange");
@@ -6886,7 +6696,10 @@ function generateRandomRange(minStart, maxEnd, maxLength) {
6886
6696
  const start = getRandomInt$1(minStart, maxEnd);
6887
6697
  let end;
6888
6698
  if (maxLength) {
6889
- end = normalizePositionByRangeLength(getRandomInt$1(start, start + maxLength), maxEnd);
6699
+ end = normalizePositionByRangeLength(
6700
+ getRandomInt$1(start, start + maxLength),
6701
+ maxEnd
6702
+ );
6890
6703
  } else {
6891
6704
  end = getRandomInt$1(minStart, maxEnd);
6892
6705
  }
@@ -6929,18 +6742,26 @@ function getShortestDistanceBetweenTwoPositions(position1, position2, sequenceLe
6929
6742
  __name(getShortestDistanceBetweenTwoPositions, "getShortestDistanceBetweenTwoPositions");
6930
6743
  function getYOffsetForPotentiallyCircularRange(range, YOffsetLevelsWithRanges, assignYOffsetToRange) {
6931
6744
  let yOffset = [];
6932
- const openYOffsetFound = YOffsetLevelsWithRanges.some(function(rangesAlreadyAddedToYOffset, index) {
6933
- const rangeBlocked = rangesAlreadyAddedToYOffset.some(function(comparisonRange) {
6934
- return checkIfPotentiallyCircularRangesOverlap(range, comparisonRange);
6935
- });
6936
- if (!rangeBlocked) {
6937
- yOffset = index;
6938
- if (assignYOffsetToRange)
6939
- range.yOffset = index;
6940
- rangesAlreadyAddedToYOffset.push(range);
6941
- return true;
6745
+ const openYOffsetFound = YOffsetLevelsWithRanges.some(
6746
+ function(rangesAlreadyAddedToYOffset, index) {
6747
+ const rangeBlocked = rangesAlreadyAddedToYOffset.some(
6748
+ function(comparisonRange) {
6749
+ return checkIfPotentiallyCircularRangesOverlap(
6750
+ range,
6751
+ comparisonRange
6752
+ );
6753
+ }
6754
+ );
6755
+ if (!rangeBlocked) {
6756
+ yOffset = index;
6757
+ if (assignYOffsetToRange)
6758
+ range.yOffset = index;
6759
+ rangesAlreadyAddedToYOffset.push(range);
6760
+ return true;
6761
+ }
6762
+ return false;
6942
6763
  }
6943
- });
6764
+ );
6944
6765
  if (!openYOffsetFound) {
6945
6766
  yOffset = YOffsetLevelsWithRanges.length;
6946
6767
  if (assignYOffsetToRange)
@@ -6954,7 +6775,11 @@ function getYOffsetsForPotentiallyCircularRanges(ranges, assignYOffsetToRange) {
6954
6775
  let maxYOffset = 0;
6955
6776
  const yOffsetLevels = [];
6956
6777
  ranges.forEach(function(range) {
6957
- const yOffset = getYOffsetForPotentiallyCircularRange(range, yOffsetLevels, assignYOffsetToRange);
6778
+ const yOffset = getYOffsetForPotentiallyCircularRange(
6779
+ range,
6780
+ yOffsetLevels,
6781
+ assignYOffsetToRange
6782
+ );
6958
6783
  yOffsets.push(yOffset);
6959
6784
  if (yOffset > maxYOffset) {
6960
6785
  maxYOffset = yOffset;
@@ -6987,8 +6812,16 @@ function invertRange$1(rangeOrCaret, rangeMax) {
6987
6812
  }
6988
6813
  __name(invertRange$1, "invertRange$1");
6989
6814
  function isPositionCloserToRangeStartThanRangeEnd(position, range, maxLength) {
6990
- const distanceFromStart = getShortestDistanceBetweenTwoPositions(range.start, position, maxLength);
6991
- const distanceFromEnd = getShortestDistanceBetweenTwoPositions(range.end, position, maxLength);
6815
+ const distanceFromStart = getShortestDistanceBetweenTwoPositions(
6816
+ range.start,
6817
+ position,
6818
+ maxLength
6819
+ );
6820
+ const distanceFromEnd = getShortestDistanceBetweenTwoPositions(
6821
+ range.end,
6822
+ position,
6823
+ maxLength
6824
+ );
6992
6825
  return distanceFromStart <= distanceFromEnd;
6993
6826
  }
6994
6827
  __name(isPositionCloserToRangeStartThanRangeEnd, "isPositionCloserToRangeStartThanRangeEnd");
@@ -7019,9 +6852,15 @@ function reversePositionInRange(position, rangeLength, isInBetweenPositions) {
7019
6852
  }
7020
6853
  __name(reversePositionInRange, "reversePositionInRange");
7021
6854
  function zeroSubrangeByContainerRange(subRange, containerRange, sequenceLength) {
7022
- const trimmedSubRange = trimRangeByAnotherRange(subRange, containerRange, sequenceLength);
6855
+ const trimmedSubRange = trimRangeByAnotherRange(
6856
+ subRange,
6857
+ containerRange,
6858
+ sequenceLength
6859
+ );
7023
6860
  if (trimmedSubRange) {
7024
- throw new Error("subRange must be fully contained by containerRange! Otherwise this function does not make sense");
6861
+ throw new Error(
6862
+ "subRange must be fully contained by containerRange! Otherwise this function does not make sense"
6863
+ );
7025
6864
  }
7026
6865
  const newSubrange = {};
7027
6866
  newSubrange.start = subRange.start - containerRange.start;
@@ -7049,12 +6888,24 @@ function modulo(n, m) {
7049
6888
  }
7050
6889
  __name(modulo, "modulo");
7051
6890
  function getZeroedRangeOverlaps(annotation, selection, sequenceLength) {
7052
- const overlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(getOverlapsOfPotentiallyCircularRanges(annotation, selection, sequenceLength), sequenceLength, annotation);
6891
+ const overlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(
6892
+ getOverlapsOfPotentiallyCircularRanges(
6893
+ annotation,
6894
+ selection,
6895
+ sequenceLength
6896
+ ),
6897
+ sequenceLength,
6898
+ annotation
6899
+ );
7053
6900
  const zeroedOverlaps = overlaps.map((overlap) => {
7054
- return zeroSubrangeByContainerRange(overlap, {
7055
- start: selection.start,
7056
- end: normalizePositionByRangeLength(selection.start - 1, sequenceLength)
7057
- }, sequenceLength);
6901
+ return zeroSubrangeByContainerRange(
6902
+ overlap,
6903
+ {
6904
+ start: selection.start,
6905
+ end: normalizePositionByRangeLength(selection.start - 1, sequenceLength)
6906
+ },
6907
+ sequenceLength
6908
+ );
7058
6909
  });
7059
6910
  return zeroedOverlaps;
7060
6911
  }
@@ -11962,7 +11813,7 @@ const proteinAlphabet = {
11962
11813
  hydrophobicity: 1.8,
11963
11814
  colorByFamily: "#00FFFF",
11964
11815
  color: "hsl(327.3, 100%, 69%)",
11965
- mass: 89.1
11816
+ mass: 71.0779
11966
11817
  },
11967
11818
  R: {
11968
11819
  value: "R",
@@ -11971,7 +11822,7 @@ const proteinAlphabet = {
11971
11822
  hydrophobicity: -4.5,
11972
11823
  colorByFamily: "#FFC0CB",
11973
11824
  color: "hsl(258.1, 100%, 69%)",
11974
- mass: 174.2
11825
+ mass: 156.18568
11975
11826
  },
11976
11827
  N: {
11977
11828
  value: "N",
@@ -11980,7 +11831,7 @@ const proteinAlphabet = {
11980
11831
  hydrophobicity: -3.5,
11981
11832
  colorByFamily: "#D3D3D3",
11982
11833
  color: "hsl(268.9, 100%, 69%)",
11983
- mass: 132.1
11834
+ mass: 114.10264
11984
11835
  },
11985
11836
  D: {
11986
11837
  value: "D",
@@ -11989,7 +11840,7 @@ const proteinAlphabet = {
11989
11840
  hydrophobicity: -3.5,
11990
11841
  colorByFamily: "#EE82EE",
11991
11842
  color: "hsl(268.9, 100%, 69%)",
11992
- mass: 133.1
11843
+ mass: 115.0874
11993
11844
  },
11994
11845
  C: {
11995
11846
  value: "C",
@@ -11998,7 +11849,7 @@ const proteinAlphabet = {
11998
11849
  hydrophobicity: 2.5,
11999
11850
  colorByFamily: "#FFFF00",
12000
11851
  color: "hsl(335.1, 100%, 69%)",
12001
- mass: 121.2
11852
+ mass: 103.1429
12002
11853
  },
12003
11854
  E: {
12004
11855
  value: "E",
@@ -12007,7 +11858,7 @@ const proteinAlphabet = {
12007
11858
  hydrophobicity: -3.5,
12008
11859
  colorByFamily: "#EE82EE",
12009
11860
  color: "hsl(268.9, 100%, 69%)",
12010
- mass: 147.1
11861
+ mass: 129.11398
12011
11862
  },
12012
11863
  Q: {
12013
11864
  value: "Q",
@@ -12016,7 +11867,7 @@ const proteinAlphabet = {
12016
11867
  hydrophobicity: -3.5,
12017
11868
  colorByFamily: "#D3D3D3",
12018
11869
  color: "hsl(268.9, 100%, 69%)",
12019
- mass: 146.2
11870
+ mass: 128.12922
12020
11871
  },
12021
11872
  G: {
12022
11873
  value: "G",
@@ -12025,7 +11876,7 @@ const proteinAlphabet = {
12025
11876
  hydrophobicity: -0.4,
12026
11877
  colorByFamily: "#00FFFF",
12027
11878
  color: "hsl(303.1, 100%, 69%)",
12028
- mass: 75.1
11879
+ mass: 57.05132
12029
11880
  },
12030
11881
  H: {
12031
11882
  value: "H",
@@ -12034,7 +11885,7 @@ const proteinAlphabet = {
12034
11885
  hydrophobicity: -3.2,
12035
11886
  colorByFamily: "#FFC0CB",
12036
11887
  color: "hsl(272.2, 100%, 69%)",
12037
- mass: 155.2
11888
+ mass: 137.13928
12038
11889
  },
12039
11890
  I: {
12040
11891
  value: "I",
@@ -12043,7 +11894,7 @@ const proteinAlphabet = {
12043
11894
  hydrophobicity: 4.5,
12044
11895
  colorByFamily: "#00FFFF",
12045
11896
  color: "hsl(356.9, 100%, 69%)",
12046
- mass: 131.2
11897
+ mass: 113.15764
12047
11898
  },
12048
11899
  L: {
12049
11900
  value: "L",
@@ -12052,7 +11903,7 @@ const proteinAlphabet = {
12052
11903
  hydrophobicity: 3.8,
12053
11904
  colorByFamily: "#00FFFF",
12054
11905
  color: "hsl(349.4, 100%, 69%)",
12055
- mass: 131.2
11906
+ mass: 113.15764
12056
11907
  },
12057
11908
  K: {
12058
11909
  value: "K",
@@ -12061,7 +11912,7 @@ const proteinAlphabet = {
12061
11912
  hydrophobicity: -3.9,
12062
11913
  colorByFamily: "#FFC0CB",
12063
11914
  color: "hsl(264.7, 100%, 69%)",
12064
- mass: 146.2
11915
+ mass: 128.17228
12065
11916
  },
12066
11917
  M: {
12067
11918
  value: "M",
@@ -12070,7 +11921,7 @@ const proteinAlphabet = {
12070
11921
  hydrophobicity: 1.9,
12071
11922
  colorByFamily: "#FFFF00",
12072
11923
  color: "hsl(328.5, 100%, 69%)",
12073
- mass: 149.2
11924
+ mass: 131.19606
12074
11925
  },
12075
11926
  F: {
12076
11927
  value: "F",
@@ -12079,7 +11930,7 @@ const proteinAlphabet = {
12079
11930
  hydrophobicity: 2.8,
12080
11931
  colorByFamily: "#FFA500",
12081
11932
  color: "hsl(338.4, 100%, 69%)",
12082
- mass: 165.2
11933
+ mass: 147.17386
12083
11934
  },
12084
11935
  P: {
12085
11936
  value: "P",
@@ -12088,7 +11939,7 @@ const proteinAlphabet = {
12088
11939
  hydrophobicity: -1.6,
12089
11940
  colorByFamily: "#00FFFF",
12090
11941
  color: "hsl(289.9, 100%, 69%)",
12091
- mass: 115.1
11942
+ mass: 97.11518
12092
11943
  },
12093
11944
  S: {
12094
11945
  value: "S",
@@ -12097,7 +11948,7 @@ const proteinAlphabet = {
12097
11948
  hydrophobicity: -0.8,
12098
11949
  colorByFamily: "#90EE90",
12099
11950
  color: "hsl(298.6, 100%, 69%)",
12100
- mass: 105.1
11951
+ mass: 87.0773
12101
11952
  },
12102
11953
  T: {
12103
11954
  value: "T",
@@ -12106,7 +11957,7 @@ const proteinAlphabet = {
12106
11957
  hydrophobicity: -0.7,
12107
11958
  colorByFamily: "#90EE90",
12108
11959
  color: "hsl(299.8, 100%, 69%)",
12109
- mass: 119.1
11960
+ mass: 101.10388
12110
11961
  },
12111
11962
  U: {
12112
11963
  value: "U",
@@ -12114,7 +11965,7 @@ const proteinAlphabet = {
12114
11965
  threeLettersName: "Sec",
12115
11966
  colorByFamily: "#FF0000",
12116
11967
  color: "hsl(0, 100%, 69%)",
12117
- mass: 168.1
11968
+ mass: 150.3079
12118
11969
  },
12119
11970
  W: {
12120
11971
  value: "W",
@@ -12123,7 +11974,7 @@ const proteinAlphabet = {
12123
11974
  hydrophobicity: -0.9,
12124
11975
  colorByFamily: "#FFA500",
12125
11976
  color: "hsl(297.6, 100%, 69%)",
12126
- mass: 204.2
11977
+ mass: 186.2099
12127
11978
  },
12128
11979
  Y: {
12129
11980
  value: "Y",
@@ -12132,7 +11983,7 @@ const proteinAlphabet = {
12132
11983
  hydrophobicity: -1.3,
12133
11984
  colorByFamily: "#FFA500",
12134
11985
  color: "hsl(293.2, 100%, 69%)",
12135
- mass: 181.2
11986
+ mass: 163.17326
12136
11987
  },
12137
11988
  V: {
12138
11989
  value: "V",
@@ -12141,7 +11992,7 @@ const proteinAlphabet = {
12141
11992
  hydrophobicity: 4.2,
12142
11993
  colorByFamily: "#00FFFF",
12143
11994
  color: "hsl(353.6, 100%, 69%)",
12144
- mass: 117.1
11995
+ mass: 99.13106
12145
11996
  },
12146
11997
  "*": {
12147
11998
  value: "*",
@@ -12596,13 +12447,13 @@ function coerceLocation({
12596
12447
  messages.push(
12597
12448
  "Invalid annotation start: " + location.start + " detected for " + location.name + " and set to size: " + size
12598
12449
  );
12599
- location.start = size - (isProtein ? 3 : 1);
12450
+ location.start = Math.max(0, size - (isProtein ? 3 : 1));
12600
12451
  }
12601
12452
  if (location.end < 0 || !(location.end <= size - 1) || location.end > size - 1) {
12602
12453
  messages.push(
12603
12454
  "Invalid annotation end: " + location.end + " detected for " + location.name + " and set to seq size: " + size
12604
12455
  );
12605
- location.end = size - 1;
12456
+ location.end = Math.max(0, size - 1);
12606
12457
  }
12607
12458
  if (location.start > location.end && circular === false) {
12608
12459
  messages.push(
@@ -12615,9 +12466,9 @@ __name(coerceLocation, "coerceLocation");
12615
12466
  function filterAminoAcidSequenceString(sequenceString, options) {
12616
12467
  options = options || {};
12617
12468
  if (options.includeStopCodon) {
12618
- return sequenceString.replace(/[^xtgalmfwkqespvicyhrndu.*]/gi, "");
12469
+ return sequenceString == null ? void 0 : sequenceString.replace(/[^xtgalmfwkqespvicyhrndu.*]/gi, "");
12619
12470
  }
12620
- return sequenceString.replace(/[^xtgalmfwkqespvicyhrndu]/gi, "");
12471
+ return sequenceString == null ? void 0 : sequenceString.replace(/[^xtgalmfwkqespvicyhrndu]/gi, "");
12621
12472
  }
12622
12473
  __name(filterAminoAcidSequenceString, "filterAminoAcidSequenceString");
12623
12474
  function getDegenerateDnaStringFromAAString(aaString) {
@@ -13108,7 +12959,7 @@ const calcTmMethods = {
13108
12959
  calculateTemperature: function(sequence, type, A, R, C, Na) {
13109
12960
  if (typeof type === "undefined") {
13110
12961
  type = this.TABLE_BRESLAUER;
13111
- } else if (type != this.TABLE_BRESLAUER && (type != this.TABLE_UNIFIED && type != this.TABLE_SUGIMOTO)) {
12962
+ } else if (type != this.TABLE_BRESLAUER && type != this.TABLE_UNIFIED && type != this.TABLE_SUGIMOTO) {
13112
12963
  throw new Error("Invalid table type!");
13113
12964
  }
13114
12965
  if (!A) {
@@ -21470,12 +21321,7 @@ function findSequenceMatches(sequence, searchString, options = {}) {
21470
21321
  }
21471
21322
  __name(findSequenceMatches, "findSequenceMatches");
21472
21323
  function findSequenceMatchesTopStrand(sequence, searchString, options = {}) {
21473
- const {
21474
- isCircular,
21475
- isAmbiguous,
21476
- isProteinSequence,
21477
- isProteinSearch
21478
- } = options;
21324
+ const { isCircular, isAmbiguous, isProteinSequence, isProteinSearch } = options;
21479
21325
  let searchStringToUse = escapeStringRegexp(searchString);
21480
21326
  if (isAmbiguous) {
21481
21327
  if (isProteinSearch || isProteinSequence) {
@@ -21608,7 +21454,10 @@ function getComplementAminoAcidStringFromSequenceString(sequenceString) {
21608
21454
  __name(getComplementAminoAcidStringFromSequenceString, "getComplementAminoAcidStringFromSequenceString");
21609
21455
  function getComplementSequenceString(sequence, isRna) {
21610
21456
  let complementSeqString = "";
21611
- const complementMap = lodashExports.merge(DNAComplementMap, isRna ? { a: "u", A: "U" } : { a: "t", A: "T" });
21457
+ const complementMap = lodashExports.merge(
21458
+ DNAComplementMap,
21459
+ isRna ? { a: "u", A: "U" } : { a: "t", A: "T" }
21460
+ );
21612
21461
  for (let i = 0; i < sequence.length; i++) {
21613
21462
  let complementChar = complementMap[sequence[i]];
21614
21463
  if (!complementChar) {
@@ -21912,7 +21761,9 @@ function getReverseAminoAcidStringFromSequenceString(sequenceString) {
21912
21761
  }
21913
21762
  __name(getReverseAminoAcidStringFromSequenceString, "getReverseAminoAcidStringFromSequenceString");
21914
21763
  function getReverseComplementAminoAcidStringFromSequenceString(sequenceString) {
21915
- return getAminoAcidStringFromSequenceString(getReverseComplementSequenceString(sequenceString));
21764
+ return getAminoAcidStringFromSequenceString(
21765
+ getReverseComplementSequenceString(sequenceString)
21766
+ );
21916
21767
  }
21917
21768
  __name(getReverseComplementAminoAcidStringFromSequenceString, "getReverseComplementAminoAcidStringFromSequenceString");
21918
21769
  function getReverseComplementAnnotation(annotation, sequenceLength) {
@@ -22762,6 +22613,9 @@ function getMassOfAaString(aaString, numsAfterDecimal = 2, divideByThree = false
22762
22613
  if (divideByThree) {
22763
22614
  sumMass /= 3;
22764
22615
  }
22616
+ if (aaString.length > 0) {
22617
+ sumMass = sumMass + 18.0153;
22618
+ }
22765
22619
  return Math.round(sumMass * __pow(10, numsAfterDecimal)) / __pow(10, numsAfterDecimal);
22766
22620
  }
22767
22621
  __name(getMassOfAaString, "getMassOfAaString");