import misc
odors = {}
def hill(eta, k, n, Fmax, cc): return Fmax/(1+((1+(0.0+k)/cc)/eta)**n)
def PG(val): return 0.5/(1+0.01*(1.0/val-1))
class odor:
def __init__(self, name, eta, k):
self.name = name
self.eta = eta
self.k = k
def getORNs(self, cc):
return [ hill(self.eta[i], self.k[i], 2, 25.0, cc) for i in range(len(self.eta)) ]
def afterPG_1(self, cc):
act = self.getORNs(cc)
mu = misc.mean(act)
for i in range(len(act)):
act[i] -= mu
if act[i] < 0:
act[i] = 0
return act
def afterPG_2(self, cc):
act = self.afterPG_1(cc)
for i in range(len(act)):
if act[i] > 0:
act[i] -= PG(act[i])
if act[i] < 0:
act[i] = 0
return act
def init(kfilename, etafilename):
odors.clear()
import fileinput
for l in fileinput.input(etafilename):
data = l.split('\t')
odors.update({ data[0]: odor(data[0], [ float(x) for x in data[1:] ], []) })
for l in fileinput.input(kfilename):
data = l.split('\t')
odors[data[0]].k = [ float(x) for x in data[1:] ]
init('Kod.txt', 'Eta.txt')
if __name__ == '__main__':
o = odors['Mint']