The Matlab function beam2.m takes as input the observed gene expression levels of a single gene in two repeated experiments, and outputs the BEAM estimate of the true transcript level, and the standard deviation of this estimate.

Required data files:

  • two_val_est.mat
  • two_val_std.mat
  • x_range.mat

    function [est, std] = beam2(X1, X2)
    % [EST, STD] = BEAM2(X1, X2)
    % Input is two values X1 and X2 which represent readings of the same gene
    % from two repeated experiments.  EST returns the BEAM estimate of the
    % underlying transcript level.  STD is the standard deviation of the estimate.
    % X1 and X2 may be vectors or matrices of the same size, in which case
    % EST and STD are also the same size and return the estimates for the
    % corresponding elements.
    if any(size(X1) ~= size(X2))
      error('The two input matrices must have the same size');
    % Load lookup table
    load -ascii two_val_est;
    load -ascii two_val_std;
    load -ascii two_val_range;
    min_range = min(two_val_range);
    max_range = max(two_val_range);
    if any(min(X1(:),X2(:)) < min_range) | any(max(X1(:),X2(:)) > 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));
    [m_x, m_y] = meshgrid(two_val_range, two_val_range);
    est = interp2(m_x, m_y, two_val_est, X1, X2, 'linear');
    std = interp2(m_x, m_y, two_val_std, X1, X2, 'linear');