Skip to content

Commit eafefc2

Browse files
author
michaelwenk
committed
fix: swapped query spectrum in first place with (sub)spectrum when doing spectral matching
1 parent 608866a commit eafefc2

File tree

2 files changed

+43
-16
lines changed

2 files changed

+43
-16
lines changed

src/casekit/nmr/filterandrank/FilterAndRank.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -93,14 +93,14 @@ public static DataSet checkDataSet(final DataSet dataSet, final Spectrum querySp
9393

9494
final Assignment spectralMatchAssignment = detections
9595
!= null
96-
? Similarity.matchSpectra(querySpectrum, spectrum, 0, 0,
96+
? Similarity.matchSpectra(spectrum, querySpectrum, 0, 0,
9797
shiftTolerance, checkMultiplicity,
9898
checkEquivalencesCount,
9999
allowLowerEquivalencesCount,
100100
dataSet.getStructure()
101101
.toAtomContainer(),
102102
dataSet.getAssignment(), detections)
103-
: Similarity.matchSpectra(querySpectrum, spectrum, 0, 0,
103+
: Similarity.matchSpectra(spectrum, querySpectrum, 0, 0,
104104
shiftTolerance, checkMultiplicity,
105105
checkEquivalencesCount,
106106
allowLowerEquivalencesCount);
@@ -111,7 +111,7 @@ public static DataSet checkDataSet(final DataSet dataSet, final Spectrum querySp
111111
dataSet.addAttachment("isCompleteSpectralMatch", isCompleteSpectralMatch);
112112
dataSet.addAttachment("spectralMatchAssignment", spectralMatchAssignment);
113113

114-
Double[] deviations = Similarity.getDeviations(querySpectrum, spectrum, 0, 0, spectralMatchAssignment);
114+
Double[] deviations = Similarity.getDeviations(spectrum, querySpectrum, 0, 0, spectralMatchAssignment);
115115
if (allowIncompleteMatch) {
116116
deviations = Arrays.stream(deviations)
117117
.filter(Objects::nonNull)

src/casekit/nmr/similarity/Utilities.java

+40-13
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,19 @@
1313

1414
public class Utilities {
1515

16+
17+
/**
18+
* @param spectrum1 first spectrum (possible subspectrum)
19+
* @param spectrum2 second spectrum
20+
* @param dim1 dim in first spectrum
21+
* @param dim2 dim in second spectrum
22+
* @param shiftTolerance shift tolerance
23+
* @param checkMultiplicity whether to check multiplicity
24+
* @param checkEquivalencesCount whether to check equivalences
25+
* @param allowLowerEquivalencesCount whether to allow lower equivalences
26+
*
27+
* @return
28+
*/
1629
public static List<Distance> buildDistanceList(final Spectrum spectrum1, final Spectrum spectrum2, final int dim1,
1730
final int dim2, final double shiftTolerance,
1831
final boolean checkMultiplicity,
@@ -74,7 +87,22 @@ public static Double getDistanceValue(final Signal signal1, final Signal signal2
7487
? null
7588
: distanceValue;
7689
}
77-
90+
91+
/**
92+
* @param spectrum1 first spectrum (possible subspectrum)
93+
* @param spectrum2 second spectrum
94+
* @param dim1 dim in first spectrum
95+
* @param dim2 dim in second spectrum
96+
* @param shiftTolerance shift tolerance
97+
* @param checkMultiplicity whether to check multiplicity
98+
* @param checkEquivalencesCount whether to check equivalences
99+
* @param allowLowerEquivalencesCount whether to allow lower equivalences
100+
* @param structure structure belonging to first spectrum
101+
* @param assignment assignments between structure and first spectrum
102+
* @param detections detections to use as structural filter within given structure
103+
*
104+
* @return
105+
*/
78106
public static List<Distance> buildDistanceList(final Spectrum spectrum1, final Spectrum spectrum2, final int dim1,
79107
final int dim2, final double shiftTolerance,
80108
final boolean checkMultiplicity,
@@ -90,15 +118,6 @@ public static List<Distance> buildDistanceList(final Spectrum spectrum1, final S
90118
boolean skip;
91119
for (int i = 0; i
92120
< spectrum1.getSignalCount(); i++) {
93-
forbiddenNeighbors = detections.getForbiddenNeighbors()
94-
.get(i)
95-
.keySet();
96-
setNeighbors = detections.getSetNeighbors()
97-
.get(i)
98-
.keySet();
99-
hybridizations = detections.getDetectedHybridizations()
100-
.get(i);
101-
102121
for (int j = 0; j
103122
< spectrum2.getSignalCount(); j++) {
104123
// check spectral constraints
@@ -111,9 +130,17 @@ public static List<Distance> buildDistanceList(final Spectrum spectrum1, final S
111130
}
112131
skip = false;
113132
// check structural constraints
114-
for (int k = 0; k
115-
< assignment.getAssignment(0, j).length; k++) {
116-
atom = structure.getAtom(assignment.getAssignment(0, j, k));
133+
forbiddenNeighbors = detections.getForbiddenNeighbors()
134+
.get(j)
135+
.keySet();
136+
setNeighbors = detections.getSetNeighbors()
137+
.get(j)
138+
.keySet();
139+
hybridizations = detections.getDetectedHybridizations()
140+
.get(j);
141+
for (int equiv = 0; equiv
142+
< assignment.getAssignment(0, i).length; equiv++) {
143+
atom = structure.getAtom(assignment.getAssignment(0, i, equiv));
117144
// if certain hybridizations are given and the atom's hybridization is known
118145
if (!hybridizations.isEmpty()
119146
&& Constants.hybridizationConversionMap.containsKey(atom.getHybridization()

0 commit comments

Comments
 (0)