@teselagen/sequence-utils 0.3.11 → 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,
@@ -12675,11 +12676,13 @@ __name(tidyUpSequenceData, "tidyUpSequenceData");
12675
12676
  const getDiffFromSeqs = /* @__PURE__ */ __name((oldData, newData, { ignoreKeys = [] } = {}) => {
12676
12677
  oldData = tidyUpSequenceData(oldData, {
12677
12678
  annotationsAsObjects: true,
12678
- noTranslationData: true
12679
+ noTranslationData: true,
12680
+ doNotRemoveInvalidChars: true
12679
12681
  });
12680
12682
  newData = tidyUpSequenceData(newData, {
12681
12683
  annotationsAsObjects: true,
12682
- noTranslationData: true
12684
+ noTranslationData: true,
12685
+ doNotRemoveInvalidChars: true
12683
12686
  });
12684
12687
  [oldData, newData].forEach((d) => {
12685
12688
  [
@@ -12711,7 +12714,10 @@ const patchSeqWithDiff = /* @__PURE__ */ __name((oldData, diff, { ignoreKeys = [
12711
12714
  delete diff[k];
12712
12715
  });
12713
12716
  return jsondiffpatch_umdExports.patch(
12714
- tidyUpSequenceData(lodashExports.cloneDeep(oldData), { annotationsAsObjects: true }),
12717
+ tidyUpSequenceData(lodashExports.cloneDeep(oldData), {
12718
+ annotationsAsObjects: true,
12719
+ doNotRemoveInvalidChars: true
12720
+ }),
12715
12721
  diff
12716
12722
  );
12717
12723
  }, "patchSeqWithDiff");
@@ -13284,7 +13290,9 @@ function arrayRotate(arr, count) {
13284
13290
  }
13285
13291
  __name(arrayRotate, "arrayRotate");
13286
13292
  function rotateSequenceDataToPosition(sequenceData, caretPosition, options) {
13287
- const newSequenceData = tidyUpSequenceData(sequenceData, options);
13293
+ const newSequenceData = tidyUpSequenceData(sequenceData, __spreadValues({
13294
+ doNotRemoveInvalidChars: true
13295
+ }, options));
13288
13296
  newSequenceData.sequence = rotateBpsToPosition(
13289
13297
  newSequenceData.sequence,
13290
13298
  caretPosition
@@ -13321,11 +13329,12 @@ function adjustAnnotationsToInsert(annotationsToBeAdjusted, insertStart, insertL
13321
13329
  __name(adjustAnnotationsToInsert, "adjustAnnotationsToInsert");
13322
13330
  function insertSequenceDataAtPositionOrRange(_sequenceDataToInsert, _existingSequenceData, caretPositionOrRange, options = {}) {
13323
13331
  const { maintainOriginSplit } = options;
13324
- let existingSequenceData = tidyUpSequenceData(_existingSequenceData, options);
13325
- const sequenceDataToInsert = tidyUpSequenceData(
13326
- _sequenceDataToInsert,
13327
- options
13328
- );
13332
+ let existingSequenceData = tidyUpSequenceData(_existingSequenceData, __spreadValues({
13333
+ doNotRemoveInvalidChars: true
13334
+ }, options));
13335
+ const sequenceDataToInsert = tidyUpSequenceData(_sequenceDataToInsert, __spreadValues({
13336
+ topLevelSeqData: existingSequenceData
13337
+ }, options));
13329
13338
  const newSequenceData = lodashExports.cloneDeep(existingSequenceData);
13330
13339
  const insertLength = sequenceDataToInsert.proteinSequence ? sequenceDataToInsert.proteinSequence.length * 3 : sequenceDataToInsert.sequence.length;
13331
13340
  let caretPosition = caretPositionOrRange;
@@ -13339,6 +13348,7 @@ function insertSequenceDataAtPositionOrRange(_sequenceDataToInsert, _existingSeq
13339
13348
  return acc[type] = [];
13340
13349
  }, {})), {
13341
13350
  sequence: "",
13351
+ doNotRemoveInvalidChars: true,
13342
13352
  proteinSequence: "",
13343
13353
  chromatogramData: void 0
13344
13354
  }),
@@ -21533,7 +21543,9 @@ function getSequenceDataBetweenRange(seqData, range, options = {}) {
21533
21543
  if (!range)
21534
21544
  return seqData;
21535
21545
  const { exclude = {}, excludePartial = {} } = options;
21536
- const seqDataToUse = tidyUpSequenceData(seqData, options);
21546
+ const seqDataToUse = tidyUpSequenceData(seqData, __spreadValues({
21547
+ doNotRemoveInvalidChars: true
21548
+ }, options));
21537
21549
  annotationTypes.forEach((type) => {
21538
21550
  delete seqDataToUse[`filtered${lodashExports.startCase(type)}`];
21539
21551
  });
@@ -21584,9 +21596,13 @@ function getSequenceDataBetweenRange(seqData, range, options = {}) {
21584
21596
  }
21585
21597
  });
21586
21598
  });
21587
- return tidyUpSequenceData(toRet, options);
21599
+ return tidyUpSequenceData(toRet, __spreadValues({
21600
+ doNotRemoveInvalidChars: true
21601
+ }, options));
21588
21602
  }
21589
- return tidyUpSequenceData(seqDataToReturn, options);
21603
+ return tidyUpSequenceData(seqDataToReturn, __spreadValues({
21604
+ doNotRemoveInvalidChars: true
21605
+ }, options));
21590
21606
  }
21591
21607
  __name(getSequenceDataBetweenRange, "getSequenceDataBetweenRange");
21592
21608
  function getAnnotationsBetweenRange(annotationsToBeAdjusted, range, maxLength, shouldExcludePartial) {
@@ -21633,7 +21649,9 @@ function getComplementSequenceAndAnnotations(pSeqObj, options = {}) {
21633
21649
  const newSeqObj = Object.assign({}, seqObj, {
21634
21650
  sequence: getComplementSequenceString(seqObj.sequence, seqObj.isRna)
21635
21651
  });
21636
- return tidyUpSequenceData(newSeqObj, options);
21652
+ return tidyUpSequenceData(newSeqObj, __spreadValues({
21653
+ doNotRemoveInvalidChars: true
21654
+ }, options));
21637
21655
  }
21638
21656
  __name(getComplementSequenceAndAnnotations, "getComplementSequenceAndAnnotations");
21639
21657
  function getCutsiteType(restrictionEnzyme) {
@@ -21839,7 +21857,7 @@ __name(getReverseComplementAnnotation, "getReverseComplementAnnotation");
21839
21857
  function getReverseComplementSequenceAndAnnoations(pSeqObj, options = {}) {
21840
21858
  const seqObj = tidyUpSequenceData(
21841
21859
  getSequenceDataBetweenRange(pSeqObj, options.range),
21842
- options
21860
+ __spreadValues({ doNotRemoveInvalidChars: true }, options)
21843
21861
  );
21844
21862
  const newSeqObj = Object.assign(
21845
21863
  {},
@@ -21859,7 +21877,9 @@ function getReverseComplementSequenceAndAnnoations(pSeqObj, options = {}) {
21859
21877
  return acc;
21860
21878
  }, {})
21861
21879
  );
21862
- return tidyUpSequenceData(newSeqObj, options);
21880
+ return tidyUpSequenceData(newSeqObj, __spreadValues({
21881
+ doNotRemoveInvalidChars: true
21882
+ }, options));
21863
21883
  }
21864
21884
  __name(getReverseComplementSequenceAndAnnoations, "getReverseComplementSequenceAndAnnoations");
21865
21885
  function getReverseSequenceString(sequence) {
@@ -22726,6 +22746,7 @@ exports.degenerateRnaToAminoAcidMap = degenerateRnaToAminoAcidMap;
22726
22746
  exports.deleteSequenceDataAtRange = deleteSequenceDataAtRange;
22727
22747
  exports.doesEnzymeChopOutsideOfRecognitionSite = doesEnzymeChopOutsideOfRecognitionSite;
22728
22748
  exports.featureColors = featureColors;
22749
+ exports.filterRnaString = filterRnaString;
22729
22750
  exports.filterSequenceString = filterSequenceString;
22730
22751
  exports.findNearestRangeOfSequenceOverlapToPosition = findNearestRangeOfSequenceOverlapToPosition;
22731
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,
@@ -12673,11 +12674,13 @@ __name(tidyUpSequenceData, "tidyUpSequenceData");
12673
12674
  const getDiffFromSeqs = /* @__PURE__ */ __name((oldData, newData, { ignoreKeys = [] } = {}) => {
12674
12675
  oldData = tidyUpSequenceData(oldData, {
12675
12676
  annotationsAsObjects: true,
12676
- noTranslationData: true
12677
+ noTranslationData: true,
12678
+ doNotRemoveInvalidChars: true
12677
12679
  });
12678
12680
  newData = tidyUpSequenceData(newData, {
12679
12681
  annotationsAsObjects: true,
12680
- noTranslationData: true
12682
+ noTranslationData: true,
12683
+ doNotRemoveInvalidChars: true
12681
12684
  });
12682
12685
  [oldData, newData].forEach((d) => {
12683
12686
  [
@@ -12709,7 +12712,10 @@ const patchSeqWithDiff = /* @__PURE__ */ __name((oldData, diff, { ignoreKeys = [
12709
12712
  delete diff[k];
12710
12713
  });
12711
12714
  return jsondiffpatch_umdExports.patch(
12712
- tidyUpSequenceData(lodashExports.cloneDeep(oldData), { annotationsAsObjects: true }),
12715
+ tidyUpSequenceData(lodashExports.cloneDeep(oldData), {
12716
+ annotationsAsObjects: true,
12717
+ doNotRemoveInvalidChars: true
12718
+ }),
12713
12719
  diff
12714
12720
  );
12715
12721
  }, "patchSeqWithDiff");
@@ -13282,7 +13288,9 @@ function arrayRotate(arr, count) {
13282
13288
  }
13283
13289
  __name(arrayRotate, "arrayRotate");
13284
13290
  function rotateSequenceDataToPosition(sequenceData, caretPosition, options) {
13285
- const newSequenceData = tidyUpSequenceData(sequenceData, options);
13291
+ const newSequenceData = tidyUpSequenceData(sequenceData, __spreadValues({
13292
+ doNotRemoveInvalidChars: true
13293
+ }, options));
13286
13294
  newSequenceData.sequence = rotateBpsToPosition(
13287
13295
  newSequenceData.sequence,
13288
13296
  caretPosition
@@ -13319,11 +13327,12 @@ function adjustAnnotationsToInsert(annotationsToBeAdjusted, insertStart, insertL
13319
13327
  __name(adjustAnnotationsToInsert, "adjustAnnotationsToInsert");
13320
13328
  function insertSequenceDataAtPositionOrRange(_sequenceDataToInsert, _existingSequenceData, caretPositionOrRange, options = {}) {
13321
13329
  const { maintainOriginSplit } = options;
13322
- let existingSequenceData = tidyUpSequenceData(_existingSequenceData, options);
13323
- const sequenceDataToInsert = tidyUpSequenceData(
13324
- _sequenceDataToInsert,
13325
- options
13326
- );
13330
+ let existingSequenceData = tidyUpSequenceData(_existingSequenceData, __spreadValues({
13331
+ doNotRemoveInvalidChars: true
13332
+ }, options));
13333
+ const sequenceDataToInsert = tidyUpSequenceData(_sequenceDataToInsert, __spreadValues({
13334
+ topLevelSeqData: existingSequenceData
13335
+ }, options));
13327
13336
  const newSequenceData = lodashExports.cloneDeep(existingSequenceData);
13328
13337
  const insertLength = sequenceDataToInsert.proteinSequence ? sequenceDataToInsert.proteinSequence.length * 3 : sequenceDataToInsert.sequence.length;
13329
13338
  let caretPosition = caretPositionOrRange;
@@ -13337,6 +13346,7 @@ function insertSequenceDataAtPositionOrRange(_sequenceDataToInsert, _existingSeq
13337
13346
  return acc[type] = [];
13338
13347
  }, {})), {
13339
13348
  sequence: "",
13349
+ doNotRemoveInvalidChars: true,
13340
13350
  proteinSequence: "",
13341
13351
  chromatogramData: void 0
13342
13352
  }),
@@ -21531,7 +21541,9 @@ function getSequenceDataBetweenRange(seqData, range, options = {}) {
21531
21541
  if (!range)
21532
21542
  return seqData;
21533
21543
  const { exclude = {}, excludePartial = {} } = options;
21534
- const seqDataToUse = tidyUpSequenceData(seqData, options);
21544
+ const seqDataToUse = tidyUpSequenceData(seqData, __spreadValues({
21545
+ doNotRemoveInvalidChars: true
21546
+ }, options));
21535
21547
  annotationTypes.forEach((type) => {
21536
21548
  delete seqDataToUse[`filtered${lodashExports.startCase(type)}`];
21537
21549
  });
@@ -21582,9 +21594,13 @@ function getSequenceDataBetweenRange(seqData, range, options = {}) {
21582
21594
  }
21583
21595
  });
21584
21596
  });
21585
- return tidyUpSequenceData(toRet, options);
21597
+ return tidyUpSequenceData(toRet, __spreadValues({
21598
+ doNotRemoveInvalidChars: true
21599
+ }, options));
21586
21600
  }
21587
- return tidyUpSequenceData(seqDataToReturn, options);
21601
+ return tidyUpSequenceData(seqDataToReturn, __spreadValues({
21602
+ doNotRemoveInvalidChars: true
21603
+ }, options));
21588
21604
  }
21589
21605
  __name(getSequenceDataBetweenRange, "getSequenceDataBetweenRange");
21590
21606
  function getAnnotationsBetweenRange(annotationsToBeAdjusted, range, maxLength, shouldExcludePartial) {
@@ -21631,7 +21647,9 @@ function getComplementSequenceAndAnnotations(pSeqObj, options = {}) {
21631
21647
  const newSeqObj = Object.assign({}, seqObj, {
21632
21648
  sequence: getComplementSequenceString(seqObj.sequence, seqObj.isRna)
21633
21649
  });
21634
- return tidyUpSequenceData(newSeqObj, options);
21650
+ return tidyUpSequenceData(newSeqObj, __spreadValues({
21651
+ doNotRemoveInvalidChars: true
21652
+ }, options));
21635
21653
  }
21636
21654
  __name(getComplementSequenceAndAnnotations, "getComplementSequenceAndAnnotations");
21637
21655
  function getCutsiteType(restrictionEnzyme) {
@@ -21837,7 +21855,7 @@ __name(getReverseComplementAnnotation, "getReverseComplementAnnotation");
21837
21855
  function getReverseComplementSequenceAndAnnoations(pSeqObj, options = {}) {
21838
21856
  const seqObj = tidyUpSequenceData(
21839
21857
  getSequenceDataBetweenRange(pSeqObj, options.range),
21840
- options
21858
+ __spreadValues({ doNotRemoveInvalidChars: true }, options)
21841
21859
  );
21842
21860
  const newSeqObj = Object.assign(
21843
21861
  {},
@@ -21857,7 +21875,9 @@ function getReverseComplementSequenceAndAnnoations(pSeqObj, options = {}) {
21857
21875
  return acc;
21858
21876
  }, {})
21859
21877
  );
21860
- return tidyUpSequenceData(newSeqObj, options);
21878
+ return tidyUpSequenceData(newSeqObj, __spreadValues({
21879
+ doNotRemoveInvalidChars: true
21880
+ }, options));
21861
21881
  }
21862
21882
  __name(getReverseComplementSequenceAndAnnoations, "getReverseComplementSequenceAndAnnoations");
21863
21883
  function getReverseSequenceString(sequence) {
@@ -22725,6 +22745,7 @@ export {
22725
22745
  deleteSequenceDataAtRange,
22726
22746
  doesEnzymeChopOutsideOfRecognitionSite,
22727
22747
  featureColors,
22748
+ filterRnaString,
22728
22749
  filterSequenceString,
22729
22750
  findNearestRangeOfSequenceOverlapToPosition,
22730
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,
@@ -12677,11 +12678,13 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
12677
12678
  const getDiffFromSeqs = /* @__PURE__ */ __name((oldData, newData, { ignoreKeys = [] } = {}) => {
12678
12679
  oldData = tidyUpSequenceData(oldData, {
12679
12680
  annotationsAsObjects: true,
12680
- noTranslationData: true
12681
+ noTranslationData: true,
12682
+ doNotRemoveInvalidChars: true
12681
12683
  });
12682
12684
  newData = tidyUpSequenceData(newData, {
12683
12685
  annotationsAsObjects: true,
12684
- noTranslationData: true
12686
+ noTranslationData: true,
12687
+ doNotRemoveInvalidChars: true
12685
12688
  });
12686
12689
  [oldData, newData].forEach((d) => {
12687
12690
  [
@@ -12713,7 +12716,10 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
12713
12716
  delete diff[k];
12714
12717
  });
12715
12718
  return jsondiffpatch_umdExports.patch(
12716
- tidyUpSequenceData(lodashExports.cloneDeep(oldData), { annotationsAsObjects: true }),
12719
+ tidyUpSequenceData(lodashExports.cloneDeep(oldData), {
12720
+ annotationsAsObjects: true,
12721
+ doNotRemoveInvalidChars: true
12722
+ }),
12717
12723
  diff
12718
12724
  );
12719
12725
  }, "patchSeqWithDiff");
@@ -13286,7 +13292,9 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
13286
13292
  }
13287
13293
  __name(arrayRotate, "arrayRotate");
13288
13294
  function rotateSequenceDataToPosition(sequenceData, caretPosition, options) {
13289
- const newSequenceData = tidyUpSequenceData(sequenceData, options);
13295
+ const newSequenceData = tidyUpSequenceData(sequenceData, __spreadValues({
13296
+ doNotRemoveInvalidChars: true
13297
+ }, options));
13290
13298
  newSequenceData.sequence = rotateBpsToPosition(
13291
13299
  newSequenceData.sequence,
13292
13300
  caretPosition
@@ -13323,11 +13331,12 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
13323
13331
  __name(adjustAnnotationsToInsert, "adjustAnnotationsToInsert");
13324
13332
  function insertSequenceDataAtPositionOrRange(_sequenceDataToInsert, _existingSequenceData, caretPositionOrRange, options = {}) {
13325
13333
  const { maintainOriginSplit } = options;
13326
- let existingSequenceData = tidyUpSequenceData(_existingSequenceData, options);
13327
- const sequenceDataToInsert = tidyUpSequenceData(
13328
- _sequenceDataToInsert,
13329
- options
13330
- );
13334
+ let existingSequenceData = tidyUpSequenceData(_existingSequenceData, __spreadValues({
13335
+ doNotRemoveInvalidChars: true
13336
+ }, options));
13337
+ const sequenceDataToInsert = tidyUpSequenceData(_sequenceDataToInsert, __spreadValues({
13338
+ topLevelSeqData: existingSequenceData
13339
+ }, options));
13331
13340
  const newSequenceData = lodashExports.cloneDeep(existingSequenceData);
13332
13341
  const insertLength = sequenceDataToInsert.proteinSequence ? sequenceDataToInsert.proteinSequence.length * 3 : sequenceDataToInsert.sequence.length;
13333
13342
  let caretPosition = caretPositionOrRange;
@@ -13341,6 +13350,7 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
13341
13350
  return acc[type] = [];
13342
13351
  }, {})), {
13343
13352
  sequence: "",
13353
+ doNotRemoveInvalidChars: true,
13344
13354
  proteinSequence: "",
13345
13355
  chromatogramData: void 0
13346
13356
  }),
@@ -21535,7 +21545,9 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
21535
21545
  if (!range)
21536
21546
  return seqData;
21537
21547
  const { exclude = {}, excludePartial = {} } = options;
21538
- const seqDataToUse = tidyUpSequenceData(seqData, options);
21548
+ const seqDataToUse = tidyUpSequenceData(seqData, __spreadValues({
21549
+ doNotRemoveInvalidChars: true
21550
+ }, options));
21539
21551
  annotationTypes.forEach((type) => {
21540
21552
  delete seqDataToUse[`filtered${lodashExports.startCase(type)}`];
21541
21553
  });
@@ -21586,9 +21598,13 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
21586
21598
  }
21587
21599
  });
21588
21600
  });
21589
- return tidyUpSequenceData(toRet, options);
21601
+ return tidyUpSequenceData(toRet, __spreadValues({
21602
+ doNotRemoveInvalidChars: true
21603
+ }, options));
21590
21604
  }
