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

Add citation tool #28

Merged
merged 16 commits into from
Feb 9, 2024
Merged

Add citation tool #28

merged 16 commits into from
Feb 9, 2024

Conversation

willGraham01
Copy link
Contributor

@willGraham01 willGraham01 commented Jan 30, 2024

Docs PR is against website : brainglobe/brainglobe.github.io#146

brainglobe/BrainGlobe#61 gets closer to being resolved.

Would recommend reading the docs PR before the source code 😅

TLDR; on the command line you can now ask BrainGlobe to cite itself:

$ cite-brainglobe brainglobe atlasapi
@article{bg-atlasapi,
    authors = "Federico Claudi and Luigi Petrucco and Adam Tyson and Tiago Branco and Troy Margrie and Ruben Portugues",
    title = "BrainGlobe Atlas API: a common interface for neuroanatomical atlases",
    journal = "Journal of Open Source Software",
    year = "2020",
    volume = "5",
    month = "10",
    doi = "10.21105/joss.02668",
}

@software{brainglobe-meta,
    authors = "BrainGlobe Developers and Wiliam Michael Graham",
    title = "BrainGlobe",
    url = "https://brainglobe.info/",
    year = "2024",
    abstract = "The BrainGlobe Initiative exists to facilitate the development of interoperable Python-based tools for computational neuroanatomy.",
    license = "BSD-3-Clause",
}

The output can be redirected to a file if the user so chooses. Other CLI options:

$ cite-brainglobe --help
usage: cite-brainglobe [-h] [-l] [-s] [-w] [-o OUTPUT_FILE] [-f FORMAT] [tools ...]

Citation generation for BrainGlobe tools.

positional arguments:
  tools                 BrainGlobe tools to be cited.

options:
  -h, --help            show this help message and exit
  -l, --list            List citable BrainGlobe tools, and formats, then exit.
  -s, --software-citations
                        Explicitly cite software source code over academic papers.
  -w, --warn-unused     Print out when citation information is omitted by the chosen citation
                        format.
  -o OUTPUT_FILE, --output-file OUTPUT_FILE
                        Output file to write citations to.
  -f FORMAT, --format FORMAT
                        Citation format to write. Will be overwritten by the inferred format if
                        the output file argument is also provided. Valid formats can be listed
                        with the -l, --list option.

What's it doing?

The brainglobe_utils.citation module fetches CITATION.cffs from each repository that we tell it about, parses this information into the requested format, then spits it out.
Currently supports:

The text field supports the custom "citation-sentence" field that we want to use for BrainGlobe tools. Annoyingly, we can't just query the github api to do this forwards (the part that writes outputs is not public yet) nor can we use other existing tools like cffconvert (because they complain if we have extra fields that are otherwise harmless).

How will it be maintained?

So long as each of our repositories has a CITATION.cff (or otherwise equivalent file), and the citation module is informed of this, details will be fetched correctly even after updates to the tools themselves.

Copy link

codecov bot commented Jan 31, 2024

Codecov Report

Attention: 53 lines in your changes are missing coverage. Please review.

Comparison is base (13d0444) 74.55% compared to head (d97fe3e) 76.42%.
Report is 6 commits behind head on main.

❗ Current head d97fe3e differs from pull request most recent head 0a24726. Consider uploading reports for the commit 0a24726 to get more accurate results

Files Patch % Lines
brainglobe_utils/citation/cite.py 43.02% 49 Missing ⚠️
brainglobe_utils/citation/repositories.py 96.05% 3 Missing ⚠️
brainglobe_utils/citation/format.py 97.77% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main      #28      +/-   ##
==========================================
+ Coverage   74.55%   76.42%   +1.86%     
==========================================
  Files          25       31       +6     
  Lines         849     1141     +292     
==========================================
+ Hits          633      872     +239     
- Misses        216      269      +53     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link
Member

@alessandrofelder alessandrofelder left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking really good @willGraham01 - code is expressive and easy-to-read.
Have a few minor comments - mostly typos.

