Search in sources :

Example 1 with PeakToSmartsGroupList

use of de.ipbhalle.metfraglib.substructure.PeakToSmartsGroupList in project MetFragRelaunched by ipb-halle.

the class CombinedAutomatedAnnotationScoreInitialiser method initPeakParameters.

public void initPeakParameters(Settings settings) throws Exception {
    if (!settings.containsKey(VariableNames.PEAK_TO_SMARTS_GROUP_LIST_COLLECTION_NAME) || settings.get(VariableNames.PEAK_TO_SMARTS_GROUP_LIST_COLLECTION_NAME) == null) {
        PeakToSmartsGroupListCollection peakToSmartGroupListCollection = new PeakToSmartsGroupListCollection();
        String filename = (String) settings.get(VariableNames.SMARTS_PEAK_ANNOTATION_FILE_NAME);
        DefaultPeakList peakList = (DefaultPeakList) settings.get(VariableNames.PEAK_LIST_NAME);
        Double mzppm = (Double) settings.get(VariableNames.RELATIVE_MASS_DEVIATION_NAME);
        Double mzabs = (Double) settings.get(VariableNames.ABSOLUTE_MASS_DEVIATION_NAME);
        BufferedReader breader = new BufferedReader(new FileReader(new File(filename)));
        String line = "";
        while ((line = breader.readLine()) != null) {
            line = line.trim();
            if (line.length() == 0)
                continue;
            if (line.startsWith("#"))
                continue;
            String[] tmp = line.split("\\s+");
            Double peak = Double.parseDouble(tmp[0]);
            if (!peakList.containsMass(peak, mzppm, mzabs))
                continue;
            PeakToSmartsGroupList peakToSmartGroupList = new PeakToSmartsGroupList(peak);
            SmartsGroup smartsGroup = null;
            for (int i = 1; i < tmp.length; i++) {
                if (this.isDoubleValue(tmp[i])) {
                    if (smartsGroup != null)
                        peakToSmartGroupList.addElement(smartsGroup);
                    smartsGroup = new SmartsGroup(Double.parseDouble(tmp[i]));
                } else {
                    smartsGroup.addElement(tmp[i]);
                }
                if (i == (tmp.length - 1)) {
                    peakToSmartGroupList.addElement(smartsGroup);
                    peakToSmartGroupListCollection.addElement(peakToSmartGroupList);
                }
            }
        }
        breader.close();
        settings.set(VariableNames.PEAK_TO_SMARTS_GROUP_LIST_COLLECTION_NAME, peakToSmartGroupListCollection);
    }
}
Also used : PeakToSmartsGroupListCollection(de.ipbhalle.metfraglib.substructure.PeakToSmartsGroupListCollection) BufferedReader(java.io.BufferedReader) SmartsGroup(de.ipbhalle.metfraglib.substructure.SmartsGroup) FileReader(java.io.FileReader) DefaultPeakList(de.ipbhalle.metfraglib.list.DefaultPeakList) File(java.io.File) PeakToSmartsGroupList(de.ipbhalle.metfraglib.substructure.PeakToSmartsGroupList)

Example 2 with PeakToSmartsGroupList

use of de.ipbhalle.metfraglib.substructure.PeakToSmartsGroupList in project MetFragRelaunched by ipb-halle.

the class AutomatedLossSubstructureAnnotationScore method calculate.

public void calculate() {
    this.value = 0.0;
    PeakToSmartsGroupListCollection peakToSmartGroupListCollection = (PeakToSmartsGroupListCollection) this.settings.get(VariableNames.LOSS_TO_SMARTS_GROUP_LIST_COLLECTION_NAME);
    for (int i = 0; i < peakToSmartGroupListCollection.getNumberElements(); i++) {
        PeakToSmartsGroupList peakToSmartsGroupList = peakToSmartGroupListCollection.getElement(i);
        this.value += peakToSmartsGroupList.getMaximalMatchingProbabilitySorted(this.candidate);
    }
    this.calculationFinished = true;
}
Also used : PeakToSmartsGroupListCollection(de.ipbhalle.metfraglib.substructure.PeakToSmartsGroupListCollection) PeakToSmartsGroupList(de.ipbhalle.metfraglib.substructure.PeakToSmartsGroupList)

