package org.openscience.cdk.formula; import java.util.ArrayList; import java.util.List; import org.openscience.cdk.annotations.TestClass; import org.openscience.cdk.annotations.TestMethod; /** * This class defines the properties of a deisotoped * pattern distribution. A isotope pattern is a set of * compounds with different set of isotopes. * * @author Miguel Rojas Cherto * * @cdk.module formula */ @TestClass("org.openscience.cdk.formula.IsotopePatternTest") public class IsotopePattern { private List<IsotopeContainer> isotopeCList = new ArrayList<IsotopeContainer>(); private int monoIsotopePosition; private double chargI=0; /** * Constructor of the IsotopePattern object. */ public IsotopePattern(){ } /** * Set the mono isotope object. * * @param isoContainer The IsotopeContainer object */ @TestMethod("testSetMonoIsotope_IsotopeContainer") public void setMonoIsotope(IsotopeContainer isoContainer){ isotopeCList.add(isoContainer); monoIsotopePosition = isotopeCList.indexOf(isoContainer); } /** * Add an isotope object. * * @param isoContainer The IsotopeContainer object */ @TestMethod("testAddIsotope_IsotopeContainer") public void addIsotope(IsotopeContainer isoContainer){ isotopeCList.add(isoContainer); } /** * Returns the mono-isotope peak that form this isotope pattern. * * @return The IsotopeContainer acting as mono-isotope */ @TestMethod("testGetMonoIsotope") public IsotopeContainer getMonoIsotope(){ return isotopeCList.get(monoIsotopePosition); } /** * Returns the all isotopes that form this isotope pattern. * * @return The IsotopeContainer acting as mono-isotope */ @TestMethod("testGetIsotopes") public List<IsotopeContainer > getIsotopes(){ return isotopeCList; } /** * Returns the a isotopes given a specific position. * * @param position position of the isotope to return * @return The isotope */ @TestMethod("testGetIsotope_int") public IsotopeContainer getIsotope(int position){ return isotopeCList.get(position); } /** * Returns the number of isotopes in this pattern. * * @return The number of isotopes */ @TestMethod("testGetNumberOfIsotopes") public int getNumberOfIsotopes(){ return isotopeCList.size(); } /** * Set the charge in this pattern. * * @param charge The charge value */ @TestMethod("testSetCharge_double") public void setCharge(double charge) { chargI = charge; } /** * Get the charge in this pattern. * * @return The charge value */ @TestMethod("testGetCharge") public double getCharge() { return chargI; } /** * Clones this IsotopePattern object and its content. * * @return The cloned object */ @TestMethod("testClone") public Object clone() throws CloneNotSupportedException { IsotopePattern isoClone = new IsotopePattern(); IsotopeContainer isoHighest = getMonoIsotope(); for(IsotopeContainer isoContainer: isotopeCList){ if(isoHighest.equals(isoContainer)) isoClone.setMonoIsotope((IsotopeContainer) isoContainer.clone()); else isoClone.addIsotope((IsotopeContainer) isoContainer.clone()); } isoClone.setCharge(getCharge()); return isoClone; } }