All Projects â†’ bwinkel â†’ pycraf

bwinkel / pycraf

Licence: other
pycraf is a package that provides functions and procedures for various tasks in spectrum-management compatibility studies.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to pycraf

Virgo
📡 Virgo: A Versatile Spectrometer for Radio Astronomy
Stars: ✭ 85 (+286.36%)
Mutual labels:  radio, radio-astronomy
radiobar
macOS menubar app to listen to streaming radio
Stars: ✭ 53 (+140.91%)
Mutual labels:  radio
Online-Radio
Online Tamil Radio channels. Inspired by http://radio.garden
Stars: ✭ 15 (-31.82%)
Mutual labels:  radio
TaraniTunes
Awesome music player for FrSky Taranis radios
Stars: ✭ 21 (-4.55%)
Mutual labels:  radio
pyuvdata
A pythonic interface for radio astronomy interferometry data (uvfits, miriad, others)
Stars: ✭ 62 (+181.82%)
Mutual labels:  radio-astronomy
micropython-TEA5767
MicroPython driver for TEA5767 FM radio module on ESP8266/ESP32/Pico
Stars: ✭ 24 (+9.09%)
Mutual labels:  radio
sx1278
sx1278 LoRa driver for Stm32 HAL
Stars: ✭ 27 (+22.73%)
Mutual labels:  radio
fridgefm-radio-core
Simple lightweight package for creating your own radio station via NodeJS heavily inspired by Shoutcast and Icecast.
Stars: ✭ 32 (+45.45%)
Mutual labels:  radio
SDR Matlab OFDM 802.11n
📡 Using Software Designed Radio to transmit MIMO-OFDM QPSK signals at 5 GHz
Stars: ✭ 44 (+100%)
Mutual labels:  radio
hicetnunc-radio
Radio player for audio tracks in a tezos wallet.
Stars: ✭ 23 (+4.55%)
Mutual labels:  radio
nts
NTS Radio downloader and metadata parser
Stars: ✭ 58 (+163.64%)
Mutual labels:  radio
custer
macOS streaming radio in your menu bar
Stars: ✭ 17 (-22.73%)
Mutual labels:  radio
RF-List
RFSec tools
Stars: ✭ 98 (+345.45%)
Mutual labels:  radio
rtlsdr-wsprd
WSPR daemon for RTL receivers
Stars: ✭ 93 (+322.73%)
Mutual labels:  radio
quince
a 2.4 GHz SDR neighbor using 1 bit ADC
Stars: ✭ 24 (+9.09%)
Mutual labels:  radio
node-nrf24
nRF24 (nrf24l01/nrfl24l01+) radios in the nodejs way
Stars: ✭ 37 (+68.18%)
Mutual labels:  radio
newsched
The GNU Radio 4.0 Runtime Proof Of Concept
Stars: ✭ 19 (-13.64%)
Mutual labels:  radio
SourceRadio
Stream music from YouTube while playing games on Steam
Stars: ✭ 10 (-54.55%)
Mutual labels:  radio
PythonAudioEffects
A Python library that can apply: darth vader, echo, radio, robotic, and ghost effects to audio samples.
Stars: ✭ 26 (+18.18%)
Mutual labels:  radio
radiobot
Your hobbyist radio station solution.
Stars: ✭ 17 (-22.73%)
Mutual labels:  radio

pycraf

  • Version: 2.0.0
  • Authors: Benjamin Winkel, Marta Bautista, Federico Di Vruno, Gyula I. G. Józsa
  • User manual: stable | developer
PyPI tag License Zenodo DOI

The pycraf Python package provides functions and procedures for various tasks in spectrum-management compatibility studies. A typical example would be to calculate the interference levels at a radio telescope produced from a radio broadcasting tower.

Releases are registered on PyPI, and development is occurring at the project's github page.

Project Status

Pycrafs's CI Status on Azure Pipelines

Features

  • Full implementation of ITU-R Rec. P.452-16 that allows to calculate path attenuation for the distance between interferer and victim service. Supports to load NASA's Shuttle Radar Topography Mission (SRTM) data for height-profile generation.
  • Full implementation of ITU-R Rec. P.676-10, which provides two atmospheric models to calculate the attenuation for paths through Earth's atmosphere.
  • Provides various antenna patterns necessary for compatibility studies (e.g., RAS, IMT, fixed-service links).
  • Functions to convert power flux densities, field strengths, transmitted and received powers at certain distances and frequencies into each other.