Example 3 with PeakToSmartsGroupList

use of de.ipbhalle.metfraglib.substructure.PeakToSmartsGroupList in project MetFragRelaunched by ipb-halle.

the class CombinedAutomatedAnnotationScore method calculate.

public void calculate() {
    this.value = 0.0;
    PeakToSmartsGroupListCollection peakToSmartGroupListCollection = (PeakToSmartsGroupListCollection) this.settings.get(VariableNames.PEAK_TO_SMARTS_GROUP_LIST_COLLECTION_NAME);
    PeakToSmartsGroupListCollection lossToSmartGroupListCollection = (PeakToSmartsGroupListCollection) this.settings.get(VariableNames.LOSS_TO_SMARTS_GROUP_LIST_COLLECTION_NAME);
    for (int i = 0; i < peakToSmartGroupListCollection.getNumberElements(); i++) {
        PeakToSmartsGroupList peakToSmartsGroupList = peakToSmartGroupListCollection.getElement(i);
        this.value += peakToSmartsGroupList.getMaximalMatchingProbabilitySorted(this.candidate);
    }
    for (int i = 0; i < peakToSmartGroupListCollection.getNumberElements(); i++) {
        PeakToSmartsGroupList peakToSmartsGroupList = lossToSmartGroupListCollection.getElement(i);
        this.value += peakToSmartsGroupList.getMaximalMatchingProbabilitySorted(this.candidate);
    }
    this.calculationFinished = true;
}
Also used : PeakToSmartsGroupListCollection(de.ipbhalle.metfraglib.substructure.PeakToSmartsGroupListCollection) PeakToSmartsGroupList(de.ipbhalle.metfraglib.substructure.PeakToSmartsGroupList)

Example 4 with PeakToSmartsGroupList

use of de.ipbhalle.metfraglib.substructure.PeakToSmartsGroupList in project MetFragRelaunched by ipb-halle.

the class WriteLossAnnotationFile method main.

/*
	 * write annotation file
	 * 
	 * filename - input file name
	 * mzppm
	 * mzabs
	 * probtype - probability type: 1 - P ( s | p ); 2 - P ( p | s ); 3 - P ( p , s ) from s; 4 - P ( p , s ) from p; 5 - P ( s | p ) P ( p | s ) P ( p , s )_s P ( p , s )_p
	 * output - output smarts
	 * outputSMILES - output smiles
	 * occurThresh
	 * 
	 */
