示例#1
0
  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
示例#2
0
  
  
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)