diff --git a/.github/actions/setup-deps/action.yaml b/.github/actions/setup-deps/action.yaml index 94ef2a42601..e5e0b25744a 100644 --- a/.github/actions/setup-deps/action.yaml +++ b/.github/actions/setup-deps/action.yaml @@ -78,6 +78,8 @@ inputs: default: 'pytest-cov' pytest-xdist: default: 'pytest-xdist' + trove-classifiers: + default: 'trove-classifiers' # pip-install optional dependencies duecredit: default: 'duecredit' @@ -145,6 +147,7 @@ runs: ${{ inputs.coverage }} ${{ inputs.pytest-cov }} ${{ inputs.pytest-xdist }} + ${{ inputs.trove-classifiers }} PIP_OPT_DEPS: | ${{ inputs.duecredit }} ${{ inputs.parmed }} diff --git a/package/CHANGELOG b/package/CHANGELOG index c6495c0121b..12d2bc53243 100644 --- a/package/CHANGELOG +++ b/package/CHANGELOG @@ -41,6 +41,7 @@ Fixes (e.g. bonds, angles) (PR #3779). Enhancements + * MDAnalysis now follows PEP621 (PR #3528) * Added a reader for GROMACS TNG files based on PyTNG (PR #3765, Issue #3237, partially addressing Issue #865) * Added ability for hbond analysis to use types when resnames are not diff --git a/package/pypi-description.rst b/package/pypi-description.rst deleted file mode 100644 index c422f20bdab..00000000000 --- a/package/pypi-description.rst +++ /dev/null @@ -1,195 +0,0 @@ -================================ - MDAnalysis Repository README -================================ - -|numfocus| |build| |travis| |cov| [*]_ - -|docs| |devdocs| |usergroup| |developergroup| |anaconda| |mybinder| - -MDAnalysis_ is a Python library for the analysis of computer simulations of many-body systems at the molecular scale, spanning use cases from interactions of drugs with proteins to novel materials. It is widely used in the scientific community and is written by scientists for scientists. - -It works with a wide range of popular simulation packages including Gromacs, Amber, NAMD, CHARMM, DL_Poly, HooMD, LAMMPS and many others — see the lists of supported `trajectory formats`_ and `topology formats`_. -MDAnalysis also includes widely used analysis algorithms in the `MDAnalysis.analysis`_ module. - -.. _numfocus-fiscal-sponsor-attribution: - -The MDAnalysis project uses an `open governance model`_ and is fiscally sponsored by `NumFOCUS`_. Consider making -a `tax-deductible donation`_ to help the project pay for developer time, professional services, travel, workshops, and a variety of other needs. - -.. image:: https://www.mdanalysis.org/public/images/numfocus-sponsored-small.png - :alt: NumFOCUS (Fiscally Sponsored Project) - :target: https://numfocus.org/project/mdanalysis - :align: center - -This project is bound by a `Code of Conduct`_. - -|powered_by_MDA| - -If you use MDAnalysis_ in your project consider lettting your users and the world know about it by displaying the MDAnalysis_ badge! `Embedding code`_ is available for different markups. - -Example analysis script -======================= - -.. code:: python - - import MDAnalysis as mda - - # Load simulation results with a single line - u = mda.Universe('topol.tpr','traj.trr') - - # Select atoms - ag = u.select_atoms('name OH') - - # Atom data made available as Numpy arrays - ag.positions - ag.velocities - ag.forces - - # Iterate through trajectories - for ts in u.trajectory: - print(ag.center_of_mass()) - - -Documentation -============= - -**New users** should read the `Quickstart Guide`_ and might want to -look at our videos_, in which core developers explain various aspects -of MDAnalysis. - -**All users** should read the `User Guide`_. - -**Developers** may also want to refer to the `MDAnalysis API docs`_. - -A growing number of `tutorials`_ are available that explain how to -conduct RMSD calculations, structural alignment, distance and contact -analysis, and many more. - - -Installation and availability -============================= - -The latest release can be **installed via ``pip`` or ``conda``** as -described in the `Installation Quick Start`_. - -**Source code** is hosted in a git repository at -https://github.com/MDAnalysis/mdanalysis and is available under the -GNU General Public License, version 2 (see the file LICENSE_). - - -Contributing -============ - -Please report **bugs** or **enhancement requests** through the `Issue -Tracker`_. Questions can also be asked on the `user mailing list`_. - -If you are a **new developer** who would like to start contributing to -MDAnalysis get in touch on the `developer mailing list`_. To set up a -development environment and run the test suite read the `developer -guide`_. - - -Citation -======== - -When using MDAnalysis in published work, please cite the following -two papers: - -* R. J. Gowers, M. Linke, J. Barnoud, T. J. E. Reddy, - M. N. Melo, S. L. Seyler, D. L. Dotson, J. Domanski, - S. Buchoux, I. M. Kenney, and O. Beckstein. MDAnalysis: - A Python package for the rapid analysis of molecular - dynamics simulations. In S. Benthall and S. Rostrup, - editors, Proceedings of the 15th Python in Science - Conference, pages 102-109, Austin, TX, 2016. SciPy. - doi:`10.25080/Majora-629e541a-00e`_ - -* N. Michaud-Agrawal, E. J. Denning, T. B. Woolf, - and O. Beckstein. MDAnalysis: A Toolkit for the Analysis of Molecular - Dynamics Simulations. *J. Comput. Chem.* **32** (2011), 2319--2327. - doi:`10.1002/jcc.21787`_ - -For citations of included algorithms and sub-modules please see the references_. - - - -.. Footnotes - -.. [*] **build**: Unit testing is for the whole package; **coverage** is - shown for the core library modules and the analysis modules. - -.. _NumFOCUS: https://numfocus.org/ -.. _open governance model: https://www.mdanalysis.org/about/#governance -.. _tax-deductible donation: https://numfocus.org/donate-to-mdanalysis -.. _`Code of Conduct`: https://www.mdanalysis.org/pages/conduct/ -.. _trajectory formats: https://docs.mdanalysis.org/documentation_pages/coordinates/init.html#id1 -.. _topology formats: https://docs.mdanalysis.org/documentation_pages/topology/init.html#supported-topology-formats -.. _MDAnalysis: https://www.mdanalysis.org -.. _LICENSE: - https://github.com/MDAnalysis/mdanalysis/blob/master/LICENSE -.. _`Installation Quick Start`: - https://www.mdanalysis.org/pages/installation_quick_start/ -.. _`MDAnalysis.analysis`: https://docs.mdanalysis.org/documentation_pages/analysis_modules.html -.. _`tutorials`: https://userguide.mdanalysis.org/examples/README.html -.. _`videos`: https://www.mdanalysis.org/pages/learning_MDAnalysis/#videos -.. _`Quickstart Guide`: - https://userguide.mdanalysis.org/examples/quickstart.html -.. _`User Guide`: https://userguide.mdanalysis.org -.. _`MDAnalysis API docs`: - https://docs.mdanalysis.org -.. _`Issue Tracker`: https://github.com/mdanalysis/mdanalysis/issues -.. _`user mailing list`: - https://groups.google.com/group/mdnalysis-discussion -.. _`developer guide`: - https://userguide.mdanalysis.org/contributing.html -.. _`developer mailing list`: - https://groups.google.com/group/mdnalysis-devel -.. _`10.1002/jcc.21787`: https://dx.doi.org/10.1002/jcc.21787 -.. _`10.25080/Majora-629e541a-00e`: https://doi.org/10.25080/Majora-629e541a-00e -.. _references: https://docs.mdanalysis.org/documentation_pages/references.html -.. _Embedding code: https://www.mdanalysis.org/pages/citations/#powered-by-mdanalysis - - -.. |usergroup| image:: https://img.shields.io/badge/Google%20Group-Users-lightgrey.svg - :alt: User Google Group - :target: https://groups.google.com/group/mdnalysis-discussion - -.. |developergroup| image:: https://img.shields.io/badge/Google%20Group-Developers-lightgrey.svg - :alt: Developer Google Group - :target: https://groups.google.com/group/mdnalysis-devel - -.. |docs| image:: https://img.shields.io/badge/docs-latest-brightgreen.svg - :alt: Documentation (latest release) - :target: https://docs.mdanalysis.org - -.. |devdocs| image:: https://img.shields.io/badge/docs-development-yellow.svg - :alt: Documentation (development version) - :target: https://docs.mdanalysis.org/dev - -.. |numfocus| image:: https://img.shields.io/badge/powered%20by-NumFOCUS-orange.svg?style=flat&colorA=E1523D&colorB=007D8A - :alt: Powered by NumFOCUS - :target: https://www.numfocus.org/ - -.. |build| image:: https://github.com/MDAnalysis/mdanalysis/actions/workflows/gh-ci.yaml/badge.svg - :alt: Github Actions Build Status - :target: https://github.com/MDAnalysis/mdanalysis/actions/workflows/gh-ci.yaml - -.. |travis| image:: https://img.shields.io/travis/MDAnalysis/mdanalysis/develop?label=Travis%20CI - :alt: Travis CI Build Status - :target: https://travis-ci.com/MDAnalysis/mdanalysis - -.. |cov| image:: https://codecov.io/gh/MDAnalysis/mdanalysis/branch/develop/graph/badge.svg - :alt: Coverage Status - :target: https://codecov.io/gh/MDAnalysis/mdanalysis - -.. |anaconda| image:: https://anaconda.org/conda-forge/mdanalysis/badges/version.svg - :alt: Anaconda - :target: https://anaconda.org/conda-forge/mdanalysis - -.. |mybinder| image:: https://mybinder.org/badge.svg - :alt: My Binder - :target: https://mybinder.org/v2/gh/MDAnalysis/binder-notebook/master - -.. |powered_by_MDA| image:: https://img.shields.io/badge/Powered%20by-MDAnalysis-orange.svg?logoWidth=15&logo=data:image/x-icon;base64,AAABAAEAEBAAAAEAIAAoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJD+XwCY/fEAkf3uAJf97wGT/a+HfHaoiIWE7n9/f+6Hh4fvgICAjwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACT/yYAlP//AJ///wCg//8JjvOchXly1oaGhv+Ghob/j4+P/39/f3IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJH8aQCY/8wAkv2kfY+elJ6al/yVlZX7iIiI8H9/f7h/f38UAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38egYF/noqAebF8gYaagnx3oFpUUtZpaWr/WFhY8zo6OmT///8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAn46Ojv+Hh4b/jouJ/4iGhfcAAADnAAAA/wAAAP8AAADIAAAAAwCj/zIAnf2VAJD/PAAAAAAAAAAAAAAAAICAgNGHh4f/gICA/4SEhP+Xl5f/AwMD/wAAAP8AAAD/AAAA/wAAAB8Aov9/ALr//wCS/Z0AAAAAAAAAAAAAAACBgYGOjo6O/4mJif+Pj4//iYmJ/wAAAOAAAAD+AAAA/wAAAP8AAABhAP7+FgCi/38Axf4fAAAAAAAAAAAAAAAAiIiID4GBgYKCgoKogoB+fYSEgZhgYGDZXl5e/m9vb/9ISEjpEBAQxw8AAFQAAAAAAAAANQAAADcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjo6Mb5iYmP+cnJz/jY2N95CQkO4pKSn/AAAA7gAAAP0AAAD7AAAAhgAAAAEAAAAAAAAAAACL/gsAkv2uAJX/QQAAAAB9fX3egoKC/4CAgP+NjY3/c3Nz+wAAAP8AAAD/AAAA/wAAAPUAAAAcAAAAAAAAAAAAnP4NAJL9rgCR/0YAAAAAfX19w4ODg/98fHz/i4uL/4qKivwAAAD/AAAA/wAAAP8AAAD1AAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALGxsVyqqqr/mpqa/6mpqf9KSUn/AAAA5QAAAPkAAAD5AAAAhQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkUFBSuZ2dn/3V1df8uLi7bAAAATgBGfyQAAAA2AAAAMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0AAADoAAAA/wAAAP8AAAD/AAAAWgC3/2AAnv3eAJ/+dgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9AAAA/wAAAP8AAAD/AAAA/wAKDzEAnP3WAKn//wCS/OgAf/8MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAANwAAADtAAAA7QAAAMAAABUMAJn9gwCe/e0Aj/2LAP//AQAAAAAAAAAA - :alt: Powered by MDAnalysis - :target: https://www.mdanalysis.org diff --git a/package/pyproject.toml b/package/pyproject.toml index f6d2a1c4bc1..0b7368633f6 100644 --- a/package/pyproject.toml +++ b/package/pyproject.toml @@ -25,3 +25,90 @@ requires = [ "setuptools", "wheel", ] + +[project] +name = "MDAnalysis" +dynamic = ['version',] +license = {file = "LICENSE"} +readme = "README.rst" +description = "An object-oriented toolkit to analyze molecular dynamics trajectories." +authors = [ + {name = 'MDAnalysis Development Team', email = 'mdanalysis@numfocus.org'} +] +maintainers = [ + {name = 'MDAnalysis Core Developers', email = 'mdanalysis@numfocus.org'} +] +requires-python = ">=3.8" +dependencies = [ + 'numpy>=1.20.0', + 'biopython>=1.71', + 'networkx>=2.0', + 'GridDataFormats>=0.4.0', + 'mmtf-python>=1.0.0', + 'joblib>=0.12', + 'scipy>=1.5.0', + 'matplotlib>=1.5.1', + 'tqdm>=4.43.0', + 'threadpoolctl', + 'packaging', + 'fasteners', + 'gsd>=1.9.3', +] +keywords = [ + "python", "science", "chemistry", "biophysics", "molecular-dynamics", + "computational-chemistry", "molecular-simulation", "analysis", + "trajectory-analysis", +] +classifiers = [ + 'Development Status :: 6 - Mature', + 'Environment :: Console', + 'Intended Audience :: Science/Research', + 'License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)', + 'Operating System :: POSIX', + 'Operating System :: MacOS :: MacOS X', + 'Operating System :: Microsoft :: Windows', + 'Programming Language :: Python', + 'Programming Language :: Python :: 3.8', + 'Programming Language :: Python :: 3.9', + 'Programming Language :: Python :: 3.10', + 'Programming Language :: Python :: 3.11', + 'Programming Language :: C', + 'Topic :: Scientific/Engineering', + 'Topic :: Scientific/Engineering :: Bio-Informatics', + 'Topic :: Scientific/Engineering :: Chemistry', + 'Topic :: Software Development :: Libraries :: Python Modules', +] + +[project.optional-dependencies] +extra_formats = [ + "netCDF4>=1.0", + "h5py>=2.10", + "chemfiles>=0.10", + "pyedr>=0.7.0", +] +analysis = [ + "seaborn", + "scikit-learn", + "tidynamics>=1.0.0", +] +doc = [ + "sphinx", + "sphinx-sitemap", + "sphinx_rtd_theme", + "msmb_theme==1.2.0", + "sphinxcontrib-bibtex", + "pybtex", + "pybtex-docutils", +] + + +[project.urls] +Documentation = 'https://docs.mdanalysis.org/' +"User Guide" = 'https://userguide.mdanalysis.org/' +"Issue Tracker" = 'https://github.com/mdanalysis/mdanalysis/issues' +"User Group" = 'https://groups.google.com/g/mdnalysis-discussion/' +Discord = 'https://discord.com/channels/807348386012987462/' +Blog = 'https://www.mdanalysis.org/blog/' +Twitter = 'https://twitter.com/mdanalysis' +Source = 'https://github.com/mdanalysis/mdanalysis' + diff --git a/package/setup.py b/package/setup.py index 787b42b5678..be62e1d6f23 100755 --- a/package/setup.py +++ b/package/setup.py @@ -573,7 +573,7 @@ def long_description(readme): 'Development Status :: 6 - Mature', 'Environment :: Console', 'Intended Audience :: Science/Research', - 'License :: OSI Approved :: GNU General Public License v2 (GPLv2)', + 'License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)', 'Operating System :: POSIX', 'Operating System :: MacOS :: MacOS X', 'Operating System :: Microsoft :: Windows ', @@ -610,8 +610,7 @@ def long_description(readme): setup(name='MDAnalysis', version=RELEASE, - description=('An object-oriented toolkit to analyze molecular dynamics ' - 'trajectories generated by CHARMM, Gromacs, NAMD, LAMMPS, or Amber.'), + description='An object-oriented toolkit to analyze molecular dynamics trajectories.', long_description=LONG_DESCRIPTION, long_description_content_type='text/x-rst', author='MDAnalysis Development Team', @@ -629,7 +628,7 @@ def long_description(readme): 'Twitter': 'https://twitter.com/mdanalysis', 'Source': 'https://github.com/mdanalysis/mdanalysis', }, - license='GPL 2', + license='GPL-2.0-or-later', classifiers=CLASSIFIERS, provides=['MDAnalysis'], packages=find_packages(), diff --git a/testsuite/setup.py b/testsuite/setup.py index c8767bdb1e5..cd75128461d 100755 --- a/testsuite/setup.py +++ b/testsuite/setup.py @@ -95,7 +95,7 @@ def run(self): 'Development Status :: 6 - Mature', 'Environment :: Console', 'Intended Audience :: Science/Research', - 'License :: OSI Approved :: GNU General Public License v2 (GPLv2)', + 'License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)', 'Operating System :: POSIX', 'Operating System :: MacOS :: MacOS X', 'Operating System :: Microsoft :: Windows ', @@ -129,7 +129,7 @@ def run(self): 'Issue Tracker': 'https://github.com/mdanalysis/mdanalysis/issues', 'Source': 'https://github.com/mdanalysis/mdanalysis', }, - license='GPL 2', + license='GPL-2.0-or-later', classifiers=CLASSIFIERS, packages=find_packages(), package_dir={'MDAnalysisTests': 'MDAnalysisTests',