Merge branch 'master' of git.ucc.asn.au:/matches/honours
authorSam Moore <sam@daedalus.(none)>
Fri, 12 Oct 2012 12:04:40 +0000 (20:04 +0800)
committerSam Moore <sam@daedalus.(none)>
Fri, 12 Oct 2012 12:04:40 +0000 (20:04 +0800)
1  2 
research/TCS/process.py

diff --combined research/TCS/process.py
@@@ -15,37 -15,9 +15,37 @@@ import odict #ordered dictionar
  import copy
  
  import Gnuplot, Gnuplot.funcutils
 +import string
  
  gnuplot = Gnuplot.Gnuplot()
  
 +def Reset():
 +      gnuplot = Gnuplot.Gnuplot()
 +
 +def FindDataFiles(directory=".", depth=1, result=None):
 +      if result == None:
 +              result = []
 +      
 +      for f in os.listdir(directory):
 +              if os.path.isdir(directory+"/"+str(f)):
 +                      if depth > 1:
 +                              result += FindDataFiles(directory+"/"+str(f), depth-1, result)
 +                      continue
 +              s = f.split(".")
 +              if (len(s) == 2 and s[1] == "dat"):
 +                      result.append(directory+"/"+str(f))
 +
 +      return result
 +
 +def BaseName(f):
 +      a = f.split("/")
 +      return a[len(a)-1]
 +      
 +
 +def DirectoryName(f, start=0,back=1):
 +      a = f.split("/")
 +      return string.join(a[start:(len(a)-back)], "/")
 +
  def GetData(filename):
        input_file = open(filename, "r")
        data = []
