@teselagen/sequence-utils 0.3.6 → 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 +2 -3
  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.mjs CHANGED
@@ -5998,30 +5998,6 @@ lodash.exports;
5998
5998
  var lodashExports = lodash.exports;
5999
5999
  const protein_letters = "ACDEFGHIKLMNPQRSTVWY";
6000
6000
  const extended_protein_letters = "ACDEFGHIKLMNPQRSTVWYBXZJUO.*-";
6001
- const protein_letters_1to3 = {
6002
- A: "Ala",
6003
- C: "Cys",
6004
- D: "Asp",
6005
- E: "Glu",
6006
- F: "Phe",
6007
- G: "Gly",
6008
- H: "His",
6009
- I: "Ile",
6010
- K: "Lys",
6011
- L: "Leu",
6012
- M: "Met",
6013
- N: "Asn",
6014
- P: "Pro",
6015
- Q: "Gln",
6016
- R: "Arg",
6017
- S: "Ser",
6018
- T: "Thr",
6019
- V: "Val",
6020
- W: "Trp",
6021
- Y: "Tyr",
6022
- O: "Pyl",
6023
- U: "Sec"
6024
- };
6025
6001
  const ambiguous_dna_letters = "GATCRYWSMKHBVDN";
6026
6002
  const unambiguous_dna_letters = "GATC";
6027
6003
  const ambiguous_rna_letters = "GAUCRYWSMKHBVDN";
@@ -6046,135 +6022,6 @@ const ambiguous_dna_values = {
6046
6022
  X: "GATC",
6047
6023
  N: "GATC"
6048
6024
  };
