25 from os.path
import expanduser
31 number = 8 * (
int(stave)-1) + module
39 os.chdir(searchFolderPath)
41 print(
'No entries in ' + searchFolderPath)
47 for src_dir, dirs, files
in os.walk(searchFolderPath):
51 sortedFile = os.path.join(src_dir, file_)
52 todaysList.append(
str(sortedFile))
61 def appendEntries(fileName,dataType,dataFolder,dateEntries,largestDates,firstDate,lastDate,borkDate):
64 rawFiles =
open(fileName,
'r')
66 print (
"could not open file " +
str(fileName) +
" fool")
69 returnList = [firstDate,largestDates,borkDate,dateEntries,firstDate]
74 for dataLine
in rawFiles:
76 index_Jennet = index_Jennet + 1
81 commaSplit = dataLine.split(
',')
83 if '!!!!' in dataLine:
91 moduleList = dataLine.split(
'!!!')
93 for module
in moduleList:
95 elements = module.split(
',')
105 moduleName =
'LI_S' +
str(A) +
'_'+
str(B)
107 moduleNumber =
int(2 * (
int(A)-1)-1 )
111 outName = dataFolder+dataType+
'/' + moduleName +
'.ssv'
114 if os.path.isfile(outName) ==
False:
115 output =
open(outName,
'w')
117 output =
open(outName,
'a')
122 for element
in elements:
126 tempLines = element.split()
127 date= tempLines[1].
split(
'-')
128 time1 = tempLines[2].
split(
':')
131 dateTime = datetime.datetime(
int(date[2]),
int(date[1]),
int(date[0]),
int(time1[0]),
int(time1[1]),
int(time1[2]),
int(time1[3]))
133 if (dateTime>lastDate+datetime.timedelta(hours = 2))
or (dateTime<firstDate -datetime.timedelta(hours = 2)) :
134 returnList[2] = lastDate
135 print (
"\nBORK BORK BORK! Error in date of " + fileName +
" for " + dataType +
" borkDate " +
str(returnList[2]) )
136 print (
"First line reads " + dataLine +
"\n")
137 print (
"Should read " + moduleName+
"_"+dataType+
"\n")
139 borkRepork =
open(dataFolder+dataType+
"BORKBORKBORK.txt",
'w')
140 borkRepork.write(
"filename " + fileName +
"date range " +
str(firstDate) +
"-" +
str(lastDate) +
" first line " + dataLine +
'\n')
145 if dateTime>returnList[1][moduleNumber]:
146 returnList[3][moduleNumber]+=1
147 outputLine = moduleName +
"_" + dataType +
" " +
str(dateTime) +
" " +
str( time.mktime(dateTime.timetuple()) ) +
" " +
str(data) +
"\n"
149 returnList[1][moduleNumber] = dateTime
151 output.write(outputLine)
160 returnList[2] = lastDate
161 print(
"Something broke :( \n")
162 print(
"Could be an error in data values of " + fileName +
" for " + dataType +
" borkDate " +
str(returnList[2]) )
163 print(
"First line reads " + name +
"\n")
165 borkRepork =
open(dataFolder+dataType+
"BORKBORKBORK.txt",
'w')
166 borkRepork.write(
"filename " + fileName +
"date range " +
str(firstDate) +
"-" +
str(lastDate) +
" first line " + dataLine +
'\n')
168 print(
"Try running again... often this is an issue with the connection to eos")
177 fillerDate = datetime.datetime(2000,1,1,1,1,1,1)
178 tempDate = datetime.datetime(2000,1,1,1,1,1,1)
179 returnList =[fillerDate,fillerDate,fillerDate,
False,
"LI_S00_0_M0"]
181 homeDirectory = os.path.expanduser(
'/eos/atlas/user/j/jdickins/Pixel/LeakageCurrent/')
184 dataFolder = homeDirectory +
"/IBLData/processedData/"
185 inputFolder = homeDirectory +
"/IBLData/rawData/"+dataType+
"/"
186 entriesFolder = homeDirectory +
"/IBLData/rawData/entriesPerDay/" + dataType +
"/"
189 if not os.path.exists(dataFolder+dataType):
190 os.mkdir(dataFolder+dataType)
192 if not os.path.exists(entriesFolder):
193 os.mkdir(entriesFolder)
201 smallestEndDate=fillerDate
205 if not os.path.exists(dataFolder+dataType+
".txt"):
208 print(
"No any file found! at " + dataFolder+dataType +
" Making default values")
211 datesFile =
open(dataFolder+dataType+
".txt",
'w')
212 firstTempDate = datetime.datetime(2015,5,1,0,0,0,0)
213 lastTempDate = datetime.datetime(2015,5,1,0,0,0,1)
214 smallestEndDate = lastTempDate
216 for stave
in range(1,15):
217 staveString =
str(stave)
219 staveString=
"0"+
str(stave)
220 for side
in [
'A',
'C']:
221 moduleName =
'LI_S' +
str(staveString) +
'_' + side
222 datesFile.write(moduleName +
" " +
str(firstTempDate) +
" " +
str(lastTempDate) +
" 0 0\n")
223 startingDates.append(firstTempDate)
224 endDates.append(lastTempDate)
225 filesProcessed.append(0)
227 dailyPoints.append(0)
232 print(
"Found " + dataFolder+dataType+
".txt")
233 datesFile =
open(dataFolder+dataType+
".txt",
'r')
237 for dateLine
in datesFile:
239 tempDatesLine = dateLine.split()
240 filesProcessed.append(
int(tempDatesLine[5]) )
241 dataPoints.append(
int( tempDatesLine[6]) )
242 dailyPoints.append(0)
244 firstTemp = tempDatesLine[1].
split(
'-')
245 lastTemp = tempDatesLine[3].
split(
'-')
247 firstTempTime = tempDatesLine[2].
split(
':')
248 lastTempTime = tempDatesLine[4].
split(
':')
250 firstTempTimes = firstTempTime[2].
split(
'.')
251 lastTempTimes = lastTempTime[2].
split(
'.')
253 if len(firstTempTimes)<2:
254 firstTempTimes.append(0)
255 if len(lastTempTimes)<2:
256 lastTempTimes.append(0)
258 firstTempDate = datetime.datetime(
int(firstTemp[0]),
int(firstTemp[1]),
int(firstTemp[2]),
int(firstTempTime[0]),
int(firstTempTime[1]),
int(firstTempTimes[0]),
int(firstTempTimes[1]))
259 lastTempDate = datetime.datetime(
int(lastTemp[0]),
int(lastTemp[1]),
int(lastTemp[2]),
int(lastTempTime[0]),
int(lastTempTime[1]),
int(lastTempTimes[0]),
int(lastTempTimes[1]))
261 startingDates.append(firstTempDate)
262 endDates.append(lastTempDate)
265 returnList[0] = firstTempDate
266 returnList[1] = lastTempDate
267 smallestEndDate=lastTempDate
271 if firstTempDate<returnList[0]:
272 returnList[0] = firstTempDate
273 if lastTempDate>returnList[1]:
274 returnList[1] = lastTempDate
275 if lastTempDate < smallestEndDate:
276 smallestEndDate = lastTempDate
282 print (
"Investigating " + dataType +
" from " +
str(smallestEndDate))
290 firstTempDate = startingDates[0]
291 lastTempDate = endDates[0]
292 numberFiles = len(fileList)
296 for fileName
in fileList:
301 endDate1 = fileName[end-4:end]
302 endDate2 = fileName[end-7:end-6]
304 if endDate1==
'.txt' and endDate2==
'_':
307 startDate = fileName[end-23:end-15]
308 endDate = fileName[end-12:end-4]
309 endDateSplit = endDate.split(
'_')
310 endDateFile = datetime.datetime(2000+
int(endDateSplit[0]),
int(endDateSplit[1]),
int(endDateSplit[2]),0,0,0,1)
312 startDateSplit = startDate.split(
'_')
313 startDateFile = datetime.datetime(2000+
int(startDateSplit[0]),
int(startDateSplit[1]),
int(startDateSplit[2]),0,0,0,1)
315 if endDateFile > smallestEndDate:
318 lastTempDate = endDateFile
319 [firstTempDate,endDates,fillerDate,tempDataNumbers,smallestEndDate] =
appendEntries(fileName,dataType,dataFolder,dailyPoints,endDates,startDateFile,endDateFile,fillerDate)
322 for i
in range(0,28):
323 filesProcessed[i] +=1
324 dataPoints[i]+=tempDataNumbers[i]
329 for stave
in range(1,15):
330 staveString =
str(stave)
332 staveString=
"0"+
str(stave)
333 for side
in [
'A',
'C']:
334 moduleName =
'LI_S' +
str(staveString) +
'_' + side
335 outName = entriesFolder + moduleName +
".txt"
336 dataLine =
str(startDate) +
" " +
str(tempDataNumbers[holderX]) +
"\n"
337 tempDataNumbers[holderX]=0
339 if os.path.isfile(outName) ==
False:
340 output =
open(outName,
'w')
341 output.write(dataLine)
345 output =
open(outName,
'a')
346 output.write(dataLine)
351 if returnList[2]!=fillerDate:
352 returnList[2] = fillerDate
353 datesFile =
open(dataFolder+dataType+
".txt",
'w')
355 for stave
in range(1,15):
356 staveString =
str(stave)
358 staveString=
"0"+
str(stave)
359 for side
in [
'A',
'C']:
360 moduleName =
'LI_S' +
str(staveString) +
'_' + side
361 datesFile.write(moduleName +
" " +
str(startingDates[tempHolder]) +
" " +
str(endDates[tempHolder]) +
" " +
str(filesProcessed[tempHolder]) +
" " + str ( dataPoints[tempHolder] ) +
"\n")
379 datesFile =
open(dataFolder+dataType+
".txt",
'w')
381 for staveX
in range(1,15):
382 staveStringX =
str(staveX)
384 staveStringX=
"0"+
str(staveX)
385 for sideX
in [
'A',
'C']:
386 moduleNameX =
'LI_S' +
str(staveStringX) +
'_' + sideX
387 datesFile.write(moduleNameX +
" " +
str(startingDates[tempHolder]) +
" " +
str(endDates[tempHolder]) +
" " +
str(filesProcessed[tempHolder]) +
" " + str ( dataPoints[tempHolder] ) +
"\n")
398 threading.Thread.__init__(self)
403 print (
"Starting getPipeDate.py for " + self.
name)
405 print (
"Exiting getPipeDate.py for " + self.
name +
" with no issues, data range from " +
str(returnList[0]) +
" to " +
str(returnList[1]) )
412 thread1 = scanDataThread (1,
'ENV_TT' )
415 if __name__ ==
"__main__":