@@@ -137,7 -109,7 +137,7 @@@ def Derivative(data, a=1, b=2, sigma=No
                        
        return result[0:len(result)-1]
  
 -def MaxNormalise(data, u=1):  
 +def MaxNormalise(data, u=2):  
        result = copy.deepcopy(data)
        if (len(data) <= 0):
                return result
@@@ -193,38 -165,21 +193,38 @@@ def SaveData(filename, data)
                        out.write(str(a[i]))
                        if (i < len(a) - 1):
                                out.write("\t")
 -                      out.write("\n")
 +              out.write("\n")
  
 -def CalibrateData(data, ammeter_scale=1e-6):
 +def AverageAllData(directory, save=None)
 +      data_sets = []
 +      if save == None: save = directory+"/average.dat":
 +      for d in FindDataFiles(directory):
 +              data_sets.append(GetData(d))
 +      
 +      a = Average(data_sets)
 +      SaveData(save, a)
 +      return a
 +
 +def CalibrateData(original, ammeter_scale=1e-6):
 +      data = copy.deepcopy(original)
        for i in range(0, len(data)):
                data[i][1] = 16.8 * float(data[i][1]) / 4000.0
                data[i][2] = ammeter_scale * 0.170 * float(data[i][2]) / 268.0
                data[i][3] = ammeter_scale * 0.170 * float(data[i][3]) / 268.0
        return data
  
 -def ShowTCS(filename, calibrate=True, normalise=False, show_error=False, plot=gnuplot.plot,w="lp", step=1):
 +def ShowTCS(filename, calibrate=True, normalise=False, show_error=False, plot=gnuplot.plot,with_="lp", step=1, output=None, title=""):
        if type(filename) == type(""): 
                data = GetData(filename)
        else:
                data = filename
 -              filename = "data"
 +              filename = "tcs data"
 +
 +      if (title == ""):
 +              title = BaseName(filename)
 +
 +      if (len(data) <= 0):
 +              return data
  
        if calibrate: 
                data = CalibrateData(data)
                data = MaxNormalise(data)
                gnuplot("set ylabel \"dI(E)/dE (normalised)\"")
  
 -      gnuplot("set title \"S(E)\"")
 +      if (output != None and type(output) == type("")):
 +              gnuplot("set term png size 640,480")
 +              gnuplot("set output \""+str(output)+"\"")
 +
 +      gnuplot("set title \"Total Current Spectrum S(E)\"")
        gnuplot("set xlabel \"U ("+str(units[0])+")\"")
  
  
        d = Derivative(data, 1, 2, step=step)
        
 -      plot(Gnuplot.Data(d, using="2:3", with_=w,title="S(E) : " + str(filename)))
 +      plot(Gnuplot.Data(d, using="2:3", with_=with_,title=title))
        if (show_error):
                error1 = Derivative(data, 1, 2, -3,step=step)
                error2 = Derivative(data, 1, 2, +3,step=step)
 -              gnuplot.replot(Gnuplot.Data(error1, using="2:3", with_=w,title="Error : Low bound"))
 -              gnuplot.replot(Gnuplot.Data(error2, using="2:3", with_=w, title="Error : Upper bound"))
 +              gnuplot.replot(Gnuplot.Data(error1, using="2:3", with_=w,title="-sigma/2"))
 +              gnuplot.replot(Gnuplot.Data(error2, using="2:3", with_=w, title="+sigma/2"))
  
 +      if (output != None and type(output) == type("")):
 +              gnuplot("set term wxt")
        return data
  
 -def ShowData(filename,calibrate=True, normalise=False, show_error=False, plot=gnuplot.plot,w="lp", step=1):
 +def ShowData(filename,calibrate=True, normalise=False, show_error=False, plot=gnuplot.plot,with_="lp", step=1, output=None, title=""):
        if type(filename) == type(""): 
                data = GetData(filename)
        else:
                data = filename
 -              filename = "data"
 +              filename = "raw data"
 +
 +      if (title == ""):
 +              title = BaseName(filename)
  
        if len(data) <= 0:
 -              return
 +              return data
        if calibrate: 
                data = CalibrateData(data)
                units = ["V", "uA"]
                data = MaxNormalise(data)
                gnuplot("set ylabel \"I(E) (normalised)\"")
  
 -      gnuplot("set title \"S(E)\"")
 +      if (output != None and type(output) == type("")):
 +              gnuplot("set term png size 640,480")
 +              gnuplot("set output \""+str(output)+"\"")
 +
 +      gnuplot("set title \"Sample Current I(E)\"")
        gnuplot("set xlabel \"U ("+str(units[0])+")\"")
  
  
        #d = Derivative(data, 1, 2, step=step)
        
 -      plot(Gnuplot.Data(data, using="2:3", with_=w,title="S(E) : " + str(filename)))
 +      plot(Gnuplot.Data(data, using="2:3", with_=with_,title=title))
        if (show_error):
                error1 = copy.deepcopy(data)
                error2 = copy.deepcopy(data)
                        error2[i][2] += 0.50*float(data[i][3])
                gnuplot.replot(Gnuplot.Data(error1, using="2:3", with_=w,title="Error : Low bound"))
                gnuplot.replot(Gnuplot.Data(error2, using="2:3", with_=w, title="Error : Upper bound"))
 -              
 +      
 +      if (output != None and type(output) == type("")):
 +              gnuplot("set term wxt") 
        return data
  
- def main():   
+ def main():
+       return 0        
        if (len(sys.argv) < 2):
                sys.stderr.write(sys.argv[0] + " - Require arguments (filename)\n")
                return 1
        #gnuplot("set term postscript colour")
        #gnuplot("set output \"test.eps\"")
        for i in range(1, len(sys.argv)):
-               tcs.append(Derivative(GetData(sys.argv[i]), 1, 2))
-               #tcs.append(GetTCS(GetData(sys.argv[i])))
                if (len(tcs[i-1]) > 0):
                        gnuplot.replot(Gnuplot.Data(tcs[i-1], title=sys.argv[i], with_="lp"))
  

UCC git Repository :: git.ucc.asn.au