21591
- return tidyUpSequenceData(seqDataToReturn, options);
21605
+ return tidyUpSequenceData(seqDataToReturn, __spreadValues({
21606
+ doNotRemoveInvalidChars: true
21607
+ }, options));
21592
21608
  }
21593
21609
  __name(getSequenceDataBetweenRange, "getSequenceDataBetweenRange");
21594
21610
  function getAnnotationsBetweenRange(annotationsToBeAdjusted, range, maxLength, shouldExcludePartial) {
@@ -21635,7 +21651,9 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
21635
21651
  const newSeqObj = Object.assign({}, seqObj, {
21636
21652
  sequence: getComplementSequenceString(seqObj.sequence, seqObj.isRna)
21637
21653
  });
21638
- return tidyUpSequenceData(newSeqObj, options);
21654
+ return tidyUpSequenceData(newSeqObj, __spreadValues({
21655
+ doNotRemoveInvalidChars: true
21656
+ }, options));
21639
21657
  }
21640
21658
  __name(getComplementSequenceAndAnnotations, "getComplementSequenceAndAnnotations");
21641
21659
  function getCutsiteType(restrictionEnzyme) {
@@ -21841,7 +21859,7 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
21841
21859
  function getReverseComplementSequenceAndAnnoations(pSeqObj, options = {}) {
21842
21860
  const seqObj = tidyUpSequenceData(
21843
21861
  getSequenceDataBetweenRange(pSeqObj, options.range),
21844
- options
21862
+ __spreadValues({ doNotRemoveInvalidChars: true }, options)
21845
21863
  );
21846
21864
  const newSeqObj = Object.assign(
21847
21865
  {},
@@ -21861,7 +21879,9 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
21861
21879
  return acc;
21862
21880
  }, {})
21863
21881
  );
