diff --git a/schain-cli/schain.xml b/schain-cli/schain.xml
new file mode 100644
index 0000000..304456a
--- /dev/null
+++ b/schain-cli/schain.xml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/schain-cli/schaincli/cli.py b/schain-cli/schaincli/cli.py
index 4ea0c2a..2fd6978 100644
--- a/schain-cli/schaincli/cli.py
+++ b/schain-cli/schaincli/cli.py
@@ -1,5 +1,7 @@
import click
import schainpy
+import subprocess
+from multiprocessing import cpu_count
from schaincli import templates
import os, sys
@@ -12,31 +14,47 @@ def print_version(ctx, param, value):
@click.command()
@click.option('--version', '-v', is_flag=True, callback=print_version, help='SChain version', type=str)
+@click.option('--xml', '-x', default=None, help='xml file', type=click.Path(exists=True, resolve_path=True))
@click.argument('command', default='run', required=True)
-def main(command, version):
+def main(command, version, xml):
"""COMMAND LINE INTERFACE FOR SIGNAL CHAIN - JICAMARCA RADIO OBSERVATORY"""
- if command == 'generate':
+ if xml is not None:
+ subprocess.call(['schain --file=' + xml], shell=True)
+ elif command == 'generate':
generate()
- pass
- elif command == 'run':
- pass
elif command == 'test':
test()
- pass
else:
- click.echo('[ERROR] - Command not defined.')
+ click.echo('\x1b[0;37;41m[ERROR] - Command is not defined.\x1b[0m')
-def generate():
+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['path'] = click.prompt('Data path', default=os.getcwd(), type=click.Path(exists=True, resolve_path=True))
- inputs['startDate'] = click.prompt('Start date', default='01/01/1970', type=str)
- inputs['endDate'] = click.prompt('End date', default='31/12/2017', type=str)
+ inputs['startDate'] = click.prompt('Start date', default='1970/01/01', type=str)
+ inputs['endDate'] = click.prompt('End date', default='2017/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)
- script = open(inputs['name'] + ".py", 'w')
- script.write(templates.basic.format(**inputs))
+ inputs['figpath'] = inputs['path'] + '/figs'
+ return inputs
+
+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)
+ scriptname = inputs['name'] + ".py"
+ script = open(scriptname, 'w')
+ try:
+ script.write(current)
+ click.echo('\x1b[0;37;42m[SUCCESS] Script {file} generated\x1b[0m'.format(file=scriptname))
+ except Exception as e:
+ click.echo('\x1b[0;37;41m[ERROR] I cannot create the file. Do you have writing permissions?\x1b[0m')
+
def test():
print templates.basic.format(name='hola', desc= 'desc', path='path', startDate='0', endDate='0')
diff --git a/schain-cli/schaincli/templates.py b/schain-cli/schaincli/templates.py
index 555b0ee..748ab72 100644
--- a/schain-cli/schaincli/templates.py
+++ b/schain-cli/schaincli/templates.py
@@ -1,21 +1,75 @@
-basic =
-'''import argparse
-from schainpy.controller import Project, multiSchain
+basic = '''from schainpy.controller import Project
desc = "{desc}"
controller = Project()
controller.setup(id='191', name="{name}", description=desc)
-readUnitConf = controller.addReadUnit(datatype='SpectraReader',
- path="{path}",
- startDate="{startDate}",
- endDate="{endDate}",
- startTime="{startHour}",
- endTime="{endHour}",
- online=0,
- walk=1,
- )
-
-procUnitConf2 = controllerObj.addProcUnit(datatype='Spectra', inputId=readUnitConfObj.getId())
+readUnitConf = controller.addReadUnit(datatype='VoltageReader',
+ path="{path}",
+ startDate="{startDate}",
+ endDate="{endDate}",
+ startTime="{startHour}",
+ endTime="{endHour}",
+ online=0,
+ verbose=1,
+ walk=1,
+ )
+
+procUnitConf1 = controller.addProcUnit(datatype='VoltageProc', inputId=readUnitConf.getId())
+
+opObj11 = procUnitConf1.addOperation(name='ProfileSelector', optype='other')
+opObj11.addParameter(name='profileRangeList', value='120,183', format='intlist')
+
+opObj11 = procUnitConf1.addOperation(name='RTIPlot', optype='other')
+opObj11.addParameter(name='wintitle', value='Jicamarca Radio Observatory', format='str')
+opObj11.addParameter(name='showprofile', value='0', format='int')
+opObj11.addParameter(name='xmin', value='0', format='int')
+opObj11.addParameter(name='xmax', value='24', format='int')
+opObj11.addParameter(name='figpath', value="{figpath}", format='str')
+opObj11.addParameter(name='wr_period', value='5', format='int')
+opObj11.addParameter(name='exp_code', value='22', format='int')
+
+
+controller.start()
+'''
+
+multiprocess = '''from schainpy.controller import Project, multiSchain
+
+desc = "{desc}"
+
+def fiber(cursor, skip, q, day):
+ controller = Project()
+ controller.setup(id='191', name="{name}", description=desc)
+
+ readUnitConf = controller.addReadUnit(datatype='SpectraReader',
+ path="{path}",
+ startDate="day",
+ endDate="day",
+ startTime="{startHour}",
+ endTime="{endHour}",
+ online=0,
+ queue=q,
+ cursor=cursor,
+ skip=skip,
+ verbose=1,
+ walk=1,
+ )
+
+ procUnitConf1 = controller.addProcUnit(datatype='Spectra', inputId=readUnitConf.getId())
+
+ procUnitConf2 = controller.addProcUnit(datatype='ParametersProc', inputId=readUnitConf.getId())
+ opObj11 = procUnitConf2.addOperation(name='SpectralMoments', optype='other')
+
+ opObj12 = procUnitConf2.addOperation(name='PublishData', optype='other')
+ opObj12.addParameter(name='zeromq', value=1, format='int')
+ opObj12.addParameter(name='verbose', value=0, format='bool')
+
+ controller.start()
+
+
+if __name__ == '__main__':
+ multiSchain(fiber, nProcess={nProcess}, startDate="{startDate}", endDate="{endDate}")
+
+
'''
diff --git a/schainpy/scripts/schain.xml b/schainpy/scripts/schain.xml
index a2ccb6f..bd5200e 100644
--- a/schainpy/scripts/schain.xml
+++ b/schainpy/scripts/schain.xml
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file