@teselagen/sequence-utils 0.3.12 → 0.3.13

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,4 +1,4 @@
1
- export default function filterSequenceString(sequenceString: any, { additionalValidChars, isOligo, name, isProtein, isRna, isMixedRnaAndDna }?: {
1
+ export default function filterSequenceString(sequenceString?: string, { additionalValidChars, isOligo, name, isProtein, isRna, isMixedRnaAndDna }?: {
2
2
  additionalValidChars?: string | undefined;
3
3
  isOligo: any;
4
4
  name: any;
@@ -22,3 +22,4 @@ export function getReplaceChars({ isOligo, isProtein, isRna, isMixedRnaAndDna }?
22
22
  } | {
23
23
  t: string;
24
24
  };
25
+ export function filterRnaString(s: any, o: any): string | string[];
package/index.d.ts CHANGED
@@ -20,7 +20,6 @@ export { default as aliasedEnzymesByName } from "./aliasedEnzymesByName";
20
20
  export { default as defaultEnzymesByName } from "./defaultEnzymesByName";
21
21
  export { default as generateSequenceData } from "./generateSequenceData";
22
22
  export { default as generateAnnotations } from "./generateAnnotations";
23
- export { default as filterSequenceString } from "./filterSequenceString";
24
23
  export { default as findNearestRangeOfSequenceOverlapToPosition } from "./findNearestRangeOfSequenceOverlapToPosition";
25
24
  export { default as findOrfsInPlasmid } from "./findOrfsInPlasmid";
26
25
  export { default as findSequenceMatches } from "./findSequenceMatches";
@@ -82,3 +81,4 @@ import { autoAnnotate } from "./autoAnnotate";
82
81
  import { convertApELikeRegexToRegex } from "./autoAnnotate";
83
82
  import { convertProteinSeqToDNAIupac } from "./autoAnnotate";
84
83
  export { getFeatureToColorMap, getFeatureTypes, genbankFeatureTypes, getMergedFeatureMap, autoAnnotate, convertApELikeRegexToRegex, convertProteinSeqToDNAIupac };
84
+ export { default as filterSequenceString, filterRnaString } from "./filterSequenceString";
package/index.js CHANGED
@@ -12323,7 +12323,7 @@ const modifiableTypes = [
12323
12323
  "primers",
12324
12324
  "guides"
12325
12325
  ];
12326
- function filterSequenceString(sequenceString, {
12326
+ function filterSequenceString(sequenceString = "", {
12327
12327
  additionalValidChars = "",
12328
12328
  isOligo,
12329
12329
  name,
@@ -12408,6 +12408,7 @@ function getReplaceChars({
12408
12408
  );
12409
12409
  }
12410
12410
  __name(getReplaceChars, "getReplaceChars");
12411
+ const filterRnaString = /* @__PURE__ */ __name((s, o) => filterSequenceString(s, __spreadProps(__spreadValues({}, o), { isRna: true }))[0], "filterRnaString");
12411
12412
  function tidyUpAnnotation(_annotation, {
12412
12413
  sequenceData = {},
12413
12414
  convertAnnotationsFromAAIndices,
@@ -13328,11 +13329,12 @@ function adjustAnnotationsToInsert(annotationsToBeAdjusted, insertStart, insertL
13328
13329
  __name(adjustAnnotationsToInsert, "adjustAnnotationsToInsert");
13329
13330
  function insertSequenceDataAtPositionOrRange(_sequenceDataToInsert, _existingSequenceData, caretPositionOrRange, options = {}) {
13330
13331
  const { maintainOriginSplit } = options;
13331
- let existingSequenceData = tidyUpSequenceData(_existingSequenceData, __spreadValues({ doNotRemoveInvalidChars: true }, options));
13332
- const sequenceDataToInsert = tidyUpSequenceData(
13333
- _sequenceDataToInsert,
13334
- options
13335
- );
13332
+ let existingSequenceData = tidyUpSequenceData(_existingSequenceData, __spreadValues({
13333
+ doNotRemoveInvalidChars: true
13334
+ }, options));
13335
+ const sequenceDataToInsert = tidyUpSequenceData(_sequenceDataToInsert, __spreadValues({
13336
+ topLevelSeqData: existingSequenceData
13337
+ }, options));
13336
13338
  const newSequenceData = lodashExports.cloneDeep(existingSequenceData);
13337
13339
  const insertLength = sequenceDataToInsert.proteinSequence ? sequenceDataToInsert.proteinSequence.length * 3 : sequenceDataToInsert.sequence.length;
13338
13340
  let caretPosition = caretPositionOrRange;
@@ -21541,7 +21543,9 @@ function getSequenceDataBetweenRange(seqData, range, options = {}) {
21541
21543
  if (!range)
21542
21544
  return seqData;
21543
21545
  const { exclude = {}, excludePartial = {} } = options;
21544
- const seqDataToUse = tidyUpSequenceData(seqData, __spreadValues({ doNotRemoveInvalidChars: true }, options));
21546
+ const seqDataToUse = tidyUpSequenceData(seqData, __spreadValues({
21547
+ doNotRemoveInvalidChars: true
21548
+ }, options));
21545
21549
  annotationTypes.forEach((type) => {
21546
21550
  delete seqDataToUse[`filtered${lodashExports.startCase(type)}`];
21547
21551
  });
@@ -21592,9 +21596,13 @@ function getSequenceDataBetweenRange(seqData, range, options = {}) {
21592
21596
  }
21593
21597
  });
21594
21598
  });
21595
- return tidyUpSequenceData(toRet, __spreadValues({ doNotRemoveInvalidChars: true }, options));
21599
+ return tidyUpSequenceData(toRet, __spreadValues({
21600
+ doNotRemoveInvalidChars: true
21601
+ }, options));
21596
21602
  }
21597
- return tidyUpSequenceData(seqDataToReturn, __spreadValues({ doNotRemoveInvalidChars: true }, options));
21603
+ return tidyUpSequenceData(seqDataToReturn, __spreadValues({
21604
+ doNotRemoveInvalidChars: true
21605
+ }, options));
21598
21606
  }
21599
21607
  __name(getSequenceDataBetweenRange, "getSequenceDataBetweenRange");
21600
21608
  function getAnnotationsBetweenRange(annotationsToBeAdjusted, range, maxLength, shouldExcludePartial) {
@@ -21641,7 +21649,9 @@ function getComplementSequenceAndAnnotations(pSeqObj, options = {}) {
21641
21649
  const newSeqObj = Object.assign({}, seqObj, {
21642
21650
  sequence: getComplementSequenceString(seqObj.sequence, seqObj.isRna)
21643
21651
  });
21644
- return tidyUpSequenceData(newSeqObj, __spreadValues({ doNotRemoveInvalidChars: true }, options));
21652
+ return tidyUpSequenceData(newSeqObj, __spreadValues({
21653
+ doNotRemoveInvalidChars: true
21654
+ }, options));
21645
21655
  }
21646
21656
  __name(getComplementSequenceAndAnnotations, "getComplementSequenceAndAnnotations");
21647
21657
  function getCutsiteType(restrictionEnzyme) {
@@ -22736,6 +22746,7 @@ exports.degenerateRnaToAminoAcidMap = degenerateRnaToAminoAcidMap;
22736
22746
  exports.deleteSequenceDataAtRange = deleteSequenceDataAtRange;
22737
22747
  exports.doesEnzymeChopOutsideOfRecognitionSite = doesEnzymeChopOutsideOfRecognitionSite;
22738
22748
  exports.featureColors = featureColors;
22749
+ exports.filterRnaString = filterRnaString;
22739
22750
  exports.filterSequenceString = filterSequenceString;
22740
22751
  exports.findNearestRangeOfSequenceOverlapToPosition = findNearestRangeOfSequenceOverlapToPosition;
22741
22752
  exports.findOrfsInPlasmid = findOrfsInPlasmid;
package/index.mjs CHANGED
@@ -12321,7 +12321,7 @@ const modifiableTypes = [
12321
12321
  "primers",
12322
12322
  "guides"
12323
12323
  ];
12324
- function filterSequenceString(sequenceString, {
12324
+ function filterSequenceString(sequenceString = "", {
12325
12325
  additionalValidChars = "",
12326
12326
  isOligo,
12327
12327
  name,
@@ -12406,6 +12406,7 @@ function getReplaceChars({
12406
12406
  );
12407
12407
  }
12408
12408
  __name(getReplaceChars, "getReplaceChars");
12409
+ const filterRnaString = /* @__PURE__ */ __name((s, o) => filterSequenceString(s, __spreadProps(__spreadValues({}, o), { isRna: true }))[0], "filterRnaString");
12409
12410
  function tidyUpAnnotation(_annotation, {
12410
12411
  sequenceData = {},
12411
12412
  convertAnnotationsFromAAIndices,
@@ -13326,11 +13327,12 @@ function adjustAnnotationsToInsert(annotationsToBeAdjusted, insertStart, insertL
13326
13327
  __name(adjustAnnotationsToInsert, "adjustAnnotationsToInsert");
13327
13328
  function insertSequenceDataAtPositionOrRange(_sequenceDataToInsert, _existingSequenceData, caretPositionOrRange, options = {}) {
13328
13329
  const { maintainOriginSplit } = options;
13329
- let existingSequenceData = tidyUpSequenceData(_existingSequenceData, __spreadValues({ doNotRemoveInvalidChars: true }, options));
13330
- const sequenceDataToInsert = tidyUpSequenceData(
13331
- _sequenceDataToInsert,
13332
- options
13333
- );
13330
+ let existingSequenceData = tidyUpSequenceData(_existingSequenceData, __spreadValues({
13331
+ doNotRemoveInvalidChars: true
13332
+ }, options));
13333
+ const sequenceDataToInsert = tidyUpSequenceData(_sequenceDataToInsert, __spreadValues({
13334
+ topLevelSeqData: existingSequenceData
13335
+ }, options));
13334
13336
  const newSequenceData = lodashExports.cloneDeep(existingSequenceData);
13335
13337
  const insertLength = sequenceDataToInsert.proteinSequence ? sequenceDataToInsert.proteinSequence.length * 3 : sequenceDataToInsert.sequence.length;
13336
13338
  let caretPosition = caretPositionOrRange;
@@ -21539,7 +21541,9 @@ function getSequenceDataBetweenRange(seqData, range, options = {}) {
21539
21541
  if (!range)
21540
21542
  return seqData;
21541
21543
  const { exclude = {}, excludePartial = {} } = options;
21542
- const seqDataToUse = tidyUpSequenceData(seqData, __spreadValues({ doNotRemoveInvalidChars: true }, options));
21544
+ const seqDataToUse = tidyUpSequenceData(seqData, __spreadValues({
21545
+ doNotRemoveInvalidChars: true
21546
+ }, options));
21543
21547
  annotationTypes.forEach((type) => {
21544
21548
  delete seqDataToUse[`filtered${lodashExports.startCase(type)}`];
21545
21549
  });
@@ -21590,9 +21594,13 @@ function getSequenceDataBetweenRange(seqData, range, options = {}) {
21590
21594
  }
21591
21595
  });
21592
21596
  });
21593
- return tidyUpSequenceData(toRet, __spreadValues({ doNotRemoveInvalidChars: true }, options));
21597
+ return tidyUpSequenceData(toRet, __spreadValues({
21598
+ doNotRemoveInvalidChars: true
21599
+ }, options));
21594
21600
  }
21595
- return tidyUpSequenceData(seqDataToReturn, __spreadValues({ doNotRemoveInvalidChars: true }, options));
21601
+ return tidyUpSequenceData(seqDataToReturn, __spreadValues({
21602
+ doNotRemoveInvalidChars: true
21603
+ }, options));
21596
21604
  }
21597
21605
  __name(getSequenceDataBetweenRange, "getSequenceDataBetweenRange");
21598
21606
  function getAnnotationsBetweenRange(annotationsToBeAdjusted, range, maxLength, shouldExcludePartial) {
@@ -21639,7 +21647,9 @@ function getComplementSequenceAndAnnotations(pSeqObj, options = {}) {
21639
21647
  const newSeqObj = Object.assign({}, seqObj, {
21640
21648
  sequence: getComplementSequenceString(seqObj.sequence, seqObj.isRna)
21641
21649
  });
21642
- return tidyUpSequenceData(newSeqObj, __spreadValues({ doNotRemoveInvalidChars: true }, options));
21650
+ return tidyUpSequenceData(newSeqObj, __spreadValues({
21651
+ doNotRemoveInvalidChars: true
21652
+ }, options));
21643
21653
  }
21644
21654
  __name(getComplementSequenceAndAnnotations, "getComplementSequenceAndAnnotations");
21645
21655
  function getCutsiteType(restrictionEnzyme) {
@@ -22735,6 +22745,7 @@ export {
22735
22745
  deleteSequenceDataAtRange,
22736
22746
  doesEnzymeChopOutsideOfRecognitionSite,
22737
22747
  featureColors,
22748
+ filterRnaString,
22738
22749
  filterSequenceString,
22739
22750
  findNearestRangeOfSequenceOverlapToPosition,
22740
22751
  findOrfsInPlasmid,
package/index.umd.js CHANGED
@@ -12325,7 +12325,7 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
12325
12325
  "primers",
12326
12326
  "guides"
12327
12327
  ];
12328
- function filterSequenceString(sequenceString, {
12328
+ function filterSequenceString(sequenceString = "", {
12329
12329
  additionalValidChars = "",
12330
12330
  isOligo,
12331
12331
  name,
@@ -12410,6 +12410,7 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
12410
12410
  );
12411
12411
  }
12412
12412
  __name(getReplaceChars, "getReplaceChars");
12413
+ const filterRnaString = /* @__PURE__ */ __name((s, o) => filterSequenceString(s, __spreadProps(__spreadValues({}, o), { isRna: true }))[0], "filterRnaString");
12413
12414
  function tidyUpAnnotation(_annotation, {
12414
12415
  sequenceData = {},
12415
12416
  convertAnnotationsFromAAIndices,
@@ -13330,11 +13331,12 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
13330
13331
  __name(adjustAnnotationsToInsert, "adjustAnnotationsToInsert");
13331
13332
  function insertSequenceDataAtPositionOrRange(_sequenceDataToInsert, _existingSequenceData, caretPositionOrRange, options = {}) {
13332
13333
  const { maintainOriginSplit } = options;
13333
- let existingSequenceData = tidyUpSequenceData(_existingSequenceData, __spreadValues({ doNotRemoveInvalidChars: true }, options));
13334
- const sequenceDataToInsert = tidyUpSequenceData(
13335
- _sequenceDataToInsert,
13336
- options
13337
- );
13334
+ let existingSequenceData = tidyUpSequenceData(_existingSequenceData, __spreadValues({
13335
+ doNotRemoveInvalidChars: true
13336
+ }, options));
13337
+ const sequenceDataToInsert = tidyUpSequenceData(_sequenceDataToInsert, __spreadValues({
13338
+ topLevelSeqData: existingSequenceData
13339
+ }, options));
13338
13340
  const newSequenceData = lodashExports.cloneDeep(existingSequenceData);
13339
13341
  const insertLength = sequenceDataToInsert.proteinSequence ? sequenceDataToInsert.proteinSequence.length * 3 : sequenceDataToInsert.sequence.length;
13340
13342
  let caretPosition = caretPositionOrRange;
@@ -21543,7 +21545,9 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
21543
21545
  if (!range)
21544
21546
  return seqData;
21545
21547
  const { exclude = {}, excludePartial = {} } = options;
21546
- const seqDataToUse = tidyUpSequenceData(seqData, __spreadValues({ doNotRemoveInvalidChars: true }, options));
21548
+ const seqDataToUse = tidyUpSequenceData(seqData, __spreadValues({
21549
+ doNotRemoveInvalidChars: true
21550
+ }, options));
21547
21551
  annotationTypes.forEach((type) => {
21548
21552
  delete seqDataToUse[`filtered${lodashExports.startCase(type)}`];
21549
21553
  });
@@ -21594,9 +21598,13 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
21594
21598
  }
21595
21599
  });
21596
21600
  });
21597
- return tidyUpSequenceData(toRet, __spreadValues({ doNotRemoveInvalidChars: true }, options));
21601
+ return tidyUpSequenceData(toRet, __spreadValues({
21602
+ doNotRemoveInvalidChars: true
21603
+ }, options));
21598
21604
  }
21599
- return tidyUpSequenceData(seqDataToReturn, __spreadValues({ doNotRemoveInvalidChars: true }, options));
21605
+ return tidyUpSequenceData(seqDataToReturn, __spreadValues({
21606
+ doNotRemoveInvalidChars: true
21607
+ }, options));
21600
21608
  }
21601
21609
  __name(getSequenceDataBetweenRange, "getSequenceDataBetweenRange");
21602
21610
  function getAnnotationsBetweenRange(annotationsToBeAdjusted, range, maxLength, shouldExcludePartial) {
@@ -21643,7 +21651,9 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
21643
21651
  const newSeqObj = Object.assign({}, seqObj, {
21644
21652
  sequence: getComplementSequenceString(seqObj.sequence, seqObj.isRna)
21645
21653
  });
21646
- return tidyUpSequenceData(newSeqObj, __spreadValues({ doNotRemoveInvalidChars: true }, options));
21654
+ return tidyUpSequenceData(newSeqObj, __spreadValues({
21655
+ doNotRemoveInvalidChars: true
21656
+ }, options));
21647
21657
  }
21648
21658
  __name(getComplementSequenceAndAnnotations, "getComplementSequenceAndAnnotations");
21649
21659
  function getCutsiteType(restrictionEnzyme) {
@@ -22738,6 +22748,7 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
22738
22748
  exports2.deleteSequenceDataAtRange = deleteSequenceDataAtRange;
22739
22749
  exports2.doesEnzymeChopOutsideOfRecognitionSite = doesEnzymeChopOutsideOfRecognitionSite;
22740
22750
  exports2.featureColors = featureColors;
22751
+ exports2.filterRnaString = filterRnaString;
22741
22752
  exports2.filterSequenceString = filterSequenceString;
22742
22753
  exports2.findNearestRangeOfSequenceOverlapToPosition = findNearestRangeOfSequenceOverlapToPosition;
22743
22754
  exports2.findOrfsInPlasmid = findOrfsInPlasmid;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teselagen/sequence-utils",
3
- "version": "0.3.12",
3
+ "version": "0.3.13",
4
4
  "dependencies": {
5
5
  "@teselagen/range-utils": "0.3.7",
6
6
  "bson-objectid": "^2.0.4",
@@ -5,7 +5,7 @@ import {
5
5
  } from "./bioData";
6
6
 
7
7
  export default function filterSequenceString(
8
- sequenceString,
8
+ sequenceString = "",
9
9
  {
10
10
  additionalValidChars = "",
11
11
  isOligo,
@@ -111,3 +111,6 @@ export function getReplaceChars({
111
111
  : //just plain old dna
112
112
  {};
113
113
  }
114
+
115
+ export const filterRnaString = (s, o) =>
116
+ filterSequenceString(s, { ...o, isRna: true })[0];
@@ -15,5 +15,8 @@ export default function getComplementSequenceAndAnnotations(
15
15
  const newSeqObj = Object.assign({}, seqObj, {
16
16
  sequence: getComplementSequenceString(seqObj.sequence, seqObj.isRna)
17
17
  });
18
- return tidyUpSequenceData(newSeqObj, {doNotRemoveInvalidChars: true,...options});
18
+ return tidyUpSequenceData(newSeqObj, {
19
+ doNotRemoveInvalidChars: true,
20
+ ...options
21
+ });
19
22
  }
@@ -16,7 +16,10 @@ export default function getSequenceDataBetweenRange(
16
16
  ) {
17
17
  if (!range) return seqData;
18
18
  const { exclude = {}, excludePartial = {} } = options;
19
- const seqDataToUse = tidyUpSequenceData(seqData, {doNotRemoveInvalidChars: true,...options});
19
+ const seqDataToUse = tidyUpSequenceData(seqData, {
20
+ doNotRemoveInvalidChars: true,
21
+ ...options
22
+ });
20
23
  annotationTypes.forEach(type => {
21
24
  delete seqDataToUse[`filtered${startCase(type)}`];
22
25
  });
@@ -78,10 +81,16 @@ export default function getSequenceDataBetweenRange(
78
81
  }
79
82
  });
80
83
  });
81
- return tidyUpSequenceData(toRet, {doNotRemoveInvalidChars: true,...options});
84
+ return tidyUpSequenceData(toRet, {
85
+ doNotRemoveInvalidChars: true,
86
+ ...options
87
+ });
82
88
  }
83
89
 
84
- return tidyUpSequenceData(seqDataToReturn, {doNotRemoveInvalidChars: true,...options});
90
+ return tidyUpSequenceData(seqDataToReturn, {
91
+ doNotRemoveInvalidChars: true,
92
+ ...options
93
+ });
85
94
  }
86
95
 
87
96
  function getAnnotationsBetweenRange(
package/src/index.js CHANGED
@@ -51,7 +51,10 @@ export { default as aliasedEnzymesByName } from "./aliasedEnzymesByName";
51
51
  export { default as defaultEnzymesByName } from "./defaultEnzymesByName";
52
52
  export { default as generateSequenceData } from "./generateSequenceData";
53
53
  export { default as generateAnnotations } from "./generateAnnotations";
54
- export { default as filterSequenceString } from "./filterSequenceString";
54
+ export {
55
+ default as filterSequenceString,
56
+ filterRnaString
57
+ } from "./filterSequenceString";
55
58
  export { default as findNearestRangeOfSequenceOverlapToPosition } from "./findNearestRangeOfSequenceOverlapToPosition";
56
59
  export { default as findOrfsInPlasmid } from "./findOrfsInPlasmid";
57
60
  export { default as findSequenceMatches } from "./findSequenceMatches";
@@ -18,11 +18,14 @@ export default function insertSequenceDataAtPositionOrRange(
18
18
  //when inserting new seq, n bps of the new seq should go in before the origin and the rest should be
19
19
  //inserted at the sequence start
20
20
  const { maintainOriginSplit } = options;
21
- let existingSequenceData = tidyUpSequenceData(_existingSequenceData, {doNotRemoveInvalidChars: true,...options});
22
- const sequenceDataToInsert = tidyUpSequenceData(
23
- _sequenceDataToInsert,
24
- options
25
- );
21
+ let existingSequenceData = tidyUpSequenceData(_existingSequenceData, {
22
+ doNotRemoveInvalidChars: true,
23
+ ...options
24
+ });
25
+ const sequenceDataToInsert = tidyUpSequenceData(_sequenceDataToInsert, {
26
+ topLevelSeqData: existingSequenceData,
27
+ ...options
28
+ });
26
29
  const newSequenceData = cloneDeep(existingSequenceData);
27
30
  const insertLength = sequenceDataToInsert.proteinSequence
28
31
  ? sequenceDataToInsert.proteinSequence.length * 3