src/core/net/sf/basedb/util/ma/Log10MACalculator.java

Code
Comments
Other
Rev Date Author Line
6366 05 Dec 13 nicklas 1 /**
6366 05 Dec 13 nicklas 2   $Id$
6366 05 Dec 13 nicklas 3
6366 05 Dec 13 nicklas 4   Copyright (C) 2013 Nicklas Nordborg
6366 05 Dec 13 nicklas 5
6366 05 Dec 13 nicklas 6   This file is part of BASE - BioArray Software Environment.
6366 05 Dec 13 nicklas 7   Available at http://base.thep.lu.se/
6366 05 Dec 13 nicklas 8
6366 05 Dec 13 nicklas 9   BASE is free software; you can redistribute it and/or
6366 05 Dec 13 nicklas 10   modify it under the terms of the GNU General Public License
6366 05 Dec 13 nicklas 11   as published by the Free Software Foundation; either version 3
6366 05 Dec 13 nicklas 12   of the License, or (at your option) any later version.
6366 05 Dec 13 nicklas 13
6366 05 Dec 13 nicklas 14   BASE is distributed in the hope that it will be useful,
6366 05 Dec 13 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
6366 05 Dec 13 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
6366 05 Dec 13 nicklas 17   GNU General Public License for more details.
6366 05 Dec 13 nicklas 18
6366 05 Dec 13 nicklas 19   You should have received a copy of the GNU General Public License
6366 05 Dec 13 nicklas 20   along with BASE. If not, see <http://www.gnu.org/licenses/>.
6366 05 Dec 13 nicklas 21 */
6366 05 Dec 13 nicklas 22 package net.sf.basedb.util.ma;
6366 05 Dec 13 nicklas 23
6366 05 Dec 13 nicklas 24 /**
6366 05 Dec 13 nicklas 25   MA calculator for log2-transformed spot intensity values.
6366 05 Dec 13 nicklas 26   
6366 05 Dec 13 nicklas 27   @author nicklas
6366 05 Dec 13 nicklas 28   @since 3.2.4
6366 05 Dec 13 nicklas 29 */
6366 05 Dec 13 nicklas 30 public class Log10MACalculator 
6366 05 Dec 13 nicklas 31   extends MACalculator 
6366 05 Dec 13 nicklas 32 {
6366 05 Dec 13 nicklas 33
6366 05 Dec 13 nicklas 34   static final double LOG10_2 = Math.log10(2);
6366 05 Dec 13 nicklas 35   static final double INV_LOG10_2 = 1 / LOG10_2;
6366 05 Dec 13 nicklas 36   
6366 05 Dec 13 nicklas 37   public Log10MACalculator()
6366 05 Dec 13 nicklas 38   {}
6366 05 Dec 13 nicklas 39   
6366 05 Dec 13 nicklas 40   /**
6366 05 Dec 13 nicklas 41     M = (ch1 - ch2) / log10(2)
6366 05 Dec 13 nicklas 42     A = (ch1 + ch2) / 2
6366 05 Dec 13 nicklas 43   */
6366 05 Dec 13 nicklas 44   @Override
6366 05 Dec 13 nicklas 45   public double[] MA(double ch1, double ch2) 
6366 05 Dec 13 nicklas 46   {
6366 05 Dec 13 nicklas 47     double[] MA = {(ch1-ch2)*INV_LOG10_2, (ch1+ch2)/2};
6366 05 Dec 13 nicklas 48     return MA;
6366 05 Dec 13 nicklas 49   }
6366 05 Dec 13 nicklas 50
6366 05 Dec 13 nicklas 51   /**
6366 05 Dec 13 nicklas 52     ch1 = old - factor * log10(2)
6366 05 Dec 13 nicklas 53     ch2 = old + factor * log10(2)
6366 05 Dec 13 nicklas 54   */
6366 05 Dec 13 nicklas 55   @Override
6366 05 Dec 13 nicklas 56   public double[] correct(double ch1, double ch2, double factor) 
6366 05 Dec 13 nicklas 57   {
6366 05 Dec 13 nicklas 58     factor = factor * LOG10_2;
6366 05 Dec 13 nicklas 59     double[] result = {ch1-factor, ch2+factor};
6366 05 Dec 13 nicklas 60     return result;
6366 05 Dec 13 nicklas 61   }
6366 05 Dec 13 nicklas 62   
6366 05 Dec 13 nicklas 63
6366 05 Dec 13 nicklas 64 }