@zakodium/nmrium-core-plugins 0.6.18 → 0.6.19
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.
|
@@ -2,7 +2,7 @@ var oi=Object.defineProperty;var xt=(e,t)=>{for(var r in t)oi(e,r,{get:t[r],enum
|
|
|
2
2
|
`)){if(!h)continue;let[d,b]=h.trim().match(/\s*([\d.]+)\s*([a-zA-Z]+)/)?.slice(1)||[];b&&p.push(`${d}${b}`)}r.meta.vdlist=p}if(e.difflist){let p=[];for(let h of e.difflist.split(`
|
|
3
3
|
`)){if(!h)continue;let[d]=h.trim().match(/\s*([\d.]+)\s*/)?.slice(1)||[];p.push(d)}r.meta.difflist=p}r.meta.SW_p||(r.meta.SW_p=r.meta.SW_h),r.meta.SF||(r.meta.SF=r.meta.SFO1);let s=["2rr","2ri","2ir","2ii"].some(p=>p in e);r.meta.nbSubSpectra=s?Number.parseInt(r.meta.SI[1],10):Number.parseInt(r.meta.TD[1],10);let a=0,c=0,l=0,m=0;if(s){let p=Number(r.meta.SF[1]),h=Number(r.meta.SW_p[1]||r.meta.SW[1]);m=Number(r.meta.OFFSET[1]),l=Number(r.meta.OFFSET[0]),a=m,c=m-h/p,r.meta.firstY=a,r.meta.lastY=c,de({rr:e["2rr"],ri:e["2ri"],ir:e["2ir"],ii:e["2ii"]},r,t)}else if(e.ser){a=0,c=r.meta.nbSubSpectra;let p=Number(r.meta.SW[0]),h=Number(r.meta.SW[1]),d=Number(r.meta.SFO1[0]),b=Number(r.meta.SFO1[1]),F=Number(r.meta.O1[0]),S=Number(r.meta.O1[1]);l=F/d+p/2,m=S/b+h/2,ge(e.ser,r,t)}if(t.keepSpectra){let{nbSubSpectra:p}=r.meta,h=(c-a)/(p-1),d=a;for(let b=0;b<p;b++)d+=h,r.spectra[b].pageValue=d}let{NUC1:u,AXNUC:f,SF:g}=r.meta,y=f||u||[];return r.info["2D_Y_NUCLEUS"]=y[1],r.info["2D_X_NUCLEUS"]=y[0],r.info["2D_Y_FRECUENCY"]=g[1],r.info["2D_X_FRECUENCY"]=g[0],r.info["2D_Y_OFFSET"]=m,r.info["2D_X_OFFSET"]=l,r.info.twoD=!0,r.twoD=!0,r}async function He(e,t={}){let r,n=!1,i=!1;if(["ser","2rr","2ri","2ir","2ii"].some(s=>s in e))n=!0,r=await jt(e,t);else if(e["1r"]||e["1i"]||e.fid)i=!0,r=await qt(e,t);else throw new RangeError("The current files are invalid");let o={name:e.name,expno:e.expno,isFID:!!e.isFID};for(let s in e){let a=s;(typeof e[a]).match(/number|string|boolean/)&&(o[a]=e[a])}r.source=n?{...o,is2D:n}:{...o,is1D:i},t.keepFiles&&(r.source.files=e.fileCollectionItems),r.meta.DATE=Number(r.meta.DATE),r.meta.GRPDLY&&(Ve(r.meta,"DSPFVS",r.meta.DSPFVS),Ve(r.meta,"GRPDLY",r.meta.GRPDLY),Ve(r.meta,"DECIM",r.meta.DECIM));for(let s in r.meta)Array.isArray(r.meta[s])&&(r.meta[s].length===1||typeof r.meta[s][0]=="string"&&r.meta[s][0].includes("(0.."))&&(r.meta[s]=r.meta[s][0]);return r}function Ve(e,t,r){r!==void 0&&(Array.isArray(r)?e[t]=r.slice():e[t]=[r])}var B={};xt(B,{ECHO_ANTIECHO:()=>Vi,QF:()=>$i,QSEC:()=>zi,STATES:()=>Wi,STATES_TPPI:()=>Xi,TTPI:()=>Ji});var $i=1,zi=2,Ji=3,Wi=4,Xi=5,Vi=6;import{formatSpectra as yo}from"@zakodium/nmrium-core";function ye(e){let t=[];for(let r of e){if(!r)continue;let{groups:{value:n,unit:i}={}}=r.trim().match(/[$$]*\s*(?<value>[\d.]+)\s*(?<unit>[a-zA-Z]+)/)||{};t.push(Hi(n,i))}return t}function Hi(e,t){switch(t.toLowerCase()){case"s":return Number.parseFloat(e);case"ms":return Number.parseFloat(e)/1e3;case"m":case"min":return Number.parseFloat(e)*60;default:return Number.NaN}}import{isAnyArray as Ut}from"is-any-array";function U(e){if(Gi(e))return Yi(e)?e.map(Bt):Bt(e);if(typeof e=="object"&&e!==null){let t={};for(let r in e)t[r]=U(e[r]);return t}return e}function Gi(e){return Ut(e)}function Bt(e){return Float64Array.from(e)}function Yi(e){return Ut(e[0])}import{isAnyArray as fo}from"is-any-array";import{getOneIfArray as Zi}from"@zakodium/nmrium-core";var Ki=new Map([[String(H.QSIM),"notPhaseSensitive"],["notphasesensitive","notPhaseSensitive"],[String(H.QSEQ),"QSEQ"],["qseq","QSEQ"],[String(B.TTPI),"TPPI"],["tppi","TPPI"],[String(B.STATES),"States"],["states","States"],[String(B.STATES_TPPI),"States-TPPI"],["tppi-states","States-TPPI"],["states-tppi","States-TPPI"],[String(B.ECHO_ANTIECHO),"Echo-antiecho"],["echo-antiecho","Echo-antiecho"]]);function $t(e){let t=String(e).toLowerCase().replaceAll(" ","");return Ki.get(t)}function D(e,t,r,n=!1){r===void 0||t in e&&!n||(Array.isArray(r)?e[t]=r.map(zt):e[t]=[zt(r)])}function zt(e){return typeof e=="string"&&(e.startsWith("<")&&e.endsWith(">")&&(e=e.slice(1,-1)),e=e.replace(/\$.*/,"").trim()),e}function G(e){return Array.isArray(e)?e.map(Jt):Jt(e)}function Jt(e){return typeof e=="string"?Number.parseFloat(e):e}function P(e,t,r){r!==void 0&&D(e,t,G(r))}function Wt(e,t,r){let{prefix:n=""}=r,i=t[`${n}.ACQUISITIONSCHEME`]||t[`${n}FnMODE`];i&&D(e,"acquisitionScheme",$t(Zi(i,1))),D(e,"acquisitionMode",t[`${n}.ACQUISITIONMODE`]),P(e,"lpNumberOfCoefficients",t[`${n}NCOEF`]),P(e,"linearPredictionBin",t[`${n}LPBIN`]),P(e,"tdOff",t[`${n}TDoff`])}import{getOneIfArray as oo}from"@zakodium/nmrium-core";import{UTCDate as Qi}from"@date-fns/utc";import{getOneIfArray as eo}from"@zakodium/nmrium-core";import{getTime as Vt,isValid as Ht,parse as to,parseISO as ro}from"date-fns";import{removeComment as no}from"jcampconverter";function Xt(e,t){if(t!==null&&Number.isInteger(t)){e.epoch=t;let r=new Date(t);e.date=r.toISOString(),e.localeDate=r.toLocaleString()}}function Gt(e,t,r={}){let n=t.LONGDATE??eo(t.DATE);if(!n)return;let{separator:i}=r,o=Number(n)*1e3;Xt(e,o||io(n,i))}function io(e,t){let r=no(e,t),n=ro(r,{});if(Ht(n)){let o=n.getTimezoneOffset()*60*1e3;return Vt(n)-o}let i=["dd/MM/yyyy HH:mm:ss","EEE MMM dd HH:mm:ss yyyy","dd/MM/yyyy HH:mm:ss","yyyy/MM/dd HH:mm:ss.SSS X","yyyy/MM/dd HH:mm:ssX","yyyy/MM/dd HH:mm:ss.SSS","yyyy/MM/dd HH:mm:ss","yyyy/MM/dd HH:mm","yyyy/MM/dd","yy/MM/dd"];for(let o of i){let s=to(r,o,new Qi,{useAdditionalDayOfYearTokens:!0});if(Ht(s))return Vt(s)}return null}function Yt(e,t,r){let{prefix:n="",separator:i}=r;(t.LONGDATE||t.DATE)&&Gt(e,t,{separator:i}),D(e,"pulseSequence",t[".PULSESEQUENCE"]||t[".PULPROG"]||t[`${n}PULPROG`]);let o=t[`${n}OWNER`];if(o&&D(e,"owner",o.replaceAll(/\$\$.*/gm,"")),D(e,"title",t.TITLE),D(e,"aqMod",t[`${n}AQ_mod`]),D(e,"windowMultiplicationMode",t[`${n}WDW`]),D(e,"experiment",ce(e,t,{prefix:n})),D(e,"solvent",t[".SOLVENTNAME"]||oo(t[`${n}SOLVENT`])),D(e,"temperature",t[`${n}TE`]||t[".TE"]),D(e,"type",t.DATATYPE),D(e,"dataClass",t[`${n}DATACLASS`]),D(e,"phc0",t[`${n}PHC0`]),D(e,"phc1",t[`${n}PHC1`]),e.type){let s=e.type[0].toUpperCase();s.includes("FID")?(e.isFid=!0,e.isComplex=!0):s.includes("SPECTRUM")&&(e.isFt=!0)}if(D(e,"firstX",t[`${n}FIRSTX`]),D(e,"lastX",t[`${n}LASTX`]),D(e,"numberOfPoints",t[`${n}NPOINTS`]),`${n}REVERSE`in t){let s=t[`${n}REVERSE`];e.reverse=(Array.isArray(s)?s:[s]).map(a=>typeof a=="string"?a.includes("yes"):a)}}function Kt(e){let{JCAMPDX:t="",ORIGIN:r=""}=e,n=String(t).toLowerCase()+String(r).toLowerCase();return"SPECTROMETER/DATASYSTEM"in e&&(n=e["SPECTROMETER/DATASYSTEM"]),(n.includes("mestre")||n.includes("nova"))&&(n="mnova"),n}import{isAnyArray as so}from"is-any-array";import{calculateRelativeFrequency as ao}from"nmr-processing";function Zt(e,t,r){let{prefix:n=""}=r;if(P(e,"originFrequency",t[`${n}SFO1`]),e.dimension===1&&P(e,"originFrequency",t[".OBSERVEFREQUENCY"]),!e.originFrequency&&e.dimension===2&&".OBSERVEFREQUENCY"in t){let i=G(t[".OBSERVEFREQUENCY"]);if(so(i)&&i.length>1){let o=t[`${n}SYMBOL`].split(","),s=o.findIndex(c=>c.includes("2")),a=o.findIndex(c=>c.includes("1"));s!==-1&&a!==-1?e.originFrequency=[i[s],i[a]]:e.originFrequency=i.slice()}else typeof i=="number"&&(e.originFrequency=ao(e.nucleus,i))}(!e.originFrequency||e.originFrequency.some(i=>Number.isNaN(i)||i===0))&&(e.originFrequency=e.dimension>1?[400,400]:[400],r.logger?.warn("Frequency could not be determined, set to 400 MHz"))}function C(e,t,r=""){return e.every(n=>`${r}${n}`in t)}import{matrixTranspose as co}from"ml-spectra-processing";function ne(e,t){return co(e).map(t)}function Qt(e,t,r){let{prefix:n=""}=r,i=t[`${n}REFERENCE_POINT`];if(!("baseFrequency"in e)&&"originFrequency"in e&&D(e,"baseFrequency",e.originFrequency),!("frequencyOffset"in e)&&i&&C(["spectralWidth","baseFrequency"],e)){let o=typeof i=="number"?i:Number(t[`${n}REFERENCE_POINT`].match(/(?<reference>[+-]?\d+(?:\.\d+)?)\s*.*/)?.groups?.reference);if(!Number.isNaN(o)){let{spectralWidth:s,baseFrequency:a}=e;D(e,"frequencyOffset",.5*s[0]*a[0]-o)}}if(!("frequencyOffset"in e)&&C(["baseFrequency","originFrequency"],e)){let{baseFrequency:o,originFrequency:s}=e;D(e,"frequencyOffset",ne([s,o],a=>(a[0]-a[1])*1e6))}!e.frequencyOffset[0]&&".SHIFTREFERENCE"in t&&lo(t,e)}function lo(e,t){let r=e[".SHIFTREFERENCE"],n=r.trim().startsWith("(")?/\((?<data>[^)]+)\)/:/(?<data>[^)]+)/,i=r.match(n);if(i.groups.data){let o=i.groups.data.split(",");if(o.length<4)return;let s=Number.parseInt(t.numberOfPoints,10),{spectralWidth:a,baseFrequency:c}=t,l=Number.parseInt(o[2],10),m=Number.parseFloat(o[3]),u;if(t.isFid){if(!C(["numberOfPoints","spectralWidth"],t))return;u=m+(s*.5-l)*a/s}else if(C(["firstX","lastX","numberOfPoints"],t)){let f=Number.parseFloat(t.firstX),g=Number.parseFloat(t.lastX),y=(g+f)/2,p=(g-f)/(s+1),h=p<0?f:g+(l-1)*p;u=(y-h)/c+m}u!==void 0&&!Number.isNaN(u)&&(t.frequencyOffset=u*c)}}import{isAnyArray as Y}from"is-any-array";function he(e){return typeof e=="number"}function be(e){let{phc0:t,phc1:r}=e;return!Y(t)&&!he(t)||!Y(r)&&!he(r)||Y(t)&&!he(t[0])||Y(r)&&!he(r[0])?{}:(Y(r)?r[0]*=-1:r*=-1,Y(t)?t[0]*=-1:t*=-1,{phc0:t,phc1:r})}function er(e,t){let{T1NUCLEUS:r,T2NUCLEUS:n,PAGE:i}=t;e.pulseSequence=t.EXPERIMENT||t[".PULSESEQUENCE"];let o=[],{dimension:s,isComplex:a}=e;if(s===2&&e.pulseSequence==="T1"){let m=a?2:1;for(let u=0;u<i.length;u+=m){let f=i[u].replace(/T1=/,"");o.push(Number(f))}t.vdlistValues=o}e.nucleus=s>1?[n,r]:[n];let{phc0:c,phc1:l}=e;if(c&&l){let m=be({phc0:c,phc1:l});e={...e,...m}}}import{getOneIfArray as nr}from"@zakodium/nmrium-core";import{getGyromagneticRatio as mo}from"gyromagnetic-ratio";function rr(e,t,r){if(e>0)return e;if(t>14||t===0)return 0;if(tr[t]){let n=tr[t];if(!n[r])throw new Error(`decim ${r} not in lookup table for dspfvs ${t}`);return n[r]}else throw new Error(`dspfvs ${t} not in lookup table`)}var tr={10:{2:44.75,3:33.5,4:66.625,6:59.08333333333333,8:68.5625,12:60.375,16:69.53125,24:61.02083333333333,32:70.015625,48:61.34375,64:70.2578125,96:61.50520833333333,128:70.37890625,192:61.5859375,256:70.439453125,384:61.62630208333333,512:70.4697265625,768:61.646484375,1024:70.48486328125,1536:61.65657552083333,2048:70.492431640625},11:{2:46,3:36.5,4:48,6:50.16666666666667,8:53.25,12:69.5,16:72.25,24:70.16666666666667,32:72.75,48:70.5,64:73,96:70.66666666666667,128:72.5,192:71.33333333333333,256:72.25,384:71.66666666666667,512:72.125,768:71.83333333333333,1024:72.0625,1536:71.91666666666667,2048:72.03125},12:{2:46,3:36.5,4:48,6:50.16666666666667,8:53.25,12:69.5,16:71.625,24:70.16666666666667,32:72.125,48:70.5,64:72.375,96:70.66666666666666,128:72.5,192:71.333333333,256:72.25,384:71.66666666666667,512:72.125,768:71.83333333333333,1024:72.0625,1536:71.91666666666667,2048:72.03125},13:{2:2.75,3:2.833333333333333,4:2.875,6:2.916666666666667,8:2.9375,12:2.958333333333333,16:2.96875,24:2.979166666666667,32:2.984375,48:2.989583333333333,64:2.9921875,96:2.994791666666667}};function ir(e,t,r){let{prefix:n=""}=r,i=e.nucleus[0],o=mo(i);if(D(e,"probeName",t[`${n}PROBHD`]),D(e,"baseFrequency",t[`${n}BF1`]||t[`${n}SF`]),P(e,"scaleFactor",t[`${n}NC_proc`]),"scaleFactor"in e&&(e.scaleFactor=e.scaleFactor.map(a=>2**a)),!("baseFrequency"in e)&&"originFrequency"in e?D(e,"baseFrequency",e.originFrequency):e.baseFrequency=G(e.baseFrequency),o&&C(["baseFrequency","originFrequency"],e)){let a=2*Math.PI*(e.baseFrequency[0]/o)*1e6;D(e,"fieldStrength",a)}if(P(e,"spectralWidth",t[`${n}SW`]||t[`${n}QM_SPECTRAL_WIDTH`]),e.dimension===1&&t[`${n}SweepWidth`]&&e.originFrequency&&P(e,"spectralWidth",t[`${n}SweepWidth`]/e.originFrequency[0]),D(e,"numberOfPoints",t[`${n}TD`],!0),D(e,"spectrumSize",t[`${n}SI`]??e.numberOfPoints),D(e,"sampleName",t[`${n}NAME`]),t[`${n}FNTYPE`]!==void 0&&D(e,"acquisitionMode",Number.parseInt(t[`${n}FNTYPE`],10)),t[`${n}VARNAME`]?.split(",")[0]==="TIME"){let a=typeof t.LAST=="string"?t.LAST.replace(" ","").split(",")[0]:t.LAST;P(e,"acquisitionTime",a)}if(!e.acquisitionTime&&C(["numberOfPoints","spectralWidth"],e)){let{spectralWidth:a,originFrequency:c,numberOfPoints:l}=e;D(e,"acquisitionTime",(l[0]-1)/(2*a[0]*c[0]))}if(t[`${n}P`]){let a=1e6/(nr(t[`${n}P`]).split(r.separator||`
|
|
4
4
|
`)[1].split(" ")[1]*4);D(e,"pulseStrength90",a)}if(t[`${n}D`]){let a=nr(t[`${n}D`]).split(r.separator||`
|
|
5
|
-
`)[1].split(" ")[1];P(e,"relaxationTime",a)}if(P(e,"numberOfScans",t[`${n}NS`]||t[`${n}QM_NSCANS`]),D(e,"groupDelay",t[`${n}GRPDLY`]),D(e,"dspfvs",t[`${n}DSPFVS`]),D(e,"decim",t[`${n}DECIM`]),e.isFid&&("groupDelay"in e||C(["dspfvs","decim"],e))){let{groupDelay:a,dspfvs:c,decim:l}=e,m=rr(a?.[0]??0,c?.[0],l?.[0]);D(e,"digitalFilter",m)}if(C(["numberOfPoints","spectralWidth"],e)){let{spectralWidth:a,numberOfPoints:c}=e,l=c.map((m,u)=>e.isFid?e.acquisitionTime[0]/(m-1):a[u]/(m-1));D(e,"increment",l)}}function $(e,t=","){if(e&&typeof e=="string")return e.split(t)}function or(e,t,r){let{prefix:n=""}=r,i=e.dimension<2,o=e.dataClass?.[0].toUpperCase()==="NTUPLES",s=C(["LAST","FIRST","VARDIM","SYMBOL"],t,n);if(i&&(o||s)&&(D(e,"last",$(t[`${n}LAST`])),D(e,"first",$(t[`${n}FIRST`])),D(e,"varDim",$(t[`${n}VARDIM`])),D(e,"symbols",$(t[`${n}SYMBOL`])),e.symbols&&Array.isArray(e.symbols))){e.symbols.includes("R")&&e.symbols.includes("I")&&(e.isComplex=!0);let a=e.symbols.findIndex(c=>c.toLowerCase()==="x");if(P(e,"firstX",e.first[a]),P(e,"lastX",e.last[a]),P(e,"numberOfPoints",e.varDim[a]),!("spectralWidth"in e)){let{lastX:c,numberOfPoints:l,firstX:m,originFrequency:u}=e;D(e,"spectralWidth",e.isFid?ne([l,c],f=>f[0]/(2*f[1])):ne([c,m,u],f=>Math.abs(f[0]-f[1])/f[2]))}}}import{normalizeNucleus as uo}from"nmr-processing";function Fe(e,t,r){let n=[];if(e[`${r}AXNUC`]&&(n=e[`${r}AXNUC`],Array.isArray(n)||(n=[n]),n=v(n)),n.length===0&&e[`${r}NUC1`]&&(n=e[`${r}NUC1`],Array.isArray(n)||(n=[n]),n=v(n)),n.length===0&&e[".NUCLEUS"]){let
|
|
5
|
+
`)[1].split(" ")[1];P(e,"relaxationTime",a)}if(P(e,"numberOfScans",t[`${n}NS`]||t[`${n}QM_NSCANS`]),D(e,"groupDelay",t[`${n}GRPDLY`]),D(e,"dspfvs",t[`${n}DSPFVS`]),D(e,"decim",t[`${n}DECIM`]),e.isFid&&("groupDelay"in e||C(["dspfvs","decim"],e))){let{groupDelay:a,dspfvs:c,decim:l}=e,m=rr(a?.[0]??0,c?.[0],l?.[0]);D(e,"digitalFilter",m)}if(C(["numberOfPoints","spectralWidth"],e)){let{spectralWidth:a,numberOfPoints:c}=e,l=c.map((m,u)=>e.isFid?e.acquisitionTime[0]/(m-1):a[u]/(m-1));D(e,"increment",l)}}function $(e,t=","){if(e&&typeof e=="string")return e.split(t)}function or(e,t,r){let{prefix:n=""}=r,i=e.dimension<2,o=e.dataClass?.[0].toUpperCase()==="NTUPLES",s=C(["LAST","FIRST","VARDIM","SYMBOL"],t,n);if(i&&(o||s)&&(D(e,"last",$(t[`${n}LAST`])),D(e,"first",$(t[`${n}FIRST`])),D(e,"varDim",$(t[`${n}VARDIM`])),D(e,"symbols",$(t[`${n}SYMBOL`])),e.symbols&&Array.isArray(e.symbols))){e.symbols.includes("R")&&e.symbols.includes("I")&&(e.isComplex=!0);let a=e.symbols.findIndex(c=>c.toLowerCase()==="x");if(P(e,"firstX",e.first[a]),P(e,"lastX",e.last[a]),P(e,"numberOfPoints",e.varDim[a]),!("spectralWidth"in e)){let{lastX:c,numberOfPoints:l,firstX:m,originFrequency:u}=e;D(e,"spectralWidth",e.isFid?ne([l,c],f=>f[0]/(2*f[1])):ne([c,m,u],f=>Math.abs(f[0]-f[1])/f[2]))}}}import{normalizeNucleus as uo}from"nmr-processing";function Fe(e,t,r){let n=[];if(e[`${r}AXNUC`]&&(n=e[`${r}AXNUC`],Array.isArray(n)||(n=[n]),n=v(n)),n.length===0&&e[`${r}NUC1`]&&(n=e[`${r}NUC1`],Array.isArray(n)||(n=[n]),n=v(n)),n.length===0&&e[".NUCLEUS"]){let s=$(e[".NUCLEUS"]);if(e[`${r}SYMBOL`]){let a=e[`${r}SYMBOL`].split(","),c=a.findIndex(m=>m.includes("2")),l=a.findIndex(m=>m.includes("1"));c!==-1&&l!==-1&&s?n=v([s[c],s[l]]):n=v(s).toReversed()}else n=v(s)}n.length===0&&e[".OBSERVENUCLEUS"]&&(n=v([e[".OBSERVENUCLEUS"]])),n.length===0&&t.experiment&&(n=v(sr(t.experiment[0]))),po(e)&&(n=[e["2D_X_NUCLEUS"].replaceAll(/[^A-Za-z0-9]/g,""),e["2D_Y_NUCLEUS"].replaceAll(/[^A-Za-z0-9]/g,"")]);let{pulseSequence:i=[""],experiment:o}=t;return!i[0].toLowerCase().match("1d")&&o&&(o[0].match("jres")||o[0].match("dosy"))&&(n=sr(t.experiment[0])),n.map(uo)}function po(e){return e["2D_X_NUCLEUS"]&&!e["2D_X_NUCLEUS"].includes("off")&&e["2D_Y_NUCLEUS"]&&!e["2D_Y_NUCLEUS"].includes("off")}function sr(e){return typeof e!="string"?[]:(e=e.toLowerCase(),e.includes("jres")?["1H","Hz"]:e.includes("dosy")?["1H","D"]:e.includes("hmbc")||e.includes("hsqc")?["1H","13C"]:e.includes("cosy")||e.includes("tocsy")?["1H","1H"]:[])}function v(e){if(!e)return[];let t=e.map(n=>String(n).replaceAll(/[^A-Za-z0-9]/g,"").replace("NA","").replace("off","")),r=0;for(let n of t)n||r++;return r===0?t:[]}function ar(e,t,r){let{logger:n,prefix:i=""}=r;if(e.nucleus=Fe(t,e,i),e.nucleus.length===0)if(n)n.warn("No nucleus detected, assuming 1H"),e.nucleus=["1H"];else throw new Error("No nucleus detected");e.dimension=e.nucleus.length}function cr(e,t,r={}){let{prefix:n="",separator:i=`
|
|
6
6
|
`}=r;D(e,"spectralWidth",t[`${n}SweepWidth`]/e.originFrequency[0]);let o=t[`${n}.PULSESEQUENCE`].split(i),s=[];t[".OBSERVENUCLEUS"]&&s.push(t[".OBSERVENUCLEUS"]),t.INDIRECTNUCLEUS&&s.push(t.INDIRECTNUCLEUS),e.nucleus=v(s),e.pulseSequence=o[0];let a=o.slice(2,-1);if(s.length>1)if(s[0]===s[1])e.spectralWidth.push(e.spectralWidth[0]);else{let c=JSON.stringify(a).match(/\$\$SW1=\s*(?<sw>[+-]?(?:[0-9]*[.])?[0-9]+)/);if(c?.groups){let{originFrequency:l}=e,m=Number.parseFloat(c.groups.sw);e.spectralWidth.push(m/l[1])}}}function xe(e,t={}){let{prefix:r="",logger:n}=t,i={creator:Kt(e),dimension:0,nucleus:[],isFid:!1,isFt:!1},o=JSON.stringify(e),s=/\r\n/.exec(o)?`\r
|
|
7
7
|
`:`
|
|
8
8
|
`,a=[Yt,ar,Wt,Zt],{creator:c=""}=i;c.includes("nanalysis")?a.push(er):c.toLocaleLowerCase().includes("oxford instruments")&&a.push(cr),c!=="mnova"&&c!=="mestre"&&a.push(ir),a.push(or,Qt);for(let l of a)l(i,e,{prefix:r,logger:n,separator:s});return go(i)}function go(e){return e.dimension===1&&(e.nucleus=[e.nucleus]),Object.fromEntries(Object.entries(e).map(([t,r])=>[t,fo(r)&&r.length===1?r[0]:r]))}var ho={keepRecordsRegExp:/.*/,keepFiles:!0};async function De(e,t={}){let r={spectra:[],molecules:[]},{converter:n={},selector:i={},logger:o}=t,s=ze(e,{logger:o,...Fo(i)}),a=[];for(let l of s)a.push(He(l,{...ho,...n,keepFiles:!0}).then(m=>bo(m,t)));let c=await Promise.allSettled(a);for(let l=0;l<c.length;l++){let m=c[l];if(m.status==="fulfilled"){let u=be(m.value.info);r.spectra.push({...m.value,info:{...m.value.info,...u}})}else if(m.reason){let u=s[l].name;o?.warn(`Bruker data: ${u}, fails with: ${m.reason}`);continue}}return o&&o[r.spectra.length>0?"info":"debug"](`Loaded ${r.spectra.length} spectra from Bruker files`),yo(r)}function bo(e,t={}){let{logger:r}=t,n={...e.info,...e.meta},i=xe(n,{logger:r}),o={},{isFid:s}=i;if(xo(e)){let f=e.minMax;for(let g in f){let y=f[g];y&&(y.z=U(y.z))}o.components=e.minMax}else i.dimension===1&&(o.components=e.spectra);let{source:a}=e,{expno:c,name:l,files:m}=a;n.vdlist&&(n.vdlistValues=ye(n.vdlist));let u={dependentVariables:[o],meta:n,info:{...i,experimentNumber:c,name:l}};return m&&(u.selector={files:m.map(f=>f.relativePath)}),Do(u,e),u}function Fo(e){let{general:t={},bruker:r={}}=e,{processingNumbers:n,experimentNumbers:i,...o}=r;return{...t,...o,processingNumbers:lr(n),experimentNumbers:lr(i)}}function lr(e){if(e)return e.split(/[^\d]+/).filter(Boolean).map(t=>Number.parseInt(t,10))}function xo(e){let{info:t}=e;return t.twoD}function Do(e,t){if(!("integrals"in t))return;let{integrals:r=[]}=t;e.integrals={values:r.map(n=>{let{from:i,to:o,integration:s}=n;return{from:i,to:o,integral:s,kind:"signal"}})}}function Ao(e,t){let{selector:r,converter:n,logger:i}=t??{};return De(e,{converter:n?.bruker,selector:r,logger:i})}function Ge(){return So({id:"@zakodium/nmrium-core-plugins#BrukerLoaderPlugin",version:1,shouldSerialize:!0,migrations:[],onReadProcess:{onFiles:Ao}})}import{defineNMRiumPlugin as ss}from"@zakodium/nmrium-core";import{formatSpectra as rs}from"@zakodium/nmrium-core";import{createTree as ns}from"jcampconverter";function mr(e,t,r={}){let{selector:n={}}=r;for(let i=0;i<e.spectra.length;i++){let o=e.spectra[i];o.selector={files:[t.relativePath],jcamp:{index:i,...n}}}return e}import{convert as Io}from"jcampconverter";function Ye(e,t,r){let{dataType:n,children:i}=e,o=n==="LINK"&&i?i:[e];for(let s of o){if(s.dataType==="LINK"){Ye(s,t,r);continue}let a=Io(s.jcamp,r);t.push(...a.flatten)}}function fr(e,t={}){let r=[],n=dr(e,t);for(let s of n?e:[])s.dataType==="LINK"?s.children=Ke(s.children,t):s=Ke([s],t)[0],r.push(s);let{name:i,logger:o}=t;return e.length===0&&o?.warn(`There is no data ${i?`in ${i}`:"in the JCAMP-DX"}`),r}function Ke(e=[],t={}){let{name:r,logger:n,tree:i=[],dataSelection:o="both"}=t,s=[];for(let m of e){let{dataType:u,dataClass:f}=m;if(u==="LINK")m.children=Ke(m.children,t);else if(i.some(g=>{let{dataClass:y=f,dataType:p=u}=g;return f===y&&u===p})){n?.warn(`Skipping ${f} and ${u} ${r?`in ${r}`:"in the JCAMP-DX"},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zakodium/nmrium-core-plugins",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.19",
|
|
4
4
|
"description": "Recommended plugins for NMRium, loaders of common formats like bruker or jcamp, and some post-processing plugins",
|
|
5
5
|
"author": "Zakodium Sàrl",
|
|
6
6
|
"license": "CC-BY-NC-SA-4.0",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"bruker-data-test": "^1.0.0",
|
|
37
37
|
"esbuild": "^0.27.0",
|
|
38
38
|
"fifo-logger": "^2.0.1",
|
|
39
|
-
"jcamp-data-test": "^2.
|
|
39
|
+
"jcamp-data-test": "^2.5.0",
|
|
40
40
|
"jeol-data-test": "^1.0.0",
|
|
41
41
|
"jest-matcher-deep-close-to": "^3.0.2",
|
|
42
42
|
"msw": "^2.12.3",
|
|
@@ -54,11 +54,11 @@
|
|
|
54
54
|
"file-collection": "^6.3.0",
|
|
55
55
|
"gyromagnetic-ratio": "^2.0.0",
|
|
56
56
|
"is-any-array": "^2.0.1",
|
|
57
|
-
"jcampconverter": "^12.0.
|
|
57
|
+
"jcampconverter": "^12.0.4",
|
|
58
58
|
"linear-sum-assignment": "^1.0.9",
|
|
59
59
|
"lodash.merge": "^4.6.2",
|
|
60
|
-
"ml-spectra-processing": "^14.18.
|
|
61
|
-
"nmr-processing": "^22.0.
|
|
60
|
+
"ml-spectra-processing": "^14.18.2",
|
|
61
|
+
"nmr-processing": "^22.0.1",
|
|
62
62
|
"openchemlib": "^9.18.2",
|
|
63
63
|
"openchemlib-utils": "^8.8.1",
|
|
64
64
|
"sdf-parser": "^7.0.4"
|
|
@@ -66,5 +66,5 @@
|
|
|
66
66
|
"volta": {
|
|
67
67
|
"extends": "../../../package.json"
|
|
68
68
|
},
|
|
69
|
-
"gitHead": "
|
|
69
|
+
"gitHead": "358d8c4fb03400501243cae2f93c5d1100d1c350"
|
|
70
70
|
}
|