Package eu.isas.peptideshaker.export.sections

Source Code of eu.isas.peptideshaker.export.sections.PsValidationSection

package eu.isas.peptideshaker.export.sections;

import com.compomics.util.Util;
import com.compomics.util.waiting.WaitingHandler;
import com.compomics.util.io.export.ExportFeature;
import com.compomics.util.io.export.ExportWriter;
import eu.isas.peptideshaker.export.exportfeatures.PsValidationFeature;
import eu.isas.peptideshaker.myparameters.PSMaps;
import eu.isas.peptideshaker.scoring.PeptideSpecificMap;
import eu.isas.peptideshaker.scoring.ProteinMap;
import eu.isas.peptideshaker.scoring.PsmSpecificMap;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;

/**
* This class outputs the validation related export features.
*
* @author Marc Vaudel
*/
public class PsValidationSection {

    /**
     * The features to export.
     */
    private ArrayList<PsValidationFeature> validationFeatures;
    /**
     * Boolean indicating whether the line shall be indexed.
     */
    private boolean indexes;
    /**
     * Boolean indicating whether column headers shall be included.
     */
    private boolean header;
    /**
     * The writer used to send the output to file.
     */
    private ExportWriter writer;

    /**
     * Constructor.
     *
     * @param exportFeatures the features to export in this section
     * @param indexes indicates whether the line index should be written
     * @param header indicates whether the table header should be written
     * @param writer the writer which will write to the file
     */
    public PsValidationSection(ArrayList<ExportFeature> exportFeatures, boolean indexes, boolean header, ExportWriter writer) {
        this.indexes = indexes;
        this.header = header;
        this.writer = writer;
        validationFeatures = new ArrayList<PsValidationFeature>(exportFeatures.size());
        for (ExportFeature exportFeature : exportFeatures) {
            if (exportFeature instanceof PsValidationFeature) {
                validationFeatures.add((PsValidationFeature) exportFeature);
            } else {
                throw new IllegalArgumentException("Impossible to export " + exportFeature.getClass().getName() + " as validation feature.");
            }
        }
        Collections.sort(validationFeatures);
    }

