@teselagen/sequence-utils 0.3.12 → 0.3.14
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.
- package/filterSequenceString.d.ts +2 -1
- package/index.d.ts +1 -1
- package/index.js +25 -11
- package/index.mjs +25 -11
- package/index.umd.js +25 -11
- package/package.json +1 -1
- package/src/filterSequenceString.js +4 -1
- package/src/getAminoAcidStringFromSequenceString.js +5 -1
- package/src/getAminoAcidStringFromSequenceString.test.js +1 -0
- package/src/getComplementSequenceAndAnnotations.js +4 -1
- package/src/getSequenceDataBetweenRange.js +12 -3
- package/src/index.js +4 -1
- package/src/insertSequenceDataAtPositionOrRange.js +8 -5
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export default function filterSequenceString(sequenceString
|
|
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({
|
|
13332
|
-
|
|
13333
|
-
|
|
13334
|
-
|
|
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;
|
|
@@ -21354,10 +21356,13 @@ function getAminoAcidStringFromSequenceString(sequenceString) {
|
|
|
21354
21356
|
);
|
|
21355
21357
|
const aaArray = [];
|
|
21356
21358
|
let aaString = "";
|
|
21357
|
-
aminoAcidsPerBase.forEach((aa) => {
|
|
21359
|
+
aminoAcidsPerBase.forEach((aa, index) => {
|
|
21358
21360
|
if (!aa.fullCodon) {
|
|
21359
21361
|
return;
|
|
21360
21362
|
}
|
|
21363
|
+
if (index === aminoAcidsPerBase.length - 1 && aa.aminoAcid.value === "*") {
|
|
21364
|
+
return;
|
|
21365
|
+
}
|
|
21361
21366
|
aaArray[aa.aminoAcidIndex] = aa.aminoAcid.value;
|
|
21362
21367
|
});
|
|
21363
21368
|
aaString = aaArray.join("");
|
|
@@ -21541,7 +21546,9 @@ function getSequenceDataBetweenRange(seqData, range, options = {}) {
|
|
|
21541
21546
|
if (!range)
|
|
21542
21547
|
return seqData;
|
|
21543
21548
|
const { exclude = {}, excludePartial = {} } = options;
|
|
21544
|
-
const seqDataToUse = tidyUpSequenceData(seqData, __spreadValues({
|
|
21549
|
+
const seqDataToUse = tidyUpSequenceData(seqData, __spreadValues({
|
|
21550
|
+
doNotRemoveInvalidChars: true
|
|
21551
|
+
}, options));
|
|
21545
21552
|
annotationTypes.forEach((type) => {
|
|
21546
21553
|
delete seqDataToUse[`filtered${lodashExports.startCase(type)}`];
|
|
21547
21554
|
});
|
|
@@ -21592,9 +21599,13 @@ function getSequenceDataBetweenRange(seqData, range, options = {}) {
|
|
|
21592
21599
|
}
|
|
21593
21600
|
});
|
|
21594
21601
|
});
|
|
21595
|
-
return tidyUpSequenceData(toRet, __spreadValues({
|
|
21602
|
+
return tidyUpSequenceData(toRet, __spreadValues({
|
|
21603
|
+
doNotRemoveInvalidChars: true
|
|
21604
|
+
}, options));
|
|
21596
21605
|
}
|
|
21597
|
-
return tidyUpSequenceData(seqDataToReturn, __spreadValues({
|
|
21606
|
+
return tidyUpSequenceData(seqDataToReturn, __spreadValues({
|
|
21607
|
+
doNotRemoveInvalidChars: true
|
|
21608
|
+
}, options));
|
|
21598
21609
|
}
|
|
21599
21610
|
__name(getSequenceDataBetweenRange, "getSequenceDataBetweenRange");
|
|
21600
21611
|
function getAnnotationsBetweenRange(annotationsToBeAdjusted, range, maxLength, shouldExcludePartial) {
|
|
@@ -21641,7 +21652,9 @@ function getComplementSequenceAndAnnotations(pSeqObj, options = {}) {
|
|
|
21641
21652
|
const newSeqObj = Object.assign({}, seqObj, {
|
|
21642
21653
|
sequence: getComplementSequenceString(seqObj.sequence, seqObj.isRna)
|
|
21643
21654
|
});
|
|
21644
|
-
return tidyUpSequenceData(newSeqObj, __spreadValues({
|
|
21655
|
+
return tidyUpSequenceData(newSeqObj, __spreadValues({
|
|
21656
|
+
doNotRemoveInvalidChars: true
|
|
21657
|
+
}, options));
|
|
21645
21658
|
}
|
|
21646
21659
|
__name(getComplementSequenceAndAnnotations, "getComplementSequenceAndAnnotations");
|
|
21647
21660
|
function getCutsiteType(restrictionEnzyme) {
|
|
@@ -22736,6 +22749,7 @@ exports.degenerateRnaToAminoAcidMap = degenerateRnaToAminoAcidMap;
|
|
|
22736
22749
|
exports.deleteSequenceDataAtRange = deleteSequenceDataAtRange;
|
|
22737
22750
|
exports.doesEnzymeChopOutsideOfRecognitionSite = doesEnzymeChopOutsideOfRecognitionSite;
|
|
22738
22751
|
exports.featureColors = featureColors;
|
|
22752
|
+
exports.filterRnaString = filterRnaString;
|
|
22739
22753
|
exports.filterSequenceString = filterSequenceString;
|
|
22740
22754
|
exports.findNearestRangeOfSequenceOverlapToPosition = findNearestRangeOfSequenceOverlapToPosition;
|
|
22741
22755
|
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({
|
|
13330
|
-
|
|
13331
|
-
|
|
13332
|
-
|
|
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;
|
|
@@ -21352,10 +21354,13 @@ function getAminoAcidStringFromSequenceString(sequenceString) {
|
|
|
21352
21354
|
);
|
|
21353
21355
|
const aaArray = [];
|
|
21354
21356
|
let aaString = "";
|
|
21355
|
-
aminoAcidsPerBase.forEach((aa) => {
|
|
21357
|
+
aminoAcidsPerBase.forEach((aa, index) => {
|
|
21356
21358
|
if (!aa.fullCodon) {
|
|
21357
21359
|
return;
|
|
21358
21360
|
}
|
|
21361
|
+
if (index === aminoAcidsPerBase.length - 1 && aa.aminoAcid.value === "*") {
|
|
21362
|
+
return;
|
|
21363
|
+
}
|
|
21359
21364
|
aaArray[aa.aminoAcidIndex] = aa.aminoAcid.value;
|
|
21360
21365
|
});
|
|
21361
21366
|
aaString = aaArray.join("");
|
|
@@ -21539,7 +21544,9 @@ function getSequenceDataBetweenRange(seqData, range, options = {}) {
|
|
|
21539
21544
|
if (!range)
|
|
21540
21545
|
return seqData;
|
|
21541
21546
|
const { exclude = {}, excludePartial = {} } = options;
|
|
21542
|
-
const seqDataToUse = tidyUpSequenceData(seqData, __spreadValues({
|
|
21547
|
+
const seqDataToUse = tidyUpSequenceData(seqData, __spreadValues({
|
|
21548
|
+
doNotRemoveInvalidChars: true
|
|
21549
|
+
}, options));
|
|
21543
21550
|
annotationTypes.forEach((type) => {
|
|
21544
21551
|
delete seqDataToUse[`filtered${lodashExports.startCase(type)}`];
|
|
21545
21552
|
});
|
|
@@ -21590,9 +21597,13 @@ function getSequenceDataBetweenRange(seqData, range, options = {}) {
|
|
|
21590
21597
|
}
|
|
21591
21598
|
});
|
|
21592
21599
|
});
|
|
21593
|
-
return tidyUpSequenceData(toRet, __spreadValues({
|
|
21600
|
+
return tidyUpSequenceData(toRet, __spreadValues({
|
|
21601
|
+
doNotRemoveInvalidChars: true
|
|
21602
|
+
}, options));
|
|
21594
21603
|
}
|
|
21595
|
-
return tidyUpSequenceData(seqDataToReturn, __spreadValues({
|
|
21604
|
+
return tidyUpSequenceData(seqDataToReturn, __spreadValues({
|
|
21605
|
+
doNotRemoveInvalidChars: true
|
|
21606
|
+
}, options));
|
|
21596
21607
|
}
|
|
21597
21608
|
__name(getSequenceDataBetweenRange, "getSequenceDataBetweenRange");
|
|
21598
21609
|
function getAnnotationsBetweenRange(annotationsToBeAdjusted, range, maxLength, shouldExcludePartial) {
|
|
@@ -21639,7 +21650,9 @@ function getComplementSequenceAndAnnotations(pSeqObj, options = {}) {
|
|
|
21639
21650
|
const newSeqObj = Object.assign({}, seqObj, {
|
|
21640
21651
|
sequence: getComplementSequenceString(seqObj.sequence, seqObj.isRna)
|
|
21641
21652
|
});
|
|
21642
|
-
return tidyUpSequenceData(newSeqObj, __spreadValues({
|
|
21653
|
+
return tidyUpSequenceData(newSeqObj, __spreadValues({
|
|
21654
|
+
doNotRemoveInvalidChars: true
|
|
21655
|
+
}, options));
|
|
21643
21656
|
}
|
|
21644
21657
|
__name(getComplementSequenceAndAnnotations, "getComplementSequenceAndAnnotations");
|
|
21645
21658
|
function getCutsiteType(restrictionEnzyme) {
|
|
@@ -22735,6 +22748,7 @@ export {
|
|
|
22735
22748
|
deleteSequenceDataAtRange,
|
|
22736
22749
|
doesEnzymeChopOutsideOfRecognitionSite,
|
|
22737
22750
|
featureColors,
|
|
22751
|
+
filterRnaString,
|
|
22738
22752
|
filterSequenceString,
|
|
22739
22753
|
findNearestRangeOfSequenceOverlapToPosition,
|
|
22740
22754
|
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({
|
|
13334
|
-
|
|
13335
|
-
|
|
13336
|
-
|
|
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;
|
|
@@ -21356,10 +21358,13 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
|
|
|
21356
21358
|
);
|
|
21357
21359
|
const aaArray = [];
|
|
21358
21360
|
let aaString = "";
|
|
21359
|
-
aminoAcidsPerBase.forEach((aa) => {
|
|
21361
|
+
aminoAcidsPerBase.forEach((aa, index) => {
|
|
21360
21362
|
if (!aa.fullCodon) {
|
|
21361
21363
|
return;
|
|
21362
21364
|
}
|
|
21365
|
+
if (index === aminoAcidsPerBase.length - 1 && aa.aminoAcid.value === "*") {
|
|
21366
|
+
return;
|
|
21367
|
+
}
|
|
21363
21368
|
aaArray[aa.aminoAcidIndex] = aa.aminoAcid.value;
|
|
21364
21369
|
});
|
|
21365
21370
|
aaString = aaArray.join("");
|
|
@@ -21543,7 +21548,9 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
|
|
|
21543
21548
|
if (!range)
|
|
21544
21549
|
return seqData;
|
|
21545
21550
|
const { exclude = {}, excludePartial = {} } = options;
|
|
21546
|
-
const seqDataToUse = tidyUpSequenceData(seqData, __spreadValues({
|
|
21551
|
+
const seqDataToUse = tidyUpSequenceData(seqData, __spreadValues({
|
|
21552
|
+
doNotRemoveInvalidChars: true
|
|
21553
|
+
}, options));
|
|
21547
21554
|
annotationTypes.forEach((type) => {
|
|
21548
21555
|
delete seqDataToUse[`filtered${lodashExports.startCase(type)}`];
|
|
21549
21556
|
});
|
|
@@ -21594,9 +21601,13 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
|
|
|
21594
21601
|
}
|
|
21595
21602
|
});
|
|
21596
21603
|
});
|
|
21597
|
-
return tidyUpSequenceData(toRet, __spreadValues({
|
|
21604
|
+
return tidyUpSequenceData(toRet, __spreadValues({
|
|
21605
|
+
doNotRemoveInvalidChars: true
|
|
21606
|
+
}, options));
|
|
21598
21607
|
}
|
|
21599
|
-
return tidyUpSequenceData(seqDataToReturn, __spreadValues({
|
|
21608
|
+
return tidyUpSequenceData(seqDataToReturn, __spreadValues({
|
|
21609
|
+
doNotRemoveInvalidChars: true
|
|
21610
|
+
}, options));
|
|
21600
21611
|
}
|
|
21601
21612
|
__name(getSequenceDataBetweenRange, "getSequenceDataBetweenRange");
|
|
21602
21613
|
function getAnnotationsBetweenRange(annotationsToBeAdjusted, range, maxLength, shouldExcludePartial) {
|
|
@@ -21643,7 +21654,9 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
|
|
|
21643
21654
|
const newSeqObj = Object.assign({}, seqObj, {
|
|
21644
21655
|
sequence: getComplementSequenceString(seqObj.sequence, seqObj.isRna)
|
|
21645
21656
|
});
|
|
21646
|
-
return tidyUpSequenceData(newSeqObj, __spreadValues({
|
|
21657
|
+
return tidyUpSequenceData(newSeqObj, __spreadValues({
|
|
21658
|
+
doNotRemoveInvalidChars: true
|
|
21659
|
+
}, options));
|
|
21647
21660
|
}
|
|
21648
21661
|
__name(getComplementSequenceAndAnnotations, "getComplementSequenceAndAnnotations");
|
|
21649
21662
|
function getCutsiteType(restrictionEnzyme) {
|
|
@@ -22738,6 +22751,7 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
|
|
|
22738
22751
|
exports2.deleteSequenceDataAtRange = deleteSequenceDataAtRange;
|
|
22739
22752
|
exports2.doesEnzymeChopOutsideOfRecognitionSite = doesEnzymeChopOutsideOfRecognitionSite;
|
|
22740
22753
|
exports2.featureColors = featureColors;
|
|
22754
|
+
exports2.filterRnaString = filterRnaString;
|
|
22741
22755
|
exports2.filterSequenceString = filterSequenceString;
|
|
22742
22756
|
exports2.findNearestRangeOfSequenceOverlapToPosition = findNearestRangeOfSequenceOverlapToPosition;
|
|
22743
22757
|
exports2.findOrfsInPlasmid = findOrfsInPlasmid;
|
package/package.json
CHANGED
|
@@ -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];
|
|
@@ -7,10 +7,14 @@ export default function getAminoAcidStringFromSequenceString(sequenceString) {
|
|
|
7
7
|
);
|
|
8
8
|
const aaArray = [];
|
|
9
9
|
let aaString = "";
|
|
10
|
-
aminoAcidsPerBase.forEach(aa => {
|
|
10
|
+
aminoAcidsPerBase.forEach((aa, index) => {
|
|
11
11
|
if (!aa.fullCodon) {
|
|
12
12
|
return;
|
|
13
13
|
}
|
|
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 === '*') {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
14
18
|
aaArray[aa.aminoAcidIndex] = aa.aminoAcid.value;
|
|
15
19
|
});
|
|
16
20
|
aaString = aaArray.join("");
|
|
@@ -14,5 +14,6 @@ describe("getAminoAcidStringFromSequenceString", () => {
|
|
|
14
14
|
assert.equal("MM", getAminoAcidStringFromSequenceString("atgatg"));
|
|
15
15
|
assert.equal("M--", getAminoAcidStringFromSequenceString("atg------"));
|
|
16
16
|
assert.equal("", getAminoAcidStringFromSequenceString("at"));
|
|
17
|
+
assert.equal("MTNYNQKNEN", getAminoAcidStringFromSequenceString("atgactaattataatcaaaaaaatgaaaattaa"));
|
|
17
18
|
});
|
|
18
19
|
});
|
|
@@ -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, {
|
|
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, {
|
|
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, {
|
|
84
|
+
return tidyUpSequenceData(toRet, {
|
|
85
|
+
doNotRemoveInvalidChars: true,
|
|
86
|
+
...options
|
|
87
|
+
});
|
|
82
88
|
}
|
|
83
89
|
|
|
84
|
-
return tidyUpSequenceData(seqDataToReturn, {
|
|
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 {
|
|
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, {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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
|