public static void main(String[] args) throws MultipleHeadersFoundInInputDatabaseException, Exception {
    java.util.Hashtable<String, String> readParameters = readParameters(args);
    if (!readParameters.containsKey("filename")) {
        System.err.println("filename missing");
        System.exit(1);
    }
    if (!readParameters.containsKey("mzppm")) {
        System.err.println("mzppm missing");
        System.exit(1);
    }
    if (!readParameters.containsKey("mzabs")) {
        System.err.println("mzabs missing");
        System.exit(1);
    }
    if (!readParameters.containsKey("probtype")) {
        System.err.println("probtype missing");
        System.exit(1);
    }
    String filename = readParameters.get("filename");
    Double mzppm = Double.parseDouble(readParameters.get("mzppm"));
    Double mzabs = Double.parseDouble(readParameters.get("mzabs"));
    Integer probabilityType = Integer.parseInt(readParameters.get("probtype"));
    String output = null;
    String outputSmiles = null;
    Integer occurThresh = null;
    if (readParameters.containsKey("output"))
        output = readParameters.get("output");
    if (readParameters.containsKey("outputSMILES"))
        outputSmiles = readParameters.get("outputSMILES");
    if (readParameters.containsKey("occurThresh"))
        occurThresh = Integer.parseInt(readParameters.get("occurThresh"));
    Settings settings = new Settings();
    settings.set(VariableNames.LOCAL_DATABASE_PATH_NAME, filename);
    LocalPSVDatabase db = new LocalPSVDatabase(settings);
    java.util.ArrayList<String> ids = db.getCandidateIdentifiers();
    CandidateList candidateList = db.getCandidateByIdentifier(ids);
    // SmilesOfExplPeaks
    PeakToSmartsGroupListCollection peakToSmartGroupListCollection = new PeakToSmartsGroupListCollection();
    for (int i = 0; i < candidateList.getNumberElements(); i++) {
        ICandidate candidate = candidateList.getElement(i);
        String smilesOfExplPeaks = (String) candidate.getProperty("LossSmilesOfExplPeaks");
        String aromaticSmilesOfExplPeaks = (String) candidate.getProperty("LossAromaticSmilesOfExplPeaks");
        smilesOfExplPeaks = smilesOfExplPeaks.trim();
        aromaticSmilesOfExplPeaks = aromaticSmilesOfExplPeaks.trim();
        if (smilesOfExplPeaks.equals("NA") || aromaticSmilesOfExplPeaks.equals("NA"))
            continue;
        String[] pairs = smilesOfExplPeaks.split(";");
        String[] aromaticPairs = aromaticSmilesOfExplPeaks.split(";");
        if (pairs.length != aromaticPairs.length) {
            System.out.println(candidate.getIdentifier() + " " + candidate.getProperty(VariableNames.INCHI_KEY_1_NAME));
            continue;
        }
        for (int k = 0; k < pairs.length; k++) {
            String[] tmp = pairs[k].split(":");
            String[] aromaticTmp = aromaticPairs[k].split(":");
            Double peak = Double.parseDouble(tmp[0]);
            String smiles = null;
            String smarts = null;
            try {
                smiles = tmp[1];
                smarts = aromaticTmp[1];
            } catch (Exception e) {
                continue;
            }
            PeakToSmartsGroupList peakToSmartGroupList = peakToSmartGroupListCollection.getElementByPeak(peak, mzppm, mzabs);
            if (peakToSmartGroupList == null) {
                peakToSmartGroupList = new PeakToSmartsGroupList(peak);
                SmartsGroup obj = new SmartsGroup(0.0, null, null, null);
                obj.addElement(smarts);
                obj.addSmiles(smiles);
                peakToSmartGroupList.addElement(obj);
                peakToSmartGroupListCollection.addElementSorted(peakToSmartGroupList);
            } else {
                peakToSmartGroupList.setPeakmz((peakToSmartGroupList.getPeakmz() + peak) / 2.0);
                SmartsGroup smartsGroup = peakToSmartGroupList.getElementBySmiles(smiles, 1.0);
                if (smartsGroup != null) {
                    smartsGroup.addElement(smarts);
                    smartsGroup.addSmiles(smiles);
                } else {
                    smartsGroup = new SmartsGroup(0.0, null, null, null);
                    smartsGroup.addElement(smarts);
                    smartsGroup.addSmiles(smiles);
                    peakToSmartGroupList.addElement(smartsGroup);
                }
            }
        }
    }
    // test filtering
    if (occurThresh != null)
        peakToSmartGroupListCollection.filterByOccurence(occurThresh);
    peakToSmartGroupListCollection.annotateIds();
    // get absolute numbers of single substructure occurences
    // N^(s)
    int[] substrOccurences = peakToSmartGroupListCollection.calculateSubstructureAbsoluteProbabilities();
    int[] peakOccurences = peakToSmartGroupListCollection.calculatePeakAbsoluteProbabilities();
    // P ( s | p )
    if (probabilityType == 1) {
        // calculate P ( s | p )
        peakToSmartGroupListCollection.updateConditionalProbabilities();
        peakToSmartGroupListCollection.removeDuplicates();
        peakToSmartGroupListCollection.setProbabilityToConditionalProbability_sp();
        peakToSmartGroupListCollection.sortElementsByProbability();
    }
    // P ( p | s )
    if (probabilityType == 2) {
        System.out.println("annotating IDs");
        // calculate P ( p | s )
        peakToSmartGroupListCollection.updateProbabilities(substrOccurences);
        peakToSmartGroupListCollection.removeDuplicates();
        peakToSmartGroupListCollection.setProbabilityToConditionalProbability_ps();
        peakToSmartGroupListCollection.sortElementsByProbability();
    }
    // P ( p , s )_s
    if (probabilityType == 3) {
        System.out.println("annotating IDs");
        // calculate P ( p , s )
        peakToSmartGroupListCollection.updateJointProbabilitiesWithSubstructures(substrOccurences);
        peakToSmartGroupListCollection.removeDuplicates();
        peakToSmartGroupListCollection.setProbabilityToJointProbability();
        peakToSmartGroupListCollection.sortElementsByProbability();
    }
    // P ( p , s )_p
    if (probabilityType == 4) {
        System.out.println("annotating IDs");
        // calculate P ( p , s )
        peakToSmartGroupListCollection.updateJointProbabilitiesWithPeaks(peakOccurences);
        peakToSmartGroupListCollection.removeDuplicates();
        peakToSmartGroupListCollection.setProbabilityToJointProbability();
        peakToSmartGroupListCollection.sortElementsByProbability();
    }
    // P ( s | p ) P ( p | s ) P( s, p )_s
    if (probabilityType == 5) {
        System.out.println("annotating IDs");
        peakToSmartGroupListCollection.updateConditionalProbabilities();
        peakToSmartGroupListCollection.updateProbabilities(substrOccurences);
        peakToSmartGroupListCollection.updateJointProbabilitiesWithSubstructures(substrOccurences);
        peakToSmartGroupListCollection.removeDuplicates();
        peakToSmartGroupListCollection.setProbabilityToConditionalProbability_sp();
        peakToSmartGroupListCollection.sortElementsByProbability();
        if (output == null)
            peakToSmartGroupListCollection.print();
        else {
            BufferedWriter bwriter = new BufferedWriter(new FileWriter(new File(output + "_1")));
            bwriter.write(peakToSmartGroupListCollection.toString());
            bwriter.close();
        }
        if (outputSmiles != null) {
            BufferedWriter bwriter = new BufferedWriter(new FileWriter(new File(outputSmiles + "_1")));
            bwriter.write(peakToSmartGroupListCollection.toStringSmiles());
            bwriter.close();
        }
        peakToSmartGroupListCollection.setProbabilityToConditionalProbability_ps();
        peakToSmartGroupListCollection.sortElementsByProbability();
        if (output == null)
            peakToSmartGroupListCollection.print();
        else {
            BufferedWriter bwriter = new BufferedWriter(new FileWriter(new File(output + "_2")));
            bwriter.write(peakToSmartGroupListCollection.toString());
            bwriter.close();
        }
        if (outputSmiles != null) {
            BufferedWriter bwriter = new BufferedWriter(new FileWriter(new File(outputSmiles + "_2")));
            bwriter.write(peakToSmartGroupListCollection.toStringSmiles());
            bwriter.close();
        }
        peakToSmartGroupListCollection.setProbabilityToJointProbability();
        if (output == null)
            peakToSmartGroupListCollection.print();
        else {
            BufferedWriter bwriter = new BufferedWriter(new FileWriter(new File(output + "_3")));
            peakToSmartGroupListCollection.sortElementsByProbability();
            bwriter.write(peakToSmartGroupListCollection.toString());
            bwriter.close();
        }
        if (outputSmiles != null) {
            BufferedWriter bwriter = new BufferedWriter(new FileWriter(new File(outputSmiles + "_3")));
            bwriter.write(peakToSmartGroupListCollection.toStringSmiles());
            bwriter.close();
        }
    }
    if (probabilityType != 5) {
        if (output == null)
            peakToSmartGroupListCollection.print();
        else {
            BufferedWriter bwriter = new BufferedWriter(new FileWriter(new File(output)));
            bwriter.write(peakToSmartGroupListCollection.toString());
            bwriter.close();
        }
        if (outputSmiles != null) {
            BufferedWriter bwriter = new BufferedWriter(new FileWriter(new File(outputSmiles)));
            bwriter.write(peakToSmartGroupListCollection.toStringSmiles());
            bwriter.close();
        }
    }
}
Also used : PeakToSmartsGroupListCollection(de.ipbhalle.metfraglib.substructure.PeakToSmartsGroupListCollection) FileWriter(java.io.FileWriter) ICandidate(de.ipbhalle.metfraglib.interfaces.ICandidate) MultipleHeadersFoundInInputDatabaseException(de.ipbhalle.metfraglib.exceptions.MultipleHeadersFoundInInputDatabaseException) BufferedWriter(java.io.BufferedWriter) LocalPSVDatabase(de.ipbhalle.metfraglib.database.LocalPSVDatabase) SmartsGroup(de.ipbhalle.metfraglib.substructure.SmartsGroup) CandidateList(de.ipbhalle.metfraglib.list.CandidateList) File(java.io.File) Settings(de.ipbhalle.metfraglib.settings.Settings) PeakToSmartsGroupList(de.ipbhalle.metfraglib.substructure.PeakToSmartsGroupList)

