/* * #%L * org.gitools.matrix * %% * Copyright (C) 2013 - 2016 Universitat Pompeu Fabra - Biomedical Genomics group * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this program. If not, see * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ package org.gitools.matrix.transform; import org.apache.commons.math3.analysis.function.Logit; import org.gitools.api.matrix.ConfigurableTransformFunction; import org.gitools.api.matrix.IMatrixPosition; import org.gitools.matrix.transform.parameters.DoubleParameter; public class LogitFunction extends ConfigurableTransformFunction { public static final String LOW = "Low"; private Logit logit; private DoubleParameter lowParameter; private DoubleParameter highParameter; public LogitFunction() { super("Logit", "Returns the Logit transformation"); } @Override public Double apply(Double value, IMatrixPosition position) { if (value != null) { return getLogit().value(value); } return null; } @Override public LogitFunction createNew() { return new LogitFunction(); } @Override protected void createDefaultParameters() { lowParameter = new DoubleParameter(); lowParameter.setParameterValue(0.0); lowParameter.setDescription("Low threshold"); addParameter("Low", lowParameter); highParameter = new DoubleParameter(); highParameter.setParameterValue(1.0); highParameter.setDescription("High threshold"); addParameter("High", highParameter); } public Logit getLogit() { if (logit == null) { logit = new Logit(lowParameter.getParameterValue(), highParameter.getParameterValue()); } return logit; } @Override public String getName() { return super.getName() + " (" + lowParameter.getParameterValue() + ", " + highParameter.getParameterValue() + ")"; } }