6049
- const ambiguous_rna_values = {
6050
- ".": ".",
6051
- A: "A",
6052
- C: "C",
6053
- G: "G",
6054
- U: "U",
6055
- M: "AC",
6056
- R: "AG",
6057
- W: "AU",
6058
- S: "CG",
6059
- Y: "CU",
6060
- K: "GU",
6061
- V: "ACG",
6062
- H: "ACU",
6063
- D: "AGU",
6064
- B: "CGU",
6065
- X: "GAUC",
6066
- N: "GAUC"
6067
- };
6068
- const ambiguous_dna_complement = {
6069
- ".": ".",
6070
- A: "T",
6071
- C: "G",
6072
- G: "C",
6073
- T: "A",
6074
- M: "K",
6075
- R: "Y",
6076
- W: "W",
6077
- S: "S",
6078
- Y: "R",
6079
- K: "M",
6080
- V: "B",
6081
- H: "D",
6082
- D: "H",
6083
- B: "V",
6084
- X: "X",
6085
- N: "N"
6086
- };
6087
- const ambiguous_rna_complement = {
6088
- ".": ".",
6089
- A: "U",
6090
- C: "G",
6091
- G: "C",
6092
- U: "A",
6093
- M: "K",
6094
- R: "Y",
6095
- W: "W",
6096
- S: "S",
6097
- Y: "R",
6098
- K: "M",
6099
- V: "B",
6100
- H: "D",
6101
- D: "H",
6102
- B: "V",
6103
- X: "X",
6104
- N: "N"
6105
- };
6106
- const unambiguous_dna_weights = {
6107
- A: 331.2218,
6108
- C: 307.1971,
6109
- G: 347.2212,
6110
- T: 322.2085
6111
- };
6112
- const monoisotopic_unambiguous_dna_weights = {
6113
- A: 331.06817,
6114
- C: 307.056936,
6115
- G: 347.063084,
6116
- T: 322.056602
6117
- };
6118
- const unambiguous_rna_weights = {
6119
- A: 347.2212,
6120
- C: 323.1965,
6121
- G: 363.2206,
6122
- U: 324.1813
6123
- };
6124
- const monoisotopic_unambiguous_rna_weights = {
6125
- A: 347.063084,
6126
- C: 323.051851,
6127
- G: 363.057999,
6128
- U: 324.035867
6129
- };
6130
- const protein_weights = {
6131
- A: 89.0932,
6132
- C: 121.1582,
6133
- D: 133.1027,
6134
- E: 147.1293,
6135
- F: 165.1891,
6136
- G: 75.0666,
6137
- H: 155.1546,
6138
- I: 131.1729,
6139
- K: 146.1876,
6140
- L: 131.1729,
6141
- M: 149.2113,
6142
- N: 132.1179,
6143
- O: 255.3134,
6144
- P: 115.1305,
6145
- Q: 146.1445,
6146
- R: 174.201,
6147
- S: 105.0926,
6148
- T: 119.1192,
6149
- U: 168.0532,
6150
- V: 117.1463,
6151
- W: 204.2252,
6152
- Y: 181.1885
6153
- };
6154
- const monoisotopic_protein_weights = {
6155
- A: 89.047678,
6156
- C: 121.019749,
6157
- D: 133.037508,
6158
- E: 147.053158,
6159
- F: 165.078979,
6160
- G: 75.032028,
6161
- H: 155.069477,
6162
- I: 131.094629,
6163
- K: 146.105528,
6164
- L: 131.094629,
6165
- M: 149.051049,
6166
- N: 132.053492,
6167
- O: 255.158292,
6168
- P: 115.063329,
6169
- Q: 146.069142,
6170
- R: 174.111676,
6171
- S: 105.042593,
6172
- T: 119.058243,
6173
- U: 168.964203,
6174
- V: 117.078979,
6175
- W: 204.089878,
6176
- Y: 181.073893
6177
- };
6178
6025
  const extended_protein_values = {
6179
6026
  A: "A",
6180
6027
  B: "ND",
@@ -6209,140 +6056,17 @@ const extended_protein_values = {
6209
6056
  ".": "\\.\\.",
6210
6057
  "-": "\\-"
6211
6058
  };
6212
- const atom_weights = {
6213
- H: 1.00794,
6214
- D: 2.0141,
6215
- He: 4.002602,
6216
- Li: 6.941,
6217
- Be: 9.012182,
6218
- B: 10.811,
6219
- C: 12.0107,
6220
- N: 14.0067,
6221
- O: 15.9994,
6222
- F: 18.9984032,
6223
- Ne: 20.1797,
6224
- Na: 22.98977,
6225
- Mg: 24.305,
6226
- Al: 26.981538,
6227
- Si: 28.0855,
6228
- P: 30.973761,
6229
- S: 32.065,
6230
- Cl: 35.453,
6231
- Ar: 39.948,
6232
- K: 39.0983,
6233
- Ca: 40.078,
6234
- Sc: 44.95591,
6235
- Ti: 47.867,
6236
- V: 50.9415,
6237
- Cr: 51.9961,
6238
- Mn: 54.938049,
6239
- Fe: 55.845,
6240
- Co: 58.9332,
6241
- Ni: 58.6934,
6242
- Cu: 63.546,
6243
- Zn: 65.39,
6244
- Ga: 69.723,
6245
- Ge: 72.64,
6246
- As: 74.9216,
6247
- Se: 78.96,
6248
- Br: 79.904,
6249
- Kr: 83.8,
6250
- Rb: 85.4678,
6251
- Sr: 87.62,
6252
- Y: 88.90585,
6253
- Zr: 91.224,
6254
- Nb: 92.90638,
6255
- Mo: 95.94,
6256
- Tc: 98,
6257
- Ru: 101.07,
6258
- Rh: 102.9055,
6259
- Pd: 106.42,
6260
- Ag: 107.8682,
6261
- Cd: 112.411,
6262
- In: 114.818,
6263
- Sn: 118.71,
6264
- Sb: 121.76,
6265
- Te: 127.6,
6266
- I: 126.90447,
6267
- Xe: 131.293,
6268
- Cs: 132.90545,
6269
- Ba: 137.327,
6270
- La: 138.9055,
6271
- Ce: 140.116,
6272
- Pr: 140.90765,
6273
- Nd: 144.24,
6274
- Pm: 145,
6275
- Sm: 150.36,
6276
- Eu: 151.964,
6277
- Gd: 157.25,
6278
- Tb: 158.92534,
6279
- Dy: 162.5,
6280
- Ho: 164.93032,
6281
- Er: 167.259,
6282
- Tm: 168.93421,
6283
- Yb: 173.04,
6284
- Lu: 174.967,
6285
- Hf: 178.49,
6286
- Ta: 180.9479,
6287
- W: 183.84,
6288
- Re: 186.207,
6289
- Os: 190.23,
6290
- Ir: 192.217,
6291
- Pt: 195.078,
6292
- Au: 196.96655,
6293
- Hg: 200.59,
6294
- Tl: 204.3833,
6295
- Pb: 207.2,
6296
- Bi: 208.98038,
6297
- Po: 208.98,
6298
- At: 209.99,
6299
- Rn: 222.02,
6300
- Fr: 223.02,
6301
- Ra: 226.03,
6302
- Ac: 227.03,
6303
- Th: 232.0381,
6304
- Pa: 231.03588,
6305
- U: 238.02891,
6306
- Np: 237.05,
6307
- Pu: 244.06,
6308
- Am: 243.06,
6309
- Cm: 247.07,
6310
- Bk: 247.07,
6311
- Cf: 251.08,
6312
- Es: 252.08,
6313
- Fm: 257.1,
6314
- Md: 258.1,
6315
- No: 259.1,
6316
- Lr: 262.11,
6317
- Rf: 261.11,
6318
- Db: 262.11,
6319
- Sg: 266.12,
6320
- Bh: 264.12,
6321
- Hs: 269.13,
6322
- Mt: 268.14
6323
- };
6324
6059
  const bioData = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
6325
6060
  __proto__: null,
6326
- ambiguous_dna_complement,
6327
6061
  ambiguous_dna_letters,
6328
6062
  ambiguous_dna_values,
6329
- ambiguous_rna_complement,
6330
6063
  ambiguous_rna_letters,
6331
- ambiguous_rna_values,
6332
- atom_weights,
6333
6064
  extended_dna_letters,
6334
6065
  extended_protein_letters,
6335
6066
  extended_protein_values,
6336
- monoisotopic_protein_weights,
6337
- monoisotopic_unambiguous_dna_weights,
6338
- monoisotopic_unambiguous_rna_weights,
6339
6067
  protein_letters,
6340
- protein_letters_1to3,
6341
- protein_weights,
6342
6068
  unambiguous_dna_letters,
6343
- unambiguous_dna_weights,
6344
- unambiguous_rna_letters,
6345
- unambiguous_rna_weights
6069
+ unambiguous_rna_letters
6346
6070
  }, Symbol.toStringTag, { value: "Module" }));
