eitprocessing
Software for electrical impedance tomography data loading, visualization and processing
Science Score: 44.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (15.5%) to scientific vocabulary
Repository
Software for electrical impedance tomography data loading, visualization and processing
Basic Info
- Host: GitHub
- Owner: EIT-ALIVE
- License: apache-2.0
- Language: Jupyter Notebook
- Default Branch: main
- Homepage: https://eit-alive.github.io/eitprocessing/
- Size: 142 MB
Statistics
- Stars: 9
- Watchers: 0
- Forks: 0
- Open Issues: 96
- Releases: 32
Metadata Files
README.dev.md
eitprocessing developer documentation
If you're looking for user documentation, go here.
Contributions
We welcome all contributions to this open-source project, as long as they follow our code of conduct. We appreciate it if you adhere to our naming and style conventions below.
Please follow these steps:
- (important) announce your plan to the rest of the community before you start working. This announcement should be in the form of a (new) issue;
- (important) wait until some kind of consensus is reached about your idea being a good idea;
- if needed, fork the repository to your own Github profile and create your own feature branch off of the latest master commit. While working on your feature branch, make sure to stay up to date with the master branch by pulling in changes, possibly from the 'upstream' repository (follow the instructions here and here);
- make sure the existing tests still work by running
pytest(see also here); - add your own tests (if necessary);
- update or expand the documentation;
- update the
CHANGELOG.mdfile with change; - push your feature branch to (your fork of) the eitprocessing repository on GitHub;
- create the pull request, e.g. following the instructions here.
In case you feel like you've made a valuable contribution, but you don't know how to write or run tests for it, or how to generate the documentation: don't let this discourage you from making the pull request; we can help you! Just go ahead and submit the pull request, but keep in mind that you might be asked to append additional commits to your pull request.
Conventions
Readability vs complexity/correctness
While we implement "best practices" as much as possible, it is important to state that sometimes readibility or simplicity is more important than absolute correctness. It is hard to define the precise balance we are looking for, so instead we will refer to the Zen of python.
Note that all contrubtions to this project will be published under our Apache 2.0 licence.
Docstrings
We use the google convention for writing docstrings.
Code formatting
We use the Black formatter to format code. If you use Visual Studio Code, the extension by Microsoft is a good place to start. This extension is currently in preview, but seems to work more reliably than older implementations.
Branch naming convention
Please try to adhere to the following branch naming convention:
042_life_universe_everything_douglasadams.
This allows, at a single glance, to see in the issue that you're addressing, a hint of what the issue is, and who you are. Also, it simplifies tab autocompletion when switching to your branch.
PR naming convention
Please use an angular convention type,
followed by a semicolon and then a description when creating a PR.
E.g., feat: added module to calculate the answer to life, the universe, and everything.
Creating a PR
Branching strategy
We use a workflow where main always contains the latest stable release version of eitprocessing and where develop contains the next release version under construction.
When creating a new feature, one should branch from develop.
When a feature is finished, a PR to pull the feature into develop should be created. After one or multiple features
have been pulled into develop, the release workflow can be triggered to automatically create the
new feature (minor) release originating from develop.
For bug fixes that can't wait on a feature release, one should branch from main.
When the bug fix is finished, the release workflow can be triggered originating from
the created branch, usually with a patch update.
In principle, no releases should originate from branches other than develop and bug fix branches.
Code review and continuous integration
All contributions to the project are subject to code review and require at least one approving review before they can be merged onto the main branch.
We have set up continuous integration for linting and testing, among other things. Please ensure that all checks pass before requesting code review.
Please create a "draft PR" until your work is ready for review, as this will avoid triggering the CI prematurely (which uses unnecessary computing power, see here).
You can run the tests and linter locally before activating the CI.
Testing locally
Make sure you have developer options installed as described in the README
(otherwise run: pip install -e .[dev] on the repository folder in your environment)
For testing all you need to do is run:
shell
pytest
Furthermore, you can determine the coverage, i.e. how much of the package's code is actually
executed during tests, by running (after running pytest):
```shell coverage run
This runs tests and stores the result in a .coverage file.
To see the results on the command line, run
coverage report ```
coverage can also generate output in HTML and other formats; see coverage help for more information.
Linting and Formatting
We use ruff for linting, sorting imports and formatting of python (notebook) files. The configurations of ruff are set in pyproject.toml file.
If you are using VS code, please install and activate the Ruff extension to automatically format and check linting.
Otherwise, please ensure check both linting (ruff fix .) and formatting (ruff format .) before requesting a review.
We use prettier for formatting most other files. If you are editing or adding non-python files and using VS code, the Prettier extension can be installed to auto-format these files as well.
Making a release
Automated release workflow
- IMP0RTANT: Create a PR for the release branch (usually
develop) and make sure that all checks pass!- if everything goes well, this PR will automatically be closed after the draft release is created.
- Navigate to Draft Github Release on the Actions tab.
- On the right hand side, you can select the level increase ("patch", "minor", or "major") and which branch to release from.
- Follow semantic versioning conventions to chose the level increase:
patch: when backward compatible bug fixes were mademinor: when functionality was added in a backward compatible mannermajor: when API-incompatible changes have been made
- If the release branch is not
develop, the workflow will attempt to merge the changes into develop as well. If succesfull, the release branch will be deleted from the remote repository. - Note that you cannot release from
main(the default shown) using the automated workflow. To release frommaindirectly, you must create the release manually.
- Follow semantic versioning conventions to chose the level increase:
- Visit Actions tab to check whether everything went as expected.
- Navigate to the Releases tab and click on the newest draft release that was just generated.
- Click on the edit (pencil) icon on the right side of the draft release.
- Check/adapt the release notes and make sure that everything is as expected.
- Check that "Set as the latest release is checked".
- Click green "Publish Release" button to convert the draft to a published release on GitHub.
- This will automatically trigger another GitHub workflow that will take care of publishing the package on PyPi.
Updating the token
NOTE: the current token (associated to @DaniBodor) allowing to bypass branch protection will expire on June 20th, 2025. To update the token do the following:
- Create a personal access token from a GitHub user account with admin priviliges for this repo.
- Check all the "repo" boxes and the "workflow" box, set an expiration date, and give the token a note.
- Click green "Generate token" button on the bottom
- Copy the token immediately, as it will not be visible again later.
- Navigate to the secrets settings.
- Edit the
GH_PATkey giving your access token as the new value.
Manually create a release
- Make sure you have all required developers tools installed
pip install -e .'[dev]'. - Create a
releasebranch frommainand merge the changes into this branch.- Ensure that the
releasebranch is ready to be merged back intomain(e.g., removing the unnecessary files, fix minor bugs if necessary). - Also see our branching strategy above.
- Ensure that the
- Ensure all tests pass
pytest -vand that linting (ruff check) and formatting (ruff format --check) conventions are adhered to. - Bump the version using bump-my-version:
bump-my-version bump <level>where level must be one of the following (following semantic versioning conventions):major: when API-incompatible changes have been mademinor: when functionality was added in a backward compatible mannerpatch: when backward compatible bug fixes were made
- Merge the release branch into
mainanddevelop. - On the Releases page:
- Click "Draft a new release"
- By convention, use
v<version number>as both the release title and as a tag for the release. - Click "Generate release notes" to automatically load release notes from merged PRs since the last release.
- Adjust the notes as required.
- Ensure that "Set as latest release" is checked and that both other boxes are unchecked.
- Hit "Publish release".
- This will automatically trigger a GitHub workflow that will take care of publishing the package on PyPi.
Owner
- Name: EIT-ALIVE
- Login: EIT-ALIVE
- Kind: organization
- Repositories: 1
- Profile: https://github.com/EIT-ALIVE
JOSS Publication
eitprocessing: a Python package for analysis of Electrical Impedance Tomography data
Authors
Tags
Electrical Impedance TomographyCitation (CITATION.cff)
cff-version: 1.2.0
title: "eitprocessing"
authors:
- family-names: Bodor
given-names: Dani
email: d.bodor@esciencecenter.nl
affiliation: Netherlands eScience Center
orcid: "https://orcid.org/0000-0003-2109-2349"
- family-names: Somhorst
given-names: Peter
email: p.somhorst@erasmusmc.nl
affiliation: Erasmus MC
orcid: "https://orcid.org/0000-0003-3490-2080"
- family-names: Jonkman
given-names: Annemijn
email: a.jonkman@erasmusmc.nl
affiliation: Erasmus MC
orcid: "https://orcid.org/0000-0001-8778-5135"
- given-names: Walter
family-names: Baccinelli
email: w.baccinelli@esciencecenter.nl
affiliation: Netherlands eScience Center
orcid: "https://orcid.org/0000-0001-8888-4792"
- family-names: Wisse-Smit
given-names: Jantine
email: j.j.smit@erasmusmc.nl
affiliation: Erasmus MC
orcid: "https://orcid.org/0009-0006-6552-5459"
- family-names: Francovich
given-names: Juliette
email: j.francovich@erasmusmc.nl
affiliation: Erasmus MC
orcid: "https://orcid.org/0009-0004-0976-5082"
date-released: 2023-03-23
doi: 10.5281/zenodo.7869553
version: "1.8.1"
repository-code: "https://github.com/EIT-ALIVE/eitprocessing"
keywords:
- Mechanical lung ventilation
- Electrical impedance tomography
- Image/data processing
- Advanced respiratory care
message: "If you use this software, please cite it using these metadata."
license: Apache-2.0
GitHub Events
Total
- Create event: 71
- Release event: 19
- Issues event: 67
- Watch event: 4
- Delete event: 57
- Issue comment event: 54
- Push event: 301
- Pull request review comment event: 114
- Pull request review event: 115
- Pull request event: 99
- Fork event: 4
Last Year
- Create event: 71
- Release event: 19
- Issues event: 67
- Watch event: 4
- Delete event: 57
- Issue comment event: 54
- Push event: 301
- Pull request review comment event: 114
- Pull request review event: 115
- Pull request event: 99
- Fork event: 4
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 27
- Total pull requests: 34
- Average time to close issues: about 1 month
- Average time to close pull requests: 23 days
- Total issue authors: 3
- Total pull request authors: 3
- Average comments per issue: 0.22
- Average comments per pull request: 0.29
- Merged pull requests: 17
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 26
- Pull requests: 34
- Average time to close issues: 5 days
- Average time to close pull requests: 23 days
- Issue authors: 3
- Pull request authors: 3
- Average comments per issue: 0.23
- Average comments per pull request: 0.29
- Merged pull requests: 17
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- psomhorst (72)
- DaniBodor (22)
- JulietteFrancovich (6)
- ixjlyons (2)
- ajonkman (2)
- wbaccinelli (2)
- nllupgens (1)
Pull Request Authors
- psomhorst (83)
- DaniBodor (53)
- wbaccinelli (7)
- JulietteFrancovich (5)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
-
Total downloads:
- pypi 139 last-month
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 30
- Total maintainers: 3
pypi.org: eitprocessing
Processing of lung image data from electrical impedance tomography.
- Documentation: https://github.com/EIT-ALIVE/eitprocessing/blob/main/README.md
- License: Apache-2.0 license
-
Latest release: 1.8.1
published 6 months ago
Rankings
Maintainers (3)
Dependencies
- actions/checkout v3 composite
- actions/setup-python v3 composite
- actions/checkout v3 composite
- citation-file-format/cffconvert-github-action main composite
- actions/checkout v2 composite
- actions/setup-python v2 composite
- python 3.10 build
