Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create more guidelines and update README.md links #8

Merged
merged 1 commit into from
Aug 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Changelog
All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.4.0] - 2024-XX-YY
### Breaking Changes
- ...

### Added
- ...

### Changed
- ...

### Removed
- ...

### Fixed
- ...

### Deprecations
- ...
87 changes: 87 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
# Contributing to MindlessGen

**All contributions to MindlessGen are welcome!**

... no matter if bug fixes, new features, or just typo corrections.

To shorten the overall development and review process, this page contains are a
few sections that can make your life easier.

## General Workflow

To implement your contributions in a local development environment,
we recommend the following workflow:

1. Clone a [fork](https://github.com/grimme-lab/MindlessGen/fork) of the repository to
your local machine.

1. Create and activate a virtual python environment using one of the supported
python versions.

1. Change into the root folder of the cloned repository and install an editable version
including all development dependencies:
```console
pip install -e '.[dev]'
```

1. Run our tests to verify everything works as expected:
```console
pytest -vv --optional
```

1. Install our [pre-commit](https://pre-commit.com/) hooks:
```console
pre-commit install
```

1. Create a new branch for your contribution:
```console
git checkout -b <your_branch_name>
```

1. **Implement your changes.**

1. Optional but recommended to prevent complaints from our CI pipeline:
**Test your code.**

There are several test environments you can run via `tox`, each corresponding to a
[developer tool](#developer-tools) in a certain Python version.
You can retrieve all available environments via `tox list`.

If you want to challenge your machine, you can run all checks in all Python versions
in parallel via:
```console
tox -p
```

This can be considered the ultimate one-stop check to make sure your code is ready
for merge.

1. Before setting up a pull request for your contribution, include all of the changes in the `CHANGELOG.md` [file](https://github.com/grimme-lab/MindlessGen/blob/main/CHANGELOG.md).

1. Push the updated branch back to your fork:
```console
git push origin
```

1. Open a pull request via Github's web page.

## Developer Tools

In order to maintain a high code quality, we use a variety of code developer tools.
When following the above described workflow, [pre-commit](https://pre-commit.com/)
will automatically trigger (most) necessary checks during your development process.
In any case, these checks are also conducted in our CI pipeline, which must pass
before your pull request is considered ready for review.
If you have questions or problems, simply ask for advice.

| Tool | Purpose |
|:------------------------------------------------------------------------------------------------|:------------------------------------------|
| [ruff](https://docs.astral.sh/ruff/) | code linting and formatting |
| [mypy](https://mypy.readthedocs.io/) | static type checking |
| [pytest](https://docs.pytest.org/) | testing |
| [tox](https://tox.wiki/) | orchestrating all the above |
| [coverage](https://pypi.org/project/coverage/) | coverage check and reports |


*This code was thankfully taken over from the [BayBE](https://github.com/emdgroup/baybe) code base.
7 changes: 4 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Mindless Molecule Generator

![CI](https://github.com/marcelmbn/MindlessGen/actions/workflows/ci.yml/badge.svg)
![CI](https://github.com/grimme-lab/MindlessGen/actions/workflows/ci.yml/badge.svg)
<a href="http://www.apache.org/licenses/LICENSE-2.0">
<img src="https://img.shields.io/badge/License-Apache%202.0-orange.svg" alt="Apache-2.0"/>
</a>
Expand All @@ -10,7 +10,7 @@
<img align="right" src="assets/C1H2N1O2Te2Er1Lu2_89bd3e.png" height="150" />

`mindlessgen` is a Python-based program for semi-automated generation of "mindless" small molecules, as described [here](https://pubs.acs.org/doi/full/10.1021/ct800511q).
The rule-based algorithm places atoms randomly within the coordinate space and applies several optimization, fragment detection, and sanity check steps. The program is mainly controlled via a [TOML](https://github.com/marcelmbn/MindlessGen/blob/main/mindlessgen.toml) configuration file, see below for details.
The rule-based algorithm places atoms randomly within the coordinate space and applies several optimization, fragment detection, and sanity check steps. The program is mainly controlled via a [TOML](https://github.com/grimme-lab/MindlessGen/blob/main/mindlessgen.toml) configuration file, see below for details.

## Installation

Expand Down Expand Up @@ -47,6 +47,7 @@ Before pushing a commit to the repository, please run also the optional tests, w
```
pytest -vv --optional
```
For further information how to contribute to this project, please see also the [contribution guidelines](https://github.com/grimme-lab/MindlessGen/blob/main/CONTRIBUTING.md).

## Usage

Expand All @@ -57,7 +58,7 @@ pytest -vv --optional
```
mindlessgen -h
```
This command displays all relevant command line options in the terminal. In addition, all commands are accessible via the [TOML](https://github.com/marcelmbn/MindlessGen/blob/main/mindlessgen.toml) configuration file.
This command displays all relevant command line options in the terminal. In addition, all commands are accessible via the [TOML](https://github.com/grimme-lab/MindlessGen/blob/main/mindlessgen.toml) configuration file.

When using the program for academic purposes, please cite:

Expand Down