/*
* EuroCarbDB, a framework for carbohydrate bioinformatics
*
* Copyright (c) 2006-2009, Eurocarb project, or third-party contributors as
* indicated by the @author tags or express copyright attribution
* statements applied by the authors.
*
* This copyrighted material is made available to anyone wishing to use, modify,
* copy, or redistribute it subject to the terms and conditions of the GNU
* Lesser General Public License, as published by the Free Software Foundation.
* A copy of this license accompanies this distribution in the file LICENSE.txt.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
* for more details.
*
* Last commit: $Rev: 1210 $ by $Author: glycoslave $ on $Date:: 2009-06-12 #$
*/
package org.eurocarbdb.application.glycanbuilder;
/**
Class that contains the option values to create a new glycan
composition object.
@author Alessio Ceroni (a.ceroni@imperial.ac.uk)
*/
public class CompositionOptions {
/** Identifier for the first generic residue */
public String OR1_NAME = "Or1";
/** Identifier for the second generic residue */
public String OR2_NAME = "Or2";
/** Identifier for the third generic residue */
public String OR3_NAME = "Or3";
/** Mass of the first generic residue */
public double OR1_MASS = 0.;
/** Mass of the second generic residue */
public double OR2_MASS = 0.;
/** Mass of the third generic residue */
public double OR3_MASS = 0.;
/** Number of pentoses */
public int PEN=0;
/** Number of hexoses */
public int HEX=0;
/** Number of heptoses */
public int HEP=0;
/** Number of hexosamines */
public int HEXN=0;
/** Number of n-acetyl hexosamines */
public int HEXNAC=0;
/** Number of deoxy-pentoses */
public int DPEN=0;
/** Number of deoxy-hexoses */
public int DHEX=0;
/** Number of dideoxy-hexoses */
public int DDHEX=0;
/** Number of metyl-hexoses */
public int MEHEX=0;
/** Number of instances of the first generic residue */
public int OR1=0;
/** Number of instances of the second generic residue */
public int OR2=0;
/** Number of instances of the third generic residue */
public int OR3=0;
/** Number of hexuronic acids */
public int HEXA=0;
/** Number of deoxy hexuronic acids */
public int DHEXA=0;
/** Number of n-glycolyl neuraminic acids */
public int NEU5GC=0;
/** Number of n-acetyl neuraminic acids */
public int NEU5AC=0;
/** Number of lactonised n-glycolyl neuraminic acids */
public int NEU5GCLAC=0;
/** Number of lactonised n-acetyl neuraminic acids */
public int NEU5ACLAC=0;
/** Number of Kdo residues */
public int KDO=0;
/** Number of Kdn residues */
public int KDN=0;
/** Number of muramic acids */
public int MUR=0;
/** Number of sulfates */
public int S=0;
/** Number of phosphates */
public int P=0;
/** Number of acetyl groups */
public int AC=0;
/** Number of pyruvates */
public int PYR=0;
/** Number of phosphocholines */
public int PC=0;
// serialization
/**
Store the option values into a configuration object.
*/
public void store(Configuration config) {
config.put("CompositionOptions","pen",PEN);
config.put("CompositionOptions","hex",HEX);
config.put("CompositionOptions","hep",HEP);
config.put("CompositionOptions","hexn",HEXN);
config.put("CompositionOptions","hexnac",HEXNAC);
config.put("CompositionOptions","dpen",DPEN);
config.put("CompositionOptions","dhex",DHEX);
config.put("CompositionOptions","ddhex",DDHEX);
config.put("CompositionOptions","mehex",MEHEX);
config.put("CompositionOptions","or1",OR1);
config.put("CompositionOptions","or2",OR2);
config.put("CompositionOptions","or3",OR3);
config.put("CompositionOptions","or1_mass",OR1_MASS);
config.put("CompositionOptions","or2_mass",OR2_MASS);
config.put("CompositionOptions","or3_mass",OR3_MASS);
config.put("CompositionOptions","hexa",HEXA);
config.put("CompositionOptions","dhexa",DHEXA);
config.put("CompositionOptions","neu5gc",NEU5GC);
config.put("CompositionOptions","neu5ac",NEU5AC);
config.put("CompositionOptions","neu5gclac",NEU5GCLAC);
config.put("CompositionOptions","neu5aclac",NEU5ACLAC);
config.put("CompositionOptions","kdp",KDO);
config.put("CompositionOptions","kdn",KDN);
config.put("CompositionOptions","mur",MUR);
config.put("CompositionOptions","s",S);
config.put("CompositionOptions","p",P);
config.put("CompositionOptions","ac",AC);
config.put("CompositionOptions","pyr",PYR);
config.put("CompositionOptions","pc",PC);
}
/**
Retrieve the option values from a configuration object.
*/
public void retrieve(Configuration config) {
PEN = config.get("CompositionOptions","pen",PEN);
HEX = config.get("CompositionOptions","hex",HEX);
HEP = config.get("CompositionOptions","hep",HEP);
HEXN = config.get("CompositionOptions","hexn",HEXN);
HEXNAC = config.get("CompositionOptions","hexnac",HEXNAC);
DPEN = config.get("CompositionOptions","dpen",DPEN);
DHEX = config.get("CompositionOptions","dhex",DHEX);
DDHEX = config.get("CompositionOptions","ddhex",DDHEX);
MEHEX = config.get("CompositionOptions","mehex",MEHEX);
OR1 = config.get("CompositionOptions","or1",OR1);
OR2 = config.get("CompositionOptions","or2",OR2);
OR3 = config.get("CompositionOptions","or3",OR3);
OR1_MASS = config.get("CompositionOptions","or1_mass",OR1_MASS);
OR2_MASS = config.get("CompositionOptions","or2_mass",OR2_MASS);
OR3_MASS = config.get("CompositionOptions","or3_mass",OR3_MASS);
HEXA = config.get("CompositionOptions","hexa",HEXA);
DHEXA = config.get("CompositionOptions","dhexa",DHEXA);
NEU5GC = config.get("CompositionOptions","neu5gc",NEU5GC);
NEU5AC = config.get("CompositionOptions","neu5ac",NEU5AC);
NEU5GCLAC = config.get("CompositionOptions","neu5gclac",NEU5GCLAC);
NEU5ACLAC = config.get("CompositionOptions","neu5aclac",NEU5ACLAC);
KDO = config.get("CompositionOptions","kdp",KDO);
KDN = config.get("CompositionOptions","kdn",KDN);
MUR = config.get("CompositionOptions","mur",MUR);
S = config.get("CompositionOptions","s",S);
P = config.get("CompositionOptions","p",P);
AC = config.get("CompositionOptions","ac",AC);
PYR = config.get("CompositionOptions","pyr",PYR);
PC = config.get("CompositionOptions","pc",PC);
}
public Glycan getCompositionAsGlycan(MassOptions mopt) throws Exception {
Glycan ret = Glycan.createComposition(mopt);
for( int i=0; i<PEN; i++ ) ret.addAntenna(ResidueDictionary.newResidue("Pen"));
for( int i=0; i<HEX; i++ ) ret.addAntenna(ResidueDictionary.newResidue("Hex"));
for( int i=0; i<HEP; i++ ) ret.addAntenna(ResidueDictionary.newResidue("Hept"));
for( int i=0; i<HEXN; i++ ) ret.addAntenna(ResidueDictionary.newResidue("HexN"));
for( int i=0; i<HEXNAC; i++ ) ret.addAntenna(ResidueDictionary.newResidue("HexNAc"));
for( int i=0; i<DPEN; i++ ) ret.addAntenna(ResidueDictionary.newResidue("dPen"));
for( int i=0; i<DHEX; i++ ) ret.addAntenna(ResidueDictionary.newResidue("dHex"));
for( int i=0; i<DDHEX; i++ ) ret.addAntenna(ResidueDictionary.newResidue("ddHex"));
for( int i=0; i<MEHEX; i++ ) ret.addAntenna(ResidueDictionary.newResidue("MeH"));
for( int i=0; i<HEXA; i++ ) ret.addAntenna(ResidueDictionary.newResidue("HexA"));
for( int i=0; i<DHEXA; i++ ) ret.addAntenna(ResidueDictionary.newResidue("dHexA"));
for( int i=0; i<NEU5GC; i++ ) ret.addAntenna(ResidueDictionary.newResidue("NeuGc"));
for( int i=0; i<NEU5AC; i++ ) ret.addAntenna(ResidueDictionary.newResidue("NeuAc"));
for( int i=0; i<NEU5GCLAC; i++ ) ret.addAntenna(ResidueDictionary.newResidue("NeuGcLac"));
for( int i=0; i<NEU5ACLAC; i++ ) ret.addAntenna(ResidueDictionary.newResidue("NeuAcLac"));
for( int i=0; i<KDO; i++ ) ret.addAntenna(ResidueDictionary.newResidue("KDO"));
for( int i=0; i<KDN; i++ ) ret.addAntenna(ResidueDictionary.newResidue("KDN"));
for( int i=0; i<MUR; i++ ) ret.addAntenna(ResidueDictionary.newResidue("MurNAc"));
for( int i=0; i<S; i++ ) ret.addAntenna(ResidueDictionary.newResidue("S"));
for( int i=0; i<P; i++ ) ret.addAntenna(ResidueDictionary.newResidue("P"));
for( int i=0; i<AC; i++ ) ret.addAntenna(ResidueDictionary.newResidue("Ac"));
for( int i=0; i<PYR; i++ ) ret.addAntenna(ResidueDictionary.newResidue("Pyr"));
for( int i=0; i<PC; i++ ) ret.addAntenna(ResidueDictionary.newResidue("PC"));
for( int i=0; i<OR1; i++ ) ret.addAntenna(new Residue(ResidueType.createOtherResidue(OR1_NAME,OR1_MASS)));
for( int i=0; i<OR2; i++ ) ret.addAntenna(new Residue(ResidueType.createOtherResidue(OR2_NAME,OR2_MASS)));
for( int i=0; i<OR3; i++ ) ret.addAntenna(new Residue(ResidueType.createOtherResidue(OR3_NAME,OR3_MASS)));
return ret;
}
}