Logo Search packages:      
Sourcecode: cdk version File versions  Download package

IsotopePatternManipulator.java
package org.openscience.cdk.formula;

import java.util.List;

import org.openscience.cdk.annotations.TestClass;
import org.openscience.cdk.annotations.TestMethod;

/**
 * Class to manipulate IsotopePattern objects.
 * 
 * @author Miguel Rojas Cherto
 *
 * @cdk.module  formula
 */
@TestClass("org.openscience.cdk.formula.IsotopePatternManipulatorTest")
00016 public class IsotopePatternManipulator {

      /**
       * Return the isotope pattern normalized to the highest abundance
       * 
       * @param isotopeP  The IsotopePattern object to normalize
       * @return          The IsotopePattern normalized
       */
      @TestMethod("testNormalize_IsotopePattern")
00025       public static IsotopePattern normalize(IsotopePattern isotopeP){
            IsotopeContainer isoHighest = null;
            
            double biggestAbundance = 0;
            /*Extraction of the isoContainer with the highest abundance*/
            for(IsotopeContainer isoContainer: isotopeP.getIsotopes()){
                  double abundance = isoContainer.getIntensity();
                  if(biggestAbundance < abundance){
                        biggestAbundance = abundance;
                        isoHighest = isoContainer;
                  }
            }
            /*Normalize*/
            IsotopePattern isoNormalized = new IsotopePattern();
            for(IsotopeContainer isoContainer: isotopeP.getIsotopes()){
                  double inten = isoContainer.getIntensity()/isoHighest.getIntensity();
                  IsotopeContainer icClone;
                  try {
                        icClone = (IsotopeContainer) isoContainer.clone();
                        icClone.setIntensity(inten);
                        if(isoHighest.equals(isoContainer))
                              isoNormalized.setMonoIsotope(icClone);
                        else
                              isoNormalized.addIsotope(icClone);
                              
                  } catch (CloneNotSupportedException e) {
                        e.printStackTrace();
                  }
                  
            }
            isoNormalized.setCharge(isotopeP.getCharge());
            return isoNormalized;
      }
      /**
       * Return the isotope pattern sorted and normalized by intensity
       * to the highest abundance.
       * 
       * @param isotopeP  The IsotopePattern object to sort
       * @return          The IsotopePattern sorted
       */
      @TestMethod("testSortAndNormalizedByIntensity_IsotopePattern")
00066       public static IsotopePattern sortAndNormalizedByIntensity(IsotopePattern isotopeP){
            IsotopePattern isoNorma = normalize(isotopeP);
            return sortByIntensity(isoNorma);
      }
      /**
       * Return the isotope pattern sorted by intensity
       * to the highest abundance.
       * 
       * @param isotopeP  The IsotopePattern object to sort
       * @return          The IsotopePattern sorted
       */
      @TestMethod("testSortByIntensity_IsotopePattern")
00078       public static IsotopePattern sortByIntensity(IsotopePattern isotopeP){
            try {
                  IsotopePattern isoSort = new IsotopePattern();
                  List<IsotopeContainer> listISO = ((IsotopePattern)isotopeP.clone()).getIsotopes();

                  int length = listISO.size()-1;
                  for(int i = length ; i >= 0 ; i--){
                        double intensity = 0;
                        IsotopeContainer isoHighest = null;
                        for(IsotopeContainer isoContainer: listISO){
                              if(isoContainer.getIntensity() > intensity){
                                    isoHighest = isoContainer;
                                    intensity = isoContainer.getIntensity();
                              }
                        }
                        if(i == length)
                              isoSort.setMonoIsotope((IsotopeContainer) isoHighest.clone());
                        else
                              isoSort.addIsotope((IsotopeContainer) isoHighest.clone());
                        
                        listISO.remove(isoHighest);
                        
                  }
                  isoSort.setCharge(isotopeP.getCharge());
                  return isoSort;
                  
            } catch (CloneNotSupportedException e) {
                  e.printStackTrace();
            }
            
            return null;
      }

      /**
       * Return the isotope pattern sorted by mass
       * to the highest abundance.
       * 
       * @param isotopeP  The IsotopePattern object to sort
       * @return          The IsotopePattern sorted
       */
      @TestMethod("testSortByMass_IsotopePattern")
00119       public static IsotopePattern sortByMass(IsotopePattern isotopeP){
            try {
                  IsotopePattern isoSort = new IsotopePattern();
                  List<IsotopeContainer> listISO = ((IsotopePattern)isotopeP.clone()).getIsotopes();

                  int length = listISO.size()-1;
                  for(int i = length ; i >= 0 ; i--){
                        double mass = 100000;
                        IsotopeContainer isoHighest = null;
                        for(IsotopeContainer isoContainer: listISO){
                              if(isoContainer.getMass() < mass){
                                    isoHighest = isoContainer;
                                    mass = isoContainer.getMass();
                              }
                        }
                        if(i == length)
                              isoSort.setMonoIsotope((IsotopeContainer) isoHighest.clone());
                        else
                              isoSort.addIsotope((IsotopeContainer) isoHighest.clone());
                        
                        listISO.remove(isoHighest);
                        
                  }
                  isoSort.setCharge(isotopeP.getCharge());
                  return isoSort;
                  
            } catch (CloneNotSupportedException e) {
                  e.printStackTrace();
            }
            
            return null;
      }
}

Generated by  Doxygen 1.6.0   Back to index