Skip to main content
Python Software Foundation 20th Year Anniversary Fundraiser  Donate today!

Python extension of NRAO's VLBI scheduling program SCHED (see

Project description


pySCHED is a program for planning and scheduling very long baseline interferometry (VLBI) observations conducted by different networks such as the European VLBI Network (EVN), the Very Long Baseline Array (VLBA), the High Sensitivity Array (HSA), the Global VLBI, the Australian Long Baseline Array (LBA), or the Korean VLBI Network (KVN). pySCHED produces the standard files that need to be distributed to the different telescopes and correlators for VLBI observations and operations.

pySCHED is built upon the NRAO SCHED program developed by Craig Walker at NRAO, and adds unique features:

  • Central catalog management on GitHub. The version controlled catalogs provide full access to the change history of each catalog file. By default, at startup, pySCHED always updates the catalogs; using old/outdated catalogs is no cause for errors anymore. We note that the feature can be switched off if needed (e.g. for multi-epoch observations).
  • Full DBBC2 scheduling support, essential for EVN observations.
  • Since v1.8.1 pySCHED checks for updates upon startup, informing the user of a new(er) version being available.
  • The KEYIN file can be a template schedule with executable Python-code in it. This could simplify scheduling standard observations.
  • Can generate VEX1 as well as VEX2 output.
  • Plotting is now done through Python's matplotlib library, making it easier to control/enhance and/or implement different plots.

Getting started

To learn how to write a scheduling file (.key) that can be used to generate the observing files (.vex file) with pySCHED, you can follow the User Guide at the EVN Scheduling Page. This documentaion is focused on observations with the European VLBI Network (EVN). For a more extended documentation on how to write the scheduling files, please take a look at the general NRAO SCHED User Manual.

Once the .key file is prepared, pySCHED can generate the scheduling files. The basic operations can be conducted by running: [-p] -k {keyfile}

where the optional parameter -p retrieves the graphical mode in order to be able to make plots about the observation.



  • Python (>= 3.6).
  • NumPy (>= 1.16).
  • Git.


sudo pip3 install numpy
sudo pip3 install pythonSCHED

pip3 is included in most python3 installations, otherwise it can be installed with:

sudo apt-get install python3-pip


Alternatively, if you use conda, this YAML file is a conda environment which includes both NumPy and pySCHED. To use it:

conda env create -f pySCHED.yaml  
conda activate pySCHED


The command to update pySCHED is:

sudo pip3 install --upgrade pythonSCHED

Or when using a conda installation:

conda activate pySCHED
pip install --upgrade pythonSCHED


After executing either the pip or conda installation method, the executable should be available in your $PATH.

One of the features of pySCHED is that the catalog files will be downloaded/updated on start-up of This allows for the catalog files to be updated separate from the pySCHED release cycle. The files will be installed in ~/.pysched. $SCHED will be set to this directory in pySCHED if not otherwise specified. The process of downloading and updating requires the version control software git to be installed and available in the $PATH. On most GNU/Linux systems, git will be available. If it is not, it can be installed with:

sudo apt-get install git

Using pySCHED within a SCHED environment

The aforementioned usage can potentially generate some issues when pySCHED runs in an environment where the variable $SCHED is set for the NRAO SCHED program. If $SCHED is indeed set to the path that points to the NRAO SCHED directory, then pySCHED will read the catalogs under that directory. In this case, pySCHED will not use the most up-to-date catalogs and may fail to schedule experiments requiring the latest updates.

We therefore recommend to unset this variable before running pySCHED (which would then use the default ~/.pysched directory) or to be sure the catalogs under the $SCHED directory are proficient to schedule your experiment.

Release history

  • v1.2.0 (2019-09-27): Merge with SCHED release 11.5.
  • v1.2.1 (2019-10-18): Bug fixes for readline and matplotlib version.
  • v1.3.0 (2019-11-19): Added SCANEXPS keyword to signal intent in VEX2 files. To make that work, Fortran function leading to calls of SCNDUP are translated to Python.
  • v1.4.0 (2019-12-13): Added 'eMERL' value to DAR keyword, to enable eMERLIN out-station automatic IF and BBC assignment.
  • v1.5.0 (2020-02-25): Improved error/warning messages.
  • v1.5.1 (2020-03-24): Updated the error message for a missing '/'.
  • v1.5.2 (2020-03-26): Update version restriction to PyQt version.
  • v1.5.3 (2020-04-02): Handle changes made in matplotlib version 3.2.
  • v1.6.0 (2020-05-12): Catalog updates for May/June session and plot improvements.
  • v1.7.0 (2020-05-18): Include pySCHED version in command line and interactive help text.
  • v1.8.0 (2020-05-19): Do a version check on start-up.
  • v1.8.1 (2020-05-20): Include in distribution, it is required for installation.
  • v1.8.2 (2020-05-27): Fixed update catalog writing to an unopened log file.
  • v1.9.0 (2020-06-09): Overhaul of the README.
  • v1.10.0 (2020-06-22): SCHED 11.6 merged into pySCHED.
  • v1.11.0 (2020-07-11): Add warning message on empty KEYIN input record.
  • v1.12.0 (2020-07-21): Runtime improved by about 30%.
  • v1.12.1 (2020-09-10): Bug fix, continuous recording warning would trigger too often.
  • v1.13.0 (2020-10-05): Allow double bandwidth for eMERLIN if 1 bits sampling is used.
  • v1.13.1 (2020-10-07): Bug(s) in exit.c function triggered compiler error. Turned out to be unused code, so removed from compilation list.
  • v1.13.2 (2020-10-14): Update code to support matplotlib version 3.3.
  • v1.14.0 (2020-10-23): Updated legend layout of uptime plot and added a help button in the plot toolbar.
  • v1.14.1 (2020-11-05): pySCHED uses string formatting introduced in python version 3.6. Make this requirement explicit.
  • v1.14.2 (2020-11-06): Fortran index was used to index Python array, causing an error when 16 BBCs were used.
  • v1.15.0 (2020-11-23): Cleared up confusion about the starting day of time based plots.
  • v1.16.0 (2021-01-12): Now compatible with matplotlib 3.3.3 and advertised the GitHub page in the start-up message.
  • v1.16.1 (2021-01-21): Bug fix for XY plots.
  • v1.17.0 (2021-03-29): Fix deprecations warned for by matplotlib 3.4.


pySCHED is maintained at the Joint Institute for VLBI ERIC (JIVE). You can reach the maintainers at


This project has received funding from the European Union’s Horizon 2020 research and innovation programme under grant agreement No 730884.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for pythonSCHED, version 1.17.0
Filename, size File type Python version Upload date Hashes
Filename, size pythonSCHED-1.17.0.tar.gz (2.9 MB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page