Example 5 with PeakToSmartsGroupList

use of de.ipbhalle.metfraglib.substructure.PeakToSmartsGroupList in project MetFragRelaunched by ipb-halle.

the class AutomatedPeakSubstructureAnnotationScore method calculate.

public void calculate() {
    this.value = 0.0;
    int matches = 0;
    PeakToSmartsGroupListCollection peakToSmartGroupListCollection = (PeakToSmartsGroupListCollection) this.settings.get(VariableNames.PEAK_TO_SMARTS_GROUP_LIST_COLLECTION_NAME);
    for (int i = 0; i < peakToSmartGroupListCollection.getNumberElements(); i++) {
        PeakToSmartsGroupList peakToSmartsGroupList = peakToSmartGroupListCollection.getElement(i);
        double currentValue = peakToSmartsGroupList.getMaximalMatchingProbabilitySorted(this.candidate);
        if (currentValue != 0.0)
            matches++;
        this.value += value;
    }
    this.candidate.setProperty("AutomatedSubstructureAnnotationScore_Matches", matches);
    this.calculationFinished = true;
}
Also used : PeakToSmartsGroupListCollection(de.ipbhalle.metfraglib.substructure.PeakToSmartsGroupListCollection) PeakToSmartsGroupList(de.ipbhalle.metfraglib.substructure.PeakToSmartsGroupList)

Aggregations

PeakToSmartsGroupList (de.ipbhalle.metfraglib.substructure.PeakToSmartsGroupList)8 PeakToSmartsGroupListCollection (de.ipbhalle.metfraglib.substructure.PeakToSmartsGroupListCollection)8 SmartsGroup (de.ipbhalle.metfraglib.substructure.SmartsGroup)5 File (java.io.File)5 DefaultPeakList (de.ipbhalle.metfraglib.list.DefaultPeakList)3 BufferedReader (java.io.BufferedReader)3 FileReader (java.io.FileReader)3 LocalPSVDatabase (de.ipbhalle.metfraglib.database.LocalPSVDatabase)2 MultipleHeadersFoundInInputDatabaseException (de.ipbhalle.metfraglib.exceptions.MultipleHeadersFoundInInputDatabaseException)2 ICandidate (de.ipbhalle.metfraglib.interfaces.ICandidate)2 CandidateList (de.ipbhalle.metfraglib.list.CandidateList)2 Settings (de.ipbhalle.metfraglib.settings.Settings)2 BufferedWriter (java.io.BufferedWriter)2 FileWriter (java.io.FileWriter)2