@teselagen/sequence-utils 0.3.14 → 0.3.15

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.
@@ -1 +1,3 @@
1
- export default function getAminoAcidStringFromSequenceString(sequenceString: any): string;
1
+ export default function getAminoAcidStringFromSequenceString(sequenceString: any, { doNotExcludeAsterisk }?: {
2
+ doNotExcludeAsterisk: any;
3
+ }): string;
package/index.js CHANGED
@@ -21349,7 +21349,7 @@ function escapeStringRegexp(string) {
21349
21349
  return string.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d");
21350
21350
  }
21351
21351
  __name(escapeStringRegexp, "escapeStringRegexp");
21352
- function getAminoAcidStringFromSequenceString(sequenceString) {
21352
+ function getAminoAcidStringFromSequenceString(sequenceString, { doNotExcludeAsterisk } = {}) {
21353
21353
  const aminoAcidsPerBase = getAminoAcidDataForEachBaseOfDna(
21354
21354
  sequenceString,
21355
21355
  true
@@ -21360,7 +21360,7 @@ function getAminoAcidStringFromSequenceString(sequenceString) {
21360
21360
  if (!aa.fullCodon) {
21361
21361
  return;
21362
21362
  }
21363
- if (index === aminoAcidsPerBase.length - 1 && aa.aminoAcid.value === "*") {
21363
+ if (!doNotExcludeAsterisk && index >= aminoAcidsPerBase.length - 3 && aa.aminoAcid.value === "*") {
21364
21364
  return;
21365
21365
  }
21366
21366
  aaArray[aa.aminoAcidIndex] = aa.aminoAcid.value;
@@ -21417,18 +21417,22 @@ function findSequenceMatchesTopStrand(sequence, searchString, options = {}) {
21417
21417
  if (isProteinSearch) {
21418
21418
  sequencesToCheck = [
21419
21419
  {
21420
- seqToCheck: getAminoAcidStringFromSequenceString(sequenceToUse),
21420
+ seqToCheck: getAminoAcidStringFromSequenceString(sequenceToUse, {
21421
+ doNotExcludeAsterisk: true
21422
+ }),
21421
21423
  offset: 0
21422
21424
  },
21423
21425
  {
21424
21426
  seqToCheck: getAminoAcidStringFromSequenceString(
21425
- sequenceToUse.substr(1)
21427
+ sequenceToUse.substr(1),
21428
+ { doNotExcludeAsterisk: true }
21426
21429
  ),
21427
21430
  offset: 1
21428
21431
  },
21429
21432
  {
21430
21433
  seqToCheck: getAminoAcidStringFromSequenceString(
21431
- sequenceToUse.substr(2)
21434
+ sequenceToUse.substr(2),
21435
+ { doNotExcludeAsterisk: true }
21432
21436
  ),
21433
21437
  offset: 2
21434
21438
  }
@@ -21522,7 +21526,7 @@ function getCodonRangeForAASliver(aminoAcidPositionInSequence, aminoAcidSliver,
21522
21526
  }
21523
21527
  __name(getCodonRangeForAASliver, "getCodonRangeForAASliver");
21524
21528
  function getComplementAminoAcidStringFromSequenceString(sequenceString) {
21525
- const aaString = getAminoAcidStringFromSequenceString(sequenceString);
21529
+ const aaString = getAminoAcidStringFromSequenceString(sequenceString, true);
21526
21530
  return aaString.split("").reverse().join("");
21527
21531
  }
21528
21532
  __name(getComplementAminoAcidStringFromSequenceString, "getComplementAminoAcidStringFromSequenceString");
package/index.mjs CHANGED
@@ -21347,7 +21347,7 @@ function escapeStringRegexp(string) {
21347
21347
  return string.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d");
21348
21348
  }
21349
21349
  __name(escapeStringRegexp, "escapeStringRegexp");
21350
- function getAminoAcidStringFromSequenceString(sequenceString) {
21350
+ function getAminoAcidStringFromSequenceString(sequenceString, { doNotExcludeAsterisk } = {}) {
21351
21351
  const aminoAcidsPerBase = getAminoAcidDataForEachBaseOfDna(
21352
21352
  sequenceString,
21353
21353
  true
@@ -21358,7 +21358,7 @@ function getAminoAcidStringFromSequenceString(sequenceString) {
21358
21358
  if (!aa.fullCodon) {
21359
21359
  return;
21360
21360
  }
21361
- if (index === aminoAcidsPerBase.length - 1 && aa.aminoAcid.value === "*") {
21361
+ if (!doNotExcludeAsterisk && index >= aminoAcidsPerBase.length - 3 && aa.aminoAcid.value === "*") {
21362
21362
  return;
21363
21363
  }
21364
21364
  aaArray[aa.aminoAcidIndex] = aa.aminoAcid.value;
@@ -21415,18 +21415,22 @@ function findSequenceMatchesTopStrand(sequence, searchString, options = {}) {
21415
21415
  if (isProteinSearch) {
21416
21416
  sequencesToCheck = [
21417
21417
  {
21418
- seqToCheck: getAminoAcidStringFromSequenceString(sequenceToUse),
21418
+ seqToCheck: getAminoAcidStringFromSequenceString(sequenceToUse, {
21419
+ doNotExcludeAsterisk: true
21420
+ }),
21419
21421
  offset: 0
21420
21422
  },
21421
21423
  {
21422
21424
  seqToCheck: getAminoAcidStringFromSequenceString(
21423
- sequenceToUse.substr(1)
21425
+ sequenceToUse.substr(1),
21426
+ { doNotExcludeAsterisk: true }
21424
21427
  ),
21425
21428
  offset: 1
21426
21429
  },
21427
21430
  {
21428
21431
  seqToCheck: getAminoAcidStringFromSequenceString(
21429
- sequenceToUse.substr(2)
21432
+ sequenceToUse.substr(2),
21433
+ { doNotExcludeAsterisk: true }
21430
21434
  ),
21431
21435
  offset: 2
21432
21436
  }
@@ -21520,7 +21524,7 @@ function getCodonRangeForAASliver(aminoAcidPositionInSequence, aminoAcidSliver,
21520
21524
  }
21521
21525
  __name(getCodonRangeForAASliver, "getCodonRangeForAASliver");
21522
21526
  function getComplementAminoAcidStringFromSequenceString(sequenceString) {
21523
- const aaString = getAminoAcidStringFromSequenceString(sequenceString);
21527
+ const aaString = getAminoAcidStringFromSequenceString(sequenceString, true);
21524
21528
  return aaString.split("").reverse().join("");
21525
21529
  }
21526
21530
  __name(getComplementAminoAcidStringFromSequenceString, "getComplementAminoAcidStringFromSequenceString");
package/index.umd.js CHANGED
@@ -21351,7 +21351,7 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
21351
21351
  return string.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d");
21352
21352
  }
21353
21353
  __name(escapeStringRegexp, "escapeStringRegexp");
21354
- function getAminoAcidStringFromSequenceString(sequenceString) {
21354
+ function getAminoAcidStringFromSequenceString(sequenceString, { doNotExcludeAsterisk } = {}) {
21355
21355
  const aminoAcidsPerBase = getAminoAcidDataForEachBaseOfDna(
21356
21356
  sequenceString,
21357
21357
  true
@@ -21362,7 +21362,7 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
21362
21362
  if (!aa.fullCodon) {
21363
21363
  return;
21364
21364
  }
21365
- if (index === aminoAcidsPerBase.length - 1 && aa.aminoAcid.value === "*") {
21365
+ if (!doNotExcludeAsterisk && index >= aminoAcidsPerBase.length - 3 && aa.aminoAcid.value === "*") {
21366
21366
  return;
21367
21367
  }
21368
21368
  aaArray[aa.aminoAcidIndex] = aa.aminoAcid.value;
@@ -21419,18 +21419,22 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
21419
21419
  if (isProteinSearch) {
21420
21420
  sequencesToCheck = [
21421
21421
  {
21422
- seqToCheck: getAminoAcidStringFromSequenceString(sequenceToUse),
21422
+ seqToCheck: getAminoAcidStringFromSequenceString(sequenceToUse, {
21423
+ doNotExcludeAsterisk: true
21424
+ }),
21423
21425
  offset: 0
21424
21426
  },
21425
21427
  {
21426
21428
  seqToCheck: getAminoAcidStringFromSequenceString(
21427
- sequenceToUse.substr(1)
21429
+ sequenceToUse.substr(1),
21430
+ { doNotExcludeAsterisk: true }
21428
21431
  ),
21429
21432
  offset: 1
21430
21433
  },
21431
21434
  {
21432
21435
  seqToCheck: getAminoAcidStringFromSequenceString(
21433
- sequenceToUse.substr(2)
21436
+ sequenceToUse.substr(2),
21437
+ { doNotExcludeAsterisk: true }
21434
21438
  ),
21435
21439
  offset: 2
21436
21440
  }
@@ -21524,7 +21528,7 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
21524
21528
  }
21525
21529
  __name(getCodonRangeForAASliver, "getCodonRangeForAASliver");
21526
21530
  function getComplementAminoAcidStringFromSequenceString(sequenceString) {
21527
- const aaString = getAminoAcidStringFromSequenceString(sequenceString);
21531
+ const aaString = getAminoAcidStringFromSequenceString(sequenceString, true);
21528
21532
  return aaString.split("").reverse().join("");
21529
21533
  }
21530
21534
  __name(getComplementAminoAcidStringFromSequenceString, "getComplementAminoAcidStringFromSequenceString");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teselagen/sequence-utils",
3
- "version": "0.3.14",
3
+ "version": "0.3.15",
4
4
  "dependencies": {
5
5
  "@teselagen/range-utils": "0.3.7",
6
6
  "bson-objectid": "^2.0.4",
@@ -64,18 +64,22 @@ function findSequenceMatchesTopStrand(sequence, searchString, options = {}) {
64
64
  if (isProteinSearch) {
65
65
  sequencesToCheck = [
66
66
  {
67
- seqToCheck: getAminoAcidStringFromSequenceString(sequenceToUse),
67
+ seqToCheck: getAminoAcidStringFromSequenceString(sequenceToUse, {
68
+ doNotExcludeAsterisk: true
69
+ }),
68
70
  offset: 0
69
71
  },
70
72
  {
71
73
  seqToCheck: getAminoAcidStringFromSequenceString(
72
- sequenceToUse.substr(1)
74
+ sequenceToUse.substr(1),
75
+ { doNotExcludeAsterisk: true }
73
76
  ),
74
77
  offset: 1
75
78
  },
76
79
  {
77
80
  seqToCheck: getAminoAcidStringFromSequenceString(
78
- sequenceToUse.substr(2)
81
+ sequenceToUse.substr(2),
82
+ { doNotExcludeAsterisk: true }
79
83
  ),
80
84
  offset: 2
81
85
  }
@@ -1,7 +1,7 @@
1
1
  import findSequenceMatches from "./findSequenceMatches";
2
2
 
3
3
  describe("findSequenceMatches", () => {
4
- it("ambiguous protein sequence with * as stop codon", () => {
4
+ it('ambiguous protein sequence with asterisk as stop codon', () => {
5
5
  expect(
6
6
  findSequenceMatches("mmhlrl*", "Mxxlrl*", {
7
7
  isAmbiguous: true,
@@ -29,7 +29,7 @@ describe("findSequenceMatches", () => {
29
29
  }
30
30
  ]);
31
31
  });
32
- it("protein sequence with * as stop codon", () => {
32
+ it('protein sequence with asterisk as stop codon', () => {
33
33
  expect(
34
34
  findSequenceMatches("mmhlrl*", "mMh", {
35
35
  isProteinSequence: true /* isProteinSearch: true */
@@ -132,11 +132,11 @@ describe("findSequenceMatches", () => {
132
132
  const matches = findSequenceMatches("atg", "*", { isAmbiguous: true });
133
133
  expect(matches).toEqual([]);
134
134
  });
135
- it("ambiguous, dna searches with *", () => {
135
+ it('ambiguous, dna searches with asterisk', () => {
136
136
  const matches = findSequenceMatches("atg", "", { isAmbiguous: true });
137
137
  expect(matches).toEqual([]);
138
138
  });
139
- it(" AA with * as stop codon", () => {
139
+ it('AA with asterisk as stop codon in atgtaa', () => {
140
140
  expect(
141
141
  findSequenceMatches("atgtaa", "M*", { isProteinSearch: true })
142
142
  ).toEqual([
@@ -146,7 +146,7 @@ describe("findSequenceMatches", () => {
146
146
  }
147
147
  ]);
148
148
  });
149
- it(" AA with * as stop codon", () => {
149
+ it('AA with asterisk as stop codon in atgtaaccc', () => {
150
150
  expect(
151
151
  findSequenceMatches("atgtaaccc", "M**", { isProteinSearch: true })
152
152
  ).toEqual([]);
@@ -164,7 +164,7 @@ describe("findSequenceMatches", () => {
164
164
  }
165
165
  ]);
166
166
  });
167
- it("works with ambiguous AA with * in search string", () => {
167
+ it('works with ambiguous AA with asterisk in search string', () => {
168
168
  expect(
169
169
  findSequenceMatches("atgtaa", "M*", {
170
170
  isProteinSearch: true,
@@ -1,6 +1,6 @@
1
1
  import getAminoAcidDataForEachBaseOfDna from "./getAminoAcidDataForEachBaseOfDna";
2
2
 
3
- export default function getAminoAcidStringFromSequenceString(sequenceString) {
3
+ export default function getAminoAcidStringFromSequenceString(sequenceString, { doNotExcludeAsterisk } = {}) {
4
4
  const aminoAcidsPerBase = getAminoAcidDataForEachBaseOfDna(
5
5
  sequenceString,
6
6
  true
@@ -12,7 +12,7 @@ export default function getAminoAcidStringFromSequenceString(sequenceString) {
12
12
  return;
13
13
  }
14
14
  // Check if the current amino acid is the last in the sequence and is a stop codon
15
- if (index === aminoAcidsPerBase.length - 1 && aa.aminoAcid.value === '*') {
15
+ if (!doNotExcludeAsterisk && index >= aminoAcidsPerBase.length - 3 && aa.aminoAcid.value === '*') {
16
16
  return;
17
17
  }
18
18
  aaArray[aa.aminoAcidIndex] = aa.aminoAcid.value;