mangadap.survey.rundap module

Defines the class used to automate the batch execution of the MaNGA DAP.


License

Copyright © 2019, SDSS-IV/MaNGA Pipeline Group


class mangadap.survey.rundap.rundap(overwrite=None, quiet=False, drpver=None, redux_path=None, dapver=None, analysis_path=None, plan_file=None, platelist=None, ifudesignlist=None, combinatorics=False, list_file=None, sres_ext=None, sres_fill=None, covar_ext=None, on_disk=False, can_analyze=False, log=False, dapproc=True, pltifu_plots=True, post_process=False, post_plots=False, report_progress=False, verbose=0, label='mangadap', nodes=1, cpus=None, qos=None, umask='0027', walltime='240:00:00', hard=True, create=False, submit=False, queue=None)[source]

Bases: object

Class used for automated execution of the MaNGA DAP via submission of scripts to a cluster.

[ More complete explanation of the class here. ]

Note

This is purely a survey-level utility for running the DAP at Utah, including submitting jobs to the cluster. No user-level usage of the DAP should be considered here, apart from not hindering such usage of the primary python programs!

Todo

  • Have _read_arg() return the boolean for version instead of keeping it as an attribute.

  • Ditch console and _read_arg() in favor of the more typical parser and main pairing.

Parameters:
  • overwrite (bool, optional) – Overwrite and redo any existing analysis.

  • console (bool, optional) – The class has been executed from the terminal with command-line arguments that should be parsed.

  • quiet (bool, optional) – Suppress output

  • print_version (bool, optional) – Print the class version and return.

  • drpver (str, optional) – DRP version to analyze. Default is defined by mangadap.config.manga.drp_version()

  • redux_path (str, optional) – The top-level path with the DRP files used to override the default defined by mangadap.config.manga.drp_redux_path().

  • dapver (str, optional) – The DAP version to use for the analysis, used to override the default defined by mangadap.config.manga.dap_version(). Only used to define the file paths, not used to switch to the specified code version!

  • analysis_path (str, optional) – The top-level path for the DAP output files, used to override the default defined by mangadap.config.manga.dap_analysis_path().

  • plan_file (str, optional) – Name of the plan file to use for all DRP data in this run, used to override the default defined by mangadap.par.analysisplan.AnalysisPlanSet.default().

  • platelist (int, str, optional) – List of plates to analyze; default is to search the redux_path for any DRP files; see mangadap.survey.drpcomplete.DRPComplete.

  • ifudesignlist (int, str, optional) – List of ifudesigns to analyze: default is to search the redux_path for any DRP files; see mangadap.survey.drpcomplete.DRPComplete.

  • combinatorics (bool, optional) – Use all unique combinations of the entered plate/ifudesign/mode lists to create the full list of DRP files to analyze.

  • list_file (str, optional) – File with a list of plates and ifudesigns to analyze. The file must have two columns, with one plate-ifu combination per file row.

  • sres_ext (str, optional) – The extension to use when constructing the spectral resolution vectors for the MaNGA datacubes. See mangadap.datacube.manga.MaNGADataCube.spectral_resolution().

  • sres_fill (bool, optional) – Fill masked spectral-resolution data by simple linear interpolation.

  • covar_ext (str, optional) – Extension in the MaNGA DRP CUBE file to use as the single spatial correlation matrix for all wavelength channels.

  • on_disk (bool, optional) – When searching for available files to analyze, search the DRP directory path instead of using the data in the DRPall file.

  • can_analyze (bool, optional) – Only construct script files for datacubes that can/should be analyzed by the DAP. See can_analyze().

  • log (bool, optional) – Flag to create the DAP log files.

  • dapproc (bool, optional) – Flag to execute the main DAP processing.

  • pltifu_plots (bool, optional) – Create the QA plate-ifu specific plots.

  • post_process (bool, optional) – Prepare (and possibly perform) the post processing steps: create the DAPall file and its associated QA plots, and the fit QA plots for each plate.

  • post_plots (bool, optional) – Create the post-processing QA plots.

  • report_progress (bool, optional) – Report the progress of the analysis.

  • vebose (int, optional) – Verbosity level between 0 and 2.

  • label (str, optional) – Label to use in cluster queue.

  • nodes (int, optional) – Number of cluster nodes to use.

  • qos (str, optional) – Select a specific processor (e.g. sdss-fast when the manga user). This option is ignored if q is set.

  • umask (str, optional) – umask to set for output.

  • walltime (str, optional) – Maximum wall time for cluster job.

  • hard (bool, optional) – Same as hard keyword in cluster submission; see pbs.queue.commit(). This keyword is in the opposite sense of the “–toughness” command-line options; i.e. including –toughness on the command line sets hard=False.

  • create (bool, optional) – Use the pbs package to create the scripts.

  • submit (bool, optional) – Submit all jobs to the cluster.

  • queue (str, optional) – Name of the destination queue. When submitting jobs at Utah, this should not be set (leaving it at the default of None). When submitting jobs at Portsmouth, this can be used to select either sciama1.q, cluster.q (default), or sciama3.q.

overwrite

Only used with :attr:`all`. Overwrite and redo any existing analysis.

Type:

bool

quiet

Suppress output

Type:

bool

print_version

Print the version and then return

Type:

bool

mpl

MPL version; see above.

Type:

mangadap.survey.mangampl.MaNGAMPL

redux_path

The top-level path with the DRP files.

Type:

str

dapver

The DAP version.

Type:

str

analysis_path

The top-level path for the DAP output files.

Type:

str

plan_file

Name of the plan file to use for ALL DRP data in this run. Will be None if using the default plan.

Type:

str

plan

The set of analysis plans

