Skip to content

Commit

Permalink
merged in multiqc master and resolved conflicts
Browse files Browse the repository at this point in the history
  • Loading branch information
andrei-seleznev committed Jul 22, 2021
2 parents 9cb93a3 + 83af6d0 commit 08c5272
Show file tree
Hide file tree
Showing 415 changed files with 37,570 additions and 22,379 deletions.
31 changes: 16 additions & 15 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,38 +6,39 @@ I try to manage the required tasks for MultiQC using GitHub issues, you probably

However, don't be put off by this template - other more general issues and suggestions are welcome! Contributions to the code are even more welcome ;)

> _If you need help using MultiQC then the best place to go is the Gitter chatroom where you can ask me questions directly: https://gitter.im/ewels/MultiQC_
> _If you need help using MultiQC then the best place to go is the Gitter chatroom where you can ask me questions directly: [https://gitter.im/ewels/MultiQC](https://gitter.im/ewels/MultiQC)_
## Contribution workflow

If you'd like to write some code for MultiQC, the standard workflow
is as follows:

1. Check that there isn't already an issue about your idea in the
[MultiQC issues](https://github.com/ewels/MultiQC/issues) to avoid
duplicating work.
* Feel free to add a new issue here for the same reason.
- Feel free to add a new issue here for the same reason.
2. Fork the MultiQC repository to your GitHub account
3. Make the necessary changes / additions within your forked repository
4. Submit a Pull Request and wait for the code to be reviewed and merged.

If you're not used to this workflow with git, you can start with some [basic docs from GitHub](https://help.github.com/articles/fork-a-repo/) or even their [excellent interactive tutorial](https://try.github.io/).
If you're not used to this workflow with git, you can start with some [basic docs from GitHub](https://help.github.com/articles/fork-a-repo/).

When it comes to MultiQC, please consult the [MultiQC documentation](http://multiqc.info/docs/) and don't hesitate to get in touch on [gitter](https://gitter.im/ewels/MultiQC) for help and feedback.
When it comes to MultiQC, please consult the [MultiQC documentation](http://multiqc.info/docs/) and don't hesitate to get in touch on [Gitter](https://gitter.im/ewels/MultiQC) for help and feedback.

A few pointers to bear in mind:

* New modules should be _fast_
* MultiQC modules parse log files, they _don't_ calculating new metrics (typically).
* New modules must scale well
* Try to imagine what will happen if someone runs your module with 5000 samples
* Code must run on both Python 2 and 3
- New modules should be _fast_
- MultiQC modules parse log files, they _don't_ calculating new metrics (typically).
- New modules must scale well
- Try to imagine what will happen if someone runs your module with 5000 samples

### Review workflow

Once you've submitted a new pull request, here's what you can expect from me:

* I usually don't look at your code at all until the automated tests pass
* The tests use example data in the [MultiQC_TestData](https://github.com/ewels/MultiQC_TestData) repository, so you'll need some files there before the PR will go any further.
* The tests use [GitHub actions](https://github.com/features/actions) so should also run automatically on your fork.
* First pass - I go through and give feedback just by reading the code
* Second pass - I download and run your code, usually more feedback
* Merge! Once we're both happy, I merge into the main codebase.
- I usually don't look at your code at all until the automated tests pass
- The tests use example data in the [MultiQC_TestData](https://github.com/ewels/MultiQC_TestData) repository, so you'll need some files there before the PR will go any further.
- The tests use [GitHub Actions](https://github.com/features/actions) so should also run automatically on your fork.
- First pass - I go through and give feedback just by reading the code
- Second pass - I download and run your code, usually more feedback
- Merge! Once we're both happy, I merge into the main codebase.
27 changes: 0 additions & 27 deletions .github/ISSUE_TEMPLATE/bug_report.md

This file was deleted.

43 changes: 43 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Bug report
description: File a bug report if MultiQC is breaking / not behaving in the way you expect
body:
- type: textarea
id: description
attributes:
label: Description of bug
description: |
A clear and concise description of what the bug is.
**Please do note paste in the contents of example files** - upload them as a file.
validations:
required: true

- type: textarea
id: error-file
attributes:
label: File that triggers the error
description: |
Please drag and drop (and upload to the GitHub issue) an input file that can be used to replicate the error.
***Please do not copy and paste log contents***, as important whitespace can change.
If the file type is not allowed, please compress into a `.zip` file.
placeholder: "[ Drag and drop an example file here to upload ]"

- type: textarea
id: log
attributes:
label: MultiQC Error log
description: |
Please paste your **full command** and MultiQC log.
Please do not truncate it, as the MultiQC version and command may be needed to help.
render: console
placeholder: |
$ multiqc .
/// MultiQC 🔍 | v1.10.1
| multiqc | Search path : /path/to/my/data
| searching | ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 2352/2352
| fastqc | Found 498 reports
| multiqc | Compressing plot data
| multiqc | Report : multiqc_report.html
| multiqc | Data : multiqc_data
| multiqc | MultiQC complete
7 changes: 7 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
contact_links:
- name: MultiQC Documentation
url: https://multiqc.info/docs/
about: Make sure you've checked the documentation first.
- name: MultiQC Gitter chat
url: https://gitter.im/ewels/MultiQC
about: You can ask quick questions on the MultiQC Gitter chat.
17 changes: 0 additions & 17 deletions .github/ISSUE_TEMPLATE/feature_request.md

This file was deleted.

10 changes: 10 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
name: Feature request
description: Suggest an idea for MultiQC
body:
- type: textarea
id: description
attributes:
label: Description of feature
description: Please describe your suggestion for a new feature. It might help to describe a problem or use case, plus any alternatives that you have considered.
validations:
required: true
21 changes: 0 additions & 21 deletions .github/ISSUE_TEMPLATE/module-request.md

This file was deleted.

64 changes: 64 additions & 0 deletions .github/ISSUE_TEMPLATE/module-request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
name: Module request
description: Request support for a new bioinformatics tool in MultiQC
labels: ["module: new"]
body:
- type: input
id: name
attributes:
label: Name of the tool
placeholder: eg. My Tool
validations:
required: true

- type: input
id: homepage
attributes:
label: Tool homepage
placeholder: eg. http://www.github/me/mytool
validations:
required: true

- type: input
id: description
attributes:
label: Tool description
description: A short single-sentence description that will be used in the modules listing on the MultiQC homepage.
placeholder: eg. My Tool is a really excellent tool that does what no other tool can do
validations:
required: true

- type: textarea
id: example-files
attributes:
label: Tool output
description: |
Please drag and drop (and upload to the GitHub issue) some example files that can be used to write the module.
***Please do not copy and paste log contents***, as important whitespace can change.
If the file type is not allowed, please compress into a `.zip` file.
If the file is many MBs then it's ok to truncate it, though please leave a few lines of data in so that it's clear what the format is.
placeholder: "[ Drag and drop some example files here to upload ]"
validations:
required: true

- type: input
id: filename-pattern
attributes:
label: Log filename pattern
description: |
Specify the filename pattern only if standardised by the tool and **NOT** specified by user. It must be consistent for all runs of tool by any user.
Leave blank if the tool does not have a standard file naming pattern (eg. printing to standard out, or taking free text filename as a command line option).
placeholder: eg. *_mytool.txt

- type: textarea
id: plots
attributes:
label: Data suitable for MultiQC plot(s)
description: |
What data in the tool output is most important - what would you like to see in a plot or dedicated table?
Remember that MultiQC should just highlight the important bits - enough to spot outlier samples for further examination.
- type: textarea
id: general-stats
attributes:
label: Most interesting data for the General Stats table
description: Is there 1-3 values that would be helpful to have in the _General Statistics_ table, alongside results from other tools?
32 changes: 15 additions & 17 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,19 @@
<!--
Many thanks to contributing to MultiQC!
Please fill in the appropriate checklist below (delete whatever is not relevant).
-->

Please fill in the appropriate checklist below (delete whatever is not relevant). These are the most common things I request on pull requests (PRs).
- [ ] This comment contains a description of changes (with reason)
- [ ] `CHANGELOG.md` has been updated

## If this PR is _not_ a new module
- [ ] This comment contains a description of changes (with reason)
- [ ] `CHANGELOG.md` has been updated
- [ ] (optional but recommended): https://github.com/ewels/MultiQC_TestData contains test data for this change
<!-- If this PR is for a NEW module - delete if not -->

## If this PR is for a new module
- [ ] There is example tool output for tools in the https://github.com/ewels/MultiQC_TestData repository
- [ ] Code is tested and works locally (including with `--lint` flag)
- [ ] `CHANGELOG.md` is updated
- [ ] `README.md` is updated
- [ ] `docs/README.md` is updated with link to below
- [ ] `docs/modulename.md` is created
- [ ] Everything that can be represented with a plot instead of a table is a plot
- [ ] Report sections have a description and help text (with `self.add_section`)
- [ ] There aren't any huge tables with > 6 columns (explain reasoning if so)
- [ ] Each table column has a different colour scale to its neighbour, which relates to the data (eg. if high numbers are bad, they're red)
- [ ] Module does not do any significant computational work
- [ ] There is example tool output for tools in the <https://github.com/ewels/MultiQC_TestData> repository or attached to this PR
- [ ] Code is tested and works locally (including with `--lint` flag)
- [ ] `docs/README.md` is updated with link to below
- [ ] `docs/modulename.md` is created
- [ ] Everything that can be represented with a plot instead of a table is a plot
- [ ] Report sections have a description and help text (with `self.add_section`)
- [ ] There aren't any huge tables with > 6 columns (explain reasoning if so)
- [ ] Each table column has a different colour scale to its neighbour, which relates to the data (eg. if high numbers are bad, they're red)
- [ ] Module does not do any significant computational work
72 changes: 38 additions & 34 deletions .github/RELEASE_CHECKLIST.md
Original file line number Diff line number Diff line change
@@ -1,37 +1,44 @@
# Release checklist

This checklist is for my own reference, as I forget the steps every time.

1. Check that everything is up to date and ready to go
2. Figure out what this release should be called
3. Update version numbers in code: `setup.py`, `CHANGELOG.md`
4. Link the changelog subheading to the as yet non-existant release URL. Add date.
5. Install the package again in `install` mode:
```bash
pip install .
```
* This removes the commit hash from the version number when MultiQC runs

```bash
pip install .
```

- This removes the commit hash from the version number when MultiQC runs

6. Run using test data
* Check for any command line or javascript errors
* Check version numbers are printed correctly
7. Create new demo reports for the website and upload.
* Spot any previously unnoticed bugs and fix
8. Release on PyPI:
```bash
rm -rf dist/
python setup.py sdist bdist_wheel
twine upload dist/*.tar.gz
```
9. Test that it pip installs:
```bash
conda create --name testing --yes python pip && source activate testing
pip install multiqc
multiqc .
source deactivate && conda remove --name testing --all --yes && conda clean --all --yes
```
10. Commit and push version updates
11. Make a [release](https://github.com/ewels/MultiQC/releases) on GitHub - paste changelog section.
12. Check that [PyPI listing page](https://pypi.python.org/pypi/multiqc/) looks sane
13. Make a new release on `bioconda`:
- Check for any command line or javascript errors
- Check version numbers are printed correctly
7. Create new demo reports for the website

- Comment out any config in `~/.multiqc_config.yaml`

```bash
mv ~/.multiqc_config.yaml ~/.multiqc_config.yaml.bkup
```

```bash
mv ~/.multiqc_config.yaml.bkup ~/.multiqc_config.yaml
```

- Spot any previously unnoticed bugs and fix
- Upload to the website and push change to Git

8. Commit and push version updates
9. Make a [release](https://github.com/ewels/MultiQC/releases) on GitHub - paste changelog section.
10. Check that [PyPI listing page](https://pypi.python.org/pypi/multiqc/) looks sane
11. Update version numbers to new dev version in `setup.py` + a new section in the changelog for the development version
12. Commit and push version bump
13. Make a new release on `bioconda` (assuming new modules were added):

```bash
# Update to latest bioconda
cd ../bioconda-recipes
Expand All @@ -41,29 +48,26 @@ This checklist is for my own reference, as I forget the steps every time.
git branch -D multiqc
# Build new conda recipe from PyPI to automatically collect new dependencies
git checkout -b multiqc
cd recipes
# Do the conda skeleton to copy the dependencies
mkdir mqctemp && cd mqctemp && atom .
cd recipes && mkdir mqctemp && cd mqctemp && code .
conda skeleton pypi multiqc
# Update with new release header - see https://goo.gl/ZfRnmj
cd ../multiqc && atom .
cd ../multiqc && code .
# Get the sha256sum of the release
curl -OL https://github.com/ewels/MultiQC/archive/v1.5.tar.gz
shasum --algorithm 256 v1.5.tar.gz
# Switch out download for GitHub release and remove all other cruft
# commit changes
cd ../../
git commit -am "MultiQC version 1.5 release"
git commit -am "MultiQC version 1.23 release"
# Test locally
docker pull bioconda/bioconda-utils-build-env
circleci build
# Push updates
git push -u origin multiqc
# Submit a Pull Request and merge
```

14. Tell UPPMAX about the new version and ask for the module system to be updated.
15. Describe new release on [SeqAnswers thread](http://seqanswers.com/forums/showthread.php?p=195831#post195831)
16. Tweet that new version is released
17. Update version numbers to new dev version in `setup.py`
18. Add a new section in the changelog for the development version
19. Commit and push. Continue making more awesome :metal:
15. Tweet that new version is released
16. Continue making more awesome :metal:

0 comments on commit 08c5272

Please sign in to comment.