view reactivity_cal/react_norm_function.py @ 26:8bf6c855353b draft

Uploaded
author tyty
date Mon, 20 Oct 2014 14:41:56 -0400
parents
children
line wrap: on
line source

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
from Bio import SeqIO
import math
from parse_dis_react import *

def cap(a,value):
    if a>=value:
        return value
    else:
        return a

def react_norm(react_file, result_file, capped_value):
    print("Normalizing.....")
    react1 = parse_dist(react_file)
    react = react1[1]
    h = file(result_file, 'w')

    capped = int(capped_value)

    all_react = []


    for t in react:
        if react[t]!='null':
            for i in range(len(react[t])):
                if react[t][i]!='NA':                   
                    all_react.append(float(react[t][i]))


    all_react.sort(reverse = True)


    eight = all_react[int(len(all_react)*0.02):int(len(all_react)*0.1)]
    meight = sum(eight)/len(eight)

    for t in react:
        h.write(t)
        h.write('\n')
        if react[t]!='null':
            for i in range((len(react[t])-1)):
                if react[t][i]!='NA':
                    h.write(str(cap((float(react[t][i])/meight),capped)))
                else:
                    h.write('NA')
                h.write('\t')
            if react[t][i+1]!='NA':
                h.write(str(cap((float(react[t][i+1])/meight),capped)))
            else:
                h.write('NA')
            h.write('\n')

    h.close()