Help/UsageExamples/Solar/CTIP: ctip-modea.py

File ctip-modea.py, 3.8 kB (added by dkw, 8 months ago)
Line 
1#! /usr/bin/env python
2#   Title: CTIP Mode A Workflow for AstroGrid
3#  Author: Dr Dugan Witherick, University College London
4#    Date: 8th April 2008
5#   Usage: ctip-modea.py dayofyear f10.7
6# Example: ctip-modea.py 82 120
7
8import sys, xmlrpclib, os, time
9prefix = file(os.path.expanduser("~/.astrogrid-desktop")).next().rstrip()
10acr = xmlrpclib.Server(prefix+"xmlrpc")
11ag = acr.astrogrid
12
13dayofyear = 82
14f107 = 120
15kp = 27
16maxRefreshRate = 300
17refreshRate = 2
18
19if len(sys.argv) == 3:
20    dayofyear = sys.argv[1]
21    f107 = sys.argv[2]
22
23print '#################################'
24print '#                               #'
25print '#         CTIP Mode A           #'
26print '#                               #'
27print '#################################'
28print ''
29print 'Using the following parameters:'
30print ''
31
32ctipmodeaivo = "ivo://uk.ac.ral.ukssdc/CTIP/v1"
33
34userInfo = ag.community.getUserInformation()
35saveFolder = userInfo['id']+"CTIP"
36if ag.myspace.exists(saveFolder) == False:
37    ag.myspace.createFolder(saveFolder)
38
39ctipStruct = ag.applications.createTemplateStruct(ctipmodeaivo,'Simple')
40
41ctipStruct['input']['DayOfYear']['value'] = dayofyear
42ctipStruct['input']['F10']['value'] = f107
43ctipStruct['input']['KP']['value'] = kp
44
45baseOut = saveFolder+'/CTIP_A_'+str(dayofyear)+'-'+str(f107)+'-'+str(kp)
46
47print '    Base Filename: '+baseOut
48print '      Day of Year: '+str(dayofyear)
49print '            F10.7: '+str(f107)
50print '               KP: '+str(kp)
51print 'Max. Refresh Rate: '+str(maxRefreshRate)
52
53ctipStruct['output']['OutputHt']['indirect'] = True
54ctipStruct['output']['OutputHt']['value'] = baseOut+'OutputHt.txt'
55
56ctipStruct['output']['OutputTn']['indirect'] = True
57ctipStruct['output']['OutputTn']['value'] = baseOut+'OutputTn.txt'
58
59ctipStruct['output']['OutputMMRO']['indirect'] = True
60ctipStruct['output']['OutputMMRO']['value'] = baseOut+'OutputMMRO.txt'
61
62ctipStruct['output']['OutputVnY']['indirect'] = True
63ctipStruct['output']['OutputVnY']['value'] = baseOut+'OutputVnY.txt'
64
65ctipStruct['output']['OutputMMM']['indirect'] = True
66ctipStruct['output']['OutputMMM']['value'] = baseOut+'OutputMMM.txt'
67
68ctipStruct['output']['OutputNe']['indirect'] = True
69ctipStruct['output']['OutputNe']['value'] = baseOut+'OutputNe.txt'
70
71ctipStruct['output']['OutputMMRO2']['indirect'] = True
72ctipStruct['output']['OutputMMRO2']['value'] = baseOut+'OutputMMRO2.txt'
73
74ctipStruct['output']['OutputMMRN2']['indirect'] = True
75ctipStruct['output']['OutputMMRN2']['value'] = baseOut+'OutputMMRN2.txt'
76
77ctipStruct['output']['OutputVnX']['indirect'] = True
78ctipStruct['output']['OutputVnX']['value'] = baseOut+'OutputVnX.txt'
79
80ctipStruct['output']['OutputLog']['indirect'] = True
81ctipStruct['output']['OutputLog']['value'] = baseOut+'OutputLog.txt'
82
83ctipStruct['output']['OutputVnZ']['indirect'] = True
84ctipStruct['output']['OutputVnZ']['value'] = baseOut+'OutputVnZ.txt'
85
86ctipDoc = ag.applications.convertStructToDocument(ctipStruct)
87ag.applications.validate(ctipDoc)
88
89print ''
90print 'Starting CTIP at '+time.ctime()
91eid = ag.applications.submit(ctipDoc)
92print 'Job ID - '+eid
93print ''
94
95jobinfo = ag.applications.getExecutionInformation(eid)
96jobstat = jobinfo['status']
97print jobstat + ' - ' + time.ctime()
98
99while jobstat != 'COMPLETED' and jobstat != 'ERROR': 
100        time.sleep(refreshRate)
101        jobinfo = ag.applications.getExecutionInformation(eid)
102        jobstat = jobinfo['status']
103        print jobstat + ' - ' + time.ctime()
104        if refreshRate < maxRefreshRate:
105            refreshRate = refreshRate*2.0
106
107print ''
108
109if jobstat == 'ERROR':
110    print 'CTIP Failed to run correctly!'
111elif jobstat == 'COMPLETED':
112    print 'CTIP ran correctly!'
113    print 'Your results can be found in '+saveFolder
114else:
115    print 'The final job status was - ' + jobstat
116
117print 'The job started at '+str(jobinfo['startTime'])
118print 'and the job finished at '+str(jobinfo['finishTime'])