6347
6071
  const aminoAcidToDegenerateDnaMap = {
6348
6072
  "-": "---",
@@ -6456,8 +6180,8 @@ function getOverlapsOfPotentiallyCircularRanges(rangeA, rangeB, maxRangeLength,
6456
6180
  maxRangeLength
6457
6181
  );
6458
6182
  let overlaps = [];
6459
- normalizedRangeA.forEach(function(nonCircularRangeA, iA) {
6460
- normalizedRangeB.forEach(function(nonCircularRangeB, iB) {
6183
+ normalizedRangeA.forEach(function(nonCircularRangeA) {
6184
+ normalizedRangeB.forEach(function(nonCircularRangeB) {
6461
6185
  const overlap = getOverlapOfNonCircularRanges(
6462
6186
  nonCircularRangeA,
6463
6187
  nonCircularRangeB
@@ -6469,7 +6193,7 @@ function getOverlapsOfPotentiallyCircularRanges(rangeA, rangeB, maxRangeLength,
6469
6193
  });
6470
6194
  if (joinIfPossible && normalizedRangeA.length === 2 && normalizedRangeB.length === 2 && maxRangeLength) {
6471
6195
  const joinedOverlap = {};
6472
- overlaps = lodashExports.flatMap(overlaps, (o, i) => {
6196
+ overlaps = lodashExports.flatMap(overlaps, (o) => {
6473
6197
  if (o.start === 0) {
6474
6198
  joinedOverlap.end = o.end;
6475
6199
  return [];
@@ -6567,12 +6291,14 @@ function trimRangeByAnotherRange(rangeToBeTrimmed, trimmingRange, sequenceLength
6567
6291
  });
6568
6292
  splitRangesToBeTrimmed[index] = nonCircularRangeToBeTrimmed;
6569
6293
  });
6570
- const outputSplitRanges = splitRangesToBeTrimmed.filter(function(trimmedRange) {
6571
- if (trimmedRange) {
6572
- return true;
6294
+ const outputSplitRanges = splitRangesToBeTrimmed.filter(
6295
+ function(trimmedRange) {
6296
+ if (trimmedRange) {
6297
+ return true;
6298
+ }
6299
+ return false;
6573
6300
  }
6574
- return false;
6575
- });
6301
+ );
6576
6302
  let outputTrimmedRange;
6577
6303
  if (outputSplitRanges.length < 0)
6578
6304
  ;
@@ -6671,11 +6397,19 @@ function checkIfNonCircularRangesOverlap(range, comparisonRange) {
6671
6397
  }
6672
6398
  __name(checkIfNonCircularRangesOverlap, "checkIfNonCircularRangesOverlap");
6673
6399
  function checkIfPotentiallyCircularRangesOverlap(range, comparisonRange) {
6674
- return splitRangeIntoTwoPartsIfItIsCircular(range, Infinity).some(function(splitRange) {
6675
- return splitRangeIntoTwoPartsIfItIsCircular(comparisonRange, Infinity).some(function(splitComparisonRange) {
6676
- return checkIfNonCircularRangesOverlap(splitRange, splitComparisonRange);
6677
- });
6678
- });
6400
+ return splitRangeIntoTwoPartsIfItIsCircular(range, Infinity).some(
6401
+ function(splitRange) {
6402
+ return splitRangeIntoTwoPartsIfItIsCircular(
6403
+ comparisonRange,
6404
+ Infinity
6405
+ ).some(function(splitComparisonRange) {
6406
+ return checkIfNonCircularRangesOverlap(
6407
+ splitRange,
6408
+ splitComparisonRange
6409
+ );
6410
+ });
6411
+ }
6412
+ );
6679
6413
  }
6680
6414
  __name(checkIfPotentiallyCircularRangesOverlap, "checkIfPotentiallyCircularRangesOverlap");
6681
6415
  function collapseOverlapsGeneratedFromRangeComparisonIfPossible(overlaps, sequenceLength, optionalOriginalRange) {
@@ -6684,15 +6418,19 @@ function collapseOverlapsGeneratedFromRangeComparisonIfPossible(overlaps, sequen
6684
6418
  return overlaps;
6685
6419
  } else if (overlaps.length === 2) {
6686
6420
  if (overlaps[0].start === 0 && overlaps[1].end + 1 === sequenceLength && !originalRangeLinear) {
6687
- return [{
6688
- start: overlaps[1].start,
6689
- end: overlaps[0].end
6690
- }];
6421
+ return [
6422
+ {
6423
+ start: overlaps[1].start,
6424
+ end: overlaps[0].end
6425
+ }
6426
+ ];
6691
6427
  } else if (overlaps[1].start === 0 && overlaps[0].end + 1 === sequenceLength && !originalRangeLinear) {
6692
- return [{
6693
- start: overlaps[0].start,
6694
- end: overlaps[1].end
6695
- }];
6428
+ return [
6429
+ {
6430
+ start: overlaps[0].start,
6431
+ end: overlaps[1].end
6432
+ }
6433
+ ];
6696
6434
  } else {
6697
6435
  return overlaps;
6698
6436
  }
@@ -6700,17 +6438,29 @@ function collapseOverlapsGeneratedFromRangeComparisonIfPossible(overlaps, sequen
6700
6438
  const firstOverlap = overlaps[0];
6701
6439
  const secondOverlap = overlaps[1];
6702
6440
  const thirdOverlap = overlaps[2];
6703
- let collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible([firstOverlap, secondOverlap], sequenceLength, optionalOriginalRange);
6441
+ let collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(
6442
+ [firstOverlap, secondOverlap],
6443
+ sequenceLength,
6444
+ optionalOriginalRange
6445
+ );
6704
6446
  if (collapsedOverlaps.length === 1) {
6705
6447
  collapsedOverlaps.push(thirdOverlap);
6706
6448
  return collapsedOverlaps;
6707
6449
  } else {
6708
- collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible([firstOverlap, thirdOverlap], sequenceLength, optionalOriginalRange);
6450
+ collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(
6451
+ [firstOverlap, thirdOverlap],
6452
+ sequenceLength,
6453
+ optionalOriginalRange
6454
+ );
6709
6455
  if (collapsedOverlaps.length === 1) {
6710
6456
  collapsedOverlaps.push(secondOverlap);
6711
6457
  return collapsedOverlaps;
6712
6458
  } else {
6713
- collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible([secondOverlap, thirdOverlap], sequenceLength, optionalOriginalRange);
6459
+ collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(
6460
+ [secondOverlap, thirdOverlap],
6461
+ sequenceLength,
6462
+ optionalOriginalRange
6463
+ );
6714
6464
  if (collapsedOverlaps.length === 1) {
6715
6465
  collapsedOverlaps.push(firstOverlap);
6716
6466
  return collapsedOverlaps;
@@ -6817,13 +6567,23 @@ function expandOrContractRangeByLength(range, shiftBy, shiftStart, sequenceLengt
6817
6567
  __name(expandOrContractRangeByLength, "expandOrContractRangeByLength");
6818
6568
  function translateRange(rangeToBeAdjusted, translateBy, rangeLength) {
6819
6569
  return lodashExports.assign({}, rangeToBeAdjusted, {
6820
- start: normalizePositionByRangeLength(rangeToBeAdjusted.start + translateBy, rangeLength),
6821
- end: normalizePositionByRangeLength(rangeToBeAdjusted.end + translateBy, rangeLength)
6570
+ start: normalizePositionByRangeLength(
6571
+ rangeToBeAdjusted.start + translateBy,
6572
+ rangeLength
6573
+ ),
6574
+ end: normalizePositionByRangeLength(
6575
+ rangeToBeAdjusted.end + translateBy,
6576
+ rangeLength
6577
+ )
6822
6578
  });
6823
6579
  }
6824
6580
  __name(translateRange, "translateRange");
6825
- function flipRelativeRange(innerRange, outerRange, sequenceLength, options) {
6826
- const isFullyContained = isRangeWithinRange(innerRange, outerRange, sequenceLength);
6581
+ function flipRelativeRange(innerRange, outerRange, sequenceLength) {
6582
+ const isFullyContained = isRangeWithinRange(
6583
+ innerRange,
6584
+ outerRange,
6585
+ sequenceLength
6586
+ );
6827
6587
  if (isFullyContained) {
6828
6588
  return flipFullyContainedRange(innerRange, outerRange, sequenceLength);
6829
6589
  } else {
@@ -6831,42 +6591,92 @@ function flipRelativeRange(innerRange, outerRange, sequenceLength, options) {
6831
6591
  }
6832
6592
  }
6833
6593
  __name(flipRelativeRange, "flipRelativeRange");
6834
- function flipNonFullyContainedRange(innerRange, outerRange, sequenceLength, options) {
6835
- const outerFullyContained = isRangeWithinRange(outerRange, innerRange, sequenceLength);
6594
+ function flipNonFullyContainedRange(innerRange, outerRange, sequenceLength) {
6595
+ const outerFullyContained = isRangeWithinRange(
6596
+ outerRange,
6597
+ innerRange,
6598
+ sequenceLength
6599
+ );
6836
6600
  let flippedInnerRange;
6837
6601
  if (outerFullyContained) {
6838
- const expandBy1 = getRangeLength({
6839
- start: innerRange.start,
6840
- end: outerRange.start
6841
- }, sequenceLength) - 1;
6842
- flippedInnerRange = expandOrContractRangeByLength(outerRange, expandBy1, false, sequenceLength);
6843
- const expandBy2 = getRangeLength({
6844
- end: innerRange.end,
6845
- start: outerRange.end
6846
- }, sequenceLength) - 1;
6847
- flippedInnerRange = expandOrContractRangeByLength(flippedInnerRange, expandBy2, true, sequenceLength);
6602
+ const expandBy1 = getRangeLength(
6603
+ {
6604
+ start: innerRange.start,
6605
+ end: outerRange.start
6606
+ },
6607
+ sequenceLength
6608
+ ) - 1;
6609
+ flippedInnerRange = expandOrContractRangeByLength(
6610
+ outerRange,
6611
+ expandBy1,
6612
+ false,
6613
+ sequenceLength
6614
+ );
6615
+ const expandBy2 = getRangeLength(
6616
+ {
6617
+ end: innerRange.end,
6618
+ start: outerRange.end
6619
+ },
6620
+ sequenceLength
6621
+ ) - 1;
6622
+ flippedInnerRange = expandOrContractRangeByLength(
6623
+ flippedInnerRange,
6624
+ expandBy2,
6625
+ true,
6626
+ sequenceLength
6627
+ );
6848
6628
  } else {
6849
- const overlaps = getOverlapsOfPotentiallyCircularRanges(innerRange, outerRange, sequenceLength);
6629
+ const overlaps = getOverlapsOfPotentiallyCircularRanges(
6630
+ innerRange,
6631
+ outerRange,
6632
+ sequenceLength
6633
+ );
6850
6634
  if (overlaps.length >= 1) {
6851
- let overlapExtendsForward;
6852
6635
  const firstOverlap = overlaps[0];
6853
- overlapExtendsForward = firstOverlap.start !== outerRange.start;
6854
- const flippedTruncatedInner = flipFullyContainedRange(firstOverlap, outerRange, sequenceLength);
6636
+ const overlapExtendsForward = firstOverlap.start !== outerRange.start;
6637
+ const flippedTruncatedInner = flipFullyContainedRange(
6638
+ firstOverlap,
6639
+ outerRange,
6640
+ sequenceLength
6641
+ );
6855
6642
  const lengthToExtend = getRangeLength(innerRange, sequenceLength) - getRangeLength(flippedTruncatedInner, sequenceLength);
6856
- flippedInnerRange = expandOrContractRangeByLength(flippedTruncatedInner, lengthToExtend, overlapExtendsForward, sequenceLength);
6643
+ flippedInnerRange = expandOrContractRangeByLength(
6644
+ flippedTruncatedInner,
6645
+ lengthToExtend,
6646
+ overlapExtendsForward,
6647
+ sequenceLength
6648
+ );
6857
6649
  } else {
6858
- throw new Error("This case (relative ranges that do not overlap) is unsupported! ");
6650
+ throw new Error(
6651
+ "This case (relative ranges that do not overlap) is unsupported! "
6652
+ );
6859
6653
  }
6860
6654
  }
6861
6655
  return flippedInnerRange;
6862
6656
  }
6863
6657
  __name(flipNonFullyContainedRange, "flipNonFullyContainedRange");
6864
- function flipFullyContainedRange(innerRange, outerRange, sequenceLength, options) {
6658
+ function flipFullyContainedRange(innerRange, outerRange, sequenceLength) {
6865
6659
  const translateBy = -outerRange.start;
6866
- const translatedOuterRange = translateRange(outerRange, translateBy, sequenceLength);
6867
- const translatedInnerRange = translateRange(innerRange, translateBy, sequenceLength);
6868
- const translatedFlippedInnerRange = flipNonOriginSpanningContainedRange(translatedInnerRange, translatedOuterRange, sequenceLength);
6869
- const flippedInnerRange = translateRange(translatedFlippedInnerRange, -translateBy, sequenceLength);
6660
+ const translatedOuterRange = translateRange(
6661
+ outerRange,
6662
+ translateBy,
6663
+ sequenceLength
6664
+ );
6665
+ const translatedInnerRange = translateRange(
6666
+ innerRange,
6667
+ translateBy,
6668
+ sequenceLength
6669
+ );
6670
+ const translatedFlippedInnerRange = flipNonOriginSpanningContainedRange(
6671
+ translatedInnerRange,
6672
+ translatedOuterRange,
6673
+ sequenceLength
6674
+ );
6675
+ const flippedInnerRange = translateRange(
6676
+ translatedFlippedInnerRange,
6677
+ -translateBy,
6678
+ sequenceLength
6679
+ );
6870
6680
  return flippedInnerRange;
6871
6681
  }
6872
6682
  __name(flipFullyContainedRange, "flipFullyContainedRange");
@@ -6884,7 +6694,10 @@ function generateRandomRange(minStart, maxEnd, maxLength) {
6884
6694
  const start = getRandomInt$1(minStart, maxEnd);
6885
6695
  let end;
6886
6696
  if (maxLength) {
6887
- end = normalizePositionByRangeLength(getRandomInt$1(start, start + maxLength), maxEnd);
6697
+ end = normalizePositionByRangeLength(
6698
+ getRandomInt$1(start, start + maxLength),
6699
+ maxEnd
6700
+ );
6888
6701
  } else {
6889
6702
  end = getRandomInt$1(minStart, maxEnd);
6890
6703
  }
@@ -6927,18 +6740,26 @@ function getShortestDistanceBetweenTwoPositions(position1, position2, sequenceLe
6927
6740
  __name(getShortestDistanceBetweenTwoPositions, "getShortestDistanceBetweenTwoPositions");
6928
6741
  function getYOffsetForPotentiallyCircularRange(range, YOffsetLevelsWithRanges, assignYOffsetToRange) {
6929
6742
  let yOffset = [];
6930
- const openYOffsetFound = YOffsetLevelsWithRanges.some(function(rangesAlreadyAddedToYOffset, index) {
6931
- const rangeBlocked = rangesAlreadyAddedToYOffset.some(function(comparisonRange) {
6932
- return checkIfPotentiallyCircularRangesOverlap(range, comparisonRange);
6933
- });
6934
- if (!rangeBlocked) {
6935
- yOffset = index;
6936
- if (assignYOffsetToRange)
6937
- range.yOffset = index;
6938
- rangesAlreadyAddedToYOffset.push(range);
6939
- return true;
6743
+ const openYOffsetFound = YOffsetLevelsWithRanges.some(
6744
+ function(rangesAlreadyAddedToYOffset, index) {
6745
+ const rangeBlocked = rangesAlreadyAddedToYOffset.some(
6746
+ function(comparisonRange) {
6747
+ return checkIfPotentiallyCircularRangesOverlap(
6748
+ range,
6749
+ comparisonRange
6750
+ );
6751
+ }
6752
+ );
6753
+ if (!rangeBlocked) {
6754
+ yOffset = index;
6755
+ if (assignYOffsetToRange)
6756
+ range.yOffset = index;
6757
+ rangesAlreadyAddedToYOffset.push(range);
6758
+ return true;
6759
+ }
6760
+ return false;
6940
6761
  }
6941
- });
6762
+ );
6942
6763
  if (!openYOffsetFound) {
6943
6764
  yOffset = YOffsetLevelsWithRanges.length;
6944
6765
  if (assignYOffsetToRange)
@@ -6952,7 +6773,11 @@ function getYOffsetsForPotentiallyCircularRanges(ranges, assignYOffsetToRange) {
6952
6773
  let maxYOffset = 0;
6953
6774
  const yOffsetLevels = [];
6954
6775
  ranges.forEach(function(range) {
6955
- const yOffset = getYOffsetForPotentiallyCircularRange(range, yOffsetLevels, assignYOffsetToRange);
6776
+ const yOffset = getYOffsetForPotentiallyCircularRange(
6777
+ range,
6778
+ yOffsetLevels,
6779
+ assignYOffsetToRange
6780
+ );
6956
6781
  yOffsets.push(yOffset);
6957
6782
  if (yOffset > maxYOffset) {
6958
6783
  maxYOffset = yOffset;
@@ -6985,8 +6810,16 @@ function invertRange$1(rangeOrCaret, rangeMax) {
6985
6810
  }
6986
6811
  __name(invertRange$1, "invertRange$1");
6987
6812
  function isPositionCloserToRangeStartThanRangeEnd(position, range, maxLength) {
6988
- const distanceFromStart = getShortestDistanceBetweenTwoPositions(range.start, position, maxLength);
6989
- const distanceFromEnd = getShortestDistanceBetweenTwoPositions(range.end, position, maxLength);
6813
+ const distanceFromStart = getShortestDistanceBetweenTwoPositions(
6814
+ range.start,
6815
+ position,
6816
+ maxLength
6817
+ );
6818
+ const distanceFromEnd = getShortestDistanceBetweenTwoPositions(
6819
+ range.end,
6820
+ position,
6821
+ maxLength
6822
+ );
6990
6823
  return distanceFromStart <= distanceFromEnd;
6991
6824
  }
6992
6825
  __name(isPositionCloserToRangeStartThanRangeEnd, "isPositionCloserToRangeStartThanRangeEnd");
@@ -7017,9 +6850,15 @@ function reversePositionInRange(position, rangeLength, isInBetweenPositions) {
7017
6850
  }
7018
6851
  __name(reversePositionInRange, "reversePositionInRange");
7019
6852
  function zeroSubrangeByContainerRange(subRange, containerRange, sequenceLength) {
7020
- const trimmedSubRange = trimRangeByAnotherRange(subRange, containerRange, sequenceLength);
6853
+ const trimmedSubRange = trimRangeByAnotherRange(
6854
+ subRange,
6855
+ containerRange,
6856
+ sequenceLength
6857
+ );
7021
6858
  if (trimmedSubRange) {
7022
- throw new Error("subRange must be fully contained by containerRange! Otherwise this function does not make sense");
6859
+ throw new Error(
6860
+ "subRange must be fully contained by containerRange! Otherwise this function does not make sense"
6861
+ );
7023
6862
  }
7024
6863
  const newSubrange = {};
7025
6864
  newSubrange.start = subRange.start - containerRange.start;
@@ -7047,12 +6886,24 @@ function modulo(n, m) {
7047
6886
  }
7048
6887
  __name(modulo, "modulo");
7049
6888
  function getZeroedRangeOverlaps(annotation, selection, sequenceLength) {
7050
- const overlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(getOverlapsOfPotentiallyCircularRanges(annotation, selection, sequenceLength), sequenceLength, annotation);
6889
+ const overlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(
6890
+ getOverlapsOfPotentiallyCircularRanges(
6891
+ annotation,
6892
+ selection,
6893
+ sequenceLength
6894
+ ),
6895
+ sequenceLength,
6896
+ annotation
6897
+ );
7051
6898
  const zeroedOverlaps = overlaps.map((overlap) => {
7052
- return zeroSubrangeByContainerRange(overlap, {
7053
- start: selection.start,
7054
- end: normalizePositionByRangeLength(selection.start - 1, sequenceLength)
7055
- }, sequenceLength);
6899
+ return zeroSubrangeByContainerRange(
6900
+ overlap,
6901
+ {
6902
+ start: selection.start,
6903
+ end: normalizePositionByRangeLength(selection.start - 1, sequenceLength)
6904
+ },
6905
+ sequenceLength
6906
+ );
7056
6907
  });
7057
6908
  return zeroedOverlaps;
7058
6909
  }
@@ -11960,7 +11811,7 @@ const proteinAlphabet = {
11960
11811
  hydrophobicity: 1.8,
11961
11812
  colorByFamily: "#00FFFF",
11962
11813
  color: "hsl(327.3, 100%, 69%)",
11963
- mass: 89.1
11814
+ mass: 71.0779
11964
11815
  },
11965
11816
  R: {
11966
11817
  value: "R",
@@ -11969,7 +11820,7 @@ const proteinAlphabet = {
11969
11820
  hydrophobicity: -4.5,
11970
11821
  colorByFamily: "#FFC0CB",
11971
11822
  color: "hsl(258.1, 100%, 69%)",
11972
- mass: 174.2
11823
+ mass: 156.18568
11973
11824
  },
11974
11825
  N: {
11975
11826
  value: "N",
@@ -11978,7 +11829,7 @@ const proteinAlphabet = {
11978
11829
  hydrophobicity: -3.5,
11979
11830
  colorByFamily: "#D3D3D3",
11980
11831
  color: "hsl(268.9, 100%, 69%)",
11981
- mass: 132.1
11832
+ mass: 114.10264
11982
11833
  },
11983
11834
  D: {
11984
11835
  value: "D",
@@ -11987,7 +11838,7 @@ const proteinAlphabet = {
11987
11838
  hydrophobicity: -3.5,
11988
11839
  colorByFamily: "#EE82EE",
11989
11840
  color: "hsl(268.9, 100%, 69%)",
11990
- mass: 133.1
11841
+ mass: 115.0874
11991
11842
  },
11992
11843
  C: {
11993
11844
  value: "C",
@@ -11996,7 +11847,7 @@ const proteinAlphabet = {
11996
11847
  hydrophobicity: 2.5,
11997
11848
  colorByFamily: "#FFFF00",
11998
11849
  color: "hsl(335.1, 100%, 69%)",
11999
- mass: 121.2
11850
+ mass: 103.1429
12000
11851
  },
12001
11852
  E: {
12002
11853
  value: "E",
@@ -12005,7 +11856,7 @@ const proteinAlphabet = {
12005
11856
  hydrophobicity: -3.5,
12006
11857
  colorByFamily: "#EE82EE",
12007
11858
  color: "hsl(268.9, 100%, 69%)",
12008
- mass: 147.1
11859
+ mass: 129.11398
12009
11860
  },
12010
11861
  Q: {
12011
11862
  value: "Q",
@@ -12014,7 +11865,7 @@ const proteinAlphabet = {
12014
11865
  hydrophobicity: -3.5,
12015
11866
  colorByFamily: "#D3D3D3",
12016
11867
  color: "hsl(268.9, 100%, 69%)",
12017
- mass: 146.2
11868
+ mass: 128.12922
12018
11869
  },
12019
11870
  G: {
12020
11871
  value: "G",
@@ -12023,7 +11874,7 @@ const proteinAlphabet = {
12023
11874
  hydrophobicity: -0.4,
12024
11875
  colorByFamily: "#00FFFF",
12025
11876
  color: "hsl(303.1, 100%, 69%)",
12026
- mass: 75.1
11877
+ mass: 57.05132
12027
11878
  },
12028
11879
  H: {
12029
11880
  value: "H",
@@ -12032,7 +11883,7 @@ const proteinAlphabet = {
12032
11883
  hydrophobicity: -3.2,
12033
11884
  colorByFamily: "#FFC0CB",
12034
11885
  color: "hsl(272.2, 100%, 69%)",
12035
- mass: 155.2
11886
+ mass: 137.13928
12036
11887
  },
12037
11888
  I: {
12038
11889
  value: "I",
@@ -12041,7 +11892,7 @@ const proteinAlphabet = {
12041
11892
  hydrophobicity: 4.5,
12042
11893
  colorByFamily: "#00FFFF",
12043
11894
  color: "hsl(356.9, 100%, 69%)",
12044
- mass: 131.2
11895
+ mass: 113.15764
12045
11896
  },
12046
11897
  L: {
12047
11898
  value: "L",
@@ -12050,7 +11901,7 @@ const proteinAlphabet = {
12050
11901
  hydrophobicity: 3.8,
12051
11902
  colorByFamily: "#00FFFF",
12052
11903
  color: "hsl(349.4, 100%, 69%)",
12053
- mass: 131.2
11904
+ mass: 113.15764
12054
11905
  },
12055
11906
  K: {
12056
11907
  value: "K",
@@ -12059,7 +11910,7 @@ const proteinAlphabet = {
12059
11910
  hydrophobicity: -3.9,
12060
11911
  colorByFamily: "#FFC0CB",
12061
11912
  color: "hsl(264.7, 100%, 69%)",
12062
- mass: 146.2
11913
+ mass: 128.17228
12063
11914
  },
12064
11915
  M: {
12065
11916
  value: "M",
@@ -12068,7 +11919,7 @@ const proteinAlphabet = {
12068
11919
  hydrophobicity: 1.9,
12069
11920
  colorByFamily: "#FFFF00",
12070
11921
  color: "hsl(328.5, 100%, 69%)",
12071
- mass: 149.2
11922
+ mass: 131.19606
12072
11923
  },
12073
11924
  F: {
12074
11925
  value: "F",
@@ -12077,7 +11928,7 @@ const proteinAlphabet = {
12077
11928
  hydrophobicity: 2.8,
12078
11929
  colorByFamily: "#FFA500",
12079
11930
  color: "hsl(338.4, 100%, 69%)",
12080
- mass: 165.2
11931
+ mass: 147.17386
12081
11932
  },
12082
11933
  P: {
12083
11934
  value: "P",
@@ -12086,7 +11937,7 @@ const proteinAlphabet = {
12086
11937
  hydrophobicity: -1.6,
12087
11938
  colorByFamily: "#00FFFF",
12088
11939
  color: "hsl(289.9, 100%, 69%)",
12089
- mass: 115.1
11940
+ mass: 97.11518
12090
11941
  },
12091
11942
  S: {
12092
11943
  value: "S",
@@ -12095,7 +11946,7 @@ const proteinAlphabet = {
12095
11946
  hydrophobicity: -0.8,
12096
11947
  colorByFamily: "#90EE90",
12097
11948
  color: "hsl(298.6, 100%, 69%)",
12098
- mass: 105.1
11949
+ mass: 87.0773
12099
11950
  },
12100
11951
  T: {
12101
11952
  value: "T",
@@ -12104,7 +11955,7 @@ const proteinAlphabet = {
12104
11955
  hydrophobicity: -0.7,
12105
11956
  colorByFamily: "#90EE90",
12106
11957
  color: "hsl(299.8, 100%, 69%)",
12107
- mass: 119.1
11958
+ mass: 101.10388
12108
11959
  },
12109
11960
  U: {
12110
11961
  value: "U",
@@ -12112,7 +11963,7 @@ const proteinAlphabet = {
12112
11963
  threeLettersName: "Sec",
12113
11964
  colorByFamily: "#FF0000",
12114
11965
  color: "hsl(0, 100%, 69%)",
12115
- mass: 168.1
11966
+ mass: 150.3079
12116
11967
  },
12117
11968
  W: {
12118
11969
  value: "W",
@@ -12121,7 +11972,7 @@ const proteinAlphabet = {
12121
11972
  hydrophobicity: -0.9,
12122
11973
  colorByFamily: "#FFA500",
12123
11974
  color: "hsl(297.6, 100%, 69%)",
12124
- mass: 204.2
11975
+ mass: 186.2099
12125
11976
  },
12126
11977
  Y: {
12127
11978
  value: "Y",
@@ -12130,7 +11981,7 @@ const proteinAlphabet = {
12130
11981
  hydrophobicity: -1.3,
12131
11982
  colorByFamily: "#FFA500",
12132
11983
  color: "hsl(293.2, 100%, 69%)",
12133
- mass: 181.2
11984
+ mass: 163.17326
12134
11985
  },
12135
11986
  V: {
12136
11987
  value: "V",
@@ -12139,7 +11990,7 @@ const proteinAlphabet = {
12139
11990
  hydrophobicity: 4.2,
12140
11991
  colorByFamily: "#00FFFF",
12141
11992
  color: "hsl(353.6, 100%, 69%)",
12142
- mass: 117.1
11993
+ mass: 99.13106
12143
11994
  },
12144
11995
  "*": {
12145
11996
  value: "*",
@@ -12594,13 +12445,13 @@ function coerceLocation({
12594
12445
  messages.push(
12595
12446
  "Invalid annotation start: " + location.start + " detected for " + location.name + " and set to size: " + size
12596
12447
  );
12597
- location.start = size - (isProtein ? 3 : 1);
12448
+ location.start = Math.max(0, size - (isProtein ? 3 : 1));
12598
12449
  }
12599
12450
  if (location.end < 0 || !(location.end <= size - 1) || location.end > size - 1) {
12600
12451
  messages.push(
12601
12452
  "Invalid annotation end: " + location.end + " detected for " + location.name + " and set to seq size: " + size
12602
12453
  );
12603
- location.end = size - 1;
12454
+ location.end = Math.max(0, size - 1);
12604
12455
  }
12605
12456
  if (location.start > location.end && circular === false) {
12606
12457
  messages.push(
@@ -12613,9 +12464,9 @@ __name(coerceLocation, "coerceLocation");
12613
12464
  function filterAminoAcidSequenceString(sequenceString, options) {
12614
12465
  options = options || {};
12615
12466
  if (options.includeStopCodon) {
12616
- return sequenceString.replace(/[^xtgalmfwkqespvicyhrndu.*]/gi, "");
12467
+ return sequenceString == null ? void 0 : sequenceString.replace(/[^xtgalmfwkqespvicyhrndu.*]/gi, "");
12617
12468
  }
12618
- return sequenceString.replace(/[^xtgalmfwkqespvicyhrndu]/gi, "");
12469
+ return sequenceString == null ? void 0 : sequenceString.replace(/[^xtgalmfwkqespvicyhrndu]/gi, "");
12619
12470
  }
12620
12471
  __name(filterAminoAcidSequenceString, "filterAminoAcidSequenceString");
12621
12472
  function getDegenerateDnaStringFromAAString(aaString) {
@@ -13106,7 +12957,7 @@ const calcTmMethods = {
13106
12957
  calculateTemperature: function(sequence, type, A, R, C, Na) {
13107
12958
  if (typeof type === "undefined") {
13108
12959
  type = this.TABLE_BRESLAUER;
13109
- } else if (type != this.TABLE_BRESLAUER && (type != this.TABLE_UNIFIED && type != this.TABLE_SUGIMOTO)) {
12960
+ } else if (type != this.TABLE_BRESLAUER && type != this.TABLE_UNIFIED && type != this.TABLE_SUGIMOTO) {
13110
12961
  throw new Error("Invalid table type!");
13111
12962
  }
13112
12963
  if (!A) {
@@ -21468,12 +21319,7 @@ function findSequenceMatches(sequence, searchString, options = {}) {
21468
21319
  }
21469
21320
  __name(findSequenceMatches, "findSequenceMatches");
21470
21321
  function findSequenceMatchesTopStrand(sequence, searchString, options = {}) {
21471
- const {
21472
- isCircular,
21473
- isAmbiguous,
21474
- isProteinSequence,
21475
- isProteinSearch
21476
- } = options;
21322
+ const { isCircular, isAmbiguous, isProteinSequence, isProteinSearch } = options;
21477
21323
  let searchStringToUse = escapeStringRegexp(searchString);
21478
21324
  if (isAmbiguous) {
21479
21325
  if (isProteinSearch || isProteinSequence) {
@@ -21606,7 +21452,10 @@ function getComplementAminoAcidStringFromSequenceString(sequenceString) {
21606
21452
  __name(getComplementAminoAcidStringFromSequenceString, "getComplementAminoAcidStringFromSequenceString");
21607
21453
  function getComplementSequenceString(sequence, isRna) {
21608
21454
  let complementSeqString = "";
21609
- const complementMap = lodashExports.merge(DNAComplementMap, isRna ? { a: "u", A: "U" } : { a: "t", A: "T" });
21455
+ const complementMap = lodashExports.merge(
21456
+ DNAComplementMap,
21457
+ isRna ? { a: "u", A: "U" } : { a: "t", A: "T" }
21458
+ );
21610
21459
  for (let i = 0; i < sequence.length; i++) {
21611
21460
  let complementChar = complementMap[sequence[i]];
21612
21461
  if (!complementChar) {
@@ -21910,7 +21759,9 @@ function getReverseAminoAcidStringFromSequenceString(sequenceString) {
21910
21759
  }
21911
21760
  __name(getReverseAminoAcidStringFromSequenceString, "getReverseAminoAcidStringFromSequenceString");
21912
21761
  function getReverseComplementAminoAcidStringFromSequenceString(sequenceString) {
21913
- return getAminoAcidStringFromSequenceString(getReverseComplementSequenceString(sequenceString));
21762
+ return getAminoAcidStringFromSequenceString(
21763
+ getReverseComplementSequenceString(sequenceString)
21764
+ );
21914
21765
  }
21915
21766
  __name(getReverseComplementAminoAcidStringFromSequenceString, "getReverseComplementAminoAcidStringFromSequenceString");
21916
21767
  function getReverseComplementAnnotation(annotation, sequenceLength) {
@@ -22760,6 +22611,9 @@ function getMassOfAaString(aaString, numsAfterDecimal = 2, divideByThree = false
22760
22611
  if (divideByThree) {
22761
22612
  sumMass /= 3;
22762
22613
  }
22614
+ if (aaString.length > 0) {
22615
+ sumMass = sumMass + 18.0153;
22616
+ }
22763
22617
  return Math.round(sumMass * __pow(10, numsAfterDecimal)) / __pow(10, numsAfterDecimal);
22764
22618
  }
22765
22619
  __name(getMassOfAaString, "getMassOfAaString");