#! /usr/bin/env python # computeDistributionOfNearestNeighbors.py # P.Clote import sys,math, os,copy from misc import basePairList from math import exp,sqrt from vienna import evalViennaEnergy from misc import RNAfold, RNAeval, RNAsubopt, RNAshapes, DANGLE_STATUS R = 0.00198717 T = 310.15 RT = (R*T) THETA = 3 PRINT = True PRINTDist = True #print prob distribution of num nbors DEBUG = False EPSILON = 1e-12 def Sqrt(x): #Without this can get math error of sqrt(-1e-15)! if abs(x)','').strip() rna = file.readline().strip().upper() totalNum,mean,stdev,SecStrs,Nhbors,ratio,Dist,Z = computeSumNx(rna,E) if PRINTDist: printDistribution(Dist,Z) numStr = len(SecStrs) uniformMean = totalNum/float(len(SecStrs)) print "mean\tstdev\tuniformMean\tratio\tnumStr" # print "%.2f\t%.4f\t%.2f\t%.4f\t%d" % (mean,stdev,uniformMean,ratio,numStr) print "%.4f\t%.4f\t%.4f\t\t%.4f\t%d" % (mean,stdev,uniformMean,ratio,numStr) line = file.readline() file.close() if __name__ == '__main__': if len(sys.argv)< 3: print "Usage: %s -s/-f rna/rnafilename [EnergyBound]" % sys.argv[0] sys.exit(1) assert( sys.argv[1] in ['-s','-f'] ) flag = sys.argv[1] foo = sys.argv[2] if len(sys.argv)>3: E = float(sys.argv[3]) else: E = 2.0 if flag=='-s': mainSingleRNA(foo,E) else: mainFASTAfile(foo,E)