diff --git a/ILP/Kaffee/nmrSimilarityCaffeine.py b/ILP/Kaffee/nmrSimilarityCaffeine.py index fff5a46..b49109d 100644 --- a/ILP/Kaffee/nmrSimilarityCaffeine.py +++ b/ILP/Kaffee/nmrSimilarityCaffeine.py @@ -283,27 +283,44 @@ def correction(spectra, corretionppm): newspectra[id] = ([adjustedshift], height) return newspectra +def addspectra(spectrum1, spectrum2): + spectrum = spectrum1.copy() + for _, ([ppm2], [height2]) in spectrum2.items(): + for peak, ([ppm1], [height1]) in spectrum1.items(): + if ppm1 == ppm2: + spectrum[peak] == ([ppm1], [height1 + height2]) + continue + spectrum[len(spectrum) + 1] = ([ppm2], [height2]) + return(spectrum) + def main(): - spectrumref = CNMR2 - #1H-NMR Spectra ignoriert, da meiste H sauer, da an N gebunden - #spectra = [HXANTHINE, H1XANTHINE, H3XANTHINE, H7XANTHINE, H1XANTHINE, H17XANTHINE, H37XANTHINE, H137XANTHINE] - spectra = [CXANTHINE, C1XANTHINE, C3XANTHINE, C7XANTHINE, C1XANTHINE, C17XANTHINE, C37XANTHINE, C137XANTHINE] - spectranames = ["XANTHINE", "1XANTHINE", "3XANTHINE", "7XANTHINE", "1XANTHINE", "17XANTHINE", "37XANTHINE", "137XANTHINE"] - likelihood = [] - for spectrumtrue in spectra: - similaritybycorrection = [] - #Paper Chemical reviews Carbons bound to Heavy atoms (TMS) to high -> this could be reason for too high values. - correctionvalues = [2.5] #np.arange(0, 1.51, 0.01) #for C tested np.arange(-0.37, 7.64, 0.1) 0, 2.63, 1 (for CNMR3), 1.5 (true for all ref, 8.37 + 1.5 for the precision), 1 (good for first, ok for second, third because only 7 better/equal but for first much higher) np.arange(-1.5, 1.49, 0.01) (only for first), for H 0 (not good), np.arange(-0.26, 0.34, 0.01), -0.06 for first, second never first either 17 or caf higher np.arange(-0.15, 0.16, 0.01) good measure - for correctionvalue in correctionvalues: - spectrumrefcorrected = correction(spectrumref, correctionvalue) #CCAFFEINE 11 (klappt hier sehr gut) CCAFFEINE2 12 CPARAXANTHINE 10 CNMR1 9, 10 o 11 (sehr gut) CNMR2 10 o 11 - similaritylist = [] - binwidthlist = np.arange(0.1, 3.9, 0.1) - for i in binwidthlist: - similaritylist.append(similarity_nmr(spectrumtrue, spectrumrefcorrected, i)) - similaritymean = sum(similaritylist) / len(similaritylist) - similaritybycorrection.append(similaritymean) - likelihood.append(round(sum(similaritybycorrection)/len(similaritybycorrection), 2)) - print(likelihood) + normalize = False + spectrumrefs = [CNMR1, CNMR3] + for spectrumref in spectrumrefs: + #spectra = [HXANTHINE, H1XANTHINE, H3XANTHINE, H7XANTHINE, H1XANTHINE, H17XANTHINE, H37XANTHINE, H137XANTHINE] + spectra = [CXANTHINE, C1XANTHINE, C3XANTHINE, C7XANTHINE, C1XANTHINE, C17XANTHINE, C37XANTHINE, C137XANTHINE] + spectranames = ["XANTHINE", "1XANTHINE", "3XANTHINE", "7XANTHINE", "1XANTHINE", "17XANTHINE", "37XANTHINE", "137XANTHINE"] + likelihoods = [] + for spectrumtrue in spectra: + similaritybycorrection = [] + #Paper Chemical reviews Carbons bound to Heavy atoms (TMS) to high -> this could be reason for too high values. + correctionvalues = [2.5] #np.arange(0, 1.51, 0.01) #for C tested np.arange(-0.37, 7.64, 0.1) 0, 2.63, 1 (for CNMR3), 1.5 (true for all ref, 8.37 + 1.5 for the precision), 1 (good for first, ok for second, third because only 7 better/equal but for first much higher) np.arange(-1.5, 1.49, 0.01) (only for first), for H 0 (not good), np.arange(-0.26, 0.34, 0.01), -0.06 for first, second never first either 17 or caf higher np.arange(-0.15, 0.16, 0.01) good measure + for correctionvalue in correctionvalues: + spectrumrefcorrected = correction(spectrumref, correctionvalue) #CCAFFEINE 11 (klappt hier sehr gut) CCAFFEINE2 12 CPARAXANTHINE 10 CNMR1 9, 10 o 11 (sehr gut) CNMR2 10 o 11 + similaritylist = [] + binwidthlist = np.arange(0.1, 3.9, 0.1) + for i in binwidthlist: + similaritylist.append(similarity_nmr(spectrumtrue, spectrumrefcorrected, i)) + similaritymean = sum(similaritylist) / len(similaritylist) + similaritybycorrection.append(similaritymean) + likelihoods.append(sum(similaritybycorrection)/len(similaritybycorrection)) + if normalize: + normalizedlikelihood = [round(likelihood/np.sum(likelihoods), 2) for likelihood in likelihoods] + print(normalizedlikelihood) + if not normalize: + notnormalizedlikelihood = [round(likelihood, 2) for likelihood in likelihoods] + print(notnormalizedlikelihood) + if __name__ == "__main__": main() \ No newline at end of file