Pipeline overview

The pipeline runs DSPSR to dedisperse LOFAR raw pulsar beamformed complex-voltage (XXYY) 32-bit or 8-bit HDF5 data and also beamformed Stokes I data, and fold it modulo pulsar period. DSPSR software package was developed by Willem van Straten (van Straten and Bailes, 2011).

The pipeline performs the following operations in order:

  • dedispersing and folding the data modulo pulsar period using dspsr from DSPSR software package;

  • combining output archive files .ar from different frequency parts together using psradd from PSRCHIVE software package;

  • running RFI removal using paz -r from PSRCHIVE (optional);

  • running RFI removal using clfd from CLFD (optional);

  • creating diagnostic plots for data cleaned both with paz and clfd or non-RFI-flagged data if RFI removal was skipped;

  • running pdmp from PSRCHIVE to optimise pulsar period and dispersion measure (optional);

  • running pam from PSRCHIVE to update data cube with new pulsar period and dispersion measure from pdmp (optional);

  • creating new diagnostic plots for data updated with new pulsar period and dispersion measure (optional);

  • creating 1-page quickview diagnostic plot;

  • creating multi-page diagnostic summary pdf that combines all created diagnostic plots.

Input parameters

  • sasid: identifier of the SAS process (SASId) that called the pipeline. The SASId is used to name the output .h5 and .raw HDF5 BF files, and replaces the Observation ID (ObsId) in their names. If not provided (e.g. when run locally and not being called by TMSS), then original ObsId’s will be re-used in the output filenames.

  • h5in: input HDF5 LOFAR BF .h5 files. Each of these files should have the corresponding .raw file in the same directory. The workflow will then do the conversion on these .raw files and update the metadata in the .h5 files.

  • nthreads: use this number of CPU cores (integer) by DSPSR. Corresponds to -t option in dspsr. Default is 8.

  • maxram: upper limix on RAM usage by DSPSR. It is either the floating-point value in MB, or a multiple of the minimum possible block size specified as minXn, where n is the integer multiplier. Corresponds to -U option in dspsr. When specified in TMSS, this integer multiplier can only be 0 < n < 10. If value of n >= 10 is given, it is considered to be a value in MB. This parameter is optional.

  • use_pdmp: to run pdmp from the PSRCHIVE software package on the output full-band .ar file to search for the optimal pulsar period (P0) and dispersion measure (DM). Default is true.

  • use_paz: to run paz -r on the output full-band .ar file from psradd and zap RFI using median smoothed difference. The paz and psradd are programs from PSRCHIVE. Default is true.

  • use_clfd: to run clfd --no-report on the output full-band .ar file from psradd and remove RFI. The clfd tool is from the CLFD project. Default is true.

  • nozap: to skip RFI zapping by any program, i.e. if nozap is true neither paz nor clfd will run even if use_paz or use_clfd are true. Default is false.

  • obsdur: to process only this amount of seconds (integer) by DSPSR. Corresponds to -T option in dspsr. This parameter is optional and by default whole observation will be processed.

  • skip_from_start: to skip this amount of seconds (integer) from the start of observation to process by DSPSR. Corresponds to -S option in dspsr. This parameter is optional.

  • tsubint: the length (in seconds) of sub-integrations in the output .ar file from DSPSR. Corresponds to -L option in dspsr. Default is 10.

  • sp_subint: to create single-pulse sub-integrations in dspsr when set to true. Corresponds to -s option in dspsr. Default is false. If true the single-pulse sub-integrations will be created regardless of the value in tsubint parameter. Usage of this parameter usually also requires true for the remove_dm_delays parameter (below).

  • remove_dm_delays: to remove inter-channel dispersion delays in the data cube(s) in dspsr when set to true. Corresponds to -K option in dspsr. Default is false. Usually is used together with sp_subint parameter.

  • nbins: number of bins (integer) in the pulsar profile of the output .ar files. Corresponds to -b option in dspsr. Default is 1024.

  • extra_channels_factor: in dspsr create the filterbank with that many channels per subband. Corresponds to -F option in dspsr. Coherent dedispersion will also be performed during the filterbank operation (:D flag for the -F option in dspsr). For example, if there are 20 subbands in the input file and extra_channels_factor is 6, then 120-channel filterbank will be created using the -F 120:D option in dspsr. Without this parameter the number of channels in the output .ar file is the same as number of subbands in the input .h5 file.

  • parfile: pulsar ephemeris file to fold the data. Corresponds to -E option in dspsr. The example of how the value for this parameter should be specified is given below. This is one of the three ways to specify the ephemeris file in the workflow. Two other ways are using either parfile_string or get_parfile_from_psrcat parameters (below). If neither parfile nor parfile_string are specified and get_parfile_from_psrcat is false, then pipeline will fail. For more detail, see Parfile section below.

  • parfile_string: similar to parfile but the content of the actual pulsar ephemeris file is given as string value in this parameter. This is the way how the pulsar ephemeris need to be specified in TMSS. For more detail, see Parfile section below.

  • get_parfile_from_psrcat: boolean parameter to indicate whether parfile should be taken from the ATNF Pulsar Catalogue PSRCAT. If true the parfile will be created with psrcat -e <PSRNAME> command, where <PSRNAME> is the pulsar name from the metadata of the input .h5 file. However, both parfile and parfile_string parameters take precedence over this flag if they are given and are non-empty or non-null. Default is false. For more detail, see Parfile section below.

Output

The pipeline produces the following output in the directory specified by --outdir of cwltool or toil:

  • h5/: the directory with original .h5 input files from an observation;

  • cobalt/: the directory with the parset(s) of an observation and Cobalt log-file;

  • input parfile .par, or parfile created by PSRCAT (depending on the input parameters);

  • dedispersed folded data cube .ar from all frequency parts added together;

  • RFI-zapped data cube(s), .paz.ar and/or .clfd.ar (optional);

  • output files from pdmp for the optimization of P0 and DM (optional):

    • pdmp_snr.dat

    • pdmp.psn

    • pdmp.per

    • .pdmp.ps (diagnostic plot from pdmp) - part of the multi-page diagnostic summary pdf;

  • data cube .pdmp.ar with improved P0 and DM (optional);

  • A4-page quickview diagnostic plot, .quickview.png (see examples below);

  • multi-page diagnostic summary .summary.pdf which includes:

    • quickview diagnositc plot;

    • diagnostic plot and noise/signal statistics output from snr.py;

    • summary diagnostic plots (profile, phase-freq, phase-time, dynspec) for RFI-zapped data cube from paz -r (optional);

    • summary diagnostic plots (profile, phase-freq, phase-time, dynspec) for RFI-zapped data cube from clfd (optional);

    • summary diagnostic plots (profile, phase-freq, phase-time, dynspec) for non-RFI zapped data cube if RFI zapping was skipped (optional);

    • diagnostic plot from pdmp (optional);

    • summary diagnostic plots (profile, phase-freq, phase-time, dynspec) for RFI-zapped data cube from paz -r with improved P0 and DM after pdmp (optional);

  • pipeline.log: a concatenated log file capturing standard output and standard error for processing of all input .h5 files.

Configuring the pipeline

The parameters of the pipeline are provided as a JSON file. Here is the example of an input JSON file:

