def params(self):
     " Runs through each spectrum in the sp array to calculate the parameters"
     useezmap = False
     from Sp_parameters import param
     import warnings
     print('Running Parameters')
     if useezmap:
         import ezmap
         from ezmap import map as zmap
     warnings.filterwarnings("ignore",category=RuntimeWarning,module="param")
     warnings.filterwarnings("ignore",category=RuntimeWarning,module="Sp_parameters.normsp")
     sp = self.sp
     wvl = self.wvl
     if sp.ndim == 5:
         w,r,t = np.mgrid[0:2,0:len(self.ref),0:len(self.tau)]
         if useezmap:
             gx = lambda a:param(sp[a[0],:,0,a[1],a[2]],wvl)
             args = ((aw,ar,at) for aw in w.ravel() for ar in r.ravel() for at in t.ravel())
             partemp = zmap(gx,args,progress=True,ncpu=2)
         else:
             applypar = lambda w,r,t:param(sp[w,:,0,r,t],wvl)
             partemp = map(applypar,w.ravel(),r.ravel(),t.ravel())
         par = np.reshape(partemp,[2,len(self.ref),len(self.tau),-1])
         self.npar = par.shape[3]
     elif sp.ndim == 2:
         applypartime = lambda tt:param(sp[tt,:],wvl)
         if useezmap:
             par = np.array(zmap(applypartime,xrange(len(self.utc)),ncpu=2,progress=True))
         else:
             part = map(applypartime,xrange(len(self.utc)))
             par = np.array(part)
         self.npar = par.shape[1]
     else: raise LookupError
     self.par = par
     return
 def build_std(self):
     """
     Function that creates a set of uncertainty for each parameter.
     Currently just uses white noise (gaussian)
     """
     from Sp_parameters import param
     meansp = self.mean()
     stdsp = self.std()
     num_noise = 200
     noise = np.random.normal(1,0.005,(num_noise,self.wvl.size)) # add 0.5% variance to signal at all wavelengths
     # should be at every sp in utc, but for now, use mean sp
     sp_arr = meansp*noise
     #import code; code.interact(local=locals())
     par_noisy = np.array(map(lambda tt:param(sp_arr[tt,:],self.wvl),xrange(num_noise)))
     notaxis = tuple(np.where(par_noisy.shape != self.npar)[0])
     stdpar = np.nanstd(par_noisy,axis=notaxis)
     self.stdpar = stdpar
     return stdpar