    /**
     * Writes the desired section.
     *
     * @param psMaps the target/decoy maps of this project
     * @param waitingHandler the waiting handler
     * @throws IOException exception thrown whenever an error occurred while
     * writing the file.
     */
    public void writeSection(PSMaps psMaps, WaitingHandler waitingHandler) throws IOException {

        if (waitingHandler != null) {
            waitingHandler.setSecondaryProgressCounterIndeterminate(true);
        }

        if (header) {
            if (indexes) {
                writer.writeHeaderText("");
                writer.addSeparator();
            }
            writer.writeHeaderText("Parameter");
            writer.addSeparator();
            writer.writeHeaderText("Value");
            writer.newLine();
        }

        int line = 1;

        for (PsValidationFeature validationFeature : validationFeatures) {
            switch (validationFeature) {
                case peptide_accuracy:
                    PeptideSpecificMap peptideTargetDecoyMap = psMaps.getPeptideSpecificMap();
                    ArrayList<String> peptideKeys = peptideTargetDecoyMap.getKeys();
                    for (String peptideKey : peptideKeys) {
                        if (indexes) {
                            writer.write(line + "");
                            writer.addSeparator();
                        }
                        writer.write(validationFeature.getTitle());
                        writer.addSeparator();
                        double pmin = 0;
                        int nMax = peptideTargetDecoyMap.getTargetDecoyMap(peptideKey).getnMax();
                        if (nMax != 0) {
                            pmin = 100.0 / nMax;
                        }
                        writer.write(Util.roundDouble(pmin, 2) + " %");
                        writer.newLine();
                        line++;
                    }
                    break;
                case peptide_confidence:
                    peptideTargetDecoyMap = psMaps.getPeptideSpecificMap();
                    peptideKeys = peptideTargetDecoyMap.getKeys();
                    for (String peptideKey : peptideKeys) {
                        if (indexes) {
                            writer.write(line + "");
                            writer.addSeparator();
                        }
                        writer.write(validationFeature.getTitle());
                        writer.addSeparator();
                        double result = peptideTargetDecoyMap.getTargetDecoyMap(peptideKey).getTargetDecoyResults().getConfidenceLimit();
                        writer.write(Util.roundDouble(result, 2) + " %");
                        writer.newLine();
                        line++;
                    }
                    break;
                case peptide_fdr:
                    peptideTargetDecoyMap = psMaps.getPeptideSpecificMap();
                    peptideKeys = peptideTargetDecoyMap.getKeys();
                    for (String peptideKey : peptideKeys) {
                        if (indexes) {
                            writer.write(line + "");
                            writer.addSeparator();
                        }
                        writer.write(validationFeature.getTitle());
                        writer.addSeparator();
                        double result = peptideTargetDecoyMap.getTargetDecoyMap(peptideKey).getTargetDecoyResults().getFdrLimit();
                        writer.write(Util.roundDouble(result, 2) + " %");
                        writer.newLine();
                        line++;
                    }
                    break;
                case peptide_fnr:
                    peptideTargetDecoyMap = psMaps.getPeptideSpecificMap();
                    peptideKeys = peptideTargetDecoyMap.getKeys();
                    for (String peptideKey : peptideKeys) {
                        if (indexes) {
                            writer.write(line + "");
                            writer.addSeparator();
                        }
                        writer.write(validationFeature.getTitle());
                        writer.addSeparator();
                        double result = peptideTargetDecoyMap.getTargetDecoyMap(peptideKey).getTargetDecoyResults().getFnrLimit();
                        writer.write(Util.roundDouble(result, 2) + " %");
                        writer.newLine();
                        line++;
                    }
                    break;
                case peptide_pep:
                    peptideTargetDecoyMap = psMaps.getPeptideSpecificMap();
                    peptideKeys = peptideTargetDecoyMap.getKeys();
                    for (String peptideKey : peptideKeys) {
                        if (indexes) {
                            writer.write(line + "");
                            writer.addSeparator();
                        }
                        writer.write(validationFeature.getTitle());
                        writer.addSeparator();
                        double result = 100 - peptideTargetDecoyMap.getTargetDecoyMap(peptideKey).getTargetDecoyResults().getConfidenceLimit();
                        writer.write(Util.roundDouble(result, 2) + " %");
                        writer.newLine();
                        line++;
                    }
                    break;
                case total_peptide:
                    peptideTargetDecoyMap = psMaps.getPeptideSpecificMap();
                    peptideKeys = peptideTargetDecoyMap.getKeys();
                    for (String peptideKey : peptideKeys) {
                        if (indexes) {
                            writer.write(line + "");
                            writer.addSeparator();
                        }
                        writer.write(validationFeature.getTitle());
                        writer.addSeparator();
                        double result = peptideTargetDecoyMap.getTargetDecoyMap(peptideKey).getTargetDecoyResults().getnTPTotal();
                        writer.write(Util.roundDouble(result, 2) + "");
                        writer.newLine();
                        line++;
                    }
                    break;
                case validated_peptide:
                    peptideTargetDecoyMap = psMaps.getPeptideSpecificMap();
                    peptideKeys = peptideTargetDecoyMap.getKeys();
                    for (String peptideKey : peptideKeys) {
                        if (indexes) {
                            writer.write(line + "");
                            writer.addSeparator();
                        }
                        writer.write(validationFeature.getTitle());
                        writer.addSeparator();
                        double result = peptideTargetDecoyMap.getTargetDecoyMap(peptideKey).getTargetDecoyResults().getN();
                        writer.write(Util.roundDouble(result, 0) + "");
                        writer.newLine();
                        line++;
                    }
                    break;
                case protein_accuracy:
                    if (indexes) {
                        writer.write(line + "");
                        writer.addSeparator();
                    }
                    writer.write(validationFeature.getTitle());
                    writer.addSeparator();
                    ProteinMap proteinMap = psMaps.getProteinMap();
                    double pmin = 0;
                    int nMax = proteinMap.getTargetDecoyMap().getnMax();
                    if (nMax != 0) {
                        pmin = 100.0 / nMax;
                    }
                    writer.write(Util.roundDouble(pmin, 2) + " %");
                    writer.newLine();
                    line++;
                    break;
                case protein_confidence:
                    if (indexes) {
                        writer.write(line + "");
                        writer.addSeparator();
                    }
                    writer.write(validationFeature.getTitle());
                    writer.addSeparator();
                    proteinMap = psMaps.getProteinMap();
                    double result = proteinMap.getTargetDecoyMap().getTargetDecoyResults().getConfidenceLimit();
                    writer.write(Util.roundDouble(result, 2) + " %");
                    writer.newLine();
                    line++;
                    break;
                case protein_fdr:
                    if (indexes) {
                        writer.write(line + "");
                    }
                    writer.write(validationFeature.getTitle());
                    writer.addSeparator();
                    proteinMap = psMaps.getProteinMap();
                    result = proteinMap.getTargetDecoyMap().getTargetDecoyResults().getFdrLimit();
                    writer.write(Util.roundDouble(result, 2) + " %");
                    writer.newLine();
                    line++;
                    break;
                case protein_fnr:
                    if (indexes) {
                        writer.write(line + "");
                        writer.addSeparator();
                    }
                    writer.write(validationFeature.getTitle());
                    writer.addSeparator();
                    proteinMap = psMaps.getProteinMap();
                    result = proteinMap.getTargetDecoyMap().getTargetDecoyResults().getFnrLimit();
                    writer.write(Util.roundDouble(result, 2) + " %");
                    writer.newLine();
                    line++;
                    break;
                case protein_pep:
                    if (indexes) {
                        writer.write(line + "");
                        writer.addSeparator();
                    }
                    writer.write(validationFeature.getTitle());
                    writer.addSeparator();
                    proteinMap = psMaps.getProteinMap();
                    result = 100 - proteinMap.getTargetDecoyMap().getTargetDecoyResults().getConfidenceLimit();
                    writer.write(Util.roundDouble(result, 2) + " %");
                    writer.newLine();
                    line++;
                    break;
                case total_protein:
                    if (indexes) {
                        writer.write(line + "");
                        writer.addSeparator();
                    }
                    writer.write(validationFeature.getTitle());
                    writer.addSeparator();
                    proteinMap = psMaps.getProteinMap();
                    result = proteinMap.getTargetDecoyMap().getTargetDecoyResults().getnTPTotal();
                    writer.write(Util.roundDouble(result, 2) + "");
                    writer.newLine();
                    line++;
                    break;
                case validated_protein:
                    if (indexes) {
                        writer.write(line + "");
                        writer.addSeparator();
                    }
                    writer.write(validationFeature.getTitle());
                    writer.addSeparator();
                    proteinMap = psMaps.getProteinMap();
                    result = proteinMap.getTargetDecoyMap().getTargetDecoyResults().getN();
                    writer.write(Util.roundDouble(result, 0) + "");
                    writer.newLine();
                    line++;
                    break;
                case psm_accuracy:
                    PsmSpecificMap psmTargetDecoyMap = psMaps.getPsmSpecificMap();
                    for (int charge : psmTargetDecoyMap.getPossibleCharges()) {
                        for (String file : psmTargetDecoyMap.getFilesAtCharge(charge)) {
                            if (!psmTargetDecoyMap.isFileGrouped(charge, file)) {
                                if (indexes) {
                                    writer.write(line + "");
                                    writer.addSeparator();
                                }
                                writer.write(validationFeature.getTitle());
                                writer.addSeparator();
                                pmin = 0;
                                nMax = psmTargetDecoyMap.getTargetDecoyMap(charge, file).getnMax();
                                if (nMax != 0) {
                                    pmin = 100.0 / nMax;
                                }
                                writer.write(Util.roundDouble(pmin, 2) + " %");
                                writer.newLine();
                                line++;
                            }
                        }
                    }
                    for (int charge : psmTargetDecoyMap.getGroupedCharges()) {
                        if (indexes) {
                            writer.write(line + "");
                            writer.addSeparator();
                        }
                        writer.write(validationFeature.getTitle());
                        writer.addSeparator();
                        pmin = 0;
                        nMax = psmTargetDecoyMap.getTargetDecoyMap(charge, null).getnMax();
                        if (nMax != 0) {
                            pmin = 100.0 / nMax;
                        }
                        writer.write(Util.roundDouble(pmin, 2) + " %");
                        writer.newLine();
                        line++;
                    }
                    break;
                case psm_confidence:
                    psmTargetDecoyMap = psMaps.getPsmSpecificMap();
                    for (int charge : psmTargetDecoyMap.getPossibleCharges()) {
                        for (String file : psmTargetDecoyMap.getFilesAtCharge(charge)) {
                            if (!psmTargetDecoyMap.isFileGrouped(charge, file)) {
                                if (indexes) {
                                    writer.write(line + "");
                                    writer.addSeparator();
                                }
                                writer.write(validationFeature.getTitle());
                                writer.addSeparator();
                                result = psmTargetDecoyMap.getTargetDecoyMap(charge, file).getTargetDecoyResults().getConfidenceLimit();
                                writer.write(Util.roundDouble(result, 2) + " %");
                                writer.newLine();
                                line++;
                            }
                        }
                    }
                    for (int charge : psmTargetDecoyMap.getGroupedCharges()) {
                        if (indexes) {
                            writer.write(line + "");
                            writer.addSeparator();
                        }
                        writer.write(validationFeature.getTitle());
                        writer.addSeparator();
                        result = psmTargetDecoyMap.getTargetDecoyMap(charge, null).getTargetDecoyResults().getConfidenceLimit();
                        writer.write(Util.roundDouble(result, 2) + " %");
                        writer.newLine();
                        line++;
                    }
                    break;
                case psm_fdr:
                    psmTargetDecoyMap = psMaps.getPsmSpecificMap();
                    for (int charge : psmTargetDecoyMap.getPossibleCharges()) {
                        for (String file : psmTargetDecoyMap.getFilesAtCharge(charge)) {
                            if (!psmTargetDecoyMap.isFileGrouped(charge, file)) {
                                if (indexes) {
                                    writer.write(line + "");
                                    writer.addSeparator();
                                }
                                writer.write(validationFeature.getTitle());
                                writer.addSeparator();
                                result = psmTargetDecoyMap.getTargetDecoyMap(charge, file).getTargetDecoyResults().getFdrLimit();
                                writer.write(Util.roundDouble(result, 2) + " %");
                                writer.newLine();
                                line++;
                            }
                        }
                    }
                    for (int charge : psmTargetDecoyMap.getGroupedCharges()) {
                        if (indexes) {
                            writer.write(line + "");
                            writer.addSeparator();
                        }
                        writer.write(validationFeature.getTitle());
                        writer.addSeparator();
                        result = psmTargetDecoyMap.getTargetDecoyMap(charge, null).getTargetDecoyResults().getFdrLimit();
                        writer.write(Util.roundDouble(result, 2) + " %");
                        writer.newLine();
                        line++;
                    }
                    break;
                case psm_fnr:
                    psmTargetDecoyMap = psMaps.getPsmSpecificMap();
                    for (int charge : psmTargetDecoyMap.getPossibleCharges()) {
                        for (String file : psmTargetDecoyMap.getFilesAtCharge(charge)) {
                            if (!psmTargetDecoyMap.isFileGrouped(charge, file)) {
                                if (indexes) {
                                    writer.write(line + "");
                                    writer.addSeparator();
                                }
                                writer.write(validationFeature.getTitle());
                                writer.addSeparator();
                                result = psmTargetDecoyMap.getTargetDecoyMap(charge, file).getTargetDecoyResults().getFnrLimit();
                                writer.write(Util.roundDouble(result, 2) + " %");
                                writer.newLine();
                                line++;
                            }
                        }
                    }
                    for (int charge : psmTargetDecoyMap.getGroupedCharges()) {
                        if (indexes) {
                            writer.write(line + "");
                            writer.addSeparator();
                        }
                        writer.write(validationFeature.getTitle());
                        writer.addSeparator();
                        result = psmTargetDecoyMap.getTargetDecoyMap(charge, null).getTargetDecoyResults().getFnrLimit();
                        writer.write(Util.roundDouble(result, 2) + " %");
                        writer.newLine();
                        line++;
                    }
                    break;
                case psm_pep:
                    psmTargetDecoyMap = psMaps.getPsmSpecificMap();
                    for (int charge : psmTargetDecoyMap.getPossibleCharges()) {
                        for (String file : psmTargetDecoyMap.getFilesAtCharge(charge)) {
                            if (!psmTargetDecoyMap.isFileGrouped(charge, file)) {
                                if (indexes) {
                                    writer.write(line + "");
                                    writer.addSeparator();
                                }
                                writer.write(validationFeature.getTitle());
                                writer.addSeparator();
                                result = 100 - psmTargetDecoyMap.getTargetDecoyMap(charge, file).getTargetDecoyResults().getConfidenceLimit();
                                writer.write(Util.roundDouble(result, 2) + " %");
                                writer.newLine();
                                line++;
                            }
                        }
                    }
                    for (int charge : psmTargetDecoyMap.getGroupedCharges()) {
                        if (indexes) {
                            writer.write(line + "");
                            writer.addSeparator();
                        }
                        writer.write(validationFeature.getTitle());
                        writer.addSeparator();
                        result = 100 - psmTargetDecoyMap.getTargetDecoyMap(charge, null).getTargetDecoyResults().getConfidenceLimit();
                        writer.write(Util.roundDouble(result, 2) + " %");
                        writer.newLine();
                        line++;
                    }
                    break;
                case total_psm:
                    psmTargetDecoyMap = psMaps.getPsmSpecificMap();
                    for (int charge : psmTargetDecoyMap.getPossibleCharges()) {
                        for (String file : psmTargetDecoyMap.getFilesAtCharge(charge)) {
                            if (!psmTargetDecoyMap.isFileGrouped(charge, file)) {
                                if (indexes) {
                                    writer.write(line + "");
                                    writer.addSeparator();
                                }
                                writer.write(validationFeature.getTitle());
                                writer.addSeparator();
                                result = psmTargetDecoyMap.getTargetDecoyMap(charge, file).getTargetDecoyResults().getnTPTotal();
                                writer.write(Util.roundDouble(result, 2) + "");
                                writer.newLine();
                                line++;
                            }
                        }
                    }
                    for (int charge : psmTargetDecoyMap.getGroupedCharges()) {
                        if (indexes) {
                            writer.write(line + "");
                            writer.addSeparator();
                        }
                        writer.write(validationFeature.getTitle());
                        writer.addSeparator();
                        result = psmTargetDecoyMap.getTargetDecoyMap(charge, null).getTargetDecoyResults().getnTPTotal();
                        writer.write(Util.roundDouble(result, 2) + "");
                        writer.newLine();
                        line++;
                    }
                    break;
                case validated_psm:
                    psmTargetDecoyMap = psMaps.getPsmSpecificMap();
                    for (int charge : psmTargetDecoyMap.getPossibleCharges()) {
                        for (String file : psmTargetDecoyMap.getFilesAtCharge(charge)) {
                            if (!psmTargetDecoyMap.isFileGrouped(charge, file)) {
                                if (indexes) {
                                    writer.write(line + "");
                                    writer.addSeparator();
                                }
                                writer.write(validationFeature.getTitle());
                                writer.addSeparator();
                                result = psmTargetDecoyMap.getTargetDecoyMap(charge, file).getTargetDecoyResults().getN();
                                writer.write(Util.roundDouble(result, 0) + "");
                                writer.newLine();
                                line++;
                            }
                        }
                    }
                    for (int charge : psmTargetDecoyMap.getGroupedCharges()) {
                        if (indexes) {
                            writer.write(line + "");
                            writer.addSeparator();
                        }
                        writer.write(validationFeature.getTitle());
                        writer.addSeparator();
                        result = psmTargetDecoyMap.getTargetDecoyMap(charge, null).getTargetDecoyResults().getN();
                        writer.write(Util.roundDouble(result, 0) + "");
                        writer.newLine();
                        line++;
                    }
                    break;
                default:
                    writer.write("Not implemented");
            }
        }
    }
}
TOP

Related Classes of eu.isas.peptideshaker.export.sections.PsValidationSection

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.