/* * 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.applications.ms.glycopeakfinder.calculation.io; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.Iterator; import jxl.CellView; import jxl.Workbook; import jxl.format.Alignment; import jxl.format.Colour; import jxl.format.PageOrientation; import jxl.write.Label; import jxl.write.Number; import jxl.write.WritableCell; import jxl.write.WritableCellFormat; import jxl.write.WritableFont; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import jxl.write.WriteException; import jxl.write.biff.RowsExceededException; import org.eurocarbdb.applications.ms.glycopeakfinder.calculation.storage.CalculationDerivatisation; import org.eurocarbdb.applications.ms.glycopeakfinder.calculation.storage.CalculationFragment; import org.eurocarbdb.applications.ms.glycopeakfinder.calculation.storage.CalculationIon; import org.eurocarbdb.applications.ms.glycopeakfinder.calculation.storage.CalculationMolecule; import org.eurocarbdb.applications.ms.glycopeakfinder.calculation.storage.CalculationParameter; import org.eurocarbdb.applications.ms.glycopeakfinder.calculation.storage.CalculationPeak; import org.eurocarbdb.applications.ms.glycopeakfinder.calculation.storage.PeakAnnotation; import org.eurocarbdb.applications.ms.glycopeakfinder.calculation.storage.Persubstitution; import org.eurocarbdb.applications.ms.glycopeakfinder.calculation.storage.SpectraType; import org.eurocarbdb.applications.ms.glycopeakfinder.calculation.util.AnnotationToString; /** * @author Logan * */ public class XLSExporter { private CalculationParameter m_objParameter = null; /** * @param parameter * @param stream * @throws IOException * @throws WriteException */ public void export(CalculationParameter a_objParameter, ByteArrayOutputStream a_objStream) throws IOException, WriteException { this.m_objParameter = a_objParameter; WritableWorkbook t_objWorkbook = Workbook.createWorkbook(a_objStream); WritableSheet t_objSheet = t_objWorkbook.createSheet("Settings", 0); this.formatSettingsPage(t_objSheet); this.createSettingSheet(t_objSheet); t_objSheet = t_objWorkbook.createSheet("Results", 1); this.formatResultPage(t_objSheet); this.createResultSheet(t_objSheet); t_objSheet.setPageSetup(PageOrientation.LANDSCAPE); t_objWorkbook.write(); t_objWorkbook.close(); } private void formatResultPage(WritableSheet a_objSheet) throws RowsExceededException, WriteException { // mass CellView t_objView = new CellView(); t_objView.setSize(3000); WritableFont t_objFont = new WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD); WritableCellFormat t_objFormat = new WritableCellFormat(t_objFont); t_objView.setFormat(t_objFormat); a_objSheet.setColumnView(0, t_objView); // intensity t_objView = new CellView(); t_objView.setSize(3000); t_objFont = new WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD); t_objFormat = new WritableCellFormat(t_objFont); t_objView.setFormat(t_objFormat); a_objSheet.setColumnView(1, t_objView); // composition t_objView = new CellView(); t_objView.setSize(9000); t_objFont = new WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD); t_objFormat = new WritableCellFormat(t_objFont); t_objView.setFormat(t_objFormat); a_objSheet.setColumnView(2, t_objView); // small molecules t_objView = new CellView(); t_objView.setSize(4000); t_objFont = new WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD); t_objFormat = new WritableCellFormat(t_objFont); t_objView.setFormat(t_objFormat); a_objSheet.setColumnView(3, t_objView); // charged ions t_objView = new CellView(); t_objView.setSize(4000); t_objFont = new WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD); t_objFormat = new WritableCellFormat(t_objFont); t_objView.setFormat(t_objFormat); a_objSheet.setColumnView(4, t_objView); // ion type t_objView = new CellView(); t_objView.setSize(4000); t_objFont = new WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD); t_objFormat = new WritableCellFormat(t_objFont); t_objView.setFormat(t_objFormat); a_objSheet.setColumnView(5, t_objView); // mass calculation t_objView = new CellView(); t_objView.setSize(3000); t_objFont = new WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD); t_objFormat = new WritableCellFormat(t_objFont); t_objView.setFormat(t_objFormat); a_objSheet.setColumnView(6, t_objView); // deviation t_objView = new CellView(); t_objView.setSize(3000); t_objFont = new WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD); t_objFormat = new WritableCellFormat(t_objFont); t_objView.setFormat(t_objFormat); a_objSheet.setColumnView(7, t_objView); } private void formatSettingsPage(WritableSheet a_objSheet) throws RowsExceededException, WriteException { // spalte 1 CellView t_objView = new CellView(); t_objView.setSize(10000); WritableFont t_objFont = new WritableFont(WritableFont.ARIAL, 10, WritableFont.BOLD); WritableCellFormat t_objFormat = new WritableCellFormat(t_objFont); t_objFormat.setAlignment( Alignment.LEFT ); t_objView.setFormat(t_objFormat); a_objSheet.setColumnView(0, t_objView); // spalte 2 t_objView = new CellView(); t_objView.setSize(6000); t_objFont = new WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD); t_objFormat = new WritableCellFormat(t_objFont); t_objFormat.setAlignment( Alignment.LEFT ); t_objView.setFormat(t_objFormat); a_objSheet.setColumnView(1, t_objView); // spalte 3 t_objView = new CellView(); t_objView.setSize(4000); t_objFont = new WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD); t_objFormat = new WritableCellFormat(t_objFont); t_objFormat.setAlignment( Alignment.LEFT ); t_objView.setFormat(t_objFormat); a_objSheet.setColumnView(2, t_objView); // spalte 4 t_objView = new CellView(); t_objView.setSize(3000); t_objFont = new WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD); t_objFormat = new WritableCellFormat(t_objFont); t_objFormat.setAlignment( Alignment.LEFT ); t_objView.setFormat(t_objFormat); a_objSheet.setColumnView(3, t_objView); // headline a_objSheet.mergeCells(0, 0, 3, 0); } private void createResultSheet(WritableSheet a_objPage) throws RowsExceededException, WriteException { AnnotationToString t_objAnnotationToString = new AnnotationToString(); int t_iPeakLineNumber = 0; CalculationPeak t_objPeak = null; Label t_objLabel = null; Number t_objNumber = null; if ( this.m_objParameter.getSpectraType() == SpectraType.MS2 && this.m_objParameter.getScan().getPrecusorMass() != null ) { t_objLabel = new Label(0,t_iPeakLineNumber,"Precursor:" ); a_objPage.addCell(t_objLabel); t_iPeakLineNumber++; int t_iLineCount = this.writeHeadline(a_objPage,t_iPeakLineNumber); t_iPeakLineNumber += t_iLineCount+1; for (Iterator<CalculationPeak> t_iterPre = this.getPrecursorPeaks().iterator(); t_iterPre.hasNext();) { t_objPeak = t_iterPre.next(); t_objNumber = new Number(0,t_iPeakLineNumber,t_objPeak.getMz()); a_objPage.addCell(t_objNumber); if ( t_objPeak.getIntensity() != 0 ) { t_objNumber = new Number(1,t_iPeakLineNumber,t_objPeak.getMz()); a_objPage.addCell(t_objNumber); } else { t_objLabel = new Label(1,t_iPeakLineNumber,"n/a"); a_objPage.addCell(t_objLabel); } for (Iterator<PeakAnnotation> t_iterAnnotation = t_objPeak.getAnnotation().iterator(); t_iterAnnotation.hasNext();) { PeakAnnotation t_objAnno = t_iterAnnotation.next(); if ( t_objAnno.getFragments().size() == 0 ) { t_objLabel = new Label(2,t_iPeakLineNumber,t_objAnnotationToString.composition(t_objAnno)); a_objPage.addCell(t_objLabel); t_objLabel = new Label(3,t_iPeakLineNumber,t_objAnnotationToString.smallMolecules(t_objAnno)); a_objPage.addCell(t_objLabel); t_objLabel = new Label(4,t_iPeakLineNumber,t_objAnnotationToString.chargedIon(t_objAnno)); a_objPage.addCell(t_objLabel); t_objLabel = new Label(5,t_iPeakLineNumber,t_objAnnotationToString.ion(t_objAnno)); a_objPage.addCell(t_objLabel); t_objNumber = new Number(6,t_iPeakLineNumber,t_objAnno.getMass()); a_objPage.addCell(t_objNumber); t_objNumber = new Number(7,t_iPeakLineNumber,this.getDeviation(t_objAnno.getMass(),t_objPeak.getMz())); a_objPage.addCell(t_objNumber); t_iPeakLineNumber++; } } if ( t_objPeak.getAnnotationCount() != t_objPeak.getAnnotation().size() ) { // not all were calculated t_objLabel = new Label(2,t_iPeakLineNumber, String.format("This peak has %d annotations. Only the first %d are shown.",t_objPeak.getAnnotationCount(),t_objPeak.getAnnotation().size())); a_objPage.addCell(t_objLabel); WritableCell t_objCell = a_objPage.getWritableCell(2, t_iPeakLineNumber); WritableFont t_objFont = new WritableFont(WritableFont.ARIAL, 10, WritableFont.BOLD); t_objFont.setColour(Colour.RED); WritableCellFormat t_objFormat = new WritableCellFormat(t_objFont); t_objCell.setCellFormat(t_objFormat); a_objPage.mergeCells(2, t_iPeakLineNumber, 7, t_iPeakLineNumber); } if ( t_objPeak.getAnnotation().size() == 0 ) { t_iPeakLineNumber++; } t_iPeakLineNumber++; } t_objLabel = new Label(0,t_iPeakLineNumber,"Peaklist:" ); a_objPage.addCell(t_objLabel); t_iPeakLineNumber++; } int t_iLineCount = this.writeHeadline(a_objPage,t_iPeakLineNumber); t_iPeakLineNumber += t_iLineCount+1; for (Iterator<CalculationPeak> t_iterPeaks = this.m_objParameter.getScan().getPeaks().iterator(); t_iterPeaks.hasNext();) { t_objPeak = t_iterPeaks.next(); t_objNumber = new Number(0,t_iPeakLineNumber,t_objPeak.getMz()); a_objPage.addCell(t_objNumber); if ( t_objPeak.getIntensity() != 0 ) { t_objNumber = new Number(1,t_iPeakLineNumber,t_objPeak.getMz()); a_objPage.addCell(t_objNumber); } else { t_objLabel = new Label(1,t_iPeakLineNumber,"n/a"); a_objPage.addCell(t_objLabel); } for (Iterator<PeakAnnotation> t_iterAnnotation = t_objPeak.getAnnotation().iterator(); t_iterAnnotation.hasNext();) { PeakAnnotation t_objAnno = t_iterAnnotation.next(); if ( this.m_objParameter.getSpectraType() != SpectraType.MS2 || t_objAnno.getFragments().size() != 0 ) { t_objLabel = new Label(2,t_iPeakLineNumber,t_objAnnotationToString.composition(t_objAnno)); a_objPage.addCell(t_objLabel); t_objLabel = new Label(3,t_iPeakLineNumber,t_objAnnotationToString.smallMolecules(t_objAnno)); a_objPage.addCell(t_objLabel); t_objLabel = new Label(4,t_iPeakLineNumber,t_objAnnotationToString.chargedIon(t_objAnno)); a_objPage.addCell(t_objLabel); t_objLabel = new Label(5,t_iPeakLineNumber,t_objAnnotationToString.ion(t_objAnno)); a_objPage.addCell(t_objLabel); t_objNumber = new Number(6,t_iPeakLineNumber,t_objAnno.getMass()); a_objPage.addCell(t_objNumber); t_objNumber = new Number(7,t_iPeakLineNumber,this.getDeviation(t_objAnno.getMass(),t_objPeak.getMz())); a_objPage.addCell(t_objNumber); t_iPeakLineNumber++; } } if ( t_objPeak.getAnnotationCount() != t_objPeak.getAnnotation().size() ) { // not all were calculated t_objLabel = new Label(2,t_iPeakLineNumber, String.format("This peak has %d annotations. Only the first %d are shown.",t_objPeak.getAnnotationCount(),t_objPeak.getAnnotation().size())); a_objPage.addCell(t_objLabel); WritableCell t_objCell = a_objPage.getWritableCell(2, t_iPeakLineNumber); WritableFont t_objFont = new WritableFont(WritableFont.ARIAL, 10, WritableFont.BOLD); t_objFont.setColour(Colour.RED); WritableCellFormat t_objFormat = new WritableCellFormat(t_objFont); t_objCell.setCellFormat(t_objFormat); a_objPage.mergeCells(2, t_iPeakLineNumber, 7, t_iPeakLineNumber); if ( t_objPeak.getAnnotation().size() > 0 ) { t_iPeakLineNumber++; } } if ( t_objPeak.getAnnotation().size() == 0 ) { t_iPeakLineNumber++; } t_iPeakLineNumber++; } } /** * @param mass * @param mz * @return */ private double getDeviation(double a_dMassAnno, double a_dMassPeak) { if ( a_dMassAnno > 0 ) { return ( ( (a_dMassAnno - a_dMassPeak) * 1000000.0 ) / a_dMassAnno ); } else { return 0; } } /** * @param page * @param lineNumber * @return * @throws WriteException * @throws RowsExceededException */ private int writeHeadline(WritableSheet a_objPage, int a_iLineNumber) throws RowsExceededException, WriteException { WritableFont t_objFont = new WritableFont(WritableFont.ARIAL, 10, WritableFont.BOLD); WritableCellFormat t_objFormat = new WritableCellFormat(t_objFont); t_objFormat.setBackground(Colour.LIGHT_ORANGE ); Label t_objLabel = new Label(0,a_iLineNumber,"Mass"); a_objPage.addCell(t_objLabel); WritableCell t_objCell = a_objPage.getWritableCell(0, a_iLineNumber); t_objCell.setCellFormat(t_objFormat); t_objLabel = new Label(1,a_iLineNumber,"Intensity"); a_objPage.addCell(t_objLabel); t_objCell = a_objPage.getWritableCell(1, a_iLineNumber); t_objCell.setCellFormat(t_objFormat); t_objLabel = new Label(2,a_iLineNumber,"Composition"); a_objPage.addCell(t_objLabel); t_objCell = a_objPage.getWritableCell(2, a_iLineNumber); t_objCell.setCellFormat(t_objFormat); t_objLabel = new Label(3,a_iLineNumber,"Small\r\nmolecules"); a_objPage.addCell(t_objLabel); t_objCell = a_objPage.getWritableCell(3, a_iLineNumber); t_objCell.setCellFormat(t_objFormat); t_objLabel = new Label(4,a_iLineNumber,"Charged\r\nIon(s)"); a_objPage.addCell(t_objLabel); t_objCell = a_objPage.getWritableCell(4, a_iLineNumber); t_objCell.setCellFormat(t_objFormat); t_objLabel = new Label(5,a_iLineNumber,"Ion\r\ntype"); a_objPage.addCell(t_objLabel); t_objCell = a_objPage.getWritableCell(5, a_iLineNumber); t_objCell.setCellFormat(t_objFormat); t_objLabel = new Label(6,a_iLineNumber,"Mass\r\ncalculated"); a_objPage.addCell(t_objLabel); t_objCell = a_objPage.getWritableCell(6, a_iLineNumber); t_objCell.setCellFormat(t_objFormat); t_objLabel = new Label(7,a_iLineNumber,"Deviation\r\n(ppm)"); a_objPage.addCell(t_objLabel); t_objCell = a_objPage.getWritableCell(7, a_iLineNumber); t_objCell.setCellFormat(t_objFormat); return 1; } /** * @return */ private ArrayList<CalculationPeak> getPrecursorPeaks() { ArrayList<CalculationPeak> t_aResult = new ArrayList<CalculationPeak>(); CalculationPeak t_objPeak; for (Iterator<CalculationPeak> t_iterPeak = this.m_objParameter.getScan().getPeaks().iterator(); t_iterPeak.hasNext();) { t_objPeak = t_iterPeak.next(); if ( this.containsProfileInformation(t_objPeak) ) { t_aResult.add(t_objPeak); } } return t_aResult; } /** * @return */ private boolean containsProfileInformation(CalculationPeak a_objPeak) { for (Iterator<PeakAnnotation> t_iterAnno = a_objPeak.getAnnotation().iterator(); t_iterAnno.hasNext();) { if ( t_iterAnno.next().getFragments().size() == 0 ) { return true; } } return false; } private void createSettingSheet(WritableSheet a_objPage) throws RowsExceededException, WriteException { int t_iLineNumber = 0 ; Date t_objDate = new Date(System.currentTimeMillis()); SimpleDateFormat sdf = new SimpleDateFormat(); sdf.applyPattern( "yyyy.MM.dd-hh.mm" ); // Headline Label t_objLabel = new Label(0,t_iLineNumber,"Glyco-Peakfinder Excel Report\r\n" + sdf.format(t_objDate) ); a_objPage.addCell(t_objLabel); WritableCell t_objCell = a_objPage.getWritableCell(0, 0); WritableFont t_objFont = new WritableFont(WritableFont.ARIAL, 18, WritableFont.BOLD); WritableCellFormat t_objFormat = new WritableCellFormat(t_objFont); t_objFormat.setAlignment( Alignment.CENTRE ); t_objCell.setCellFormat(t_objFormat); t_iLineNumber += 2; // mass settings t_objLabel = new Label(0,t_iLineNumber,"Spectrum type:"); a_objPage.addCell(t_objLabel); t_objLabel = new Label(1,t_iLineNumber,this.getSpectrumTypeName(this.m_objParameter.getSpectraType())); a_objPage.addCell(t_objLabel); t_iLineNumber += 2; // mass tpye t_objLabel = new Label(0,t_iLineNumber,"Mass type:"); a_objPage.addCell(t_objLabel); if ( this.m_objParameter.getMonoisotopic() ) { t_objLabel = new Label(1,t_iLineNumber,"monoisotopic"); } else { t_objLabel = new Label(1,t_iLineNumber,"average"); } a_objPage.addCell(t_objLabel); t_iLineNumber += 2; // accuracy t_objLabel = new Label(0,t_iLineNumber,"Accuracy:"); a_objPage.addCell(t_objLabel); Number t_objNumber = new Number(1,t_iLineNumber,this.m_objParameter.getAccuracy()); a_objPage.addCell(t_objNumber); if ( this.m_objParameter.getAccuracyPpm() ) { t_objLabel = new Label(2,t_iLineNumber,"ppm"); } else { t_objLabel = new Label(2,t_iLineNumber,"u"); } a_objPage.addCell(t_objLabel); t_iLineNumber += 2; // mass shift if ( this.m_objParameter.getMassShift() != 0 ) { t_objLabel = new Label(0,t_iLineNumber,"Mass shift:"); a_objPage.addCell(t_objLabel); t_objNumber = new Number(1,t_iLineNumber,this.m_objParameter.getMassShift()); a_objPage.addCell(t_objNumber); t_iLineNumber += 2; } // persub t_objLabel = new Label(0,t_iLineNumber,"Modification of complete structure:"); a_objPage.addCell(t_objLabel); t_objLabel = new Label(1,t_iLineNumber,this.getPersubstTypeName(this.m_objParameter.getPersubstitution())); a_objPage.addCell(t_objLabel); t_iLineNumber += 2; // modification t_objLabel = new Label(0,t_iLineNumber,"Reducing end:"); a_objPage.addCell(t_objLabel); for (Iterator<CalculationDerivatisation> t_iterRed = this.m_objParameter.getDerivatisation().iterator(); t_iterRed.hasNext();) { CalculationDerivatisation t_objDeri = t_iterRed.next(); t_objLabel = new Label(1,t_iLineNumber,t_objDeri.getId()); a_objPage.addCell(t_objLabel); t_objNumber = new Number(2,t_iLineNumber,t_objDeri.getMass()); a_objPage.addCell(t_objNumber); t_iLineNumber++; } t_iLineNumber += 2; // peaks t_objLabel = new Label(0,t_iLineNumber,"Peaks:"); a_objPage.addCell(t_objLabel); t_objLabel = new Label(1,t_iLineNumber, String.format("%d peak(s)", this.m_objParameter.getScan().getPeaks().size())); a_objPage.addCell(t_objLabel); t_objLabel = new Label(2,t_iLineNumber,this.getMinMaxPeakString()); a_objPage.addCell(t_objLabel); t_iLineNumber++; if ( this.m_objParameter.getSpectraType() == SpectraType.MSxMS || this.m_objParameter.getSpectraType() == SpectraType.MS2 ) { if ( this.m_objParameter.getScan().getPrecusorMass() != null ) { t_objLabel = new Label(0,t_iLineNumber,"Precursor:"); a_objPage.addCell(t_objLabel); t_objNumber = new Number(1,t_iLineNumber,this.m_objParameter.getScan().getPrecusorMass()); a_objPage.addCell(t_objNumber); } } t_iLineNumber += 2; // residues t_objLabel = new Label(0,t_iLineNumber,"Residues:"); a_objPage.addCell(t_objLabel); for (Iterator<CalculationMolecule> t_iterResidue = this.m_objParameter.getResidues().iterator(); t_iterResidue.hasNext();) { CalculationMolecule t_objResidue = t_iterResidue.next(); t_objLabel = new Label(1,t_iLineNumber,t_objResidue.getId()); a_objPage.addCell(t_objLabel); t_objNumber = new Number(2,t_iLineNumber,t_objResidue.getMass()); a_objPage.addCell(t_objNumber); t_objLabel = new Label(3,t_iLineNumber, String.format("%d - %d",t_objResidue.getMin(),t_objResidue.getMax())); a_objPage.addCell(t_objLabel); t_iLineNumber++; } // charged ions t_iLineNumber++; t_objLabel = new Label(0,t_iLineNumber,"Charged ions:"); a_objPage.addCell(t_objLabel); for (Iterator<CalculationIon> t_iterIons = this.m_objParameter.getIons().iterator(); t_iterIons.hasNext();) { CalculationIon t_objIon = t_iterIons.next(); t_objLabel = new Label(1,t_iLineNumber,t_objIon.getId()); a_objPage.addCell(t_objLabel); t_objNumber = new Number(2,t_iLineNumber,t_objIon.getMass()); a_objPage.addCell(t_objNumber); t_objNumber = new Number(3,t_iLineNumber,t_objIon.getCharge()); a_objPage.addCell(t_objNumber); t_iLineNumber++; } // charge state t_iLineNumber++; t_objLabel = new Label(0,t_iLineNumber,"Charge state:"); a_objPage.addCell(t_objLabel); for (Iterator<Integer> t_iterIons = this.m_objParameter.getCharges().iterator(); t_iterIons.hasNext();) { t_objNumber = new Number(1,t_iLineNumber,t_iterIons.next()); a_objPage.addCell(t_objNumber); t_iLineNumber++; } // ion exchange if ( this.m_objParameter.getIonExchangeIon().size() > 0 ) { t_iLineNumber++; t_objLabel = new Label(0,t_iLineNumber,"Ion exchange ions:"); a_objPage.addCell(t_objLabel); for (Iterator<CalculationIon> t_iterIons = this.m_objParameter.getIonExchangeIon().iterator(); t_iterIons.hasNext();) { CalculationIon t_objIon = t_iterIons.next(); t_objLabel = new Label(1,t_iLineNumber,t_objIon.getId()); a_objPage.addCell(t_objLabel); t_objNumber = new Number(2,t_iLineNumber,t_objIon.getMass()); a_objPage.addCell(t_objNumber); t_objNumber = new Number(3,t_iLineNumber,t_objIon.getCharge()); a_objPage.addCell(t_objNumber); t_iLineNumber++; } // state t_iLineNumber++; t_objLabel = new Label(0,t_iLineNumber,"Number of exchanges:"); a_objPage.addCell(t_objLabel); for (Iterator<Integer> t_iterIons = this.m_objParameter.getIonExchangeCount().iterator(); t_iterIons.hasNext();) { t_objNumber = new Number(1,t_iLineNumber,t_iterIons.next()); a_objPage.addCell(t_objNumber); t_iLineNumber++; } } // fragments if ( this.m_objParameter.getSpectraType() != SpectraType.Profile ) { t_iLineNumber++; t_objLabel = new Label(0,t_iLineNumber,"Fragments:"); a_objPage.addCell(t_objLabel); ArrayList<String> t_aFragments = this.getFragmentList(); for (Iterator<String> t_iterFrag = t_aFragments.iterator(); t_iterFrag.hasNext();) { t_objLabel = new Label(1,t_iLineNumber,t_iterFrag.next()); a_objPage.addCell(t_objLabel); t_iLineNumber++; } } // small molecules if ( this.m_objParameter.getGainMolecules().size() > 0 ) { t_iLineNumber++; t_objLabel = new Label(0,t_iLineNumber,"Gain of molecule:"); a_objPage.addCell(t_objLabel); for (Iterator<CalculationMolecule> t_iterIons = this.m_objParameter.getGainMolecules().iterator(); t_iterIons.hasNext();) { CalculationMolecule t_objMol = t_iterIons.next(); t_objLabel = new Label(1,t_iLineNumber,t_objMol.getId()); a_objPage.addCell(t_objLabel); t_objNumber = new Number(2,t_iLineNumber,t_objMol.getMass()); a_objPage.addCell(t_objNumber); t_objLabel = new Label(3,t_iLineNumber, String.format("%d - %d",t_objMol.getMin(),t_objMol.getMax())); a_objPage.addCell(t_objLabel); t_iLineNumber++; } } if ( this.m_objParameter.getLossMolecules().size() > 0 ) { t_iLineNumber++; t_objLabel = new Label(0,t_iLineNumber,"Lose of molecule:"); a_objPage.addCell(t_objLabel); for (Iterator<CalculationMolecule> t_iterIons = this.m_objParameter.getLossMolecules().iterator(); t_iterIons.hasNext();) { CalculationMolecule t_objMol = t_iterIons.next(); t_objLabel = new Label(1,t_iLineNumber,t_objMol.getId()); a_objPage.addCell(t_objLabel); t_objNumber = new Number(2,t_iLineNumber,t_objMol.getMass()); a_objPage.addCell(t_objNumber); t_objLabel = new Label(3,t_iLineNumber, String.format("%d - %d",t_objMol.getMin(),t_objMol.getMax())); a_objPage.addCell(t_objLabel); t_iLineNumber++; } } } private ArrayList<String> getFragmentList() { ArrayList<String> t_aList = new ArrayList<String>(); for (Iterator<CalculationFragment> t_iterFrag = this.m_objParameter.getFragmentsRed().iterator(); t_iterFrag.hasNext();) { CalculationFragment t_objFrag = t_iterFrag.next(); if ( !t_aList.contains(t_objFrag.getFragmentType()) ) { t_aList.add(t_objFrag.getFragmentType()); } } for (Iterator<CalculationFragment> t_iterFrag = this.m_objParameter.getFragmentsNonRed().iterator(); t_iterFrag.hasNext();) { CalculationFragment t_objFrag = t_iterFrag.next(); if ( !t_aList.contains(t_objFrag.getFragmentType()) ) { t_aList.add(t_objFrag.getFragmentType()); } } return t_aList; } private String getMinMaxPeakString() { double t_dMin = 0; double t_dMax = 0; boolean t_bFirst = true; for (Iterator<CalculationPeak> t_iterPeak = this.m_objParameter.getScan().getPeaks().iterator(); t_iterPeak.hasNext();) { CalculationPeak t_objPeak = t_iterPeak.next(); if ( t_bFirst ) { t_dMax = t_objPeak.getMz(); t_dMin = t_objPeak.getMz(); t_bFirst = false; } else { if ( t_dMax < t_objPeak.getMz() ) { t_dMax = t_objPeak.getMz(); } if ( t_dMin > t_objPeak.getMz() ) { t_dMin = t_objPeak.getMz(); } } } return String.format("%.4f - %.4f", t_dMin,t_dMax); } private String getPersubstTypeName(Persubstitution persubstitution) { return persubstitution.getName(); } private String getSpectrumTypeName(SpectraType a_enumSpectraType) { return a_enumSpectraType.getName(); } }