Source code for bsPlugins.Normalize

from bsPlugins import *
from bbcflib.gfminer import common
from bbcflib.track import track
from bbcflib import genrep
from numpy import asarray,transpose
import os

__requires__ = ["numpy"]

class NormalizeForm(BaseForm):

    child = twd.HidingTableLayout()
    table = twb.BsFileField(
        label='Table: ',
        help_text='Select scores table',
        validator=twb.BsFileFieldValidator(required=True))
    method = twf.RadioButtonList(
        label='Method: ',
        options=['total','deseq','quantile'],
        help_text='Select the normalization method')
    submit = twf.SubmitButton(id="submit", value="Submit")

meta = {'version': "1.0.0",
        'author': "BBCF",
        'contact': "webmaster-bbcf@epfl.ch"}

in_parameters = [
        {'id': 'table', 'type': 'txt', 'required': True, 'multiple': True},
        {'id': 'method', 'type': 'radio'}]

out_parameters = [{'id': 'normalized', 'type': 'file'}]

[docs]class NormalizePlugin(BasePlugin): """ Normalize the columns of a tab-delimited file using a specified method and returns a normalized tab-delimited file.""" info = { 'title': 'Normalization', 'description': __doc__, 'path': ['Signal', 'Normalization'], 'output': NormalizeForm, 'in': in_parameters, 'out': out_parameters, 'meta': meta, } def __call__(self, **kw): filename = kw.get('table') assert os.path.exists(str(filename)), "File not found: '%s'" % filename file = open(filename, 'r') header = file.readline() id = [] matrix = [] for line in file: newline = line.split() id.append(newline[0]) matrix.append(map(int, newline[1:len(header)])) norm = common.normalize(asarray(matrix).transpose(), kw.get('method')) output = self.temporary_path(fname='output.tab') out = open(output, "w") out.write(header) for i in range(len(norm[0])): out.write(str(id[i])+"\t"+str(map(lambda x: "%.2g" % x, list(norm.transpose()[i]))).replace("'","").replace("[","").replace("]","").replace(", ","\t")+"\n") self.new_file(output, 'normalized') return self.display_time()

Other BBCF projects