=====
Usage
=====
To use **ViewClust-Vis** in a project::
import viewclust_vis
* All following examples are using ``vc`` and ``vcv`` as aliases for `ViewClust `_ and ViewClust-Vis, respectively::
import viewclust as vc
import viewclust_vis as vcv
* Functions can then be called with ``vc`` and ``vcv``::
vc.job_use(jobs, d_from, target)
vcv.insta_plot(clust_info, cores_queued, cores_running, fig_out="output.html")
ViewClust-Vis has the following collection of functions:
* ``cumu_plot`` (see `docstring `_)
* ``delta_plot`` (see `docstring `_)
* ``insta_plot`` (see `docstring `_)
* ``job_scatter`` (see `docstring `_)
* ``job_stack`` (see `docstring `_)
* ``show_job_use`` (see `docstring `_)
* ``summary_page`` (see `docstring `_)
* ``use_suite`` (see `docstring `_)
* ``viol_plot`` (see `docstring `_)
Generating Job Instantaneous Usage Plots
########
To view an insta plot for a specific compute account, the following pattern can be used::
import viewclust as vc
from viewclust import slurm
import viewclust_vis as vcv
# Query parameters
account = 'def-tk11br_cpu'
d_from = '2021-02-14T00:00:00'
d_to = '2021-03-16T00:00:00'
# DataFrame query
jobs_df = slurm.sacct_jobs(account, d_from, d_to=d_to)
# ViewClust processing
target = 50
clust_target, queued, running, dist = vc.job_use(jobs_df, d_from, target, d_to=d_to, use_unit='cpu-eqv')
# ViewClust-Vis rendering
vcv.insta_plot(clust_target, queued, running, fig_out=account+'.html')
Things to note about this example:
* The functions use optional arguments. Docstrings are supported in all cases.
Generating a RAC Summary
########
This example script is a sample of what could be used to generate a RAC summary. Input in this case is a ``test_accounts.csv`` file with the following header: ``account,core_award,core_eqv_award``.
The example is provided with comments describing what could be changed here::
# This script is meant to be run via:
# python rac_summary.py
import pandas as pd
import viewclust as vc
from viewclust import slurm
import viewclust_vis as vcv
# The purpose of this script is to iterate over a file of accounts and
# compute usage summaries for each account as well as generate a helper reference page.
# Typically would be used as a base structure for iterating over RACs.
# For more specific usage, consult docstrings of functions.
# Query information
d_from = '2020-04-01T00:00:00'
d_to = '2020-08-31T00:00:00'
account_file = 'test_accounts.csv' # of the form: account,core_award,core_eqv_award
# Read file, assuming headers
account_frame = pd.read_csv(account_file)
# Holders for summary generation
dist_list = []
account_list = []
# Not the most quick, but fine for small scale
for _, entry in account_frame.iterrows():
# Just some quick checking if the account info makes sense
# Probably a better way to do this...
account = entry['account']
if not account.endswith('_cpu'):
print('Missing cpu or gpu account suffix. Assuming cpu.')
account += '_cpu'
# Extract target
target = entry['core_eqv_award']
# Perform sacct query
print("Running sacct on account ", account, "...")
jobs_df = slurm.sacct_jobs(account, d_from, d_to=d_to)
# Make sure there's actually jobs
if jobs_df is not None:
# Compute usage in terms of core equiv
clust_target, queued, running, dist = vc.job_use(jobs_df, d_from, target, d_to=d_to, use_unit='cpu-eqv')
vcv.insta_plot(clust_target, queued, running, fig_out=account+'.html')
# Hand information off to lists for later if need be
account_list.append(account)
dist_list.append(dist)
print(" Done account: ", account)
else:
# Potentially handle differently, but skip for now
print(" Skipped account: ", account)
Things to note about this example:
* The functions use optional arguments. Docstrings are supported in all cases.
* To generate the input job frame, we are using an included slurm helper function