= Tutorial for Determining Glycan Feature Info= This page contains source code for determining glycan m/z, charge, sum of exchanges and losses {{{ /** * Calculates dGlycanMz, dSumCharge, dSumExchanges, dSumLosses for the specified Glycan object based * on the adducts, exchanges and loss/gain. * * @param glycan - a Glycan object * @param _analyteSettings - current AnalyteSettings object * @param lAdductsToAnalyze - List> for adducts * @param lAdductsToAnalyzeCounts - List> ion counts for adducts * @param lExchangesToAnalyze - List> for ion exchanges * @param lExchangesToAnalyzeCounts - List> ion counts for ion exchanges * @param lNeutralLossesToAnalyze - List> for neutral loss/gain * @param lNeutralLossesToAnalyzeCounts - List> ion counts for neutral loss/gain * @return double[] - array containing {dGlycanMz, dSumCharge, dSumExchanges, dSumLosses}; */ public static double[] getGlycanMzAndCharge( Glycan glycan, AnalyteSettings _analyteSettings, List lAdductsToAnalyze, List lAdductsToAnalyzeCounts, List lExchangesToAnalyze, List lExchangesToAnalyzeCounts, List lNeutralLossesToAnalyze, List lNeutralLossesToAnalyzeCounts ) { double dMass = 0.0; try { dMass = glycan.computeMass(); } catch( Exception e ) { dMass = glycan.computeMass(); logger.error(e.getMessage(), e); } // add ion exchange mass double dSumExchanges = 0d; if( lExchangesToAnalyze != null ) { for( int i = 0; i < lExchangesToAnalyze.size(); i++ ) { IonSettings ionExchange = lExchangesToAnalyze.get(i); int iCnt = lExchangesToAnalyzeCounts.get(i); double dMassChange = GlycanStructureAnnotation.getIonExchange(ionExchange, iCnt); dMass += dMassChange; dSumExchanges += (double) iCnt; } } // add any neutral losses double dSumLosses = 0d; if( lNeutralLossesToAnalyze != null ) { for( int i = 0; i < lNeutralLossesToAnalyze.size(); i++ ) { MoleculeSettings neutralLoss = lNeutralLossesToAnalyze.get(i); int iCnt = lNeutralLossesToAnalyzeCounts.get(i); double dMassChange = GlycanStructureAnnotation.getNeutralLoss(neutralLoss, iCnt); dMass += dMassChange; dSumLosses += (double) iCnt; } } // some up charges and masses of adducts double dSumCharge = 0d; double dSumMass = 0d; for( int i = 0; i < lAdductsToAnalyze.size(); i++ ) { IonSettings adduct = lAdductsToAnalyze.get(i); int iCnt = lAdductsToAnalyzeCounts.get(i); double z = GlycanStructureAnnotation.getChargeFromAdducts(iCnt,adduct); dSumCharge+=z; dSumMass += ((double) iCnt * adduct.getMass()); } double dGlycanMz = GlycanStructureAnnotation.getGlycanStructureMz(dMass,dSumCharge,dSumMass); return new double[] {dGlycanMz, dSumCharge, dSumExchanges, dSumLosses}; } }}}