{ "cells": [ { "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ "# Visibility Simulator Examples\n", "\n", "Although ``hera_sim`` is primarily aimed at simulating instrumental effects on top of existing visibility data, the package also has the `visibilities` module that offers a uniform visibility simulation interface to wrappers for several visibility simulators, as well as a few analytic beam models of the HERA antenna." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Visibility Simulation Interface\n", "\n", "Starting from versions of `hera_sim >= 2.0.0`, wrappers for [VisCPU](https://github.com/HERA-Team/vis_cpu), [healvis](https://github.com/rasg-affiliates/healvis), and [pyuvsim](https://github.com/RadioAstronomySoftwareGroup/pyuvsim) visibility simulators are provided through the `VisCPU`, `Healvis`, and `UVSim` classes.\n", "\n", "The new `ModelData` object serves as a container for the visiblity data and all information required to perform visibility simulation. A preferred method to initialize this object is to use the classmethod `from_config`, providing [pyuvsim configuration files](https://pyuvsim.readthedocs.io/en/latest/parameter_files.html) that specify the observation and telescope parameters, beam model, and sky model. Direct initialization is also supported and currently required to utilize analytic HERA beam models in the `hera_sim.beams` module (see [Manual Initialization](###-Manual-Initialization)). Under the hood, ModelData wraps three objects used for facilitating simulation in pyuvsim, each encapsulating different information required for simulating visibility.\n", "* `pyuvdata.UVData`\n", " * A data container for observation parameters, array layout, telescope location, and visibility.\n", " * Accesible from the `uvdata` property.\n", " * Package reference: https://pyuvdata.readthedocs.io/en/latest/index.html\n", "* `pyradiosky.SkyModel`\n", " * A data container for sky models, including catalog of sources and diffuse sky maps in HEALPix.\n", " * Provide methods for conversion from a catalog of point sources to a HEALPix map and vice versa, which is used by the visibility simulator wrappers.\n", " * Accesible from the `sky_model` property.\n", " * Package reference: https://pyradiosky.readthedocs.io/en/latest/index.html\n", "* `pyuvsim.BeamList` and the associated `beam_ids`\n", " * Specify the antenna beam models and which beam model each antenna uses. (See [Manual Initialization](###-Manual-Initialization) for supported beam types.)\n", " * Accesible from the `beams` and `beam_ids` properties.\n", " * Reference: https://pyuvsim.readthedocs.io/en/latest/classes.html#pyuvsim.BeamList\n", "\n", "The `VisibilitySimulation` class is the new uniform visibility simulation interface. It takes an instance of a `VisibilitySimulator` class (of which `VisCPU`, `HealVis` and `UVSim` are examples) and a `ModelData` object as inputs. Visibility simulation can then be executed simply by calling the `simulate` method on an instance of a `VisibilitySimulation` class. This returns a Numpy array of visibilities in the same shape as in the `UVData.data_array` specification, which is also added to the object property `VisibilitySimulation.data_model.uvdata.data_array`.\n", "\n", "The motivation behind the `VisibilitySimulation`-`VisibilitySimulator`-`ModelData` setup is to provide a single uniform interface to many simulators, and the ability to create wrappers for simulators that are not already provided. This interface is heavily based on the pyuvsim configuration specifications and infrastructures, and thus it provides the ability to perform simulation with any simulator given the same static configuration." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Example 1: Demonstrate the Uniform Visibility Simulator Interface" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This example simulates visiblities with VisCPU at 10 frequencies and 60 \n", "times with the 50 brightest GLEAM sources as a sky model and the HERA Phase I \n", "array as the instrument." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "basis_vector_type was not defined, defaulting to azimuth and zenith_angle.\n", "Unknown polarization basis -- assuming linearly polarized (x/y) feeds for Telescope.feed_array.\n", "mount_type, antenna_diameters are not set or are being overwritten. mount_type, antenna_diameters are set using values from known telescopes for HERA.\n", "The default baseline conjugation convention has changed. In the past it was 'ant2" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "from pyuvdata import utils as uvutils\n", "\n", "uvd = simulation.data_model.uvdata\n", "\n", "# Get antennas positions and corresponding antenna numbers\n", "antpos, antnum = uvd.get_enu_data_ants()\n", "\n", "# Plot the EN antenna position.\n", "plt.scatter(antpos[:, 0], antpos[:, 1])\n", "for i, antnum in enumerate(uvd.telescope.antenna_numbers):\n", " plt.text(antpos[i, 0], antpos[i, 1], antnum)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Example 3: Plot the source positions in the SkyModel used in Example 1 " ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Type of sky model: point\n", "Number of sources: 50\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sky_model = simulation.data_model.sky_model\n", "print(\"Type of sky model:\", sky_model.component_type)\n", "print(\"Number of sources:\", sky_model.Ncomponents)\n", "\n", "# Extract the source positions and fluxes\n", "ra = sky_model.ra\n", "dec = sky_model.dec\n", "flux = sky_model.stokes[0, 0, :]\n", "\n", "# Plot the source positions with color and size showing source fluxes.\n", "plt.scatter(ra.deg, dec.deg, s=flux.to_value(\"Jy\"), c=flux.to_value(\"Jy\"))\n", "plt.colorbar(label=\"Flux Density [Jy]\")\n", "plt.xlabel(\"RA [degree]\")\n", "plt.ylabel(\"Dec [degree]\")\n", "plt.title(\"50 Brightest GLEAM Sources\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Example 4: Plot the waterfall of the visibility simulation in Example 1" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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7dtx69Yt7b60tDTExsYaXBYA/P777/XWAkZGRhpVHhHZHiZNRAJ555134ODggG+++Qapqam4ceMGHn74YYSGhuLYsWPIzMxEUVGRThPRnDlzsH//fuzevRt79uzBvn378N133xl03erqagwbNgyurq44cOAAvvnmG7i4uGD48OE6NV7Z2dk4ffo0srOz8c477yA9PV0n8YqJicF7772HDRs24JdffsGmTZvg4uICSZIwefLkOjVDmzdvxqBBg9CtWzeDn1VYWBj8/f3x0UcfAQDOnj2LnJwcPP300waXBdyuubqz9u/48eNo3749Bg0aZFR5RGSDZCJqMrGxsbJSqZRbt26t3f72t7/JsizLgwcPlkNDQ3WOX758uTx06FCdfefOnZMByPn5+fLNmzdlBwcH+f3339e+/8cff8jOzs7y888/r90HQN65c6dOOe7u7vLmzZtlWZblf//733KPHj1kjUajfb+yslJ2dnaWv/jiC23sfn5+ck1NjfaYxx57TJ4wYYIsy7Kcn58vA5C//PLLeu/9woULslKplI8cOSLLsixXVVXJHTp0kNPT0xt9XqNHj66zv/Z+kpOT5YceekiWZVleunSpPHbsWPn69esyADk7O1vneCcnJ53n3rp1a9nOzq7e8m/duiWHh4fLjz76qKxWq/WKiYhsn501Ezailuihhx7C66+/rn3dunVr7f+HhYXpHPv9998jOzu73n46p0+fxq1bt1BVVYXw8HDt/nbt2qFHjx4GxfT999+joKAArq6uOvsrKipw+vRp7etevXpBqVRqX3t5eeHEiRMAbje1KZVKDB48uN5reHt7Y8SIEUhLS0P//v3xySefoLKyEo899phBsd7pqaeewrx58/Dbb78hPT0dGzZsaPDYV199FVFRUTr75s6dC7VaXefYyZMn4+bNm/jyyy+hULBCnohuY9JE1MRat27dYHPUnQkUAJSWlmLkyJF45ZVX6hzr5eWld18gSZIgy7LOvjv7IpWWliIsLAzvvvtunXM7duyo/X97e/s65Wo0GgDQq4P0M888g6effhqvvvoqNm/ejAkTJqBVq1Z63UN92rdvj0cffRRTpkxBRUUFoqOjcfPmzXqP9fT0rPPcXV1dcePGDZ19K1aswBdffIGjR4/WSSKJqGVj0kQksL59++Kjjz6Cv78/7Ozqfl27du0Ke3t7HDlyBF26dAEAXL9+HSdPntSp8enYsSMuXbqkfX3q1CmUl5frXGfHjh3o1KkT3NzcjIq1T58+0Gg02L9/f50anVqPPPIIWrdujddffx2ZmZnIyckx6lp3mjx5Mh555BHMnTtXpxbMGB999BGWLVuGzz//HF27djU5NiKyLax3JhLYjBkzcO3aNTzxxBP49ttvcfr0aXzxxReIi4uDWq2Gi4sLpkyZgjlz5mDv3r348ccfMWnSpDpNSg8//DBee+01HD9+HMeOHcO0adN0ao0mTpyIDh06YPTo0Thw4AAKCwuxb98+zJo1C+fPn9crVn9/f8TGxmLy5MnYtWuXtoz3339fe4xSqcSkSZOQmJiI7t27Y+DAgSY/o+HDh+PKlStYtmyZSeX8+OOPiImJwdy5c9GrVy+oVCqoVCpcu3bN5BiJyDYwaSISmLe3N7755huo1WoMHToUffr0wezZs9GmTRttYrRmzRo8+OCDGDlyJKKiovDAAw/U6Ru1bt06+Pr64sEHH8STTz6JF198UadZrFWrVsjJyUGXLl0wbtw49OzZU9vkZUjN0+uvv46//e1vmD59Ou69917Ex8ejrKxM55gpU6agqqoKcXFxJjyZ/5EkCR06dICDg4NJ5Rw7dgzl5eVYsWIFvLy8tNu4cePMEicRNX+SfHdHByJq9iIjIxESEoLk5GRrh1LHgQMHMGTIEJw7dw4eHh6NHjtp0iTcuHHD6kuo3EnEmIioabCmiYiaRGVlJc6fP48lS5bgscce+9OEqdann34KFxcXfPrppxaOsHEHDhyAi4tLvZ3liahlYEdwImoS7733HqZMmYKQkBBs2bJFr3NWr16NBQsWALg9WtCa+vXrh7y8PACw2FItRCQ2Ns8RERER6YHNc0RERER6YNJEREREpAcmTURERER6YNJEREREpAcmTURERER6YNJEREREpAcmTURERER6YNJEREREpIf/D9Jbm8r+w087AAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "\n", "bls = (0, 1, \"xx\")\n", "waterfall = uvd.get_data(bls)\n", "extent = [\n", " uvd.freq_array[0] / 1e6,\n", " uvd.freq_array[-1] / 1e6,\n", " uvd.time_array[-1] - 2458101,\n", " uvd.time_array[0] - 2458101,\n", "]\n", "plt.imshow(np.abs(waterfall), aspect=\"auto\", interpolation=\"none\", extent=extent)\n", "plt.xlabel(\"Frequency [MHz]\")\n", "plt.ylabel(\"JD - 2458101\")\n", "plt.colorbar(label=f\"Visibility Amplitude [{uvd.vis_units}]\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For more comprehensive visualization of visibility data (e.g. waterfalls of differences between visibilities, Fourier Transform of a waterfall, and etc), users may be interested in plotting routines in the HERA [uvtools](https://github.com/HERA-Team/uvtools) package." ] }, { "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ "## Initializing Model Data\n", "\n", "As mentioned, the `ModelData` object contains all the data and information required to perform visibility simulation with `hera_sim`.\n", "\n", "The prefered method to initlize a ModelData object is to generate a set pyuvsim configuration files (see https://pyuvsim.readthedocs.io/en/latest/parameter_files.html) and then pass the top-level obsparams_*.yaml file to the classmethod `from_config`.\n", "\n", "```python\n", "data_model = ModelData.from_config(config_file)\n", "```" ] }, { "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ "### Manual Initialization\n", "\n", "If not using configuration files, the underlying objects can be first created and passed to the `ModelData` constructor for manual initialization. \n", "\n", "Users may consider using `hera_sim.io.empty_uvdata`, `pyuvsim.simsetup.initialize_uvdata_from_params`, or `pyuvsim.simsetup.initialize_uvdata_from_keywords` to construct a UVData object. \n", "\n", "See the next section on how to construct a sky model with `pyradiosky.SkyModel`.\n", "\n", "The beam models given to the `beams` parameter can be: i) a `pyuvsim.BeamList` object, ii) a `pyuvdata.UVBeam`, or iii) a list of `pyuvsim.AnalyticBeam`, including its subclasses.\n", "\n", "The `hera_sim.beams` module provides analytic models of the HERA antenna through the `PolyBeam`, `PerturbedPolyBeam`, and `ZernikeBeam` objects (see HERA Memo [#081](http://reionization.org/wp-content/uploads/2013/03/HERA081_HERA_Primary_Beam_Chebyshev_Apr2020.pdf) and [#101](http://reionization.org/manual_uploads/HERA101_Analytic_polarized_beam.pdf), and [Choudhuri et al 2021](https://arxiv.org/abs/2101.02684)). These beam models are subclasses of `pyuvdata.analytic_beam.AnalyticBeam`, and so are recognizable by the pyuvsim configuration file parser." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Example 5: Manaully initialize a `ModelData` object with `PolyBeam`" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Unknown polarization basis -- assuming linearly polarized (x/y) feeds for Telescope.feed_array.\n", "mount_type, antenna_diameters are not set or are being overwritten. mount_type, antenna_diameters are set using values from known telescopes for HERA.\n", "The default baseline conjugation convention has changed. In the past it was 'ant2" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Define some labels for all the cases that we want to compare\n", "waterfall_labels = [\n", " \"A: Source SkyModel\",\n", " \"B: Diffuse SkyModel\",\n", " \"C: Composite SkyModel\",\n", " \"A + B\",\n", " \"C - (A + B)\",\n", "]\n", "\n", "# Get waterfalls of the complex visibility,\n", "# same baseline (0, 1, 'xx') as in Example 1.\n", "waterfall_list = [\n", " sim.data_model.uvdata.get_data(bls)\n", " for sim in [source_sim, diffuse_sim, composite_sim]\n", "]\n", "\n", "# Make A + B, and C - (A + B), add them to the list\n", "waterfall_list.append(waterfall_list[0] + waterfall_list[1])\n", "waterfall_list.append(waterfall_list[2] - waterfall_list[3])\n", "\n", "# Extent for the waterfall plot, same for all three simulations\n", "extent = [\n", " source_sim.uvdata.freq_array[0] / 1e6,\n", " source_sim.uvdata.freq_array[-1] / 1e6,\n", " source_sim.uvdata.time_array[-1] - 2458101,\n", " source_sim.uvdata.time_array[0] - 2458101,\n", "]\n", "\n", "# Plotting\n", "fig, ax = plt.subplots(5, 1, sharex=\"all\", sharey=\"all\", figsize=(6, 8))\n", "for i, waterfall in enumerate(waterfall_list):\n", " im = ax[i].imshow(\n", " np.abs(waterfall), aspect=\"auto\", interpolation=\"none\", extent=extent\n", " )\n", " fig.colorbar(im, ax=ax[i], label=\"Amplitude [Jy]\")\n", " ax[i].set_title(waterfall_labels[i])\n", " ax[i].set_ylabel(\"JD - 2458101\")\n", "ax[-1].set_xlabel(\"Frequency [MHz]\")\n", "fig.subplots_adjust(hspace=0.3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Simulator Choices\n", "\n", "`hera_sim.visibilities` provide wraper classes for three visibility simulators, allowing them to be used in the new uniform interface. These classes are actually subclasses of the `VisibilitySimulator` class, a new abstract class that serves as a template for wrapping visibility simulators to be used with the uninorm interface, making it easy to create your own wrapper for a different simulator. \n", "\n", "Each of the simulator approaches the visibility calculation differently with its own merits.\n", "\n", "### MatVis\n", "`MatVis` is the wrapper for the [matvis](https://github.com/HERA-Team/matvis) package, a Python/numpy-based simulator for interferometer visibilities developed by members from HERA collaboration. It models the sky as an ensemble of point sources, each with their own frequency spectrum. The code is capable of modelling polarized visibilities and primary beams, but currently only a Stokes I sky model. \n", "\n", "[HERA Memo #98](http://reionization.org/manual_uploads/HERA098_vis_cpu_maths.pdf) describes the mathematical underlying of the `matvis` simulator although be warned that some information might have already been obsolete due to the recent rapid development of the simulator. In summary, `matvis` computes a geometric delay for each source and antenna, which is used to calculate the phase factor that is then multiplied by the source flux to obtain per-antenna visibility factor. The direction-dependent polarized antenna beam factor (Jones matrix) is computed by evaluating the complex (efield) antenna pattern at each source position on the azimutal-zenithal coordinates. This is usually done by calling the `interp` method of the UVBeam object, or by directly evaluating an analytic function in the case of using an analytic beam model. All of these are done per time at a given _single_ frequency. \n", "\n", "The `hera_sim` wrapper also adds a frequency loop on top of the internal time loop in `matvis` codes and interfaces between the `ModelData` to `matvis` input parameters, including transformation of a HEALPix SkyModel into a point source model. MPI parallelization over frequencies is also implemented on the `hera_sim` wrapper although shared memory is currently not supported.\n", "\n", "\n", "### UVSim\n", "The `UVSim` class provides a `hera_sim` wrapper to [pyuvsim](https://pyuvsim.readthedocs.io/en/latest/index.html), a comprehensive simulation package for radio interferometers that emphasizes accuracy and extensibility over speed. Under the hood, it execute `pyuvsim.uvsim.run_uvdata_uvsim` given the information in the `ModelData` object.\n", "\n", "### FFTVis\n", "\n", "`FFTVis` wraps the [fftvis](https://github.com/tyler-a-cox/fftvis) package, a Python/numpy-based simulator that has a very similar API to `matvis`, but uses the `finufft` package to perform the RIME computation. This is _very_ fast, especially for large-N arrays." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Creating a Custom Simulator\n", "\n", "The `VisibilitySimulator` abstract base class defines the required class infrastructure for creating a custom simulator." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Help on class VisibilitySimulator in module hera_sim.visibilities.simulators:\n", "\n", "class VisibilitySimulator(builtins.object)\n", " | Base class for all hera_sim-compatible visibility simulators.\n", " | \n", " | To define a new simulator, make a subclass. The subclass should overwrite available\n", " | class-attributes as necessary, and specify a ``__version__`` of the simulator code\n", " | itself.\n", " | \n", " | The :meth:`simulate` abstract method *must* be overwritten in the subclass, to\n", " | perform the actual simulation. The :meth:`validate` method *may* also be\n", " | overwritten to validate the given `UVData` input for the particular simulator.\n", " | \n", " | The subclass may define any number of simulator-specific parameters as part of its\n", " | init method.\n", " | \n", " | Finally, to enable constructing the simulator in command-line applications, a\n", " | :meth:`from_yaml` method is provided. This will load a YAML file's contents as a\n", " | dictionary, and then instantiate the subclass with the parameters in that dict.\n", " | To enable some control over this process, the subclass can overwrite the\n", " | :meth:`_from_yaml_dict` private method, which takes in the dictionary read from the\n", " | YAML file, and transforms any necessary parameters before constructing the class.\n", " | For example, if the class required a set of data from a file, the YAML might contain\n", " | the filename itself, and in :meth:`_from_yaml_dict`, the file would be read and the\n", " | data itself passed to the constructor.\n", " | \n", " | Methods defined here:\n", " | \n", " | compress_data_model(self, data_model)\n", " | Temporarily delete/remove data from the model to reduce memory usage.\n", " | \n", " | Anything that is removed here should be restored after the simulation.\n", " | \n", " | estimate_memory(self, data_model: 'ModelData') -> 'float'\n", " | Estimate the memory usage of the simulator in GB.\n", " | \n", " | This is used to estimate the amount of memory needed to run the simulator.\n", " | \n", " | .. note:: the default method is very much a lower bound -- just the size of the\n", " | output visibilities. Each individual simulator may or may not implement a\n", " | more accurate estimate.\n", " | \n", " | restore_data_model(self, data_model)\n", " | Restore data from the model removed by :func:`compress_data_model`.\n", " | \n", " | simulate(self, data_model: 'ModelData') -> 'np.ndarray'\n", " | Simulate the visibilities.\n", " | \n", " | validate(self, data_model: 'ModelData')\n", " | Check that the data model complies with the assumptions of the simulator.\n", " | \n", " | ----------------------------------------------------------------------\n", " | Class methods defined here:\n", " | \n", " | from_yaml(yaml_config: 'dict | str | Path') -> 'VisibilitySimulator'\n", " | Generate the simulator from a YAML file or dictionary.\n", " | \n", " | ----------------------------------------------------------------------\n", " | Data descriptors defined here:\n", " | \n", " | __dict__\n", " | dictionary for instance variables\n", " | \n", " | __weakref__\n", " | list of weak references to the object\n", " | \n", " | ----------------------------------------------------------------------\n", " | Data and other attributes defined here:\n", " | \n", " | __abstractmethods__ = frozenset({'simulate'})\n", " | \n", " | diffuse_ability = False\n", " | \n", " | point_source_ability = True\n", "\n" ] } ], "source": [ "from hera_sim.visibilities import VisibilitySimulator\n", "\n", "# You may also try VisibilitySimulator?? which will likely open another window\n", "help(VisibilitySimulator)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A custom simulator can be made by subclassing the `VisibilitySimulator` class and overriding the `simulate` method, which must take a `ModelData` object as an input and must return a Numpy array with the same shap as `UVData.data_array`. The `validate` method *may* be overriden, and `point_source_ability` and `diffuse_ability`atrributes may be set, as neccessary.\n", "\n", "Let's take a look at the codes of the `UVSim` class that wraps the pyuvsim simulator as an example. It defines a `simulate` method that calls `pyuvsim.uvsim.run_uvdata_uvsim`, passing in a UVData object from the ModelData input, and returning the `data_array` from the UVData output." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Help on class UVSim in module hera_sim.visibilities.pyuvsim_wrapper:\n", "\n", "class UVSim(hera_sim.visibilities.simulators.VisibilitySimulator)\n", " | UVSim(quiet: bool = True)\n", " | \n", " | A wrapper around the pyuvsim simulator.\n", " | \n", " | Parameters\n", " | ----------\n", " | quiet\n", " | If True, don't print anything.\n", " | \n", " | Method resolution order:\n", " | UVSim\n", " | hera_sim.visibilities.simulators.VisibilitySimulator\n", " | builtins.object\n", " | \n", " | Methods defined here:\n", " | \n", " | __init__(self, quiet: bool = True)\n", " | Initialize self. See help(type(self)) for accurate signature.\n", " | \n", " | simulate(self, data_model: hera_sim.visibilities.simulators.ModelData)\n", " | Simulate the visibilities.\n", " | \n", " | ----------------------------------------------------------------------\n", " | Data and other attributes defined here:\n", " | \n", " | __abstractmethods__ = frozenset()\n", " | \n", " | ----------------------------------------------------------------------\n", " | Methods inherited from hera_sim.visibilities.simulators.VisibilitySimulator:\n", " | \n", " | compress_data_model(self, data_model)\n", " | Temporarily delete/remove data from the model to reduce memory usage.\n", " | \n", " | Anything that is removed here should be restored after the simulation.\n", " | \n", " | estimate_memory(self, data_model: 'ModelData') -> 'float'\n", " | Estimate the memory usage of the simulator in GB.\n", " | \n", " | This is used to estimate the amount of memory needed to run the simulator.\n", " | \n", " | .. note:: the default method is very much a lower bound -- just the size of the\n", " | output visibilities. Each individual simulator may or may not implement a\n", " | more accurate estimate.\n", " | \n", " | restore_data_model(self, data_model)\n", " | Restore data from the model removed by :func:`compress_data_model`.\n", " | \n", " | validate(self, data_model: 'ModelData')\n", " | Check that the data model complies with the assumptions of the simulator.\n", " | \n", " | ----------------------------------------------------------------------\n", " | Class methods inherited from hera_sim.visibilities.simulators.VisibilitySimulator:\n", " | \n", " | from_yaml(yaml_config: 'dict | str | Path') -> 'VisibilitySimulator'\n", " | Generate the simulator from a YAML file or dictionary.\n", " | \n", " | ----------------------------------------------------------------------\n", " | Data descriptors inherited from hera_sim.visibilities.simulators.VisibilitySimulator:\n", " | \n", " | __dict__\n", " | dictionary for instance variables\n", " | \n", " | __weakref__\n", " | list of weak references to the object\n", " | \n", " | ----------------------------------------------------------------------\n", " | Data and other attributes inherited from hera_sim.visibilities.simulators.VisibilitySimulator:\n", " | \n", " | diffuse_ability = False\n", " | \n", " | point_source_ability = True\n", "\n" ] } ], "source": [ "from hera_sim.visibilities import UVSim\n", "\n", "help(UVSim)" ] } ], "metadata": { "celltoolbar": "Initialization Cell", "kernelspec": { "display_name": ".venv", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.10" }, "latex_envs": { "LaTeX_envs_menu_present": true, "autoclose": true, "autocomplete": true, "bibliofile": "biblio.bib", "cite_by": "apalike", "current_citInitial": 1, "eqLabelWithNumbers": true, "eqNumInitial": 1, "hotkeys": { "equation": "Ctrl-E", "itemize": "Ctrl-I" }, "labels_anchors": false, "latex_user_defs": false, "report_style_numbering": false, "user_envs_cfg": false }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": true }, "toc-autonumbering": false, "toc-showcode": false, "toc-showmarkdowntxt": false }, "nbformat": 4, "nbformat_minor": 4 }