Code Monkey home page Code Monkey logo

pyoof's Introduction

pyoof

PyPI tag License Publication

pyoof is a Python package that contains all needed tools to perform out-of-focus (OOF) holography on astronomical beam maps for single-dish radio telescopes. It is based on the original OOF holography papers,

and software developed by Bojan Nikolic.

In brief, the pyoof package calculates the aperture phase distribution map from a set of beam maps (telescope observations), at a relatively good signal-to-noise as described by B. Nikolic. By using a nonlinear least squares minimization a convenient set of polynomials can be used to reconstruct the aperture distribution. The representation can also be used to compute the aperture phase distribution or simply phase-error, which contains vital information related to the aberrations in the telescope primary dish surface. Knowing the dish aberrations means that they can be potentially corrected, hence improve the telescope sensitivity [K/Jy].

We are currently testing the pyoof package at the Effelsberg radio telescope ๐Ÿ“ก.

Project Status

Pyoof's Travis CI Status Pyoof's Coveralls Status Documentation Status

pyoof is still in the early-development stage. While much of the functionality is already working as intended, the API is not yet stable. Nevertheless, we kindly invite you to use and test the library and we are grateful for feedback.

Installation

Note: Currently the package installation is not working without a prior installation of the miniconda distribution (or anaconda distribution). In the mean time please install miniconda and follow the instructions below.

The easiest and more convenient way to install the pyoof package is via pip

pip install pyoof

The installation is also possible from the source. Clone the GitHub repository and execute!

python setup.py install

From the source you can install developer versions, be aware of that. For further installation details and troubleshooting visit the documentation Installation. I believe in the future ๐Ÿ˜„, so please install Python 3. Unfortunately, a windows version of the package is currently not available.

Dependencies

So far the pyoof package uses the common Python packages, it is recommended to install the anaconda distribution first, although using pip is also fine.

pyoof has the following strict requirements:

For future versions dependencies will be reduced.

Usage

To use the pyoof package is straight forward. First define your observational data in the established FITS file format and then execute!

import pyoof
from astropy import units as u

# Extracting observation data and important information
oofh_data = 'path/to/file.fits'  # FITS file with special format
data_info, data_obs = pyoof.extract_data_pyoof(oofh_data)

# Effelsberg telescope definition
effelsberg_telescope = [
    pyoof.telgeometry.block_effelsberg,  # blockage distribution
    pyoof.telgeometry.opd_effelsberg,    # OPD function
    50. * u.m,                           # primary reflector radius
    'effelsberg'                         # telescope name
    ]

pyoof.fit_zpoly(
    data_info=data_info,                       # information
    data_obs=data_obs,                         # observed beam
    order_max=5,                               # computes up to order_max
    illum_func=pyoof.aperture.illum_pedestal,  # or illum_gauss
    telescope=effelsberg_telescope,            # telescope properties
    resolution=2 ** 8,                         # standard is 2 ** 8
    box_factor=5,                              # box_size = 5 * pr, pixel resolution
    )

For the impatient ๐Ÿ˜ฏ , see the Jupyter notebook example, oof_holography.ipynb.

License

pyoof is licensed under a 3-clause BSD style license - see the LICENSE file.

Improvements future versions

  • Include plot routines tests
  • Inlcude actuators module tests
  • Reduce the size of the test files
  • Integrate Astropy units โœ…
  • Include automatic setup for the FFT resolution pyoof.fit_zpoly(resolution)
  • Add actuator correction (sub-package) and its translation from phase-error (specific for Effelsberg) โœ…
  • Add option for 2 or more beam maps (option for multiple d_z)

Contact

If you have any questions about the code or theory sections, do not hesitate and raise an issue. You can also send me an email directly:

  • tcassanelli at protonmail.com

Preferred citation method

To cite the code used in pyoof as well as the method please see Acknowledgments and references.

Please cite the paper Out-of-focus at the Effelsberg telescope (submitted to A&A) if you used the method and code:

@ARTICLE{2021arXiv210900006C,
       author = {{Cassanelli}, T. and {Bach}, U. and {Winkel}, B. and {Kraus}, A.},
        title = "{Out-of-focus holography at the Effelsberg telescope}",
      journal = {arXiv e-prints},
     keywords = {Astrophysics - Instrumentation and Methods for Astrophysics, Physics - Optics},
         year = 2021,
        month = aug,
          eid = {arXiv:2109.00006},
        pages = {arXiv:2109.00006},
archivePrefix = {arXiv},
       eprint = {2109.00006},
 primaryClass = {astro-ph.IM},
       adsurl = {https://ui.adsabs.harvard.edu/abs/2021arXiv210900006C},
      adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}

pyoof's People

Contributors

bwinkel avatar tcassanelli avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

pyoof's Issues

Multifrequency fit

Include multifrequency fit within the Zernike polynomials definition.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.