nmr-processing 9.7.8 → 9.7.9-pre.1690349439
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/lib/apodization/compose.js +1 -1
- package/lib/apodization/compose.js.map +1 -1
- package/lib/assignment/get13CAssignments.d.ts +1 -1
- package/lib/assignment/get13CAssignments.js +3 -3
- package/lib/assignment/get13CAssignments.js.map +1 -1
- package/lib/assignment/get1HAssignments.d.ts +2 -4
- package/lib/assignment/get1HAssignments.js +3 -3
- package/lib/assignment/get1HAssignments.js.map +1 -1
- package/lib/assignment/getAssignments.d.ts +3 -5
- package/lib/assignment/getAssignments.js +5 -5
- package/lib/assignment/getAssignments.js.map +1 -1
- package/lib/assignment/nmrAssigment.d.ts +2 -2
- package/lib/assignment/utils/addSolution.d.ts +13 -0
- package/lib/assignment/utils/addSolution.js +29 -0
- package/lib/assignment/utils/addSolution.js.map +1 -0
- package/lib/assignment/utils/{getAssignment → generalAssignment}/buildAssignments.d.ts +13 -27
- package/lib/assignment/utils/{getAssignment → generalAssignment}/buildAssignments.js +15 -15
- package/lib/assignment/utils/generalAssignment/buildAssignments.js.map +1 -0
- package/lib/assignment/utils/{getAssignment → generalAssignment}/checkIDs.js +6 -6
- package/lib/assignment/utils/generalAssignment/checkIDs.js.map +1 -0
- package/lib/assignment/utils/{getAssignment → generalAssignment}/createMapPossibleAssignment.d.ts +3 -7
- package/lib/assignment/utils/{getAssignment → generalAssignment}/createMapPossibleAssignment.js +7 -7
- package/lib/assignment/utils/generalAssignment/createMapPossibleAssignment.js.map +1 -0
- package/lib/assignment/utils/{getAssignment → generalAssignment}/exploreTree.d.ts +1 -1
- package/lib/assignment/utils/{getAssignment → generalAssignment}/exploreTree.js +6 -7
- package/lib/assignment/utils/generalAssignment/exploreTree.js.map +1 -0
- package/lib/assignment/utils/{getAssignment → generalAssignment}/formatData.js +5 -5
- package/lib/assignment/utils/generalAssignment/formatData.js.map +1 -0
- package/lib/assignment/utils/generalAssignment/getIntegrationOfAttachedProtons.js.map +1 -0
- package/lib/assignment/utils/{getAssignment → generalAssignment}/getTargetsAndCorrelations.d.ts +2 -4
- package/lib/assignment/utils/{getAssignment → generalAssignment}/getTargetsAndCorrelations.js +1 -1
- package/lib/assignment/utils/generalAssignment/getTargetsAndCorrelations.js.map +1 -0
- package/lib/assignment/utils/{getAssignment → generalAssignment}/getWorkFlow.d.ts +1 -1
- package/lib/assignment/utils/generalAssignment/getWorkFlow.js.map +1 -0
- package/lib/assignment/utils/{getAssignment → generalAssignment}/groupCarbonTargetByIntegrationZone.js +8 -8
- package/lib/assignment/utils/generalAssignment/groupCarbonTargetByIntegrationZone.js.map +1 -0
- package/lib/assignment/utils/generalAssignment/isSpectraData1D.js.map +1 -0
- package/lib/assignment/utils/{getAssignment → generalAssignment}/partialScore.d.ts +1 -3
- package/lib/assignment/utils/{getAssignment → generalAssignment}/partialScore.js +20 -20
- package/lib/assignment/utils/generalAssignment/partialScore.js.map +1 -0
- package/lib/assignment/utils/generalAssignment/searchIndices.js.map +1 -0
- package/lib/assignment/utils/{buildAssignments.d.ts → oneDimensionalAssignment/buildAssignments.d.ts} +2 -4
- package/lib/assignment/utils/{buildAssignments.js → oneDimensionalAssignment/buildAssignments.js} +4 -4
- package/lib/assignment/utils/oneDimensionalAssignment/buildAssignments.js.map +1 -0
- package/lib/assignment/utils/{createMapPossibleAssignments.d.ts → oneDimensionalAssignment/createMapPossibleAssignments.d.ts} +3 -5
- package/lib/assignment/utils/{createMapPossibleAssignments.js → oneDimensionalAssignment/createMapPossibleAssignments.js} +4 -4
- package/lib/assignment/utils/oneDimensionalAssignment/createMapPossibleAssignments.js.map +1 -0
- package/lib/assignment/utils/{exploreTreeRec.d.ts → oneDimensionalAssignment/exploreTreeRec.d.ts} +1 -1
- package/lib/assignment/utils/{exploreTreeRec.js → oneDimensionalAssignment/exploreTreeRec.js} +7 -8
- package/lib/assignment/utils/oneDimensionalAssignment/exploreTreeRec.js.map +1 -0
- package/lib/assignment/utils/{partialScore.d.ts → oneDimensionalAssignment/partialScore.d.ts} +1 -1
- package/lib/assignment/utils/{partialScore.js → oneDimensionalAssignment/partialScore.js} +9 -9
- package/lib/assignment/utils/oneDimensionalAssignment/partialScore.js.map +1 -0
- package/lib/constants/SignalsKinds.d.ts +2 -2
- package/lib/constants/SignalsKinds.js.map +1 -1
- package/lib/constants/couplingValues.d.ts +1 -3
- package/lib/constants/couplingValues.js.map +1 -1
- package/lib/constants/impurities.d.ts +1509 -6
- package/lib/constants/impurities.js +2 -1
- package/lib/constants/impurities.js.map +1 -1
- package/lib/databases/getDatabase.js +1 -1
- package/lib/databases/getDatabase.js.map +1 -1
- package/lib/datum/Filters.js +4 -0
- package/lib/datum/Filters.js.map +1 -1
- package/lib/datum/FiltersManager.d.ts +1 -1
- package/lib/datum/FiltersManager.js +2 -2
- package/lib/datum/FiltersManager.js.map +1 -1
- package/lib/datum/MatrixOptions.d.ts +2 -2
- package/lib/datum/data1d/Entry1D.d.ts +1 -1
- package/lib/datum/data1d/filter1d/baselineCorrection.js +4 -4
- package/lib/datum/data1d/filter1d/baselineCorrection.js.map +1 -1
- package/lib/datum/data1d/filter1d/digitalFilter.js +2 -2
- package/lib/datum/data1d/filter1d/digitalFilter.js.map +1 -1
- package/lib/datum/data1d/filter1d/fft.js +7 -7
- package/lib/datum/data1d/filter1d/fft.js.map +1 -1
- package/lib/datum/data1d/filter1d/phaseCorrection.js +3 -3
- package/lib/datum/data1d/filter1d/phaseCorrection.js.map +1 -1
- package/lib/datum/data1d/filter1d/signalProcessing.js +1 -1
- package/lib/datum/data1d/filter1d/signalProcessing.js.map +1 -1
- package/lib/datum/data1d/filter1d/utils/padDataToNextPowerOfTwo.js +2 -2
- package/lib/datum/data1d/filter1d/utils/padDataToNextPowerOfTwo.js.map +1 -1
- package/lib/datum/data1d/filter1d/zeroFilling.js +8 -8
- package/lib/datum/data1d/filter1d/zeroFilling.js.map +1 -1
- package/lib/datum/data1d/utils/mapPeaks.js +1 -1
- package/lib/datum/data1d/utils/mapPeaks.js.map +1 -1
- package/lib/datum/data2d/Entry2D.d.ts +1 -1
- package/lib/datum/data2d/filter2d/fftDimension1.d.ts +15 -0
- package/lib/datum/data2d/filter2d/fftDimension1.js +49 -0
- package/lib/datum/data2d/filter2d/fftDimension1.js.map +1 -0
- package/lib/datum/data2d/filter2d/fftDimension2.d.ts +15 -0
- package/lib/datum/data2d/filter2d/fftDimension2.js +60 -0
- package/lib/datum/data2d/filter2d/fftDimension2.js.map +1 -0
- package/lib/datum/data2d/utils/getShift.js +1 -1
- package/lib/datum/data2d/utils/getShift.js.map +1 -1
- package/lib/multiplicity/splitPatterns.js +1 -1
- package/lib/multiplicity/splitPatterns.js.map +1 -1
- package/lib/peaks/peaksFilterImpurities.js +7 -6
- package/lib/peaks/peaksFilterImpurities.js.map +1 -1
- package/lib/peaks/peaksToRanges.js +17 -17
- package/lib/peaks/peaksToRanges.js.map +1 -1
- package/lib/peaks/solventSuppression.js +11 -11
- package/lib/peaks/solventSuppression.js.map +1 -1
- package/lib/peaks/util/addMissingIDs.js.map +1 -1
- package/lib/peaks/util/determineRealTop.js +32 -32
- package/lib/peaks/util/determineRealTop.js.map +1 -1
- package/lib/peaks/util/getKernel.js +4 -4
- package/lib/peaks/util/getKernel.js.map +1 -1
- package/lib/peaks/util/peakOptimizer.js +17 -17
- package/lib/peaks/util/peakOptimizer.js.map +1 -1
- package/lib/peaks/util/setIDs.js.map +1 -1
- package/lib/prediction/dataStructure.d.ts +1 -3
- package/lib/prediction/predictAll.js +2 -1
- package/lib/prediction/predictAll.js.map +1 -1
- package/lib/prediction/predictCOSY.js +1 -1
- package/lib/prediction/predictCOSY.js.map +1 -1
- package/lib/prediction/predictCarbon.js +6 -6
- package/lib/prediction/predictCarbon.js.map +1 -1
- package/lib/prediction/predictHMBC.js +1 -1
- package/lib/prediction/predictHMBC.js.map +1 -1
- package/lib/prediction/predictHSQC.js +1 -1
- package/lib/prediction/predictHSQC.js.map +1 -1
- package/lib/prediction/predictProton.js +9 -9
- package/lib/prediction/predictProton.js.map +1 -1
- package/lib/prediction/utils/getFilteredIDiaIDs.js +3 -3
- package/lib/prediction/utils/getFilteredIDiaIDs.js.map +1 -1
- package/lib/prediction/utils/getNuclei.d.ts +1 -3
- package/lib/prediction/utils/getNuclei.js.map +1 -1
- package/lib/prediction/utils/predict2D.d.ts +1 -3
- package/lib/prediction/utils/predict2D.js +17 -17
- package/lib/prediction/utils/predict2D.js.map +1 -1
- package/lib/prediction/utils/queryByHOSE.js +1 -1
- package/lib/prediction/utils/queryByHOSE.js.map +1 -1
- package/lib/ranges/markSolventSignal.js +8 -8
- package/lib/ranges/markSolventSignal.js.map +1 -1
- package/lib/ranges/rangesToACS.js +6 -6
- package/lib/ranges/rangesToACS.js.map +1 -1
- package/lib/ranges/rangesToXY.js +6 -6
- package/lib/ranges/rangesToXY.js.map +1 -1
- package/lib/signal/signalJoinCouplings.js +9 -9
- package/lib/signal/signalJoinCouplings.js.map +1 -1
- package/lib/signal/signalMultiplicityPattern.js +2 -2
- package/lib/signal/signalMultiplicityPattern.js.map +1 -1
- package/lib/signals/addDummySignals.js +4 -4
- package/lib/signals/addDummySignals.js.map +1 -1
- package/lib/signals/hackSignalsToXY.js +1 -1
- package/lib/signals/hackSignalsToXY.js.map +1 -1
- package/lib/signals/optimization/getInternalSignals.js +6 -6
- package/lib/signals/optimization/getInternalSignals.js.map +1 -1
- package/lib/signals/optimization/getSumOfShapes.js +1 -1
- package/lib/signals/optimization/getSumOfShapes.js.map +1 -1
- package/lib/signals/optimizeSignals.js +3 -3
- package/lib/signals/optimizeSignals.js.map +1 -1
- package/lib/signals/signals2DToZ.js +3 -2
- package/lib/signals/signals2DToZ.js.map +1 -1
- package/lib/signals/signalsJoin.js +5 -5
- package/lib/signals/signalsJoin.js.map +1 -1
- package/lib/signals/signalsToFID.js +1 -1
- package/lib/signals/signalsToFID.js.map +1 -1
- package/lib/signals/signalsToRanges.js +3 -3
- package/lib/signals/signalsToRanges.js.map +1 -1
- package/lib/signals/signalsToXY.js +3 -3
- package/lib/signals/signalsToXY.js.map +1 -1
- package/lib/signals/simulation/signalsToSpinSystem.js +2 -2
- package/lib/signals/simulation/signalsToSpinSystem.js.map +1 -1
- package/lib/signals/simulation/simulate1D.js +2 -2
- package/lib/signals/simulation/simulate1D.js.map +1 -1
- package/lib/signals/simulation/simulateXYPeaks.js +15 -17
- package/lib/signals/simulation/simulateXYPeaks.js.map +1 -1
- package/lib/signals/simulation/splitSpinSystem.js +26 -23
- package/lib/signals/simulation/splitSpinSystem.js.map +1 -1
- package/lib/signals/utils/jAnalyzer.js +38 -38
- package/lib/signals/utils/jAnalyzer.js.map +1 -1
- package/lib/types/Integrals.d.ts +1 -1
- package/lib/types/Peaks/Peaks.d.ts +1 -1
- package/lib/types/Ranges/Ranges.d.ts +1 -1
- package/lib/types/Zones/Zone.d.ts +1 -1
- package/lib/types/Zones/Zones.d.ts +1 -1
- package/lib/utilities/getFrequency.js +1 -1
- package/lib/utilities/getFrequency.js.map +1 -1
- package/lib/utilities/resurrectRange.js +1 -1
- package/lib/utilities/resurrectRange.js.map +1 -1
- package/lib/xy/xyAutoPeaksPicking.js +3 -3
- package/lib/xy/xyAutoPeaksPicking.js.map +1 -1
- package/lib/xyz/quadrature.js +6 -6
- package/lib/xyz/quadrature.js.map +1 -1
- package/lib/xyz/util/fft2d/digitalFilter.js +3 -3
- package/lib/xyz/util/fft2d/digitalFilter.js.map +1 -1
- package/lib/xyz/util/fft2d/fftDirectDimension.d.ts +1 -1
- package/lib/xyz/util/fft2d/fftDirectDimension.js +4 -3
- package/lib/xyz/util/fft2d/fftDirectDimension.js.map +1 -1
- package/lib/xyz/util/fft2d/fftIndirectDimension.js +5 -4
- package/lib/xyz/util/fft2d/fftIndirectDimension.js.map +1 -1
- package/lib/xyz/util/fft2d/removeDCOffset.js +1 -1
- package/lib/xyz/util/fft2d/removeDCOffset.js.map +1 -1
- package/lib/xyz/util/fft2d/zeroFilling.js +4 -6
- package/lib/xyz/util/fft2d/zeroFilling.js.map +1 -1
- package/lib/xyz/util/formatZone.js +3 -3
- package/lib/xyz/util/formatZone.js.map +1 -1
- package/lib/xyz/util/getMinMaxXY.d.ts +6 -0
- package/lib/xyz/util/getMinMaxXY.js +23 -0
- package/lib/xyz/util/getMinMaxXY.js.map +1 -0
- package/lib/xyz/util/padData.js +7 -7
- package/lib/xyz/util/padData.js.map +1 -1
- package/lib/xyz/xyzAutoSignalsPicking.js +19 -18
- package/lib/xyz/xyzAutoSignalsPicking.js.map +1 -1
- package/lib/xyz/xyzBidimensionalFFT.js +2 -19
- package/lib/xyz/xyzBidimensionalFFT.js.map +1 -1
- package/lib/xyz/xyzJResAnalyzer.js +21 -21
- package/lib/xyz/xyzJResAnalyzer.js.map +1 -1
- package/lib-esm/apodization/compose.js +1 -1
- package/lib-esm/apodization/compose.js.map +1 -1
- package/lib-esm/assignment/get13CAssignments.js +3 -3
- package/lib-esm/assignment/get13CAssignments.js.map +1 -1
- package/lib-esm/assignment/get1HAssignments.js +3 -3
- package/lib-esm/assignment/get1HAssignments.js.map +1 -1
- package/lib-esm/assignment/getAssignments.js +5 -5
- package/lib-esm/assignment/getAssignments.js.map +1 -1
- package/lib-esm/assignment/utils/addSolution.js +25 -0
- package/lib-esm/assignment/utils/addSolution.js.map +1 -0
- package/lib-esm/assignment/utils/{getAssignment → generalAssignment}/buildAssignments.js +15 -15
- package/lib-esm/assignment/utils/generalAssignment/buildAssignments.js.map +1 -0
- package/lib-esm/assignment/utils/{getAssignment → generalAssignment}/checkIDs.js +6 -6
- package/lib-esm/assignment/utils/generalAssignment/checkIDs.js.map +1 -0
- package/lib-esm/assignment/utils/{getAssignment → generalAssignment}/createMapPossibleAssignment.js +7 -7
- package/lib-esm/assignment/utils/generalAssignment/createMapPossibleAssignment.js.map +1 -0
- package/lib-esm/assignment/utils/{getAssignment → generalAssignment}/exploreTree.js +6 -7
- package/lib-esm/assignment/utils/generalAssignment/exploreTree.js.map +1 -0
- package/lib-esm/assignment/utils/{getAssignment → generalAssignment}/formatData.js +5 -5
- package/lib-esm/assignment/utils/generalAssignment/formatData.js.map +1 -0
- package/lib-esm/assignment/utils/generalAssignment/getIntegrationOfAttachedProtons.js.map +1 -0
- package/lib-esm/assignment/utils/{getAssignment → generalAssignment}/getTargetsAndCorrelations.js +1 -1
- package/lib-esm/assignment/utils/generalAssignment/getTargetsAndCorrelations.js.map +1 -0
- package/lib-esm/assignment/utils/generalAssignment/getWorkFlow.js.map +1 -0
- package/lib-esm/assignment/utils/{getAssignment → generalAssignment}/groupCarbonTargetByIntegrationZone.js +8 -8
- package/lib-esm/assignment/utils/generalAssignment/groupCarbonTargetByIntegrationZone.js.map +1 -0
- package/lib-esm/assignment/utils/generalAssignment/isSpectraData1D.js.map +1 -0
- package/lib-esm/assignment/utils/{getAssignment → generalAssignment}/partialScore.js +20 -20
- package/lib-esm/assignment/utils/generalAssignment/partialScore.js.map +1 -0
- package/lib-esm/assignment/utils/generalAssignment/searchIndices.js.map +1 -0
- package/lib-esm/assignment/utils/{buildAssignments.js → oneDimensionalAssignment/buildAssignments.js} +4 -4
- package/lib-esm/assignment/utils/oneDimensionalAssignment/buildAssignments.js.map +1 -0
- package/lib-esm/assignment/utils/{createMapPossibleAssignments.js → oneDimensionalAssignment/createMapPossibleAssignments.js} +4 -4
- package/lib-esm/assignment/utils/oneDimensionalAssignment/createMapPossibleAssignments.js.map +1 -0
- package/lib-esm/assignment/utils/{exploreTreeRec.js → oneDimensionalAssignment/exploreTreeRec.js} +7 -8
- package/lib-esm/assignment/utils/oneDimensionalAssignment/exploreTreeRec.js.map +1 -0
- package/lib-esm/assignment/utils/{partialScore.js → oneDimensionalAssignment/partialScore.js} +9 -9
- package/lib-esm/assignment/utils/oneDimensionalAssignment/partialScore.js.map +1 -0
- package/lib-esm/constants/SignalsKinds.js.map +1 -1
- package/lib-esm/constants/couplingValues.js.map +1 -1
- package/lib-esm/constants/impurities.js +2 -1
- package/lib-esm/constants/impurities.js.map +1 -1
- package/lib-esm/databases/getDatabase.js +1 -1
- package/lib-esm/databases/getDatabase.js.map +1 -1
- package/lib-esm/datum/Filters.js +4 -0
- package/lib-esm/datum/Filters.js.map +1 -1
- package/lib-esm/datum/FiltersManager.js +2 -2
- package/lib-esm/datum/FiltersManager.js.map +1 -1
- package/lib-esm/datum/data1d/filter1d/baselineCorrection.js +4 -4
- package/lib-esm/datum/data1d/filter1d/baselineCorrection.js.map +1 -1
- package/lib-esm/datum/data1d/filter1d/digitalFilter.js +2 -2
- package/lib-esm/datum/data1d/filter1d/digitalFilter.js.map +1 -1
- package/lib-esm/datum/data1d/filter1d/fft.js +7 -7
- package/lib-esm/datum/data1d/filter1d/fft.js.map +1 -1
- package/lib-esm/datum/data1d/filter1d/phaseCorrection.js +3 -3
- package/lib-esm/datum/data1d/filter1d/phaseCorrection.js.map +1 -1
- package/lib-esm/datum/data1d/filter1d/signalProcessing.js +1 -1
- package/lib-esm/datum/data1d/filter1d/signalProcessing.js.map +1 -1
- package/lib-esm/datum/data1d/filter1d/utils/padDataToNextPowerOfTwo.js +2 -2
- package/lib-esm/datum/data1d/filter1d/utils/padDataToNextPowerOfTwo.js.map +1 -1
- package/lib-esm/datum/data1d/filter1d/zeroFilling.js +8 -8
- package/lib-esm/datum/data1d/filter1d/zeroFilling.js.map +1 -1
- package/lib-esm/datum/data1d/utils/mapPeaks.js +1 -1
- package/lib-esm/datum/data1d/utils/mapPeaks.js.map +1 -1
- package/lib-esm/datum/data2d/filter2d/fftDimension1.js +43 -0
- package/lib-esm/datum/data2d/filter2d/fftDimension1.js.map +1 -0
- package/lib-esm/datum/data2d/filter2d/fftDimension2.js +54 -0
- package/lib-esm/datum/data2d/filter2d/fftDimension2.js.map +1 -0
- package/lib-esm/datum/data2d/utils/getShift.js +1 -1
- package/lib-esm/datum/data2d/utils/getShift.js.map +1 -1
- package/lib-esm/multiplicity/splitPatterns.js +1 -1
- package/lib-esm/multiplicity/splitPatterns.js.map +1 -1
- package/lib-esm/peaks/peaksFilterImpurities.js +7 -6
- package/lib-esm/peaks/peaksFilterImpurities.js.map +1 -1
- package/lib-esm/peaks/peaksToRanges.js +17 -17
- package/lib-esm/peaks/peaksToRanges.js.map +1 -1
- package/lib-esm/peaks/solventSuppression.js +11 -11
- package/lib-esm/peaks/solventSuppression.js.map +1 -1
- package/lib-esm/peaks/util/addMissingIDs.js.map +1 -1
- package/lib-esm/peaks/util/determineRealTop.js +32 -32
- package/lib-esm/peaks/util/determineRealTop.js.map +1 -1
- package/lib-esm/peaks/util/getKernel.js +4 -4
- package/lib-esm/peaks/util/getKernel.js.map +1 -1
- package/lib-esm/peaks/util/peakOptimizer.js +17 -17
- package/lib-esm/peaks/util/peakOptimizer.js.map +1 -1
- package/lib-esm/peaks/util/setIDs.js.map +1 -1
- package/lib-esm/prediction/predictAll.js +2 -1
- package/lib-esm/prediction/predictAll.js.map +1 -1
- package/lib-esm/prediction/predictCOSY.js +1 -1
- package/lib-esm/prediction/predictCOSY.js.map +1 -1
- package/lib-esm/prediction/predictCarbon.js +6 -6
- package/lib-esm/prediction/predictCarbon.js.map +1 -1
- package/lib-esm/prediction/predictHMBC.js +1 -1
- package/lib-esm/prediction/predictHMBC.js.map +1 -1
- package/lib-esm/prediction/predictHSQC.js +1 -1
- package/lib-esm/prediction/predictHSQC.js.map +1 -1
- package/lib-esm/prediction/predictProton.js +9 -9
- package/lib-esm/prediction/predictProton.js.map +1 -1
- package/lib-esm/prediction/utils/getFilteredIDiaIDs.js +3 -3
- package/lib-esm/prediction/utils/getFilteredIDiaIDs.js.map +1 -1
- package/lib-esm/prediction/utils/getNuclei.js.map +1 -1
- package/lib-esm/prediction/utils/predict2D.js +17 -17
- package/lib-esm/prediction/utils/predict2D.js.map +1 -1
- package/lib-esm/prediction/utils/queryByHOSE.js +1 -1
- package/lib-esm/prediction/utils/queryByHOSE.js.map +1 -1
- package/lib-esm/ranges/markSolventSignal.js +8 -8
- package/lib-esm/ranges/markSolventSignal.js.map +1 -1
- package/lib-esm/ranges/rangesToACS.js +6 -6
- package/lib-esm/ranges/rangesToACS.js.map +1 -1
- package/lib-esm/ranges/rangesToXY.js +6 -6
- package/lib-esm/ranges/rangesToXY.js.map +1 -1
- package/lib-esm/signal/signalJoinCouplings.js +9 -9
- package/lib-esm/signal/signalJoinCouplings.js.map +1 -1
- package/lib-esm/signal/signalMultiplicityPattern.js +2 -2
- package/lib-esm/signal/signalMultiplicityPattern.js.map +1 -1
- package/lib-esm/signals/addDummySignals.js +4 -4
- package/lib-esm/signals/addDummySignals.js.map +1 -1
- package/lib-esm/signals/hackSignalsToXY.js +1 -1
- package/lib-esm/signals/hackSignalsToXY.js.map +1 -1
- package/lib-esm/signals/optimization/getInternalSignals.js +6 -6
- package/lib-esm/signals/optimization/getInternalSignals.js.map +1 -1
- package/lib-esm/signals/optimization/getSumOfShapes.js +1 -1
- package/lib-esm/signals/optimization/getSumOfShapes.js.map +1 -1
- package/lib-esm/signals/optimizeSignals.js +3 -3
- package/lib-esm/signals/optimizeSignals.js.map +1 -1
- package/lib-esm/signals/signals2DToZ.js +3 -2
- package/lib-esm/signals/signals2DToZ.js.map +1 -1
- package/lib-esm/signals/signalsJoin.js +5 -5
- package/lib-esm/signals/signalsJoin.js.map +1 -1
- package/lib-esm/signals/signalsToFID.js +1 -1
- package/lib-esm/signals/signalsToFID.js.map +1 -1
- package/lib-esm/signals/signalsToRanges.js +3 -3
- package/lib-esm/signals/signalsToRanges.js.map +1 -1
- package/lib-esm/signals/signalsToXY.js +3 -3
- package/lib-esm/signals/signalsToXY.js.map +1 -1
- package/lib-esm/signals/simulation/signalsToSpinSystem.js +2 -2
- package/lib-esm/signals/simulation/signalsToSpinSystem.js.map +1 -1
- package/lib-esm/signals/simulation/simulate1D.js +2 -2
- package/lib-esm/signals/simulation/simulate1D.js.map +1 -1
- package/lib-esm/signals/simulation/simulateXYPeaks.js +15 -17
- package/lib-esm/signals/simulation/simulateXYPeaks.js.map +1 -1
- package/lib-esm/signals/simulation/splitSpinSystem.js +26 -23
- package/lib-esm/signals/simulation/splitSpinSystem.js.map +1 -1
- package/lib-esm/signals/utils/jAnalyzer.js +38 -38
- package/lib-esm/signals/utils/jAnalyzer.js.map +1 -1
- package/lib-esm/utilities/getFrequency.js +1 -1
- package/lib-esm/utilities/getFrequency.js.map +1 -1
- package/lib-esm/utilities/resurrectRange.js +1 -1
- package/lib-esm/utilities/resurrectRange.js.map +1 -1
- package/lib-esm/xy/xyAutoPeaksPicking.js +3 -3
- package/lib-esm/xy/xyAutoPeaksPicking.js.map +1 -1
- package/lib-esm/xyz/quadrature.js +6 -6
- package/lib-esm/xyz/quadrature.js.map +1 -1
- package/lib-esm/xyz/util/fft2d/digitalFilter.js +3 -3
- package/lib-esm/xyz/util/fft2d/digitalFilter.js.map +1 -1
- package/lib-esm/xyz/util/fft2d/fftDirectDimension.js +4 -3
- package/lib-esm/xyz/util/fft2d/fftDirectDimension.js.map +1 -1
- package/lib-esm/xyz/util/fft2d/fftIndirectDimension.js +5 -4
- package/lib-esm/xyz/util/fft2d/fftIndirectDimension.js.map +1 -1
- package/lib-esm/xyz/util/fft2d/removeDCOffset.js +1 -1
- package/lib-esm/xyz/util/fft2d/removeDCOffset.js.map +1 -1
- package/lib-esm/xyz/util/fft2d/zeroFilling.js +4 -6
- package/lib-esm/xyz/util/fft2d/zeroFilling.js.map +1 -1
- package/lib-esm/xyz/util/formatZone.js +3 -3
- package/lib-esm/xyz/util/formatZone.js.map +1 -1
- package/lib-esm/xyz/util/getMinMaxXY.js +19 -0
- package/lib-esm/xyz/util/getMinMaxXY.js.map +1 -0
- package/lib-esm/xyz/util/padData.js +7 -7
- package/lib-esm/xyz/util/padData.js.map +1 -1
- package/lib-esm/xyz/xyzAutoSignalsPicking.js +19 -18
- package/lib-esm/xyz/xyzAutoSignalsPicking.js.map +1 -1
- package/lib-esm/xyz/xyzBidimensionalFFT.js +1 -18
- package/lib-esm/xyz/xyzBidimensionalFFT.js.map +1 -1
- package/lib-esm/xyz/xyzJResAnalyzer.js +21 -21
- package/lib-esm/xyz/xyzJResAnalyzer.js.map +1 -1
- package/package.json +4 -4
- package/src/apodization/compose.ts +1 -1
- package/src/assignment/get13CAssignments.ts +6 -3
- package/src/assignment/get1HAssignments.ts +7 -6
- package/src/assignment/getAssignments.ts +7 -7
- package/src/assignment/nmrAssigment.ts +2 -2
- package/src/assignment/utils/addSolution.ts +45 -0
- package/src/assignment/utils/{getAssignment → generalAssignment}/buildAssignments.ts +29 -36
- package/src/assignment/utils/{getAssignment → generalAssignment}/checkIDs.ts +6 -6
- package/src/assignment/utils/{getAssignment → generalAssignment}/createMapPossibleAssignment.ts +10 -14
- package/src/assignment/utils/{getAssignment → generalAssignment}/exploreTree.ts +7 -8
- package/src/assignment/utils/{getAssignment → generalAssignment}/formatData.ts +5 -5
- package/src/assignment/utils/{getAssignment → generalAssignment}/getTargetsAndCorrelations.ts +3 -5
- package/src/assignment/utils/{getAssignment → generalAssignment}/getWorkFlow.ts +2 -5
- package/src/assignment/utils/{getAssignment → generalAssignment}/groupCarbonTargetByIntegrationZone.ts +8 -8
- package/src/assignment/utils/{getAssignment → generalAssignment}/partialScore.ts +25 -29
- package/src/assignment/utils/{buildAssignments.ts → oneDimensionalAssignment/buildAssignments.ts} +6 -8
- package/src/assignment/utils/{createMapPossibleAssignments.ts → oneDimensionalAssignment/createMapPossibleAssignments.ts} +9 -9
- package/src/assignment/utils/{exploreTreeRec.ts → oneDimensionalAssignment/exploreTreeRec.ts} +8 -9
- package/src/assignment/utils/{partialScore.ts → oneDimensionalAssignment/partialScore.ts} +10 -12
- package/src/constants/SignalsKinds.ts +1 -1
- package/src/constants/couplingValues.ts +1 -1
- package/src/constants/impurities.ts +14 -15
- package/src/databases/getDatabase.ts +1 -1
- package/src/datum/Filters.ts +4 -0
- package/src/datum/FiltersManager.ts +3 -3
- package/src/datum/MatrixOptions.ts +1 -1
- package/src/datum/data1d/Entry1D.ts +1 -1
- package/src/datum/data1d/filter1d/baselineCorrection.ts +4 -4
- package/src/datum/data1d/filter1d/digitalFilter.ts +2 -2
- package/src/datum/data1d/filter1d/fft.ts +7 -7
- package/src/datum/data1d/filter1d/phaseCorrection.ts +3 -3
- package/src/datum/data1d/filter1d/signalProcessing.ts +1 -1
- package/src/datum/data1d/filter1d/utils/padDataToNextPowerOfTwo.ts +2 -2
- package/src/datum/data1d/filter1d/zeroFilling.ts +10 -9
- package/src/datum/data1d/utils/mapPeaks.ts +1 -1
- package/src/datum/data2d/Entry2D.ts +1 -1
- package/src/datum/data2d/filter2d/fftDimension1.ts +61 -0
- package/src/datum/data2d/filter2d/fftDimension2.ts +72 -0
- package/src/datum/data2d/utils/getShift.ts +1 -1
- package/src/ml-tree-set.d.ts +1 -1
- package/src/multiplicity/splitPatterns.ts +1 -1
- package/src/peaks/peaksFilterImpurities.ts +7 -6
- package/src/peaks/peaksToRanges.ts +19 -18
- package/src/peaks/solventSuppression.ts +11 -11
- package/src/peaks/util/addMissingIDs.ts +1 -1
- package/src/peaks/util/determineRealTop.ts +32 -32
- package/src/peaks/util/getKernel.ts +4 -4
- package/src/peaks/util/peakOptimizer.ts +17 -17
- package/src/peaks/util/setIDs.ts +6 -4
- package/src/prediction/dataStructure.ts +1 -3
- package/src/prediction/predictAll.ts +3 -2
- package/src/prediction/predictCOSY.ts +1 -1
- package/src/prediction/predictCarbon.ts +6 -6
- package/src/prediction/predictHMBC.ts +1 -1
- package/src/prediction/predictHSQC.ts +1 -1
- package/src/prediction/predictProton.ts +9 -9
- package/src/prediction/utils/getFilteredIDiaIDs.ts +3 -3
- package/src/prediction/utils/getNuclei.ts +2 -2
- package/src/prediction/utils/predict2D.ts +21 -25
- package/src/prediction/utils/queryByHOSE.ts +1 -1
- package/src/ranges/markSolventSignal.ts +8 -8
- package/src/ranges/rangesToACS.ts +6 -6
- package/src/ranges/rangesToXY.ts +6 -6
- package/src/signal/signalJoinCouplings.ts +9 -9
- package/src/signal/signalMultiplicityPattern.ts +2 -2
- package/src/signals/addDummySignals.ts +4 -4
- package/src/signals/hackSignalsToXY.ts +1 -1
- package/src/signals/optimization/getInternalSignals.ts +6 -6
- package/src/signals/optimization/getSumOfShapes.ts +1 -1
- package/src/signals/optimizeSignals.ts +3 -3
- package/src/signals/signals2DToZ.ts +4 -8
- package/src/signals/signalsJoin.ts +5 -5
- package/src/signals/signalsToFID.ts +1 -1
- package/src/signals/signalsToRanges.ts +3 -3
- package/src/signals/signalsToXY.ts +3 -3
- package/src/signals/simulation/signalsToSpinSystem.ts +3 -5
- package/src/signals/simulation/simulate1D.ts +2 -2
- package/src/signals/simulation/simulateXYPeaks.ts +16 -17
- package/src/signals/simulation/splitSpinSystem.ts +28 -25
- package/src/signals/utils/jAnalyzer.ts +38 -38
- package/src/types/Integrals.ts +1 -1
- package/src/types/Peaks/Peaks.ts +1 -1
- package/src/types/Ranges/Ranges.ts +1 -1
- package/src/types/Zones/Zone.ts +1 -1
- package/src/types/Zones/Zones.ts +1 -1
- package/src/utilities/getFrequency.ts +1 -1
- package/src/utilities/resurrectRange.ts +1 -1
- package/src/xy/xyAutoPeaksPicking.ts +3 -3
- package/src/xyz/quadrature.ts +6 -6
- package/src/xyz/util/fft2d/digitalFilter.ts +3 -3
- package/src/xyz/util/fft2d/fftDirectDimension.ts +4 -7
- package/src/xyz/util/fft2d/fftIndirectDimension.ts +6 -8
- package/src/xyz/util/fft2d/removeDCOffset.ts +1 -1
- package/src/xyz/util/fft2d/zeroFilling.ts +5 -6
- package/src/xyz/util/formatZone.ts +3 -3
- package/src/xyz/util/getMinMaxXY.ts +19 -0
- package/src/xyz/util/padData.ts +7 -7
- package/src/xyz/xyzAutoSignalsPicking.ts +20 -19
- package/src/xyz/xyzBidimensionalFFT.ts +1 -20
- package/src/xyz/xyzJResAnalyzer.ts +21 -21
- package/lib/assignment/utils/buildAssignments.js.map +0 -1
- package/lib/assignment/utils/createMapPossibleAssignments.js.map +0 -1
- package/lib/assignment/utils/exploreTreeRec.js.map +0 -1
- package/lib/assignment/utils/getAssignment/buildAssignments.js.map +0 -1
- package/lib/assignment/utils/getAssignment/checkIDs.js.map +0 -1
- package/lib/assignment/utils/getAssignment/createMapPossibleAssignment.js.map +0 -1
- package/lib/assignment/utils/getAssignment/exploreTree.js.map +0 -1
- package/lib/assignment/utils/getAssignment/formatData.js.map +0 -1
- package/lib/assignment/utils/getAssignment/getIntegrationOfAttachedProtons.js.map +0 -1
- package/lib/assignment/utils/getAssignment/getTargetsAndCorrelations.js.map +0 -1
- package/lib/assignment/utils/getAssignment/getWorkFlow.js.map +0 -1
- package/lib/assignment/utils/getAssignment/groupCarbonTargetByIntegrationZone.js.map +0 -1
- package/lib/assignment/utils/getAssignment/isSpectraData1D.js.map +0 -1
- package/lib/assignment/utils/getAssignment/partialScore.js.map +0 -1
- package/lib/assignment/utils/getAssignment/searchIndices.js.map +0 -1
- package/lib/assignment/utils/partialScore.js.map +0 -1
- package/lib-esm/assignment/utils/buildAssignments.js.map +0 -1
- package/lib-esm/assignment/utils/createMapPossibleAssignments.js.map +0 -1
- package/lib-esm/assignment/utils/exploreTreeRec.js.map +0 -1
- package/lib-esm/assignment/utils/getAssignment/buildAssignments.js.map +0 -1
- package/lib-esm/assignment/utils/getAssignment/checkIDs.js.map +0 -1
- package/lib-esm/assignment/utils/getAssignment/createMapPossibleAssignment.js.map +0 -1
- package/lib-esm/assignment/utils/getAssignment/exploreTree.js.map +0 -1
- package/lib-esm/assignment/utils/getAssignment/formatData.js.map +0 -1
- package/lib-esm/assignment/utils/getAssignment/getIntegrationOfAttachedProtons.js.map +0 -1
- package/lib-esm/assignment/utils/getAssignment/getTargetsAndCorrelations.js.map +0 -1
- package/lib-esm/assignment/utils/getAssignment/getWorkFlow.js.map +0 -1
- package/lib-esm/assignment/utils/getAssignment/groupCarbonTargetByIntegrationZone.js.map +0 -1
- package/lib-esm/assignment/utils/getAssignment/isSpectraData1D.js.map +0 -1
- package/lib-esm/assignment/utils/getAssignment/partialScore.js.map +0 -1
- package/lib-esm/assignment/utils/getAssignment/searchIndices.js.map +0 -1
- package/lib-esm/assignment/utils/partialScore.js.map +0 -1
- /package/lib/assignment/utils/{getAssignment → generalAssignment}/checkIDs.d.ts +0 -0
- /package/lib/assignment/utils/{getAssignment → generalAssignment}/formatData.d.ts +0 -0
- /package/lib/assignment/utils/{getAssignment → generalAssignment}/getIntegrationOfAttachedProtons.d.ts +0 -0
- /package/lib/assignment/utils/{getAssignment → generalAssignment}/getIntegrationOfAttachedProtons.js +0 -0
- /package/lib/assignment/utils/{getAssignment → generalAssignment}/getWorkFlow.js +0 -0
- /package/lib/assignment/utils/{getAssignment → generalAssignment}/groupCarbonTargetByIntegrationZone.d.ts +0 -0
- /package/lib/assignment/utils/{getAssignment → generalAssignment}/isSpectraData1D.d.ts +0 -0
- /package/lib/assignment/utils/{getAssignment → generalAssignment}/isSpectraData1D.js +0 -0
- /package/lib/assignment/utils/{getAssignment → generalAssignment}/searchIndices.d.ts +0 -0
- /package/lib/assignment/utils/{getAssignment → generalAssignment}/searchIndices.js +0 -0
- /package/lib-esm/assignment/utils/{getAssignment → generalAssignment}/getIntegrationOfAttachedProtons.js +0 -0
- /package/lib-esm/assignment/utils/{getAssignment → generalAssignment}/getWorkFlow.js +0 -0
- /package/lib-esm/assignment/utils/{getAssignment → generalAssignment}/isSpectraData1D.js +0 -0
- /package/lib-esm/assignment/utils/{getAssignment → generalAssignment}/searchIndices.js +0 -0
- /package/src/assignment/utils/{getAssignment → generalAssignment}/getIntegrationOfAttachedProtons.ts +0 -0
- /package/src/assignment/utils/{getAssignment → generalAssignment}/isSpectraData1D.ts +0 -0
- /package/src/assignment/utils/{getAssignment → generalAssignment}/searchIndices.ts +0 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Predictions1Dassignments,
|
|
3
|
+
StoreAssignments,
|
|
4
|
+
} from './oneDimensionalAssignment/buildAssignments';
|
|
5
|
+
|
|
6
|
+
export interface SolutionAssignment {
|
|
7
|
+
assignment: string[];
|
|
8
|
+
score: number;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
interface AddSolutionProps {
|
|
12
|
+
score: number;
|
|
13
|
+
maxSolutions: number;
|
|
14
|
+
partial: Array<string | null>;
|
|
15
|
+
predictions: Predictions1Dassignments;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export function addSolution(store: StoreAssignments, props: AddSolutionProps) {
|
|
19
|
+
const { score, maxSolutions, partial, predictions } = props;
|
|
20
|
+
store.nSolutions++;
|
|
21
|
+
const solution: SolutionAssignment = {
|
|
22
|
+
assignment: JSON.parse(JSON.stringify(partial)),
|
|
23
|
+
score: score / doubleAssignmentPenalty(partial, predictions),
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
if (store.nSolutions >= maxSolutions) {
|
|
27
|
+
if (solution.score > store.solutions.last().score) {
|
|
28
|
+
store.solutions.pollLast();
|
|
29
|
+
store.solutions.add(solution);
|
|
30
|
+
}
|
|
31
|
+
} else {
|
|
32
|
+
store.solutions.add(solution);
|
|
33
|
+
store.nSolutions++;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function doubleAssignmentPenalty(
|
|
38
|
+
partial: Array<string | null>,
|
|
39
|
+
predictions: Predictions1Dassignments,
|
|
40
|
+
) {
|
|
41
|
+
const nbSources = Object.keys(predictions).length;
|
|
42
|
+
const assignments = new Set(partial);
|
|
43
|
+
const nbDoubleAssignment = nbSources - assignments.size;
|
|
44
|
+
return nbDoubleAssignment > 0 ? 2 * nbDoubleAssignment : 1;
|
|
45
|
+
}
|
|
@@ -12,7 +12,7 @@ import { predictCarbon } from '../../../prediction/predictCarbon';
|
|
|
12
12
|
import { predictProton } from '../../../prediction/predictProton';
|
|
13
13
|
import { MakeMandatory } from '../../../utilities/MakeMandatory';
|
|
14
14
|
import { SpectraDataWithIds } from '../../nmrAssigment';
|
|
15
|
-
import { StoreAssignments } from '../buildAssignments';
|
|
15
|
+
import { StoreAssignments } from '../oneDimensionalAssignment/buildAssignments';
|
|
16
16
|
|
|
17
17
|
import {
|
|
18
18
|
createMapPossibleAssignment,
|
|
@@ -30,18 +30,14 @@ const comparator = (a: AssignmentSolution, b: AssignmentSolution) => {
|
|
|
30
30
|
const predictor = { H: predictProton, C: predictCarbon };
|
|
31
31
|
|
|
32
32
|
export type AtomTypes = 'H' | 'C';
|
|
33
|
-
export type CurrentAtoms =
|
|
34
|
-
export
|
|
35
|
-
[key: string]: Array<string | null>;
|
|
36
|
-
}
|
|
33
|
+
export type CurrentAtoms = AtomTypes[];
|
|
34
|
+
export type Partial = Record<string, Array<string | null>>;
|
|
37
35
|
|
|
38
|
-
export
|
|
39
|
-
[key: string]: string[];
|
|
40
|
-
}
|
|
36
|
+
export type DiaIDPeerPossibleAssignment = Record<string, string[]>;
|
|
41
37
|
|
|
42
38
|
export interface RestrictionByCS {
|
|
43
39
|
chemicalShiftRestriction: boolean;
|
|
44
|
-
tolerance:
|
|
40
|
+
tolerance: Record<string, number>;
|
|
45
41
|
useChemicalShiftScore: boolean;
|
|
46
42
|
}
|
|
47
43
|
|
|
@@ -51,10 +47,10 @@ export interface BuildAssignmentInput {
|
|
|
51
47
|
restrictionByCS: RestrictionByCS;
|
|
52
48
|
timeout: number;
|
|
53
49
|
minScore: number;
|
|
54
|
-
nbAllowedUnAssigned?:
|
|
50
|
+
nbAllowedUnAssigned?: Record<string, number>;
|
|
55
51
|
maxSolutions: number;
|
|
56
52
|
correlations: Values;
|
|
57
|
-
assignmentOrder:
|
|
53
|
+
assignmentOrder: AtomTypes[][];
|
|
58
54
|
predictions: {
|
|
59
55
|
H?: NMRSignal1D[];
|
|
60
56
|
C?: NMRSignal1D[];
|
|
@@ -80,7 +76,7 @@ function checkNMRSignal1D(
|
|
|
80
76
|
'atoms',
|
|
81
77
|
];
|
|
82
78
|
for (const signal of signals) {
|
|
83
|
-
for (
|
|
79
|
+
for (const key of keys) {
|
|
84
80
|
if (!signal[key]) throw new Error(`property ${key} does not exist`);
|
|
85
81
|
}
|
|
86
82
|
}
|
|
@@ -93,21 +89,18 @@ export interface Prediction extends NMRSignal1DFromPrediction {
|
|
|
93
89
|
pathLength: number[];
|
|
94
90
|
}
|
|
95
91
|
|
|
96
|
-
export
|
|
97
|
-
[key: string]: Prediction;
|
|
98
|
-
}
|
|
92
|
+
export type Predictions = Record<string, Prediction>;
|
|
99
93
|
|
|
100
|
-
export
|
|
101
|
-
[key: string]: Predictions;
|
|
102
|
-
}
|
|
94
|
+
export type PredictionsByAtomType = Record<string, Predictions>;
|
|
103
95
|
|
|
104
|
-
export
|
|
105
|
-
|
|
96
|
+
export type InfoByAtomType = Record<
|
|
97
|
+
string,
|
|
98
|
+
{
|
|
106
99
|
nSources: number;
|
|
107
100
|
currentIndex: number;
|
|
108
101
|
nbAllowedUnAssigned: number;
|
|
109
|
-
}
|
|
110
|
-
|
|
102
|
+
}
|
|
103
|
+
>;
|
|
111
104
|
|
|
112
105
|
export const getAllHydrogens = {
|
|
113
106
|
C: (m: Molecule, i: number) => m.getAllHydrogens(i),
|
|
@@ -130,7 +123,7 @@ export async function buildAssignments(props: BuildAssignmentInput) {
|
|
|
130
123
|
targets,
|
|
131
124
|
} = props;
|
|
132
125
|
|
|
133
|
-
|
|
126
|
+
const lowerBoundScore = minScore;
|
|
134
127
|
|
|
135
128
|
let store: StoreAssignments = {
|
|
136
129
|
solutions: new TreeSet(comparator),
|
|
@@ -141,7 +134,7 @@ export async function buildAssignments(props: BuildAssignmentInput) {
|
|
|
141
134
|
pathLength: true,
|
|
142
135
|
});
|
|
143
136
|
|
|
144
|
-
|
|
137
|
+
const infoByAtomType: InfoByAtomType = {};
|
|
145
138
|
const predictions: PredictionsByAtomType = {};
|
|
146
139
|
let possibleAssignmentMap: MapPossibleAssignments = {};
|
|
147
140
|
let diaIDPeerPossibleAssignment: DiaIDPeerPossibleAssignment = {};
|
|
@@ -150,7 +143,7 @@ export async function buildAssignments(props: BuildAssignmentInput) {
|
|
|
150
143
|
for (const atomType of atomTypesToPredict) {
|
|
151
144
|
const options = predictionOptions[atomType];
|
|
152
145
|
const predictedSignals = inputPrediction[atomType];
|
|
153
|
-
|
|
146
|
+
const { joinedSignals } = predictedSignals
|
|
154
147
|
? { joinedSignals: predictedSignals }
|
|
155
148
|
: await predictor[atomType](molecule, options);
|
|
156
149
|
|
|
@@ -159,7 +152,7 @@ export async function buildAssignments(props: BuildAssignmentInput) {
|
|
|
159
152
|
if (!predictions[atomType]) predictions[atomType] = {};
|
|
160
153
|
|
|
161
154
|
let totalHydrogens = 0;
|
|
162
|
-
for (
|
|
155
|
+
for (const prediction of joinedSignals) {
|
|
163
156
|
const diaID = prediction.diaIDs[0];
|
|
164
157
|
const index = prediction.atoms[0];
|
|
165
158
|
const allHydrogens = getAllHydrogens[atomType](molecule, index);
|
|
@@ -172,7 +165,7 @@ export async function buildAssignments(props: BuildAssignmentInput) {
|
|
|
172
165
|
pathLength: pathLengthMatrix[index] as number[],
|
|
173
166
|
};
|
|
174
167
|
}
|
|
175
|
-
for (
|
|
168
|
+
for (const diaID in predictions[atomType]) {
|
|
176
169
|
predictions[atomType][diaID].allHydrogens *= 100 / totalHydrogens;
|
|
177
170
|
}
|
|
178
171
|
infoByAtomType[atomType] = {
|
|
@@ -195,7 +188,7 @@ export async function buildAssignments(props: BuildAssignmentInput) {
|
|
|
195
188
|
);
|
|
196
189
|
}
|
|
197
190
|
|
|
198
|
-
|
|
191
|
+
const sourceOfPartials = getSourceOfPartials(
|
|
199
192
|
store,
|
|
200
193
|
infoByAtomType,
|
|
201
194
|
atomTypesToPredict,
|
|
@@ -208,7 +201,7 @@ export async function buildAssignments(props: BuildAssignmentInput) {
|
|
|
208
201
|
|
|
209
202
|
const timeStart = Date.now();
|
|
210
203
|
|
|
211
|
-
for (
|
|
204
|
+
for (const partial of sourceOfPartials) {
|
|
212
205
|
exploreTree(
|
|
213
206
|
{
|
|
214
207
|
currentAtomTypes: atomTypesToPredict,
|
|
@@ -252,7 +245,7 @@ function annotateSpectraData(input: AnnotateSpectraDataInput) {
|
|
|
252
245
|
for (const atomType of atomTypes) {
|
|
253
246
|
const targetByAtomType = targets[atomType];
|
|
254
247
|
for (const targetId in targetByAtomType) {
|
|
255
|
-
|
|
248
|
+
const target = targetByAtomType[targetId];
|
|
256
249
|
for (const link of target.link) {
|
|
257
250
|
const signalId = link.signal.id;
|
|
258
251
|
if (mapSignalId[signalId]) continue;
|
|
@@ -262,7 +255,7 @@ function annotateSpectraData(input: AnnotateSpectraDataInput) {
|
|
|
262
255
|
}
|
|
263
256
|
|
|
264
257
|
const result = [];
|
|
265
|
-
for (
|
|
258
|
+
for (const solution of solutions.elements) {
|
|
266
259
|
const spectraResult = JSON.parse(
|
|
267
260
|
JSON.stringify(spectra),
|
|
268
261
|
) as SpectraDataWithIds[];
|
|
@@ -279,15 +272,15 @@ function annotateSpectraData(input: AnnotateSpectraDataInput) {
|
|
|
279
272
|
const target = targetByAtomType[targetID];
|
|
280
273
|
const diaId = diaIDPeerPossibleAssignment[atomType][index];
|
|
281
274
|
|
|
282
|
-
for (
|
|
275
|
+
for (const link of target.link) {
|
|
283
276
|
const { spectrumIndex, elementIndex, signalIndex } =
|
|
284
277
|
mapSignalId[link.signal.id];
|
|
285
278
|
const spectrum = spectraResult[spectrumIndex];
|
|
286
279
|
|
|
287
280
|
if (isSpectraData1D(spectrum)) {
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
281
|
+
const { ranges } = spectrum;
|
|
282
|
+
const range = ranges[elementIndex];
|
|
283
|
+
const signal = range.signals[signalIndex];
|
|
291
284
|
if (!signal.diaIDs) signal.diaIDs = [];
|
|
292
285
|
if (signal.diaIDs.includes(diaId)) continue;
|
|
293
286
|
signal.diaIDs.push(diaId);
|
|
@@ -316,7 +309,7 @@ function getSourceOfPartials(
|
|
|
316
309
|
) {
|
|
317
310
|
return store.nSolutions > 0
|
|
318
311
|
? store.solutions.elements.map((e) => {
|
|
319
|
-
|
|
312
|
+
const currentAssignment = e.assignment;
|
|
320
313
|
for (const atom of currentAtoms) {
|
|
321
314
|
currentAssignment[atom] = fillPartial(infoByAtomType[atom].nSources);
|
|
322
315
|
}
|
|
@@ -11,8 +11,8 @@ import type {
|
|
|
11
11
|
import { isSpectraData1D } from './isSpectraData1D';
|
|
12
12
|
|
|
13
13
|
export function checkIDs(input: SpectraData[] = []): SpectraDataWithIds[] {
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
const inputClone = JSON.parse(JSON.stringify(input)) as SpectraData[];
|
|
15
|
+
const spectra: SpectraDataWithIds[] = [];
|
|
16
16
|
for (const spectraData of inputClone) {
|
|
17
17
|
if (!('info' in spectraData)) {
|
|
18
18
|
throw new Error(
|
|
@@ -22,10 +22,10 @@ export function checkIDs(input: SpectraData[] = []): SpectraDataWithIds[] {
|
|
|
22
22
|
|
|
23
23
|
const { info, id } = spectraData;
|
|
24
24
|
if (isSpectraData1D(spectraData)) {
|
|
25
|
-
|
|
25
|
+
const ranges = addIDs(spectraData.ranges) as NMRRangeWithIds[];
|
|
26
26
|
spectra.push({ id, info, ranges });
|
|
27
27
|
} else {
|
|
28
|
-
|
|
28
|
+
const data = addIDs(spectraData.zones) as NMRZoneWithIds[];
|
|
29
29
|
spectra.push({ id, info, zones: data });
|
|
30
30
|
}
|
|
31
31
|
}
|
|
@@ -37,7 +37,7 @@ export function hasIDs(
|
|
|
37
37
|
): asserts data is NMRRangeWithIds[] | NMRZoneWithIds[] {
|
|
38
38
|
for (const element of data) {
|
|
39
39
|
if (!element.id) throw new Error('A range/zone has not an ID');
|
|
40
|
-
for (
|
|
40
|
+
for (const signal of element.signals || []) {
|
|
41
41
|
if (!signal.id) throw new Error('A signal has not an ID');
|
|
42
42
|
}
|
|
43
43
|
}
|
|
@@ -46,7 +46,7 @@ export function hasIDs(
|
|
|
46
46
|
export function addIDs<T extends NMRRange[] | NMRZone[]>(data: T) {
|
|
47
47
|
for (const element of data) {
|
|
48
48
|
if (!element.id) element.id = generateID();
|
|
49
|
-
for (
|
|
49
|
+
for (const signal of element.signals || []) {
|
|
50
50
|
if (!signal.id) signal.id = generateID();
|
|
51
51
|
}
|
|
52
52
|
}
|
package/src/assignment/utils/{getAssignment → generalAssignment}/createMapPossibleAssignment.ts
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getCorrelationDelta } from 'nmr-correlation';
|
|
2
2
|
|
|
3
|
-
import { PossibleAssignmentMap } from '../createMapPossibleAssignments';
|
|
3
|
+
import { PossibleAssignmentMap } from '../oneDimensionalAssignment/createMapPossibleAssignments';
|
|
4
4
|
|
|
5
5
|
import {
|
|
6
6
|
AtomTypes,
|
|
@@ -9,12 +9,8 @@ import {
|
|
|
9
9
|
} from './buildAssignments';
|
|
10
10
|
import { TargetsByAtomType } from './getTargetsAndCorrelations';
|
|
11
11
|
|
|
12
|
-
export
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
export interface MapPossibleAssignments {
|
|
16
|
-
[key: string]: PossibleAssignmentMap;
|
|
17
|
-
}
|
|
12
|
+
export type PossibleAssignments = Record<string, string[]>;
|
|
13
|
+
export type MapPossibleAssignments = Record<string, PossibleAssignmentMap>;
|
|
18
14
|
export interface CreateMapPossibleAssignmentOptions {
|
|
19
15
|
restrictionByCS: RestrictionByCS;
|
|
20
16
|
predictions: PredictionsByAtomType;
|
|
@@ -31,17 +27,17 @@ export function createMapPossibleAssignment(
|
|
|
31
27
|
const atomTypes = Object.keys(predictions) as AtomTypes[];
|
|
32
28
|
|
|
33
29
|
for (const atomType of atomTypes) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
30
|
+
const errorAbs = toleranceCS[atomType];
|
|
31
|
+
const predictionByAtomType = predictions[atomType];
|
|
32
|
+
const targetByAtomType = targets[atomType];
|
|
37
33
|
if (!expandMap[atomType]) expandMap[atomType] = {};
|
|
38
34
|
for (const diaID in predictionByAtomType) {
|
|
39
|
-
|
|
35
|
+
const prediction = predictionByAtomType[diaID];
|
|
40
36
|
expandMap[atomType][diaID] = [];
|
|
41
37
|
|
|
42
38
|
if (targetByAtomType) {
|
|
43
39
|
for (const targetID in targetByAtomType) {
|
|
44
|
-
|
|
40
|
+
const target = targetByAtomType[targetID];
|
|
45
41
|
const { nbAtoms, protonsCount: protonsCountFromPrediction } =
|
|
46
42
|
prediction;
|
|
47
43
|
const { integration, protonsCount } = target;
|
|
@@ -63,11 +59,11 @@ export function createMapPossibleAssignment(
|
|
|
63
59
|
// Chemical shift is not a restriction
|
|
64
60
|
expandMap[atomType][diaID].push(targetID);
|
|
65
61
|
} else {
|
|
66
|
-
|
|
62
|
+
const targetDelta = getCorrelationDelta(target);
|
|
67
63
|
if (targetDelta === undefined) {
|
|
68
64
|
throw new Error(`Correlation has not delta`);
|
|
69
65
|
}
|
|
70
|
-
|
|
66
|
+
const distAfterLimit = Math.abs(
|
|
71
67
|
prediction.delta - targetDelta - errorAbs,
|
|
72
68
|
);
|
|
73
69
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { StoreAssignments } from '../buildAssignments';
|
|
1
|
+
import { StoreAssignments } from '../oneDimensionalAssignment/buildAssignments';
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
4
|
RestrictionByCS,
|
|
@@ -73,10 +73,10 @@ export function exploreTree(
|
|
|
73
73
|
const diaID = diaIDPeerPossibleAssignment[atomType][currentIndex];
|
|
74
74
|
const possibleAssignments = possibleAssignmentMap[atomType][diaID];
|
|
75
75
|
|
|
76
|
-
for (
|
|
76
|
+
for (const targetID of possibleAssignments) {
|
|
77
77
|
partial[atomType][currentIndex] = targetID;
|
|
78
78
|
|
|
79
|
-
|
|
79
|
+
const score = partialScore(partial, {
|
|
80
80
|
diaIDPeerPossibleAssignment,
|
|
81
81
|
infoByAtomTypes,
|
|
82
82
|
restrictionByCS,
|
|
@@ -126,11 +126,10 @@ export interface AssignmentSolution {
|
|
|
126
126
|
}
|
|
127
127
|
|
|
128
128
|
function addSolution(store: StoreAssignments, props: AddSolutionOptions) {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
let solution: AssignmentSolution = {
|
|
129
|
+
const { score, maxSolutions, partial, predictions } = props;
|
|
130
|
+
const solution: AssignmentSolution = {
|
|
132
131
|
assignment: JSON.parse(JSON.stringify(partial)),
|
|
133
|
-
score,
|
|
132
|
+
score: score / doubleAssignmentPenalty(partial, predictions),
|
|
134
133
|
};
|
|
135
134
|
|
|
136
135
|
if (store.nSolutions >= maxSolutions) {
|
|
@@ -163,7 +162,7 @@ function doubleAssignmentPenalty(
|
|
|
163
162
|
let nbDoubleAssignment = 0;
|
|
164
163
|
for (const atomType in predictions) {
|
|
165
164
|
const nbSources = Object.keys(predictions[atomType]).length;
|
|
166
|
-
|
|
165
|
+
const assignments = new Set(partial[atomType]);
|
|
167
166
|
nbDoubleAssignment += nbSources - assignments.size;
|
|
168
167
|
}
|
|
169
168
|
return nbDoubleAssignment > 0 ? 2 * nbDoubleAssignment : 1;
|
|
@@ -22,8 +22,8 @@ export type SpectraDataFormatted =
|
|
|
22
22
|
export function formatData(
|
|
23
23
|
input: SpectraDataWithIds[] = [],
|
|
24
24
|
): SpectraDataFormatted[] {
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
const inputClone = JSON.parse(JSON.stringify(input)) as SpectraDataWithIds[];
|
|
26
|
+
const spectra: SpectraDataFormatted[] = [];
|
|
27
27
|
for (const spectraData of inputClone) {
|
|
28
28
|
const { id, info } = spectraData;
|
|
29
29
|
if (isSpectraData1D(spectraData)) {
|
|
@@ -43,12 +43,12 @@ export function formatData(
|
|
|
43
43
|
function rescaleIntegration(spectrum: SpectraData1DWithIds): NMRRangeWithIds[] {
|
|
44
44
|
if (spectrum.info.nucleus !== '1H') return spectrum.ranges;
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
const totalIntegration = spectrum.ranges.reduce(
|
|
47
47
|
(total, range) => (range.integration ? total + range.integration : total),
|
|
48
48
|
0,
|
|
49
49
|
);
|
|
50
50
|
|
|
51
|
-
for (
|
|
51
|
+
for (const range of spectrum.ranges) {
|
|
52
52
|
if (range.integration) {
|
|
53
53
|
range.integration *= 100 / totalIntegration;
|
|
54
54
|
if (range.signals) {
|
|
@@ -57,7 +57,7 @@ function rescaleIntegration(spectrum: SpectraData1DWithIds): NMRRangeWithIds[] {
|
|
|
57
57
|
signal.integration ? total + signal.integration : total,
|
|
58
58
|
0,
|
|
59
59
|
);
|
|
60
|
-
for (
|
|
60
|
+
for (const signal of range.signals) {
|
|
61
61
|
if (signal.integration) {
|
|
62
62
|
signal.integration *= range.integration / totalSignalIntegration;
|
|
63
63
|
} else {
|
package/src/assignment/utils/{getAssignment → generalAssignment}/getTargetsAndCorrelations.ts
RENAMED
|
@@ -12,11 +12,9 @@ export interface CorrelationWithIntegration
|
|
|
12
12
|
'link' | 'atomType' | 'label' | 'attachment' | 'protonsCount'
|
|
13
13
|
> {
|
|
14
14
|
integration: number;
|
|
15
|
-
indirectLinks:
|
|
16
|
-
}
|
|
17
|
-
export interface Targets {
|
|
18
|
-
[key: string]: CorrelationWithIntegration;
|
|
15
|
+
indirectLinks: Link[];
|
|
19
16
|
}
|
|
17
|
+
export type Targets = Record<string, CorrelationWithIntegration>;
|
|
20
18
|
export interface TargetsByAtomType {
|
|
21
19
|
H: Targets;
|
|
22
20
|
C: Targets;
|
|
@@ -40,7 +38,7 @@ export function getTargetsAndCorrelations(
|
|
|
40
38
|
tolerance,
|
|
41
39
|
});
|
|
42
40
|
|
|
43
|
-
|
|
41
|
+
const targets: any = {};
|
|
44
42
|
for (const correlation of correlations) {
|
|
45
43
|
if (correlation.pseudo) continue;
|
|
46
44
|
const { id: targetID, atomType } = correlation;
|
|
@@ -8,10 +8,7 @@ import { AtomTypes } from './buildAssignments';
|
|
|
8
8
|
* @param {*} justAssign
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
function getWorkFlow(
|
|
12
|
-
correlations: Values,
|
|
13
|
-
justAssign: Array<AtomTypes[]> = [],
|
|
14
|
-
) {
|
|
11
|
+
function getWorkFlow(correlations: Values, justAssign: AtomTypes[][] = []) {
|
|
15
12
|
const experimentTypes = extractExperimentType(correlations);
|
|
16
13
|
|
|
17
14
|
const { hasHSQC, types } = experimentTypes;
|
|
@@ -20,7 +17,7 @@ function getWorkFlow(
|
|
|
20
17
|
return { assignmentOrder: justAssign, experimentTypes };
|
|
21
18
|
}
|
|
22
19
|
|
|
23
|
-
const assignmentOrder:
|
|
20
|
+
const assignmentOrder: AtomTypes[][] = [];
|
|
24
21
|
|
|
25
22
|
if (hasHSQC) {
|
|
26
23
|
assignmentOrder.push(['C'], ['H']);
|
|
@@ -8,27 +8,27 @@ function groupCarbonTargetByIntegrationZone(
|
|
|
8
8
|
targets: Targets,
|
|
9
9
|
correlations: CorrelationWithIntegration[],
|
|
10
10
|
) {
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
const targetID = activeDomainOnTarget[0];
|
|
12
|
+
const { H: attachments = [] } = targets[targetID].attachment;
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
const targetByIntegral = [
|
|
15
15
|
{ targetIDs: [targetID], attachments: new Set<number>(attachments) },
|
|
16
16
|
];
|
|
17
17
|
|
|
18
18
|
for (let i = 1; i < activeDomainOnTarget.length; i++) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
const targetID = activeDomainOnTarget[i];
|
|
20
|
+
const target = targets[targetID];
|
|
21
|
+
const { H: attachments = [] } = target.attachment;
|
|
22
22
|
|
|
23
23
|
let alone = true;
|
|
24
|
-
for (
|
|
24
|
+
for (const group of targetByIntegral) {
|
|
25
25
|
const pertain = attachments.some((attachment: any) =>
|
|
26
26
|
group.attachments.has(attachment),
|
|
27
27
|
);
|
|
28
28
|
if (pertain) {
|
|
29
29
|
alone = false;
|
|
30
30
|
group.targetIDs.push(targetID);
|
|
31
|
-
for (
|
|
31
|
+
for (const attachment of attachments) {
|
|
32
32
|
group.attachments.add(attachment);
|
|
33
33
|
}
|
|
34
34
|
break;
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
import groupCarbonTargetByIntegrationZone from './groupCarbonTargetByIntegrationZone';
|
|
15
15
|
|
|
16
16
|
export interface PartialScoreOptions {
|
|
17
|
-
diaIDPeerPossibleAssignment:
|
|
17
|
+
diaIDPeerPossibleAssignment: Record<string, string[]>;
|
|
18
18
|
restrictionByCS: RestrictionByCS;
|
|
19
19
|
infoByAtomTypes: InfoByAtomType;
|
|
20
20
|
correlations: CorrelationWithIntegration[];
|
|
@@ -22,13 +22,9 @@ export interface PartialScoreOptions {
|
|
|
22
22
|
targets: TargetsByAtomType;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
[key: string]: string[];
|
|
27
|
-
}
|
|
25
|
+
type ObjectStringArray = Record<string, string[]>;
|
|
28
26
|
|
|
29
|
-
|
|
30
|
-
[key: string]: ObjectStringArray;
|
|
31
|
-
}
|
|
27
|
+
type ObjectObjectStringArray = Record<string, ObjectStringArray>;
|
|
32
28
|
|
|
33
29
|
export function partialScore(partial: Partial, props: PartialScoreOptions) {
|
|
34
30
|
const {
|
|
@@ -43,8 +39,8 @@ export function partialScore(partial: Partial, props: PartialScoreOptions) {
|
|
|
43
39
|
const { tolerance: toleranceCS, useChemicalShiftScore } = restrictionByCS;
|
|
44
40
|
let totalStarts = 0;
|
|
45
41
|
let totalPartial = 0;
|
|
46
|
-
|
|
47
|
-
|
|
42
|
+
const partialInverse: ObjectObjectStringArray = {};
|
|
43
|
+
const activeDomainOnPrediction: Record<string, number[]> = {};
|
|
48
44
|
const atomTypes = Object.keys(partial) as AtomTypes[];
|
|
49
45
|
for (const atomType of atomTypes) {
|
|
50
46
|
let countStars = 0;
|
|
@@ -89,11 +85,11 @@ export function partialScore(partial: Partial, props: PartialScoreOptions) {
|
|
|
89
85
|
|
|
90
86
|
const getPredictionByDiaID = getPrediction.bind({}, predictions);
|
|
91
87
|
// check the integration
|
|
92
|
-
const targetByIntegral: {
|
|
88
|
+
const targetByIntegral: Array<{
|
|
93
89
|
atomType: string;
|
|
94
90
|
targetIDs: string[];
|
|
95
91
|
integration: number;
|
|
96
|
-
}
|
|
92
|
+
}> = [];
|
|
97
93
|
|
|
98
94
|
for (const atomType in partial) {
|
|
99
95
|
if (atomType === 'C' && activeDomainOnTarget[atomType].length > 0) {
|
|
@@ -105,7 +101,7 @@ export function partialScore(partial: Partial, props: PartialScoreOptions) {
|
|
|
105
101
|
),
|
|
106
102
|
);
|
|
107
103
|
} else {
|
|
108
|
-
for (
|
|
104
|
+
for (const targetID of activeDomainOnTarget[atomType]) {
|
|
109
105
|
targetByIntegral.push({
|
|
110
106
|
atomType,
|
|
111
107
|
targetIDs: [targetID],
|
|
@@ -120,8 +116,8 @@ export function partialScore(partial: Partial, props: PartialScoreOptions) {
|
|
|
120
116
|
if (integration === undefined || isNaN(integration)) continue;
|
|
121
117
|
|
|
122
118
|
let total = 0;
|
|
123
|
-
for (
|
|
124
|
-
|
|
119
|
+
for (const targetID of group.targetIDs) {
|
|
120
|
+
const targetToSource = partialInverse[atomType][targetID];
|
|
125
121
|
for (const diaID of targetToSource) {
|
|
126
122
|
const { prediction, atomType: atomOfPrediction } =
|
|
127
123
|
getPredictionByDiaID(diaID);
|
|
@@ -146,10 +142,10 @@ export function partialScore(partial: Partial, props: PartialScoreOptions) {
|
|
|
146
142
|
const targetID = partialPeerAtomType[index];
|
|
147
143
|
if (targetID && targetID !== '*') {
|
|
148
144
|
count++;
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
145
|
+
const diaID = diaIDPeerPossibleAssignment[atomType][index];
|
|
146
|
+
const source = predictions[atomType][diaID];
|
|
147
|
+
const target = targetsPeerAtomType[targetID];
|
|
148
|
+
const error = toleranceCS[atomType];
|
|
153
149
|
// if (source.error) {
|
|
154
150
|
// error = Math.max(source.error, toleranceCS);
|
|
155
151
|
// }
|
|
@@ -183,7 +179,7 @@ export function partialScore(partial: Partial, props: PartialScoreOptions) {
|
|
|
183
179
|
let scoreOn2D = 0;
|
|
184
180
|
|
|
185
181
|
if (howManyActived(activeDomainOnTarget) > 1) {
|
|
186
|
-
|
|
182
|
+
const andConstrains: Record<string, number> = {};
|
|
187
183
|
let activeDomain: Array<{ index: number; atomType: AtomTypes }> = [];
|
|
188
184
|
|
|
189
185
|
for (const atomType of Object.keys(
|
|
@@ -204,20 +200,20 @@ export function partialScore(partial: Partial, props: PartialScoreOptions) {
|
|
|
204
200
|
predictions[atomTypeJ][
|
|
205
201
|
diaIDPeerPossibleAssignment[atomTypeJ][indexJ]
|
|
206
202
|
];
|
|
207
|
-
|
|
208
|
-
|
|
203
|
+
const pathLength = predictionI.pathLength[predictionJ.diaIDIndex];
|
|
204
|
+
const isPossible = pathLength < 5;
|
|
209
205
|
|
|
210
|
-
|
|
211
|
-
|
|
206
|
+
const partialI = partial[atomTypeI][indexI];
|
|
207
|
+
const partialJ = partial[atomTypeJ][indexJ];
|
|
212
208
|
|
|
213
209
|
if (!partialI || !partialJ) continue;
|
|
214
210
|
|
|
215
|
-
|
|
211
|
+
const keyOnTargertMap =
|
|
216
212
|
partialI > partialJ
|
|
217
213
|
? `${partialJ} ${partialI}`
|
|
218
214
|
: `${partialI} ${partialJ}`;
|
|
219
215
|
|
|
220
|
-
|
|
216
|
+
const areLinked = checkLinking(
|
|
221
217
|
{
|
|
222
218
|
from: {
|
|
223
219
|
targetID: partialI,
|
|
@@ -231,7 +227,7 @@ export function partialScore(partial: Partial, props: PartialScoreOptions) {
|
|
|
231
227
|
targets,
|
|
232
228
|
);
|
|
233
229
|
|
|
234
|
-
|
|
230
|
+
const partialScore2D = isPossible
|
|
235
231
|
? areLinked
|
|
236
232
|
? 1
|
|
237
233
|
: 0
|
|
@@ -246,7 +242,7 @@ export function partialScore(partial: Partial, props: PartialScoreOptions) {
|
|
|
246
242
|
}
|
|
247
243
|
|
|
248
244
|
let sumAnd = 0;
|
|
249
|
-
for (
|
|
245
|
+
for (const key in andConstrains) {
|
|
250
246
|
sumAnd += andConstrains[key];
|
|
251
247
|
}
|
|
252
248
|
|
|
@@ -277,8 +273,8 @@ function checkLinking(
|
|
|
277
273
|
) {
|
|
278
274
|
const { from, to } = partials;
|
|
279
275
|
if (from.targetID === to.targetID) return true;
|
|
280
|
-
|
|
281
|
-
|
|
276
|
+
const correlationI = correlations[from.atomType][from.targetID];
|
|
277
|
+
const correlationJ = correlations[to.atomType][to.targetID];
|
|
282
278
|
for (const linkJ of correlationJ.link) {
|
|
283
279
|
for (const link of correlationI.link) {
|
|
284
280
|
if (link.signal.id === linkJ.signal.id) return true;
|