21864
- return tidyUpSequenceData(newSeqObj, options);
21882
+ return tidyUpSequenceData(newSeqObj, __spreadValues({
21883
+ doNotRemoveInvalidChars: true
21884
+ }, options));
21865
21885
  }
21866
21886
  __name(getReverseComplementSequenceAndAnnoations, "getReverseComplementSequenceAndAnnoations");
21867
21887
  function getReverseSequenceString(sequence) {
@@ -22728,6 +22748,7 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
22728
22748
  exports2.deleteSequenceDataAtRange = deleteSequenceDataAtRange;
22729
22749
  exports2.doesEnzymeChopOutsideOfRecognitionSite = doesEnzymeChopOutsideOfRecognitionSite;
22730
22750
  exports2.featureColors = featureColors;
22751
+ exports2.filterRnaString = filterRnaString;
22731
22752
  exports2.filterSequenceString = filterSequenceString;
22732
22753
  exports2.findNearestRangeOfSequenceOverlapToPosition = findNearestRangeOfSequenceOverlapToPosition;
22733
22754
  exports2.findOrfsInPlasmid = findOrfsInPlasmid;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teselagen/sequence-utils",
3
- "version": "0.3.11",
3
+ "version": "0.3.13",
4
4
  "dependencies": {
5
5
  "@teselagen/range-utils": "0.3.7",
6
6
  "bson-objectid": "^2.0.4",
package/src/diffUtils.js CHANGED
@@ -6,11 +6,13 @@ import tidyUpSequenceData from "./tidyUpSequenceData";
6
6
  const getDiffFromSeqs = (oldData, newData, { ignoreKeys = [] } = {}) => {
7
7
  oldData = tidyUpSequenceData(oldData, {
8
8
  annotationsAsObjects: true,
9
- noTranslationData: true
9
+ noTranslationData: true,
10
+ doNotRemoveInvalidChars: true
10
11
  });
11
12
  newData = tidyUpSequenceData(newData, {
12
13
  annotationsAsObjects: true,
13
- noTranslationData: true
14
+ noTranslationData: true,
15
+ doNotRemoveInvalidChars: true
14
16
  });
15
17
 
16
18
  [oldData, newData].forEach(d => {
@@ -47,7 +49,10 @@ const patchSeqWithDiff = (oldData, diff, { ignoreKeys = [] } = {}) => {
47
49
  delete diff[k];
48
50
  });
49
51
  return patch(
50
- tidyUpSequenceData(cloneDeep(oldData), { annotationsAsObjects: true }),
52
+ tidyUpSequenceData(cloneDeep(oldData), {
53
+ annotationsAsObjects: true,
54
+ doNotRemoveInvalidChars: true
55
+ }),
51
56
  diff
52
57
  );
53
58
  };
@@ -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, options);
18
+ return tidyUpSequenceData(newSeqObj, {
19
+ doNotRemoveInvalidChars: true,
20
+ ...options
21
+ });
19
22
  }
@@ -13,7 +13,7 @@ export default function getReverseComplementSequenceAndAnnoations(
13
13
  ) {
14
14
  const seqObj = tidyUpSequenceData(
15
15
  getSequenceDataBetweenRange(pSeqObj, options.range),
16
- options
16
+ { doNotRemoveInvalidChars: true, ...options }
17
17
  );
18
18
  const newSeqObj = Object.assign(
19
19
  {},
@@ -33,5 +33,8 @@ export default function getReverseComplementSequenceAndAnnoations(
33
33
  return acc;
34
34
  }, {})
35
35
  );
36
- return tidyUpSequenceData(newSeqObj, options);
36
+ return tidyUpSequenceData(newSeqObj, {
37
+ doNotRemoveInvalidChars: true,
38
+ ...options
39
+ });
37
40
  }
@@ -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, 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, options);
84
+ return tidyUpSequenceData(toRet, {
85
+ doNotRemoveInvalidChars: true,
86
+ ...options
87
+ });
82
88
  }
83
89
 
84
- return tidyUpSequenceData(seqDataToReturn, 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, 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
@@ -48,6 +51,7 @@ export default function insertSequenceDataAtPositionOrRange(
48
51
  return (acc[type] = []);
49
52
  }, {}),
50
53
  sequence: "",
54
+ doNotRemoveInvalidChars: true,
51
55
  proteinSequence: "",
52
56
  chromatogramData: undefined
53
57
  },
@@ -9,7 +9,10 @@ export default function rotateSequenceDataToPosition(
9
9
  caretPosition,
10
10
  options
11
11
  ) {
12
- const newSequenceData = tidyUpSequenceData(sequenceData, options);
12
+ const newSequenceData = tidyUpSequenceData(sequenceData, {
13
+ doNotRemoveInvalidChars: true,
14
+ ...options
15
+ });
13
16
 
14
17
  //update the sequence
15
18
  newSequenceData.sequence = rotateBpsToPosition(