m4opt

Multi-Mission Multi-Messenger Observation Planning Toolkit

https://github.com/m4opt/m4opt

Science Score: 57.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 2 DOI reference(s) in README
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.8%) to scientific vocabulary

Keywords

astronomy cplex healpix mixed-integer-programming nasa operations-research optimization satellite scheduling-algorithms telescope ultraviolet
Last synced: 4 months ago · JSON representation ·

Repository

Multi-Mission Multi-Messenger Observation Planning Toolkit

Basic Info
Statistics
  • Stars: 18
  • Watchers: 7
  • Forks: 10
  • Open Issues: 21
  • Releases: 4
Topics
astronomy cplex healpix mixed-integer-programming nasa operations-research optimization satellite scheduling-algorithms telescope ultraviolet
Created about 4 years ago · Last pushed 4 months ago
Metadata Files
Readme Changelog License Citation

README.rst

Multi-Mission Multi-Messenger Observation Planning Toolkit
----------------------------------------------------------

.. image:: https://img.shields.io/pypi/v/m4opt
    :target: https://pypi.org/project/m4opt/
    :alt: Python Package Index status
.. image:: http://img.shields.io/badge/powered%20by-AstroPy-orange.svg?style=flat
    :target: http://www.astropy.org
    :alt: Powered by Astropy Badge
.. image:: https://codecov.io/gh/m4opt/m4opt/branch/main/graph/badge.svg?token=L837JHNTUV
    :target: https://codecov.io/gh/m4opt/m4opt
    :alt: Code coverage status
.. image:: https://readthedocs.org/projects/m4opt/badge/?version=latest
    :target: https://m4opt.readthedocs.io/en/latest/?badge=latest
    :alt: Documentation Status

.. image:: https://m4opt.readthedocs.io/en/latest/_images/example.gif
    :alt: Visualization of an example observing plan for UVEX generated M4OPT

M4OPT is an open-source toolkit for multi-facility scheduling of astrophysics
observing campaigns. It focuses on extremely rapid follow-up of gravitational
wave (GW) and neutrino events with heterogeneous networks of space and
ground-based observatories.

M4OPT uses the versatile mathematical framework of `mixed integer
programming`__ to model and solve complex observation scheduling problems.
Although M4OPT is open source, for the largest problems it can leverage two
industrial-strength commercial MIP solvers: `CPLEX`__ or `Gurobi`__. Both
solvers are available for free for academic users.

__ https://en.wikipedia.org/wiki/Integer_programming
__ https://www.ibm.com/products/ilog-cplex-optimization-studio
__ https://www.gurobi.com

M4OPT is designed from the `Astropy affiliated package`__ template, and is
meant to follow those standards, including interoperability with the
`Astropy`__ ecosystem. It also complies with `NASA Procedural Requirements
(NPR) 7150`__ for `Class C software`__ and is suitable for non-safety-critical
ground software applications for `Class D NASA payloads`__.

__ https://www.astropy.org/affiliated/
__ https://www.astropy.org
__ https://nodis3.gsfc.nasa.gov/displayDir.cfm?t=NPR&c=7150&s=2C
__ https://nodis3.gsfc.nasa.gov/displayDir.cfm?Internal_ID=N_PR_7150_002C_&page_name=AppendixD
__ https://nodis3.gsfc.nasa.gov/displayDir.cfm?t=NPR&c=8705&s=4A

Features
--------

*   **Global**: jointly and globally solves the problems of tiling (the set of
    telescope boresight orientations and roll angles) and the scheduling (which
    tile is observed at what time), rather than solving each sub-problem one at
    a time
*   **Optimal**: generally solves all the way to optimality, rather than
    finding merely a "good enough" solution
*   **Fast**: solve an entire orbit in about 5 minutes
*   **General**: does not depend on heuristics of any kind
*   **Flexible**: problem is formulated in the versatile framework of
    `mixed integer programming `_

License
-------

