The Matlab function beam1.m takes as input an observed gene expression level and outputs the BEAM estimate of the transcript level, and the standard deviation of this estimate.

Required data files:

  • one_val_est.mat
  • one_val_std.mat
  • x_range.mat

    function [est, std] = beam1(X)
    % [EST, STD] = BEAM1(X)
    %  Given a chip reading X, returns the BEAM estimate of the transcript level
    %  in EST, and the standard deviation in STD.  X may be a vector, in which
    %  case EST and STD are vectors of the same size, returning estimate and
    %  standard deviation for corresponding elements.
    % Load lookup table
    load -ascii one_val_est;
    load -ascii one_val_std;
    load -ascii one_val_range;
    min_range = min(one_val_range);
    max_range = max(one_val_range);
    if any(X(:) < min_range) | any(X(:) > max_range)
      warning(sprintf('One or more input values is outside the range \n of the precomputed lookup table (i.e., less than %1.0f \n or greater than %1.0f).  The corresponding output \n values will be stored as ''NaN'' (Not a Number)',min_range,max_range));
    est = reshape(interp1(one_val_range, one_val_est, X(:), 'linear'), size(X));
    std = reshape(interp1(one_val_range, one_val_std, X(:), 'linear'), size(X));