Changeset 163
- Timestamp:
- 04/29/08 01:32:02 (8 months ago)
- Files:
-
- projects/AsynCluster/trunk/svpmc/model.py (modified) (2 diffs)
- projects/AsynCluster/trunk/svpmc/pmc.py (modified) (3 diffs)
- projects/AsynCluster/trunk/svpmc/project.py (added)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
projects/AsynCluster/trunk/svpmc/model.py
r161 r163 177 177 ########################################################################### 178 178 """ 179 def __init__(self, projectSpec): 180 sp = SpecParser(projectSpec) 181 self.priors = sp.priorContainer() 182 self.modelObj = Model(tsList=sp.timeSeries()) 179 def __init__(self, projectManager): 180 self.mgr = projectManager 181 self.modelObj = Model( 182 paramNames=projectManager.paramNames, 183 tsList=projectManager.timeSeries) 183 184 self.queue = NullQueue(1) 184 185 reactor.addSystemEventTrigger( … … 298 299 299 300 keyAttrs = {'tsList':None, 'Mv':50, 'Mz':50} 300 paramNames = params.PARAM_NAMES301 301 302 302 #--- Properties ----------------------------------------------------------- projects/AsynCluster/trunk/svpmc/pmc.py
r161 r163 37 37 38 38 39 class Recorder(object):40 """41 For each iteration of an instance of L{PMC}, I update an open NetCDF file42 with the posterior draws represented by a flex-array of parameter43 containers.44 """45 def __init__(self, filePath):46 self.cdf = NetCDF.NetCDFFile(filePath, 'w')47 48 49 def restart(self):50 for consumer, isFinishable in self.consumers:51 consumer.registerProducer(self, True)52 self.resumeProducing()53 54 def gotNext(self, X):55 if self.producing:56 for consumer, isFinishable in self.consumers:57 consumer.write(X)58 59 def registerConsumer(self, consumer):60 """61 Call this with a provider of I{interfaces.IConsumer} and I'll62 produce for it in addition to any others already registered63 with me.64 """65 if not interfaces.IConsumer.providedBy(consumer):66 raise NotImplementedError(67 "Object doesn't provide the IConsumer interface")68 isFinishable = interfaces.IFinishableConsumer.providedBy(consumer)69 self.consumers.append((consumer, isFinishable))70 71 #--- IPushProducer implementation -----------------------------------------72 73 def pauseProducing(self):74 self.producing = False75 76 def resumeProducing(self):77 self.producing = True78 79 def stopProducing(self):80 self.producing = False81 for consumer, isFinishable in self.consumers:82 if isFinishable:83 consumer.finish()84 consumer.unregisterProducer()85 86 87 39 class PMC(object): 88 40 """ … … 92 44 V = [1.0, 0.5, 0.1, 0.05, 0.01] 93 45 94 def __init__(self, modelManager, **kw): 95 self.mgr = modelManager 96 self.recorder = Recorder(self.mgr) 97 for name, value in kw.iteritems(): 98 setattr(self, name, value) 99 46 def __init__(self, projectManager): 47 self.mgr = projectManager 48 100 49 def setupRun(self, N_iter, N_members): 101 50 """ … … 106 55 self.N_members = N_members 107 56 self.iterationProducer.restart() 108 109 def subscribe(self, consumer):110 """111 Subscribes the supplied provider of L{interfaces.IConsumer} to receive112 an array of parameter values for each iteration of my runs. The arrays113 will have one parameter vector per row, and one row for each chain or114 population member.115 """116 self.iterationProducer.registerConsumer(consumer)117 57 118 58 def _get_queue(self):