This project is Copyright (c) M4OPT Developers and licensed under
the terms of the BSD 3-Clause license. This package is based upon
the `Astropy package template `_
which is licensed under the BSD 3-clause license. See the licenses folder for
more information.

How to Cite
-----------

If you use M4OPT in your research, then please cite the following paper:

   Singer, L. P., Criswell, A. W., Leggio, S. C., et al. (2025). Optimal Follow-Up of Gravitational-Wave Events with the UltraViolet EXplorer (UVEX) (Version 1). https://doi.org/10.48550/ARXIV.2502.17560

Contributing
------------

We love contributions! m4opt is open source,
built on open source, and we'd love to have you hang out in our community.

**Imposter syndrome disclaimer**: We want your help. No, really.

There may be a little voice inside your head that is telling you that you're not
ready to be an open source contributor; that your skills aren't nearly good
enough to contribute. What could you possibly offer a project like this one?

We assure you - the little voice in your head is wrong. If you can write code at
all, you can contribute code to open source. Contributing to open source
projects is a fantastic way to advance one's coding skills. Writing perfect code
isn't the measure of a good developer (that would disqualify all of us!); it's
trying to create something, making mistakes, and learning from those
mistakes. That's how we all improve, and we are happy to help others learn.

Being an open source contributor doesn't just mean writing code, either. You can
help out by writing documentation, tests, or even giving feedback about the
project (and yes - that includes giving feedback about the contribution
process). Some of these contributions may be the most valuable to the project as
a whole, because you're coming to the project with fresh eyes, so you can see
the errors and assumptions that seasoned contributors have glossed over.

Note: This disclaimer was originally written by
`Adrienne Lowe `_ for a
`PyCon talk `_, and was adapted by
m4opt based on its use in the README file for the
`MetPy project `_.

Owner

  • Name: m4opt
  • Login: m4opt
  • Kind: organization

Citation (CITATION.cff)

cff-version: 1.2.0
message: Please cite the following works when using this software.
type: software
abstract: Multi-Mission Multi-Messenger Observation Planning Toolkit
authors:
  - family-names: Singer
    given-names: Leo
  - name: pre-commit-ci[bot]
  - name: dependabot[bot]
  - family-names: Parazin
    given-names: B
  - family-names: Tollerud
    given-names: Erik
  - family-names: Bard
    given-names: Chris
  - family-names: Healy
    given-names: Brian
  - family-names: Bellm
    given-names: Eric
  - family-names: Kiendrébéogo
    given-names: Ramodgwendé Weizmann
  - family-names: Wagh
    given-names: Yogesh
date-released: 2025-02-24
identifiers:
  - type: url
    value: https://github.com/m4opt/m4opt
