Re: spectra
- To: mathgroup at smc.vnet.net
- Subject: [mg61773] Re: [mg61746] spectra
- From: Sseziwa Mukasa <mukasa at jeol.com>
- Date: Sat, 29 Oct 2005 01:32:40 -0400 (EDT)
- References: <200510280725.DAA08688@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
On Oct 28, 2005, at 3:25 AM, Mars J <jmars at sun.ac.za> wrote:
> Hi members
> I have spectra I need to quanitify asap. Need a mathematica routine
> that
> will enable me to determine the respective areas of the peaks.
> Any suggestions.
Assuming the spectra are one dimensional lists one strategy is to
split the list into regions that are greater than a threshold, remove
the regions less than the threshold and then sum the remaining
sublists eg.
Plus@@@Select[Split[spectrum,#2>threshold&>threshold&],First[#]
>threshold&]
Of course you probably want to know the regions to which the sums
correspond, the following will return the number of points to the
beginning of the list of each region after the list has been split.
Most[FoldList[#1+Length[#2]&,0,splitspectrum]]
Putting the two lists together then we can get the areas of the peaks
and the position of the first point in the peak:
splitSpectrum[spectrum_,threshold_]:=Select[Split
[spectrum,#2>threshold&>threshold&],First[#]>threshold&]
getPositions[splitspectrum_]:=Most[FoldList[#1+Length[#2]&,
0,splitspectrum]]
integratePeaks[spectrum_,threshold_]:=Block[{ss=splitSpectrum
[spectrum,threshold],pos},pos=getPositions[ss];{#[[1]],Plus@@#[[2]]}&/
@Select[Transpose[{pos,ss}],First[#[[2]]]>threshold&]]
Regards,
Ssezi
- References:
- spectra
- From: "Mars J <jmars@sun.ac.za>" <jmars@sun.ac.za>
- spectra