diff --git a/schainpy/cli/cli.py b/schainpy/cli/cli.py index 5c0aa9b..4a42a70 100644 --- a/schainpy/cli/cli.py +++ b/schainpy/cli/cli.py @@ -70,9 +70,9 @@ PREFIX = 'experiment' @click.argument('command', default='run', required=True) @click.argument('nextcommand', default=None, required=False, type=str) def main(command, nextcommand, version): - """COMMAND LINE INTERFACE FOR SIGNAL CHAIN - JICAMARCA RADIO OBSERVATORY \n + """COMMAND LINE INTERFACE FOR SIGNAL CHAIN - JICAMARCA RADIO OBSERVATORY V3.0\n Available commands.\n - --xml: runs a schain XML generated file\n + xml: runs a schain XML generated file\n run: runs any python script starting 'experiment_'\n generate: generates a template schain script\n search: return avilable operations, procs or arguments of the give operation/proc\n""" @@ -153,16 +153,24 @@ def runschain(nextcommand): def basicInputs(): inputs = {} - inputs['desc'] = click.prompt( - 'Enter a description', default="A schain project", type=str) inputs['name'] = click.prompt( 'Name of the project', default="project", type=str) + inputs['desc'] = click.prompt( + 'Enter a description', default="A schain project", type=str) + inputs['multiprocess'] = click.prompt( + '''Select data type: + + - Voltage (*.r): [1] + - Spectra (*.pdata): [2] + - Voltage and Spectra (*.r): [3] + + -->''', type=int) inputs['path'] = click.prompt('Data path', default=os.getcwd( ), type=click.Path(exists=True, resolve_path=True)) inputs['startDate'] = click.prompt( 'Start date', default='1970/01/01', type=str) inputs['endDate'] = click.prompt( - 'End date', default='2017/12/31', type=str) + 'End date', default='2018/12/31', type=str) inputs['startHour'] = click.prompt( 'Start hour', default='00:00:00', type=str) inputs['endHour'] = click.prompt('End hour', default='23:59:59', type=str) @@ -172,13 +180,13 @@ def basicInputs(): def generate(): inputs = basicInputs() - inputs['multiprocess'] = click.confirm('Is this a multiprocess script?') - if inputs['multiprocess']: - inputs['nProcess'] = click.prompt( - 'How many process?', default=cpu_count(), type=int) - current = templates.multiprocess.format(**inputs) - else: - current = templates.basic.format(**inputs) + + if inputs['multiprocess'] == 1: + current = templates.voltage.format(**inputs) + elif inputs['multiprocess'] == 2: + current = templates.spectra.format(**inputs) + elif inputs['multiprocess'] == 3: + current = templates.voltagespectra.format(**inputs) scriptname = '{}_{}.py'.format(PREFIX, inputs['name']) script = open(scriptname, 'w') try: diff --git a/schainpy/cli/templates.py b/schainpy/cli/templates.py index 29ad580..a93fb19 100644 --- a/schainpy/cli/templates.py +++ b/schainpy/cli/templates.py @@ -1,38 +1,217 @@ -basic = '''from schainpy.controller import Project +voltage = '''import os, sys, time +from schainpy.controller import Project + + +def main(): + desc = "{desc}" + controller = Project() + controller.setup(id='200', name="{name}", description=desc) + + read_unit = controller.addReadUnit(datatype='Voltage', + path="{path}", + startDate="{startDate}", + endDate="{endDate}", + startTime="{startHour}", + endTime="{endHour}", + online=0, + verbose=1, + walk=0, + delay=180, + ) + + 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]]' + nCode = '128' + nBaud = '3' + + + proc_voltage = controller.addProcUnit(name='VoltageProc', inputId=read_unit.getId()) + + op1 = proc_voltage.addOperation(name='selectChannels', optype='self') + op1.addParameter(name='channelList', value='0, 1, 2, 3', format='intlist') + + op2 = proc_voltage.addOperation(name='filterByHeights', optype='self') + op2.addParameter(name='window', value='4', format='int') + + op3 = proc_voltage.addOperation(name='ProfileSelector', optype='other') + op3.addParameter(name='profileRangeList', value='32, 159', format='intList') + + op4 = proc_voltage.addOperation(name='Decoder', optype='other') + op4.addParameter(name='code', value=code, format='intlist') + op4.addParameter(name='nCode', value=nCode, format='int') + op4.addParameter(name='nBaud', value=nBaud, format='int') + op4.addParameter(name='mode', value='0', format='int') + + op5 = proc_voltage.addOperation(name='Scope', optype='external') + op5.addParameter(name='id', value='30', format='int') + + + + + + controller.start() + +if __name__ == '__main__': + import time + start_time = time.time() + main() + print("--- %s seconds ---" % (time.time() - start_time)) -desc = "{desc}" -project = Project() -project.setup(id='200', name="{name}", description=desc) - -voltage_reader = project.addReadUnit(datatype='VoltageReader', - path="{path}", - startDate="{startDate}", - endDate="{endDate}", - startTime="{startHour}", - endTime="{endHour}", - online=0, - verbose=1, - walk=1, - ) - -voltage_proc = project.addProcUnit(datatype='VoltageProc', inputId=voltage_reader.getId()) - -profile = voltage_proc.addOperation(name='ProfileSelector', optype='other') -profile.addParameter(name='profileRangeList', value='120,183', format='intlist') - -rti = voltage_proc.addOperation(name='RTIPlot', optype='other') -rti.addParameter(name='wintitle', value='Jicamarca Radio Observatory', format='str') -rti.addParameter(name='showprofile', value='0', format='int') -rti.addParameter(name='xmin', value='0', format='int') -rti.addParameter(name='xmax', value='24', format='int') -rti.addParameter(name='figpath', value="{figpath}", format='str') -rti.addParameter(name='wr_period', value='5', format='int') -rti.addParameter(name='exp_code', value='22', format='int') - - -project.start() ''' + +spectra = '''import os, sys, time +from schainpy.controller import Project + + +def main(): + desc = "{desc}" + controller = Project() + controller.setup(id='300', name="{name}", description=desc) + + read_unit = controller.addReadUnit(datatype='Spectra', + path="{path}", + startDate="{startDate}", + endDate="{endDate}", + startTime="{startHour}", + endTime="{endHour}", + online=0, + verbose=1, + walk=0, + delay=180, + ) + + proc_spectra = controller.addProcUnit(datatype='Spectra', inputId=read_unit.getId()) + proc_spectra.addParameter(name='nFFTPoints', value='128', format='int') + proc_spectra.addParameter(name='nProfiles', value='128', format='int') + proc_spectra.addParameter(name='pairsList', value='(0, 1), (2, 3)', format='pairslist') + + op1 = proc_spectra.addOperation(name='IncohInt', optype='other') + op1.addParameter(name='n', value='4', format='int') + + op2 = proc_spectra.addOperation(name='CrossSpectraPlot', optype='external') + op2.addParameter(name='id', value='10', format='int') + op2.addParameter(name='zmin', value='10.0', format='float') + op2.addParameter(name='zmax', value='35.0', format='float') + + + op3 = proc_spectra.addOperation(name='RTIPlot', optype='external') + op3.addParameter(name='id', value='20', format='int') + op3.addParameter(name='wintitle', value='RTI', format='str') + op3.addParameter(name='xmin', value='0', format='float') + op3.addParameter(name='xmax', value='24', format='float') + op3.addParameter(name='zmin', value='12', format='int') + op3.addParameter(name='zmax', value='32', format='int') + op3.addParameter(name='showprofile', value='1', format='int') + op3.addParameter(name='timerange', value=str(24*60*60), format='int') + + op4 = proc_spectra.addOperation(name='CoherenceMap', optype='external') + op4.addParameter(name='id', value='30', format='int') + op4.addParameter(name='xmin', value='0.0', format='float') + op4.addParameter(name='xmax', value='24.0', format='float') + + + controller.start() + +if __name__ == '__main__': + import time + start_time = time.time() + main() + print("--- %s seconds ---" % (time.time() - start_time)) + +''' + +voltagespectra = '''import os, sys, time +from schainpy.controller import Project + + +def main(): + desc = "{desc}" + controller = Project() + controller.setup(id='400', name="{name}", description=desc) + + read_unit = controller.addReadUnit(datatype='Voltage', + path="{path}", + startDate="{startDate}", + endDate="{endDate}", + startTime="{startHour}", + endTime="{endHour}", + online=0, + verbose=1, + walk=0, + delay=180, + ) + + 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]]' + nCode = '128' + nBaud = '3' + + + proc_voltage = controller.addProcUnit(name='VoltageProc', inputId=read_unit.getId()) + + op1 = proc_voltage.addOperation(name='selectChannels', optype='self') + op1.addParameter(name='channelList', value='0, 1, 2, 3', format='intlist') + + op2 = proc_voltage.addOperation(name='filterByHeights', optype='self') + op2.addParameter(name='window', value='4', format='int') + + op3 = proc_voltage.addOperation(name='ProfileSelector', optype='other') + op3.addParameter(name='profileRangeList', value='32, 159', format='intList') + + op4 = proc_voltage.addOperation(name='Decoder', optype='other') + op4.addParameter(name='code', value=code, format='intlist') + op4.addParameter(name='nCode', value=nCode, format='int') + op4.addParameter(name='nBaud', value=nBaud, format='int') + op4.addParameter(name='mode', value='0', format='int') + + + + proc_spectra = controller.addProcUnit(datatype='Spectra', inputId=proc_voltage.getId()) + proc_spectra.addParameter(name='nFFTPoints', value='128', format='int') + proc_spectra.addParameter(name='nProfiles', value='128', format='int') + proc_spectra.addParameter(name='pairsList', value='(0, 1), (2, 3)', format='pairslist') + + op5 = proc_spectra.addOperation(name='IncohInt', optype='other') + op5.addParameter(name='n', value='4', format='int') + + op6 = proc_spectra.addOperation(name='CrossSpectraPlot', optype='external') + op6.addParameter(name='id', value='10', format='int') + op6.addParameter(name='zmin', value='10.0', format='float') + op6.addParameter(name='zmax', value='35.0', format='float') + + + op7 = proc_spectra.addOperation(name='RTIPlot', optype='external') + op7.addParameter(name='id', value='20', format='int') + op7.addParameter(name='wintitle', value='RTI', format='str') + op7.addParameter(name='xmin', value='0', format='float') + op7.addParameter(name='xmax', value='24', format='float') + op7.addParameter(name='zmin', value='12', format='int') + op7.addParameter(name='zmax', value='32', format='int') + op7.addParameter(name='showprofile', value='1', format='int') + op7.addParameter(name='timerange', value=str(24*60*60), format='int') + + op8 = proc_spectra.addOperation(name='CoherenceMap', optype='external') + op8.addParameter(name='id', value='30', format='int') + op8.addParameter(name='xmin', value='0.0', format='float') + op8.addParameter(name='xmax', value='24.0', format='float') + + + controller.start() + +if __name__ == '__main__': + import time + start_time = time.time() + main() + print("--- %s seconds ---" % (time.time() - start_time)) + +''' + + + + + + + + multiprocess = '''from schainpy.controller import Project, MPProject from time import sleep desc = "{desc}" @@ -61,10 +240,10 @@ sleep(2) ################ # DATA EMITTER # ################ -project = Project() -project.setup(id='200', name="{name}", description=desc) +controller = Project() +controller.setup(id='200', name="{name}", description=desc) -spectra_reader = project.addReadUnit(datatype='SpectraReader', +spectra_reader = controller.addReadUnit(datatype='SpectraReader', path="{path}", startDate={startDate}, endDate={endDate}, @@ -75,16 +254,16 @@ spectra_reader = project.addReadUnit(datatype='SpectraReader', walk=1, ) -spectra_proc = project.addProcUnit(datatype='Spectra', inputId=spectra_reader.getId()) +spectra_proc = controller.addProcUnit(datatype='Spectra', inputId=spectra_reader.getId()) -parameters_proc = project.addProcUnit(datatype='ParametersProc', inputId=spectra_proc.getId()) +parameters_proc = controller.addProcUnit(datatype='ParametersProc', inputId=spectra_proc.getId()) moments = parameters_proc.addOperation(name='SpectralMoments', optype='other') publish = parameters_proc.addOperation(name='PublishData', optype='other') publish.addParameter(name='zeromq', value=1, format='int') publish.addParameter(name='verbose', value=0, format='bool') -MPProject(project, 16) +MPProject(controller, 16) '''