Changeset 81


Ignore:
Timestamp:
Mar 20, 2012, 10:11:52 AM (5 years ago)
Author:
b.hoekman@…
Message:
 
Location:
trunk/JavaLCMSTools/src/lcSpectra
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • 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}
  • 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}
Note: See TracChangeset for help on using the changeset viewer.