##// END OF EJS Templates
UPDATE FINX numpy.float-> numpy.float64
avaldez -
r1750:711be076c23b
parent child
Show More
@@ -1,650 +1,650
1 1 import os
2 2 import time
3 3 import datetime
4 4
5 5 import numpy
6 6 import h5py
7 7
8 8 import schainpy.admin
9 9 from schainpy.model.data.jrodata import *
10 10 from schainpy.model.proc.jroproc_base import ProcessingUnit, Operation, MPDecorator
11 11 from schainpy.model.io.jroIO_base import *
12 12 from schainpy.utils import log
13 13
14 14
15 15 class HDFReader(Reader, ProcessingUnit):
16 16 """Processing unit to read HDF5 format files
17 17
18 18 This unit reads HDF5 files created with `HDFWriter` operation contains
19 19 by default two groups Data and Metadata all variables would be saved as `dataOut`
20 20 attributes.
21 21 It is possible to read any HDF5 file by given the structure in the `description`
22 22 parameter, also you can add extra values to metadata with the parameter `extras`.
23 23
24 24 Parameters:
25 25 -----------
26 26 path : str
27 27 Path where files are located.
28 28 startDate : date
29 29 Start date of the files
30 30 endDate : list
31 31 End date of the files
32 32 startTime : time
33 33 Start time of the files
34 34 endTime : time
35 35 End time of the files
36 36 description : dict, optional
37 37 Dictionary with the description of the HDF5 file
38 38 extras : dict, optional
39 39 Dictionary with extra metadata to be be added to `dataOut`
40 40
41 41 Attention: Be carefull, add attribute utcoffset, in the last part of reader in order to work in Local Time without time problems.
42 42
43 43 -----------
44 44 utcoffset='-18000'
45 45
46 46
47 47 Examples
48 48 --------
49 49
50 50 desc = {
51 51 'Data': {
52 52 'data_output': ['u', 'v', 'w'],
53 53 'utctime': 'timestamps',
54 54 } ,
55 55 'Metadata': {
56 56 'heightList': 'heights'
57 57 }
58 58 }
59 59
60 60 desc = {
61 61 'Data': {
62 62 'data_output': 'winds',
63 63 'utctime': 'timestamps'
64 64 },
65 65 'Metadata': {
66 66 'heightList': 'heights'
67 67 }
68 68 }
69 69
70 70 extras = {
71 71 'timeZone': 300
72 72 }
73 73
74 74 reader = project.addReadUnit(
75 75 name='HDFReader',
76 76 path='/path/to/files',
77 77 startDate='2019/01/01',
78 78 endDate='2019/01/31',
79 79 startTime='00:00:00',
80 80 endTime='23:59:59',
81 81 utcoffset='-18000'
82 82 # description=json.dumps(desc),
83 83 # extras=json.dumps(extras),
84 84 )
85 85
86 86 """
87 87
88 88 __attrs__ = ['path', 'startDate', 'endDate', 'startTime', 'endTime', 'description', 'extras']
89 89
90 90 def __init__(self):
91 91 ProcessingUnit.__init__(self)
92 92 self.dataOut = Parameters()
93 93 self.ext = ".hdf5"
94 94 self.optchar = "D"
95 95 self.meta = {}
96 96 self.data = {}
97 97 self.open_file = h5py.File
98 98 self.open_mode = 'r'
99 99 self.description = {}
100 100 self.extras = {}
101 101 self.filefmt = "*%Y%j***"
102 102 self.folderfmt = "*%Y%j"
103 103 self.utcoffset = 0
104 104
105 105 def setup(self, **kwargs):
106 106
107 107 self.set_kwargs(**kwargs)
108 108 if not self.ext.startswith('.'):
109 109 self.ext = '.{}'.format(self.ext)
110 110
111 111 if self.online:
112 112 log.log("Searching files in online mode...", self.name)
113 113
114 114 for nTries in range(self.nTries):
115 115 fullpath = self.searchFilesOnLine(self.path, self.startDate,
116 116 self.endDate, self.expLabel, self.ext, self.walk,
117 117 self.filefmt, self.folderfmt)
118 118 try:
119 119 fullpath = next(fullpath)
120 120 except:
121 121 fullpath = None
122 122
123 123 if fullpath:
124 124 break
125 125
126 126 log.warning(
127 127 'Waiting {} sec for a valid file in {}: try {} ...'.format(
128 128 self.delay, self.path, nTries + 1),
129 129 self.name)
130 130 time.sleep(self.delay)
131 131
132 132 if not(fullpath):
133 133 raise schainpy.admin.SchainError(
134 134 'There isn\'t any valid file in {}'.format(self.path))
135 135
136 136 pathname, filename = os.path.split(fullpath)
137 137 self.year = int(filename[1:5])
138 138 self.doy = int(filename[5:8])
139 139 self.set = int(filename[8:11]) - 1
140 140 else:
141 141 log.log("Searching files in {}".format(self.path), self.name)
142 142 self.filenameList = self.searchFilesOffLine(self.path, self.startDate,
143 143 self.endDate, self.expLabel, self.ext, self.walk, self.filefmt, self.folderfmt)
144 144
145 145 self.setNextFile()
146 146
147 147 return
148 148
149 149 def readFirstHeader(self):
150 150 '''Read metadata and data'''
151 151
152 152 self.__readMetadata()
153 153 self.__readData()
154 154 self.__setBlockList()
155 155
156 156 if 'type' in self.meta:
157 157 self.dataOut = eval(self.meta['type'])()
158 158
159 159 for attr in self.meta:
160 160 setattr(self.dataOut, attr, self.meta[attr])
161 161
162 162 self.blockIndex = 0
163 163
164 164 return
165 165
166 166 def __setBlockList(self):
167 167 '''
168 168 Selects the data within the times defined
169 169
170 170 self.fp
171 171 self.startTime
172 172 self.endTime
173 173 self.blockList
174 174 self.blocksPerFile
175 175
176 176 '''
177 177
178 178 startTime = self.startTime
179 179 endTime = self.endTime
180 180 thisUtcTime = self.data['utctime'] + self.utcoffset
181 181 #self.interval = numpy.min(thisUtcTime[1:] - thisUtcTime[:-1])
182 182 thisDatetime = datetime.datetime.utcfromtimestamp(thisUtcTime[0])
183 183
184 184 thisDate = thisDatetime.date()
185 185 thisTime = thisDatetime.time()
186 186 startUtcTime = (datetime.datetime.combine(thisDate, startTime) - datetime.datetime(1970, 1, 1)).total_seconds()
187 187 endUtcTime = (datetime.datetime.combine(thisDate, endTime) - datetime.datetime(1970, 1, 1)).total_seconds()
188 188 ind = numpy.where(numpy.logical_and(thisUtcTime >= startUtcTime, thisUtcTime < endUtcTime))[0]
189 189
190 190 self.blockList = ind
191 191 self.blocksPerFile = len(ind)
192 192
193 193 if len(ind)==0:
194 194 print("[Reading] Block No. %d/%d -> %s [Skipping]" % (self.blockIndex,
195 195 self.blocksPerFile,
196 196 thisDatetime))
197 197 self.setNextFile()
198 198
199 199 return
200 200
201 201 def __readMetadata(self):
202 202 '''
203 203 Reads Metadata
204 204 '''
205 205
206 206 meta = {}
207 207
208 208 if self.description:
209 209 for key, value in self.description['Metadata'].items():
210 210 meta[key] = self.fp[value][()]
211 211 else:
212 212 grp = self.fp['Metadata']
213 213 for name in grp:
214 214 meta[name] = grp[name][()]
215 215
216 216 if self.extras:
217 217 for key, value in self.extras.items():
218 218 meta[key] = value
219 219 self.meta = meta
220 220
221 221 return
222 222
223 223 def __readData(self):
224 224
225 225 data = {}
226 226
227 227 if self.description:
228 228 for key, value in self.description['Data'].items():
229 229 if isinstance(value, str):
230 230 if isinstance(self.fp[value], h5py.Dataset):
231 231 data[key] = self.fp[value][()]
232 232 elif isinstance(self.fp[value], h5py.Group):
233 233 array = []
234 234 for ch in self.fp[value]:
235 235 array.append(self.fp[value][ch][()])
236 236 data[key] = numpy.array(array)
237 237 elif isinstance(value, list):
238 238 array = []
239 239 for ch in value:
240 240 array.append(self.fp[ch][()])
241 241 data[key] = numpy.array(array)
242 242 else:
243 243 grp = self.fp['Data']
244 244 for name in grp:
245 245 if isinstance(grp[name], h5py.Dataset):
246 246 array = grp[name][()]
247 247 elif isinstance(grp[name], h5py.Group):
248 248 array = []
249 249 for ch in grp[name]:
250 250 array.append(grp[name][ch][()])
251 251 array = numpy.array(array)
252 252 else:
253 253 log.warning('Unknown type: {}'.format(name))
254 254
255 255 if name in self.description:
256 256 key = self.description[name]
257 257 else:
258 258 key = name
259 259 data[key] = array
260 260
261 261 self.data = data
262 262 return
263 263
264 264 def getData(self):
265 265
266 266 for attr in self.data:
267 267 if self.data[attr].ndim == 1:
268 268 setattr(self.dataOut, attr, self.data[attr][self.blockIndex])
269 269 else:
270 270 setattr(self.dataOut, attr, self.data[attr][:, self.blockIndex])
271 271
272 272 self.dataOut.flagNoData = False
273 273 self.blockIndex += 1
274 274
275 275 log.log("Block No. {}/{} -> {}".format(
276 276 self.blockIndex,
277 277 self.blocksPerFile,
278 278 self.dataOut.datatime.ctime()), self.name)
279 279
280 280 return
281 281
282 282 def run(self, **kwargs):
283 283
284 284 if not(self.isConfig):
285 285 self.setup(**kwargs)
286 286 self.isConfig = True
287 287
288 288 if self.blockIndex == self.blocksPerFile:
289 289 self.setNextFile()
290 290
291 291 self.getData()
292 292
293 293 return
294 294
295 295 @MPDecorator
296 296 class HDFWriter(Operation):
297 297 """Operation to write HDF5 files.
298 298
299 299 The HDF5 file contains by default two groups Data and Metadata where
300 300 you can save any `dataOut` attribute specified by `dataList` and `metadataList`
301 301 parameters, data attributes are normaly time dependent where the metadata
302 302 are not.
303 303 It is possible to customize the structure of the HDF5 file with the
304 304 optional description parameter see the examples.
305 305
306 306 Parameters:
307 307 -----------
308 308 path : str
309 309 Path where files will be saved.
310 310 blocksPerFile : int
311 311 Number of blocks per file
312 312 metadataList : list
313 313 List of the dataOut attributes that will be saved as metadata
314 314 dataList : int
315 315 List of the dataOut attributes that will be saved as data
316 316 setType : bool
317 317 If True the name of the files corresponds to the timestamp of the data
318 318 description : dict, optional
319 319 Dictionary with the desired description of the HDF5 file
320 320
321 321 Examples
322 322 --------
323 323
324 324 desc = {
325 325 'data_output': {'winds': ['z', 'w', 'v']},
326 326 'utctime': 'timestamps',
327 327 'heightList': 'heights'
328 328 }
329 329 desc = {
330 330 'data_output': ['z', 'w', 'v'],
331 331 'utctime': 'timestamps',
332 332 'heightList': 'heights'
333 333 }
334 334 desc = {
335 335 'Data': {
336 336 'data_output': 'winds',
337 337 'utctime': 'timestamps'
338 338 },
339 339 'Metadata': {
340 340 'heightList': 'heights'
341 341 }
342 342 }
343 343
344 344 writer = proc_unit.addOperation(name='HDFWriter')
345 345 writer.addParameter(name='path', value='/path/to/file')
346 346 writer.addParameter(name='blocksPerFile', value='32')
347 347 writer.addParameter(name='metadataList', value='heightList,timeZone')
348 348 writer.addParameter(name='dataList',value='data_output,utctime')
349 349 # writer.addParameter(name='description',value=json.dumps(desc))
350 350
351 351 """
352 352
353 353 ext = ".hdf5"
354 354 optchar = "D"
355 355 filename = None
356 356 path = None
357 357 setFile = None
358 358 fp = None
359 359 firsttime = True
360 360 #Configurations
361 361 blocksPerFile = None
362 362 blockIndex = None
363 363 dataOut = None
364 364 #Data Arrays
365 365 dataList = None
366 366 metadataList = None
367 367 currentDay = None
368 368 lastTime = None
369 369
370 370 def __init__(self):
371 371
372 372 Operation.__init__(self)
373 373 return
374 374
375 375 def set_kwargs(self, **kwargs):
376 376
377 377 for key, value in kwargs.items():
378 378 setattr(self, key, value)
379 379
380 380 def set_kwargs_obj(self, obj, **kwargs):
381 381
382 382 for key, value in kwargs.items():
383 383 setattr(obj, key, value)
384 384
385 385 def setup(self, path=None, blocksPerFile=10, metadataList=None, dataList=None, setType=None, description=None, **kwargs):
386 386 self.path = path
387 387 self.blocksPerFile = blocksPerFile
388 388 self.metadataList = metadataList
389 389 self.dataList = [s.strip() for s in dataList]
390 390 self.setType = setType
391 391 self.description = description
392 392 self.set_kwargs(**kwargs)
393 393
394 394 if self.metadataList is None:
395 395 self.metadataList = self.dataOut.metadata_list
396 396
397 397 tableList = []
398 398 dsList = []
399 399
400 400 for i in range(len(self.dataList)):
401 401 dsDict = {}
402 402 if hasattr(self.dataOut, self.dataList[i]):
403 403 dataAux = getattr(self.dataOut, self.dataList[i])
404 404 dsDict['variable'] = self.dataList[i]
405 405 else:
406 406 log.warning('Attribute {} not found in dataOut', self.name)
407 407 continue
408 408
409 409 if dataAux is None:
410 410 continue
411 elif isinstance(dataAux, (int, float, numpy.integer, numpy.float)):
411 elif isinstance(dataAux, (int, float, numpy.integer, numpy.float64)):
412 412 dsDict['nDim'] = 0
413 413 else:
414 414 dsDict['nDim'] = len(dataAux.shape)
415 415 dsDict['shape'] = dataAux.shape
416 416 dsDict['dsNumber'] = dataAux.shape[0]
417 417 dsDict['dtype'] = dataAux.dtype
418 418
419 419 dsList.append(dsDict)
420 420
421 421 self.dsList = dsList
422 422 self.currentDay = self.dataOut.datatime.date()
423 423
424 424 def timeFlag(self):
425 425 currentTime = self.dataOut.utctime
426 426 timeTuple = time.localtime(currentTime)
427 427 dataDay = timeTuple.tm_yday
428 428
429 429 if self.lastTime is None:
430 430 self.lastTime = currentTime
431 431 self.currentDay = dataDay
432 432 return False
433 433
434 434 timeDiff = currentTime - self.lastTime
435 435
436 436 #Si el dia es diferente o si la diferencia entre un dato y otro supera la hora
437 437 if dataDay != self.currentDay:
438 438 self.currentDay = dataDay
439 439 return True
440 440 elif timeDiff > 3*60*60:
441 441 self.lastTime = currentTime
442 442 return True
443 443 else:
444 444 self.lastTime = currentTime
445 445 return False
446 446
447 447 def run(self, dataOut, path, blocksPerFile=10, metadataList=None,
448 448 dataList=[], setType=None, description={}, **kwargs):
449 449
450 450 self.dataOut = dataOut
451 451 self.set_kwargs_obj(self.dataOut, **kwargs)
452 452 if not(self.isConfig):
453 453 self.setup(path=path, blocksPerFile=blocksPerFile,
454 454 metadataList=metadataList, dataList=dataList,
455 455 setType=setType, description=description, **kwargs)
456 456
457 457 self.isConfig = True
458 458 self.setNextFile()
459 459
460 460 self.putData()
461 461 return
462 462
463 463 def setNextFile(self):
464 464
465 465 ext = self.ext
466 466 path = self.path
467 467 setFile = self.setFile
468 468
469 469 timeTuple = time.localtime(self.dataOut.utctime)
470 470 subfolder = 'd%4.4d%3.3d' % (timeTuple.tm_year,timeTuple.tm_yday)
471 471 fullpath = os.path.join(path, subfolder)
472 472
473 473 if os.path.exists(fullpath):
474 474 filesList = os.listdir(fullpath)
475 475 filesList = [k for k in filesList if k.startswith(self.optchar)]
476 476 if len(filesList) > 0:
477 477 filesList = sorted(filesList, key=str.lower)
478 478 filen = filesList[-1]
479 479 # el filename debera tener el siguiente formato
480 480 # 0 1234 567 89A BCDE (hex)
481 481 # x YYYY DDD SSS .ext
482 482 if isNumber(filen[8:11]):
483 483 setFile = int(filen[8:11]) #inicializo mi contador de seteo al seteo del ultimo file
484 484 else:
485 485 setFile = -1
486 486 else:
487 487 setFile = -1 #inicializo mi contador de seteo
488 488 else:
489 489 os.makedirs(fullpath)
490 490 setFile = -1 #inicializo mi contador de seteo
491 491
492 492 if self.setType is None:
493 493 setFile += 1
494 494 file = '%s%4.4d%3.3d%03d%s' % (self.optchar,
495 495 timeTuple.tm_year,
496 496 timeTuple.tm_yday,
497 497 setFile,
498 498 ext)
499 499 else:
500 500 setFile = timeTuple.tm_hour*60+timeTuple.tm_min
501 501 file = '%s%4.4d%3.3d%04d%s' % (self.optchar,
502 502 timeTuple.tm_year,
503 503 timeTuple.tm_yday,
504 504 setFile,
505 505 ext)
506 506
507 507 self.filename = os.path.join(path, subfolder, file)
508 508
509 509 #Setting HDF5 File
510 510 self.fp = h5py.File(self.filename, 'w')
511 511 #write metadata
512 512 self.writeMetadata(self.fp)
513 513 #Write data
514 514 self.writeData(self.fp)
515 515
516 516 def getLabel(self, name, x=None):
517 517
518 518 if x is None:
519 519 if 'Data' in self.description:
520 520 data = self.description['Data']
521 521 if 'Metadata' in self.description:
522 522 data.update(self.description['Metadata'])
523 523 else:
524 524 data = self.description
525 525 if name in data:
526 526 if isinstance(data[name], str):
527 527 return data[name]
528 528 elif isinstance(data[name], list):
529 529 return None
530 530 elif isinstance(data[name], dict):
531 531 for key, value in data[name].items():
532 532 return key
533 533 return name
534 534 else:
535 535 if 'Metadata' in self.description:
536 536 meta = self.description['Metadata']
537 537 else:
538 538 meta = self.description
539 539 if name in meta:
540 540 if isinstance(meta[name], list):
541 541 return meta[name][x]
542 542 elif isinstance(meta[name], dict):
543 543 for key, value in meta[name].items():
544 544 return value[x]
545 545 if 'cspc' in name:
546 546 return 'pair{:02d}'.format(x)
547 547 else:
548 548 return 'channel{:02d}'.format(x)
549 549
550 550 def writeMetadata(self, fp):
551 551
552 552 if self.description:
553 553 if 'Metadata' in self.description:
554 554 grp = fp.create_group('Metadata')
555 555 else:
556 556 grp = fp
557 557 else:
558 558 grp = fp.create_group('Metadata')
559 559
560 560 for i in range(len(self.metadataList)):
561 561 if not hasattr(self.dataOut, self.metadataList[i]):
562 562 log.warning('Metadata: `{}` not found'.format(self.metadataList[i]), self.name)
563 563 continue
564 564 value = getattr(self.dataOut, self.metadataList[i])
565 565 if isinstance(value, bool):
566 566 if value is True:
567 567 value = 1
568 568 else:
569 569 value = 0
570 570 grp.create_dataset(self.getLabel(self.metadataList[i]), data=value)
571 571 return
572 572
573 573 def writeData(self, fp):
574 574
575 575 if self.description:
576 576 if 'Data' in self.description:
577 577 grp = fp.create_group('Data')
578 578 else:
579 579 grp = fp
580 580 else:
581 581 grp = fp.create_group('Data')
582 582
583 583 dtsets = []
584 584 data = []
585 585
586 586 for dsInfo in self.dsList:
587 587 if dsInfo['nDim'] == 0:
588 588 ds = grp.create_dataset(
589 589 self.getLabel(dsInfo['variable']),
590 590 (self.blocksPerFile,),
591 591 chunks=True,
592 592 dtype=numpy.float64)
593 593 dtsets.append(ds)
594 594 data.append((dsInfo['variable'], -1))
595 595 else:
596 596 label = self.getLabel(dsInfo['variable'])
597 597 if label is not None:
598 598 sgrp = grp.create_group(label)
599 599 else:
600 600 sgrp = grp
601 601 for i in range(dsInfo['dsNumber']):
602 602 ds = sgrp.create_dataset(
603 603 self.getLabel(dsInfo['variable'], i),
604 604 (self.blocksPerFile,) + dsInfo['shape'][1:],
605 605 chunks=True,
606 606 dtype=dsInfo['dtype'])
607 607 dtsets.append(ds)
608 608 data.append((dsInfo['variable'], i))
609 609 fp.flush()
610 610
611 611 log.log('Creating file: {}'.format(fp.filename), self.name)
612 612
613 613 self.ds = dtsets
614 614 self.data = data
615 615 self.firsttime = True
616 616 self.blockIndex = 0
617 617 return
618 618
619 619 def putData(self):
620 620
621 621 if (self.blockIndex == self.blocksPerFile) or self.timeFlag():
622 622 self.closeFile()
623 623 self.setNextFile()
624 624
625 625 for i, ds in enumerate(self.ds):
626 626 attr, ch = self.data[i]
627 627 if ch == -1:
628 628 ds[self.blockIndex] = getattr(self.dataOut, attr)
629 629 else:
630 630 ds[self.blockIndex] = getattr(self.dataOut, attr)[ch]
631 631
632 632 self.fp.flush()
633 633 self.blockIndex += 1
634 634 log.log('Block No. {}/{}'.format(self.blockIndex, self.blocksPerFile), self.name)
635 635
636 636 return
637 637
638 638 def closeFile(self):
639 639
640 640 if self.blockIndex != self.blocksPerFile:
641 641 for ds in self.ds:
642 642 ds.resize(self.blockIndex, axis=0)
643 643
644 644 if self.fp:
645 645 self.fp.flush()
646 646 self.fp.close()
647 647
648 648 def close(self):
649 649
650 650 self.closeFile()
@@ -1,262 +1,262
1 1
2 2 import os, sys
3 3 import json
4 4
5 5 #from controller import *
6 6 from schainpy.controller import Project
7 7
8 8 desc = "EW DRIFTS MP Experiment"
9 9 filename = "EWDrifts.xml"
10 10
11 11 controllerObj = Project()
12 12
13 13 controllerObj.setup(id = '191', name='test01', description=desc)
14 14
15 15 #Experimentos
16 16
17 17 #path = "/data/dia"
18 18 #path = '/home/pcondor/data'
19 19 #path = '/media/pcondor/DATA1/Database/ewdriftsschain2023prue/data'
20 20 #path = '/data/2024_01/MP_ISR/main_radar/rawdata/d2024023'
21 path = '/data/ISR_JULIA/d2024092'
21 path = '/mnt/mp/ISR_JULIA/d2024092'
22 22 #pathFigure = '/media/pcondor/DATA1/Database/ewdriftsschain2023wh5'
23 pathFile = '/media/pcondor/DATA1/Database/ewdriftsabr2024sch/EW_Drifts_01abr'
23 pathFile = '/mnt/data10tb/MP/ewdriftsschain2024prueb'
24 24 pathFigure = pathFile
25 25 pathFileavg = pathFile+'/avg'
26 26 pathFiledata = pathFile+'/Drifts-data'
27 27 #pathFileavg = '/media/pcondor/DATA1/Database/ewdriftsschain2023wh5/avg'
28 28 #pathFiledata = '/media/pcondor/DATA1/Database/ewdriftsschain2023wh5/Drifts-data'
29 29
30 30 xmin = 0
31 31 xmax = 24
32 32 #------------------------------------------------------------------------------------------------
33 33 readUnitConfObj = controllerObj.addReadUnit(datatype='VoltageReader',
34 34 path=path,
35 35 startDate='2024/04/01',
36 36 endDate='2024/04/01',
37 37 startTime='00:00:00',
38 38 endTime='23:59:59',
39 39 online=0,
40 40 getByBlock=1,
41 41 walk=0)
42 42
43 43 #--------------------------------------------------------------------------------------------------
44 44
45 45 procUnitConfObj0 = controllerObj.addProcUnit(datatype='VoltageProc', inputId=readUnitConfObj.getId())
46 46
47 47 #opObj11 = procUnitConfObj0.addOperation(name='selectHeights')
48 48 # # opObj11.addParameter(name='minHei', value='320.0', format='float')
49 49 # # opObj11.addParameter(name='maxHei', value='350.0', format='float')
50 50 #opObj11.addParameter(name='minHei', value='0.01', format='float')
51 51 #opObj11.addParameter(name='maxHei', value='960.0', format='float')
52 52
53 53 opObj11 = procUnitConfObj0.addOperation(name='selectChannels')
54 54 opObj11.addParameter(name='channelList', value='0,0,1,1', format='intlist')
55 55
56 56 #opObj11 = procUnitConfObj0.addOperation(name='Reshaper')
57 57 #opObj11.addParameter(name='shape', value='(500,980)', format='intlist')
58 58
59 59 opObj11 = procUnitConfObj0.addOperation(name='ProfileSelector', optype='other')
60 60 opObj11.addParameter(name='profileRangeList', value='0,127', format='intlist')
61 61
62 62 opObj11 = procUnitConfObj0.addOperation(name='filterByHeights')
63 63 opObj11.addParameter(name='window', value='10', format='int')
64 64
65 65 code=[[-1,-1,1],[1,1,-1]]
66 66 #code = [[1,1,-1],[-1,-1,1],[1,1,-1],[1,1,-1],[1,1,-1],[-1,-1,1],[-1,-1,1],[1,1,-1],[1,1,-1],[-1,-1,1],[1,1,-1],[1,1,-1],[-1,-1,1],[-1,-1,1],[-1,-1,1],[1,1,-1],[-1,-1,1],[-1,-1,1],[-1,-1,1],[1,1,-1],[1,1,-1],[-1,-1,1],[-1,-1,1],[1,1,-1],[-1,-1,1],[1,1,-1],[1,1,-1],[-1,-1,1],[-1,-1,1],[-1,-1,1],[1,1,-1],[-1,-1,1],[1,1,-1],[1,1,-1],[-1,-1,1],[-1,-1,1],[1,1,-1],[1,1,-1],[-1,-1,1],[1,1,-1],[-1,-1,1],[-1,-1,1],[1,1,-1],[1,1,-1],[-1,-1,1],[-1,-1,1],[1,1,-1],[-1,-1,1],[-1,-1,1],[-1,-1,1],[-1,-1,1],[1,1,-1],[-1,-1,1],[-1,-1,1],[-1,-1,1],[-1,-1,1],[1,1,-1],[1,1,-1],[1,1,-1],[1,1,-1],[1,1,-1],[1,1,-1],[1,1,-1],[1,1,-1],[-1,-1,1],[-1,-1,1],[-1,-1,1],[-1,-1,1],[-1,-1,1],[1,1,-1],[-1,-1,1],[1,1,-1],[1,1,-1],[-1,-1,1],[-1,-1,1],[1,1,-1],[-1,-1,1],[1,1,-1],[1,1,-1],[1,1,-1],[1,1,-1],[-1,-1,1],[1,1,-1],[1,1,-1],[1,1,-1],[-1,-1,1],[1,1,-1],[-1,-1,1],[-1,-1,1],[-1,-1,1],[1,1,-1],[-1,-1,1],[-1,-1,1],[-1,-1,1],[-1,-1,1],[-1,-1,1],[1,1,-1],[1,1,-1],[1,1,-1],[1,1,-1],[1,1,-1],[-1,-1,1],[1,1,-1],[-1,-1,1],[-1,-1,1],[-1,-1,1],[-1,-1,1],[-1,-1,1],[-1,-1,1],[1,1,-1],[-1,-1,1],[1,1,-1],[-1,-1,1],[1,1,-1],[1,1,-1],[-1,-1,1],[1,1,-1],[-1,-1,1],[-1,-1,1],[1,1,-1],[1,1,-1],[-1,-1,1],[1,1,-1],[-1,-1,1],[-1,-1,1],[-1,-1,1],[1,1,-1],[-1,-1,1],[-1,-1,1],[1,1,-1],[-1,-1,1],[1,1,-1],[1,1,-1],[-1,-1,1],[-1,-1,1],[1,1,-1],[-1,-1,1],[1,1,-1],[1,1,-1],[1,1,-1],[-1,-1,1],[1,1,-1],[-1,-1,1],[-1,-1,1],[1,1,-1],[1,1,-1],[1,1,-1],[-1,-1,1],[-1,-1,1],[-1,-1,1],[1,1,-1],[-1,-1,1],[-1,-1,1],[1,1,-1],[1,1,-1],[-1,-1,1],[-1,-1,1],[-1,-1,1],[-1,-1,1],[1,1,-1],[-1,-1,1],[1,1,-1],[1,1,-1],[1,1,-1],[1,1,-1],[1,1,-1],[-1,-1,1],[-1,-1,1],[-1,-1,1],[1,1,-1],[1,1,-1],[1,1,-1],[-1,-1,1],[-1,-1,1],[1,1,-1],[1,1,-1],[1,1,-1],[1,1,-1],[1,1,-1],[-1,-1,1],[1,1,-1],[1,1,-1],[-1,-1,1],[1,1,-1],[1,1,-1],[-1,-1,1],[-1,-1,1],[-1,-1,1],[1,1,-1],[1,1,-1],[1,1,-1],[1,1,-1],[1,1,-1],[-1,-1,1],[-1,-1,1],[1,1,-1],[-1,-1,1],[-1,-1,1],[1,1,-1],[1,1,-1]]
67 67 opObj11 = procUnitConfObj0.addOperation(name='Decoder', optype='other')
68 68 opObj11.addParameter(name='code', value=code, format='floatlist')
69 69 opObj11.addParameter(name='nCode', value='2', format='int')
70 70 opObj11.addParameter(name='nBaud', value='3', format='int')
71 71
72 72 opObj11 = procUnitConfObj0.addOperation(name='selectHeights')
73 73 opObj11.addParameter(name='minHei', value='0.0', format='float')
74 74 opObj11.addParameter(name='maxHei', value='960', format='float')
75 75
76 76 procUnitConfObj1 = controllerObj.addProcUnit(datatype='SpectraProc', inputId=procUnitConfObj0.getId())
77 77 procUnitConfObj1.addParameter(name='nFFTPoints', value='128', format='int')
78 78 procUnitConfObj1.addParameter(name='nProfiles', value='128', format='int')
79 79 #procUnitConfObj1.addParameter(name='pairsList', value='(2,3),(4,5)', format='pairsList')#,(2,3)
80 80 procUnitConfObj1.addParameter(name='pairsList', value='(0,1),(2,3)', format='pairsList')
81 81
82 82 #opObj11 = procUnitConfObj1.addOperation(name='selectHeights')
83 83 # # opObj11.addParameter(name='minHei', value='320.0', format='float')
84 84 # # opObj11.addParameter(name='maxHei', value='350.0', format='float')
85 85 #opObj11.addParameter(name='minHei', value='0.0', format='float')
86 86 #opObj11.addParameter(name='maxHei', value='960.0', format='float')
87 87
88 88 #opObj11 = procUnitConfObj1.addOperation(name='selectChannels')
89 89 #opObj11.addParameter(name='channelList', value='2,3,4,5', format='intlist')
90 90
91 91 opObj11 = procUnitConfObj1.addOperation(name='IncohInt', optype='other')
92 92 opObj11.addParameter(name='n', value='1', format='float')
93 93 #opObj11.addParameter(name='timeInterval', value='300.0', format='float')
94 94
95 95 #opObj13 = procUnitConfObj1.addOperation(name='removeDC')
96 96
97 97 #opObj14 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='other')
98 98 #opObj14.addParameter(name='id', value='65', format='int')
99 99 ## # opObj14.addParameter(name='wintitle', value='Con interf', format='str')
100 100 #opObj14.addParameter(name='save', value=pathFigure, format='str')
101 101 ##opObj14.addParameter(name='save_period', value=1, format='int')
102 102 #opObj14.addParameter(name='zmin', value='10', format='int')
103 103 #opObj14.addParameter(name='zmax', value='26', format='int')
104 104 #
105 105
106 106 #opObj12 = procUnitConfObj1.addOperation(name='RTIPlot', optype='other')
107 107 #opObj12.addParameter(name='id', value='63', format='int')
108 108 #opObj12.addParameter(name='wintitle', value='RTI Plot', format='str')
109 109 #opObj12.addParameter(name='save', value=pathFigure, format='str')
110 110 #opObj12.addParameter(name='save_period', value=10, format='int')
111 111 ##opObj12.addParameter(name='figpath', value = pathFigure, format='str')
112 112 #opObj12.addParameter(name='xmin', value=xmin, format='float')
113 113 #opObj12.addParameter(name='xmax', value=xmax, format='float')
114 114 #opObj12.addParameter(name='zmin', value='20', format='int')
115 115 #opObj12.addParameter(name='zmax', value='36', format='int')
116 116
117 117 #--------------------------------------------------------------------------------------------------
118 118
119 119 procUnitConfObj2 = controllerObj.addProcUnit(datatype='ParametersProc', inputId=procUnitConfObj1.getId())
120 120 opObj20 = procUnitConfObj2.addOperation(name='SpectralFitting', optype='other')
121 opObj20.addParameter(name='path', value='/home/pcondor/DIR_MADRIGAL/schain/schainpy/model/proc', format='str')
121 opObj20.addParameter(name='path', value='/home/operaciones/DIR_MAD/schain/schainpy/model/proc', format='str')
122 122 opObj20.addParameter(name='file', value='modelSpectralFitting', format='str')
123 123 opObj20.addParameter(name='groupList', value='(0,1),(2,3)',format='multiList')
124 124 opObj20.addParameter(name='taver', value='5')
125 125 opObj20.addParameter(name='coh_th', value='[1]',format='multiList')
126 126 opObj20.addParameter(name='hei_th', value='[2000]',format='multiList')
127 127 #opObj20.addParameter(name='filec', value='weightfit', format='str')
128 128
129 129 opObj22 = procUnitConfObj2.addOperation(name='HDFWriter', optype='other')
130 130 opObj22.addParameter(name='path', value=pathFiledata)
131 131 opObj22.addParameter(name='blocksPerFile', value='1')
132 132 opObj22.addParameter(name='metadataList',value='heightList,timeZone')
133 133 opObj22.addParameter(name='dataList',value='tmp_spectra_i,tmp_cspectra_i,tmp_spectra_c,tmp_cspectra_c,clean_num_aver,coh_num_aver,sat_spectra,sat_cspectra,index,utctime,nIncohInt,nCohInt,nProfiles,nFFTPoints,ippFactor,ippSeconds,paramInterval')
134 134 ##opObj22.addParameter(name='dataList',value='tmp_spectra_i,tmp_cspectra_i,tmp_spectra_c,tmp_cspectra_c,clean_num_aver,coh_num_aver,index,utctime,nIncohInt,nCohInt,nProfiles,nFFTPoints,normFactor,channelList,ippFactor,ippSeconds')
135 135
136 136 #angles :-2.41116 3.01082
137 137 opObj21 = procUnitConfObj2.addOperation(name='EWDriftsEstimation', optype='other')
138 138 opObj21.addParameter(name='zenith', value='-2.41116, 3.01082', format='floatlist')
139 139 opObj21.addParameter(name='zenithCorrection', value='0.0', format='float')
140 140 opObj21.addParameter(name='fileDrifts', value=pathFile)
141 141
142 142 # Drifts en h5
143 143 one = {'gdlatr': 'lat', 'gdlonr': 'lon', 'spcst':'spcst','pl':'pl','cbadn':'cbadn','inttms': 'inttms','azdir7':'azw','eldir7':'elw','azdir8':'aze','eldir8':'ele','jro14':'jro14','jro15':'jro15','jro16':'jro16','nwlos':'nwlos'}
144 144 two = {
145 145 'range': ('params', 0),
146 146 'gdalt': ('params', 1),
147 147 'VIPN': ('params', 2),
148 148 'dvipn': ('params', 3),
149 149 'vipe': ('params', 4),
150 150 'dvipe': ('params', 5),
151 151 'vi7': ('params', 6),
152 152 'dvi7': ('params', 7),
153 153 'vi8': ('params', 8),
154 154 'dvi8': ('params', 9),
155 155 'PAIWL': ('params', 10),
156 156 'pacwl': ('params', 11),
157 157 'pbiwl': ('params', 12),
158 158 'pbcwl': ('params', 13),
159 159 'pciel': ('params', 14),
160 160 'pccel': ('params', 15),
161 161 'pdiel': ('params', 16),
162 162 'pdcel': ('params', 17),
163 163 'jro10': ('params', 18),
164 164 'jro11': ('params', 19)
165 165 } #writer
166 166 ind = ['gdalt']
167 167
168 168 meta = {
169 169 'kinst': 10, #instrument code
170 170 'kindat': 1910, #type of data
171 171 'catalog': {
172 172 'principleInvestigator': 'Danny ScipiΓ³n',
173 173 'expPurpose': 'Drifts'#,
174 174 #'sciRemarks': file_contents
175 175 },
176 176 'header': {
177 177 'analyst': 'Danny ScipiΓ³n'
178 178 }
179 179 }
180 180
181 181 op_writer = procUnitConfObj2.addOperation(name='MADWriter')
182 182 op_writer.addParameter(name='path', value=pathFile)
183 183 op_writer.addParameter(name='format', value='hdf5')
184 184 op_writer.addParameter(name='oneDDict', value=json.dumps(one))
185 185 op_writer.addParameter(name='twoDDict', value=json.dumps(two))
186 186 op_writer.addParameter(name='ind2DList', value=json.dumps(ind))
187 187 op_writer.addParameter(name='metadata', value=json.dumps(meta))
188 188
189 189 op_writer = procUnitConfObj2.addOperation(name='setHeightDriftsavg')
190 190
191 191 # Avg Drifts
192 192 one_avg = {'gdlatr': 'lat', 'gdlonr': 'lon', 'spcst':'spcst','pl':'pl','cbadn':'cbadn','inttms': 'inttms'}
193 193 two_avg = {
194 194 'range': ('params_avg', 4),
195 195 'gdalt': ('params_avg', 5),
196 196 'altav': ('params_avg', 6),
197 197 'VIPN': ('params_avg', 0),
198 198 'dvipn': ('params_avg', 1),
199 199 'vipe': ('params_avg', 2),
200 200 'dvipe': ('params_avg', 3)
201 201 }
202 202 ind_avg = ['gdalt']
203 203 meta = {
204 204 'kinst': 10, #instrument code
205 205 'kindat': 1911, #type of data
206 206 'catalog': {
207 207 'principleInvestigator': 'Danny ScipiΓ³n',
208 208 'expPurpose': 'Drifts'#,
209 209 #'sciRemarks': file_contents
210 210 },
211 211 'header': {
212 212 'analyst': 'Danny ScipiΓ³n'
213 213 }
214 214 }
215 215 #dataOut.heightList = dataOut.params_avg[4]
216 216 op_writer = procUnitConfObj2.addOperation(name='MADWriter')
217 217 op_writer.addParameter(name='path', value=pathFileavg)
218 218 op_writer.addParameter(name='format', value='hdf5')
219 219 op_writer.addParameter(name='oneDDict', value=json.dumps(one_avg))
220 220 op_writer.addParameter(name='twoDDict', value=json.dumps(two_avg))
221 221 op_writer.addParameter(name='ind2DList', value=json.dumps(ind_avg))
222 222 op_writer.addParameter(name='metadata', value=json.dumps(meta))
223 223
224 224 op_writer = procUnitConfObj2.addOperation(name='setHeightDrifts')
225 225
226 226 opObj24 = procUnitConfObj2.addOperation(name='SpectralMomentsPlot', optype='other')
227 227 opObj24.addParameter(name='id', value='1', format='int')
228 228 ### # opObj14.addParameter(name='wintitle', value='Spectral Averaged', format='str')
229 229 opObj24.addParameter(name='save', value=pathFigure, format='str')
230 230 ###opObj24.addParameter(name='save_period', value=1, format='int')
231 231 opObj24.addParameter(name='zmin', value='-8', format='int')
232 232 opObj24.addParameter(name='zmax', value='16', format='int')
233 233 opObj24.addParameter(name='xaxis', value='Velocity', format='str')
234 234
235 235 #
236 236 titles=('SNR,Vertical Drifts,Zonal Drifts')
237 237 #titles=('Zonal Drifts,Vertical Drifts')
238 238 opObj23 = procUnitConfObj2.addOperation(name='GenericRTIPlot')
239 239 opObj23.addParameter(name='colormaps', value='jet,RdBu_r,RdBu_r')
240 240 opObj23.addParameter(name='attr_data', value='data_snr1,data_output')
241 241 #opObj23.addParameter(name='colormaps', value='RdBu,RdBu')
242 242 #opObj23.addParameter(name='attr_data', value='data_output')
243 243 opObj23.addParameter(name='wintitle', value='EW Drifts')
244 244 opObj23.addParameter(name='save', value=pathFigure)
245 245 opObj23.addParameter(name='titles', value=titles)
246 246 opObj23.addParameter(name='zfactors', value='1,1,1')
247 247 opObj23.addParameter(name='zlimits', value='(-5,20),(-50,50),(-150,150)')
248 248 opObj23.addParameter(name='cb_labels', value='dB,m/s,m/s')
249 249 #opObj23.addParameter(name='titles', value=titles)
250 250 #opObj23.addParameter(name='zfactors', value='1,1')
251 251 #opObj23.addParameter(name='zlimits', value='(-150,150),(-40,40)')
252 252 #opObj23.addParameter(name='cb_labels', value='m/s,m/s')
253 253 opObj23.addParameter(name='throttle', value='1')
254 254 opObj23.addParameter(name='xmin', value=xmin)
255 255 opObj23.addParameter(name='xmax', value=xmax)
256 256 #opObj23.addParameter(name='exp_code', value='110', format='int')
257 257 #opObj23.addParameter(name='server', value='10.10.110.243:4444', format='int')
258 258 #opObj23.addParameter(name='tag', value= 'jicamarca', format='str')
259 259
260 260 #--------------------------------------------------------------------------------------------------
261 261
262 262 controllerObj.start()
@@ -1,186 +1,186
1 1
2 2 import os, sys
3 3 import json
4 4 #from controller import *
5 5 from schainpy.controller import Project
6 6
7 7 desc = "EW DRIFTS MP Experiment"
8 8 filename = "EWDrifts.xml"
9 9
10 10 controllerObj = Project()
11 11
12 12 controllerObj.setup(id = '191', name='test01', description=desc)
13 13
14 14 #Experimentos
15 15
16 16 #path = '/media/pcondor/DATA1/Database/ewdriftsene2024sch/EW_Drifts_01ene/Drifts-data'
17 path = '/media/soporte/DATA/PERCY_SCHAIN_UPDATE/driftsschain'
17 path = '/media/operaciones/KINGSTON/driftsschain'
18 18 #pathFigure = '/media/pcondor/DATA1/Database/ewdriftsschain2023proc'
19 pathFile ='/media/soporte/DATA/PERCY_SCHAIN_UPDATE/driftsschain/tmp'
19 pathFile ='/media/operaciones/KINGSTON/driftsschain/tmp'
20 20 #pathFile = '/media/pcondor/DATA1/Database/ewdriftsene2024sch/EW_Drifts_01enetmp'
21 21 pathFigure = pathFile
22 22 pathFileavg = pathFile+'/avg'
23 23 pathFiledata = pathFile+'/Drifts-data'
24 24
25 25 xmin = 0
26 26 xmax = 24
27 27 #------------------------------------------------------------------------------------------------
28 28 readUnitConfObj = controllerObj.addReadUnit(datatype='HDFReader',
29 29 path=path,
30 30 startDate='2024/01/23',
31 31 endDate='2024/01/23',
32 32 startTime='00:00:00',
33 33 endTime='23:59:59',
34 34 #online=0,
35 35 #getByBlock=1,
36 36 walk=1,
37 37 utcoffset='-18000')
38 38
39 39 #--------------------------------------------------------------------------------------------------
40 40
41 41 #--------------------------------------------------------------------------------------------------
42 42
43 43 procUnitConfObj2 = controllerObj.addProcUnit(datatype='ParametersProc', inputId=readUnitConfObj.getId())
44 44
45 45 opObj20 = procUnitConfObj2.addOperation(name='SpectralFitting', optype='other')
46 opObj20.addParameter(name='path', value='/home/pcondor/DIR_MADRIGAL/schain/schainpy/model/proc', format='str')
46 opObj20.addParameter(name='path', value='/home/operaciones/DIR_MAD/schain/schainpy/model/proc', format='str')
47 47 opObj20.addParameter(name='file', value='modelSpectralFitting', format='str')
48 48 opObj20.addParameter(name='groupList', value='(0,1),(2,3)',format='multiList')
49 49 opObj20.addParameter(name='taver', value='5')
50 50 opObj20.addParameter(name='coh_th', value='[1]',format='multiList')
51 51 opObj20.addParameter(name='hei_th', value='[2000]',format='multiList')
52 52 opObj20.addParameter(name='proc', value='1')
53 53 opObj20.addParameter(name='channelList', value='0,0,1,1')
54 54 opObj20.addParameter(name='filec', value='weightfit', format='str')
55 55
56 56 #opObj22 = procUnitConfObj2.addOperation(name='HDFWriter', optype='other')
57 57 #opObj22.addParameter(name='path', value=pathFile)
58 58 #opObj22.addParameter(name='blocksPerFile', value='1')
59 59 #opObj22.addParameter(name='metadataList',value='heightList,timeZone')
60 60 #opObj22.addParameter(name='dataList',value='tmp_spectra_i,tmp_cspectra_i,tmp_spectra_c,tmp_cspectra_c,clean_num_aver,coh_num_aver,index,utctime')
61 61 #angles :-2.41116 3.01082
62 62 opObj21 = procUnitConfObj2.addOperation(name='EWDriftsEstimation', optype='other')
63 63 opObj21.addParameter(name='zenith', value='-2.41116, 3.01082', format='floatlist')
64 64 opObj21.addParameter(name='zenithCorrection', value='0.0', format='float')
65 65 opObj21.addParameter(name='fileDrifts', value=pathFile)
66 66
67 67 # Drifts en h5
68 68 one = {'gdlatr': 'lat', 'gdlonr': 'lon', 'spcst':'spcst','pl':'pl','cbadn':'cbadn','inttms': 'inttms','azdir7':'azw','eldir7':'elw','azdir8':'aze','eldir8':'ele','jro14':'jro14','jro15':'jro15','jro16':'jro16','nwlos':'nwlos'}
69 69 two = {
70 70 'range': ('params', 0),
71 71 'gdalt': ('params', 1),
72 72 'VIPN': ('params', 2),
73 73 'dvipn': ('params', 3),
74 74 'vipe': ('params', 4),
75 75 'dvipe': ('params', 5),
76 76 'vi7': ('params', 6),
77 77 'dvi7': ('params', 7),
78 78 'vi8': ('params', 8),
79 79 'dvi8': ('params', 9),
80 80 'PAIWL': ('params', 10),
81 81 'pacwl': ('params', 11),
82 82 'pbiwl': ('params', 12),
83 83 'pbcwl': ('params', 13),
84 84 'pciel': ('params', 14),
85 85 'pccel': ('params', 15),
86 86 'pdiel': ('params', 16),
87 87 'pdcel': ('params', 17),
88 88 'jro10': ('params', 18),
89 89 'jro11': ('params', 19)
90 90 } #writer
91 91 ind = ['gdalt']
92 92
93 93 #f=open('/home/roberto/moder_test.txt','r')
94 94 #file_contents=f.read()
95 95
96 96 meta = {
97 97 'kinst': 10, #instrument code
98 98 'kindat': 1910, #type of data
99 99 'catalog': {
100 100 'principleInvestigator': 'Danny ScipiΓ³n',
101 101 'expPurpose': 'Drifts'#,
102 102 #'sciRemarks': file_contents
103 103 },
104 104 'header': {
105 105 'analyst': 'Danny ScipiΓ³n'
106 106 }
107 107 }
108 108 #f.close()
109 109
110 110 op_writer = procUnitConfObj2.addOperation(name='MADWriter')
111 111 op_writer.addParameter(name='path', value=pathFile)
112 112 op_writer.addParameter(name='format', value='hdf5')
113 113 op_writer.addParameter(name='oneDDict', value=json.dumps(one))
114 114 op_writer.addParameter(name='twoDDict', value=json.dumps(two))
115 115 op_writer.addParameter(name='ind2DList', value=json.dumps(ind))
116 116 op_writer.addParameter(name='metadata', value=json.dumps(meta))
117 117
118 118 op_writer = procUnitConfObj2.addOperation(name='setHeightDriftsavg')
119 119
120 120 # Avg Drifts
121 121 one_avg = {'gdlatr': 'lat', 'gdlonr': 'lon', 'spcst':'spcst','pl':'pl','cbadn':'cbadn','inttms': 'inttms'}
122 122 two_avg = {
123 123 'range': ('params_avg', 4),
124 124 'gdalt': ('params_avg', 5),
125 125 'altav': ('params_avg', 6),
126 126 'VIPN': ('params_avg', 0),
127 127 'dvipn': ('params_avg', 1),
128 128 'vipe': ('params_avg', 2),
129 129 'dvipe': ('params_avg', 3)
130 130 }
131 131 ind_avg = ['gdalt']
132 132 meta = {
133 133 'kinst': 10, #instrument code
134 134 'kindat': 1911, #type of data
135 135 'catalog': {
136 136 'principleInvestigator': 'Danny ScipiΓ³n',
137 137 'expPurpose': 'Drifts'#,
138 138 #'sciRemarks': file_contents
139 139 },
140 140 'header': {
141 141 'analyst': 'Danny ScipiΓ³n'
142 142 }
143 143 }
144 144
145 145 op_writer = procUnitConfObj2.addOperation(name='MADWriter')
146 146 op_writer.addParameter(name='path', value=pathFileavg)
147 147 op_writer.addParameter(name='format', value='hdf5')
148 148 op_writer.addParameter(name='oneDDict', value=json.dumps(one_avg))
149 149 op_writer.addParameter(name='twoDDict', value=json.dumps(two_avg))
150 150 op_writer.addParameter(name='ind2DList', value=json.dumps(ind_avg))
151 151 op_writer.addParameter(name='metadata', value=json.dumps(meta))
152 152
153 153 op_writer = procUnitConfObj2.addOperation(name='setHeightDrifts')
154 154
155 155 opObj24 = procUnitConfObj2.addOperation(name='SpectralMomentsPlot', optype='other')
156 156 opObj24.addParameter(name='id', value='1', format='int')
157 157 ### # opObj14.addParameter(name='wintitle', value='Spectral Averaged', format='str')
158 158 opObj24.addParameter(name='save', value=pathFigure, format='str')
159 159 ###opObj24.addParameter(name='save_period', value=1, format='int')
160 160 opObj24.addParameter(name='zmin', value='-8', format='int')
161 161 opObj24.addParameter(name='zmax', value='16', format='int')
162 162 opObj24.addParameter(name='xaxis', value='Velocity', format='str')
163 163
164 164 #
165 165 titles=('SNR,Vertical Drifts,Zonal Drifts')
166 166 opObj23 = procUnitConfObj2.addOperation(name='GenericRTIPlot')
167 167 #opObj23.addParameter(name='colormaps', value='jet,RdBu_r,RdBu_r')
168 168 opObj23.addParameter(name='colormaps', value='jro,seismic,seismic')
169 169 #opObj23.addParameter(name='colormaps', value='jro,bwr,bwr')
170 170 opObj23.addParameter(name='attr_data', value='data_snr1,data_output')
171 171 opObj23.addParameter(name='wintitle', value='EW Drifts')
172 172 opObj23.addParameter(name='save', value=pathFigure)
173 173 opObj23.addParameter(name='titles', value=titles)
174 174 opObj23.addParameter(name='zfactors', value='1,1,1')
175 175 opObj23.addParameter(name='zlimits', value='(0,13),(-50,50),(-150,150)')
176 176 opObj23.addParameter(name='cb_labels', value='dB,m/s,m/s')
177 177 opObj23.addParameter(name='throttle', value='1')
178 178 opObj23.addParameter(name='xmin', value=xmin)
179 179 opObj23.addParameter(name='xmax', value=xmax)
180 180 #opObj23.addParameter(name='exp_code', value='110', format='int')
181 181 #opObj23.addParameter(name='server', value='10.10.110.243:4444', format='int')
182 182 #opObj23.addParameter(name='tag', value= 'jicamarca', format='str')
183 183
184 184 #--------------------------------------------------------------------------------------------------
185 185
186 186 controllerObj.start()
General Comments 0
You need to be logged in to leave comments. Login now