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

27 statements  

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

1##################### generated by xml-casa (v2) from imtrans.xml ################### 

2##################### 30ff8089f93306fba45c8fab1f49a731 ############################## 

3from __future__ import absolute_import 

4import numpy 

5from casatools.typecheck import CasaValidator as _val_ctor 

6_pc = _val_ctor( ) 

7from casatools.coercetype import coerce as _coerce 

8from casatools.errors import create_error_string 

9from .private.task_imtrans import imtrans as _imtrans_t 

10from casatasks.private.task_logging import start_log as _start_log 

11from casatasks.private.task_logging import end_log as _end_log 

12from casatasks.private.task_logging import except_log as _except_log 

13 

14class _imtrans: 

15 """ 

16 imtrans ---- Reorder image axes 

17 

18 --------- parameter descriptions --------------------------------------------- 

19 

20 imagename Name of the input image which must be specified. 

21 outfile Name of output CASA image. 

22 order New zero-based axes order. 

23 RETURNS bool 

24 

25 --------- examples ----------------------------------------------------------- 

26 

27  

28 PARAMETER SUMMARY 

29 imagename Name of the input image 

30 outfile Name of output CASA image. Must be specified. 

31 order Output axes mapping 

32  

33 This task reorders (transposes) the axes in the input image to the specified 

34 order. The associated pixel values and coordinate system are transposed. 

35  

36 The order parameter describes the mapping of the input axes to the output axes. 

37 It can be one of three types: a non-negative integer, a string, or a list of 

38 strings. If a string or non-negative integer, it should contain 

39 zero-based digits describing the new order of the input axes. It must 

40 contain the same number of (unique) digits as the number of input axes. For example, 

41 specifying order="1032" or order=1032 for a four axes image maps input axes 

42 1, 0, 3, 2 to output axes 0, 1, 2, 3. In the case of order being a nonnegative integer 

43 and the zeroth axis in the input being mapped to zeroth axis in the output, the zeroth 

44 digit is implicitly understood to be 0 so that to transpose an image where one would 

45 use a string order="0321", one could equivalently specify an int order=321. 

46 IMPORTANT: When specifying a non-negative integer and mapping the zeroth axis of 

47 the input to the zeroth axis of the output, do *not* explicitly specify the leading 

48 0; eg, specify order=321 rather than order=0321. Python interprets an integer with 

49 a leading 0 as an octal number. 

50  

51 Because of ambiguity for axes numbers greater than nine, using string or integer order 

52 specifications cannot handle images containing more than 10 axes. 

53 The order parameter can also be specified as a list of strings which uniquely match, 

54 ignoring case, the first characters of the image axis names (ia.coordsys().names()). 

55 So to reorder an image with right ascension, declination, and frequency axes, one could 

56 specify order=["d", "f", "r"] or equivalently ["decl", "frequ", "right a"]. Note that 

57 specifying "ra" for the right ascension axis will result in an error because "ra" does 

58 not match the first two characters of "right ascension". 

59 Axes can be simultaneously inverted in cases where order is a string or an array of 

60 strings by specifying negative signs in front of the axis/axes to be inverted. So, 

61 in a 4-D image, order="-10-3-2" maps input axes 1, 0, 3, 2 to output axes 0, 1, 2, 3 

62 and reverses the direction and values of input axes 1, 3, and 2. 

63 EXAMPLE: 

64 # Swap the stokes and spectral axes in an RA-Dec-Stokes-Frequency image 

65 imagename = "myim.im" 

66 outfile = "outim.im" 

67 order = "0132" 

68 imtrans() 

69  

70 # or 

71  

72 outfile = "myim_2.im" 

73 order = 132 

74 imtrans() 

75  

76 # or 

77  

78 outfile = "myim_3.im" 

79 order = ["r", "d", "f", "s"] 

80 imtrans() 

81  

82 # or 

83  

84 utfile = "myim_4.im" 

85 order = ["rig", "declin", "frequ", "stok"] 

86 imtrans() 

87 

88 

89 """ 

90 

91 _info_group_ = """analysis""" 

92 _info_desc_ = """Reorder image axes""" 

93 

94 def __call__( self, imagename='', outfile='', order='' ): 

95 schema = {'imagename': {'type': 'cReqPath', 'coerce': _coerce.expand_path}, 'outfile': {'type': 'cStr', 'coerce': _coerce.to_str}, 'order': {'type': 'cVariant', 'coerce': [_coerce.to_variant]}} 

96 doc = {'imagename': imagename, 'outfile': outfile, 'order': order} 

97 assert _pc.validate(doc,schema), create_error_string(_pc.errors) 

98 _logging_state_ = _start_log( 'imtrans', [ 'imagename=' + repr(_pc.document['imagename']), 'outfile=' + repr(_pc.document['outfile']), 'order=' + repr(_pc.document['order']) ] ) 

99 task_result = None 

100 try: 

101 task_result = _imtrans_t( _pc.document['imagename'], _pc.document['outfile'], _pc.document['order'] ) 

102 except Exception as exc: 

103 _except_log('imtrans', exc) 

104 raise 

105 finally: 

106 task_result = _end_log( _logging_state_, 'imtrans', task_result ) 

107 return task_result 

108 

109imtrans = _imtrans( ) 

110