/* MP5Parameters.java created 2007-10-03
*
*/
package org.signalml.method.mp5;
import static org.signalml.app.util.i18n.SvarogI18n._;
import java.io.Serializable;
import org.signalml.app.config.preset.Preset;
import org.signalml.domain.signal.space.SignalSpace;
import org.springframework.validation.Errors;
import com.thoughtworks.xstream.annotations.XStreamAlias;
/** MP5Parameters
*
*
* @author Michal Dobaczewski © 2007-2008 CC Otwarte Systemy Komputerowe Sp. z o.o.
*/
@XStreamAlias("mp5parameters")
public class MP5Parameters implements Serializable, Preset {
private static final long serialVersionUID = 1L;
public static final float MIN_SCALE_TO_PERIOD_FACTOR = 0F;
public static final float MAX_SCALE_TO_PERIOD_FACTOR = 20000F;
public static final float MIN_ENERGY_ERROR = 0F;
public static final float MAX_ENERGY_ERROR = 1F;
public static final float MIN_ENERGY_ERROR_PERCENTAGE = 0.0F;
public static final float MAX_ENERGY_ERROR_PERCENTAGE = 100F;
public static final int MIN_ITERATION_COUNT = 1;
public static final int MAX_ITERATION_COUNT = 20000;
public static final float MIN_ENERGY_PERCENT = 0F;
public static final float MAX_ENERGY_PERCENT = 100F;
public static final float MIN_POINTS_PER_MICROVOLT = 0F;
public static final float MAX_POINTS_PER_MICROVOLT = 2000000;
public static final float MIN_DOT_EPS = 0;
public static final float MAX_DOT_EPS = 1;
private String name;
private SignalSpace signalSpace = new SignalSpace();
// dictionary parameters
private MP5DictionaryType dictionaryType = MP5DictionaryType.OCTAVE_FIXED;
private MP5DictionaryReinitType dictionaryReinitType = MP5DictionaryReinitType.NO_REINIT_AT_ALL;
private float scaleToPeriodFactor = 1F;
private float energyError = 0.1F;
private float energyErrorPercentage = 90.0F;
// decomposition parameters
private MP5Algorithm algorithm = MP5Algorithm.SMP;
private int maxIterationCount = 50;
private float energyPercent = 99F;
private String bookComment;
private String customConfigText;
private String rawConfigText;
private AtomsInDictionary atomsInDictionary = new AtomsInDictionary();
// private float dotEps = 1E-16F;
@Override
public String getName() {
return name;
}
@Override
public void setName(String name) {
this.name = name;
}
public SignalSpace getSignalSpace() {
return signalSpace;
}
public void setSignalSpace(SignalSpace signalSpace) {
this.signalSpace = signalSpace;
}
public void validate(Errors errors) {
if (scaleToPeriodFactor < MIN_SCALE_TO_PERIOD_FACTOR || scaleToPeriodFactor > MAX_SCALE_TO_PERIOD_FACTOR) {
errors.rejectValue("scaleToPeriodFactor", "error.mp5.badScaleToPeriodFactor", _("Bad scale to period factor"));
}
if (!(energyError > MIN_ENERGY_ERROR && energyError < MAX_ENERGY_ERROR)) {
errors.rejectValue("energyError", "error.mp5.badEnergyError", _("Bad energy error"));
}
if (!(energyErrorPercentage > MIN_ENERGY_ERROR_PERCENTAGE && energyErrorPercentage < MAX_ENERGY_ERROR_PERCENTAGE)) {
errors.rejectValue("energyErrorPercentage", "error.mp5.badEnergyError", _("Bad energy error percentage"));
}
if (maxIterationCount < MIN_ITERATION_COUNT || maxIterationCount > MAX_ITERATION_COUNT) {
errors.rejectValue("maxIterationCount", "error.mp5.badMaxIterationCount", _("Bad max iteration count"));
}
if (energyPercent < MIN_ENERGY_PERCENT || energyPercent > MAX_ENERGY_PERCENT) {
errors.rejectValue("energyPercent", "error.mp5.badEnergyPercent", _("Bad energy percent"));
}
}
public MP5DictionaryType getDictionaryType() {
return dictionaryType;
}
public void setDictionaryType(MP5DictionaryType dictionaryType) {
this.dictionaryType = dictionaryType;
}
public float getEnergyError() {
return energyError;
}
public void setEnergyError(float energyError) {
this.energyError = energyError;
}
public float getEnergyErrorPercentage() {
return energyErrorPercentage;
}
public void setEnergyErrorPercentage(float energyErrorPercentage) {
this.energyErrorPercentage = energyErrorPercentage;
}
public MP5DictionaryReinitType getDictionaryReinitType() {
return dictionaryReinitType;
}
public void setDictionaryReinitType(MP5DictionaryReinitType dictionaryReinitType) {
this.dictionaryReinitType = dictionaryReinitType;
}
public float getScaleToPeriodFactor() {
return scaleToPeriodFactor;
}
public void setScaleToPeriodFactor(float scaleToPeriodFactor) {
this.scaleToPeriodFactor = scaleToPeriodFactor;
}
public int getMaxIterationCount() {
return maxIterationCount;
}
public void setMaxIterationCount(int maxIterationCount) {
this.maxIterationCount = maxIterationCount;
}
public float getEnergyPercent() {
return energyPercent;
}
public void setEnergyPercent(float energyPercent) {
this.energyPercent = energyPercent;
}
public MP5Algorithm getAlgorithm() {
return algorithm;
}
public void setAlgorithm(MP5Algorithm algorithm) {
this.algorithm = algorithm;
}
public String getBookComment() {
return bookComment;
}
public void setBookComment(String bookComment) {
this.bookComment = bookComment;
}
public String getCustomConfigText() {
return customConfigText;
}
public void setCustomConfigText(String customConfigText) {
this.customConfigText = customConfigText;
}
public String getRawConfigText() {
return rawConfigText;
}
public void setRawConfigText(String rawConfigText) {
this.rawConfigText = rawConfigText;
}
public AtomsInDictionary getAtomsInDictionary() {
return atomsInDictionary;
}
@Override
public String toString() {
return name;
}
}