Usage

Examples and Documentation

We provide an online documentation and API reference. Furthermore, you can find tutorials and HowTos in the notebooks directory on the pycraf repository.

Testing

After installation (see below) you can test, if everything works as intended:

import pycraf

pycraf.test()

By default, the test function will skip over tests that require data from the internet. One can include them by:

pycraf.test(remote_data='any')

This will always download SRTM data (few tiles only) to test the auto-download functionality! Do this only, if you can afford the network traffic.

License

Several licenses apply; see the license directory in the repository. The pycraf Python package itself is published under GPL v3, an open-source license.

For some of the functionality provided in pycraf, data files provided by the ITU are necessary. For example, the atmospheric model in the pycraf.atm subpackage implements the algorithm described in ITU-R Recommendation P.676. Annex 1 of this Recommendation makes use of spectroscopic information of the oxygen and water vapour lines given in Tables 1 and 2 of P.676. Another example are the radiometeorological data files that are distributed alongside ITU-R Rec. P.452-16

ITU kindly gave us permission to include data files into pycraf that are distributed with the Recommendations on the ITU servers. This makes it possible to just use pycraf without the need to manually download necessary data files. However, these data files are not free for commercial use. For details, please see the LICENSE.ITU file.

Some of the examples/images in the pycraf documentation and tutorial notebooks make use of Copernicus data. For these, the conditions in COPERNICUS.EU apply.

Since pycraf uses the Astropy Package Template for packaging, we also refer to the associated license.

Installation

We strongly recommend to use the Anaconda Python distribution, as it allows to download pycraf binaries for all major platforms (Linux, OSX, Windows). After installing Anaconda/Miniconda, one can use the conda package manager to install it:

conda install pycraf -c conda-forge

Of course, it is always a good idea to do this in its own environment, such that you don't mess up with your standard environment, e.g.:

conda create -n pycraf-env python=3.9 pycraf

If you don't like Anaconda, the easiest way to install pycraf is via pip:

pip install pycraf

The installation is also possible from source. Download the tar.gz-file, extract (or clone from GitHub) and simply execute:

python -m pip install .

Dependencies

We kept the dependencies as minimal as possible. The following packages are required:

  • Python 3.8 or later
  • setuptools
  • cython 0.29 or later
  • numpy 1.18 or later
  • astropy 4.0 or later
  • scipy 1.7 or later
  • pytest 5.4 or later
  • pytest-remotedata 0.3.3 or later

The following packages are optional, and you will need them for certain features and to build the docs:

  • h5py 3.3 or later; for caching
  • matplotlib 3.4 or later; for some plot helpers
  • pyproj 2.6 or later; for the geospatial subpackage
  • sgp4 2.0 or later; for the satellite subpackage
  • rasterio 1.2 or later; for the satellite subpackage

For further details, we refer to the online documention installation instructions. It also includes some hints for running pycraf on Windows or MacOS. Older versions of the packages may work, but no support will be provided.

SRTM data

To make full use of the path attenuation calculations provided by pycraf (implements ITU-R Rec. P.452), we recommend to use NASA's Shuttle Radar Topography Mission (SRTM) data for height-profile generation. pycraf can work with so-called .hgt files, a very simple binary format. Each .hgt file, a so-called tile, just contains 1201x1201 16-bit integers. From the file naming scheme, one can infer the associated coordinates. Most tiles contain one square-degree.

Unfortunately, we cannot provide SRTM data as part of the package, due to the large file sizes and legal reasons. But once you downloaded the necessary tiles (all or only a subset appropriate for your region), simply define the environment variable SRTMDATA, let it point to the folder containing the tiles, and pycraf will find the files when it is imported from Python.

On windows:

set SRTMDATA=C:\[path-to-srtm]\

On Linux/MacOS (sh-like):

export SRTMDATA=[path-to-srtm]/

There is also the possibility to change the path to the SRTM directory during run-time (see documentation).

Acknowledgments

We are very grateful for the kind support from ITU study groups and ITU's legal department.

This code is makes use of the excellent work provided by the Astropy community. pycraf uses the Astropy package and also the Astropy Package Template for the packaging.

Who do I talk to?

If you encounter any problems or have questions, do not hesitate to raise an issue or make a pull request. Moreover, you can contact the devs directly:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].