{
     "sasid": "1234567",
     "use_pdmp": true,
     "use_paz": true,
     "use_clfd": true,
     "nozap": false,
     "obsdur": 10,
     "skip_from_start": 100,
     "tsubint": 10,
     "sp_subint": true,
     "remove_dm_delays": true,
     "nbins": 128,
     "parfile": { "class": "File", "path": "/data/kondratiev/pulp2-data/folding/parfile/0329+54.par"},
     "get_parfile_from_psrcat": false,
     "extra_channels_factor": 4,
     "nthreads": 8,
     "maxram": "minX2",
     "h5in": [
         {
             "class": "File", "path": "/data/kondratiev/pulp2-data/folding/L2050196/cs/L2050196_SAP000_B000_S0_P000_bf.h5"
         },
         {
             "class": "File", "path": "/data/kondratiev/pulp2-data/folding/L2050196/cs/L2050196_SAP000_B000_S1_P000_bf.h5"
         },
         {
             "class": "File", "path": "/data/kondratiev/pulp2-data/folding/L2050196/cs/L2050196_SAP000_B000_S2_P000_bf.h5"
         },
         {
             "class": "File", "path": "/data/kondratiev/pulp2-data/folding/L2050196/cs/L2050196_SAP000_B000_S3_P000_bf.h5"
         },
         {
             "class": "File", "path": "/data/kondratiev/pulp2-data/folding/L2050196/cs/L2050196_SAP000_B000_S0_P001_bf.h5"
         },
         {
             "class": "File", "path": "/data/kondratiev/pulp2-data/folding/L2050196/cs/L2050196_SAP000_B000_S1_P001_bf.h5"
         },
         {
             "class": "File", "path": "/data/kondratiev/pulp2-data/folding/L2050196/cs/L2050196_SAP000_B000_S2_P001_bf.h5"
         },
         {
             "class": "File", "path": "/data/kondratiev/pulp2-data/folding/L2050196/cs/L2050196_SAP000_B000_S3_P001_bf.h5"
         }
     ]
 }

Not all of the parameters need to be provided, some of them are optional, and if they are not specified either their default value is used, or some of the step in the workflow is skipped. The sasid parameter can be also omitted in the local run, otherwise it will be provided by TMSS.

Few examples of input JSON files can also be found in the tests/ directory of the repository. Also, in the scripts/ directory of the repository one can find the script create-input-json-pulp2-folding.sh that can be used to generate template JSON file for the input data of your choice. The script takes one input argument which is the directory where all the .h5 and .raw files are. There is also the optional second argument to perform an extra filtering on the input files. For example,

$ create-input-json-pulp2-folding.sh    /data/kondratiev/pulp2-data/folding/L2050196/cs

will generate the input JSON file similar to the one above based on the same data. To run the workflow only for the 0th frequency part _P000_, you can make use of the 2nd filtering argument like this:

$ create-input-json-pulp2-folding.sh    /data/kondratiev/pulp2-data/folding/L2050196/cs    _P000_

and then h5in parameter of the input JSON file will only have input .h5 files for frequency part _P000_. Please double-check the input JSON file to make sure that it has parameters and their values as you want before running the workflow.

Parfile

Parfile (pulsar ephemeris file) can be provided via one of the three possible ways:

  1. using parfile input parameter and providing the path on your local machine/cluster to the file, e.g. like this:

...
"parfile": { "class": "File", "path": "/data/kondratiev/pulp2-data/folding/parfile/0329+54.par"},
...
  1. using parfile_string input parameter with the content of the actual parfile. This is how the parfile needs to be provided within TMSS. When running workflow locally usage of parfile parameter is easier. If both parfile and parfile_string are given, then parfile specified by the parfile parameter will be used. Here is the example of usage the parfile_string parameter:

...
"parfile_string": "PSRJ            J0332+5434                       \nRAJ             03:32:59.4096                 1.000e-04       \nDECJ            +54:34:43.329                 1.000e-03       \nDM              26.76410                      1.000e-04       \nPEPOCH          46473.0                               \nF0              1.399541538720                6.000e-12       \nF1              -4.011970E-15                 1.400e-20       \nPMRA            16.97                         3.000e-02       \nPMDEC           -10.37                        5.000e-02       \nPOSEPOCH        56000.0                               \nF2              5.3E-28                       1.500e-28       \nRM              -64.33                        6.000e-02       \nPX              0.59                          2.000e-02       \nEPHVER          2                                     \nUNITS           TDB",
...

3. using get_parfile_from_psrcat input parameter with the value of true. This will enable extracting the parfile from the ATNF Pulsar Catalogue. The default value of this parameter is false, so if one wants to use it, then this parameter should be explicitely set to true. If this parameter is set to false and neither of parfile nor parfile_string are specified then pipeline will fail.

Examples of quickview diagnostic plot

quickview diagnostic plot for pulsar beamformed complex-voltage data

``quickview`` plot for XXYY data
  • Top-row (1st row):

    • Left: average pulse profile in total intensity (I, black), linear (L, red) and circular (V, blue) polarisation;

    • Right: information window about observing setup, observation, quality, others;

  • 2nd row:

    • Pulse-phase vs. frequency plot for all four Stokes parameters, IQUV (from left to right);

  • 3rd row:

    • Left: Pulse-phase vs. observing time plot;

    • Right: Average bandpass for both input polarisations;

  • 4th row:

    • Left: Time vs. frequency plot calculated on the ON-pulse window, i.e. pulsar dynamic spectrum;

    • Right: same for the OFF-pulse window.

quickview diagnostic plot for pulsar beamformed Stokes I data

``quickview`` plot for Stokes I data
  • Top-row (1st row):

    • Left: average pulse profile in total intensity (I, black);

    • Right: information window about observing setup, observation, quality, others;

  • 2nd row:

    • Left: Pulse-phase vs. frequency plot for total intensity (pulse spectrum);

    • Right: Data samples’ histogram together with the least-squared fit showing the mean and rms values;

  • 3rd row:

    • Left: Pulse-phase vs. observing time plot;

    • Right: Average bandpass for the total intensity data;

  • 4th row:

    • Left: Time vs. frequency plot calculated on the ON-pulse window, i.e. pulsar dynamic spectrum;

    • Right: same for the OFF-pulse window.

Workflow diagram

