Newer
Older
TB_Chris / Kepler / options / ResStudies / .svn / text-base / Runs.py.svn-base
  1. import os
  2.  
  3.  
  4. class Run():
  5. def __init__(self, r, a, b, d, bl, ad, aod):
  6. self.RUN = r
  7. self.ANGLE = a
  8. self.BIAS = b
  9. self.DUT = d
  10. self.BLOCK = bl
  11. absad = os.path.abspath( ad )
  12. if not os.path.exists(absad):
  13. os.system('mkdir -p %s' % absad)
  14. absaod = os.path.abspath( aod )
  15. if not os.path.exists(absaod):
  16. os.system('mkdir -p %s' % absaod)
  17. self.ALIGNFILE = absad+'/Alignment'+self.RUN+'.dat'
  18. self.ALIGNOUTFILE = absaod+'/Alignment'+self.RUN+'.dat'
  19.  
  20. def createAlignFile(self):
  21. devs = ['', 'W0002_J06','W0002_B05','W0002_C05','W0002_D05',self.DUT,'W0002_G05','W0002_F05','W0002_H07','W0002_E05']
  22. s = ''
  23. zfile = open('ZPos.txt','r')
  24. for ll in zfile.readlines():
  25. l = ll.split()
  26. if '#' in l[0]:
  27. continue
  28. if l[0] == self.BLOCK:
  29. z = l
  30. for i in range(9):
  31. if i < 4:
  32. s+= '%s 14.03 14.03 %s 2.9845 3.299 0.\n' % (devs[i+1], z[i+1])
  33. elif i == 4:
  34. s+= '%s 0.0 14.03 %s 3.141 %f 0.\n' % (devs[i+1], z[i+1], float(self.ANGLE)*3.141/180. )
  35. else:
  36. s+= '%s 0.0 14.03 %s 3.299 0.157 0.\n' % (devs[i+1], z[i+1])
  37.  
  38. af = open(self.ALIGNFILE, 'w')
  39. af.write(s)
  40. af.close
  41.  
  42. class Runs():
  43. def __init__(self, b, type):
  44. self.BLOCKS = b
  45. if type == 'survey':
  46. ad = 'init'
  47. elif type == 'mille':
  48. ad = 'survey'
  49. elif type == 'dut':
  50. ad = 'mille'
  51. else:
  52. ad = 'dut'
  53. self.TYPE = type
  54. self.ALIGNDIR = "Alignments/%s/" % (ad)
  55. print self.ALIGNDIR
  56. self.ALIGNOUTDIR = "Alignments/%s/" % (type)
  57. self.RUNS = self.defRuns()
  58. self.OUTPUTDIR = ''
  59.  
  60. def defRuns(self):
  61. rs = {}
  62. f = open('runList.txt','r')
  63. for ll in f.readlines():
  64. l = ll.split()
  65. if '#' in l[0]:
  66. continue
  67. r = l[0]
  68. a = l[1]
  69. b = l[2]
  70. d = l[3]
  71. bl= l[4]
  72. if bl in self.BLOCKS:
  73. run = Run(r,a,b,d, bl, self.ALIGNDIR, self.ALIGNOUTDIR)
  74. if bl in rs:
  75. rs[bl].append(run)
  76. else:
  77. rs[bl] = [run]
  78. f.close()
  79. return rs
  80.  
  81. def findRun(self, rn):
  82. for b in self.RUNS:
  83. for r in self.RUNS[b]:
  84. if r.RUN == rn:
  85. return r
  86. def setOutputDir(self, od):
  87. self.OUTPUTDIR = od