public IsotopePattern getIsotopes(IMolecularFormula molFor) {

        if (builder == null) {
            try {
                isoFactory = Isotopes.getInstance();
                builder = molFor.getBuilder();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        String mf = MolecularFormulaManipulator.getString(molFor, true);

        IMolecularFormula molecularFormula = MolecularFormulaManipulator.getMajorIsotopeMolecularFormula(mf, builder);

        IsotopePattern abundance_Mass = null;

        for (IIsotope isos : molecularFormula.isotopes()) {
            String elementSymbol = isos.getSymbol();
            int atomCount = molecularFormula.getIsotopeCount(isos);

            // Generate possible isotope containers for the current atom's
            // these will then me 'multiplied' with the existing patten
            List<IsotopeContainer> additional = new ArrayList<>();
            for (IIsotope isotope : isoFactory.getIsotopes(elementSymbol)) {
                double mass      = isotope.getExactMass();
                double abundance = isotope.getNaturalAbundance();
                if (abundance <= 0.000000001)
                    continue;
                IsotopeContainer container = new IsotopeContainer(mass, abundance);
                if (storeFormula)
                    container.setFormula(asFormula(isotope));
                additional.add(container);
            }

            for (int i = 0; i < atomCount; i++)
                abundance_Mass = calculateAbundanceAndMass(abundance_Mass, additional);
        }

        IsotopePattern isoP = IsotopePatternManipulator.sortAndNormalizedByIntensity(abundance_Mass);
        isoP = cleanAbundance(isoP, minIntensity);
        IsotopePattern isoPattern = IsotopePatternManipulator.sortByMass(isoP);
        return isoPattern;

    }
public IsotopePattern getIsotopes ( IMolecularFormula molFor ) { if ( builder == null ) { try { isoFactory = Isotopes . getInstance ( ) ; builder = molFor . getBuilder ( ) ; } catch ( Exception e ) { e . printStackTrace ( ) ; } } String mf = MolecularFormulaManipulator . getString ( molFor , true ) ; IMolecularFormula molecularFormula = MolecularFormulaManipulator . getMajorIsotopeMolecularFormula ( mf , builder ) ; IsotopePattern abundance_Mass = null ; for ( IIsotope isos : molecularFormula . isotopes ( ) ) { String elementSymbol = isos . getSymbol ( ) ; int atomCount = molecularFormula . getIsotopeCount ( isos ) ; List < IsotopeContainer > additional = new ArrayList < > ( ) ; for ( IIsotope isotope : isoFactory . getIsotopes ( elementSymbol ) ) { double mass = isotope . getExactMass ( ) ; double abundance = isotope . getNaturalAbundance ( ) ; if ( abundance <= 0.000000001 ) continue ; IsotopeContainer container = new IsotopeContainer ( mass , abundance ) ; if ( storeFormula ) container . setFormula ( asFormula ( isotope ) ) ; additional . add ( container ) ; } for ( int i = 0 ; i < atomCount ; i ++ ) abundance_Mass = calculateAbundanceAndMass ( abundance_Mass , additional ) ; } IsotopePattern isoP = IsotopePatternManipulator . sortAndNormalizedByIntensity ( abundance_Mass ) ; isoP = cleanAbundance ( isoP , minIntensity ) ; IsotopePattern isoPattern = IsotopePatternManipulator . sortByMass ( isoP ) ; return isoPattern ; }
Get all combinatorial chemical isotopes given a structure.

@param molFor  The IMolecularFormula to start
@return        A IsotopePattern object containing the different combinations