@teselagen/sequence-utils 0.3.31 → 0.3.32-beta.2
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/findApproxMatches.d.ts +10 -0
- package/findApproxMatches.test.d.ts +1 -0
- package/findOrfsInPlasmid.d.ts +1 -1
- package/getOrfsFromSequence.d.ts +1 -1
- package/index.cjs +75 -331
- package/index.d.ts +1 -0
- package/index.js +75 -331
- package/index.umd.cjs +75 -331
- package/package.json +8 -4
- package/src/computeDigestFragments.js +2 -2
- package/src/cutSequenceByRestrictionEnzyme.js +2 -2
- package/src/findApproxMatches.js +50 -0
- package/src/findApproxMatches.test.js +126 -0
- package/src/generateAnnotations.js +2 -2
- package/src/getOrfsFromSequence.js +2 -2
- package/src/index.js +1 -0
- package/src/tidyUpAnnotation.js +3 -3
- package/src/tidyUpSequenceData.js +2 -2
package/index.js
CHANGED
|
@@ -2734,30 +2734,31 @@ function adjustRangeToDeletionOfAnotherRange(rangeToBeAdjusted, anotherRange, ma
|
|
|
2734
2734
|
anotherRange,
|
|
2735
2735
|
maxLength
|
|
2736
2736
|
);
|
|
2737
|
-
if (trimmedRange) {
|
|
2738
|
-
|
|
2739
|
-
anotherRange,
|
|
2740
|
-
maxLength
|
|
2741
|
-
);
|
|
2742
|
-
nonCircularDeletionRanges.forEach(function(nonCircularDeletionRange) {
|
|
2743
|
-
const deletionLength = nonCircularDeletionRange.end - nonCircularDeletionRange.start + 1;
|
|
2744
|
-
if (trimmedRange.start > trimmedRange.end) {
|
|
2745
|
-
if (nonCircularDeletionRange.start < trimmedRange.end) {
|
|
2746
|
-
trimmedRange.start -= deletionLength;
|
|
2747
|
-
trimmedRange.end -= deletionLength;
|
|
2748
|
-
} else if (nonCircularDeletionRange.start < trimmedRange.start) {
|
|
2749
|
-
trimmedRange.start -= deletionLength;
|
|
2750
|
-
} else ;
|
|
2751
|
-
} else {
|
|
2752
|
-
if (nonCircularDeletionRange.start < trimmedRange.start) {
|
|
2753
|
-
trimmedRange.start -= deletionLength;
|
|
2754
|
-
trimmedRange.end -= deletionLength;
|
|
2755
|
-
} else if (nonCircularDeletionRange.start < trimmedRange.end) {
|
|
2756
|
-
trimmedRange.end -= deletionLength;
|
|
2757
|
-
} else ;
|
|
2758
|
-
}
|
|
2759
|
-
});
|
|
2737
|
+
if (!trimmedRange) {
|
|
2738
|
+
return null;
|
|
2760
2739
|
}
|
|
2740
|
+
const nonCircularDeletionRanges = splitRangeIntoTwoPartsIfItIsCircular(
|
|
2741
|
+
anotherRange,
|
|
2742
|
+
maxLength
|
|
2743
|
+
);
|
|
2744
|
+
nonCircularDeletionRanges.forEach(function(nonCircularDeletionRange) {
|
|
2745
|
+
const deletionLength = nonCircularDeletionRange.end - nonCircularDeletionRange.start + 1;
|
|
2746
|
+
if (trimmedRange.start > trimmedRange.end) {
|
|
2747
|
+
if (nonCircularDeletionRange.start < trimmedRange.end) {
|
|
2748
|
+
trimmedRange.start -= deletionLength;
|
|
2749
|
+
trimmedRange.end -= deletionLength;
|
|
2750
|
+
} else if (nonCircularDeletionRange.start < trimmedRange.start) {
|
|
2751
|
+
trimmedRange.start -= deletionLength;
|
|
2752
|
+
} else ;
|
|
2753
|
+
} else {
|
|
2754
|
+
if (nonCircularDeletionRange.start < trimmedRange.start) {
|
|
2755
|
+
trimmedRange.start -= deletionLength;
|
|
2756
|
+
trimmedRange.end -= deletionLength;
|
|
2757
|
+
} else if (nonCircularDeletionRange.start < trimmedRange.end) {
|
|
2758
|
+
trimmedRange.end -= deletionLength;
|
|
2759
|
+
} else ;
|
|
2760
|
+
}
|
|
2761
|
+
});
|
|
2761
2762
|
return trimmedRange;
|
|
2762
2763
|
}
|
|
2763
2764
|
__name(adjustRangeToDeletionOfAnotherRange, "adjustRangeToDeletionOfAnotherRange");
|
|
@@ -3664,307 +3665,15 @@ const getFeatureToColorMap = /* @__PURE__ */ __name(({ includeHidden } = {}) =>
|
|
|
3664
3665
|
const getFeatureTypes = /* @__PURE__ */ __name(({ includeHidden } = {}) => filter(getMergedFeatureMap(), (f) => includeHidden ? true : !f.isHidden).map(
|
|
3665
3666
|
(f) => f.name
|
|
3666
3667
|
), "getFeatureTypes");
|
|
3667
|
-
|
|
3668
|
-
|
|
3669
|
-
|
|
3670
|
-
|
|
3671
|
-
|
|
3672
|
-
|
|
3673
|
-
|
|
3674
|
-
|
|
3675
|
-
|
|
3676
|
-
hasRequiredRandomFromSeed = 1;
|
|
3677
|
-
var seed = 1;
|
|
3678
|
-
function getNextValue() {
|
|
3679
|
-
seed = (seed * 9301 + 49297) % 233280;
|
|
3680
|
-
return seed / 233280;
|
|
3681
|
-
}
|
|
3682
|
-
__name(getNextValue, "getNextValue");
|
|
3683
|
-
function setSeed(_seed_) {
|
|
3684
|
-
seed = _seed_;
|
|
3685
|
-
}
|
|
3686
|
-
__name(setSeed, "setSeed");
|
|
3687
|
-
randomFromSeed = {
|
|
3688
|
-
nextValue: getNextValue,
|
|
3689
|
-
seed: setSeed
|
|
3690
|
-
};
|
|
3691
|
-
return randomFromSeed;
|
|
3692
|
-
}
|
|
3693
|
-
__name(requireRandomFromSeed, "requireRandomFromSeed");
|
|
3694
|
-
var alphabet_1;
|
|
3695
|
-
var hasRequiredAlphabet;
|
|
3696
|
-
function requireAlphabet() {
|
|
3697
|
-
if (hasRequiredAlphabet) return alphabet_1;
|
|
3698
|
-
hasRequiredAlphabet = 1;
|
|
3699
|
-
var randomFromSeed2 = requireRandomFromSeed();
|
|
3700
|
-
var ORIGINAL = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-";
|
|
3701
|
-
var alphabet;
|
|
3702
|
-
var previousSeed;
|
|
3703
|
-
var shuffled;
|
|
3704
|
-
function reset() {
|
|
3705
|
-
shuffled = false;
|
|
3706
|
-
}
|
|
3707
|
-
__name(reset, "reset");
|
|
3708
|
-
function setCharacters(_alphabet_) {
|
|
3709
|
-
if (!_alphabet_) {
|
|
3710
|
-
if (alphabet !== ORIGINAL) {
|
|
3711
|
-
alphabet = ORIGINAL;
|
|
3712
|
-
reset();
|
|
3713
|
-
}
|
|
3714
|
-
return;
|
|
3715
|
-
}
|
|
3716
|
-
if (_alphabet_ === alphabet) {
|
|
3717
|
-
return;
|
|
3718
|
-
}
|
|
3719
|
-
if (_alphabet_.length !== ORIGINAL.length) {
|
|
3720
|
-
throw new Error("Custom alphabet for shortid must be " + ORIGINAL.length + " unique characters. You submitted " + _alphabet_.length + " characters: " + _alphabet_);
|
|
3721
|
-
}
|
|
3722
|
-
var unique = _alphabet_.split("").filter(function(item, ind, arr) {
|
|
3723
|
-
return ind !== arr.lastIndexOf(item);
|
|
3724
|
-
});
|
|
3725
|
-
if (unique.length) {
|
|
3726
|
-
throw new Error("Custom alphabet for shortid must be " + ORIGINAL.length + " unique characters. These characters were not unique: " + unique.join(", "));
|
|
3727
|
-
}
|
|
3728
|
-
alphabet = _alphabet_;
|
|
3729
|
-
reset();
|
|
3730
|
-
}
|
|
3731
|
-
__name(setCharacters, "setCharacters");
|
|
3732
|
-
function characters(_alphabet_) {
|
|
3733
|
-
setCharacters(_alphabet_);
|
|
3734
|
-
return alphabet;
|
|
3735
|
-
}
|
|
3736
|
-
__name(characters, "characters");
|
|
3737
|
-
function setSeed(seed) {
|
|
3738
|
-
randomFromSeed2.seed(seed);
|
|
3739
|
-
if (previousSeed !== seed) {
|
|
3740
|
-
reset();
|
|
3741
|
-
previousSeed = seed;
|
|
3742
|
-
}
|
|
3743
|
-
}
|
|
3744
|
-
__name(setSeed, "setSeed");
|
|
3745
|
-
function shuffle() {
|
|
3746
|
-
if (!alphabet) {
|
|
3747
|
-
setCharacters(ORIGINAL);
|
|
3748
|
-
}
|
|
3749
|
-
var sourceArray = alphabet.split("");
|
|
3750
|
-
var targetArray = [];
|
|
3751
|
-
var r = randomFromSeed2.nextValue();
|
|
3752
|
-
var characterIndex;
|
|
3753
|
-
while (sourceArray.length > 0) {
|
|
3754
|
-
r = randomFromSeed2.nextValue();
|
|
3755
|
-
characterIndex = Math.floor(r * sourceArray.length);
|
|
3756
|
-
targetArray.push(sourceArray.splice(characterIndex, 1)[0]);
|
|
3757
|
-
}
|
|
3758
|
-
return targetArray.join("");
|
|
3759
|
-
}
|
|
3760
|
-
__name(shuffle, "shuffle");
|
|
3761
|
-
function getShuffled() {
|
|
3762
|
-
if (shuffled) {
|
|
3763
|
-
return shuffled;
|
|
3764
|
-
}
|
|
3765
|
-
shuffled = shuffle();
|
|
3766
|
-
return shuffled;
|
|
3767
|
-
}
|
|
3768
|
-
__name(getShuffled, "getShuffled");
|
|
3769
|
-
function lookup(index) {
|
|
3770
|
-
var alphabetShuffled = getShuffled();
|
|
3771
|
-
return alphabetShuffled[index];
|
|
3772
|
-
}
|
|
3773
|
-
__name(lookup, "lookup");
|
|
3774
|
-
function get2() {
|
|
3775
|
-
return alphabet || ORIGINAL;
|
|
3776
|
-
}
|
|
3777
|
-
__name(get2, "get");
|
|
3778
|
-
alphabet_1 = {
|
|
3779
|
-
get: get2,
|
|
3780
|
-
characters,
|
|
3781
|
-
seed: setSeed,
|
|
3782
|
-
lookup,
|
|
3783
|
-
shuffled: getShuffled
|
|
3784
|
-
};
|
|
3785
|
-
return alphabet_1;
|
|
3786
|
-
}
|
|
3787
|
-
__name(requireAlphabet, "requireAlphabet");
|
|
3788
|
-
var randomByteBrowser;
|
|
3789
|
-
var hasRequiredRandomByteBrowser;
|
|
3790
|
-
function requireRandomByteBrowser() {
|
|
3791
|
-
if (hasRequiredRandomByteBrowser) return randomByteBrowser;
|
|
3792
|
-
hasRequiredRandomByteBrowser = 1;
|
|
3793
|
-
var crypto = typeof window === "object" && (window.crypto || window.msCrypto);
|
|
3794
|
-
var randomByte;
|
|
3795
|
-
if (!crypto || !crypto.getRandomValues) {
|
|
3796
|
-
randomByte = /* @__PURE__ */ __name(function(size) {
|
|
3797
|
-
var bytes = [];
|
|
3798
|
-
for (var i = 0; i < size; i++) {
|
|
3799
|
-
bytes.push(Math.floor(Math.random() * 256));
|
|
3800
|
-
}
|
|
3801
|
-
return bytes;
|
|
3802
|
-
}, "randomByte");
|
|
3803
|
-
} else {
|
|
3804
|
-
randomByte = /* @__PURE__ */ __name(function(size) {
|
|
3805
|
-
return crypto.getRandomValues(new Uint8Array(size));
|
|
3806
|
-
}, "randomByte");
|
|
3807
|
-
}
|
|
3808
|
-
randomByteBrowser = randomByte;
|
|
3809
|
-
return randomByteBrowser;
|
|
3810
|
-
}
|
|
3811
|
-
__name(requireRandomByteBrowser, "requireRandomByteBrowser");
|
|
3812
|
-
var format_browser;
|
|
3813
|
-
var hasRequiredFormat_browser;
|
|
3814
|
-
function requireFormat_browser() {
|
|
3815
|
-
if (hasRequiredFormat_browser) return format_browser;
|
|
3816
|
-
hasRequiredFormat_browser = 1;
|
|
3817
|
-
format_browser = /* @__PURE__ */ __name(function(random, alphabet, size) {
|
|
3818
|
-
var mask = (2 << Math.log(alphabet.length - 1) / Math.LN2) - 1;
|
|
3819
|
-
var step = -~(1.6 * mask * size / alphabet.length);
|
|
3820
|
-
var id = "";
|
|
3821
|
-
while (true) {
|
|
3822
|
-
var bytes = random(step);
|
|
3823
|
-
var i = step;
|
|
3824
|
-
while (i--) {
|
|
3825
|
-
id += alphabet[bytes[i] & mask] || "";
|
|
3826
|
-
if (id.length === +size) return id;
|
|
3827
|
-
}
|
|
3828
|
-
}
|
|
3829
|
-
}, "format_browser");
|
|
3830
|
-
return format_browser;
|
|
3831
|
-
}
|
|
3832
|
-
__name(requireFormat_browser, "requireFormat_browser");
|
|
3833
|
-
var generate_1;
|
|
3834
|
-
var hasRequiredGenerate;
|
|
3835
|
-
function requireGenerate() {
|
|
3836
|
-
if (hasRequiredGenerate) return generate_1;
|
|
3837
|
-
hasRequiredGenerate = 1;
|
|
3838
|
-
var alphabet = requireAlphabet();
|
|
3839
|
-
var random = requireRandomByteBrowser();
|
|
3840
|
-
var format = /* @__PURE__ */ requireFormat_browser();
|
|
3841
|
-
function generate(number) {
|
|
3842
|
-
var loopCounter = 0;
|
|
3843
|
-
var done;
|
|
3844
|
-
var str = "";
|
|
3845
|
-
while (!done) {
|
|
3846
|
-
str = str + format(random, alphabet.get(), 1);
|
|
3847
|
-
done = number < Math.pow(16, loopCounter + 1);
|
|
3848
|
-
loopCounter++;
|
|
3849
|
-
}
|
|
3850
|
-
return str;
|
|
3851
|
-
}
|
|
3852
|
-
__name(generate, "generate");
|
|
3853
|
-
generate_1 = generate;
|
|
3854
|
-
return generate_1;
|
|
3855
|
-
}
|
|
3856
|
-
__name(requireGenerate, "requireGenerate");
|
|
3857
|
-
var build_1;
|
|
3858
|
-
var hasRequiredBuild;
|
|
3859
|
-
function requireBuild() {
|
|
3860
|
-
if (hasRequiredBuild) return build_1;
|
|
3861
|
-
hasRequiredBuild = 1;
|
|
3862
|
-
var generate = requireGenerate();
|
|
3863
|
-
requireAlphabet();
|
|
3864
|
-
var REDUCE_TIME = 1567752802062;
|
|
3865
|
-
var version = 7;
|
|
3866
|
-
var counter;
|
|
3867
|
-
var previousSeconds;
|
|
3868
|
-
function build(clusterWorkerId) {
|
|
3869
|
-
var str = "";
|
|
3870
|
-
var seconds = Math.floor((Date.now() - REDUCE_TIME) * 1e-3);
|
|
3871
|
-
if (seconds === previousSeconds) {
|
|
3872
|
-
counter++;
|
|
3873
|
-
} else {
|
|
3874
|
-
counter = 0;
|
|
3875
|
-
previousSeconds = seconds;
|
|
3876
|
-
}
|
|
3877
|
-
str = str + generate(version);
|
|
3878
|
-
str = str + generate(clusterWorkerId);
|
|
3879
|
-
if (counter > 0) {
|
|
3880
|
-
str = str + generate(counter);
|
|
3881
|
-
}
|
|
3882
|
-
str = str + generate(seconds);
|
|
3883
|
-
return str;
|
|
3884
|
-
}
|
|
3885
|
-
__name(build, "build");
|
|
3886
|
-
build_1 = build;
|
|
3887
|
-
return build_1;
|
|
3888
|
-
}
|
|
3889
|
-
__name(requireBuild, "requireBuild");
|
|
3890
|
-
var isValid;
|
|
3891
|
-
var hasRequiredIsValid;
|
|
3892
|
-
function requireIsValid() {
|
|
3893
|
-
if (hasRequiredIsValid) return isValid;
|
|
3894
|
-
hasRequiredIsValid = 1;
|
|
3895
|
-
var alphabet = requireAlphabet();
|
|
3896
|
-
function isShortId(id) {
|
|
3897
|
-
if (!id || typeof id !== "string" || id.length < 6) {
|
|
3898
|
-
return false;
|
|
3899
|
-
}
|
|
3900
|
-
var nonAlphabetic = new RegExp("[^" + alphabet.get().replace(/[|\\{}()[\]^$+*?.-]/g, "\\$&") + "]");
|
|
3901
|
-
return !nonAlphabetic.test(id);
|
|
3902
|
-
}
|
|
3903
|
-
__name(isShortId, "isShortId");
|
|
3904
|
-
isValid = isShortId;
|
|
3905
|
-
return isValid;
|
|
3906
|
-
}
|
|
3907
|
-
__name(requireIsValid, "requireIsValid");
|
|
3908
|
-
var clusterWorkerIdBrowser;
|
|
3909
|
-
var hasRequiredClusterWorkerIdBrowser;
|
|
3910
|
-
function requireClusterWorkerIdBrowser() {
|
|
3911
|
-
if (hasRequiredClusterWorkerIdBrowser) return clusterWorkerIdBrowser;
|
|
3912
|
-
hasRequiredClusterWorkerIdBrowser = 1;
|
|
3913
|
-
clusterWorkerIdBrowser = 0;
|
|
3914
|
-
return clusterWorkerIdBrowser;
|
|
3915
|
-
}
|
|
3916
|
-
__name(requireClusterWorkerIdBrowser, "requireClusterWorkerIdBrowser");
|
|
3917
|
-
var hasRequiredLib;
|
|
3918
|
-
function requireLib() {
|
|
3919
|
-
if (hasRequiredLib) return lib.exports;
|
|
3920
|
-
hasRequiredLib = 1;
|
|
3921
|
-
(function(module2) {
|
|
3922
|
-
var alphabet = requireAlphabet();
|
|
3923
|
-
var build = requireBuild();
|
|
3924
|
-
var isValid2 = requireIsValid();
|
|
3925
|
-
var clusterWorkerId = requireClusterWorkerIdBrowser() || 0;
|
|
3926
|
-
function seed(seedValue) {
|
|
3927
|
-
alphabet.seed(seedValue);
|
|
3928
|
-
return module2.exports;
|
|
3929
|
-
}
|
|
3930
|
-
__name(seed, "seed");
|
|
3931
|
-
function worker(workerId) {
|
|
3932
|
-
clusterWorkerId = workerId;
|
|
3933
|
-
return module2.exports;
|
|
3934
|
-
}
|
|
3935
|
-
__name(worker, "worker");
|
|
3936
|
-
function characters(newCharacters) {
|
|
3937
|
-
if (newCharacters !== void 0) {
|
|
3938
|
-
alphabet.characters(newCharacters);
|
|
3939
|
-
}
|
|
3940
|
-
return alphabet.shuffled();
|
|
3941
|
-
}
|
|
3942
|
-
__name(characters, "characters");
|
|
3943
|
-
function generate() {
|
|
3944
|
-
return build(clusterWorkerId);
|
|
3945
|
-
}
|
|
3946
|
-
__name(generate, "generate");
|
|
3947
|
-
module2.exports = generate;
|
|
3948
|
-
module2.exports.generate = generate;
|
|
3949
|
-
module2.exports.seed = seed;
|
|
3950
|
-
module2.exports.worker = worker;
|
|
3951
|
-
module2.exports.characters = characters;
|
|
3952
|
-
module2.exports.isValid = isValid2;
|
|
3953
|
-
})(lib);
|
|
3954
|
-
return lib.exports;
|
|
3955
|
-
}
|
|
3956
|
-
__name(requireLib, "requireLib");
|
|
3957
|
-
var shortid$1;
|
|
3958
|
-
var hasRequiredShortid;
|
|
3959
|
-
function requireShortid() {
|
|
3960
|
-
if (hasRequiredShortid) return shortid$1;
|
|
3961
|
-
hasRequiredShortid = 1;
|
|
3962
|
-
shortid$1 = requireLib();
|
|
3963
|
-
return shortid$1;
|
|
3964
|
-
}
|
|
3965
|
-
__name(requireShortid, "requireShortid");
|
|
3966
|
-
var shortidExports = requireShortid();
|
|
3967
|
-
const shortid = /* @__PURE__ */ getDefaultExportFromCjs(shortidExports);
|
|
3668
|
+
const urlAlphabet = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";
|
|
3669
|
+
let nanoid = /* @__PURE__ */ __name((size = 21) => {
|
|
3670
|
+
let id = "";
|
|
3671
|
+
let bytes = crypto.getRandomValues(new Uint8Array(size |= 0));
|
|
3672
|
+
while (size--) {
|
|
3673
|
+
id += urlAlphabet[bytes[size] & 63];
|
|
3674
|
+
}
|
|
3675
|
+
return id;
|
|
3676
|
+
}, "nanoid");
|
|
3968
3677
|
function cutSequenceByRestrictionEnzyme(pSequence, circular, restrictionEnzyme) {
|
|
3969
3678
|
if (restrictionEnzyme.forwardRegex.length === 0 || restrictionEnzyme.reverseRegex.length === 0) {
|
|
3970
3679
|
const returnArray = [];
|
|
@@ -4172,7 +3881,7 @@ function cutSequence(forwardRegExpPattern, restrictionEnzyme, sequence, circular
|
|
|
4172
3881
|
}
|
|
4173
3882
|
const overhangBps = getSequenceWithinRange(cutRange, originalSequence);
|
|
4174
3883
|
restrictionCutSite = {
|
|
4175
|
-
id:
|
|
3884
|
+
id: nanoid(),
|
|
4176
3885
|
start,
|
|
4177
3886
|
end,
|
|
4178
3887
|
topSnipPosition,
|
|
@@ -4230,7 +3939,7 @@ function computeDigestFragments({
|
|
|
4230
3939
|
});
|
|
4231
3940
|
if (!circular && cutsites.length) {
|
|
4232
3941
|
sortedCutsites.push({
|
|
4233
|
-
id: "seqTerm_" +
|
|
3942
|
+
id: "seqTerm_" + nanoid(),
|
|
4234
3943
|
start: 0,
|
|
4235
3944
|
end: 0,
|
|
4236
3945
|
overhangBps: "",
|
|
@@ -4364,6 +4073,10 @@ function getDigestFragsForSeqAndEnzymes({
|
|
|
4364
4073
|
});
|
|
4365
4074
|
}
|
|
4366
4075
|
__name(getDigestFragsForSeqAndEnzymes, "getDigestFragsForSeqAndEnzymes");
|
|
4076
|
+
function getDefaultExportFromCjs(x) {
|
|
4077
|
+
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
|
|
4078
|
+
}
|
|
4079
|
+
__name(getDefaultExportFromCjs, "getDefaultExportFromCjs");
|
|
4367
4080
|
var jsondiffpatch_umd$1 = { exports: {} };
|
|
4368
4081
|
var empty = {};
|
|
4369
4082
|
var hasRequiredEmpty;
|
|
@@ -8962,10 +8675,10 @@ function tidyUpAnnotation(_annotation, {
|
|
|
8962
8675
|
annotation.name = "Untitled annotation";
|
|
8963
8676
|
}
|
|
8964
8677
|
if (provideNewIdsForAnnotations) {
|
|
8965
|
-
annotation.id =
|
|
8678
|
+
annotation.id = nanoid();
|
|
8966
8679
|
}
|
|
8967
8680
|
if (!annotation.id && annotation.id !== 0 && !doNotProvideIdsForAnnotations) {
|
|
8968
|
-
annotation.id =
|
|
8681
|
+
annotation.id = nanoid();
|
|
8969
8682
|
messages.push(
|
|
8970
8683
|
"Unable to detect valid ID for annotation, setting ID to " + annotation.id
|
|
8971
8684
|
);
|
|
@@ -9209,7 +8922,7 @@ function tidyUpSequenceData(pSeqData, options = {}) {
|
|
|
9209
8922
|
if (item.id || item.id === 0) {
|
|
9210
8923
|
itemId = item.id;
|
|
9211
8924
|
} else {
|
|
9212
|
-
itemId =
|
|
8925
|
+
itemId = nanoid();
|
|
9213
8926
|
if (!doNotProvideIdsForAnnotations) {
|
|
9214
8927
|
item.id = itemId;
|
|
9215
8928
|
}
|
|
@@ -9512,6 +9225,36 @@ function insertGapsIntoRefSeq(refSeq, seqReads) {
|
|
|
9512
9225
|
return refSeqWithGaps.join("");
|
|
9513
9226
|
}
|
|
9514
9227
|
__name(insertGapsIntoRefSeq, "insertGapsIntoRefSeq");
|
|
9228
|
+
function findApproxMatches(searchSeq, targetSeq, maxMismatches, circular = false) {
|
|
9229
|
+
const matches = [];
|
|
9230
|
+
const lenA = searchSeq.length;
|
|
9231
|
+
const lenB = targetSeq.length;
|
|
9232
|
+
const targetSeqExtended = circular ? targetSeq + targetSeq.slice(0, lenA - 1) : targetSeq;
|
|
9233
|
+
const limit = circular ? lenB : lenB - lenA + 1;
|
|
9234
|
+
for (let i = 0; i < limit; i++) {
|
|
9235
|
+
const window2 = targetSeqExtended.slice(i, i + lenA);
|
|
9236
|
+
let mismatchCount = 0;
|
|
9237
|
+
const mismatchPositions = [];
|
|
9238
|
+
for (let j = 0; j < lenA; j++) {
|
|
9239
|
+
if (searchSeq[j] !== window2[j]) {
|
|
9240
|
+
mismatchPositions.push(j);
|
|
9241
|
+
mismatchCount++;
|
|
9242
|
+
if (mismatchCount > maxMismatches) break;
|
|
9243
|
+
}
|
|
9244
|
+
}
|
|
9245
|
+
if (mismatchCount <= maxMismatches) {
|
|
9246
|
+
matches.push({
|
|
9247
|
+
index: i,
|
|
9248
|
+
match: window2,
|
|
9249
|
+
mismatchPositions,
|
|
9250
|
+
numMismatches: mismatchPositions.length
|
|
9251
|
+
// Keep for backwards compatibility
|
|
9252
|
+
});
|
|
9253
|
+
}
|
|
9254
|
+
}
|
|
9255
|
+
return matches;
|
|
9256
|
+
}
|
|
9257
|
+
__name(findApproxMatches, "findApproxMatches");
|
|
9515
9258
|
var spliceString$1;
|
|
9516
9259
|
var hasRequiredSpliceString;
|
|
9517
9260
|
function requireSpliceString() {
|
|
@@ -17749,7 +17492,7 @@ function generateAnnotation(start, end, maxLength) {
|
|
|
17749
17492
|
return __spreadProps(__spreadValues({}, range), {
|
|
17750
17493
|
name: getRandomInt(0, 1e5).toString(),
|
|
17751
17494
|
type: "misc_feature",
|
|
17752
|
-
id:
|
|
17495
|
+
id: nanoid(),
|
|
17753
17496
|
forward: Math.random() > 0.5,
|
|
17754
17497
|
notes: {}
|
|
17755
17498
|
});
|
|
@@ -17872,7 +17615,7 @@ function getOrfsFromSequence(options) {
|
|
|
17872
17615
|
forward,
|
|
17873
17616
|
annotationTypePlural: "orfs",
|
|
17874
17617
|
isOrf: true,
|
|
17875
|
-
id:
|
|
17618
|
+
id: nanoid()
|
|
17876
17619
|
});
|
|
17877
17620
|
}
|
|
17878
17621
|
}
|
|
@@ -19321,6 +19064,7 @@ export {
|
|
|
19321
19064
|
featureColors,
|
|
19322
19065
|
filterRnaString,
|
|
19323
19066
|
filterSequenceString,
|
|
19067
|
+
findApproxMatches,
|
|
19324
19068
|
findNearestRangeOfSequenceOverlapToPosition,
|
|
19325
19069
|
findOrfsInPlasmid,
|
|
19326
19070
|
findSequenceMatches,
|