Changeset 81

Show
Ignore:
Timestamp:
20-03-12 10:11:52 (2 years ago)
Author:
b.hoekman@…
Message:
 
Location:
trunk/JavaLCMSTools/src/lcSpectra
Files:
1 added
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/JavaLCMSTools/src/lcSpectra/helpers/Spectrum.java

    r79 r81  
    99 * 
    1010 */ 
    11 public class Spectrum { 
     11public class Spectrum implements Comparable<Spectrum> { 
    1212 
    1313        private double retentionTime = 0; 
     
    7575                return precursorChargeState; 
    7676        } 
     77 
     78        /** 
     79         * Sets this spectrum with the values given in the spectrum 
     80         *  
     81         * @param spec 
     82         */ 
     83        public void setSpectrum(Spectrum spec) { 
     84                this.retentionTime = spec.retentionTime; 
     85                this.msLevel = spec.msLevel; 
     86                this.precursorChargeState = spec.precursorChargeState; 
     87                this.precursorMZ = spec.precursorMZ; 
     88                this.scanNr = spec.scanNr; 
     89                this.msSpectra = spec.msSpectra; 
     90        } 
     91 
     92        /** 
     93         * Compares spectrums based on retention time 
     94         */ 
     95        @Override 
     96        public int compareTo(Spectrum arg0) { 
     97                 
     98                Double rtTime = this.retentionTime; 
     99                return rtTime.compareTo(arg0.getRetentionTime()); 
     100        } 
    77101} 
  • trunk/JavaLCMSTools/src/lcSpectra/LCMS2Spectra.java

    r79 r81  
    22 
    33import java.util.ArrayList; 
     4import java.util.Collection; 
     5import java.util.Collections; 
    46import java.util.ListIterator; 
    57 
    68import lcSpectra.helpers.Spectrum; 
     9import lcSpectra.helpers.SpectrumExtended; 
    710import massSpectra.MassSpectraC; 
    811 
     
    5558        } 
    5659         
     60        /** 
     61         * This function updates all the mS2 level spectrums in this LCMS2Spectra to SpectrumExtended 
     62         *  
     63         * This class contains more information related to the performance etc of the MS2 Spectrum 
     64         *  
     65         */ 
     66        public void extendSpectra(Double massTolerancePPM) { 
     67                ArrayList<Spectrum> updated = new ArrayList<Spectrum>(); 
     68                 
     69                Spectrum previousMS1 = null; 
     70                ArrayList<Spectrum> listMS2 = new ArrayList<Spectrum>(); 
     71                 
     72                //Sort spectrums so they are in order of retention time 
     73                Collections.sort(spectrums); 
     74                 
     75                ListIterator<Spectrum> litSpec = spectrums.listIterator(); 
     76                while(litSpec.hasNext()) { 
     77                         
     78                        Spectrum current = litSpec.next(); 
     79                         
     80                        if(current.getMSLevel() == 1) { 
     81                                 
     82                                if(previousMS1 != null) { 
     83                                        updated.addAll(extendMS2Spectra(previousMS1,current,listMS2, massTolerancePPM)); 
     84                                } 
     85                                 
     86                                updated.add(current); 
     87                                 
     88                                previousMS1 = current; 
     89                                listMS2 = new ArrayList<Spectrum>(); 
     90                        } else if(current.getMSLevel() == 2) { 
     91                                listMS2.add(current); 
     92                        } 
     93                } 
     94                 
     95                //replace the initial list with the updated list 
     96                spectrums = updated; 
     97        } 
     98 
     99 
     100        private ArrayList<SpectrumExtended> extendMS2Spectra(Spectrum beforeMS1, Spectrum afterMS1, ArrayList<Spectrum> listMS2, Double massTolerancePPM) { 
     101                ArrayList<SpectrumExtended> result = new ArrayList<SpectrumExtended>(); 
     102                 
     103                Collections.sort(listMS2); 
     104                 
     105                Spectrum previous = beforeMS1; 
     106                 
     107                ListIterator<Spectrum> litMS2 = listMS2.listIterator(); 
     108                while(litMS2.hasNext()) { 
     109                        Spectrum ms2 = litMS2.next(); 
     110                         
     111                        double scanDuration = ms2.getRetentionTime() - previous.getRetentionTime(); 
     112                         
     113                        double precMZ = ms2.getPrecursorMZ(); 
     114                         
     115                        double fromMass = precMZ - (precMZ * massTolerancePPM / 1000000); 
     116                        double toMass = precMZ + (precMZ * massTolerancePPM / 1000000); 
     117                         
     118                         
     119                        double intensityAfter = afterMS1.getMassSpectra().getMassSpectraFromMassRange(fromMass, toMass).getMaximumIntensitie(); 
     120                        double intensityBefore = beforeMS1.getMassSpectra().getMassSpectraFromMassRange(fromMass, toMass).getMaximumIntensitie(); 
     121                         
     122                        double intensDiff = (intensityAfter - intensityBefore); 
     123                         
     124                        double rtEnd = ms2.getRetentionTime(); 
     125                        double rtStart = previous.getRetentionTime(); 
     126                         
     127                        double intensityStart = (rtStart - beforeMS1.getRetentionTime()) * intensDiff + intensityBefore; 
     128                        double intensityEnd = (rtEnd - beforeMS1.getRetentionTime()) * intensDiff + intensityBefore; 
     129                                                 
     130                        SpectrumExtended specE = new SpectrumExtended(ms2,null); 
     131                        specE.setPrecursorInfo(intensityStart, intensityEnd, scanDuration); 
     132                         
     133                        result.add(specE); 
     134                } 
     135                 
     136                return result; 
     137        } 
    57138}