# collectscalings.py
# A script for collecting the scaling coefficients of each variant into one file, scalings.sav
#
# Tuomo Maki-Marttunen, Jan 2015
# (CC BY)
from pylab import *
import mytools
import pickle
import sys
import mutation_stuff
MT = mutation_stuff.getMT()
theseCoeffsAllAll = []
for icell in range(0,2):
theseCoeffsAll = []
theseMutValsAll = []
theseMutVarsAll = []
counter = -1
for igene in range(0,len(MT)):
theseCoeffsGene = []
for imut in range(0,len(MT[igene])):
theseCoeffsMut = []
nVals = len(MT[igene][imut])*[0]
thesemutvars = []
for imutvar in range(0,len(MT[igene][imut])):
thesemutvars.append(MT[igene][imut][imutvar][0])
if type(MT[igene][imut][imutvar][1]) is int or type(MT[igene][imut][imutvar][1]) is float:
MT[igene][imut][imutvar][1] = [MT[igene][imut][imutvar][1]]
nVals[imutvar] = len(MT[igene][imut][imutvar][1])
cumprodnVals = cumprod(nVals)
allmutvars = cumprodnVals[len(MT[igene][imut])-1]*[thesemutvars[:]]
allmutvals = []
for iallmutval in range(0,cumprodnVals[len(MT[igene][imut])-1]):
allmutvals.append([0]*len(thesemutvars))
for iallmutval in range(0,cumprodnVals[len(MT[igene][imut])-1]):
for imutvar in range(0,len(MT[igene][imut])):
if imutvar==0:
allmutvals[iallmutval][imutvar] = MT[igene][imut][imutvar][1][iallmutval%nVals[imutvar]]
else:
allmutvals[iallmutval][imutvar] = MT[igene][imut][imutvar][1][(iallmutval/cumprodnVals[imutvar-1])%nVals[imutvar]]
theseMutValsAll.append(allmutvals[:])
theseMutVarsAll.append(allmutvars[:])
for iallmutval in range(0,cumprodnVals[len(MT[igene][imut])-1]):
counter = counter + 1
try: # If the scaling has been done, load it
unpicklefile = open('scalings_cs'+str(icell)+'_'+str(counter)+'.sav', 'r')
unpickledlist = pickle.load(unpicklefile)
unpicklefile.close()
theseCoeffsMut.append(unpickledlist[0])
except: # Otherwise, just add empty list
theseCoeffsMut.append([])
theseCoeffsGene.append(theseCoeffsMut[:])
theseCoeffsAll.append(theseCoeffsGene[:])
theseCoeffsAllAll.append(theseCoeffsAll[:])
picklelist = [theseCoeffsAllAll,theseMutVarsAll,theseMutValsAll,MT]
file = open('scalings.sav', 'w')
pickle.dump(picklelist,file)
file.close()