Skip to main content

A campaign manager to execute SO mapmaking campaign

Project description

PyPI - Version PyPI - Python Version CI workflow Coverage Status DOI Docs Status

SO Campaign Manager

This repository holds the code of the software tools that will run the mapmaking campaign on Tiger 3.

The project has three big aspects:

  1. Providing a method to submit new workflows, update existing ones and delete via configuration or a series of commands
  2. Based on the workflow configuration set the resource requirement accordingly and submit it to SLURM. Resource configuration can be based on:
    1. Total size of observations and their file distribution
    2. A specific observation mapping between processes and files
    3. Node memory and node processor performance.
  3. Use a workflow management tool to execute all workflows in the minimum amount of time.

Documentation

📚 Full Documentation - Complete documentation including:

Building Documentation

To build the HTML documentation locally:

cd docs
pip install sphinx sphinx-rtd-theme
make html

The documentation will be available in docs/_build/html/index.html.

Quick Start

Install the package:

pip install so_campaign_manager

Create a configuration file (campaign.toml):

[campaign]
deadline = "2d"

[campaign.resources]
nodes = 4
cores-per-node = 112

[campaign.ml-mapmaking]
context = "file:///path/to/context.yaml"
output_dir = "/path/to/output"
bands = "f090"
# ... other parameters

Run your campaign:

socm -t campaign.toml

For detailed examples and configuration options, see the documentation.


Development guide

Branching model

  • the latest development is in the main branch.
  • bug fixes:
    • branch of main, naming convention: fix/issue_1234 (reference github issue). hotfix/issue_1234 if it is a major issue that needs resolution as soon as possible.
    • fix in that branch, and test
    • create pull request toward main
    • code review, then merge
  • major development activities go into feature branches
    • branch main into feature/feature_name
    • work on that feature branch
    • on completion, merge main into the feature branch.
    • test the feature branch
    • create a pull request for merging the feature branch into main (that should be a fast-forward now)
    • merging of feature branches into main should be only after code review
  • documentation changes are handled like fix or feature branches, depending on size and impact, similar to code changes

Branch Naming

  • main: never commit directly
  • feature/abc: development of new features
  • fix/abc_123: referring to ticket 123
  • hotfix/abc_123: referring to ticket 123, to be released right after merge to master
  • tmp/abc: temporary branch, will be deleted soon
  • test/abc: test some integration, like a merge of two feature branches

For the latter: assume you want to test how feature/a works in combination with feature/b, then:

  • git checkout feature/a
  • git checkout -b test/a_b
  • git merge feature/b
  • do tests

Branching Policies

All branches are short living. To support this, only a limited number of branches should be open at any point in time. Only N branches for fixes and M << N branches for features should be open for each developer - other features / issues have to wait.

Ensure PEP8 compliance (mandatory) and format your code with Darker (optional)

darker is a partial formatting tool that helps to reformat new or modified code lines so the codebase progressively adapts a code style instead of doing a full reformat, which would be a big commitment. It was designed with the black formatter in mind, hence the name.

In this repo we only require PEP8 compliance, so if you want to make sure that your PR passes the darker bot, you'll need both darker and flake8:

pip install darker flake8

You'll also need the original codebase so darker can first get a diff between the current develop branch and your code. After making your changes to your local branch, check your modifications on the package:

darker --diff -r origin/develop package/src -L flake8

Darker will first suggest changes so that the new code lines comply with black's rules, and then show flake8 errors and warnings.

You are free to skip the diffs and then manually fix the PEP8 faults. Or if you're ok with the suggested formatting changes, just apply the suggested fixes: ::

darker -r origin/develop package/scr -L flake8

Project details


Download files

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

Source Distribution

so_campaign_manager-0.0.4.tar.gz (104.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

so_campaign_manager-0.0.4-py3-none-any.whl (55.3 kB view details)

Uploaded Python 3

File details

Details for the file so_campaign_manager-0.0.4.tar.gz.

File metadata

  • Download URL: so_campaign_manager-0.0.4.tar.gz
  • Upload date:
  • Size: 104.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for so_campaign_manager-0.0.4.tar.gz
Algorithm Hash digest
SHA256 3b0881ce820e97e750c4de21c82381cf7bd6947ed8a3daea68f5b2e5415ab36a
MD5 ef370c05cfb24f57231ccf7eedb65472
BLAKE2b-256 1639be97b464c74895ed3f6363cba7255deebd33f7466ccf27924d05b979974e

See more details on using hashes here.

Provenance

The following attestation bundles were made for so_campaign_manager-0.0.4.tar.gz:

Publisher: release.yaml on simonsobs/so_campaign_manager

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file so_campaign_manager-0.0.4-py3-none-any.whl.

File metadata

File hashes

Hashes for so_campaign_manager-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 846c52f26dfa178d4a9ca00644c641b59ec9173867ab60ad110d9ea2fb88663b
MD5 3a67072d059322173c7335b0c78a5d83
BLAKE2b-256 927db9c8b10da2d61041065d1e75ae7a0dd773babc397d665256b6a3cfbbc905

See more details on using hashes here.

Provenance

The following attestation bundles were made for so_campaign_manager-0.0.4-py3-none-any.whl:

Publisher: release.yaml on simonsobs/so_campaign_manager

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page