digraph G {
bgcolor="#eeeeee";
clusterrank=local;
labeljust=right;
labelloc=bottom;
"psradd" [fillcolor=lightgoldenrodyellow, label="psradd", shape=record, style=filled];
"clfd" [fillcolor=lightgoldenrodyellow, label="clfd", shape=record, style=filled];
"psradd" -> "clfd";
"paz_zap_every_nth_chan" [fillcolor=lightgoldenrodyellow, label="paz_zap_every_nth_chan", shape=record, style=filled];
"clfd" [fillcolor=lightgoldenrodyellow, label="clfd", shape=record, style=filled];
"paz_zap_every_nth_chan" -> "clfd";
"get_nchan_per_sub" [fillcolor=lightgoldenrodyellow, label="get_nchan_per_sub", shape=record, style=filled];
"clfd_diagplots" [fillcolor=lightgoldenrodyellow, label="clfd_diagplots", shape=record, style=filled];
"get_nchan_per_sub" -> "clfd_diagplots";
"clfd" [fillcolor=lightgoldenrodyellow, label="clfd", shape=record, style=filled];
"clfd_diagplots" [fillcolor=lightgoldenrodyellow, label="clfd_diagplots", shape=record, style=filled];
"clfd" -> "clfd_diagplots";
"determine_profile_plot_type" [fillcolor=lightgoldenrodyellow, label="determine_profile_plot_type", shape=record, style=filled];
"clfd_diagplots" [fillcolor=lightgoldenrodyellow, label="clfd_diagplots", shape=record, style=filled];
"determine_profile_plot_type" -> "clfd_diagplots";
"clfd" [fillcolor=lightgoldenrodyellow, label="clfd", shape=record, style=filled];
"clfd_rfi_fraction" [fillcolor=lightgoldenrodyellow, label="clfd_rfi_fraction", shape=record, style=filled];
"clfd" -> "clfd_rfi_fraction";
"paz_zap_every_nth_chan" [fillcolor=lightgoldenrodyellow, label="paz_zap_every_nth_chan", shape=record, style=filled];
"concat_logfiles" [fillcolor=lightgoldenrodyellow, label="concat_logfiles", shape=record, style=filled];
"paz_zap_every_nth_chan" -> "concat_logfiles";
"clfd_rfi_fraction" [fillcolor=lightgoldenrodyellow, label="clfd_rfi_fraction", shape=record, style=filled];
"concat_logfiles" [fillcolor=lightgoldenrodyellow, label="concat_logfiles", shape=record, style=filled];
"clfd_rfi_fraction" -> "concat_logfiles";
"paz_diagplots" [fillcolor=lightgoldenrodyellow, label="paz_diagplots", shape=record, style=filled];
"concat_logfiles" [fillcolor=lightgoldenrodyellow, label="concat_logfiles", shape=record, style=filled];
"paz_diagplots" -> "concat_logfiles";
"get_new_p0_dm" [fillcolor=lightgoldenrodyellow, label="get_new_p0_dm", shape=record, style=filled];
"concat_logfiles" [fillcolor=lightgoldenrodyellow, label="concat_logfiles", shape=record, style=filled];
"get_new_p0_dm" -> "concat_logfiles";
"snrpy" [fillcolor=lightgoldenrodyellow, label="snrpy", shape=record, style=filled];
"concat_logfiles" [fillcolor=lightgoldenrodyellow, label="concat_logfiles", shape=record, style=filled];
"snrpy" -> "concat_logfiles";
"rename_arfile" [fillcolor=lightgoldenrodyellow, label="rename_arfile", shape=record, style=filled];
"concat_logfiles" [fillcolor=lightgoldenrodyellow, label="concat_logfiles", shape=record, style=filled];
"rename_arfile" -> "concat_logfiles";
"nsubs_in_file" [fillcolor=lightgoldenrodyellow, label="nsubs_in_file", shape=record, style=filled];
"concat_logfiles" [fillcolor=lightgoldenrodyellow, label="concat_logfiles", shape=record, style=filled];
"nsubs_in_file" -> "concat_logfiles";
"copy_cobalt_files" [fillcolor=lightgoldenrodyellow, label="copy_cobalt_files", shape=record, style=filled];
"concat_logfiles" [fillcolor=lightgoldenrodyellow, label="concat_logfiles", shape=record, style=filled];
"copy_cobalt_files" -> "concat_logfiles";
"pam_pdmp" [fillcolor=lightgoldenrodyellow, label="pam_pdmp", shape=record, style=filled];
"concat_logfiles" [fillcolor=lightgoldenrodyellow, label="concat_logfiles", shape=record, style=filled];
"pam_pdmp" -> "concat_logfiles";
"psradd" [fillcolor=lightgoldenrodyellow, label="psradd", shape=record, style=filled];
"concat_logfiles" [fillcolor=lightgoldenrodyellow, label="concat_logfiles", shape=record, style=filled];
"psradd" -> "concat_logfiles";
"mjd" [fillcolor=lightgoldenrodyellow, label="mjd", shape=record, style=filled];
"concat_logfiles" [fillcolor=lightgoldenrodyellow, label="concat_logfiles", shape=record, style=filled];
"mjd" -> "concat_logfiles";
"keep_h5" [fillcolor=lightgoldenrodyellow, label="keep_h5", shape=record, style=filled];
"concat_logfiles" [fillcolor=lightgoldenrodyellow, label="concat_logfiles", shape=record, style=filled];
"keep_h5" -> "concat_logfiles";
"is_dtype_complex_voltage" [fillcolor=lightgoldenrodyellow, label="is_dtype_complex_voltage", shape=record, style=filled];
"concat_logfiles" [fillcolor=lightgoldenrodyellow, label="concat_logfiles", shape=record, style=filled];
"is_dtype_complex_voltage" -> "concat_logfiles";
"make_combined_summary_pdf" [fillcolor=lightgoldenrodyellow, label="make_combined_summary_pdf", shape=record, style=filled];
"concat_logfiles" [fillcolor=lightgoldenrodyellow, label="concat_logfiles", shape=record, style=filled];
"make_combined_summary_pdf" -> "concat_logfiles";
"get_obs_nsubs" [fillcolor=lightgoldenrodyellow, label="get_obs_nsubs", shape=record, style=filled];
"concat_logfiles" [fillcolor=lightgoldenrodyellow, label="concat_logfiles", shape=record, style=filled];
"get_obs_nsubs" -> "concat_logfiles";
"get_nchan_nbins" [fillcolor=lightgoldenrodyellow, label="get_nchan_nbins", shape=record, style=filled];
"concat_logfiles" [fillcolor=lightgoldenrodyellow, label="concat_logfiles", shape=record, style=filled];
"get_nchan_nbins" -> "concat_logfiles";
"clfd" [fillcolor=lightgoldenrodyellow, label="clfd", shape=record, style=filled];
"concat_logfiles" [fillcolor=lightgoldenrodyellow, label="concat_logfiles", shape=record, style=filled];
"clfd" -> "concat_logfiles";
"copy_parfile" [fillcolor=lightgoldenrodyellow, label="copy_parfile", shape=record, style=filled];
"concat_logfiles" [fillcolor=lightgoldenrodyellow, label="concat_logfiles", shape=record, style=filled];
"copy_parfile" -> "concat_logfiles";
"create_sequence_of_chans_to_zap" [fillcolor=lightgoldenrodyellow, label="create_sequence_of_chans_to_zap", shape=record, style=filled];
"concat_logfiles" [fillcolor=lightgoldenrodyellow, label="concat_logfiles", shape=record, style=filled];
"create_sequence_of_chans_to_zap" -> "concat_logfiles";
"get_file_nsubs" [fillcolor=lightgoldenrodyellow, label="get_file_nsubs", shape=record, style=filled];
"concat_logfiles" [fillcolor=lightgoldenrodyellow, label="concat_logfiles", shape=record, style=filled];
"get_file_nsubs" -> "concat_logfiles";
"dspsr" [fillcolor=lightgoldenrodyellow, label="dspsr", shape=record, style=filled];
"concat_logfiles" [fillcolor=lightgoldenrodyellow, label="concat_logfiles", shape=record, style=filled];
"dspsr" -> "concat_logfiles";
"diagplots_new" [fillcolor=lightgoldenrodyellow, label="diagplots_new", shape=record, style=filled];
"concat_logfiles" [fillcolor=lightgoldenrodyellow, label="concat_logfiles", shape=record, style=filled];
"diagplots_new" -> "concat_logfiles";
"pdmp" [fillcolor=lightgoldenrodyellow, label="pdmp", shape=record, style=filled];
"concat_logfiles" [fillcolor=lightgoldenrodyellow, label="concat_logfiles", shape=record, style=filled];
"pdmp" -> "concat_logfiles";
"clfd_diagplots" [fillcolor=lightgoldenrodyellow, label="clfd_diagplots", shape=record, style=filled];
"concat_logfiles" [fillcolor=lightgoldenrodyellow, label="concat_logfiles", shape=record, style=filled];
"clfd_diagplots" -> "concat_logfiles";
"get_nchan_per_sub" [fillcolor=lightgoldenrodyellow, label="get_nchan_per_sub", shape=record, style=filled];
"concat_logfiles" [fillcolor=lightgoldenrodyellow, label="concat_logfiles", shape=record, style=filled];
"get_nchan_per_sub" -> "concat_logfiles";
"make_parfile" [fillcolor=lightgoldenrodyellow, label="make_parfile", shape=record, style=filled];
"concat_logfiles" [fillcolor=lightgoldenrodyellow, label="concat_logfiles", shape=record, style=filled];
"make_parfile" -> "concat_logfiles";
"diagplots" [fillcolor=lightgoldenrodyellow, label="diagplots", shape=record, style=filled];
"concat_logfiles" [fillcolor=lightgoldenrodyellow, label="concat_logfiles", shape=record, style=filled];
"diagplots" -> "concat_logfiles";
"paz" [fillcolor=lightgoldenrodyellow, label="paz", shape=record, style=filled];
"concat_logfiles" [fillcolor=lightgoldenrodyellow, label="concat_logfiles", shape=record, style=filled];
"paz" -> "concat_logfiles";
"paz_rfi_fraction" [fillcolor=lightgoldenrodyellow, label="paz_rfi_fraction", shape=record, style=filled];
"concat_logfiles" [fillcolor=lightgoldenrodyellow, label="concat_logfiles", shape=record, style=filled];
"paz_rfi_fraction" -> "concat_logfiles";
"quickview" [fillcolor=lightgoldenrodyellow, label="quickview", shape=record, style=filled];
"concat_logfiles" [fillcolor=lightgoldenrodyellow, label="concat_logfiles", shape=record, style=filled];
"quickview" -> "concat_logfiles";
"get_nchan_per_sub" [fillcolor=lightgoldenrodyellow, label="get_nchan_per_sub", shape=record, style=filled];
"create_sequence_of_chans_to_zap" [fillcolor=lightgoldenrodyellow, label="create_sequence_of_chans_to_zap", shape=record, style=filled];
"get_nchan_per_sub" -> "create_sequence_of_chans_to_zap";
"get_nchan_nbins" [fillcolor=lightgoldenrodyellow, label="get_nchan_nbins", shape=record, style=filled];
"create_sequence_of_chans_to_zap" [fillcolor=lightgoldenrodyellow, label="create_sequence_of_chans_to_zap", shape=record, style=filled];
"get_nchan_nbins" -> "create_sequence_of_chans_to_zap";
"is_dtype_complex_voltage" [fillcolor=lightgoldenrodyellow, label="is_dtype_complex_voltage", shape=record, style=filled];
"determine_profile_plot_type" [fillcolor=lightgoldenrodyellow, label="determine_profile_plot_type", shape=record, style=filled];
"is_dtype_complex_voltage" -> "determine_profile_plot_type";
"paz_zap_every_nth_chan" [fillcolor=lightgoldenrodyellow, label="paz_zap_every_nth_chan", shape=record, style=filled];
"diagplots" [fillcolor=lightgoldenrodyellow, label="diagplots", shape=record, style=filled];
"paz_zap_every_nth_chan" -> "diagplots";
"rename_arfile" [fillcolor=lightgoldenrodyellow, label="rename_arfile", shape=record, style=filled];
"diagplots" [fillcolor=lightgoldenrodyellow, label="diagplots", shape=record, style=filled];
"rename_arfile" -> "diagplots";
"psradd" [fillcolor=lightgoldenrodyellow, label="psradd", shape=record, style=filled];
"diagplots" [fillcolor=lightgoldenrodyellow, label="diagplots", shape=record, style=filled];
"psradd" -> "diagplots";
"determine_profile_plot_type" [fillcolor=lightgoldenrodyellow, label="determine_profile_plot_type", shape=record, style=filled];
"diagplots" [fillcolor=lightgoldenrodyellow, label="diagplots", shape=record, style=filled];
"determine_profile_plot_type" -> "diagplots";
"get_nchan_per_sub" [fillcolor=lightgoldenrodyellow, label="get_nchan_per_sub", shape=record, style=filled];
"diagplots" [fillcolor=lightgoldenrodyellow, label="diagplots", shape=record, style=filled];
"get_nchan_per_sub" -> "diagplots";
"pam_pdmp" [fillcolor=lightgoldenrodyellow, label="pam_pdmp", shape=record, style=filled];
"diagplots_new" [fillcolor=lightgoldenrodyellow, label="diagplots_new", shape=record, style=filled];
"pam_pdmp" -> "diagplots_new";
"determine_profile_plot_type" [fillcolor=lightgoldenrodyellow, label="determine_profile_plot_type", shape=record, style=filled];
"diagplots_new" [fillcolor=lightgoldenrodyellow, label="diagplots_new", shape=record, style=filled];
"determine_profile_plot_type" -> "diagplots_new";
"get_nchan_per_sub" [fillcolor=lightgoldenrodyellow, label="get_nchan_per_sub", shape=record, style=filled];
"diagplots_new" [fillcolor=lightgoldenrodyellow, label="diagplots_new", shape=record, style=filled];
"get_nchan_per_sub" -> "diagplots_new";
"filter" [fillcolor=lightgoldenrodyellow, label="filter", shape=record, style=filled];
"dspsr" [fillcolor=lightgoldenrodyellow, label="dspsr", shape=record, style=filled];
"filter" -> "dspsr";
"make_parfile" [fillcolor=lightgoldenrodyellow, label="make_parfile", shape=record, style=filled];
"dspsr" [fillcolor=lightgoldenrodyellow, label="dspsr", shape=record, style=filled];
"make_parfile" -> "dspsr";
"nsubs_in_file" [fillcolor=lightgoldenrodyellow, label="nsubs_in_file", shape=record, style=filled];
"dspsr" [fillcolor=lightgoldenrodyellow, label="dspsr", shape=record, style=filled];
"nsubs_in_file" -> "dspsr";
"filter" [fillcolor=lightgoldenrodyellow, label="filter", shape=record, style=filled];
"dspsr" [fillcolor=lightgoldenrodyellow, label="dspsr", shape=record, style=filled];
"filter" -> "dspsr";
"mjd" [fillcolor=lightgoldenrodyellow, label="mjd", shape=record, style=filled];
"dspsr" [fillcolor=lightgoldenrodyellow, label="dspsr", shape=record, style=filled];
"mjd" -> "dspsr";
"filter" [fillcolor=lightgoldenrodyellow, label="filter", shape=record, style=filled];
"get_file_nsubs" [fillcolor=lightgoldenrodyellow, label="get_file_nsubs", shape=record, style=filled];
"filter" -> "get_file_nsubs";
"psradd" [fillcolor=lightgoldenrodyellow, label="psradd", shape=record, style=filled];
"get_nchan_nbins" [fillcolor=lightgoldenrodyellow, label="get_nchan_nbins", shape=record, style=filled];
"psradd" -> "get_nchan_nbins";
"rename_arfile" [fillcolor=lightgoldenrodyellow, label="rename_arfile", shape=record, style=filled];
"get_nchan_nbins" [fillcolor=lightgoldenrodyellow, label="get_nchan_nbins", shape=record, style=filled];
"rename_arfile" -> "get_nchan_nbins";
"filter" [fillcolor=lightgoldenrodyellow, label="filter", shape=record, style=filled];
"get_nchan_per_sub" [fillcolor=lightgoldenrodyellow, label="get_nchan_per_sub", shape=record, style=filled];
"filter" -> "get_nchan_per_sub";
"pdmp" [fillcolor=lightgoldenrodyellow, label="pdmp", shape=record, style=filled];
"get_new_p0_dm" [fillcolor=lightgoldenrodyellow, label="get_new_p0_dm", shape=record, style=filled];
"pdmp" -> "get_new_p0_dm";
"filter" [fillcolor=lightgoldenrodyellow, label="filter", shape=record, style=filled];
"is_dtype_complex_voltage" [fillcolor=lightgoldenrodyellow, label="is_dtype_complex_voltage", shape=record, style=filled];
"filter" -> "is_dtype_complex_voltage";
"pdmp" [fillcolor=lightgoldenrodyellow, label="pdmp", shape=record, style=filled];
"make_combined_summary_pdf" [fillcolor=lightgoldenrodyellow, label="make_combined_summary_pdf", shape=record, style=filled];
"pdmp" -> "make_combined_summary_pdf";
"snrpy" [fillcolor=lightgoldenrodyellow, label="snrpy", shape=record, style=filled];
"make_combined_summary_pdf" [fillcolor=lightgoldenrodyellow, label="make_combined_summary_pdf", shape=record, style=filled];
"snrpy" -> "make_combined_summary_pdf";
"clfd_diagplots" [fillcolor=lightgoldenrodyellow, label="clfd_diagplots", shape=record, style=filled];
"make_combined_summary_pdf" [fillcolor=lightgoldenrodyellow, label="make_combined_summary_pdf", shape=record, style=filled];
"clfd_diagplots" -> "make_combined_summary_pdf";
"paz_diagplots" [fillcolor=lightgoldenrodyellow, label="paz_diagplots", shape=record, style=filled];
"make_combined_summary_pdf" [fillcolor=lightgoldenrodyellow, label="make_combined_summary_pdf", shape=record, style=filled];
"paz_diagplots" -> "make_combined_summary_pdf";
"diagplots" [fillcolor=lightgoldenrodyellow, label="diagplots", shape=record, style=filled];
"make_combined_summary_pdf" [fillcolor=lightgoldenrodyellow, label="make_combined_summary_pdf", shape=record, style=filled];
"diagplots" -> "make_combined_summary_pdf";
"snrpy" [fillcolor=lightgoldenrodyellow, label="snrpy", shape=record, style=filled];
"make_combined_summary_pdf" [fillcolor=lightgoldenrodyellow, label="make_combined_summary_pdf", shape=record, style=filled];
"snrpy" -> "make_combined_summary_pdf";
"dspsr" [fillcolor=lightgoldenrodyellow, label="dspsr", shape=record, style=filled];
"make_combined_summary_pdf" [fillcolor=lightgoldenrodyellow, label="make_combined_summary_pdf", shape=record, style=filled];
"dspsr" -> "make_combined_summary_pdf";
"diagplots_new" [fillcolor=lightgoldenrodyellow, label="diagplots_new", shape=record, style=filled];
"make_combined_summary_pdf" [fillcolor=lightgoldenrodyellow, label="make_combined_summary_pdf", shape=record, style=filled];
"diagplots_new" -> "make_combined_summary_pdf";
"quickview" [fillcolor=lightgoldenrodyellow, label="quickview", shape=record, style=filled];
"make_combined_summary_pdf" [fillcolor=lightgoldenrodyellow, label="make_combined_summary_pdf", shape=record, style=filled];
"quickview" -> "make_combined_summary_pdf";
"paz" [fillcolor=lightgoldenrodyellow, label="paz", shape=record, style=filled];
"make_outdir" [fillcolor=lightgoldenrodyellow, label="make_outdir", shape=record, style=filled];
"paz" -> "make_outdir";
"rename_arfile" [fillcolor=lightgoldenrodyellow, label="rename_arfile", shape=record, style=filled];
"make_outdir" [fillcolor=lightgoldenrodyellow, label="make_outdir", shape=record, style=filled];
"rename_arfile" -> "make_outdir";
"quickview" [fillcolor=lightgoldenrodyellow, label="quickview", shape=record, style=filled];
"make_outdir" [fillcolor=lightgoldenrodyellow, label="make_outdir", shape=record, style=filled];
"quickview" -> "make_outdir";
"copy_parfile" [fillcolor=lightgoldenrodyellow, label="copy_parfile", shape=record, style=filled];
"make_outdir" [fillcolor=lightgoldenrodyellow, label="make_outdir", shape=record, style=filled];
"copy_parfile" -> "make_outdir";
"make_combined_summary_pdf" [fillcolor=lightgoldenrodyellow, label="make_combined_summary_pdf", shape=record, style=filled];
"make_outdir" [fillcolor=lightgoldenrodyellow, label="make_outdir", shape=record, style=filled];
"make_combined_summary_pdf" -> "make_outdir";
"concat_logfiles" [fillcolor=lightgoldenrodyellow, label="concat_logfiles", shape=record, style=filled];
"make_outdir" [fillcolor=lightgoldenrodyellow, label="make_outdir", shape=record, style=filled];
"concat_logfiles" -> "make_outdir";
"make_parfile" [fillcolor=lightgoldenrodyellow, label="make_parfile", shape=record, style=filled];
"make_outdir" [fillcolor=lightgoldenrodyellow, label="make_outdir", shape=record, style=filled];
"make_parfile" -> "make_outdir";
"clfd" [fillcolor=lightgoldenrodyellow, label="clfd", shape=record, style=filled];
"make_outdir" [fillcolor=lightgoldenrodyellow, label="make_outdir", shape=record, style=filled];
"clfd" -> "make_outdir";
"pdmp" [fillcolor=lightgoldenrodyellow, label="pdmp", shape=record, style=filled];
"make_outdir" [fillcolor=lightgoldenrodyellow, label="make_outdir", shape=record, style=filled];
"pdmp" -> "make_outdir";
"copy_cobalt_files" [fillcolor=lightgoldenrodyellow, label="copy_cobalt_files", shape=record, style=filled];
"make_outdir" [fillcolor=lightgoldenrodyellow, label="make_outdir", shape=record, style=filled];
"copy_cobalt_files" -> "make_outdir";
"keep_h5" [fillcolor=lightgoldenrodyellow, label="keep_h5", shape=record, style=filled];
"make_outdir" [fillcolor=lightgoldenrodyellow, label="make_outdir", shape=record, style=filled];
"keep_h5" -> "make_outdir";
"psradd" [fillcolor=lightgoldenrodyellow, label="psradd", shape=record, style=filled];
"make_outdir" [fillcolor=lightgoldenrodyellow, label="make_outdir", shape=record, style=filled];
"psradd" -> "make_outdir";
"pam_pdmp" [fillcolor=lightgoldenrodyellow, label="pam_pdmp", shape=record, style=filled];
"make_outdir" [fillcolor=lightgoldenrodyellow, label="make_outdir", shape=record, style=filled];
"pam_pdmp" -> "make_outdir";
"get_obs_nsubs" [fillcolor=lightgoldenrodyellow, label="get_obs_nsubs", shape=record, style=filled];
"minimum_of_two_numbers" [fillcolor=lightgoldenrodyellow, label="minimum_of_two_numbers", shape=record, style=filled];
"get_obs_nsubs" -> "minimum_of_two_numbers";
"get_nchan_nbins" [fillcolor=lightgoldenrodyellow, label="get_nchan_nbins", shape=record, style=filled];
"minimum_of_two_numbers" [fillcolor=lightgoldenrodyellow, label="minimum_of_two_numbers", shape=record, style=filled];
"get_nchan_nbins" -> "minimum_of_two_numbers";
"filter" [fillcolor=lightgoldenrodyellow, label="filter", shape=record, style=filled];
"nsubs_in_file" [fillcolor=lightgoldenrodyellow, label="nsubs_in_file", shape=record, style=filled];
"filter" -> "nsubs_in_file";
"psradd" [fillcolor=lightgoldenrodyellow, label="psradd", shape=record, style=filled];
"pam_pdmp" [fillcolor=lightgoldenrodyellow, label="pam_pdmp", shape=record, style=filled];
"psradd" -> "pam_pdmp";
"get_new_p0_dm" [fillcolor=lightgoldenrodyellow, label="get_new_p0_dm", shape=record, style=filled];
"pam_pdmp" [fillcolor=lightgoldenrodyellow, label="pam_pdmp", shape=record, style=filled];
"get_new_p0_dm" -> "pam_pdmp";
"rename_arfile" [fillcolor=lightgoldenrodyellow, label="rename_arfile", shape=record, style=filled];
"pam_pdmp" [fillcolor=lightgoldenrodyellow, label="pam_pdmp", shape=record, style=filled];
"rename_arfile" -> "pam_pdmp";
"get_new_p0_dm" [fillcolor=lightgoldenrodyellow, label="get_new_p0_dm", shape=record, style=filled];
"pam_pdmp" [fillcolor=lightgoldenrodyellow, label="pam_pdmp", shape=record, style=filled];
"get_new_p0_dm" -> "pam_pdmp";
"paz" [fillcolor=lightgoldenrodyellow, label="paz", shape=record, style=filled];
"pam_pdmp" [fillcolor=lightgoldenrodyellow, label="pam_pdmp", shape=record, style=filled];
"paz" -> "pam_pdmp";
"clfd" [fillcolor=lightgoldenrodyellow, label="clfd", shape=record, style=filled];
"pam_pdmp" [fillcolor=lightgoldenrodyellow, label="pam_pdmp", shape=record, style=filled];
"clfd" -> "pam_pdmp";
"paz_zap_every_nth_chan" [fillcolor=lightgoldenrodyellow, label="paz_zap_every_nth_chan", shape=record, style=filled];
"pam_pdmp" [fillcolor=lightgoldenrodyellow, label="pam_pdmp", shape=record, style=filled];
"paz_zap_every_nth_chan" -> "pam_pdmp";
"psradd" [fillcolor=lightgoldenrodyellow, label="psradd", shape=record, style=filled];
"paz" [fillcolor=lightgoldenrodyellow, label="paz", shape=record, style=filled];
"psradd" -> "paz";
"paz_zap_every_nth_chan" [fillcolor=lightgoldenrodyellow, label="paz_zap_every_nth_chan", shape=record, style=filled];
"paz" [fillcolor=lightgoldenrodyellow, label="paz", shape=record, style=filled];
"paz_zap_every_nth_chan" -> "paz";
"paz" [fillcolor=lightgoldenrodyellow, label="paz", shape=record, style=filled];
"paz_diagplots" [fillcolor=lightgoldenrodyellow, label="paz_diagplots", shape=record, style=filled];
"paz" -> "paz_diagplots";
"get_nchan_per_sub" [fillcolor=lightgoldenrodyellow, label="get_nchan_per_sub", shape=record, style=filled];
"paz_diagplots" [fillcolor=lightgoldenrodyellow, label="paz_diagplots", shape=record, style=filled];
"get_nchan_per_sub" -> "paz_diagplots";
"determine_profile_plot_type" [fillcolor=lightgoldenrodyellow, label="determine_profile_plot_type", shape=record, style=filled];
"paz_diagplots" [fillcolor=lightgoldenrodyellow, label="paz_diagplots", shape=record, style=filled];
"determine_profile_plot_type" -> "paz_diagplots";
"paz" [fillcolor=lightgoldenrodyellow, label="paz", shape=record, style=filled];
"paz_rfi_fraction" [fillcolor=lightgoldenrodyellow, label="paz_rfi_fraction", shape=record, style=filled];
"paz" -> "paz_rfi_fraction";
"psradd" [fillcolor=lightgoldenrodyellow, label="psradd", shape=record, style=filled];
"paz_zap_every_nth_chan" [fillcolor=lightgoldenrodyellow, label="paz_zap_every_nth_chan", shape=record, style=filled];
"psradd" -> "paz_zap_every_nth_chan";
"rename_arfile" [fillcolor=lightgoldenrodyellow, label="rename_arfile", shape=record, style=filled];
"paz_zap_every_nth_chan" [fillcolor=lightgoldenrodyellow, label="paz_zap_every_nth_chan", shape=record, style=filled];
"rename_arfile" -> "paz_zap_every_nth_chan";
"get_nchan_per_sub" [fillcolor=lightgoldenrodyellow, label="get_nchan_per_sub", shape=record, style=filled];
"paz_zap_every_nth_chan" [fillcolor=lightgoldenrodyellow, label="paz_zap_every_nth_chan", shape=record, style=filled];
"get_nchan_per_sub" -> "paz_zap_every_nth_chan";
"create_sequence_of_chans_to_zap" [fillcolor=lightgoldenrodyellow, label="create_sequence_of_chans_to_zap", shape=record, style=filled];
"paz_zap_every_nth_chan" [fillcolor=lightgoldenrodyellow, label="paz_zap_every_nth_chan", shape=record, style=filled];
"create_sequence_of_chans_to_zap" -> "paz_zap_every_nth_chan";
"get_nchan_nbins" [fillcolor=lightgoldenrodyellow, label="get_nchan_nbins", shape=record, style=filled];
"pdmp" [fillcolor=lightgoldenrodyellow, label="pdmp", shape=record, style=filled];
"get_nchan_nbins" -> "pdmp";
"psradd" [fillcolor=lightgoldenrodyellow, label="psradd", shape=record, style=filled];
"pdmp" [fillcolor=lightgoldenrodyellow, label="pdmp", shape=record, style=filled];
"psradd" -> "pdmp";
"minimum_of_two_numbers" [fillcolor=lightgoldenrodyellow, label="minimum_of_two_numbers", shape=record, style=filled];
"pdmp" [fillcolor=lightgoldenrodyellow, label="pdmp", shape=record, style=filled];
"minimum_of_two_numbers" -> "pdmp";
"rename_arfile" [fillcolor=lightgoldenrodyellow, label="rename_arfile", shape=record, style=filled];
"pdmp" [fillcolor=lightgoldenrodyellow, label="pdmp", shape=record, style=filled];
"rename_arfile" -> "pdmp";
"paz" [fillcolor=lightgoldenrodyellow, label="paz", shape=record, style=filled];
"pdmp" [fillcolor=lightgoldenrodyellow, label="pdmp", shape=record, style=filled];
"paz" -> "pdmp";
"clfd" [fillcolor=lightgoldenrodyellow, label="clfd", shape=record, style=filled];
"pdmp" [fillcolor=lightgoldenrodyellow, label="pdmp", shape=record, style=filled];
"clfd" -> "pdmp";
"paz_zap_every_nth_chan" [fillcolor=lightgoldenrodyellow, label="paz_zap_every_nth_chan", shape=record, style=filled];
"pdmp" [fillcolor=lightgoldenrodyellow, label="pdmp", shape=record, style=filled];
"paz_zap_every_nth_chan" -> "pdmp";
"dspsr" [fillcolor=lightgoldenrodyellow, label="dspsr", shape=record, style=filled];
"psradd" [fillcolor=lightgoldenrodyellow, label="psradd", shape=record, style=filled];
"dspsr" -> "psradd";
"get_obs_nsubs" [fillcolor=lightgoldenrodyellow, label="get_obs_nsubs", shape=record, style=filled];
"psradd" [fillcolor=lightgoldenrodyellow, label="psradd", shape=record, style=filled];
"get_obs_nsubs" -> "psradd";
"dspsr" [fillcolor=lightgoldenrodyellow, label="dspsr", shape=record, style=filled];
"psradd" [fillcolor=lightgoldenrodyellow, label="psradd", shape=record, style=filled];
"dspsr" -> "psradd";
"get_file_nsubs" [fillcolor=lightgoldenrodyellow, label="get_file_nsubs", shape=record, style=filled];
"psradd" [fillcolor=lightgoldenrodyellow, label="psradd", shape=record, style=filled];
"get_file_nsubs" -> "psradd";
"paz_zap_every_nth_chan" [fillcolor=lightgoldenrodyellow, label="paz_zap_every_nth_chan", shape=record, style=filled];
"quickview" [fillcolor=lightgoldenrodyellow, label="quickview", shape=record, style=filled];
"paz_zap_every_nth_chan" -> "quickview";
"clfd" [fillcolor=lightgoldenrodyellow, label="clfd", shape=record, style=filled];
"quickview" [fillcolor=lightgoldenrodyellow, label="quickview", shape=record, style=filled];
"clfd" -> "quickview";
"paz" [fillcolor=lightgoldenrodyellow, label="paz", shape=record, style=filled];
"quickview" [fillcolor=lightgoldenrodyellow, label="quickview", shape=record, style=filled];
"paz" -> "quickview";
"rename_arfile" [fillcolor=lightgoldenrodyellow, label="rename_arfile", shape=record, style=filled];
"quickview" [fillcolor=lightgoldenrodyellow, label="quickview", shape=record, style=filled];
"rename_arfile" -> "quickview";
"clfd_rfi_fraction" [fillcolor=lightgoldenrodyellow, label="clfd_rfi_fraction", shape=record, style=filled];
"quickview" [fillcolor=lightgoldenrodyellow, label="quickview", shape=record, style=filled];
"clfd_rfi_fraction" -> "quickview";
"psradd" [fillcolor=lightgoldenrodyellow, label="psradd", shape=record, style=filled];
"quickview" [fillcolor=lightgoldenrodyellow, label="quickview", shape=record, style=filled];
"psradd" -> "quickview";
"pam_pdmp" [fillcolor=lightgoldenrodyellow, label="pam_pdmp", shape=record, style=filled];
"quickview" [fillcolor=lightgoldenrodyellow, label="quickview", shape=record, style=filled];
"pam_pdmp" -> "quickview";
"dspsr" [fillcolor=lightgoldenrodyellow, label="dspsr", shape=record, style=filled];
"quickview" [fillcolor=lightgoldenrodyellow, label="quickview", shape=record, style=filled];
"dspsr" -> "quickview";
"paz_rfi_fraction" [fillcolor=lightgoldenrodyellow, label="paz_rfi_fraction", shape=record, style=filled];
"quickview" [fillcolor=lightgoldenrodyellow, label="quickview", shape=record, style=filled];
"paz_rfi_fraction" -> "quickview";
"get_file_nsubs" [fillcolor=lightgoldenrodyellow, label="get_file_nsubs", shape=record, style=filled];
"rename_arfile" [fillcolor=lightgoldenrodyellow, label="rename_arfile", shape=record, style=filled];
"get_file_nsubs" -> "rename_arfile";
"get_obs_nsubs" [fillcolor=lightgoldenrodyellow, label="get_obs_nsubs", shape=record, style=filled];
"rename_arfile" [fillcolor=lightgoldenrodyellow, label="rename_arfile", shape=record, style=filled];
"get_obs_nsubs" -> "rename_arfile";
"dspsr" [fillcolor=lightgoldenrodyellow, label="dspsr", shape=record, style=filled];
"rename_arfile" [fillcolor=lightgoldenrodyellow, label="rename_arfile", shape=record, style=filled];
"dspsr" -> "rename_arfile";
"dspsr" [fillcolor=lightgoldenrodyellow, label="dspsr", shape=record, style=filled];
"rename_arfile" [fillcolor=lightgoldenrodyellow, label="rename_arfile", shape=record, style=filled];
"dspsr" -> "rename_arfile";
"psradd" [fillcolor=lightgoldenrodyellow, label="psradd", shape=record, style=filled];
"snrpy" [fillcolor=lightgoldenrodyellow, label="snrpy", shape=record, style=filled];
"psradd" -> "snrpy";
"pam_pdmp" [fillcolor=lightgoldenrodyellow, label="pam_pdmp", shape=record, style=filled];
"snrpy" [fillcolor=lightgoldenrodyellow, label="snrpy", shape=record, style=filled];
"pam_pdmp" -> "snrpy";
"paz" [fillcolor=lightgoldenrodyellow, label="paz", shape=record, style=filled];
"snrpy" [fillcolor=lightgoldenrodyellow, label="snrpy", shape=record, style=filled];
"paz" -> "snrpy";
"rename_arfile" [fillcolor=lightgoldenrodyellow, label="rename_arfile", shape=record, style=filled];
"snrpy" [fillcolor=lightgoldenrodyellow, label="snrpy", shape=record, style=filled];
"rename_arfile" -> "snrpy";
"paz_zap_every_nth_chan" [fillcolor=lightgoldenrodyellow, label="paz_zap_every_nth_chan", shape=record, style=filled];
"snrpy" [fillcolor=lightgoldenrodyellow, label="snrpy", shape=record, style=filled];
"paz_zap_every_nth_chan" -> "snrpy";
"clfd" [fillcolor=lightgoldenrodyellow, label="clfd", shape=record, style=filled];
"snrpy" [fillcolor=lightgoldenrodyellow, label="snrpy", shape=record, style=filled];
"clfd" -> "snrpy";
subgraph cluster_inputs {
label="Workflow Inputs";
rank=same;
style=dashed;
"nozap" [fillcolor="#94DDF4", label=nozap, shape=record, style=filled];
"nozap" [fillcolor="#94DDF4", label=nozap, shape=record, style=filled];
"nozap" [fillcolor="#94DDF4", label=nozap, shape=record, style=filled];
"nozap" [fillcolor="#94DDF4", label=nozap, shape=record, style=filled];
"nozap" [fillcolor="#94DDF4", label=nozap, shape=record, style=filled];
"nozap" [fillcolor="#94DDF4", label=nozap, shape=record, style=filled];
"nozap" [fillcolor="#94DDF4", label=nozap, shape=record, style=filled];
"use_clfd" [fillcolor="#94DDF4", label=use_clfd, shape=record, style=filled];
"use_clfd" [fillcolor="#94DDF4", label=use_clfd, shape=record, style=filled];
"use_clfd" [fillcolor="#94DDF4", label=use_clfd, shape=record, style=filled];
"use_clfd" [fillcolor="#94DDF4", label=use_clfd, shape=record, style=filled];
"h5in" [fillcolor="#94DDF4", label=h5in, shape=record, style=filled];
"h5in" [fillcolor="#94DDF4", label=h5in, shape=record, style=filled];
"h5in" [fillcolor="#94DDF4", label=h5in, shape=record, style=filled];
"h5in" [fillcolor="#94DDF4", label=h5in, shape=record, style=filled];
"h5in" [fillcolor="#94DDF4", label=h5in, shape=record, style=filled];
"h5in" [fillcolor="#94DDF4", label=h5in, shape=record, style=filled];
"h5in" [fillcolor="#94DDF4", label=h5in, shape=record, style=filled];
"h5in" [fillcolor="#94DDF4", label=h5in, shape=record, style=filled];
"h5in" [fillcolor="#94DDF4", label=h5in, shape=record, style=filled];
"parfile" [fillcolor="#94DDF4", label=parfile, shape=record, style=filled];
"parfile" [fillcolor="#94DDF4", label=parfile, shape=record, style=filled];
"parfile" [fillcolor="#94DDF4", label=parfile, shape=record, style=filled];
"use_paz" [fillcolor="#94DDF4", label=use_paz, shape=record, style=filled];
"use_paz" [fillcolor="#94DDF4", label=use_paz, shape=record, style=filled];
"use_paz" [fillcolor="#94DDF4", label=use_paz, shape=record, style=filled];
"use_paz" [fillcolor="#94DDF4", label=use_paz, shape=record, style=filled];
"use_pdmp" [fillcolor="#94DDF4", label=use_pdmp, shape=record, style=filled];
"use_pdmp" [fillcolor="#94DDF4", label=use_pdmp, shape=record, style=filled];
"use_pdmp" [fillcolor="#94DDF4", label=use_pdmp, shape=record, style=filled];
"use_pdmp" [fillcolor="#94DDF4", label=use_pdmp, shape=record, style=filled];
"extra_channels_factor" [fillcolor="#94DDF4", label=extra_channels_factor, shape=record, style=filled];
"extra_channels_factor" [fillcolor="#94DDF4", label=extra_channels_factor, shape=record, style=filled];
"maxram" [fillcolor="#94DDF4", label=maxram, shape=record, style=filled];
"nbins" [fillcolor="#94DDF4", label=nbins, shape=record, style=filled];
"nthreads" [fillcolor="#94DDF4", label=nthreads, shape=record, style=filled];
"obsdur" [fillcolor="#94DDF4", label=obsdur, shape=record, style=filled];
"remove_dm_delays" [fillcolor="#94DDF4", label=remove_dm_delays, shape=record, style=filled];
"skip_from_start" [fillcolor="#94DDF4", label=skip_from_start, shape=record, style=filled];
"sp_subint" [fillcolor="#94DDF4", label=sp_subint, shape=record, style=filled];
"tsubint" [fillcolor="#94DDF4", label=tsubint, shape=record, style=filled];
"sasid" [fillcolor="#94DDF4", label=sasid, shape=record, style=filled];
"sasid" [fillcolor="#94DDF4", label=sasid, shape=record, style=filled];
"sasid" [fillcolor="#94DDF4", label=sasid, shape=record, style=filled];
"sasid" [fillcolor="#94DDF4", label=sasid, shape=record, style=filled];
"sasid" [fillcolor="#94DDF4", label=sasid, shape=record, style=filled];
"parfile_string" [fillcolor="#94DDF4", label=parfile_string, shape=record, style=filled];
"get_parfile_from_psrcat" [fillcolor="#94DDF4", label=get_parfile_from_psrcat, shape=record, style=filled];
}
"nozap" -> "clfd";
"nozap" -> "clfd_diagplots";
"nozap" -> "clfd_rfi_fraction";
"nozap" -> "diagplots";
"nozap" -> "paz";
"nozap" -> "paz_diagplots";
"nozap" -> "paz_rfi_fraction";
"use_clfd" -> "clfd";
"use_clfd" -> "clfd_diagplots";
"use_clfd" -> "clfd_rfi_fraction";
"use_clfd" -> "diagplots";
"h5in" -> "copy_cobalt_files";
"h5in" -> "copy_cobalt_files";
"h5in" -> "dspsr";
"h5in" -> "filter";
"h5in" -> "get_obs_nsubs";
"h5in" -> "keep_h5";
"h5in" -> "make_parfile";
"h5in" -> "mjd";
"h5in" -> "quickview";
"parfile" -> "copy_parfile";
"parfile" -> "dspsr";
"parfile" -> "make_parfile";
"use_paz" -> "diagplots";
"use_paz" -> "paz";
"use_paz" -> "paz_diagplots";
"use_paz" -> "paz_rfi_fraction";
"use_pdmp" -> "diagplots_new";
"use_pdmp" -> "get_new_p0_dm";
"use_pdmp" -> "pam_pdmp";
"use_pdmp" -> "pdmp";
"extra_channels_factor" -> "dspsr";
"extra_channels_factor" -> "minimum_of_two_numbers";
"maxram" -> "dspsr";
"nbins" -> "dspsr";
"nthreads" -> "dspsr";
"obsdur" -> "dspsr";
"remove_dm_delays" -> "dspsr";
"skip_from_start" -> "dspsr";
"sp_subint" -> "dspsr";
"tsubint" -> "dspsr";
"sasid" -> "make_combined_summary_pdf";
"sasid" -> "psradd";
"sasid" -> "quickview";
"sasid" -> "quickview";
"sasid" -> "rename_arfile";
"parfile_string" -> "make_parfile";
"get_parfile_from_psrcat" -> "make_parfile";
subgraph cluster_outputs {
label="Workflow Outputs";
labelloc=b;
rank=same;
style=dashed;
"workdir" [fillcolor="#94DDF4", label=workdir, shape=record, style=filled];
}
"make_outdir" -> "workdir";
}

Workflow diagram