Class MeanFunction

java.lang.Object
net.sf.basedb.util.jep.MeanFunction
All Implemented Interfaces:
JepExpressionFunction, JepFunction, org.nfunk.jep.function.PostfixMathCommandI

public class MeanFunction extends Object implements JepExpressionFunction
A JEP function class that adds a mean(string) function to a JEP expression parser. The function will calculate the mean value of the raw data property with the given name. For example: mean('ch1BgMean')

To be able to use this function it must be registered with the JEP parser and, before the expression is evaluated, a rawbioassay object must be set. For example we can evaluate an expression for every raw data object in a raw bioassay:

DbControl dc = ...
RawBioAssay assay = ...
String expression = "raw('ch1FgMean') - mean('ch1BgMean')";
RawFunction raw = new RawFunction(assay.getRawDataType());
MeanFunction mean = new MeanFunction(assay);
JEP jep = JepUtil.newJep(expression, raw, mean);
DataResultIterator<RawData> result = 
   assay.getRawData().iterate(dc);
while (result.hasNext())
{
   raw.setRawData(result.next());
   double value = jep.getValue();
   // Do something with the value
}
result.close();
Version:
2.0
Author:
Nicklas
See Also:
Last modified
$Date: 2015-04-20 11:08:18 +0200 (må, 20 apr 2015) $
  • Field Details

    • means

      private final Map<String,Float> means
      Holds a cache of the values.
    • dc

      private final DbControl dc
    • numParameters

      private int numParameters
    • rawBioAssay

      private RawBioAssay rawBioAssay
    • rawData

      private RawData rawData
  • Constructor Details

    • MeanFunction

      public MeanFunction(DbControl dc)
      Create a new instance of this function working with raw data of the specified raw bio assay.
      Parameters:
      dc - DbControl used in this function
  • Method Details

    • getFunctionName

      public String getFunctionName()
      Description copied from interface: JepFunction
      Get the name of this function. It is used when registering the function with a JEP parser.
      Specified by:
      getFunctionName in interface JepFunction
      Returns:
      The string "mean"
      See Also:
    • toExpression

      public Expression toExpression(Node node)
      Use the Dynamic.meanRawData(String) method to create an expression for the mean of the given raw data property.
      Specified by:
      toExpression in interface JepExpressionFunction
      Parameters:
      node - The node representing this function
      Returns:
      An Expression object
    • getNumberOfParameters

      public int getNumberOfParameters()
      Specified by:
      getNumberOfParameters in interface org.nfunk.jep.function.PostfixMathCommandI
      Returns:
      Always 1
    • setCurNumberOfParameters

      public void setCurNumberOfParameters(int n)
      Specified by:
      setCurNumberOfParameters in interface org.nfunk.jep.function.PostfixMathCommandI
    • checkNumberOfParameters

      public boolean checkNumberOfParameters(int n)
      Specified by:
      checkNumberOfParameters in interface org.nfunk.jep.function.PostfixMathCommandI
    • run

      public void run(Stack stack) throws ParseException
      Specified by:
      run in interface org.nfunk.jep.function.PostfixMathCommandI
      Throws:
      ParseException
    • setRawData

      public void setRawData(RawData rawData)
      Set a new raw data object that will be used the next time the JEP expression is evaluated.
      Parameters:
      rawData - The raw data object to use
    • getRawData

      public RawData getRawData()
      Get the current raw data object used when evaluating the JEP expression.
    • mean

      public float mean(String propertyName) throws ParseException
      Get the value of the specified property of the current raw data object. This method uses Hibernate metadata to find the value.
      Parameters:
      propertyName - The name of the raw data property. Null is not allowed.
      Returns:
      The mean value as a float.
      Throws:
      ParseException - If the property name is null or if there is another error.