/*
* Copyright (c) 2003-2012 Fred Hutchinson Cancer Research Center
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.fhcrc.cpl.viewer.feature;
import org.fhcrc.cpl.toolbox.datastructure.Pair;
import org.fhcrc.cpl.toolbox.proteomics.feature.Spectrum;
import org.fhcrc.cpl.viewer.feature.Smooth2D;
import org.fhcrc.cpl.viewer.feature.ExtractMaxima2D;
import org.fhcrc.cpl.viewer.feature.FeatureStrategyUsingWindow2D;
import org.fhcrc.cpl.toolbox.proteomics.MSRun;
import org.fhcrc.cpl.toolbox.datastructure.FloatRange;
import org.fhcrc.cpl.toolbox.proteomics.Scan;
/**
* Created by IntelliJ IDEA.
* User: mbellew
* Date: Oct 12, 2004
* Time: 9:23:52 PM
* To change this template use File | Settings | File Templates.
*/
public class FeatureStrategyWavelet2D extends FeatureStrategyUsingWindow2D
{
public FeatureStrategyWavelet2D(MSRun run, int scan, int count, int maxCharge, FloatRange range, double sn)
{
super(run, scan, count, maxCharge, range, sn);
}
public Spectrum.Peak[] ExtractPeaks(Scan[] scans, Spectrum.Peak[] grossFeatures)
{
return ExtractMaxima2D.analyze(scans, _mzRange, new SmoothWavelet(), -Float.MAX_VALUE);
}
public static class SmoothWavelet extends Smooth2D
{
Pair tmp = new Pair(null, null);
public float[] SmoothSpectra(float[] spectrum)
{
float[] d3 = Spectrum.WaveletD3(spectrum, tmp);
return d3;
}
public float[] SmoothElution(float[] elution)
{
return Spectrum.FFTsmooth(elution, smoothXfactor, false);
}
}
}