Type:

AnalysisPlanSet

daptypes

This list of daptypes, one per plan

Type:

list

platelist

List of plates to analyze.

Type:

list

ifudesignlist

List of ifudesigns to analyze.

Type:

list

combinatorics

Use all unique combinations of the entered plate/ifudesign/mode lists to create the full list of DRP files to analyze.

Type:

bool

on_disk

See above

Type:

bool

can_analyze

See above

Type:

bool

log

See above

Type:

str

dapproc

Flag to execute the main DAP processing

Type:

bool

pltifu_plots

Create the QA plate-ifu specific plots

Type:

bool

post_process

See above

Type:

bool

post_plots

See above

Type:

bool

report_progress

See abve

Type:

bool

label

Label to use in cluster queue.

Type:

str

nodes

Number of cluster nodes to use.

Type:

int

qos

Specific processor to use (Utah specific)

Type:

str

umask

umask to set for output.

Type:

str

walltime

Maximum wall time for cluster job.

Type:

str

hard

Same as hard keyword in cluster submission; see pbs.queue.commit().

Type:

bool

create

Use the pbs package to create the submission scripts.

Type:

bool

submit

Submit all jobs to the cluster.

Type:

bool

q

Queue destination (Portsmouth specific)

Type:

str

drpc

Database of the available DRP files and the parameters necessary to write the DAP par files.

Type:

mangadap.survey.drpcomplete.DRPComplete

Raises:
  • FileNotFoundError – Raised if a plate-ifu list file is provided but it does not exist, or if the plan file does not exist.

  • ValueError – Raised if all processing steps are turned off, if the selected MPL is undefined; if the fast node is selected with nodes > 1; if multiple run modes are selected; or if the plate list, ifudesign list, or mode list are not provided during a redo mode or if they are provided with any other mode.

_build_post_queue(drpc_rows)[source]

Build the queue that performs the post-processing steps.

_build_proc_queue(drpc_rows)[source]

Create a queue instance, write the script files for all CPUs using prepare_for_analysis() and append the job to the queue, and then submit the jobs to the cluster queue. If submit is False, this is essentially a wrapper for prepare_for_analysis().

This function is written to be functional for submission to the cluster queues both at Utah and using the sciama cluster at Portsmouth; see _create_queue().

Todo

  • This algorithm is slow because it has to search through the drpcomplete fits file each time to find the plate/ifudesign combo. Should make this more efficient.

Parameters:

drpc_rows (numpy.ndarray) – A vector with the rows in the mangadap.survey.drpcomplete.DRPComplete database with the DRP files to analyze.

_create_queue()[source]

Create a queue instance.

This function is written to be functional for submission to the cluster queues both at Utah and using the sciama cluster at Portsmouth. The available queues are:

Queue

Nodes

PPN

GB/core

ember

??

12

??

sciama1.q

80

12

2

sciama2.q

96

16

4

sciama3.q

48

20

3.2

One should not submit to sciama3.q without permission from Will Percival. The default queue is cluster.q (sciama2.q).

Submissions to Utah should have their queue destination set to None. However, the fast node can be selected using qos.

_read_file_list(list_file)[source]
_selected_drpfile_rows(can_analyze=False)[source]

Find the rows in the mangadap.survey.drpcomplete.DRPComplete database with the selected plates and IFUs to analyze.

Parameters:

can_analyze (bool, optional) – In addition to returning the selected rows, only include those rows with DRP datacubes that can be analyzed. See mangadap.survey.drpcomplete.DRPComplete.can_analyze().

Returns:

A vector with the rows in the DRPComplete object with the relevant DRP file data.

Return type:

numpy.ndarray

set_pltifu_status(plate, ifudesign, status='queued')[source]

Generate a touch file that signifies the status for a given plate/ifudesign/mode.

Parameters:
  • plate (int) – Plate number

  • ifudesign (int) – IFU design number

  • status (str, optional) – The status signifier for the touch file.

set_status(root, status='queued')[source]

Generate a general touch file.

Parameters:
  • root (str) – Full path and root name of the touch file

  • status (str, optional) – The status signifier for the touch file.

write_compute_script(index, dapproc=True, plots=True, overwrite=False, relative_symlink=True)[source]

Write the MaNGA DAP script file that is sent to a single CPU to analyze a single DRP file with a given plate and ifudesign.

Parameters:
  • index (int, optional) – Row in the mangadap.survey.drpcomplete.DRPComplete database with the DRP file to analysis.

  • dapproc (bool, optional) – Flag to execute the main DAP processing.

  • plots (bool, optional) – Create the QA plots.

  • overwrite (bool, optional) – Flag to overwrite any existing files.

  • relative_symlink (bool, optional) – Set the symlink to the par file to be a relative path instead of the absolute path.

Returns:

Three strings with the name of the written script file, the file for the output sent to STDOUT, and the file for the output sent to STDERR.

Return type:

str

write_dapall_script(plots=True, overwrite=False)[source]

Write the script used to construct the DAPall file and its associated quality assessment plots.

Parameters:
  • plots (bool, optional) – Create the QA plots. Default is True.

  • overwrite (bool, optional) – Flag to overwrite any existing files.

Returns:

Three strings with the name of the written script file, the file for the output sent to STDOUT, and the file for the output sent to STDERR.

Return type:

str

write_plate_qa_script(plate, overwrite=False)[source]

Write the script used to create the plate fit QA plot.

Parameters:
  • plate (int) – The plate number for the plot.

  • overwrite (bool, optional) – Flag to overwrite any existing files.

Returns:

Three strings with the name of the written script file, the file for the output sent to STDOUT, and the file for the output sent to STDERR.

Return type:

str