def Warming(self, mode='Anomaly', baseincludes=[1975, 2004]): if mode == 'Anomaly': lo=self.__Years.tolist().index(baseincludes[0]) hi=self.__Years.tolist().index(baseincludes[1])+1 mean=self.__Temperature[lo:hi].mean() return self.__Temperature-mean elif mode== 'Kelvin' and self.__Temperature[0] < 200: return self.__Temperatures + 273.15 elif mode=='Celcius' and self.__Temperature[0] > 200: return self.__Temperatures - 273.15 elif not mode in self.TempConversion: raise CMIP3Exception('Conversion mode must be in '+str(self.TempConversion)) else: return self.__Temperature if __name__ == "__main__": fn='C:\\\Users\\s4493222\\Documents\\ReferenceData\\CSIRO_Model_Set\\gwFiles\\csiro_mk3_0.sresa1b.run1.monthly.tas_A1_1871-2100_gw.txt' fn='C:\\\Users\\s4493222\\Documents\\ReferenceData\\CSIRO_Model_Set\\gwFiles\\csiro_mk3_5.sresa1b.run1.monthly.tas_A1_1871-2100_gw.txt' c3=CMIP3gw(fn) for i in range(c3.count()): print c3.Years()[i], c3.Temperature()[i], c3.Warming()[i] import ConvergentBreaks as convergent_breaks import random ys = c3.Warming() xs = np.array([random.random() for y in ys]) Years= c3.Years() convergent_breaks.TraceFile="" cb=convergent_breaks.convergentBreaks(ys, xs, Years, 'GWAnom', shallow=False, mode="control", guide="Stability",screenpr=0.05, pr=0.01, trace=True) print cb
if __name__ == "__main__": prewhiten=False outf=open("SHUFFLE.txt", "w") print >>outf, datetime.datetime.now() data=np.genfromtxt(STARS.fn,delimiter=",",names=True,filling_values =np.NaN) #fill with NaNs so must use their bounds for d in ["A4"]:#data.dtype.fields.keys(): ys = data[d] if prewhiten: ys=whitening.prewhiten(ys,STARS.AlphaEst(ys, 15, option="optIPN4", returnmsgs=False)) Years=data['Year'] xs= np.array([random.random() for i in ys]) for i in range(len(ys)): print >>outf, Years[i],xs[i], ys[i] cb=convergent_breaks.convergentBreaks(ys, xs, Years, d, screenpr=0.01, pr=0.01, trace=False) breaks=[0] for b in cb[2]: #print b breaks.extend([list(Years[:]).index(round(b[0][0])) +1]) breaks.append(len(Years)) #print "BREAKS",breaks for b in range(len(breaks))[1:-1]: sc=shuffle_cut(xs[breaks[b-1]:breaks[b+1]], ys[breaks[b-1]:breaks[b+1]], Years[breaks[b-1]:breaks[b+1]], breaks[b]-breaks[b-1]) #jk=jack_knife(xs[breaks[b-1]:breaks[b+1]], ys[breaks[b-1]:breaks[b+1]], Years[breaks[b-1]:breaks[b+1]], breaks[b]-breaks[b-1]) print >>outf, "CUT",d, b, breaks[b], cb[2][b-1][0], sc outf.close() #an experiment which simply quantifies the effect of a break at half trend of 0.5, 1.0, 1.5 2.0, 2.5 3.0 Std std=stats.tstd(xs)