title: m4opt/m4opt
url: https://github.com/m4opt/m4opt
version: v0.1.1
preferred-citation:
  abstract: >-
    The UltraViolet EXplorer (UVEX) is a wide-field ultraviolet space telescope
    selected as a NASA Medium-Class Explorer (MIDEX) mission for launch in 2030.
    UVEX will undertake deep, cadenced surveys of the entire sky to probe low
    mass galaxies and explore the ultraviolet (UV) time-domain sky, and it will
    carry the first rapidly deployable UV spectroscopic capability for a broad
    range of science applications. One of UVEX's prime objectives is to follow
    up gravitational wave (GW) binary neutron star mergers as targets of
    opportunity (ToOs), rapidly scanning across their localization regions to
    search for their kilonova (KN) counterparts. Early-time multiband
    ultraviolet light curves of KNe are key to explaining the interplay between
    jet and ejecta in binary neutron star mergers. Owing to high Galactic
    extinction in the ultraviolet and the variation of GW distance estimates
    over the sky, the sensitivity to kilonovae can vary significantly across the
    GW localization and even across the footprint of a single image given UVEX's
    large field of view. Good ToO observing strategies to trade off between area
    and depth are neither simple nor obvious. We present an optimal strategy for
    GW follow-up with UVEX in which exposure time is adjusted dynamically for
    each field individually to maximize the overall probability of detection. We
    model the scheduling problem using the expressive and powerful mathematical
    framework of mixed integer linear programming (MILP), and employ a
    state-of-the-art MILP solver to automatically generate observing plan
    timelines that achieve high probabilities of kilonova detection. We have
    implemented this strategy in an open-source astronomical scheduling software
    package called the Multi-Mission Multi-Messenger Observation Planning
    Toolkit (M4OPT), on GitHub at https://github.com/m4opt/m4opt.
  authors:
    - family-names: Singer
      given-names: Leo P.
    - family-names: Criswell
      given-names: Alexander W.
    - family-names: Leggio
      given-names: Sydney C.
    - family-names: Kiendrebeogo
      given-names: R. Weizmann
    - family-names: Coughlin
      given-names: Michael W.
    - family-names: Earnshaw
      given-names: Hannah P.
    - family-names: Gezari
      given-names: Suvi
    - family-names: Grefenstette
      given-names: Brian W.
    - family-names: Harrison
      given-names: Fiona A.
    - family-names: Kasliwal
      given-names: Mansi M.
    - family-names: Morris
      given-names: Brett M.
    - family-names: Tollerud
      given-names: Erik
    - family-names: Cenko
      given-names: S. Bradley
  doi: 10.48550/ARXIV.2502.17560
  identifiers:
    - type: doi
      value: 10.48550/ARXIV.2502.17560
    - type: url
      value: https://arxiv.org/abs/2502.17560
  title: >-
    Optimal Follow-Up of Gravitational-Wave Events with the UltraViolet EXplorer
    (UVEX)
  url: https://arxiv.org/abs/2502.17560
  version: '1'
  date-published: 2025-01-01
  year: 2025
  publisher:
    name: arXiv
  type: article

GitHub Events

Total
  • Create event: 38
  • Release event: 4
  • Issues event: 51
  • Watch event: 7
  • Delete event: 39
  • Issue comment event: 261
  • Push event: 252
  • Pull request review event: 153
  • Pull request review comment event: 183
  • Pull request event: 284
  • Fork event: 5
Last Year
  • Create event: 38
  • Release event: 4
  • Issues event: 51
  • Watch event: 7
  • Delete event: 39
  • Issue comment event: 261
  • Push event: 252
  • Pull request review event: 153
  • Pull request review comment event: 183
  • Pull request event: 284
  • Fork event: 5

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 23
  • Total pull requests: 95
  • Average time to close issues: 6 days
  • Average time to close pull requests: 2 days
  • Total issue authors: 5
  • Total pull request authors: 5
  • Average comments per issue: 0.78
  • Average comments per pull request: 0.89
  • Merged pull requests: 69
  • Bot issues: 1
  • Bot pull requests: 38
Past Year
  • Issues: 22
  • Pull requests: 94
  • Average time to close issues: 6 days
  • Average time to close pull requests: 2 days
  • Issue authors: 5
  • Pull request authors: 5
  • Average comments per issue: 0.82
  • Average comments per pull request: 0.9
  • Merged pull requests: 68
  • Bot issues: 1
  • Bot pull requests: 37
Top Authors
Issue Authors
  • lpsinger (24)
  • weizmannk (8)
  • pllim (1)
  • fziruo (1)
  • Yogesh-wagha (1)
  • dependabot[bot] (1)
  • pre-commit-ci[bot] (1)
Pull Request Authors
  • lpsinger (180)
  • pre-commit-ci[bot] (39)
  • dependabot[bot] (17)
  • weizmannk (8)
  • Yogesh-wagha (2)
  • cbard (1)
  • devas015 (1)
Top Labels
Issue Labels
NPR 7150 (2) CI (2) dependencies (1)
Pull Request Labels
dependencies (17) github_actions (9)