cubevis 0.5.2__py3-none-any.whl → 0.5.7__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of cubevis might be problematic. Click here for more details.
- cubevis/__init__.py +3 -0
- cubevis/__version__.py +1 -1
- cubevis/{apps → private/apps}/__init__.py +5 -5
- cubevis/private/apps/_interactiveclean.mustache +1498 -0
- cubevis/{apps → private/apps}/_interactiveclean.py +4 -4
- cubevis/{apps → private/apps}/_interactiveclean_wrappers.py +1 -1
- cubevis/private/casashell/createmask.py +1 -1
- cubevis/private/casashell/iclean.py +1 -1
- cubevis/private/casatasks/createmask.py +1 -1
- cubevis/private/casatasks/createregion.py +1 -1
- cubevis/private/casatasks/iclean.py +1 -1
- cubevis/utils/_import_protected_module.py +1 -1
- cubevis-0.5.7.dist-info/METADATA +51 -0
- {cubevis-0.5.2.dist-info → cubevis-0.5.7.dist-info}/RECORD +21 -20
- cubevis-0.5.2.dist-info/METADATA +0 -151
- /cubevis/{apps → private/apps}/_createmask.py +0 -0
- /cubevis/{apps → private/apps}/_createregion.py +0 -0
- /cubevis/{apps → private/apps}/_ms_raster.py +0 -0
- /cubevis/{apps → private/apps}/_plotants.py +0 -0
- /cubevis/{apps → private/apps}/_plotbandpass.py +0 -0
- {cubevis-0.5.2.dist-info → cubevis-0.5.7.dist-info}/WHEEL +0 -0
- {cubevis-0.5.2.dist-info → cubevis-0.5.7.dist-info}/licenses/LICENSE +0 -0
|
@@ -52,9 +52,9 @@ from bokeh.io import reset_output as reset_bokeh_output, output_notebook
|
|
|
52
52
|
from bokeh.models.dom import HTML
|
|
53
53
|
|
|
54
54
|
from bokeh.models.ui.tooltips import Tooltip
|
|
55
|
-
from
|
|
56
|
-
from
|
|
57
|
-
from
|
|
55
|
+
from cubevis.bokeh.models import TipButton, Tip, EvTextInput
|
|
56
|
+
from cubevis.utils import resource_manager, reset_resource_manager, is_notebook, find_pkg, load_pkg
|
|
57
|
+
from cubevis.utils import ContextMgrChain as CMC
|
|
58
58
|
|
|
59
59
|
# pylint: disable=no-name-in-module
|
|
60
60
|
from casatasks.private.imagerhelpers.imager_return_dict import ImagingDict
|
|
@@ -66,7 +66,7 @@ from cubevis.utils import find_ws_address, convert_masks
|
|
|
66
66
|
from cubevis.toolbox import CubeMask, AppContext
|
|
67
67
|
from cubevis.bokeh.utils import svg_icon
|
|
68
68
|
from cubevis.bokeh.sources import DataPipe
|
|
69
|
-
from
|
|
69
|
+
from cubevis.utils import DocEnum
|
|
70
70
|
|
|
71
71
|
from ._interactiveclean_wrappers import SharedWidgets
|
|
72
72
|
|
|
@@ -35,7 +35,7 @@ from casatools.coercetype import coerce as _coerce
|
|
|
35
35
|
from casatools.errors import create_error_string
|
|
36
36
|
from casatasks.private.task_logging import start_log as _start_log
|
|
37
37
|
from casatasks.private.task_logging import end_log as _end_log
|
|
38
|
-
from cubevis.apps import InteractiveClean
|
|
38
|
+
from cubevis.private.apps import InteractiveClean
|
|
39
39
|
from collections import OrderedDict
|
|
40
40
|
import numpy
|
|
41
41
|
import sys
|
|
@@ -35,7 +35,7 @@ from casatools.coercetype import coerce as _coerce
|
|
|
35
35
|
from casatools.errors import create_error_string
|
|
36
36
|
from casatasks.private.task_logging import start_log as _start_log
|
|
37
37
|
from casatasks.private.task_logging import end_log as _end_log
|
|
38
|
-
from cubevis.apps import InteractiveClean
|
|
38
|
+
from cubevis.private.apps import InteractiveClean
|
|
39
39
|
from collections import OrderedDict
|
|
40
40
|
import numpy
|
|
41
41
|
import sys
|
|
@@ -36,7 +36,7 @@ from casatools.errors import create_error_string
|
|
|
36
36
|
from casatasks.private.task_logging import start_log as _start_log
|
|
37
37
|
from casatasks.private.task_logging import end_log as _end_log
|
|
38
38
|
from casatasks.private.task_logging import except_log as _except_log
|
|
39
|
-
from cubevis.apps import CreateMask
|
|
39
|
+
from cubevis.private.apps import CreateMask
|
|
40
40
|
|
|
41
41
|
def _createmask_t( *args, **kwargs ):
|
|
42
42
|
cm = CreateMask( *args, **kwargs )
|
|
@@ -36,7 +36,7 @@ from casatools.errors import create_error_string
|
|
|
36
36
|
from casatasks.private.task_logging import start_log as _start_log
|
|
37
37
|
from casatasks.private.task_logging import end_log as _end_log
|
|
38
38
|
from casatasks.private.task_logging import except_log as _except_log
|
|
39
|
-
from cubevis.apps import CreateRegion
|
|
39
|
+
from cubevis.private.apps import CreateRegion
|
|
40
40
|
|
|
41
41
|
def _createregion_t( *args, **kwargs ):
|
|
42
42
|
cm = CreateRegion( *args, **kwargs )
|
|
@@ -36,7 +36,7 @@ from casatools.errors import create_error_string
|
|
|
36
36
|
from casatasks.private.task_logging import start_log as _start_log
|
|
37
37
|
from casatasks.private.task_logging import end_log as _end_log
|
|
38
38
|
from casatasks.private.task_logging import except_log as _except_log
|
|
39
|
-
from cubevis.apps import InteractiveClean
|
|
39
|
+
from cubevis.private.apps import InteractiveClean
|
|
40
40
|
|
|
41
41
|
def _iclean_t( *args, **kwargs ):
|
|
42
42
|
ic = InteractiveClean( *args, **kwargs )
|
|
@@ -9,7 +9,7 @@ def ImportProtectedModule( name, file_mapping ):
|
|
|
9
9
|
"""Import objects, functions and classes for export while avoiding requiring user to
|
|
10
10
|
provide the sub-package name for the file contining the imported object, for example
|
|
11
11
|
allowing:
|
|
12
|
-
from cubevis
|
|
12
|
+
from cubevis import iclean
|
|
13
13
|
|
|
14
14
|
instead of:
|
|
15
15
|
from cubevis.app._interactive_clean import iclean
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: cubevis
|
|
3
|
+
Version: 0.5.7
|
|
4
|
+
Summary: visualization toolkit and apps for casa
|
|
5
|
+
License: LGPL
|
|
6
|
+
Author-email: Darrell Schiebel <darrell@schiebel.us>,Pam Harris <pharris@nrao.edu>
|
|
7
|
+
Requires-Python: >=3.10
|
|
8
|
+
Requires-Dist: astropy>=5.1
|
|
9
|
+
Requires-Dist: bokeh==3.6.1
|
|
10
|
+
Requires-Dist: certifi
|
|
11
|
+
Requires-Dist: matplotlib
|
|
12
|
+
Requires-Dist: regions>=0.6
|
|
13
|
+
Requires-Dist: websockets>=10.3
|
|
14
|
+
Description-Content-Type: text/x-rst
|
|
15
|
+
|
|
16
|
+
cubevis - visualization tools for CASA images
|
|
17
|
+
=============================================
|
|
18
|
+
|
|
19
|
+
This is a **beta-release** quality package. This package relies on the
|
|
20
|
+
`CASA <https://casadocs.readthedocs.io/en/stable/index.html>`_ data processing system
|
|
21
|
+
for radio telescopes as the processing backend while providing control and visualization
|
|
22
|
+
using `Bokeh <https://bokeh.org/>`_.
|
|
23
|
+
|
|
24
|
+
Introduction
|
|
25
|
+
------------
|
|
26
|
+
|
|
27
|
+
These tools are primarily based on `Bokeh <https://bokeh.org/>`_. The GUIs use Python
|
|
28
|
+
and CASA to provide image access while a generated JavaScript interface provides a control
|
|
29
|
+
front-end.
|
|
30
|
+
|
|
31
|
+
Interactive Clean
|
|
32
|
+
-----------------
|
|
33
|
+
|
|
34
|
+
Interactive clean is the primary application provided by this package. It allows for
|
|
35
|
+
visualizally observing and controlling the image reconstruction performed by
|
|
36
|
+
`CASA <https://casadocs.readthedocs.io/en/stable/index.html>`_. The primary CASA
|
|
37
|
+
`tasks <https://casadocs.readthedocs.io/en/stable/api/casatasks.html>`_ used to
|
|
38
|
+
perform the image reconstruction are
|
|
39
|
+
`tclean <https://casadocs.readthedocs.io/en/stable/api/tt/casatasks.imaging.tclean.html>`_ and
|
|
40
|
+
`deconvolve <https://casadocs.readthedocs.io/en/stable/api/tt/casatasks.imaging.deconvolve.html>`_.
|
|
41
|
+
|
|
42
|
+
Usage
|
|
43
|
+
^^^^^
|
|
44
|
+
|
|
45
|
+
This example provide a summary of how to use interactive clean from Python
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
For this sample, the test measurement set is
|
|
49
|
+
`available <https://casa.nrao.edu/download/devel/casavis/data/refim_twopoints_twochan-ms.tar.gz>`_,
|
|
50
|
+
while the `outlierfile` would look something like
|
|
51
|
+
|
|
@@ -24,20 +24,12 @@ cubevis/__icons__/sub-cube.png,sha256=mtv21frhc_GuXsfDlUa-0xQzym3Ii4TZiQGm4MFYjr
|
|
|
24
24
|
cubevis/__icons__/sub-cube.svg,sha256=tDCFZ2Es6b8HTiBpgLPG0cOOnlS8dI7LbE2KQxEWFw4,6391
|
|
25
25
|
cubevis/__icons__/zoom-to-fit.png,sha256=aozGbrkoBX1q9kV0p272bg0YKGje1gIfVBkFZRlLAXs,9592
|
|
26
26
|
cubevis/__icons__/zoom-to-fit.svg,sha256=NtYorWvH4s68iAMriqCPGuTBX5SsgVN310UXGKDM7i8,1802
|
|
27
|
-
cubevis/__init__.py,sha256
|
|
27
|
+
cubevis/__init__.py,sha256=uLahNBl4y3LitACJmbSWsn_aI9bpXk085MIcbIFZ2pk,2632
|
|
28
28
|
cubevis/__js__/bokeh-3.6.1.min.js,sha256=SPRs94Q-H-aj8MCsXNu4ok1ouQQLTgXxZnk0-BBAOl4,1092280
|
|
29
29
|
cubevis/__js__/bokeh-tables-3.6.1.min.js,sha256=wINufoBiINmP_PERwhN_1GkidJOsJQ_3vFKUDui7rl8,301216
|
|
30
30
|
cubevis/__js__/bokeh-widgets-3.6.1.min.js,sha256=NE3tFbbxoaMjnJ0XednWJxbAGl-vSR0fxE_kX8keuDQ,311821
|
|
31
31
|
cubevis/__js__/casalib.min.js,sha256=JLZ_3i5JlbNJw2nsx7pewysxzoD3sVpSiWdgJCLbhi0,91107
|
|
32
32
|
cubevis/__js__/cubevisjs.min.js,sha256=fU2O_iQAIKl79r8rfADaTq5R-tMy33YqimE3U-UHXGE,27545
|
|
33
|
-
cubevis/apps/__init__.py,sha256=1kwOspD7uL8SXSxnT-MBaA-wDxW5T8mJwxOmyrkTcww,2522
|
|
34
|
-
cubevis/apps/_createmask.py,sha256=bKFpME5MYhLh7HxlJZINBTwG25t0_T_d1nYrWYAWYPA,23527
|
|
35
|
-
cubevis/apps/_createregion.py,sha256=ujLQeXl-afooRU0YLcJ43FMMDMU37SoHtuPJnwNHcEw,26667
|
|
36
|
-
cubevis/apps/_interactiveclean.py,sha256=l_3xPNfCFL7bNmNL4C4x584hG7lj1BwB1vZrxy1cSD4,241438
|
|
37
|
-
cubevis/apps/_interactiveclean_wrappers.py,sha256=ALbIQBOyxKqKJy_MUIqIUVwcyVzNFDOjtI1ysx4Stkk,5065
|
|
38
|
-
cubevis/apps/_ms_raster.py,sha256=fAE3-qaqD4N2o6TyR_eD1r8IXDJL_tu03WpR2e4gMSM,36511
|
|
39
|
-
cubevis/apps/_plotants.py,sha256=top6VWVd_sE48IVPH_sIg3_sQeDl5tadi5DL7r5tUEI,10823
|
|
40
|
-
cubevis/apps/_plotbandpass.py,sha256=NwOgKSRnpLw9Pt3KIdBpoV78q1OnjCvj6lWFqeyICt8,185
|
|
41
33
|
cubevis/bokeh/__init__.py,sha256=XvuKcU9-bAv1CPb_O81VJTNLlHQC-zBg_Ig9_q4RkM4,1371
|
|
42
34
|
cubevis/bokeh/annotations/__init__.py,sha256=tjDIPKbg-rh7Iu3coFWvmX-j2yNj9KuKmRp1aTo71ww,50
|
|
43
35
|
cubevis/bokeh/annotations/_ev_poly_annotation.py,sha256=0ayX21gxNnm5-4s5VRKiaJ23DCSvbvpsU6oym9q2bk0,173
|
|
@@ -98,12 +90,21 @@ cubevis/plot/ms_plot/_raster_plot_inputs.py,sha256=yUFob7t4JMXTwHjzNWZMEMLCvQdJ5
|
|
|
98
90
|
cubevis/plot/ms_plot/_xds_plot_axes.py,sha256=EeWvAbiKV33nEWdI8V3M0uwLTnycq4bFYBOyVWkxCu0,4429
|
|
99
91
|
cubevis/private/__java__/xml-casa-assembly-1.86.jar,sha256=dBT_OxPtczAfWKRaOrHWwNZbDfEjtKkuQGuFOaKOczA,8041045
|
|
100
92
|
cubevis/private/_gclean.py,sha256=ExdR6cRxSa6Xne2veGNKhbTtx-tXUIWr2htzEmEZ9Z4,41107
|
|
101
|
-
cubevis/private/
|
|
102
|
-
cubevis/private/
|
|
93
|
+
cubevis/private/apps/__init__.py,sha256=-9U6o-SClwJolGDnFhlH1au4tz-w4HgRcyT4_OQ_Z7E,2510
|
|
94
|
+
cubevis/private/apps/_createmask.py,sha256=bKFpME5MYhLh7HxlJZINBTwG25t0_T_d1nYrWYAWYPA,23527
|
|
95
|
+
cubevis/private/apps/_createregion.py,sha256=ujLQeXl-afooRU0YLcJ43FMMDMU37SoHtuPJnwNHcEw,26667
|
|
96
|
+
cubevis/private/apps/_interactiveclean.mustache,sha256=vjTBSI8BlB8CIopu4oydrgeleOAwCjqWCh3Rwr_AALA,103811
|
|
97
|
+
cubevis/private/apps/_interactiveclean.py,sha256=pGywKaty1rjW5uGblY3Nj5G22lGaOBvDuOM_z560Yps,241462
|
|
98
|
+
cubevis/private/apps/_interactiveclean_wrappers.py,sha256=XqyCGz33CMDhszTxnwZ_3-64GszUK1XYnGKUOxl9sas,5071
|
|
99
|
+
cubevis/private/apps/_ms_raster.py,sha256=fAE3-qaqD4N2o6TyR_eD1r8IXDJL_tu03WpR2e4gMSM,36511
|
|
100
|
+
cubevis/private/apps/_plotants.py,sha256=top6VWVd_sE48IVPH_sIg3_sQeDl5tadi5DL7r5tUEI,10823
|
|
101
|
+
cubevis/private/apps/_plotbandpass.py,sha256=NwOgKSRnpLw9Pt3KIdBpoV78q1OnjCvj6lWFqeyICt8,185
|
|
102
|
+
cubevis/private/casashell/createmask.py,sha256=C1eSUUsttSGghjZ5aDUVhRxnjir5MlYXVyxzEYLcI3k,14457
|
|
103
|
+
cubevis/private/casashell/iclean.py,sha256=FUrCMrfXuTjUHFBA0PVEctDXlHsZrMZBePwZ_otDwxI,294787
|
|
103
104
|
cubevis/private/casatasks/__init__.py,sha256=yLL13GDxSxIkqjjap_sJO_aGVaBUW9gXMwlAlPli97g,6963
|
|
104
|
-
cubevis/private/casatasks/createmask.py,sha256=
|
|
105
|
-
cubevis/private/casatasks/createregion.py,sha256=
|
|
106
|
-
cubevis/private/casatasks/iclean.py,sha256=
|
|
105
|
+
cubevis/private/casatasks/createmask.py,sha256=qtp8IvFCB1BG2pqRbyP8CmTr-RRqLMBSjMIO86mZ7WA,3770
|
|
106
|
+
cubevis/private/casatasks/createregion.py,sha256=f2KIrkbbdczZk3EHd3x9ZTUaewdjSxlRge-Es8BivNk,3355
|
|
107
|
+
cubevis/private/casatasks/iclean.py,sha256=YO9RRtWVD3MxizqxTB-7yPD8NkX-mvbsB2yTyRcrvT0,152997
|
|
107
108
|
cubevis/readme.rst,sha256=XSMU01Dfx1NULFjEZya-8QKHhQA_MRWsUjsNJFKsaZ4,595
|
|
108
109
|
cubevis/remote/__init__.py,sha256=0LgSfWUw8cYnVrOYGq3o15tWJPkgcvTyYIrvRSAW6N8,1233
|
|
109
110
|
cubevis/remote/_gclean.py,sha256=TpmCmCUtMjqOFnA2wtYdp4EJo-59DyI00aaTWQbMQU4,1930
|
|
@@ -119,14 +120,14 @@ cubevis/utils/_contextmgrchain.py,sha256=r5SrCBdgQIVH7zXKOmq5oWhDUSeHaZpgsIfWFHv
|
|
|
119
120
|
cubevis/utils/_conversion.py,sha256=SziCU8sOGtG7djlY766-MeOvnQgvT9C737FEfJ4aYsE,3262
|
|
120
121
|
cubevis/utils/_copydoc.py,sha256=SI9DOUoTNg9M-Y4J1oci2Ba1jebGHsx_pFX24RSNg3o,1915
|
|
121
122
|
cubevis/utils/_docenum.py,sha256=D79BvxwW18DPUlIhBx5DnpZh76pDURC1Hqt1DfS7kG0,877
|
|
122
|
-
cubevis/utils/_import_protected_module.py,sha256=
|
|
123
|
+
cubevis/utils/_import_protected_module.py,sha256=AIISHPdiSzwgVzLXqHSWSHT-L7lcMWbYrsMlGlTFafE,1482
|
|
123
124
|
cubevis/utils/_logging.py,sha256=HqyoTib7QSuAUbzicPVMdhFtxWKo-Dv4GgD0AYDDXIY,2348
|
|
124
125
|
cubevis/utils/_pkgs.py,sha256=mu2CCzndmJZYP81UkFhxveW_CisWLUvagJVolHOEVgM,2294
|
|
125
126
|
cubevis/utils/_regions.py,sha256=TdAg4ZUUyhg3nFmX9_KLboqmc0LkyOdEW8M1WDR5Udk,1669
|
|
126
127
|
cubevis/utils/_static.py,sha256=rN-sqXNqQ5R2M3wmPHU1GPP5OTyyWQlUPRuimCrht-g,2347
|
|
127
128
|
cubevis/utils/_tiles.py,sha256=A9W1X61VOhBMTOKXVajzOIoiV2FBdO5N2SFB9SUpDOo,7336
|
|
128
|
-
cubevis/__version__.py,sha256=
|
|
129
|
-
cubevis-0.5.
|
|
130
|
-
cubevis-0.5.
|
|
131
|
-
cubevis-0.5.
|
|
132
|
-
cubevis-0.5.
|
|
129
|
+
cubevis/__version__.py,sha256=jR3u8xyb9ug4uh2IHlgd9VqSEn4enmk3_KpGlQQjNtM,21
|
|
130
|
+
cubevis-0.5.7.dist-info/WHEEL,sha256=B19PGBCYhWaz2p_UjAoRVh767nYQfk14Sn4TpIZ-nfU,87
|
|
131
|
+
cubevis-0.5.7.dist-info/METADATA,sha256=HkC8-O19DulrfDARIluuxyEg53cP7E3-JcLUtmIgETI,1896
|
|
132
|
+
cubevis-0.5.7.dist-info/licenses/LICENSE,sha256=IMF9i4xIpgCADf0U-V1cuf9HBmqWQd3qtI3FSuyW4zE,26526
|
|
133
|
+
cubevis-0.5.7.dist-info/RECORD,,
|
cubevis-0.5.2.dist-info/METADATA
DELETED
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.1
|
|
2
|
-
Name: cubevis
|
|
3
|
-
Version: 0.5.2
|
|
4
|
-
Summary: visualization toolkit and apps for casa
|
|
5
|
-
License: LGPL
|
|
6
|
-
Author-email: Darrell Schiebel <darrell@schiebel.us>,Pam Harris <pharris@nrao.edu>
|
|
7
|
-
Requires-Python: >=3.10
|
|
8
|
-
Requires-Dist: astropy>=5.1
|
|
9
|
-
Requires-Dist: bokeh==3.6.1
|
|
10
|
-
Requires-Dist: certifi
|
|
11
|
-
Requires-Dist: matplotlib
|
|
12
|
-
Requires-Dist: regions>=0.6
|
|
13
|
-
Requires-Dist: websockets>=10.3
|
|
14
|
-
Description-Content-Type: text/x-rst
|
|
15
|
-
|
|
16
|
-
casagui - visualization tools and applications for CASA
|
|
17
|
-
=======================================================
|
|
18
|
-
|
|
19
|
-
This is a **pre-alpha**, **prototype** package. It is *not* useful for external users, and all
|
|
20
|
-
applications being built with it are currently in various phases of *prototyping*.
|
|
21
|
-
|
|
22
|
-
Introduction
|
|
23
|
-
------------
|
|
24
|
-
|
|
25
|
-
For some time, the GUIs provided by `CASA <https://casadocs.readthedocs.io/en/latest/>`_ have
|
|
26
|
-
been based upon `Qt <https://www.qt.io/>`_. While Qt works well, the compiled nature of C++
|
|
27
|
-
code made building and distributing the GUIs for each architecture a hurdle. This in turn
|
|
28
|
-
caused the GUIs we developed to tend toward large, monolithic applications which were
|
|
29
|
-
difficult to integrate and control from Python. We first used
|
|
30
|
-
`DBus <https://www.freedesktop.org/wiki/Software/dbus/>`_ to control our Qt application.
|
|
31
|
-
Qt provides a nice interface to DBus, but it became clear that DBus development had slowed
|
|
32
|
-
and that DBus was unlikely to make major inroads outside of the Linux Desktop. At that
|
|
33
|
-
point, we switched to `gRPC <https://grpc.io/>`_. gRPC supports a variety of platforms
|
|
34
|
-
and languages. It also has significant support behind it. However despite the improved
|
|
35
|
-
technology, it was still difficult to incorporate a scripting interface which allowed a
|
|
36
|
-
stand-alone C++/Qt process to be controlled by a separate Python process at a low enough
|
|
37
|
-
level to be practically useful for control at the level of granularity we desire.
|
|
38
|
-
|
|
39
|
-
Similar to the CASA visualization development experience, the CASA framework as a whole
|
|
40
|
-
has experienced the ups and downs of the large C++ development experience. Experience
|
|
41
|
-
with a Python parallelization trade study which CASA conducted indicated that the loss
|
|
42
|
-
of CPU throughput in a switch from C++ to pure Python can be made up for in gains made
|
|
43
|
-
in the selection of parallelization framework like `Dask <https://www.dask.org/>`_ along
|
|
44
|
-
with just in time compilation with something like `Numba <http://numba.pydata.org/>`_.
|
|
45
|
-
In addition to the focus of the trade study, additional gains are possible by mixing
|
|
46
|
-
in GPU resources.
|
|
47
|
-
|
|
48
|
-
These experiences have led CASA to begin a multi-year transition from being a large
|
|
49
|
-
C++ framework attached to Python to being a pure-Python framework for processing
|
|
50
|
-
radio astronomy data. This package is visualization portion of that transition.
|
|
51
|
-
|
|
52
|
-
After an abbreviated trade study where we considered a few pure-Python visualization
|
|
53
|
-
frameworks, we selected `Bokeh <https://docs.bokeh.org/en/latest/>`_ as the basis
|
|
54
|
-
for creating new visualization infrastructure for CASA. The choice of Bokeh was made
|
|
55
|
-
based upon its extensibility, its community support (including
|
|
56
|
-
`NumFocus <https://numfocus.org/project/bokeh>`_), and its limited external dependencies
|
|
57
|
-
(just JavaScript and a modern web browser). A stand-alone application can be created
|
|
58
|
-
by using the
|
|
59
|
-
`Bokeh server <https://docs.bokeh.org/en/latest/docs/reference/command/subcommands/serve.html>`_.
|
|
60
|
-
These options allow for GUIs to be created and used interactively from a Python
|
|
61
|
-
command line session, as a stand-alone mini web server, integrated into a desktop
|
|
62
|
-
application (using `Electron <https://www.electronjs.org/>`_) or as part of a
|
|
63
|
-
`Jupyter Notebook <https://jupyter.org/>`_.
|
|
64
|
-
|
|
65
|
-
Beyond this architectural flexibility, our intention is to create a toolbox of
|
|
66
|
-
Bokeh based components which can be combined to create a collection of visualization
|
|
67
|
-
tools which can be used in each of these settings (Python command line, Notebook
|
|
68
|
-
and desktop application) so that we maintain smaller, reusable tools instead of very
|
|
69
|
-
large monolithic applications. *Interactive clean* is our path-finder application of
|
|
70
|
-
this approach and is currently the only example available.
|
|
71
|
-
|
|
72
|
-
Installation
|
|
73
|
-
------------
|
|
74
|
-
|
|
75
|
-
casagui is available `from PyPI <https://pypi.org/project/casagui/>`_.
|
|
76
|
-
|
|
77
|
-
Interactive Clean
|
|
78
|
-
-----------------
|
|
79
|
-
|
|
80
|
-
Requirements
|
|
81
|
-
````````````
|
|
82
|
-
|
|
83
|
-
- Python 3.8 or greater
|
|
84
|
-
|
|
85
|
-
- casatools and casatasks built from `CAS-13743 <https://open-jira.nrao.edu/browse/CAS-13743>`_
|
|
86
|
-
|
|
87
|
-
Install
|
|
88
|
-
```````
|
|
89
|
-
|
|
90
|
-
- :code:`bash$ casa-CAS-13743-2-py3.8/bin/pip3 install casagui`
|
|
91
|
-
|
|
92
|
-
Caveats
|
|
93
|
-
```````
|
|
94
|
-
|
|
95
|
-
- Remote access is slow, later a desktop application will be developed (using the same Bokeh
|
|
96
|
-
toolbox) to improve this situation, but for now if running remotely, it is best to pre-start
|
|
97
|
-
your preferred browser on the host where you will be running interactive clean. For example
|
|
98
|
-
|
|
99
|
-
* :code:`bash$ export BROWSER=/opt/local/bin/firefox`
|
|
100
|
-
|
|
101
|
-
* :code:`bash$ $BROWSER > /dev/null 2>&1 &`
|
|
102
|
-
|
|
103
|
-
- `Konqueror <https://apps.kde.org/konqueror/>`_ does **not** work. We only test with
|
|
104
|
-
`Chrome <https://www.google.com/chrome/>`_ and
|
|
105
|
-
`Firefox <https://www.mozilla.org/en-US/firefox/new/>`_.
|
|
106
|
-
|
|
107
|
-
- :code:`node.js` version 14.0.0 or higher is required
|
|
108
|
-
|
|
109
|
-
Simple Usage Example
|
|
110
|
-
````````````````````
|
|
111
|
-
|
|
112
|
-
A simple example of the use of interactive clean is::
|
|
113
|
-
|
|
114
|
-
CASA <1>: from casagui.apps import InteractiveClean
|
|
115
|
-
CASA <2>: InteractiveClean( vis=ms_path, imagename=img, imsize=512, cell='12.0arcsec',
|
|
116
|
-
specmode='cube', interpolation='nearest', nchan=5, start='1.0GHz',
|
|
117
|
-
width='0.2GHz', pblimit=-1e-05, deconvolver='hogbom', threshold='0.001Jy',
|
|
118
|
-
niter=50, cycleniter=10, cyclefactor=3, scales=[0,3,10] )( )
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
In general, the :code:`InteractiveClean` constructor takes a subset of parameters accepted
|
|
122
|
-
by `tclean <https://casadocs.readthedocs.io/en/latest/api/tt/casatasks.imaging.tclean.html>`_.
|
|
123
|
-
All of the masks used in running interactive clean are available from the
|
|
124
|
-
:code:`InteractiveClean` object. To get access to the list of masks, you would create
|
|
125
|
-
the object as a separate statement::
|
|
126
|
-
|
|
127
|
-
CASA <2>: ic = InteractiveClean( vis=ms_path, imagename=img, imsize=512, cell='12.0arcsec',
|
|
128
|
-
specmode='cube', interpolation='nearest', nchan=5, start='1.0GHz',
|
|
129
|
-
width='0.2GHz', pblimit=-1e-05, deconvolver='hogbom', threshold='0.001Jy',
|
|
130
|
-
niter=50, cycleniter=10, cyclefactor=3, scales=[0,3,10] )( )
|
|
131
|
-
CASA <2>: ic( )
|
|
132
|
-
CASA <3>: print(ic.masks( ))
|
|
133
|
-
|
|
134
|
-
Visibility Plotting: MsRaster
|
|
135
|
-
-----------------------------
|
|
136
|
-
|
|
137
|
-
Install
|
|
138
|
-
```````
|
|
139
|
-
|
|
140
|
-
See https://casagui.readthedocs.io/en/latest/applications/ms_raster.html#installation
|
|
141
|
-
|
|
142
|
-
Simple Usage Example
|
|
143
|
-
````````````````````
|
|
144
|
-
|
|
145
|
-
A simple example of the use of MsRaster to create visibility raster plots::
|
|
146
|
-
|
|
147
|
-
>>> from casagui.apps import MsRaster
|
|
148
|
-
>>> msr = MsRaster(ms=myms)
|
|
149
|
-
>>> msr.plot() # default time vs. baseline plot
|
|
150
|
-
>>> msr.show() # open plot in browser tab
|
|
151
|
-
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|