示例#1
0
def evalbreaks(shuf):
  breaklist = {}
  yearlist = {}      
  yearseglist={}
 # analysis=r[:-2]
  for bs in shuf.keys():
    with open(shuf[bs][0]+'.shuffle', 'w') as outf:
      b=shuffler(shuf[bs][0])
      for line in shuf[bs]:
        print >>outf, line
      #bs=str(shuf.data().breaks())
      print >>outf,bs
      if not bs in breaklist:
        breaklist[bs]=0
      breaklist[bs] += 1  
      bse=eval(bs)
      for bry in bse:
        if not bry in yearlist:
          yearlist[bry] = 0
        yearlist[bry] += 1
      for i in range(1,len(bs) -1):
        ysl=str(bse[i-1:i+2])
        if not ysl in yearseglist:
          yearseglist[ysl] =0
        yearseglist[ysl] += 1
        
      for i in range(1,len(b.data().breaks())-1):
        for offset in [-2,-1,0,1,2]:
          st=b.shuffle(i,offset=offset)
          print >>outf,i, b.data().breaks()[i], offset,st[3:],
          histog=[(st[2][j],  st[1][j]) for j in range(len(st[1]))]
          print >>outf, histog
        
      for i in range(1,len(b.data().breaks())-1):
        xs,ys,yrs=b.spanned(i)
        pcb=convergent_breaks.resample_break(np.array(ys), np.array(yrs), N=100,withmode=True)
        print >>outf,"C",pcb#, detrend=False)
        print >>outf,"S",b.shuffle(i, span=0)[-2]
示例#2
0
         for i in range(1,len(bs) -1):
           ysl=str(bse[i-1:i+2])
           if not ysl in yearseglist:
             yearseglist[ysl] =0
           yearseglist[ysl] += 1
           
         for i in range(1,len(b.data().breaks())-1):
           for offset in [-2,-1,0,1,2]:
             st=b.shuffle(i,offset=offset)
             print >>outf,i, b.data().breaks()[i], offset,st[3:],
             histog=[(st[2][j],  st[1][j]) for j in range(len(st[1]))]
             print >>outf, histog
           
         for i in range(1,len(b.data().breaks())-1):
           xs,ys,yrs=b.spanned(i)
           pcb=convergent_breaks.resample_break(np.array(ys), np.array(yrs), N=100,withmode=True)
           print >>outf,"C",pcb#, detrend=False)
           print >>outf,"S",b.shuffle(i, span=0)[-2]
     
     
 #      with open(b.filename()+'.shuffle', 'r') as inf:
 #        lines =inf.readlines()
 #        for line in lines:
 #          print line[:-1]
 
     outf=open(finalname,"w")  
     print finalname
     for brl in breaklist:
       bre=eval(brl)
       for Y in range(len(bre[1:-1])):
         
示例#3
0
 bre=eval(brl)
 for Y in range(len(bre[1:-1])):
   
   Year=bre[1:-1][Y]
   if Y==0:
     lowyr= list(b.data().years()).index(bre[Y])
   else:
     lowyr= list(b.data().years()).index(bre[Y])+1
   highyr=list(b.data().years()).index(bre[Y+2])+1
   midyr=list(b.data().years()).index(bre[Y+1])+1
   
   print >>outf, '"'+str(brl)+'"', saveddata["breaklist"][brl], Year, bre[Y], bre[Y+2], saveddata["yearseglist"][str(bre[Y:Y+3])],
   #print '"'+str(brl)+'"', saveddata["breaklist"][brl], Year, bre[Y], bre[Y+2], saveddata["yearseglist"][str(bre[Y:Y+3])],
   segstr=str((lowyr,highyr))
   if not segstr in saveddata["segs"]:
     saveddata["segs"][segstr]=convergent_breaks.resample_break(b.data().ys()[lowyr:highyr],b.data().years()[lowyr:highyr], N=100,withmode=True) 
   pcb=saveddata["segs"][segstr]
   print >>outf,pcb[1][0], pcb[2][0], saveddata["yearlist"][Year], pcb[3][0][0], pcb[3][0][1],
   if pcb[3][1] == None:
     print >>outf,0, 0,
   else:
     print >>outf,pcb[3][1][0], pcb[3][1][1],
   betaseg, alphaseg=regress.regress(b.data().ys()[lowyr:highyr],b.data().years()[lowyr:highyr])
   betalow, alphalow=regress.regress(b.data().ys()[lowyr:midyr],b.data().years()[lowyr:midyr])
   betahigh, alphahigh=regress.regress(b.data().ys()[midyr:highyr],b.data().years()[midyr:highyr])
   print >>outf,betaseg, betalow, betahigh,
   
         
   #now do a diagnostic on 15 year enclosed
   low15 = max(0, midyr-8)
   hi15=midyr+8
示例#4
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
示例#5
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)