gensplore 0.0.10 → 0.0.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/dist/gensplore.cjs +3 -3
- package/dist/gensplore.js +39 -32
- package/package.json +1 -1
package/dist/gensplore.js
CHANGED
|
@@ -2907,7 +2907,7 @@ var Pi = Re(ji), Fi = Object.assign(Mi, {
|
|
|
2907
2907
|
Panel: Ni,
|
|
2908
2908
|
Title: Pi,
|
|
2909
2909
|
Description: dt
|
|
2910
|
-
}), Ii = "function e(e,t){if(!t||typeof t.sequence!=`string`)throw Error(`Expected an aligned DNA sequence.`);let n=t.sequence.toUpperCase();if(!e.length||n.length!==e.length)throw Error(`Aligned sequence length must match the reference.`);if(/[^ACGTRYSWKMBDHVN-]/.test(n))throw Error(`Aligned sequences must contain IUPAC DNA bases or deletion gaps (-).`);let r=[],i=0;for(let t=0;t<n.length;){if(n[t]===e[t]){t++;continue}let a=n[t]===`-`?`Deletion`:/[^ACGT]/.test(n[t]+e[t])?`Ambiguous`:`Substitution`,o=t+1;if(a===`Deletion`||a===`Ambiguous`)for(;o<n.length&&n[o]!==e[o]&&(a===`Deletion`?n[o]===`-`:n[o]!==`-`&&/[^ACGT]/.test(n[o]+e[o]));)o++;r.push({type:a,start:t,end:o,reference:e.slice(t,o),alternative:a===`Deletion`?``:n.slice(t,o)}),i+=o-t,t=o}let a=new Set;for(let n of t.insertions||[]){let t=n.position,o=typeof n.sequence==`string`?n.sequence.toUpperCase():``;if(!Number.isInteger(t)||t<0||t>e.length||a.has(t))throw Error(`Insertions need unique integer positions from 0 to the reference length.`);if(!o||/[^ACGTRYSWKMBDHVN]/.test(o))throw Error(`Insertions must contain ungapped IUPAC DNA bases.`);a.add(t),r.push({type:`Insertion`,start:t,end:t,reference:``,alternative:o}),i+=o.length}return r.sort((e,t)=>e.start-t.start||e.end-t.end),{name:t.name||`Alternative`,distance:i,differences:r}}const t=e=>{switch(e){case`TTT`:case`TTC`:return`F`;case`TTA`:case`TTG`:case`CTT`:case`CTC`:case`CTA`:case`CTG`:return`L`;case`ATT`:case`ATC`:case`ATA`:return`I`;case`ATG`:return`M`;case`GTT`:case`GTC`:case`GTA`:case`GTG`:return`V`;case`TCT`:case`TCC`:case`TCA`:case`TCG`:case`AGT`:case`AGC`:return`S`;case`CCT`:case`CCC`:case`CCA`:case`CCG`:return`P`;case`ACT`:case`ACC`:case`ACA`:case`ACG`:return`T`;case`GCT`:case`GCC`:case`GCA`:case`GCG`:return`A`;case`TAT`:case`TAC`:return`Y`;case`TAA`:case`TAG`:case`TGA`:return`*`;case`CAT`:case`CAC`:return`H`;case`CAA`:case`CAG`:return`Q`;case`AAT`:case`AAC`:return`N`;case`AAA`:case`AAG`:return`K`;case`GAT`:case`GAC`:return`D`;case`GAA`:case`GAG`:return`E`;case`TGT`:case`TGC`:return`C`;case`TGG`:return`W`;case`CGT`:case`CGC`:case`CGA`:case`CGG`:case`AGA`:case`AGG`:return`R`;case`GGT`:case`GGC`:case`GGA`:case`GGG`:return`G`;default:return`X`}};function n(e){let t=e.trim().split(/\\r?\\n/);if(!t[0]?.startsWith(`>`))throw Error(`Expected a FASTA header starting with >.`);if(t.slice(1).some(e=>e.startsWith(`>`)))throw Error(`Please supply exactly one FASTA record.`);let n=t.slice(1).join(``).replace(/\\s/g,``).toUpperCase();if(!n||/[^ACGTRYSWKMBDHVN]/.test(n))throw Error(`Expected an ungapped DNA sequence (IUPAC bases).`);return{name:t[0].slice(1).trim()||`Alternative`,sequence:n}}function r(e,t,n=128){let r=e.length,i=t.length;if(!r||!i)throw Error(`Both sequences must contain bases.`);if(Math.max(r,i)>1e5)throw Error(`Comparison supports sequences up to 100,000 bases.`);let a=()=>Error(`Sequences exceed the ${n}-edit comparison limit. Use complete sequences in the same orientation and with the same starting point.`);if(Math.abs(r-i)>n)throw a();let o=2*n+1,s=n+1,c=s*s,l=new Uint8Array((r+1)*o),u=(e,t,n)=>e<=t&&e<=n?0:t<=n?1:2,d=new Uint32Array(o*3).fill(c);d[n*3]=0;for(let e=1;e<=Math.min(i,n);e++)d[(e+n)*3+2]=e*s+1,l[e+n]=(e===1?0:2)<<4;for(let a=1;a<=r;a++){let r=new Uint32Array(o*3).fill(c);for(let f=Math.max(0,a-n);f<=Math.min(i,a+n);f++){let i=f-a+n,p=i*3;if(f===0){r[p+1]=a*s+1,l[a*o+i]=(a===1?0:1)<<2;continue}let m=u(d[p],d[p+1],d[p+2]);r[p]=Math.min(c,d[p+m]+(e[a-1]===t[f-1]?0:s));let h=0,g=0;if(i+1<o){let e=p+3,t=d[e]+s+1,n=d[e+1]+s,i=d[e+2]+s+1;h=u(t,n,i),r[p+1]=Math.min(c,t,n,i)}if(i>0){let e=p-3,t=r[e]+s+1,n=r[e+1]+s+1,i=r[e+2]+s;g=u(t,n,i),r[p+2]=Math.min(c,t,n,i)}l[a*o+i]=m|h<<2|g<<4}d=r}let f=(i-r+n)*3,p=u(d[f],d[f+1],d[f+2]),m=Math.floor(d[f+p]/s);if(m>n)throw a();let h=r,g=i,_=[];for(;h||g;){let r=l[h*o+g-h+n]>>p*2&3;p===0?_.push([e[--h],t[--g]]):p===1?_.push([e[--h],`-`]):_.push([`-`,t[--g]]),p=r}_.reverse();let v=[],y=0;for(let[e,t]of _){if(e!==t){let n=e===`-`?`Insertion`:t===`-`?`Deletion`:/[^ACGT]/.test(e+t)?`Ambiguous`:`Substitution`,r=v.at(-1);r&&r.type===n&&n!==`Substitution`&&n!==`Ambiguous`&&r.end===y?(r.reference+=e===`-`?``:e,r.alternative+=t===`-`?``:t,r.end+=e===`-`?0:1):v.push({type:n,start:y,end:y+(e===`-`?0:1),reference:e===`-`?``:e,alternative:t===`-`?``:t})}e!==`-`&&y++}return{distance:m,differences:v}}function i(e,t){return e.locations?.length?e.locations:e.start>e.end?[{start:e.start,end:t-1},{start:0,end:e.end}]:[{start:e.start,end:e.end}]}const a={A:`T`,T:`A`,C:`G`,G:`C`,R:`Y`,Y:`R`,S:`S`,W:`W`,K:`M`,M:`K`,B:`V`,V:`B`,D:`H`,H:`D`,N:`N`},o=e=>[...e].reverse().map(e=>a[e]||`N`).join(``),s=e=>{let n=``;for(let r=0;r+2<e.length;r+=3)n+=t(e.slice(r,r+3));return n},c=(e,t,n)=>{let r=e.notes?.[t];return(Array.isArray(r)?r[0]:r)??n};function l(e,t,n){if(![`CDS`,`mat_peptide`].includes(t.type))return null;let a=i(t,e.length),l=[];for(let t of a){if(!Number.isInteger(t.start)||!Number.isInteger(t.end)||t.start<0||t.end>=e.length||t.end<t.start)return{warning:`Unsupported coding location`,codons:[],changes:[]};for(let e=t.start;e<=t.end;e++)l.push(e)}t.strand<0&&l.reverse();let u=Number(c(t,`codon_start`,1))-1;if(![0,1,2].includes(u))return{warning:`Unsupported codon_start`,codons:[],changes:[]};l.splice(0,u);let d=Number(c(t,`transl_table`,1));if(![1,11].includes(d)||[`transl_except`,`ribosomal_slippage`,`exception`].some(e=>t.notes?.[e]))return{warning:`AA comparison unavailable for this translation table or exception`,codons:[],changes:[]};let f=new Map(l.map((e,t)=>[e,t])),p=e=>t.strand<0?o(e):e,m=l.map(t=>p(e[t])).join(``),h=s(m),g=[...h].map((e,t)=>({positions:l.slice(t*3,t*3+3),aminoAcid:e,codonIndex:t})),_=new Set,v=new Map,y=new Map,b=1/0,x=!1;for(let e of n)if(e.type===`Insertion`){let n=t.strand<0?e.start-1:e.start,r=f.get(n),i=t.strand<0?e.start:e.start-1;r>0&&l[r-1]===i?(y.set(r,p(e.alternative)),e.alternative.length%3&&(b=Math.min(b,r))):(f.has(n)||f.has(i))&&(x=!0)}else if(e.type===`Deletion`){let t=[];for(let n=e.start;n<e.end;n++){let e=f.get(n);e!==void 0&&(_.add(e),t.push(e))}t.length%3&&(b=Math.min(b,...t))}else for(let t=e.start;t<e.end;t++){let n=f.get(t);n!==void 0&&v.set(n,p(e.alternative[t-e.start]))}let S=``,C=[];for(let e=0;e<l.length;e++)C[e]=S.length,S+=y.get(e)||``,_.has(e)||(S+=v.get(e)??m[e]);let w=Math.floor(b/3),T=Number.isFinite(b)?h.slice(0,w):h,E=s(Number.isFinite(b)?S.slice(0,C[w*3]):S),D=[],O=e=>{let n=Math.min(e.start,Math.max(0,g.length-1)),r=g[n],i=e.start<g.length?(r?.positions[0]??l[0])+(t.strand<0?.5:-.5):(r?.positions[2]??l[0])+(t.strand<0?-.5:.5);return{...e,anchor:r?.positions[1]??l[0],...e.type===`Insertion`?{pointerPosition:i}:{},aaPosition:e.type===`Insertion`?e.start:e.start+1}};try{T&&E
|
|
2910
|
+
}), Ii = "function e(e,t){if(!t||typeof t.sequence!=`string`)throw Error(`Expected an aligned DNA sequence.`);let n=t.sequence.toUpperCase();if(!e.length||n.length!==e.length)throw Error(`Aligned sequence length must match the reference.`);if(/[^ACGTRYSWKMBDHVN-]/.test(n))throw Error(`Aligned sequences must contain IUPAC DNA bases or deletion gaps (-).`);let r=[],i=0;for(let t=0;t<n.length;){if(n[t]===e[t]){t++;continue}let a=n[t]===`-`?`Deletion`:/[^ACGT]/.test(n[t]+e[t])?`Ambiguous`:`Substitution`,o=t+1;if(a===`Deletion`||a===`Ambiguous`)for(;o<n.length&&n[o]!==e[o]&&(a===`Deletion`?n[o]===`-`:n[o]!==`-`&&/[^ACGT]/.test(n[o]+e[o]));)o++;r.push({type:a,start:t,end:o,reference:e.slice(t,o),alternative:a===`Deletion`?``:n.slice(t,o)}),i+=o-t,t=o}let a=new Set;for(let n of t.insertions||[]){let t=n.position,o=typeof n.sequence==`string`?n.sequence.toUpperCase():``;if(!Number.isInteger(t)||t<0||t>e.length||a.has(t))throw Error(`Insertions need unique integer positions from 0 to the reference length.`);if(!o||/[^ACGTRYSWKMBDHVN]/.test(o))throw Error(`Insertions must contain ungapped IUPAC DNA bases.`);a.add(t),r.push({type:`Insertion`,start:t,end:t,reference:``,alternative:o}),i+=o.length}return r.sort((e,t)=>e.start-t.start||e.end-t.end),{name:t.name||`Alternative`,distance:i,differences:r}}const t=e=>{switch(e){case`TTT`:case`TTC`:return`F`;case`TTA`:case`TTG`:case`CTT`:case`CTC`:case`CTA`:case`CTG`:return`L`;case`ATT`:case`ATC`:case`ATA`:return`I`;case`ATG`:return`M`;case`GTT`:case`GTC`:case`GTA`:case`GTG`:return`V`;case`TCT`:case`TCC`:case`TCA`:case`TCG`:case`AGT`:case`AGC`:return`S`;case`CCT`:case`CCC`:case`CCA`:case`CCG`:return`P`;case`ACT`:case`ACC`:case`ACA`:case`ACG`:return`T`;case`GCT`:case`GCC`:case`GCA`:case`GCG`:return`A`;case`TAT`:case`TAC`:return`Y`;case`TAA`:case`TAG`:case`TGA`:return`*`;case`CAT`:case`CAC`:return`H`;case`CAA`:case`CAG`:return`Q`;case`AAT`:case`AAC`:return`N`;case`AAA`:case`AAG`:return`K`;case`GAT`:case`GAC`:return`D`;case`GAA`:case`GAG`:return`E`;case`TGT`:case`TGC`:return`C`;case`TGG`:return`W`;case`CGT`:case`CGC`:case`CGA`:case`CGG`:case`AGA`:case`AGG`:return`R`;case`GGT`:case`GGC`:case`GGA`:case`GGG`:return`G`;default:return`X`}};function n(e){let t=e.trim().split(/\\r?\\n/);if(!t[0]?.startsWith(`>`))throw Error(`Expected a FASTA header starting with >.`);if(t.slice(1).some(e=>e.startsWith(`>`)))throw Error(`Please supply exactly one FASTA record.`);let n=t.slice(1).join(``).replace(/\\s/g,``).toUpperCase();if(!n||/[^ACGTRYSWKMBDHVN]/.test(n))throw Error(`Expected an ungapped DNA sequence (IUPAC bases).`);return{name:t[0].slice(1).trim()||`Alternative`,sequence:n}}function r(e,t,n=128){let r=e.length,i=t.length;if(!r||!i)throw Error(`Both sequences must contain bases.`);if(Math.max(r,i)>1e5)throw Error(`Comparison supports sequences up to 100,000 bases.`);let a=()=>Error(`Sequences exceed the ${n}-edit comparison limit. Use complete sequences in the same orientation and with the same starting point.`);if(Math.abs(r-i)>n)throw a();let o=2*n+1,s=n+1,c=s*s,l=new Uint8Array((r+1)*o),u=(e,t,n)=>e<=t&&e<=n?0:t<=n?1:2,d=new Uint32Array(o*3).fill(c);d[n*3]=0;for(let e=1;e<=Math.min(i,n);e++)d[(e+n)*3+2]=e*s+1,l[e+n]=(e===1?0:2)<<4;for(let a=1;a<=r;a++){let r=new Uint32Array(o*3).fill(c);for(let f=Math.max(0,a-n);f<=Math.min(i,a+n);f++){let i=f-a+n,p=i*3;if(f===0){r[p+1]=a*s+1,l[a*o+i]=(a===1?0:1)<<2;continue}let m=u(d[p],d[p+1],d[p+2]);r[p]=Math.min(c,d[p+m]+(e[a-1]===t[f-1]?0:s));let h=0,g=0;if(i+1<o){let e=p+3,t=d[e]+s+1,n=d[e+1]+s,i=d[e+2]+s+1;h=u(t,n,i),r[p+1]=Math.min(c,t,n,i)}if(i>0){let e=p-3,t=r[e]+s+1,n=r[e+1]+s+1,i=r[e+2]+s;g=u(t,n,i),r[p+2]=Math.min(c,t,n,i)}l[a*o+i]=m|h<<2|g<<4}d=r}let f=(i-r+n)*3,p=u(d[f],d[f+1],d[f+2]),m=Math.floor(d[f+p]/s);if(m>n)throw a();let h=r,g=i,_=[];for(;h||g;){let r=l[h*o+g-h+n]>>p*2&3;p===0?_.push([e[--h],t[--g]]):p===1?_.push([e[--h],`-`]):_.push([`-`,t[--g]]),p=r}_.reverse();let v=[],y=0;for(let[e,t]of _){if(e!==t){let n=e===`-`?`Insertion`:t===`-`?`Deletion`:/[^ACGT]/.test(e+t)?`Ambiguous`:`Substitution`,r=v.at(-1);r&&r.type===n&&n!==`Substitution`&&n!==`Ambiguous`&&r.end===y?(r.reference+=e===`-`?``:e,r.alternative+=t===`-`?``:t,r.end+=e===`-`?0:1):v.push({type:n,start:y,end:y+(e===`-`?0:1),reference:e===`-`?``:e,alternative:t===`-`?``:t})}e!==`-`&&y++}return{distance:m,differences:v}}function i(e,t){return e.locations?.length?e.locations:e.start>e.end?[{start:e.start,end:t-1},{start:0,end:e.end}]:[{start:e.start,end:e.end}]}const a={A:`T`,T:`A`,C:`G`,G:`C`,R:`Y`,Y:`R`,S:`S`,W:`W`,K:`M`,M:`K`,B:`V`,V:`B`,D:`H`,H:`D`,N:`N`},o=e=>[...e].reverse().map(e=>a[e]||`N`).join(``),s=e=>{let n=``;for(let r=0;r+2<e.length;r+=3)n+=t(e.slice(r,r+3));return n},c=(e,t,n)=>{let r=e.notes?.[t];return(Array.isArray(r)?r[0]:r)??n};function l(e,t,n){if(![`CDS`,`mat_peptide`].includes(t.type))return null;let a=i(t,e.length),l=[];for(let t of a){if(!Number.isInteger(t.start)||!Number.isInteger(t.end)||t.start<0||t.end>=e.length||t.end<t.start)return{warning:`Unsupported coding location`,codons:[],changes:[]};for(let e=t.start;e<=t.end;e++)l.push(e)}t.strand<0&&l.reverse();let u=Number(c(t,`codon_start`,1))-1;if(![0,1,2].includes(u))return{warning:`Unsupported codon_start`,codons:[],changes:[]};l.splice(0,u);let d=Number(c(t,`transl_table`,1));if(![1,11].includes(d)||[`transl_except`,`ribosomal_slippage`,`exception`].some(e=>t.notes?.[e]))return{warning:`AA comparison unavailable for this translation table or exception`,codons:[],changes:[]};let f=new Map(l.map((e,t)=>[e,t])),p=e=>t.strand<0?o(e):e,m=l.map(t=>p(e[t])).join(``),h=s(m),g=[...h].map((e,t)=>({positions:l.slice(t*3,t*3+3),aminoAcid:e,codonIndex:t})),_=new Set,v=new Map,y=new Map,b=1/0,x=!1;for(let e of n)if(e.type===`Insertion`){let n=t.strand<0?e.start-1:e.start,r=f.get(n),i=t.strand<0?e.start:e.start-1;r>0&&l[r-1]===i?(y.set(r,p(e.alternative)),e.alternative.length%3&&(b=Math.min(b,r))):(f.has(n)||f.has(i))&&(x=!0)}else if(e.type===`Deletion`){let t=[];for(let n=e.start;n<e.end;n++){let e=f.get(n);e!==void 0&&(_.add(e),t.push(e))}t.length%3&&(b=Math.min(b,...t))}else for(let t=e.start;t<e.end;t++){let n=f.get(t);n!==void 0&&v.set(n,p(e.alternative[t-e.start]))}let S=``,C=[];for(let e=0;e<l.length;e++)C[e]=S.length,S+=y.get(e)||``,_.has(e)||(S+=v.get(e)??m[e]);let w=Math.floor(b/3),T=Number.isFinite(b)?h.slice(0,w):h,E=s(Number.isFinite(b)?S.slice(0,C[w*3]):S),D=[],O=e=>{let n=Math.min(e.start,Math.max(0,g.length-1)),r=g[n],i=e.start<g.length?(r?.positions[0]??l[0])+(t.strand<0?.5:-.5):(r?.positions[2]??l[0])+(t.strand<0?-.5:.5);return{...e,anchor:r?.positions[1]??l[0],...e.type===`Insertion`?{pointerPosition:i}:{},aaPosition:e.type===`Insertion`?e.start:e.start+1}};try{if(T&&E){let e=[];for(let t of r(T,E).differences){let n={...t,type:t.type===`Ambiguous`?/X/.test(t.reference+t.alternative)?`Ambiguous`:`Substitution`:t.type},r=e.at(-1);n.type===`Ambiguous`&&r?.type===`Ambiguous`&&r.end===n.start?(r.end=n.end,r.reference+=n.reference,r.alternative+=n.alternative):e.push(n)}D=e.map(O)}else(T||E)&&(D=[O({type:T?`Deletion`:`Insertion`,start:0,end:T.length,reference:T,alternative:E})])}catch{return{codons:g,changes:[],warning:`AA comparison exceeds the alignment limit`}}return Number.isFinite(b)&&D.push(O({type:`Frameshift`,start:w,end:w+1,reference:``,alternative:``})),{codons:g,changes:D,warning:x?`Insertion at a coding boundary: AA assignment is uncertain`:void 0}}function u(e,t,n){return t.map(t=>l(e,t,n))}self.onmessage=({data:t})=>{try{let i=t.alignedSequence||n(t.fasta),a=t.alignedSequence?e(t.reference,i):r(t.reference,i.sequence);self.postMessage({...a,name:i.name,proteins:u(t.reference,t.features||[],a.differences)})}catch(e){self.postMessage({error:e.message})}};", Li = typeof self < "u" && self.Blob && new Blob(["URL.revokeObjectURL(import.meta.url);", Ii], { type: "text/javascript;charset=utf-8" });
|
|
2911
2911
|
function Ri(e) {
|
|
2912
2912
|
let t;
|
|
2913
2913
|
try {
|
|
@@ -4275,18 +4275,18 @@ var Ao = ({ parsedSequence: e, rowStart: t, rowEnd: n, setHoveredInfo: r, rowId:
|
|
|
4275
4275
|
let i = ba(r, e.locations, w.length);
|
|
4276
4276
|
return i >= t && i < n;
|
|
4277
4277
|
}).sort((e, t) => e.anchor - t.anchor).map((n) => {
|
|
4278
|
-
let r = n.end > n.start + 1 ? `${n.start + 1}–${n.end}` : n.start + 1, i = n.type === "Insertion" ? `AA INS +${n.alternative} · after ${n.aaPosition}` : n.type === "Deletion" ? `AA DEL ${n.reference} · ${r}` : n.type === "Frameshift" ? `Frame shift · AA ${n.aaPosition}` : `AA ${n.reference}${n.aaPosition} → ${n.alternative}`, a = Math.max(8, Math.floor((P - 20) / 7)), o = i.length > a ? `${
|
|
4279
|
-
|
|
4280
|
-
let
|
|
4278
|
+
let r = n.end > n.start + 1 ? `${n.start + 1}–${n.end}` : n.start + 1, i = n.type === "Insertion" ? `AA INS +${n.alternative} · after ${n.aaPosition}` : n.type === "Deletion" ? `AA DEL ${n.reference} · ${r}` : n.type === "Frameshift" ? `Frame shift · AA ${n.aaPosition}` : n.type === "Ambiguous" ? `Coverage gap · AA ${r}` : `AA ${n.reference}${n.aaPosition} → ${n.alternative}`, a = Math.max(8, Math.floor((P - 20) / 7)), o = n.type === "Ambiguous" ? "Coverage gap" : i, s = o.length > a ? `${o.slice(0, a - 1)}…` : o, c = Math.min(P, s.length * 7 + 16), l = ((n.pointerPosition ?? n.anchor) - t) * C, u = Math.max(-C / 2, Math.min(l - c / 2, P - c)), d = R[e.lane], f = d.findIndex((e) => e + 8 <= u);
|
|
4279
|
+
f === -1 && (f = d.length), d[f] = u + c;
|
|
4280
|
+
let p = n.type === "Insertion" ? "#1d4ed8" : n.type === "Deletion" ? "#b91c1c" : ["Frameshift", "Ambiguous"].includes(n.type) ? "#6d28d9" : "#92400e";
|
|
4281
4281
|
return {
|
|
4282
4282
|
...n,
|
|
4283
4283
|
text: i,
|
|
4284
|
-
label:
|
|
4285
|
-
labelWidth:
|
|
4286
|
-
anchor:
|
|
4287
|
-
left:
|
|
4288
|
-
lane:
|
|
4289
|
-
color:
|
|
4284
|
+
label: s,
|
|
4285
|
+
labelWidth: c,
|
|
4286
|
+
anchor: l,
|
|
4287
|
+
left: u,
|
|
4288
|
+
lane: f,
|
|
4289
|
+
color: p
|
|
4290
4290
|
};
|
|
4291
4291
|
});
|
|
4292
4292
|
});
|
|
@@ -4402,7 +4402,7 @@ var Ao = ({ parsedSequence: e, rowStart: t, rowEnd: n, setHoveredInfo: r, rowId:
|
|
|
4402
4402
|
width: t.labelWidth,
|
|
4403
4403
|
height: 20,
|
|
4404
4404
|
rx: 4,
|
|
4405
|
-
fill: "white",
|
|
4405
|
+
fill: t.type === "Ambiguous" ? "#f5f3ff" : "white",
|
|
4406
4406
|
stroke: t.color
|
|
4407
4407
|
}),
|
|
4408
4408
|
/* @__PURE__ */ x("text", {
|
|
@@ -4482,7 +4482,7 @@ var Ao = ({ parsedSequence: e, rowStart: t, rowEnd: n, setHoveredInfo: r, rowId:
|
|
|
4482
4482
|
locusTag: e.notes?.locus_tag || null
|
|
4483
4483
|
}),
|
|
4484
4484
|
onMouseLeave: () => r(null),
|
|
4485
|
-
fillOpacity: .75,
|
|
4485
|
+
fillOpacity: e.proteinChanges.some((e) => e.type === "Ambiguous" && t.codonIndex >= e.start && t.codonIndex < e.end) ? .35 : .75,
|
|
4486
4486
|
style: { cursor: "pointer" },
|
|
4487
4487
|
children: t.aminoAcid
|
|
4488
4488
|
}), t.middle > 2 && s > -.5 && /* @__PURE__ */ x("text", {
|
|
@@ -23728,8 +23728,15 @@ function wC(e) {
|
|
|
23728
23728
|
}
|
|
23729
23729
|
Z(wC, "jsonToJsonString");
|
|
23730
23730
|
//#endregion
|
|
23731
|
+
//#region src/comparison/parseReference.mjs
|
|
23732
|
+
async function TC(e) {
|
|
23733
|
+
let t = await Dv(e, { isOligo: !0 });
|
|
23734
|
+
for (let e of t) e.parsedSequence?.sequence && (e.parsedSequence.sequence = e.parsedSequence.sequence.toUpperCase());
|
|
23735
|
+
return t;
|
|
23736
|
+
}
|
|
23737
|
+
//#endregion
|
|
23731
23738
|
//#region node_modules/react-use/esm/misc/util.js
|
|
23732
|
-
var
|
|
23739
|
+
var EC = function() {}, DC = typeof window < "u", OC = DC ? m : d, kC = {
|
|
23733
23740
|
x: 0,
|
|
23734
23741
|
y: 0,
|
|
23735
23742
|
width: 0,
|
|
@@ -23739,8 +23746,8 @@ var TC = function() {}, EC = typeof window < "u", DC = EC ? m : d, OC = {
|
|
|
23739
23746
|
bottom: 0,
|
|
23740
23747
|
right: 0
|
|
23741
23748
|
};
|
|
23742
|
-
function
|
|
23743
|
-
var e = v(null), t = e[0], n = e[1], r = v(
|
|
23749
|
+
function AC() {
|
|
23750
|
+
var e = v(null), t = e[0], n = e[1], r = v(kC), i = r[0], a = r[1], o = h(function() {
|
|
23744
23751
|
return new window.ResizeObserver(function(e) {
|
|
23745
23752
|
if (e[0]) {
|
|
23746
23753
|
var t = e[0].contentRect, n = t.x, r = t.y, i = t.width, o = t.height, s = t.top, c = t.left, l = t.bottom, u = t.right;
|
|
@@ -23757,18 +23764,18 @@ function kC() {
|
|
|
23757
23764
|
}
|
|
23758
23765
|
});
|
|
23759
23766
|
}, []);
|
|
23760
|
-
return
|
|
23767
|
+
return OC(function() {
|
|
23761
23768
|
if (t) return o.observe(t), function() {
|
|
23762
23769
|
o.disconnect();
|
|
23763
23770
|
};
|
|
23764
23771
|
}, [t]), [n, i];
|
|
23765
23772
|
}
|
|
23766
|
-
var
|
|
23767
|
-
return [
|
|
23773
|
+
var jC = DC && window.ResizeObserver !== void 0 ? AC : (function() {
|
|
23774
|
+
return [EC, kC];
|
|
23768
23775
|
});
|
|
23769
23776
|
//#endregion
|
|
23770
23777
|
//#region node_modules/react-icons/bs/index.mjs
|
|
23771
|
-
function
|
|
23778
|
+
function MC(e) {
|
|
23772
23779
|
return ie({
|
|
23773
23780
|
tag: "svg",
|
|
23774
23781
|
attr: {
|
|
@@ -23782,7 +23789,7 @@ function jC(e) {
|
|
|
23782
23789
|
}]
|
|
23783
23790
|
})(e);
|
|
23784
23791
|
}
|
|
23785
|
-
function
|
|
23792
|
+
function NC(e) {
|
|
23786
23793
|
return ie({
|
|
23787
23794
|
tag: "svg",
|
|
23788
23795
|
attr: {
|
|
@@ -23798,7 +23805,7 @@ function MC(e) {
|
|
|
23798
23805
|
}
|
|
23799
23806
|
//#endregion
|
|
23800
23807
|
//#region src/SearchPanel.jsx
|
|
23801
|
-
function
|
|
23808
|
+
function PC({ value: e, onChange: t, ...n }) {
|
|
23802
23809
|
let [r, i] = v(e ?? ""), a = _();
|
|
23803
23810
|
return d(() => {
|
|
23804
23811
|
clearTimeout(a.current), i(e ?? "");
|
|
@@ -23811,7 +23818,7 @@ function NC({ value: e, onChange: t, ...n }) {
|
|
|
23811
23818
|
}
|
|
23812
23819
|
});
|
|
23813
23820
|
}
|
|
23814
|
-
function
|
|
23821
|
+
function FC({ searchPanelOpen: e, setSearchPanelOpen: t, searchInput: n, setSearchInput: r, searchType: i, setSearchType: a, curSeqHitIndex: o, sequenceHits: s, setCurSeqHitIndex: c, includeRC: l, setIncludeRC: u }) {
|
|
23815
23822
|
return /* @__PURE__ */ S("div", {
|
|
23816
23823
|
className: "bg-white p-1 text-sm shadow rounded ",
|
|
23817
23824
|
children: [/* @__PURE__ */ x("div", {
|
|
@@ -23839,7 +23846,7 @@ function PC({ searchPanelOpen: e, setSearchPanelOpen: t, searchInput: n, setSear
|
|
|
23839
23846
|
children: e.label
|
|
23840
23847
|
}, e.value))
|
|
23841
23848
|
}),
|
|
23842
|
-
/* @__PURE__ */ x(
|
|
23849
|
+
/* @__PURE__ */ x(PC, {
|
|
23843
23850
|
type: "text",
|
|
23844
23851
|
value: n,
|
|
23845
23852
|
onChange: (e) => {
|
|
@@ -23880,7 +23887,7 @@ function PC({ searchPanelOpen: e, setSearchPanelOpen: t, searchInput: n, setSear
|
|
|
23880
23887
|
]
|
|
23881
23888
|
}),
|
|
23882
23889
|
s.length > 0 && /* @__PURE__ */ S(b, { children: [
|
|
23883
|
-
/* @__PURE__ */ x("button", { children: /* @__PURE__ */ x(
|
|
23890
|
+
/* @__PURE__ */ x("button", { children: /* @__PURE__ */ x(NC, {
|
|
23884
23891
|
onClick: () => c((e) => e == 0 ? s.length - 1 : e - 1),
|
|
23885
23892
|
className: "mx-3 text-gray-600 hover:text-gray-800"
|
|
23886
23893
|
}) }),
|
|
@@ -23888,7 +23895,7 @@ function PC({ searchPanelOpen: e, setSearchPanelOpen: t, searchInput: n, setSear
|
|
|
23888
23895
|
o + 1,
|
|
23889
23896
|
" of ",
|
|
23890
23897
|
s.length,
|
|
23891
|
-
/* @__PURE__ */ x("button", { children: /* @__PURE__ */ x(
|
|
23898
|
+
/* @__PURE__ */ x("button", { children: /* @__PURE__ */ x(MC, {
|
|
23892
23899
|
onClick: () => c((e) => e == s.length - 1 ? 0 : e + 1),
|
|
23893
23900
|
className: "mx-3 text-gray-600 hover:text-gray-800"
|
|
23894
23901
|
}) })
|
|
@@ -23900,13 +23907,13 @@ function PC({ searchPanelOpen: e, setSearchPanelOpen: t, searchInput: n, setSear
|
|
|
23900
23907
|
}
|
|
23901
23908
|
//#endregion
|
|
23902
23909
|
//#region src/components/GensploreView.jsx
|
|
23903
|
-
function
|
|
23910
|
+
function IC({ genbankString: e, searchInput: t, setSearchInput: n, setTitleCallback: r, fastaUrl: i, alignedSequence: a }) {
|
|
23904
23911
|
let [o, s] = v(""), c = t === void 0 ? o : t, u = l((e) => {
|
|
23905
23912
|
s(e), n?.(e);
|
|
23906
23913
|
}, [n]), [f, p] = v(null), [g, y] = v(!1), [C, w] = v({
|
|
23907
23914
|
busy: !1,
|
|
23908
23915
|
error: ""
|
|
23909
|
-
}), [T, E] = v(!1), [D, O] = v(0), [k, A] = v(null), [j, M] = v(null), [N, P] = v(null), [F, I] = v("nuc"), [L, { width: R }] =
|
|
23916
|
+
}), [T, E] = v(!1), [D, O] = v(0), [k, A] = v(null), [j, M] = v(null), [N, P] = v(null), [F, I] = v("nuc"), [L, { width: R }] = jC(), [z, ee] = v(null), [B, te] = v({
|
|
23910
23917
|
x: null,
|
|
23911
23918
|
y: null
|
|
23912
23919
|
}), [V, ne] = v(null), [re, ie] = v([]), [ae, oe] = v(0), [se, ce] = v(!1), fe = F === "nuc" ? parseInt(c) : null, pe = F === "annot" ? c : null, me = F === "sequence" && c ? c.toUpperCase() : null, [he, ge] = v(0);
|
|
@@ -23926,9 +23933,9 @@ function FC({ genbankString: e, searchInput: t, setSearchInput: n, setTitleCallb
|
|
|
23926
23933
|
let t = !1;
|
|
23927
23934
|
return ne(null), p(null), ie([]), oe(0), (async () => {
|
|
23928
23935
|
try {
|
|
23929
|
-
let n = await
|
|
23936
|
+
let n = await TC(e);
|
|
23930
23937
|
if (t) return;
|
|
23931
|
-
|
|
23938
|
+
ne(n[0]);
|
|
23932
23939
|
} catch (e) {
|
|
23933
23940
|
console.error("Error loading GenBank file:", e);
|
|
23934
23941
|
}
|
|
@@ -24144,7 +24151,7 @@ function FC({ genbankString: e, searchInput: t, setSearchInput: n, setTitleCallb
|
|
|
24144
24151
|
/* @__PURE__ */ x(wo, {}),
|
|
24145
24152
|
/* @__PURE__ */ x("div", {
|
|
24146
24153
|
className: "fixed top-0 right-0 z-10",
|
|
24147
|
-
children: /* @__PURE__ */ x(
|
|
24154
|
+
children: /* @__PURE__ */ x(FC, {
|
|
24148
24155
|
searchInput: c,
|
|
24149
24156
|
setSearchInput: u,
|
|
24150
24157
|
searchPanelOpen: T,
|
|
@@ -24374,6 +24381,6 @@ function FC({ genbankString: e, searchInput: t, setSearchInput: n, setTitleCallb
|
|
|
24374
24381
|
}
|
|
24375
24382
|
//#endregion
|
|
24376
24383
|
//#region src/index.js
|
|
24377
|
-
var
|
|
24384
|
+
var LC = IC;
|
|
24378
24385
|
//#endregion
|
|
24379
|
-
export {
|
|
24386
|
+
export { LC as default };
|