Skip to content

Commit

Permalink
Release 0.4.0
Browse files Browse the repository at this point in the history
  • Loading branch information
tlhr committed Jan 23, 2024
0 parents commit e45b600
Show file tree
Hide file tree
Showing 189 changed files with 221,784 additions and 0 deletions.
10 changes: 10 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
### Description

### Checklist
If you're providing a new node for maize, please make sure of the following:
- [ ] My node has been placed in an appropriate subfolder, and exposed in the corresponding `__init__.py` file
- [ ] My node has tests (using `TestRig`, and testing a variety of inputs and parameters)
- [ ] My node is fully documented using [ReST syntax](https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html) and references if neccessary
- [ ] My code passes type-checking using `mypy --strict --explicit-package-bases`
- [ ] My code lints correctly
- [ ] My code has been formatted with `black`, using a `line-length` of 100
26 changes: 26 additions & 0 deletions .github/workflows/mypy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: Mypy

on: [push, workflow_dispatch]

jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.10"]
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh |
bash -s -- --batch
conda env create -f env-dev.yml
conda run --name maize-dev pip install --no-deps .
conda run --name maize-dev pip install types-PyYAML types-toml
- name: Analysing the code with mypy
run: |
conda run --name maize-dev mypy --strict --explicit-package-bases maize/steps maize/utilities
25 changes: 25 additions & 0 deletions .github/workflows/pylint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: Pylint

on: [push, workflow_dispatch]

jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.10"]
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh |
bash -s -- --batch
conda env create -f env-dev.yml
conda run --name maize-dev pip install --no-deps .
- name: Analysing the code with pylint
run: |
conda run --name maize-dev pylint --exit-zero maize/steps maize/utilities
37 changes: 37 additions & 0 deletions .github/workflows/test-docking.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# This workflow will install Python dependencies, run tests and lint with a single version of Python
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python

name: Test-docking

on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
workflow_dispatch:

permissions:
contents: read

jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.10"]
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh |
bash -s -- --batch
conda env create -f env-dev.yml
conda run --name maize-dev pip install --no-deps .
conda run --name maize-dev ./devtools/install_test_deps.sh
- name: Run docking test with pytest
run: |
conda run --name maize-dev pytest tests/test_docking.py
19 changes: 19 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
.ipynb_checkpoints
.VSCodeCounter
__pycache__
*.egg-info
.coverage
.vscode
.pylintrc
.*_cache
*_autosummary
coverage
docs/_build
docs/_static
docs/autosummary
docs/Makefile
docs/make.bat
/test-config.toml
test
testing.ipynb
deplicenses.txt
13 changes: 13 additions & 0 deletions AUTHORS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
Primary Authors
===============
- [Thomas Löhr](https://github.com/tlhr)
- Marco Klähn

Contributing Authors
====================
- Michele Assante
- Lili Cao
- Michael Dodds
- Jon Paul Janet
- Mikhail Kabeshov
- Alessandro Tibo
101 changes: 101 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
# CHANGELOG

## Version 0.4.0
### Features
- Added Gromacs module (Lily)
- Added flexible docking with Vina
- Added additional tag handling utilities
- Added explicit prior and agent parameters to Reinvent
- Added `IsomerCollection` tagging system
- Added active learning module, subgraph, and example notebook

### Changes
- Reorganised cheminformatics

### Fixes
- Fixed relative-absolute conversion of BFEs not using reference correctly
- Fixed `MakeAbsolute` not handling disconnected subgraphs
- Fixed `SaveLibrary` not saving all conformers
- Fixed `AutoDockGPU` not detecting tarred grids as inputs
- Fixed OpenFE dumping failing on existing dump

## Version 0.3.2
### Features
- Tests can now be skipped automatically based on available config options
- Added absolute free energy conversion for `OpenRFE`

### Changes
- Updated REINVENT implementation
- Updated bundled maize

## Version 0.3.1
### Changes
- Updated bundled maize

### Fixes
- Fixed SaveCSV not using the correct tag order
- Various type fixes

## Version 0.3.0
### Features
- Several new filters
- More subgraphs
- OpenFE node
- Constraints for AutoDockGPU and Glide
- Nodes for reaction prediction
- Batched CSV saving
- Flexible docking with Vina

### Changes
- Various improvements to RMSD filtering
- Performance improvements for `Isomer` tag handling
- Allowed certain RDKit ops to timeout
- More robust Schrodinger job handling
- Integration tests
- Maize core wheel for automated builds

### Fixes
- Fix for zombie threads when using REINVENT
- Fix for installation only being possible using `-e`
- Cleaned up typing

## Version 0.2.3
### Changes
- Removed interface for REINVENT 3.2

### Fixes
- Cleanup of package structure
- Updated dependencies
- Added explicit check for Schrodinger license

## Version 0.2.2
### Features
- Added Schrodinger grid preparation tools

### Changes
- Adjusted timeout for Gypsum-DL
- Various enhancements for GLIDE

### Fixes
- Fixed `Vina` command validation for newer `Vina` versions
- Fixed parsing issues for `Vina`


## Version 0.2.1
### Features
- Improved REINVENT interface, using `ReinventEntry` and `ReinventExit`

### Changes
- Timeouts for conformer / isomer generation
- Improved logging

### Fixes
- Check for zero bytes for `Vina` output

## Version 0.2.0

Updated for public release.

## Version 0.1

Initial release.
73 changes: 73 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
Contributing
============
This is a summary of code conventions and contributing guidelines for *maize-contrib*.

Issues & Pull requests
----------------------
To report bugs or suggest new features, open an issue, or submit a pull request with your changes.

Installation
------------
If you will be working on both *maize* and *maize-contrib* it will be easiest to install the environment for *maize-contrib* first, as it encompasses all dependencies for maize and domain-specific extensions. You can then install both packages using editable installs.

Code style
----------
We use the [PEP8](https://peps.python.org/pep-0008/) convention with a 100 character line length - you can use `black` as a formatter with the `--line-length=100` argument. The code base features full static typing, use the following [mypy](https://mypy.readthedocs.io/en/stable/) command to check it:

```shell
mypy --follow-imports=silent --ignore-missing-imports --strict maize
```

Type hints should only be omitted when either mypy or typing doesn't yet fully support the required feature, such as [higher-kinded types](https://github.com/python/typing/issues/548) or type-tuples ([PEP646](https://peps.python.org/pep-0646/)).

> [!IMPORTANT]
> If you installed the maize core in editable mode you may need to specify its location with `$MYPYPATH` to ensure `mypy` can find it. See this [setuptools issue](https://github.com/pypa/setuptools/issues/3518).
Documentation
-------------
Every public class or function should feature a full docstring with a full description of parameters / attributes. Custom nodes should follow the example node in `maize/steps/mai/example/step.py`, default values will be detected and added to the documentation automatically. We follow the [numpy docstring](https://numpydoc.readthedocs.io/en/latest/format.html) standard for readability reasons. Docs are built using [sphinx](https://www.sphinx-doc.org/en/master/) in the `docs` folder:

```shell
make html
```

There will be some warnings from `autosummary` that can be ignored. The built docs can then be found in `docs/_build/html`. To preview them locally you can start a local webserver running the following command in the `docs/_build/html` folder:

```shell
python -m http.server 8000
```

The docs are then available at `http://localhost:8000/index.html`.

Testing
-------
Tests are written using [pytest](https://docs.pytest.org/en/7.2.x/contents.html), located together with the node, and can be run with:

```shell
pytest --log-cli-level=DEBUG maize/steps/mai/example/step.py
```

Any custom nodes should be covered by suitable tests in a `TestSuite<node-name>` class. To make testing the nodes a bit easier, you can use the `maize.utilities.testing.TestRig` class together with `maize.utilities.testing.MockChannel` if required.

Coverage can be reported using:

```shell
pytest tests/ -v --cov maize --cov-report html:coverage
```

New versions
------------
To release a new version of maize, perform the following steps:

1. Create a new branch titled `release-x.x.x`
2. Add your changes to `CHANGELOG.md`
3. Increment version in `pyproject.toml`
4. Commit your changes
5. Rebuild and update the remote documentation (see above)
6. Create a tag using `git tag vx.x.x`
7. Push your changes with `git push` and `git push --tags`
8. Update `master`:
1. `git checkout master`
2. `git pull origin master`
3. `git merge release-x.x.x`
4. `git push origin master`
Loading

0 comments on commit e45b600

Please sign in to comment.