Skip to content
This repository has been archived by the owner on Mar 12, 2022. It is now read-only.

Commit

Permalink
v2.1.0 (#76)
Browse files Browse the repository at this point in the history
* Bump rich from 9.11.1 to 9.12.0

Bumps [rich](https://github.com/willmcgugan/rich) from 9.11.1 to 9.12.0.
- [Release notes](https://github.com/willmcgugan/rich/releases)
- [Changelog](https://github.com/willmcgugan/rich/blob/master/CHANGELOG.md)
- [Commits](Textualize/rich@v9.11.1...9.12.0)

Signed-off-by: dependabot[bot] <[email protected]>

* Fixed typo.

* Removed dependency shield

* Bump rich from 9.12.0 to 9.12.3

Bumps [rich](https://github.com/willmcgugan/rich) from 9.12.0 to 9.12.3.
- [Release notes](https://github.com/willmcgugan/rich/releases)
- [Changelog](https://github.com/willmcgugan/rich/blob/master/CHANGELOG.md)
- [Commits](Textualize/rich@9.12.0...v9.12.3)

Signed-off-by: dependabot[bot] <[email protected]>

* Bump rich from 9.12.3 to 9.12.4

Bumps [rich](https://github.com/willmcgugan/rich) from 9.12.3 to 9.12.4.
- [Release notes](https://github.com/willmcgugan/rich/releases)
- [Changelog](https://github.com/willmcgugan/rich/blob/master/CHANGELOG.md)
- [Commits](Textualize/rich@v9.12.3...v9.12.4)

Signed-off-by: dependabot[bot] <[email protected]>

* Bump pandas from 1.2.2 to 1.2.3

Bumps [pandas](https://github.com/pandas-dev/pandas) from 1.2.2 to 1.2.3.
- [Release notes](https://github.com/pandas-dev/pandas/releases)
- [Changelog](https://github.com/pandas-dev/pandas/blob/master/RELEASE.md)
- [Commits](pandas-dev/pandas@v1.2.2...v1.2.3)

Signed-off-by: dependabot[bot] <[email protected]>

* Bump rich from 9.12.4 to 9.13.0

Bumps [rich](https://github.com/willmcgugan/rich) from 9.12.4 to 9.13.0.
- [Release notes](https://github.com/willmcgugan/rich/releases)
- [Changelog](https://github.com/willmcgugan/rich/blob/master/CHANGELOG.md)
- [Commits](Textualize/rich@v9.12.4...v9.13.0)

Signed-off-by: dependabot[bot] <[email protected]>

* Bump rich from 9.13.0 to 10.0.0

Bumps [rich](https://github.com/willmcgugan/rich) from 9.13.0 to 10.0.0.
- [Release notes](https://github.com/willmcgugan/rich/releases)
- [Changelog](https://github.com/willmcgugan/rich/blob/master/CHANGELOG.md)
- [Commits](Textualize/rich@v9.13.0...v10.0.0)

Signed-off-by: dependabot[bot] <[email protected]>

* Bump matplotlib from 3.3.4 to 3.4.0

Bumps [matplotlib](https://github.com/matplotlib/matplotlib) from 3.3.4 to 3.4.0.
- [Release notes](https://github.com/matplotlib/matplotlib/releases)
- [Commits](matplotlib/matplotlib@v3.3.4...v3.4.0)

Signed-off-by: dependabot[bot] <[email protected]>

* Bump numpy from 1.20.1 to 1.20.2

Bumps [numpy](https://github.com/numpy/numpy) from 1.20.1 to 1.20.2.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/main/doc/HOWTO_RELEASE.rst.txt)
- [Commits](numpy/numpy@v1.20.1...v1.20.2)

Signed-off-by: dependabot[bot] <[email protected]>

* Bump rich from 10.0.0 to 10.0.1

Bumps [rich](https://github.com/willmcgugan/rich) from 10.0.0 to 10.0.1.
- [Release notes](https://github.com/willmcgugan/rich/releases)
- [Changelog](https://github.com/willmcgugan/rich/blob/master/CHANGELOG.md)
- [Commits](Textualize/rich@v10.0.0...v10.0.1)

Signed-off-by: dependabot[bot] <[email protected]>

* Bump matplotlib from 3.4.0 to 3.4.1

Bumps [matplotlib](https://github.com/matplotlib/matplotlib) from 3.4.0 to 3.4.1.
- [Release notes](https://github.com/matplotlib/matplotlib/releases)
- [Commits](matplotlib/matplotlib@v3.4.0...v3.4.1)

Signed-off-by: dependabot[bot] <[email protected]>

* Bump pytest from 6.2.2 to 6.2.3

Bumps [pytest](https://github.com/pytest-dev/pytest) from 6.2.2 to 6.2.3.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](pytest-dev/pytest@6.2.2...6.2.3)

Signed-off-by: dependabot[bot] <[email protected]>

* Bump rich from 10.0.1 to 10.1.0

Bumps [rich](https://github.com/willmcgugan/rich) from 10.0.1 to 10.1.0.
- [Release notes](https://github.com/willmcgugan/rich/releases)
- [Changelog](https://github.com/willmcgugan/rich/blob/master/CHANGELOG.md)
- [Commits](Textualize/rich@v10.0.1...v10.1.0)

Signed-off-by: dependabot[bot] <[email protected]>

* Bump pandas from 1.2.3 to 1.2.4

Bumps [pandas](https://github.com/pandas-dev/pandas) from 1.2.3 to 1.2.4.
- [Release notes](https://github.com/pandas-dev/pandas/releases)
- [Changelog](https://github.com/pandas-dev/pandas/blob/master/RELEASE.md)
- [Commits](pandas-dev/pandas@v1.2.3...v1.2.4)

Signed-off-by: dependabot[bot] <[email protected]>

* Bump pytest from 6.2.3 to 6.2.4

Bumps [pytest](https://github.com/pytest-dev/pytest) from 6.2.3 to 6.2.4.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](pytest-dev/pytest@6.2.3...6.2.4)

Signed-off-by: dependabot[bot] <[email protected]>

* Bump rich from 10.1.0 to 10.2.0

Bumps [rich](https://github.com/willmcgugan/rich) from 10.1.0 to 10.2.0.
- [Release notes](https://github.com/willmcgugan/rich/releases)
- [Changelog](https://github.com/willmcgugan/rich/blob/master/CHANGELOG.md)
- [Commits](Textualize/rich@v10.1.0...v10.2.0)

Signed-off-by: dependabot[bot] <[email protected]>

* Bump numpy from 1.20.2 to 1.20.3

Bumps [numpy](https://github.com/numpy/numpy) from 1.20.2 to 1.20.3.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/main/doc/HOWTO_RELEASE.rst.txt)
- [Commits](numpy/numpy@v1.20.2...v1.20.3)

Signed-off-by: dependabot[bot] <[email protected]>

* Bump matplotlib from 3.4.1 to 3.4.2

Bumps [matplotlib](https://github.com/matplotlib/matplotlib) from 3.4.1 to 3.4.2.
- [Release notes](https://github.com/matplotlib/matplotlib/releases)
- [Commits](matplotlib/matplotlib@v3.4.1...v3.4.2)

Signed-off-by: dependabot[bot] <[email protected]>

* Bump rich from 10.2.0 to 10.2.2

Bumps [rich](https://github.com/willmcgugan/rich) from 10.2.0 to 10.2.2.
- [Release notes](https://github.com/willmcgugan/rich/releases)
- [Changelog](https://github.com/willmcgugan/rich/blob/master/CHANGELOG.md)
- [Commits](Textualize/rich@v10.2.0...v10.2.2)

Signed-off-by: dependabot[bot] <[email protected]>

* Bump rich from 10.2.2 to 10.3.0

Bumps [rich](https://github.com/willmcgugan/rich) from 10.2.2 to 10.3.0.
- [Release notes](https://github.com/willmcgugan/rich/releases)
- [Changelog](https://github.com/willmcgugan/rich/blob/master/CHANGELOG.md)
- [Commits](Textualize/rich@v10.2.2...v10.3.0)

---
updated-dependencies:
- dependency-name: rich
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

* Bump rich from 10.3.0 to 10.4.0

Bumps [rich](https://github.com/willmcgugan/rich) from 10.3.0 to 10.4.0.
- [Release notes](https://github.com/willmcgugan/rich/releases)
- [Changelog](https://github.com/willmcgugan/rich/blob/master/CHANGELOG.md)
- [Commits](Textualize/rich@v10.3.0...v10.4.0)

---
updated-dependencies:
- dependency-name: rich
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

* Bump pandas from 1.2.4 to 1.2.5

Bumps [pandas](https://github.com/pandas-dev/pandas) from 1.2.4 to 1.2.5.
- [Release notes](https://github.com/pandas-dev/pandas/releases)
- [Changelog](https://github.com/pandas-dev/pandas/blob/master/RELEASE.md)
- [Commits](pandas-dev/pandas@v1.2.4...v1.2.5)

---
updated-dependencies:
- dependency-name: pandas
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>

* Bump numpy from 1.20.3 to 1.21.0

Bumps [numpy](https://github.com/numpy/numpy) from 1.20.3 to 1.21.0.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/main/doc/HOWTO_RELEASE.rst.txt)
- [Commits](numpy/numpy@v1.20.3...v1.21.0)

---
updated-dependencies:
- dependency-name: numpy
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

* Dropped Python3.6 action

* Dropped Python3.6 support.

* Bump rich from 10.4.0 to 10.5.0

Bumps [rich](https://github.com/willmcgugan/rich) from 10.4.0 to 10.5.0.
- [Release notes](https://github.com/willmcgugan/rich/releases)
- [Changelog](https://github.com/willmcgugan/rich/blob/master/CHANGELOG.md)
- [Commits](Textualize/rich@v10.4.0...v10.5.0)

---
updated-dependencies:
- dependency-name: rich
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

* Bump rich from 10.5.0 to 10.6.0

Bumps [rich](https://github.com/willmcgugan/rich) from 10.5.0 to 10.6.0.
- [Release notes](https://github.com/willmcgugan/rich/releases)
- [Changelog](https://github.com/willmcgugan/rich/blob/master/CHANGELOG.md)
- [Commits](Textualize/rich@v10.5.0...v10.6.0)

---
updated-dependencies:
- dependency-name: rich
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

* Bump numpy from 1.21.0 to 1.21.1

Bumps [numpy](https://github.com/numpy/numpy) from 1.21.0 to 1.21.1.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/main/doc/HOWTO_RELEASE.rst.txt)
- [Commits](numpy/numpy@v1.21.0...v1.21.1)

---
updated-dependencies:
- dependency-name: numpy
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>

* Bump pandas from 1.2.5 to 1.3.1

Bumps [pandas](https://github.com/pandas-dev/pandas) from 1.2.5 to 1.3.1.
- [Release notes](https://github.com/pandas-dev/pandas/releases)
- [Changelog](https://github.com/pandas-dev/pandas/blob/master/RELEASE.md)
- [Commits](pandas-dev/pandas@v1.2.5...v1.3.1)

---
updated-dependencies:
- dependency-name: pandas
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

* Bump rich from 10.6.0 to 10.7.0

Bumps [rich](https://github.com/willmcgugan/rich) from 10.6.0 to 10.7.0.
- [Release notes](https://github.com/willmcgugan/rich/releases)
- [Changelog](https://github.com/willmcgugan/rich/blob/master/CHANGELOG.md)
- [Commits](Textualize/rich@v10.6.0...v10.7.0)

---
updated-dependencies:
- dependency-name: rich
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

* Bump matplotlib from 3.4.2 to 3.4.3

Bumps [matplotlib](https://github.com/matplotlib/matplotlib) from 3.4.2 to 3.4.3.
- [Release notes](https://github.com/matplotlib/matplotlib/releases)
- [Commits](matplotlib/matplotlib@v3.4.2...v3.4.3)

---
updated-dependencies:
- dependency-name: matplotlib
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>

* Bump pandas from 1.3.1 to 1.3.2

Bumps [pandas](https://github.com/pandas-dev/pandas) from 1.3.1 to 1.3.2.
- [Release notes](https://github.com/pandas-dev/pandas/releases)
- [Changelog](https://github.com/pandas-dev/pandas/blob/master/RELEASE.md)
- [Commits](pandas-dev/pandas@v1.3.1...v1.3.2)

---
updated-dependencies:
- dependency-name: pandas
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>

* Bump rich from 10.7.0 to 10.9.0

Bumps [rich](https://github.com/willmcgugan/rich) from 10.7.0 to 10.9.0.
- [Release notes](https://github.com/willmcgugan/rich/releases)
- [Changelog](https://github.com/willmcgugan/rich/blob/master/CHANGELOG.md)
- [Commits](Textualize/rich@v10.7.0...v10.9.0)

---
updated-dependencies:
- dependency-name: rich
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

* Bump pytest from 6.2.4 to 6.2.5

Bumps [pytest](https://github.com/pytest-dev/pytest) from 6.2.4 to 6.2.5.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](pytest-dev/pytest@6.2.4...6.2.5)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>

* Sourcery refactored dev branch (#70)

* 'Refactored by Sourcery'

* Blacked, flaked, and mypyed

Co-authored-by: Sourcery AI <>
Co-authored-by: Gabriele Girelli <[email protected]>

* Bump pandas from 1.3.2 to 1.3.3

Bumps [pandas](https://github.com/pandas-dev/pandas) from 1.3.2 to 1.3.3.
- [Release notes](https://github.com/pandas-dev/pandas/releases)
- [Changelog](https://github.com/pandas-dev/pandas/blob/master/RELEASE.md)
- [Commits](pandas-dev/pandas@v1.3.2...v1.3.3)

---
updated-dependencies:
- dependency-name: pandas
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>

* Bump rich from 10.9.0 to 10.10.0

Bumps [rich](https://github.com/willmcgugan/rich) from 10.9.0 to 10.10.0.
- [Release notes](https://github.com/willmcgugan/rich/releases)
- [Changelog](https://github.com/willmcgugan/rich/blob/master/CHANGELOG.md)
- [Commits](Textualize/rich@v10.9.0...v10.10.0)

---
updated-dependencies:
- dependency-name: rich
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

* Bump rich from 10.10.0 to 10.11.0

Bumps [rich](https://github.com/willmcgugan/rich) from 10.10.0 to 10.11.0.
- [Release notes](https://github.com/willmcgugan/rich/releases)
- [Changelog](https://github.com/willmcgugan/rich/blob/master/CHANGELOG.md)
- [Commits](Textualize/rich@v10.10.0...v10.11.0)

---
updated-dependencies:
- dependency-name: rich
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

* Bump rich from 10.11.0 to 10.12.0

Bumps [rich](https://github.com/willmcgugan/rich) from 10.11.0 to 10.12.0.
- [Release notes](https://github.com/willmcgugan/rich/releases)
- [Changelog](https://github.com/willmcgugan/rich/blob/master/CHANGELOG.md)
- [Commits](Textualize/rich@v10.11.0...v10.12.0)

---
updated-dependencies:
- dependency-name: rich
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

* Bump joblib from 1.0.1 to 1.1.0

Bumps [joblib](https://github.com/joblib/joblib) from 1.0.1 to 1.1.0.
- [Release notes](https://github.com/joblib/joblib/releases)
- [Changelog](https://github.com/joblib/joblib/blob/master/CHANGES.rst)
- [Commits](joblib/joblib@1.0.1...1.1.0)

---
updated-dependencies:
- dependency-name: joblib
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

* Added pre-commits and fixed typos.

* Fixed tab switch trigger and beautified HTML.

* fix: beautified.

* fix: import issues and alternative tab controls

* feat: increased version tag

* 'Refactored by Sourcery' (#77)

Co-authored-by: Sourcery AI <>

* feat: import with importlib for custom routes

* fix: switched to importlib.util

* fix: dependencies

* fix: added args for new routes

* fix: issue with pd app URL check

* v.2.1.0

* Fixed URLs

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
  • Loading branch information
3 people authored Oct 20, 2021
1 parent 1a9fb55 commit eb78ab0
Show file tree
Hide file tree
Showing 26 changed files with 461 additions and 349 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/pythonpackage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ jobs:
fail-fast: true
matrix:
os: ["ubuntu-latest"]
python-version: [3.6, 3.7, 3.8]
python-version: [3.7, 3.8, 3.9]
runs-on: ${{ matrix.os }}
steps:
# Checkout repo and setup python
Expand Down
34 changes: 34 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
default_language_version:
python: python3.8
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: "v4.0.1"
hooks:
- id: check-added-large-files
- id: check-ast
- id: check-docstring-first
- id: check-yaml
- repo: https://github.com/pre-commit/mirrors-mypy
rev: "v0.910-1"
hooks:
- id: mypy
- repo: https://github.com/psf/black
rev: "21.9b0"
hooks:
- id: black
- repo: https://github.com/PyCQA/flake8
rev: "4.0.1"
hooks:
- id: flake8
args: ["--count", "--select=E9,F63,F7,F82", "--show-source", "--statistics"]
- id: flake8
args: ["--count", "--exit-zero", "--max-complexity=5", "--max-line-length=88", "--ignore=E203", "--statistics"]
- repo: https://github.com/codespell-project/codespell
rev: v2.1.0
hooks:
- id: codespell
entry: codespell --ignore-words=ignore-spelling-words.txt
language: python
types: [text]
37 changes: 28 additions & 9 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,19 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.

## Unreleased

## [2.1.0] - 2021-10-20
### Added
- Pre-commit hooks.

### Changed
- Import of custom routes script with `importlib.util`.
- Updated dependencies.
- Dropped support for Python 3.6.

### Fixed
- Typo in GUI via `ifpd serve`.
- Typos in GUI.
- Alternative tab switcher of probe-design GUI.


## [2.0.5] - 2021-02-22
Expand Down Expand Up @@ -172,12 +185,18 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
## [0.0.1] - 2017-08-06 - First release



[2.0.3.post2] https://github.com/ggirelli/iFISH-probe-design/releases/tag/v2.0.3.post2
[2.0.3.post1] https://github.com/ggirelli/iFISH-probe-design/releases/tag/v2.0.3.post1
[2.0.3] https://github.com/ggirelli/iFISH-probe-design/releases/tag/v2.0.3
[2.0.2] https://github.com/ggirelli/iFISH-probe-design/releases/tag/v2.0.2
[2.0.1] https://github.com/ggirelli/iFISH-probe-design/releases/tag/v2.0.1
[2.0.0.post1] https://github.com/ggirelli/iFISH-probe-design/releases/tag/v2.0.0.post1
[1.1.0] https://github.com/ggirelli/iFISH-Probe-Design/releases/tag/v1.1.0
[0.0.1] https://github.com/ggirelli/iFISH-Probe-Design/releases/tag/v0.0.1
[2.1.0]: https://github.com/ggirelli/iFISH-probe-design/releases/tag/v2.1.0
[2.0.5]: https://github.com/ggirelli/iFISH-probe-design/releases/tag/v2.0.5
[2.0.4]: https://github.com/ggirelli/iFISH-probe-design/releases/tag/v2.0.4
[2.0.3.post2]: https://github.com/ggirelli/iFISH-probe-design/releases/tag/v2.0.3.post2
[2.0.3.post1]: https://github.com/ggirelli/iFISH-probe-design/releases/tag/v2.0.3.post1
[2.0.3]: https://github.com/ggirelli/iFISH-probe-design/releases/tag/v2.0.3
[2.0.2]: https://github.com/ggirelli/iFISH-probe-design/releases/tag/v2.0.2
[2.0.1.post6]: https://github.com/ggirelli/iFISH-probe-design/releases/tag/v2.0.1.post6
[2.0.1.post5]: https://github.com/ggirelli/iFISH-probe-design/releases/tag/v2.0.1.post5
[2.0.1.post4]: https://github.com/ggirelli/iFISH-probe-design/releases/tag/v2.0.1.post4
[2.0.1.post3]: https://github.com/ggirelli/iFISH-probe-design/releases/tag/v2.0.1.post3
[2.0.1]: https://github.com/ggirelli/iFISH-probe-design/releases/tag/v2.0.1
[2.0.0.post1]: https://github.com/ggirelli/iFISH-probe-design/releases/tag/v2.0.0.post1
[1.1.0]: https://github.com/ggirelli/iFISH-Probe-Design/releases/tag/v1.1.0
[0.0.1]: https://github.com/ggirelli/iFISH-Probe-Design/releases/tag/v0.0.1
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
# iFISH-Probe-Design

[![DOI](https://zenodo.org/badge/143724120.svg)](https://zenodo.org/badge/latestdoi/143724120) ![](https://img.shields.io/librariesio/github/ggirelli/ifish-probe-design.svg?style=flat) ![](https://img.shields.io/github/license/ggirelli/ifish-probe-design.svg?style=flat)
[![DOI](https://zenodo.org/badge/143724120.svg)](https://zenodo.org/badge/latestdoi/143724120) ![](https://img.shields.io/github/license/ggirelli/ifish-probe-design.svg?style=flat)
![](https://github.com/ggirelli/ifish-probe-design/workflows/Python%20package/badge.svg?branch=main&event=push) ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/ifpd) ![PyPI - Format](https://img.shields.io/pypi/format/ifpd) ![PyPI - Status](https://img.shields.io/pypi/status/ifpd)
![](https://img.shields.io/github/release/ggirelli/ifish-probe-design.svg?style=flat) ![](https://img.shields.io/github/release-date/ggirelli/ifish-probe-design.svg?style=flat) ![](https://img.shields.io/github/languages/code-size/ggirelli/ifish-probe-design.svg?style=flat)
![](https://img.shields.io/github/watchers/ggirelli/ifish-probe-design.svg?label=Watch&style=social) ![](https://img.shields.io/github/stars/ggirelli/ifish-probe-design.svg?style=social)

[PyPi](https://pypi.org/project/ifpd/) | [docs](https://ggirelli.github.io/iFISH-probe-design/)


**iFISH-Probe-Design** (`ifpd`) is a Python3.6.1+ package containing tools for selection of complementary oligonucleotides to build iFISH probes. It also includes a web interface, which simplifies the procedure by removing any requirement for programming skills. Read the online [documentation](https://ggirelli.github.io/iFISH-probe-design/) for more details.
**iFISH-Probe-Design** (`ifpd`) is a Python3.7+ package containing tools for selection of complementary oligonucleotides to build iFISH probes. It also includes a web interface, which simplifies the procedure by removing any requirement for programming skills. Read the online [documentation](https://ggirelli.github.io/iFISH-probe-design/) for more details.

## Requirements

**iFISH-Probe-Designer** is fully implemented in Python3.6.1+, thus you need Python3 to run it. Check out [here](https://realpython.com/installing-python/) how to install Python3.6.1+ on your machine if you don't have it yet.
**iFISH-Probe-Designer** is fully implemented in Python3.7+, thus you need Python3 to run it. Check out [here](https://realpython.com/installing-python/) how to install Python3.7+ on your machine if you don't have it yet.

`ifpd` has been tested with Python 3.6.1, 3.7, and 3.8. We recommend installing it using `pipx` (see [below](https://github.com/ggirelli/ifish-probe-design#install)) to avoid dependency conflicts with other packages. The packages it depends on are listed in our [dependency graph](https://github.com/ggirelli/ifish-probe-design/network/dependencies). We use [`poetry`](https://github.com/python-poetry/poetry) to handle our dependencies.
`ifpd` has been tested with Python 3.7, 3.8, and 3.9. We recommend installing it using `pipx` (see [below](https://github.com/ggirelli/ifish-probe-design#install)) to avoid dependency conflicts with other packages. The packages it depends on are listed in our [dependency graph](https://github.com/ggirelli/ifish-probe-design/network/dependencies). We use [`poetry`](https://github.com/python-poetry/poetry) to handle our dependencies.

## Installation

Expand All @@ -32,7 +32,7 @@ We welcome any contributions to `ifpd`. In short, we use [`black`](https://githu

### Reference

* Gelali, E., Girelli, G., Matsumoto, M., Wernersson, E., Custodio, J., Mota, A., ... & Bienko, M. (2019). iFISH is a publically available resource enabling versatile DNA FISH to study genome architecture. Nature communications, 10(1), 1-15. ([link](https://www.nature.com/articles/s41467-019-09616-w))
* Gelali, E., Girelli, G., Matsumoto, M., Wernersson, E., Custodio, J., Mota, A., ... & Bienko, M. (2019). iFISH is a publicly available resource enabling versatile DNA FISH to study genome architecture. Nature communications, 10(1), 1-15. ([link](https://www.nature.com/articles/s41467-019-09616-w))

## License

Expand Down
2 changes: 1 addition & 1 deletion docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@ The tools allow to select sets of oligomers as iFISH probes, starting from datab

### Reference

Gelali, E., Girelli, G., Matsumoto, M., Wernersson, E., Custodio, J., Mota, A., ... & Bienko, M. (2019). iFISH is a publically available resource enabling versatile DNA FISH to study genome architecture. Nature communications, 10(1), 1-15. ([link](https://www.nature.com/articles/s41467-019-09616-w))
Gelali, E., Girelli, G., Matsumoto, M., Wernersson, E., Custodio, J., Mota, A., ... & Bienko, M. (2019). iFISH is a publicly available resource enabling versatile DNA FISH to study genome architecture. Nature communications, 10(1), 1-15. ([link](https://www.nature.com/articles/s41467-019-09616-w))
6 changes: 3 additions & 3 deletions docs/interface.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ The interface is fully responsive, and can be visualized with a display of any s
<!-- MarkdownTOC -->

- [Homepage](#homepage)
- [Single probe](#single-probe)
- [Spotting probe](#spotting-probe)
- [Single probe](#single-probe)
- [Spotting probe](#spotting-probe)
- [Query page](#query-page)
- [Probe candidate page](#probe-candidate-page)
- [Probe set candidate page](#probe-set-candidate-page)
Expand Down Expand Up @@ -88,7 +88,7 @@ When the query leaves the queue, the <span class="text-warning">yellow</span> al
![query-head-success]({{ site.baseurl }}/images/query-head-success.png)
![query-head-timeout]({{ site.baseurl }}/images/query-head-timeout.png)

Once the query is processed, the alert turns <span class="text-success">green</span> and reports the time at which the query was completed, alongside the running time. If something wrong happend during the processing, or if the query took too long, the alert turns <span class="text-dange">red</span> and invites the user to try again or contact the server admin.
Once the query is processed, the alert turns <span class="text-success">green</span> and reports the time at which the query was completed, alongside the running time. If something wrong happened during the processing, or if the query took too long, the alert turns <span class="text-dange">red</span> and invites the user to try again or contact the server admin.

![query-head-info]({{ site.baseurl }}/images/query-head-info.png)

Expand Down
2 changes: 1 addition & 1 deletion docs/introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ title: Introduction to ifpd

The `ifpd` package aims to simplify the design of fluorescence *in situ* hybridization probes, starting from [databases]({{ site.baseurl }}/database) of oligonucleotides designed to *specifically* bind to genomic loci of interest.

The package contains tools to design a single probe, comprising a specific number of oligonucleotide sequences. Alternatively, it also allows to design anumber of homogeneously spread probes, covering a region of interest, in a fashion that we dubbed *spotting* probe. More details on these two [algorithms]({{ site.baseurl }}/algorithms) are available in the relative page.
The package contains tools to design a single probe, comprising a specific number of oligonucleotide sequences. Alternatively, it also allows to design a number of homogeneously spread probes, covering a region of interest, in a fashion that we dubbed *spotting* probe. More details on these two [algorithms]({{ site.baseurl }}/algorithms) are available in the relative page.

`ifpd` is fully implemented in Python3, and is distributed through the PyPI network: the Python Package Manager developed and maintained by the Python community, for the Python community.

Expand Down
35 changes: 18 additions & 17 deletions ifpd/query.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ def read_chromosome(self, chrom):
oligoMinDist = self.get_oligo_min_dist()
startValues = chromData.iloc[1:, 0].values
endValues = chromData.iloc[:-1, 1].values
if 0 != len(startValues):
if len(startValues) != 0:
oligoMinD_observed = min(startValues - endValues)
else:
oligoMinD_observed = np.inf
Expand Down Expand Up @@ -189,10 +189,9 @@ def get_probe_centrality(self, region):
at either of the region extremities."""
region_halfWidth = (region[2] - region[1]) / 2
region_midPoint = region[1] + region_halfWidth
centrality = (
return (
region_halfWidth - abs(region_midPoint - self.midpoint)
) / region_halfWidth
return centrality

def get_probe_size(self):
"""Probe size, defined as difference between start of first oligo
Expand All @@ -204,7 +203,7 @@ def get_probe_homogeneity(self):
distance between consecutive oligos, calculated from their start
position, disregarding oligo length."""
std = np.std(np.diff(self.oligoData.iloc[:, 1]))
return np.inf if 0 == std else 1 / std
return np.inf if std == 0 else 1 / std

def describe(self, region, path=None):
"""Builds a small pd.DataFrame describing a probe."""
Expand All @@ -219,7 +218,7 @@ def describe(self, region, path=None):
}
)

if not type(None) == type(path):
if type(None) != type(path):
config = configparser.ConfigParser()
config["REGION"] = {
"chrom": region[0],
Expand Down Expand Up @@ -254,7 +253,7 @@ def get_fasta(self, path=None, prefix=""):
fasta += f"{self.chrom}:{chromStart}-{chromEnd}\n"
fasta += f"{sequence}\n"

if not type(None) == type(path):
if type(None) != type(path):
assert os.path.isdir(os.path.dirname(path))
with open(path, "w+") as OH:
OH.write(fasta)
Expand All @@ -272,7 +271,7 @@ def get_bed(self, path=None, prefix=""):
bed += f"{self.chrom}\t{chromStart}\t{chromEnd}\t"
bed += f"{prefix}oligo_{i}\n"

if not type(None) == type(path):
if type(None) != type(path):
assert os.path.isdir(os.path.dirname(path))
with open(path, "w+") as OH:
OH.write(bed)
Expand Down Expand Up @@ -387,7 +386,7 @@ def _plot_oligo_distr(self, outputDir):
def _plot_oligo_distance(self, outputDir):
fig = plt.figure()

if 1 < self.oligoData.shape[0]:
if self.oligoData.shape[0] > 1:
startPositions = self.oligoData.iloc[1:, 0].values
endPositions = self.oligoData.iloc[:-1, 1].values
diffs = startPositions - endPositions
Expand Down Expand Up @@ -433,7 +432,7 @@ def __init__(self, candidateList, queried_region, verbose=False, threads=1):
assert 0 < len(candidateList)

self.data = []
if 1 != threads:
if threads != 1:
verbose = 1 if verbose else 0
self.data = Parallel(n_jobs=threads, backend="threading", verbose=verbose)(
delayed(describe_candidate)(candidate, queried_region)
Expand Down Expand Up @@ -475,8 +474,11 @@ def filter(self, feature, thr, cumulative=False):
feature_delta = best_feature * thr
feature_range = (best_feature - feature_delta, best_feature + feature_delta)

discardCondition = [self.data[feature] < feature_range[0]]
discardCondition.append(self.data[feature] > feature_range[1])
discardCondition = [
self.data[feature] < feature_range[0],
self.data[feature] > feature_range[1],
]

discardCondition = np.logical_or(*discardCondition)
self.discarded = pd.concat([self.discarded, self.data.loc[discardCondition, :]])
self.data = self.data.loc[np.logical_not(discardCondition), :]
Expand Down Expand Up @@ -531,8 +533,7 @@ def __getitem__(self, i):
return self.data[i]

def __iter__(self):
for window in self.data:
yield window
yield from self.data

def __len__(self):
return len(self.data)
Expand All @@ -541,7 +542,7 @@ def add(self, chrom, start, size):
self.data.append(GenomicWindow(chrom, start, size))

def count_probes(self):
return sum([w.has_probe() for w in self])
return sum(w.has_probe() for w in self)

def shift(self, n):
return GenomicWindowList([window.shift(n) for window in self.data])
Expand All @@ -551,7 +552,7 @@ def sort(self):
self.data = [self.data[i] for i in np.argsort(midpointList)]

def calc_probe_size_and_homogeneity(self):
if 3 > self.count_probes():
if self.count_probes() < 3:
return np.nan

probeData = pd.concat(
Expand Down Expand Up @@ -651,7 +652,7 @@ def _plot_probe_distr(self, outputDir):

probes = [w.probe for w in self if w.probe is not None]

if 1 < len(probes):
if len(probes) > 1:
plt.plot(
[0, len(probes) - 1],
[probes[0].midpoint, probes[-1].midpoint],
Expand Down Expand Up @@ -684,7 +685,7 @@ def _plot_probe_distance(self, outputDir, region):

probes = [w.probe for w in self if w.probe is not None]

if 1 < len(probes):
if len(probes) > 1:
starts = np.array([p.chromStart for p in probes][1:])
ends = np.array([p.chromEnd for p in probes][:-1])
diffs = starts - ends
Expand Down
2 changes: 1 addition & 1 deletion ifpd/scripts/arguments.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ def add_log_file_handler(path: str, logger_name: Optional[str] = None) -> None:
"""
assert not os.path.isdir(path)
log_dir = os.path.dirname(path)
assert os.path.isdir(log_dir) or "" == log_dir
assert os.path.isdir(log_dir) or log_dir == ""
fh = RichHandler(console=Console(file=open(path, mode="w+")), markup=True)
fh.setLevel(logging.INFO)
logging.getLogger(logger_name).addHandler(fh)
Expand Down
7 changes: 3 additions & 4 deletions ifpd/scripts/mkdb.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ def init_parser(subparsers: argparse._SubParsersAction) -> argparse.ArgumentPars

@enable_rich_assert
def parse_arguments(args: argparse.Namespace) -> argparse.Namespace:
if "." == args.output:
if args.output == ".":
args.output = args.dbName

assert os.path.isfile(args.input), f'input file not found: "{args.input}"'
Expand All @@ -123,7 +123,6 @@ def parse_arguments(args: argparse.Namespace) -> argparse.Namespace:
if os.path.isdir(args.output):
logging.warning("'-f' option used. Removing previously generated database.")
shutil.rmtree(args.output)
pass
else:
assert not os.path.isdir(
args.output
Expand Down Expand Up @@ -155,7 +154,7 @@ def sort_oligos(args, chromList):
oligoLengthRange[1] = max(oligoLengthRange[1], oligoLengthList.max())

assert len(startPositions) == len(endPositions)
if 0 == len(startPositions):
if len(startPositions) == 0:
continue
oligoMinDist = min(oligoMinDist, min(startPositions - endPositions - 1))
return oligoMinDist, oligoLengthRange, has_overlaps
Expand Down Expand Up @@ -199,7 +198,7 @@ def run(args: argparse.Namespace) -> None:
logging.info("Parse and write database.")
chromList = set()
for line in oligoGenerator:
if 0 == len(line.strip()):
if len(line.strip()) == 0:
continue
line = line.strip().split("\t")
chrom = line.pop(0)
Expand Down
23 changes: 12 additions & 11 deletions ifpd/scripts/query/probe.py
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ def parse_arguments(args: argparse.Namespace) -> argparse.Namespace:
), f'unrecognized feature "{o}". Should be one of {const.featureList}.'

assert (
0 <= args.filter_thr and 1 >= args.filter_thr
args.filter_thr >= 0 and args.filter_thr <= 1
), "first filter threshold must be a fraction: {args.filter_thr}"

assert (
Expand Down Expand Up @@ -222,17 +222,18 @@ def run(args: argparse.Namespace) -> None:
args = ap.check_n_oligo(args, selectCondition)

logging.info("Build probe candidates.")
candidateList = []
for i in track(
range(0, selectedOligos.shape[0] - args.n_oligo + 1), description="Building"
):
candidateList.append(
query.OligoProbe(
queried_region[0],
selectedOligos.iloc[i : (i + args.n_oligo), :],
oligoDB,
)
candidateList = [
query.OligoProbe(
queried_region[0],
selectedOligos.iloc[i : (i + args.n_oligo), :],
oligoDB,
)
for i in track(
range(selectedOligos.shape[0] - args.n_oligo + 1),
description="Building",
)
]

logging.info(f"Found {len(candidateList)} probe candidates.")

logging.info("Describing candidates...")
Expand Down
Loading

0 comments on commit eb78ab0

Please sign in to comment.