All qpMerge data objects are stored in uk.ac.ed.bio.millar.proteomics They are designed to be serialised from and to XML with JAXB with the provided adaptors (see uk.ac.ed.bio.millar.proteomics.jaxb).
The root document is uk.ac.ed.bio.millar.proteomics.DataSet. The DataSet object contains sets of Feature, Peptide and Protein objects. For each of these object types there two lists: a visible set (termed Root objects in qpMerge) which are a subset of an invisible set. The default behaviour is that qpMerge will always apply merging processes only to the visible set. No peptide is ever deleted completely, it is simply removed from the visible list.
A Protein object has a many to many relationship with Peptide objects
A Peptide object has a one to many relationship with Feature objects
Each peptide contains a list of merged peptides (getMergedPeptides) which contain all invisible subordinate peptides (i.e. peptide that have been merged into this peptide). This relationship is transient so when getMergedPeptides is called each subordinate peptide is examined with getMergePeptides. There are inbuilt checks to detect circularity within the addMergedPeptide methods.
The Modification object can be instantiated from Progenesis or MaxQuant modification Strings. It must reference a amino acid sequence. When a Peptide is merged onto a longer amino acid sequence the Factory uk.ac.ed.bio.millar.merger.ModificationProjectionFactory can be a useful tool to project a Modification from a peptide onto a longer peptide or protein sequence that is a parent sequence to the original peptide.
Objects like Protein, Peptide and Feature which implement uk.ac.ed.bio.millar.proteomics.Quantifiable will have access to uk.ac.ed.bio.millar.proteomics.Observation to Double quantification maps. Observation is a MetaData object that reflects the experimental description. See uk.ac.ed.bio.millar.parser.TemplateMetaData for an example of how these MetaData objects are created.