@teselagen/sequence-utils 0.3.10 → 0.3.12
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/bioData.d.ts +1 -1
- package/filterSequenceString.d.ts +2 -2
- package/index.js +29 -16
- package/index.mjs +29 -16
- package/index.umd.js +29 -16
- package/package.json +1 -1
- package/src/bioData.js +2 -2
- package/src/diffUtils.js +8 -3
- package/src/filterSequenceString.js +6 -6
- package/src/filterSequenceString.test.js +23 -5
- package/src/getComplementSequenceAndAnnotations.js +1 -1
- package/src/getReverseComplementSequenceAndAnnotations.js +5 -2
- package/src/getSequenceDataBetweenRange.js +3 -3
- package/src/insertSequenceDataAtPositionOrRange.js +2 -1
- package/src/insertSequenceDataAtPositionOrRange.test.js +2 -2
- package/src/rotateSequenceDataToPosition.js +4 -1
- package/src/tidyUpSequenceData.test.js +27 -30
package/bioData.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export const protein_letters: "ACDEFGHIKLMNPQRSTVWY";
|
|
2
2
|
export const protein_letters_withUandX: "ACDEFGHIKLMNPQRSTVWYUX";
|
|
3
|
-
export const extended_protein_letters: "ACDEFGHIKLMNPQRSTVWYBXZJUO
|
|
3
|
+
export const extended_protein_letters: "ACDEFGHIKLMNPQRSTVWYBXZJUO";
|
|
4
4
|
export const ambiguous_dna_letters: "GATCRYWSMKHBVDN";
|
|
5
5
|
export const unambiguous_dna_letters: "GATC";
|
|
6
6
|
export const ambiguous_rna_letters: "GAUCRYWSMKHBVDN";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export default function filterSequenceString(sequenceString: any, { additionalValidChars, isOligo, name, isProtein, isRna, isMixedRnaAndDna
|
|
1
|
+
export default function filterSequenceString(sequenceString: any, { additionalValidChars, isOligo, name, isProtein, isRna, isMixedRnaAndDna }?: {
|
|
2
2
|
additionalValidChars?: string | undefined;
|
|
3
3
|
isOligo: any;
|
|
4
4
|
name: any;
|
|
@@ -6,7 +6,7 @@ export default function filterSequenceString(sequenceString: any, { additionalVa
|
|
|
6
6
|
isRna: any;
|
|
7
7
|
isMixedRnaAndDna: any;
|
|
8
8
|
}): (string | string[])[];
|
|
9
|
-
export function getAcceptedChars({ isOligo, isProtein, isRna, isMixedRnaAndDna
|
|
9
|
+
export function getAcceptedChars({ isOligo, isProtein, isRna, isMixedRnaAndDna }?: {
|
|
10
10
|
isOligo: any;
|
|
11
11
|
isProtein: any;
|
|
12
12
|
isRna: any;
|
package/index.js
CHANGED
|
@@ -6000,7 +6000,7 @@ lodash.exports;
|
|
|
6000
6000
|
var lodashExports = lodash.exports;
|
|
6001
6001
|
const protein_letters = "ACDEFGHIKLMNPQRSTVWY";
|
|
6002
6002
|
const protein_letters_withUandX = "ACDEFGHIKLMNPQRSTVWYUX";
|
|
6003
|
-
const extended_protein_letters = "ACDEFGHIKLMNPQRSTVWYBXZJUO
|
|
6003
|
+
const extended_protein_letters = "ACDEFGHIKLMNPQRSTVWYBXZJUO";
|
|
6004
6004
|
const ambiguous_dna_letters = "GATCRYWSMKHBVDN";
|
|
6005
6005
|
const unambiguous_dna_letters = "GATC";
|
|
6006
6006
|
const ambiguous_rna_letters = "GAUCRYWSMKHBVDN";
|
|
@@ -6056,7 +6056,7 @@ const extended_protein_values = {
|
|
|
6056
6056
|
Y: "Y",
|
|
6057
6057
|
Z: "QE",
|
|
6058
6058
|
"*": "\\*\\.",
|
|
6059
|
-
".": "
|
|
6059
|
+
".": "\\.",
|
|
6060
6060
|
"-": "\\-"
|
|
6061
6061
|
};
|
|
6062
6062
|
const bioData = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
@@ -12399,9 +12399,12 @@ function getReplaceChars({
|
|
|
12399
12399
|
isRna,
|
|
12400
12400
|
isMixedRnaAndDna
|
|
12401
12401
|
} = {}) {
|
|
12402
|
-
return isProtein ? {} :
|
|
12403
|
-
//
|
|
12404
|
-
{}
|
|
12402
|
+
return isProtein ? {} : (
|
|
12403
|
+
// {".": "*"}
|
|
12404
|
+
isOligo ? {} : isRna ? { t: "u" } : isMixedRnaAndDna ? {} : (
|
|
12405
|
+
//just plain old dna
|
|
12406
|
+
{}
|
|
12407
|
+
)
|
|
12405
12408
|
);
|
|
12406
12409
|
}
|
|
12407
12410
|
__name(getReplaceChars, "getReplaceChars");
|
|
@@ -12672,11 +12675,13 @@ __name(tidyUpSequenceData, "tidyUpSequenceData");
|
|
|
12672
12675
|
const getDiffFromSeqs = /* @__PURE__ */ __name((oldData, newData, { ignoreKeys = [] } = {}) => {
|
|
12673
12676
|
oldData = tidyUpSequenceData(oldData, {
|
|
12674
12677
|
annotationsAsObjects: true,
|
|
12675
|
-
noTranslationData: true
|
|
12678
|
+
noTranslationData: true,
|
|
12679
|
+
doNotRemoveInvalidChars: true
|
|
12676
12680
|
});
|
|
12677
12681
|
newData = tidyUpSequenceData(newData, {
|
|
12678
12682
|
annotationsAsObjects: true,
|
|
12679
|
-
noTranslationData: true
|
|
12683
|
+
noTranslationData: true,
|
|
12684
|
+
doNotRemoveInvalidChars: true
|
|
12680
12685
|
});
|
|
12681
12686
|
[oldData, newData].forEach((d) => {
|
|
12682
12687
|
[
|
|
@@ -12708,7 +12713,10 @@ const patchSeqWithDiff = /* @__PURE__ */ __name((oldData, diff, { ignoreKeys = [
|
|
|
12708
12713
|
delete diff[k];
|
|
12709
12714
|
});
|
|
12710
12715
|
return jsondiffpatch_umdExports.patch(
|
|
12711
|
-
tidyUpSequenceData(lodashExports.cloneDeep(oldData), {
|
|
12716
|
+
tidyUpSequenceData(lodashExports.cloneDeep(oldData), {
|
|
12717
|
+
annotationsAsObjects: true,
|
|
12718
|
+
doNotRemoveInvalidChars: true
|
|
12719
|
+
}),
|
|
12712
12720
|
diff
|
|
12713
12721
|
);
|
|
12714
12722
|
}, "patchSeqWithDiff");
|
|
@@ -13281,7 +13289,9 @@ function arrayRotate(arr, count) {
|
|
|
13281
13289
|
}
|
|
13282
13290
|
__name(arrayRotate, "arrayRotate");
|
|
13283
13291
|
function rotateSequenceDataToPosition(sequenceData, caretPosition, options) {
|
|
13284
|
-
const newSequenceData = tidyUpSequenceData(sequenceData,
|
|
13292
|
+
const newSequenceData = tidyUpSequenceData(sequenceData, __spreadValues({
|
|
13293
|
+
doNotRemoveInvalidChars: true
|
|
13294
|
+
}, options));
|
|
13285
13295
|
newSequenceData.sequence = rotateBpsToPosition(
|
|
13286
13296
|
newSequenceData.sequence,
|
|
13287
13297
|
caretPosition
|
|
@@ -13318,7 +13328,7 @@ function adjustAnnotationsToInsert(annotationsToBeAdjusted, insertStart, insertL
|
|
|
13318
13328
|
__name(adjustAnnotationsToInsert, "adjustAnnotationsToInsert");
|
|
13319
13329
|
function insertSequenceDataAtPositionOrRange(_sequenceDataToInsert, _existingSequenceData, caretPositionOrRange, options = {}) {
|
|
13320
13330
|
const { maintainOriginSplit } = options;
|
|
13321
|
-
let existingSequenceData = tidyUpSequenceData(_existingSequenceData, options);
|
|
13331
|
+
let existingSequenceData = tidyUpSequenceData(_existingSequenceData, __spreadValues({ doNotRemoveInvalidChars: true }, options));
|
|
13322
13332
|
const sequenceDataToInsert = tidyUpSequenceData(
|
|
13323
13333
|
_sequenceDataToInsert,
|
|
13324
13334
|
options
|
|
@@ -13336,6 +13346,7 @@ function insertSequenceDataAtPositionOrRange(_sequenceDataToInsert, _existingSeq
|
|
|
13336
13346
|
return acc[type] = [];
|
|
13337
13347
|
}, {})), {
|
|
13338
13348
|
sequence: "",
|
|
13349
|
+
doNotRemoveInvalidChars: true,
|
|
13339
13350
|
proteinSequence: "",
|
|
13340
13351
|
chromatogramData: void 0
|
|
13341
13352
|
}),
|
|
@@ -21530,7 +21541,7 @@ function getSequenceDataBetweenRange(seqData, range, options = {}) {
|
|
|
21530
21541
|
if (!range)
|
|
21531
21542
|
return seqData;
|
|
21532
21543
|
const { exclude = {}, excludePartial = {} } = options;
|
|
21533
|
-
const seqDataToUse = tidyUpSequenceData(seqData, options);
|
|
21544
|
+
const seqDataToUse = tidyUpSequenceData(seqData, __spreadValues({ doNotRemoveInvalidChars: true }, options));
|
|
21534
21545
|
annotationTypes.forEach((type) => {
|
|
21535
21546
|
delete seqDataToUse[`filtered${lodashExports.startCase(type)}`];
|
|
21536
21547
|
});
|
|
@@ -21581,9 +21592,9 @@ function getSequenceDataBetweenRange(seqData, range, options = {}) {
|
|
|
21581
21592
|
}
|
|
21582
21593
|
});
|
|
21583
21594
|
});
|
|
21584
|
-
return tidyUpSequenceData(toRet, options);
|
|
21595
|
+
return tidyUpSequenceData(toRet, __spreadValues({ doNotRemoveInvalidChars: true }, options));
|
|
21585
21596
|
}
|
|
21586
|
-
return tidyUpSequenceData(seqDataToReturn, options);
|
|
21597
|
+
return tidyUpSequenceData(seqDataToReturn, __spreadValues({ doNotRemoveInvalidChars: true }, options));
|
|
21587
21598
|
}
|
|
21588
21599
|
__name(getSequenceDataBetweenRange, "getSequenceDataBetweenRange");
|
|
21589
21600
|
function getAnnotationsBetweenRange(annotationsToBeAdjusted, range, maxLength, shouldExcludePartial) {
|
|
@@ -21630,7 +21641,7 @@ function getComplementSequenceAndAnnotations(pSeqObj, options = {}) {
|
|
|
21630
21641
|
const newSeqObj = Object.assign({}, seqObj, {
|
|
21631
21642
|
sequence: getComplementSequenceString(seqObj.sequence, seqObj.isRna)
|
|
21632
21643
|
});
|
|
21633
|
-
return tidyUpSequenceData(newSeqObj, options);
|
|
21644
|
+
return tidyUpSequenceData(newSeqObj, __spreadValues({ doNotRemoveInvalidChars: true }, options));
|
|
21634
21645
|
}
|
|
21635
21646
|
__name(getComplementSequenceAndAnnotations, "getComplementSequenceAndAnnotations");
|
|
21636
21647
|
function getCutsiteType(restrictionEnzyme) {
|
|
@@ -21836,7 +21847,7 @@ __name(getReverseComplementAnnotation, "getReverseComplementAnnotation");
|
|
|
21836
21847
|
function getReverseComplementSequenceAndAnnoations(pSeqObj, options = {}) {
|
|
21837
21848
|
const seqObj = tidyUpSequenceData(
|
|
21838
21849
|
getSequenceDataBetweenRange(pSeqObj, options.range),
|
|
21839
|
-
options
|
|
21850
|
+
__spreadValues({ doNotRemoveInvalidChars: true }, options)
|
|
21840
21851
|
);
|
|
21841
21852
|
const newSeqObj = Object.assign(
|
|
21842
21853
|
{},
|
|
@@ -21856,7 +21867,9 @@ function getReverseComplementSequenceAndAnnoations(pSeqObj, options = {}) {
|
|
|
21856
21867
|
return acc;
|
|
21857
21868
|
}, {})
|
|
21858
21869
|
);
|
|
21859
|
-
return tidyUpSequenceData(newSeqObj,
|
|
21870
|
+
return tidyUpSequenceData(newSeqObj, __spreadValues({
|
|
21871
|
+
doNotRemoveInvalidChars: true
|
|
21872
|
+
}, options));
|
|
21860
21873
|
}
|
|
21861
21874
|
__name(getReverseComplementSequenceAndAnnoations, "getReverseComplementSequenceAndAnnoations");
|
|
21862
21875
|
function getReverseSequenceString(sequence) {
|
package/index.mjs
CHANGED
|
@@ -5998,7 +5998,7 @@ lodash.exports;
|
|
|
5998
5998
|
var lodashExports = lodash.exports;
|
|
5999
5999
|
const protein_letters = "ACDEFGHIKLMNPQRSTVWY";
|
|
6000
6000
|
const protein_letters_withUandX = "ACDEFGHIKLMNPQRSTVWYUX";
|
|
6001
|
-
const extended_protein_letters = "ACDEFGHIKLMNPQRSTVWYBXZJUO
|
|
6001
|
+
const extended_protein_letters = "ACDEFGHIKLMNPQRSTVWYBXZJUO";
|
|
6002
6002
|
const ambiguous_dna_letters = "GATCRYWSMKHBVDN";
|
|
6003
6003
|
const unambiguous_dna_letters = "GATC";
|
|
6004
6004
|
const ambiguous_rna_letters = "GAUCRYWSMKHBVDN";
|
|
@@ -6054,7 +6054,7 @@ const extended_protein_values = {
|
|
|
6054
6054
|
Y: "Y",
|
|
6055
6055
|
Z: "QE",
|
|
6056
6056
|
"*": "\\*\\.",
|
|
6057
|
-
".": "
|
|
6057
|
+
".": "\\.",
|
|
6058
6058
|
"-": "\\-"
|
|
6059
6059
|
};
|
|
6060
6060
|
const bioData = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
@@ -12397,9 +12397,12 @@ function getReplaceChars({
|
|
|
12397
12397
|
isRna,
|
|
12398
12398
|
isMixedRnaAndDna
|
|
12399
12399
|
} = {}) {
|
|
12400
|
-
return isProtein ? {} :
|
|
12401
|
-
//
|
|
12402
|
-
{}
|
|
12400
|
+
return isProtein ? {} : (
|
|
12401
|
+
// {".": "*"}
|
|
12402
|
+
isOligo ? {} : isRna ? { t: "u" } : isMixedRnaAndDna ? {} : (
|
|
12403
|
+
//just plain old dna
|
|
12404
|
+
{}
|
|
12405
|
+
)
|
|
12403
12406
|
);
|
|
12404
12407
|
}
|
|
12405
12408
|
__name(getReplaceChars, "getReplaceChars");
|
|
@@ -12670,11 +12673,13 @@ __name(tidyUpSequenceData, "tidyUpSequenceData");
|
|
|
12670
12673
|
const getDiffFromSeqs = /* @__PURE__ */ __name((oldData, newData, { ignoreKeys = [] } = {}) => {
|
|
12671
12674
|
oldData = tidyUpSequenceData(oldData, {
|
|
12672
12675
|
annotationsAsObjects: true,
|
|
12673
|
-
noTranslationData: true
|
|
12676
|
+
noTranslationData: true,
|
|
12677
|
+
doNotRemoveInvalidChars: true
|
|
12674
12678
|
});
|
|
12675
12679
|
newData = tidyUpSequenceData(newData, {
|
|
12676
12680
|
annotationsAsObjects: true,
|
|
12677
|
-
noTranslationData: true
|
|
12681
|
+
noTranslationData: true,
|
|
12682
|
+
doNotRemoveInvalidChars: true
|
|
12678
12683
|
});
|
|
12679
12684
|
[oldData, newData].forEach((d) => {
|
|
12680
12685
|
[
|
|
@@ -12706,7 +12711,10 @@ const patchSeqWithDiff = /* @__PURE__ */ __name((oldData, diff, { ignoreKeys = [
|
|
|
12706
12711
|
delete diff[k];
|
|
12707
12712
|
});
|
|
12708
12713
|
return jsondiffpatch_umdExports.patch(
|
|
12709
|
-
tidyUpSequenceData(lodashExports.cloneDeep(oldData), {
|
|
12714
|
+
tidyUpSequenceData(lodashExports.cloneDeep(oldData), {
|
|
12715
|
+
annotationsAsObjects: true,
|
|
12716
|
+
doNotRemoveInvalidChars: true
|
|
12717
|
+
}),
|
|
12710
12718
|
diff
|
|
12711
12719
|
);
|
|
12712
12720
|
}, "patchSeqWithDiff");
|
|
@@ -13279,7 +13287,9 @@ function arrayRotate(arr, count) {
|
|
|
13279
13287
|
}
|
|
13280
13288
|
__name(arrayRotate, "arrayRotate");
|
|
13281
13289
|
function rotateSequenceDataToPosition(sequenceData, caretPosition, options) {
|
|
13282
|
-
const newSequenceData = tidyUpSequenceData(sequenceData,
|
|
13290
|
+
const newSequenceData = tidyUpSequenceData(sequenceData, __spreadValues({
|
|
13291
|
+
doNotRemoveInvalidChars: true
|
|
13292
|
+
}, options));
|
|
13283
13293
|
newSequenceData.sequence = rotateBpsToPosition(
|
|
13284
13294
|
newSequenceData.sequence,
|
|
13285
13295
|
caretPosition
|
|
@@ -13316,7 +13326,7 @@ function adjustAnnotationsToInsert(annotationsToBeAdjusted, insertStart, insertL
|
|
|
13316
13326
|
__name(adjustAnnotationsToInsert, "adjustAnnotationsToInsert");
|
|
13317
13327
|
function insertSequenceDataAtPositionOrRange(_sequenceDataToInsert, _existingSequenceData, caretPositionOrRange, options = {}) {
|
|
13318
13328
|
const { maintainOriginSplit } = options;
|
|
13319
|
-
let existingSequenceData = tidyUpSequenceData(_existingSequenceData, options);
|
|
13329
|
+
let existingSequenceData = tidyUpSequenceData(_existingSequenceData, __spreadValues({ doNotRemoveInvalidChars: true }, options));
|
|
13320
13330
|
const sequenceDataToInsert = tidyUpSequenceData(
|
|
13321
13331
|
_sequenceDataToInsert,
|
|
13322
13332
|
options
|
|
@@ -13334,6 +13344,7 @@ function insertSequenceDataAtPositionOrRange(_sequenceDataToInsert, _existingSeq
|
|
|
13334
13344
|
return acc[type] = [];
|
|
13335
13345
|
}, {})), {
|
|
13336
13346
|
sequence: "",
|
|
13347
|
+
doNotRemoveInvalidChars: true,
|
|
13337
13348
|
proteinSequence: "",
|
|
13338
13349
|
chromatogramData: void 0
|
|
13339
13350
|
}),
|
|
@@ -21528,7 +21539,7 @@ function getSequenceDataBetweenRange(seqData, range, options = {}) {
|
|
|
21528
21539
|
if (!range)
|
|
21529
21540
|
return seqData;
|
|
21530
21541
|
const { exclude = {}, excludePartial = {} } = options;
|
|
21531
|
-
const seqDataToUse = tidyUpSequenceData(seqData, options);
|
|
21542
|
+
const seqDataToUse = tidyUpSequenceData(seqData, __spreadValues({ doNotRemoveInvalidChars: true }, options));
|
|
21532
21543
|
annotationTypes.forEach((type) => {
|
|
21533
21544
|
delete seqDataToUse[`filtered${lodashExports.startCase(type)}`];
|
|
21534
21545
|
});
|
|
@@ -21579,9 +21590,9 @@ function getSequenceDataBetweenRange(seqData, range, options = {}) {
|
|
|
21579
21590
|
}
|
|
21580
21591
|
});
|
|
21581
21592
|
});
|
|
21582
|
-
return tidyUpSequenceData(toRet, options);
|
|
21593
|
+
return tidyUpSequenceData(toRet, __spreadValues({ doNotRemoveInvalidChars: true }, options));
|
|
21583
21594
|
}
|
|
21584
|
-
return tidyUpSequenceData(seqDataToReturn, options);
|
|
21595
|
+
return tidyUpSequenceData(seqDataToReturn, __spreadValues({ doNotRemoveInvalidChars: true }, options));
|
|
21585
21596
|
}
|
|
21586
21597
|
__name(getSequenceDataBetweenRange, "getSequenceDataBetweenRange");
|
|
21587
21598
|
function getAnnotationsBetweenRange(annotationsToBeAdjusted, range, maxLength, shouldExcludePartial) {
|
|
@@ -21628,7 +21639,7 @@ function getComplementSequenceAndAnnotations(pSeqObj, options = {}) {
|
|
|
21628
21639
|
const newSeqObj = Object.assign({}, seqObj, {
|
|
21629
21640
|
sequence: getComplementSequenceString(seqObj.sequence, seqObj.isRna)
|
|
21630
21641
|
});
|
|
21631
|
-
return tidyUpSequenceData(newSeqObj, options);
|
|
21642
|
+
return tidyUpSequenceData(newSeqObj, __spreadValues({ doNotRemoveInvalidChars: true }, options));
|
|
21632
21643
|
}
|
|
21633
21644
|
__name(getComplementSequenceAndAnnotations, "getComplementSequenceAndAnnotations");
|
|
21634
21645
|
function getCutsiteType(restrictionEnzyme) {
|
|
@@ -21834,7 +21845,7 @@ __name(getReverseComplementAnnotation, "getReverseComplementAnnotation");
|
|
|
21834
21845
|
function getReverseComplementSequenceAndAnnoations(pSeqObj, options = {}) {
|
|
21835
21846
|
const seqObj = tidyUpSequenceData(
|
|
21836
21847
|
getSequenceDataBetweenRange(pSeqObj, options.range),
|
|
21837
|
-
options
|
|
21848
|
+
__spreadValues({ doNotRemoveInvalidChars: true }, options)
|
|
21838
21849
|
);
|
|
21839
21850
|
const newSeqObj = Object.assign(
|
|
21840
21851
|
{},
|
|
@@ -21854,7 +21865,9 @@ function getReverseComplementSequenceAndAnnoations(pSeqObj, options = {}) {
|
|
|
21854
21865
|
return acc;
|
|
21855
21866
|
}, {})
|
|
21856
21867
|
);
|
|
21857
|
-
return tidyUpSequenceData(newSeqObj,
|
|
21868
|
+
return tidyUpSequenceData(newSeqObj, __spreadValues({
|
|
21869
|
+
doNotRemoveInvalidChars: true
|
|
21870
|
+
}, options));
|
|
21858
21871
|
}
|
|
21859
21872
|
__name(getReverseComplementSequenceAndAnnoations, "getReverseComplementSequenceAndAnnoations");
|
|
21860
21873
|
function getReverseSequenceString(sequence) {
|
package/index.umd.js
CHANGED
|
@@ -6002,7 +6002,7 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
|
|
|
6002
6002
|
var lodashExports = lodash.exports;
|
|
6003
6003
|
const protein_letters = "ACDEFGHIKLMNPQRSTVWY";
|
|
6004
6004
|
const protein_letters_withUandX = "ACDEFGHIKLMNPQRSTVWYUX";
|
|
6005
|
-
const extended_protein_letters = "ACDEFGHIKLMNPQRSTVWYBXZJUO
|
|
6005
|
+
const extended_protein_letters = "ACDEFGHIKLMNPQRSTVWYBXZJUO";
|
|
6006
6006
|
const ambiguous_dna_letters = "GATCRYWSMKHBVDN";
|
|
6007
6007
|
const unambiguous_dna_letters = "GATC";
|
|
6008
6008
|
const ambiguous_rna_letters = "GAUCRYWSMKHBVDN";
|
|
@@ -6058,7 +6058,7 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
|
|
|
6058
6058
|
Y: "Y",
|
|
6059
6059
|
Z: "QE",
|
|
6060
6060
|
"*": "\\*\\.",
|
|
6061
|
-
".": "
|
|
6061
|
+
".": "\\.",
|
|
6062
6062
|
"-": "\\-"
|
|
6063
6063
|
};
|
|
6064
6064
|
const bioData = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
@@ -12401,9 +12401,12 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
|
|
|
12401
12401
|
isRna,
|
|
12402
12402
|
isMixedRnaAndDna
|
|
12403
12403
|
} = {}) {
|
|
12404
|
-
return isProtein ? {} :
|
|
12405
|
-
//
|
|
12406
|
-
{}
|
|
12404
|
+
return isProtein ? {} : (
|
|
12405
|
+
// {".": "*"}
|
|
12406
|
+
isOligo ? {} : isRna ? { t: "u" } : isMixedRnaAndDna ? {} : (
|
|
12407
|
+
//just plain old dna
|
|
12408
|
+
{}
|
|
12409
|
+
)
|
|
12407
12410
|
);
|
|
12408
12411
|
}
|
|
12409
12412
|
__name(getReplaceChars, "getReplaceChars");
|
|
@@ -12674,11 +12677,13 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
|
|
|
12674
12677
|
const getDiffFromSeqs = /* @__PURE__ */ __name((oldData, newData, { ignoreKeys = [] } = {}) => {
|
|
12675
12678
|
oldData = tidyUpSequenceData(oldData, {
|
|
12676
12679
|
annotationsAsObjects: true,
|
|
12677
|
-
noTranslationData: true
|
|
12680
|
+
noTranslationData: true,
|
|
12681
|
+
doNotRemoveInvalidChars: true
|
|
12678
12682
|
});
|
|
12679
12683
|
newData = tidyUpSequenceData(newData, {
|
|
12680
12684
|
annotationsAsObjects: true,
|
|
12681
|
-
noTranslationData: true
|
|
12685
|
+
noTranslationData: true,
|
|
12686
|
+
doNotRemoveInvalidChars: true
|
|
12682
12687
|
});
|
|
12683
12688
|
[oldData, newData].forEach((d) => {
|
|
12684
12689
|
[
|
|
@@ -12710,7 +12715,10 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
|
|
|
12710
12715
|
delete diff[k];
|
|
12711
12716
|
});
|
|
12712
12717
|
return jsondiffpatch_umdExports.patch(
|
|
12713
|
-
tidyUpSequenceData(lodashExports.cloneDeep(oldData), {
|
|
12718
|
+
tidyUpSequenceData(lodashExports.cloneDeep(oldData), {
|
|
12719
|
+
annotationsAsObjects: true,
|
|
12720
|
+
doNotRemoveInvalidChars: true
|
|
12721
|
+
}),
|
|
12714
12722
|
diff
|
|
12715
12723
|
);
|
|
12716
12724
|
}, "patchSeqWithDiff");
|
|
@@ -13283,7 +13291,9 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
|
|
|
13283
13291
|
}
|
|
13284
13292
|
__name(arrayRotate, "arrayRotate");
|
|
13285
13293
|
function rotateSequenceDataToPosition(sequenceData, caretPosition, options) {
|
|
13286
|
-
const newSequenceData = tidyUpSequenceData(sequenceData,
|
|
13294
|
+
const newSequenceData = tidyUpSequenceData(sequenceData, __spreadValues({
|
|
13295
|
+
doNotRemoveInvalidChars: true
|
|
13296
|
+
}, options));
|
|
13287
13297
|
newSequenceData.sequence = rotateBpsToPosition(
|
|
13288
13298
|
newSequenceData.sequence,
|
|
13289
13299
|
caretPosition
|
|
@@ -13320,7 +13330,7 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
|
|
|
13320
13330
|
__name(adjustAnnotationsToInsert, "adjustAnnotationsToInsert");
|
|
13321
13331
|
function insertSequenceDataAtPositionOrRange(_sequenceDataToInsert, _existingSequenceData, caretPositionOrRange, options = {}) {
|
|
13322
13332
|
const { maintainOriginSplit } = options;
|
|
13323
|
-
let existingSequenceData = tidyUpSequenceData(_existingSequenceData, options);
|
|
13333
|
+
let existingSequenceData = tidyUpSequenceData(_existingSequenceData, __spreadValues({ doNotRemoveInvalidChars: true }, options));
|
|
13324
13334
|
const sequenceDataToInsert = tidyUpSequenceData(
|
|
13325
13335
|
_sequenceDataToInsert,
|
|
13326
13336
|
options
|
|
@@ -13338,6 +13348,7 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
|
|
|
13338
13348
|
return acc[type] = [];
|
|
13339
13349
|
}, {})), {
|
|
13340
13350
|
sequence: "",
|
|
13351
|
+
doNotRemoveInvalidChars: true,
|
|
13341
13352
|
proteinSequence: "",
|
|
13342
13353
|
chromatogramData: void 0
|
|
13343
13354
|
}),
|
|
@@ -21532,7 +21543,7 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
|
|
|
21532
21543
|
if (!range)
|
|
21533
21544
|
return seqData;
|
|
21534
21545
|
const { exclude = {}, excludePartial = {} } = options;
|
|
21535
|
-
const seqDataToUse = tidyUpSequenceData(seqData, options);
|
|
21546
|
+
const seqDataToUse = tidyUpSequenceData(seqData, __spreadValues({ doNotRemoveInvalidChars: true }, options));
|
|
21536
21547
|
annotationTypes.forEach((type) => {
|
|
21537
21548
|
delete seqDataToUse[`filtered${lodashExports.startCase(type)}`];
|
|
21538
21549
|
});
|
|
@@ -21583,9 +21594,9 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
|
|
|
21583
21594
|
}
|
|
21584
21595
|
});
|
|
21585
21596
|
});
|
|
21586
|
-
return tidyUpSequenceData(toRet, options);
|
|
21597
|
+
return tidyUpSequenceData(toRet, __spreadValues({ doNotRemoveInvalidChars: true }, options));
|
|
21587
21598
|
}
|
|
21588
|
-
return tidyUpSequenceData(seqDataToReturn, options);
|
|
21599
|
+
return tidyUpSequenceData(seqDataToReturn, __spreadValues({ doNotRemoveInvalidChars: true }, options));
|
|
21589
21600
|
}
|
|
21590
21601
|
__name(getSequenceDataBetweenRange, "getSequenceDataBetweenRange");
|
|
21591
21602
|
function getAnnotationsBetweenRange(annotationsToBeAdjusted, range, maxLength, shouldExcludePartial) {
|
|
@@ -21632,7 +21643,7 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
|
|
|
21632
21643
|
const newSeqObj = Object.assign({}, seqObj, {
|
|
21633
21644
|
sequence: getComplementSequenceString(seqObj.sequence, seqObj.isRna)
|
|
21634
21645
|
});
|
|
21635
|
-
return tidyUpSequenceData(newSeqObj, options);
|
|
21646
|
+
return tidyUpSequenceData(newSeqObj, __spreadValues({ doNotRemoveInvalidChars: true }, options));
|
|
21636
21647
|
}
|
|
21637
21648
|
__name(getComplementSequenceAndAnnotations, "getComplementSequenceAndAnnotations");
|
|
21638
21649
|
function getCutsiteType(restrictionEnzyme) {
|
|
@@ -21838,7 +21849,7 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
|
|
|
21838
21849
|
function getReverseComplementSequenceAndAnnoations(pSeqObj, options = {}) {
|
|
21839
21850
|
const seqObj = tidyUpSequenceData(
|
|
21840
21851
|
getSequenceDataBetweenRange(pSeqObj, options.range),
|
|
21841
|
-
options
|
|
21852
|
+
__spreadValues({ doNotRemoveInvalidChars: true }, options)
|
|
21842
21853
|
);
|
|
21843
21854
|
const newSeqObj = Object.assign(
|
|
21844
21855
|
{},
|
|
@@ -21858,7 +21869,9 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
|
|
|
21858
21869
|
return acc;
|
|
21859
21870
|
}, {})
|
|
21860
21871
|
);
|
|
21861
|
-
return tidyUpSequenceData(newSeqObj,
|
|
21872
|
+
return tidyUpSequenceData(newSeqObj, __spreadValues({
|
|
21873
|
+
doNotRemoveInvalidChars: true
|
|
21874
|
+
}, options));
|
|
21862
21875
|
}
|
|
21863
21876
|
__name(getReverseComplementSequenceAndAnnoations, "getReverseComplementSequenceAndAnnoations");
|
|
21864
21877
|
function getReverseSequenceString(sequence) {
|
package/package.json
CHANGED
package/src/bioData.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
export const protein_letters = "ACDEFGHIKLMNPQRSTVWY";
|
|
4
4
|
export const protein_letters_withUandX = "ACDEFGHIKLMNPQRSTVWYUX";
|
|
5
|
-
export const extended_protein_letters = "ACDEFGHIKLMNPQRSTVWYBXZJUO
|
|
5
|
+
export const extended_protein_letters = "ACDEFGHIKLMNPQRSTVWYBXZJUO";
|
|
6
6
|
export const ambiguous_dna_letters = "GATCRYWSMKHBVDN";
|
|
7
7
|
export const unambiguous_dna_letters = "GATC";
|
|
8
8
|
export const ambiguous_rna_letters = "GAUCRYWSMKHBVDN";
|
|
@@ -60,6 +60,6 @@ export const extended_protein_values = {
|
|
|
60
60
|
Y: "Y",
|
|
61
61
|
Z: "QE",
|
|
62
62
|
"*": "\\*\\.",
|
|
63
|
-
".": "
|
|
63
|
+
".": "\\.",
|
|
64
64
|
"-": "\\-"
|
|
65
65
|
};
|
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), {
|
|
52
|
+
tidyUpSequenceData(cloneDeep(oldData), {
|
|
53
|
+
annotationsAsObjects: true,
|
|
54
|
+
doNotRemoveInvalidChars: true
|
|
55
|
+
}),
|
|
51
56
|
diff
|
|
52
57
|
);
|
|
53
58
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ambiguous_dna_letters,
|
|
3
3
|
ambiguous_rna_letters,
|
|
4
|
-
extended_protein_letters
|
|
4
|
+
extended_protein_letters
|
|
5
5
|
} from "./bioData";
|
|
6
6
|
|
|
7
7
|
export default function filterSequenceString(
|
|
@@ -12,14 +12,14 @@ export default function filterSequenceString(
|
|
|
12
12
|
name,
|
|
13
13
|
isProtein,
|
|
14
14
|
isRna,
|
|
15
|
-
isMixedRnaAndDna
|
|
15
|
+
isMixedRnaAndDna
|
|
16
16
|
} = {}
|
|
17
17
|
) {
|
|
18
18
|
const acceptedChars = getAcceptedChars({
|
|
19
19
|
isOligo,
|
|
20
20
|
isProtein,
|
|
21
21
|
isRna,
|
|
22
|
-
isMixedRnaAndDna
|
|
22
|
+
isMixedRnaAndDna
|
|
23
23
|
});
|
|
24
24
|
const replaceChars = getReplaceChars({
|
|
25
25
|
isOligo,
|
|
@@ -80,7 +80,7 @@ export function getAcceptedChars({
|
|
|
80
80
|
isOligo,
|
|
81
81
|
isProtein,
|
|
82
82
|
isRna,
|
|
83
|
-
isMixedRnaAndDna
|
|
83
|
+
isMixedRnaAndDna
|
|
84
84
|
} = {}) {
|
|
85
85
|
return isProtein
|
|
86
86
|
? `${extended_protein_letters.toLowerCase()}}`
|
|
@@ -101,8 +101,8 @@ export function getReplaceChars({
|
|
|
101
101
|
} = {}) {
|
|
102
102
|
return isProtein
|
|
103
103
|
? {}
|
|
104
|
-
// {".": "*"}
|
|
105
|
-
|
|
104
|
+
: // {".": "*"}
|
|
105
|
+
isOligo
|
|
106
106
|
? {}
|
|
107
107
|
: isRna
|
|
108
108
|
? { t: "u" }
|
|
@@ -50,7 +50,9 @@ describe("filterSequenceString", () => {
|
|
|
50
50
|
}
|
|
51
51
|
);
|
|
52
52
|
// expect(warnings[0]).toBe(`Replaced "." with "*" 2 times`);
|
|
53
|
-
expect(warnings[0]).toBe(
|
|
53
|
+
expect(warnings[0]).toBe(
|
|
54
|
+
'Invalid character(s) detected and removed: 3, 4, 2, ", ", ", ,, ,, ., ., / '
|
|
55
|
+
);
|
|
54
56
|
expect(str).toBe("bbbxtgalmfwkqespvicyhrnd");
|
|
55
57
|
});
|
|
56
58
|
it("when isProtein: true, should handle upper case letters", () => {
|
|
@@ -60,11 +62,27 @@ describe("filterSequenceString", () => {
|
|
|
60
62
|
expect(warnings.length).toBe(0);
|
|
61
63
|
expect(str).toBe("xtgalmfWKQEspvicyhrnd");
|
|
62
64
|
});
|
|
65
|
+
|
|
66
|
+
it("when isProtein: true it should not filter this aa seq", () => {
|
|
67
|
+
const [str] = filterSequenceString(
|
|
68
|
+
"mhhhhhhgsgsmledlkrqvleanlalpkhnlasgssghvsavdrergvfviapsgvdfrimtaddmvvvsietgevvegekppaedtpthrllyqafpsiggivhthsrhatiwaqagqsipatgtthadhfygtipctrkmtdaeingeyewetgnvivetfekqgidaaqmpgvlvhshgpfawgknaedavhnaivleevaymgifcrqlapqlpdmqqtllnkhylrkhgakayygq",
|
|
69
|
+
{
|
|
70
|
+
isProtein: true
|
|
71
|
+
}
|
|
72
|
+
);
|
|
73
|
+
|
|
74
|
+
expect(str).toBe(
|
|
75
|
+
`mhhhhhhgsgsmledlkrqvleanlalpkhnlasgssghvsavdrergvfviapsgvdfrimtaddmvvvsietgevvegekppaedtpthrllyqafpsiggivhthsrhatiwaqagqsipatgtthadhfygtipctrkmtdaeingeyewetgnvivetfekqgidaaqmpgvlvhshgpfawgknaedavhnaivleevaymgifcrqlapqlpdmqqtllnkhylrkhgakayygq`
|
|
76
|
+
);
|
|
77
|
+
});
|
|
63
78
|
it("when isProtein: true, it should convert . to *", () => {
|
|
64
|
-
const [str] = filterSequenceString(
|
|
65
|
-
|
|
66
|
-
|
|
79
|
+
const [str] = filterSequenceString(
|
|
80
|
+
'BXZJUO*bbb342"""xtgalbmfwkqespvicyhrnd,,../',
|
|
81
|
+
{
|
|
82
|
+
isProtein: true
|
|
83
|
+
}
|
|
84
|
+
);
|
|
67
85
|
|
|
68
|
-
expect(str).toBe("
|
|
86
|
+
expect(str).toBe("BXZJUObbbxtgalbmfwkqespvicyhrnd");
|
|
69
87
|
});
|
|
70
88
|
});
|
|
@@ -15,5 +15,5 @@ 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, {doNotRemoveInvalidChars: true,...options});
|
|
19
19
|
}
|
|
@@ -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,
|
|
36
|
+
return tidyUpSequenceData(newSeqObj, {
|
|
37
|
+
doNotRemoveInvalidChars: true,
|
|
38
|
+
...options
|
|
39
|
+
});
|
|
37
40
|
}
|
|
@@ -16,7 +16,7 @@ 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, {doNotRemoveInvalidChars: true,...options});
|
|
20
20
|
annotationTypes.forEach(type => {
|
|
21
21
|
delete seqDataToUse[`filtered${startCase(type)}`];
|
|
22
22
|
});
|
|
@@ -78,10 +78,10 @@ export default function getSequenceDataBetweenRange(
|
|
|
78
78
|
}
|
|
79
79
|
});
|
|
80
80
|
});
|
|
81
|
-
return tidyUpSequenceData(toRet, options);
|
|
81
|
+
return tidyUpSequenceData(toRet, {doNotRemoveInvalidChars: true,...options});
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
-
return tidyUpSequenceData(seqDataToReturn, options);
|
|
84
|
+
return tidyUpSequenceData(seqDataToReturn, {doNotRemoveInvalidChars: true,...options});
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
function getAnnotationsBetweenRange(
|
|
@@ -18,7 +18,7 @@ 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);
|
|
21
|
+
let existingSequenceData = tidyUpSequenceData(_existingSequenceData, {doNotRemoveInvalidChars: true,...options});
|
|
22
22
|
const sequenceDataToInsert = tidyUpSequenceData(
|
|
23
23
|
_sequenceDataToInsert,
|
|
24
24
|
options
|
|
@@ -48,6 +48,7 @@ export default function insertSequenceDataAtPositionOrRange(
|
|
|
48
48
|
return (acc[type] = []);
|
|
49
49
|
}, {}),
|
|
50
50
|
sequence: "",
|
|
51
|
+
doNotRemoveInvalidChars: true,
|
|
51
52
|
proteinSequence: "",
|
|
52
53
|
chromatogramData: undefined
|
|
53
54
|
},
|
|
@@ -135,7 +135,7 @@ describe("insertSequenceData", () => {
|
|
|
135
135
|
});
|
|
136
136
|
it("inserts characters at correct origin spanning range with {maintainOriginSplit: true} option", () => {
|
|
137
137
|
const sequenceToInsert = {
|
|
138
|
-
sequence: "
|
|
138
|
+
sequence: "crrrrry",
|
|
139
139
|
// fffffff
|
|
140
140
|
features: [{ name: "feat1", start: 0, end: 6 }]
|
|
141
141
|
};
|
|
@@ -154,7 +154,7 @@ describe("insertSequenceData", () => {
|
|
|
154
154
|
maintainOriginSplit: true
|
|
155
155
|
}
|
|
156
156
|
);
|
|
157
|
-
postInsertSeq.sequence.should.equal("
|
|
157
|
+
postInsertSeq.sequence.should.equal("rrrryagagacr");
|
|
158
158
|
// fffff fff ff
|
|
159
159
|
postInsertSeq.features.should.containSubset([
|
|
160
160
|
{ name: "feat1", start: 10, end: 4 },
|
|
@@ -9,7 +9,10 @@ export default function rotateSequenceDataToPosition(
|
|
|
9
9
|
caretPosition,
|
|
10
10
|
options
|
|
11
11
|
) {
|
|
12
|
-
const newSequenceData = tidyUpSequenceData(sequenceData,
|
|
12
|
+
const newSequenceData = tidyUpSequenceData(sequenceData, {
|
|
13
|
+
doNotRemoveInvalidChars: true,
|
|
14
|
+
...options
|
|
15
|
+
});
|
|
13
16
|
|
|
14
17
|
//update the sequence
|
|
15
18
|
newSequenceData.sequence = rotateBpsToPosition(
|
|
@@ -6,28 +6,25 @@ chai.use(chaiSubset);
|
|
|
6
6
|
chai.should();
|
|
7
7
|
describe("tidyUpSequenceData", () => {
|
|
8
8
|
it("should remove invalid chars by default, while handling annotation start,end (and location start,end) truncation correctly", () => {
|
|
9
|
-
const res = tidyUpSequenceData(
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
},
|
|
29
|
-
|
|
30
|
-
);
|
|
9
|
+
const res = tidyUpSequenceData({
|
|
10
|
+
sequence: "http://localhost:3344/Standalone",
|
|
11
|
+
features: [
|
|
12
|
+
{
|
|
13
|
+
start: 3,
|
|
14
|
+
end: 20,
|
|
15
|
+
locations: [
|
|
16
|
+
{
|
|
17
|
+
start: "3", //this should be converted to an int :)
|
|
18
|
+
end: 5
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
start: 10,
|
|
22
|
+
end: 20
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
});
|
|
31
28
|
res.should.containSubset({
|
|
32
29
|
sequence: "httcahstStandan",
|
|
33
30
|
circular: false,
|
|
@@ -64,22 +61,22 @@ describe("tidyUpSequenceData", () => {
|
|
|
64
61
|
},
|
|
65
62
|
{ convertAnnotationsFromAAIndices: true }
|
|
66
63
|
);
|
|
67
|
-
|
|
64
|
+
|
|
68
65
|
res.should.containSubset({
|
|
69
66
|
aminoAcidDataForEachBaseOfDNA: [],
|
|
70
67
|
isProtein: true,
|
|
71
|
-
size:
|
|
72
|
-
proteinSize:
|
|
73
|
-
sequence: "
|
|
74
|
-
proteinSequence: "gagiuhwgagalasjglj
|
|
68
|
+
size: 54, //size should refer to the DNA length
|
|
69
|
+
proteinSize: 18, //proteinSize should refer to the amino acid length
|
|
70
|
+
sequence: "ggngcnggnathtgacaytggggngcnggngcnytngcnwsnhtnggnytnhtn", //degenerate sequence
|
|
71
|
+
proteinSequence: "gagiuhwgagalasjglj",
|
|
75
72
|
circular: false,
|
|
76
73
|
features: [
|
|
77
74
|
{ start: 9, end: 32, forward: true },
|
|
78
|
-
{ start: 30, end:
|
|
75
|
+
{ start: 30, end: 53, forward: true },
|
|
79
76
|
{
|
|
80
77
|
name: "iDon'tFit",
|
|
81
|
-
start:
|
|
82
|
-
end:
|
|
78
|
+
start: 51,
|
|
79
|
+
end: 53,
|
|
83
80
|
forward: true
|
|
84
81
|
}
|
|
85
82
|
]
|