import imp
import random

class IF:
    def __init__(self,MT):
        print "Microtubule object:",MT
        self.MT=MT
    def IFStep(self,frame=-1):
        if random.random()<self.MT.Params.GetParameter('SpontaneousNucleationProbability') and self.MT.TotalMicrotubuleCount()<300:
            self.MT.AddRandomMT()
    def MicrotubuleIF(self,mt,mtnumber,totallength,maximumlength,frame=-1):
        mt.SaveMTCoordinates()
        mt.StepForward(totallength,maximumlength)
        collobject=self.MT.CheckSpecificCollision(mtnumber)
        if collobject.HitSomething()==True:
            mt.RestoreMT()
            decision=self.MT.ZipperDecision(collobject)
            if decision=='Zipper': mt.Zipper(collobject.angle2)
            elif decision=='ReverseZipper': mt.ReverseZipper(collobject.angle2)
            elif decision=='Catastrophe': mt.HaveCatastrophe()
            elif decision=='Sever': self.MT.SeverMicrotubule(collobject)
            else: mt.Pause()
        if random.random()<self.MT.Params.GetParameter('SubCorticalSpawnProbability'):
            self.MT.SpawnMT()
        if mt.SmallMT()==True or self.MT.Cell.Polygon.CheckInsideCell2(mt.tempcoords)==False:
            try:
                mt.PrepareToDie()
                del self.MT.MTcollection[mtnumber]
            except:
                pass