brainglobe_utils/citation/format.py Outdated Show resolved Hide resolved
brainglobe_utils/citation/format.py Outdated Show resolved Hide resolved
brainglobe_utils/citation/format.py Outdated Show resolved Hide resolved
brainglobe_utils/citation/bibtex_fmt.py Outdated Show resolved Hide resolved
brainglobe_utils/citation/cite.py Outdated Show resolved Hide resolved
willGraham01 pushed a commit that referenced this pull request Feb 9, 2024
updates:
- [github.com/charliermarsh/ruff-pre-commit: v0.0.240 → v0.0.272](astral-sh/ruff-pre-commit@v0.0.240...v0.0.272)
- [github.com/psf/black: 23.1.0 → 23.3.0](psf/black@23.1.0...23.3.0)
- [github.com/pre-commit/mirrors-mypy: v0.991 → v1.3.0](pre-commit/mirrors-mypy@v0.991...v1.3.0)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
adamltyson added a commit that referenced this pull request Feb 9, 2024
* Initial commit

* bump

* bump

* bump

* add bump2version

* Bump version: 0.0.2 → 0.0.3

* add pre commit hooks

* update testing

* reorder ci

* fix non-istropic loading error

* Bump version: 0.0.3 → 0.0.4

* Gh actions (#3)

* add gh actions

* Update testing

* update testing

* add lint

* coveralls

* coveralls

* deploy

* Bump version: 0.0.4 → 0.0.5

* update readme

* transfer to brainglobe

* run tests on PR

* update coverage

* support python 3.9

* Bump version: 0.0.5 → 0.0.6

* update bump2version

* Bump version: 0.0.6 → 0.1.0-rc0

* Bump version: 0.1.0-rc0 → 0.1.0

* Update setup.py

* add missing import

* Update README.md

* fix linting

* Exclude tests from packaged distributions (#6)

* Update pre commit

* reformat

* Python 3.10 compatibility

* Bump version: 0.1.0 → 0.2.0-rc0

* update GH actions

* Bump version: 0.2.0-rc0 → 0.2.0-rc1

* Bump version: 0.2.0-rc1 → 0.2.0

* Revert older changes

* Fix deprecation of tifffile.imsave replaced by tifffile.imwrite. (#8)

Co-authored-by: Jules Scholler <[email protected]>

* Bump version: 0.2.1 → 0.2.2-rc0

* Bump version: 0.2.2-rc0 → 0.2.2

* Add link to contributing guide

* Add tox and use brainglobe/actions (#10)

* Add tox and use brainglobe actions for testing

* Update pre-commit

* run pre-commit

* Update tox.ini

* Bump version: 0.2.2 → 0.2.3-rc0

* Bump version: 0.2.3-rc0 → 0.2.3

* Long description (#11)

* Add long description for PyPI

* Bump version: 0.2.3 → 0.2.4-rc0

* Bump version: 0.2.4-rc0 → 0.2.4

* Change coverage badge to codecov.

* Test on recent python versions (#13)

* Test on recent python versions

* Bump pre-commit versions

* Fix dtype issue

* Remove straggling mention of 3.7

* Replace brainglobe > NI actions (#14)

* Use standard pre-commit config  (#15)

* Add standard pre-commit config

* pre-commit fixes

* Use pyproject.toml (#16)

* Filter warnings in pytest (#17)

* Filter warnings in pytest

* Filter nptyping warnings

* Add all-contributors

* Update README.md

Co-authored-by: David Stansby <[email protected]>

* docs: add crousseau as a contributor for code, ideas, and test (#25)

* docs: update README.md [skip ci]

* docs: create .all-contributorsrc [skip ci]

* Remove badge

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
Co-authored-by: Adam Tyson <[email protected]>

* Don't skip CI for all-contrbutors-bot

* Update .all-contributorsrc

* docs: add jaimergp as a contributor for code (#23)

* docs: update README.md [skip ci]

* docs: create .all-contributorsrc [skip ci]

* Update README.md

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
Co-authored-by: Adam Tyson <[email protected]>

* docs: add JulesScholler as a contributor for code (#22)

* docs: update README.md [skip ci]

* docs: create .all-contributorsrc [skip ci]

* Update README.md

* Update .all-contributorsrc

* Update .all-contributorsrc

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
Co-authored-by: Adam Tyson <[email protected]>

* docs: add dstansby as a contributor for test, code, and 3 more (#21)

* docs: update README.md [skip ci]

* docs: create .all-contributorsrc [skip ci]

* Update README.md

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
Co-authored-by: Adam Tyson <[email protected]>

* docs: add adamltyson as a contributor for code, infra, and 2 more (#24)

* docs: update README.md [skip ci]

* docs: create .all-contributorsrc [skip ci]

* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

* Update README.md

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
Co-authored-by: Adam Tyson <[email protected]>

* Update doc links (#27)

* [pre-commit.ci] pre-commit autoupdate (#28)

updates:
- [github.com/charliermarsh/ruff-pre-commit: v0.0.240 → v0.0.272](astral-sh/ruff-pre-commit@v0.0.240...v0.0.272)
- [github.com/psf/black: 23.1.0 → 23.3.0](psf/black@23.1.0...23.3.0)
- [github.com/pre-commit/mirrors-mypy: v0.991 → v1.3.0](pre-commit/mirrors-mypy@v0.991...v1.3.0)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Update dependency (imlib -> brainglobe-utils) (#29)

* [pre-commit.ci] pre-commit autoupdate (#31)

updates:
- [github.com/charliermarsh/ruff-pre-commit: v0.0.272 → v0.0.275](astral-sh/ruff-pre-commit@v0.0.272...v0.0.275)
- [github.com/pre-commit/mirrors-mypy: v1.3.0 → v1.4.1](pre-commit/mirrors-mypy@v1.3.0...v1.4.1)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* remove all contributors (#32)

* [pre-commit.ci] pre-commit autoupdate (#33)

updates:
- https://github.com/charliermarsh/ruff-pre-commithttps://github.com/astral-sh/ruff-pre-commit
- [github.com/astral-sh/ruff-pre-commit: v0.0.275 → v0.0.276](astral-sh/ruff-pre-commit@v0.0.275...v0.0.276)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* [pre-commit.ci] pre-commit autoupdate (#34)

updates:
- [github.com/astral-sh/ruff-pre-commit: v0.0.276 → v0.0.277](astral-sh/ruff-pre-commit@v0.0.276...v0.0.277)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Update CI workflow to use NIU actions (#35)

* [pre-commit.ci] pre-commit autoupdate (#36)

updates:
- [github.com/astral-sh/ruff-pre-commit: v0.0.277 → v0.0.278](astral-sh/ruff-pre-commit@v0.0.277...v0.0.278)
- [github.com/psf/black: 23.3.0 → 23.7.0](psf/black@23.3.0...23.7.0)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* [pre-commit.ci] pre-commit autoupdate (#37)

updates:
- [github.com/astral-sh/ruff-pre-commit: v0.0.278 → v0.0.280](astral-sh/ruff-pre-commit@v0.0.278...v0.0.280)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* [pre-commit.ci] pre-commit autoupdate (#38)

updates:
- [github.com/astral-sh/ruff-pre-commit: v0.0.280 → v0.0.281](astral-sh/ruff-pre-commit@v0.0.280...v0.0.281)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* [pre-commit.ci] pre-commit autoupdate (#39)

updates:
- [github.com/astral-sh/ruff-pre-commit: v0.0.281 → v0.0.282](astral-sh/ruff-pre-commit@v0.0.281...v0.0.282)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* [pre-commit.ci] pre-commit autoupdate (#40)

updates:
- [github.com/astral-sh/ruff-pre-commit: v0.0.282 → v0.0.284](astral-sh/ruff-pre-commit@v0.0.282...v0.0.284)
- [github.com/pre-commit/mirrors-mypy: v1.4.1 → v1.5.0](pre-commit/mirrors-mypy@v1.4.1...v1.5.0)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* [pre-commit.ci] pre-commit autoupdate (#41)

updates:
- [github.com/astral-sh/ruff-pre-commit: v0.0.284 → v0.0.285](astral-sh/ruff-pre-commit@v0.0.284...v0.0.285)
- [github.com/pre-commit/mirrors-mypy: v1.5.0 → v1.5.1](pre-commit/mirrors-mypy@v1.5.0...v1.5.1)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* [pre-commit.ci] pre-commit autoupdate (#42)

updates:
- [github.com/astral-sh/ruff-pre-commit: v0.0.285 → v0.0.286](astral-sh/ruff-pre-commit@v0.0.285...v0.0.286)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Set pre-commit autoupdate frequency to monthly (#43)

* [pre-commit.ci] pre-commit autoupdate (#44)

updates:
- [github.com/astral-sh/ruff-pre-commit: v0.0.286 → v0.0.287](astral-sh/ruff-pre-commit@v0.0.286...v0.0.287)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* [pre-commit.ci] pre-commit autoupdate (#45)

updates:
- [github.com/astral-sh/ruff-pre-commit: v0.0.287 → v0.0.292](astral-sh/ruff-pre-commit@v0.0.287...v0.0.292)
- [github.com/psf/black: 23.7.0 → 23.9.1](psf/black@23.7.0...23.9.1)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* [pre-commit.ci] pre-commit autoupdate (#48)

updates:
- [github.com/pre-commit/pre-commit-hooks: v4.4.0 → v4.5.0](pre-commit/pre-commit-hooks@v4.4.0...v4.5.0)
- [github.com/astral-sh/ruff-pre-commit: v0.0.292 → v0.1.4](astral-sh/ruff-pre-commit@v0.0.292...v0.1.4)
- [github.com/psf/black: 23.9.1 → 23.10.1](psf/black@23.9.1...23.10.1)
- [github.com/pre-commit/mirrors-mypy: v1.5.1 → v1.6.1](pre-commit/mirrors-mypy@v1.5.1...v1.6.1)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* [pre-commit.ci] pre-commit autoupdate (#49)

updates:
- [github.com/astral-sh/ruff-pre-commit: v0.1.4 → v0.1.6](astral-sh/ruff-pre-commit@v0.1.4...v0.1.6)
- [github.com/psf/black: 23.10.1 → 23.11.0](psf/black@23.10.1...23.11.0)
- [github.com/pre-commit/mirrors-mypy: v1.6.1 → v1.7.1](pre-commit/mirrors-mypy@v1.6.1...v1.7.1)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* [pre-commit.ci] pre-commit autoupdate (#50)

updates:
- [github.com/astral-sh/ruff-pre-commit: v0.1.6 → v0.1.9](astral-sh/ruff-pre-commit@v0.1.6...v0.1.9)
- [github.com/psf/black: 23.11.0 → 23.12.1](psf/black@23.11.0...23.12.1)
- [github.com/pre-commit/mirrors-mypy: v1.7.1 → v1.8.0](pre-commit/mirrors-mypy@v1.7.1...v1.8.0)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Update GH actions badge (#51)

* Update test_and_deploy.yml (#52)

See neuroinformatics-unit/movement#108

Co-authored-by: Igor Tatarnikov <[email protected]>

* Add manifest (#54)

* Update CI workflows with manifest

* Allow workflow to be dispatchable

* Add pyarrow dependency to prevent future pandas failures

* [pre-commit.ci] pre-commit autoupdate (#53)

updates:
- [github.com/astral-sh/ruff-pre-commit: v0.1.9 → v0.2.0](astral-sh/ruff-pre-commit@v0.1.9...v0.2.0)
- [github.com/psf/black: 23.12.1 → 24.1.1](psf/black@23.12.1...24.1.1)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* refactor image_io as submodule

* Deprecated alias warning is still present

* Fix an actual circular import because of wildcard import

* Fix buggy html logo - wrong escape backslash

---------

Co-authored-by: crousseau <[email protected]>
Co-authored-by: Adam Tyson <[email protected]>
Co-authored-by: Adam Tyson <[email protected]>
Co-authored-by: Jaime Rodríguez-Guerra <[email protected]>
Co-authored-by: Jules Scholler <[email protected]>
Co-authored-by: Jules Scholler <[email protected]>
Co-authored-by: David Stansby <[email protected]>
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Alessandro Felder <[email protected]>
Co-authored-by: Igor Tatarnikov <[email protected]>
@adamltyson
Copy link
Member

Can this be merged?

@willGraham01
Copy link
Contributor Author

Can this be merged?

If you're happy with it's current state, yep. I've started my own dev branch to incorporate these features that'll build on top of this.

@adamltyson
Copy link
Member

@alessandrofelder seems happy, so LGTM.

@adamltyson adamltyson merged commit b9181a5 into main Feb 9, 2024
10 checks passed
@willGraham01 willGraham01 deleted the add-citation-tool branch February 9, 2024 15:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants