Coverage for /wheeldirectory/casa-6.7.0-12-py3.10.el8/lib/py/lib/python3.10/site-packages/casatasks/private/mstools.py: 72%

43 statements  

« prev     ^ index     » next       coverage.py v7.6.4, created at 2024-10-31 19:53 +0000

1 

2 

3from casatools import ctsys 

4 

5def write_history(myms, vis, tname, param_names, param_vals, myclog=None, debug=False): 

6 """ 

7 Update vis with the parameters that task tname was called with. 

8 

9 myms - an ms tool instance 

10 vis - the MS to write to. 

11 tname - name of the calling task. 

12 param_names - list of parameter names. 

13 param_vals - list of parameter values (in the same order as param_names). 

14 myclog - a casalog instance (optional) 

15 debug - Turns on debugging print statements on errors if True. 

16 

17 Example: 

18 The end of split does 

19 

20 In python 2.x: 

21 param_names = split.func_code.co_varnames[:split.func_code.co_argcount] 

22 param_vals = [eval(p) for p in param_names] # Must be done in the task. 

23 In python 3.x: 

24 vars = locals( ) 

25 param_names = split.__code__.co_varnames[:split.__code__.co_argcount] 

26 param_vals = [vars[p] for p in param_names] # Must be done in the task. 

27 

28 write_history(myms, outputvis, 'split', param_names, param_vals, 

29 casalog), 

30 which appends, e.g., 

31  

32 vis = 'TWHydra_CO3_2.ms' 

33 outputvis = 'scan9.ms' 

34 datacolumn = 'data' 

35 field = '' 

36 spw = '' 

37 width = 1 

38 antenna = '' 

39 timebin = '0s' 

40 timerange = '' 

41 scan = '9' 

42 intent = '' 

43 array = '' 

44 uvrange = '' 

45 correlation = '' 

46 keepflags = True 

47 

48 to the HISTORY of outputvis. 

49 """ 

50 if not hasattr(myms, 'writehistory'): 

51 if debug: 

52 myclog.post("write_history(myms, %s, %s): myms is not an ms tool" % (vis, tname), 'WARN') 

53 return False 

54 retval = True 

55 isopen = False 

56 try: 

57 if not myclog and hasattr(casalog, 'post'): 

58 myclog = casalog 

59 except Exception: 

60 # There's no logger to complain to, and I don't want to exit 

61 # just because of that. 

62 pass 

63 try: 

64 myms.open(vis, nomodify=False) 

65 isopen = True 

66 messages = ['taskname={0}'.format(tname)] 

67 vestr = 'version: ' 

68 try: 

69 # Don't use myclog.version(); it also prints to the 

70 # logger, which is confusing. 

71 vestr += ctsys.version_string( ) + ' ' 

72 vestr += ctsys.version_desc( ) 

73 

74 

75 except Exception: 

76 if hasattr(myclog, 'version'): 

77 # Now give it a try. 

78 vestr += myclog.version() 

79 else: 

80 vestr += ' could not be determined' # We tried. 

81 messages.append(vestr) 

82 

83 # Add the task arguments. 

84 for argnum in range(len(param_names)): 

85 msg = "%-11s = " % param_names[argnum] 

86 val = param_vals[argnum] 

87 if type(val) == str: 

88 msg += '"' 

89 msg += str(val) 

90 if type(val) == str: 

91 msg += '"' 

92 messages.append(msg) 

93 

94 myms.writehistory_batch(messages=messages, origin=tname) 

95 

96 except Exception as instance: 

97 if hasattr(myclog, 'post'): 

98 myclog.post("*** Error \"%s\" updating HISTORY of %s" % (instance, vis), 

99 'SEVERE') 

100 retval = False 

101 finally: 

102 if isopen: 

103 myms.close() 

104 return retval 

105