ExampleCode2 - PGB-LIV/jmzquantml GitHub Wiki

###Using the API Example2: MzQuantMLModifier package uk.ac.liv.jmzquantmlexample;

/** * An example class showing how to use jmzQuantML to modify an existing mzQuantML file 
    * @author Da Qi 
    * @institute University of Liverpool 
    * @time 19-Jun-2013 12:32:41 
/ 

import java.io.File; 
import java.util.Arrays; 
import java.util.List; 
import uk.ac.liv.jmzqml.MzQuantMLElement; 
import uk.ac.liv.jmzqml.model.mzqml.*; 
import uk.ac.liv.jmzqml.xml.io.MzQuantMLMarshaller; 
import uk.ac.liv.jmzqml.xml.io.MzQuantMLUnmarshaller;

public class MzQuantMLModifier {

public static void main(String[] args) {

    File mzqFile = new File("CPTAC-Progenesis-small-example.mzq");

    // create an MzQuantMLUnmarsahller object
    MzQuantMLUnmarshaller um = new MzQuantMLUnmarshaller(mzqFile);

    // unmarshal the original MzQuantML object
    MzQuantML mzq = um.unmarshal(MzQuantMLElement.MzQuantML);

    // accession of the protein whose normalised abundance will be modified
    String protAcc = "YPR148C";
    String protId = "";

    // populate these new abundance value to the specified protein in AssayQuantLayer
    String[] newValueArray = {"14361.336", "5463.827", "9691.717", "15983.442", "6562.106", "6711.486",
                          "11038.94", "10559.844", "4985.336", "11644.993", "10002.761", "8683.371"};
    List<String> newValueList = Arrays.asList(newValueArray);

    // unmarshal the <ProteinList>
    ProteinList proteinList = um.unmarshal(MzQuantMLElement.ProteinList);

    // find the protein ID based on accession
    List<Protein> proteins = proteinList.getProtein();
    for (Protein protein : proteins) {
        if (protein.getAccession().equals(protAcc)) {
            protId = protein.getId();
            break;
        }
    }

    // get the correct <AssayQuantLayer>
    List<QuantLayer> assayQuantLayers = proteinList.getAssayQuantLayer();
    QuantLayer assayQuantLayer = assayQuantLayers.get(0);

    // get the <DataMatrix> from <AssayQuantLayer>
    DataMatrix dm = assayQuantLayer.getDataMatrix();
    List<Row> rows = dm.getRow();
    for (Row row : rows) {
        if (row.getObjectRef().equals(protId)) {
            // replace the old data with new data
            row.getValue().clear();
            row.getValue().addAll(newValueList);
        }
    }

    // set the ProteinList to MzQuantML
    mzq.setProteinList(proteinList);

    // output the modified mzQuantML file
    MzQuantMLMarshaller marshaller = new MzQuantMLMarshaller("modifiedMzQuantML.mzq");
    marshaller.marshall(mzq);
  }
}
⚠️ **GitHub.com Fallback** ⚠️