From 28a0c461d96dab326f837ba0ab16943b701e38cc Mon Sep 17 00:00:00 2001 From: Taylor Salo Date: Mon, 25 Oct 2021 13:24:35 -0400 Subject: [PATCH] [DOC] Add JOSS badges (#815) * Add JOSS badges. * Trigger new build. * Update README.md * Add citation to README and index.rst. * Add duecredit citation. * Add reference to workflow docstrings. * Add citation to the report as well. * Add numbers back in. --- .circleci/config.yml | 30 +++++++++++++++--------------- README.md | 23 ++++++++++++++++++++++- docs/index.rst | 23 ++++++++++++++++++++--- tedana/__init__.py | 10 +++++++++- tedana/workflows/t2smap.py | 12 ++++++++++++ tedana/workflows/tedana.py | 27 ++++++++++++++++++++++++++- 6 files changed, 104 insertions(+), 21 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 84fd84d47..160a1806e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -14,7 +14,7 @@ jobs: steps: - checkout - restore_cache: - key: conda-py37-v1-{{ checksum "tedana/info.py" }} + key: conda-py37-v2-{{ checksum "tedana/info.py" }} - run: name: Generate environment command: | @@ -24,7 +24,7 @@ jobs: pip install .[tests] fi - save_cache: - key: conda-py37-v1-{{ checksum "tedana/info.py" }} + key: conda-py37-v2-{{ checksum "tedana/info.py" }} paths: - /opt/conda/envs/tedana_py37 @@ -35,7 +35,7 @@ jobs: steps: - checkout - restore_cache: - key: conda-py36-v1-{{ checksum "tedana/info.py" }} + key: conda-py36-v2-{{ checksum "tedana/info.py" }} - run: name: Generate environment command: | @@ -54,7 +54,7 @@ jobs: mkdir /tmp/src/coverage mv /tmp/src/tedana/.coverage /tmp/src/coverage/.coverage.py36 - save_cache: - key: conda-py36-v1-{{ checksum "tedana/info.py" }} + key: conda-py36-v2-{{ checksum "tedana/info.py" }} paths: - /opt/conda/envs/tedana_py36 - persist_to_workspace: @@ -69,7 +69,7 @@ jobs: steps: - checkout - restore_cache: - key: conda-py37-v1-{{ checksum "tedana/info.py" }} + key: conda-py37-v2-{{ checksum "tedana/info.py" }} - run: name: Running unit tests command: | @@ -91,7 +91,7 @@ jobs: steps: - checkout - restore_cache: - key: conda-py38-v1-{{ checksum "tedana/info.py" }} + key: conda-py38-v2-{{ checksum "tedana/info.py" }} - run: name: Generate environment command: | @@ -110,7 +110,7 @@ jobs: mkdir /tmp/src/coverage mv /tmp/src/tedana/.coverage /tmp/src/coverage/.coverage.py38 - save_cache: - key: conda-py38-v1-{{ checksum "tedana/info.py" }} + key: conda-py38-v2-{{ checksum "tedana/info.py" }} paths: - /opt/conda/envs/tedana_py38 - persist_to_workspace: @@ -125,7 +125,7 @@ jobs: steps: - checkout - restore_cache: - key: conda-py39-v1-{{ checksum "tedana/info.py" }} + key: conda-py39-v2-{{ checksum "tedana/info.py" }} - run: name: Generate environment command: | @@ -144,7 +144,7 @@ jobs: mkdir /tmp/src/coverage mv /tmp/src/tedana/.coverage /tmp/src/coverage/.coverage.py39 - save_cache: - key: conda-py39-v1-{{ checksum "tedana/info.py" }} + key: conda-py39-v2-{{ checksum "tedana/info.py" }} paths: - /opt/conda/envs/tedana_py39 - persist_to_workspace: @@ -159,7 +159,7 @@ jobs: steps: - checkout - restore_cache: - key: conda-py37-v1-{{ checksum "tedana/info.py" }} + key: conda-py37-v2-{{ checksum "tedana/info.py" }} - run: name: Style check command: | @@ -175,7 +175,7 @@ jobs: steps: - checkout - restore_cache: - key: conda-py37-v1-{{ checksum "tedana/info.py" }} + key: conda-py37-v2-{{ checksum "tedana/info.py" }} - run: name: Run integration tests no_output_timeout: 40m @@ -200,7 +200,7 @@ jobs: steps: - checkout - restore_cache: - key: conda-py37-v1-{{ checksum "tedana/info.py" }} + key: conda-py37-v2-{{ checksum "tedana/info.py" }} - run: name: Run integration tests no_output_timeout: 40m @@ -225,7 +225,7 @@ jobs: steps: - checkout - restore_cache: - key: conda-py37-v1-{{ checksum "tedana/info.py" }} + key: conda-py37-v2-{{ checksum "tedana/info.py" }} - run: name: Run integration tests no_output_timeout: 40m @@ -250,7 +250,7 @@ jobs: steps: - checkout - restore_cache: - key: conda-py37-v1-{{ checksum "tedana/info.py" }} + key: conda-py37-v2-{{ checksum "tedana/info.py" }} - run: name: Run integration tests no_output_timeout: 40m @@ -277,7 +277,7 @@ jobs: at: /tmp - checkout - restore_cache: - key: conda-py37-v1-{{ checksum "tedana/info.py" }} + key: conda-py37-v2-{{ checksum "tedana/info.py" }} - run: name: Merge coverage files command: | diff --git a/README.md b/README.md index 7c2d02c29..4e17a3385 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,8 @@ [![Latest Version](https://img.shields.io/pypi/v/tedana.svg)](https://pypi.python.org/pypi/tedana/) [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/tedana.svg)](https://pypi.python.org/pypi/tedana/) -[![DOI](https://zenodo.org/badge/110845855.svg)](https://zenodo.org/badge/latestdoi/110845855) +[![JOSS DOI](https://joss.theoj.org/papers/10.21105/joss.03669/status.svg)](https://doi.org/10.21105/joss.03669) +[![Zenodo DOI](https://zenodo.org/badge/110845855.svg)](https://zenodo.org/badge/latestdoi/110845855) [![License](https://img.shields.io/badge/License-LGPL%202.0-blue.svg)](https://opensource.org/licenses/LGPL-2.1) [![CircleCI](https://circleci.com/gh/ME-ICA/tedana.svg?style=shield)](https://circleci.com/gh/ME-ICA/tedana) [![Documentation Status](https://readthedocs.org/projects/tedana/badge/?version=latest)](http://tedana.readthedocs.io/en/latest/?badge=latest) @@ -23,6 +24,26 @@ An important distinction is that while the ME-ICA pipeline originally performed More information and documentation can be found at https://tedana.readthedocs.io. +## Citing `tedana` + +If you use `tedana`, please cite the following papers, as well as our [most recent Zenodo release](https://zenodo.org/badge/latestdoi/110845855): + +- DuPre, E. M., Salo, T., Ahmed, Z., Bandettini, P. A., Bottenhorn, K. L., + Caballero-Gaudes, C., Dowdle, L. T., Gonzalez-Castillo, J., Heunis, S., + Kundu, P., Laird, A. R., Markello, R., Markiewicz, C. J., Moia, S., + Staden, I., Teves, J. B., Uruñuela, E., Vaziri-Pashkam, M., + Whitaker, K., & Handwerker, D. A. (2021). + [TE-dependent analysis of multi-echo fMRI with tedana.](https://doi.org/10.21105/joss.03669) + _Journal of Open Source Software_, _6(66)_, 3669. + doi:10.21105/joss.03669. +- Kundu, P., Inati, S. J., Evans, J. W., Luh, W. M., & Bandettini, P. A. (2011). + [Differentiating BOLD and non-BOLD signals in fMRI time series using multi-echo EPI.](https://doi.org/10.1016/j.neuroimage.2011.12.028) + _NeuroImage_, _60_, 1759-1770. +- Kundu, P., Brenowitz, N. D., Voon, V., Worbe, Y., Vértes, P. E., Inati, S. J., + Saad, Z. S., Bandettini, P. A., & Bullmore, E. T. (2013). + [Integrated strategy for improving functional connectivity mapping using multiecho fMRI.](https://doi.org/10.1073/pnas.1301725110) + _Proceedings of the National Academy of Sciences_, _110_, 16187-16192. + ## Installation ### Use `tedana` with your local Python environment diff --git a/docs/index.rst b/docs/index.rst index 1c29c76d6..a2c1fe3b1 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -12,9 +12,13 @@ tedana: TE Dependent ANAlysis :target: https://pypi.python.org/pypi/tedana/ :alt: PyPI - Python Version +.. image:: https://joss.theoj.org/papers/10.21105/joss.03669/status.svg + :target: https://doi.org/10.21105/joss.03669 + :alt: JOSS DOI + .. image:: https://zenodo.org/badge/110845855.svg :target: https://zenodo.org/badge/latestdoi/110845855 - :alt: DOI + :alt: Zenodo DOI .. image:: https://circleci.com/gh/ME-ICA/tedana.svg?style=shield :target: https://circleci.com/gh/ME-ICA/tedana @@ -110,14 +114,27 @@ When using tedana, please include the following citations:

tedana Available from: https://doi.org/10.5281/zenodo.1250561 +

+ +

+ 2. DuPre, E. M., Salo, T., Ahmed, Z., Bandettini, P. A., Bottenhorn, K. L., + Caballero-Gaudes, C., Dowdle, L. T., Gonzalez-Castillo, J., Heunis, S., + Kundu, P., Laird, A. R., Markello, R., Markiewicz, C. J., Moia, S., + Staden, I., Teves, J. B., Uruñuela, E., Vaziri-Pashkam, M., + Whitaker, K., & Handwerker, D. A. (2021). + TE-dependent analysis of multi-echo fMRI with tedana. + Journal of Open Source Software, 6(66), 3669. + doi:10.21105/joss.03669. +

- 1. Kundu, P., Inati, S. J., Evans, J. W., Luh, W. M. & Bandettini, P. A. (2011). + 3. Kundu, P., Inati, S. J., Evans, J. W., Luh, W. M., & Bandettini, P. A. (2011). Differentiating BOLD and non-BOLD signals in fMRI time series using multi-echo EPI. NeuroImage, 60, 1759-1770.

+

- 1. Kundu, P., Brenowitz, N. D., Voon, V., Worbe, Y., Vértes, P. E., Inati, S. J., + 4. Kundu, P., Brenowitz, N. D., Voon, V., Worbe, Y., Vértes, P. E., Inati, S. J., Saad, Z. S., Bandettini, P. A., & Bullmore, E. T. (2013). Integrated strategy for improving functional connectivity mapping using multiecho fMRI. Proceedings of the National Academy of Sciences, 110, 16187-16192. diff --git a/tedana/__init__.py b/tedana/__init__.py index 468049f2d..c53332fec 100644 --- a/tedana/__init__.py +++ b/tedana/__init__.py @@ -7,7 +7,7 @@ import warnings -from .due import Doi, due +from .due import BibTeX, Doi, due from .info import ( __author__, __copyright__, @@ -24,6 +24,14 @@ # cmp is not used, so ignore nipype-generated warnings warnings.filterwarnings("ignore", r"cmp not installed") +# Citation for the package JOSS paper. +due.cite( + Doi("10.21105/joss.03669"), + description="Publication introducing tedana.", + path="tedana", + cite_module=True, +) + # Citation for the algorithm. due.cite( Doi("10.1016/j.neuroimage.2011.12.028"), diff --git a/tedana/workflows/t2smap.py b/tedana/workflows/t2smap.py index fc6a9a522..f2cee3497 100644 --- a/tedana/workflows/t2smap.py +++ b/tedana/workflows/t2smap.py @@ -161,6 +161,8 @@ def t2smap_workflow( """ Estimate T2 and S0, and optimally combine data across TEs. + Please remember to cite [1]_. + Parameters ---------- data : :obj:`str` or :obj:`list` of :obj:`str` @@ -219,6 +221,16 @@ def t2smap_workflow( will have a NaN. desc-optcom_bold.nii.gz Optimally combined timeseries. ============================= ================================================= + + References + ---------- + .. [1] DuPre, E. M., Salo, T., Ahmed, Z., Bandettini, P. A., Bottenhorn, K. L., + Caballero-Gaudes, C., Dowdle, L. T., Gonzalez-Castillo, J., Heunis, S., + Kundu, P., Laird, A. R., Markello, R., Markiewicz, C. J., Moia, S., + Staden, I., Teves, J. B., Uruñuela, E., Vaziri-Pashkam, M., + Whitaker, K., & Handwerker, D. A. (2021). + TE-dependent analysis of multi-echo fMRI with tedana. + Journal of Open Source Software, 6(66), 3669. doi:10.21105/joss.03669. """ out_dir = op.abspath(out_dir) if not op.isdir(out_dir): diff --git a/tedana/workflows/tedana.py b/tedana/workflows/tedana.py index b290a17c6..60e77e8d3 100644 --- a/tedana/workflows/tedana.py +++ b/tedana/workflows/tedana.py @@ -344,6 +344,8 @@ def tedana_workflow( """ Run the "canonical" TE-Dependent ANAlysis workflow. + Please remember to cite [1]_. + Parameters ---------- data : :obj:`str` or :obj:`list` of :obj:`str` @@ -426,6 +428,16 @@ def tedana_workflow( This workflow writes out several files. For a complete list of the files generated by this workflow, please visit https://tedana.readthedocs.io/en/latest/outputs.html + + References + ---------- + .. [1] DuPre, E. M., Salo, T., Ahmed, Z., Bandettini, P. A., Bottenhorn, K. L., + Caballero-Gaudes, C., Dowdle, L. T., Gonzalez-Castillo, J., Heunis, S., + Kundu, P., Laird, A. R., Markello, R., Markiewicz, C. J., Moia, S., + Staden, I., Teves, J. B., Uruñuela, E., Vaziri-Pashkam, M., + Whitaker, K., & Handwerker, D. A. (2021). + TE-dependent analysis of multi-echo fMRI with tedana. + Journal of Open Source Software, 6(66), 3669. doi:10.21105/joss.03669. """ out_dir = op.abspath(out_dir) if not op.isdir(out_dir): @@ -530,7 +542,20 @@ def tedana_workflow( elif t2smap is not None: raise IOError("Argument 't2smap' must be an existing file.") - RepLGR.info("TE-dependence analysis was performed on input data.") + RepLGR.info( + "TE-dependence analysis was performed on input data using the tedana workflow " + "(DuPre, Salo et al., 2021)." + ) + RefLGR.info( + "DuPre, E. M., Salo, T., Ahmed, Z., Bandettini, P. A., Bottenhorn, K. L., " + "Caballero-Gaudes, C., Dowdle, L. T., Gonzalez-Castillo, J., Heunis, S., " + "Kundu, P., Laird, A. R., Markello, R., Markiewicz, C. J., Moia, S., " + "Staden, I., Teves, J. B., Uruñuela, E., Vaziri-Pashkam, M., " + "Whitaker, K., & Handwerker, D. A. (2021). " + "TE-dependent analysis of multi-echo fMRI with tedana. " + "Journal of Open Source Software, 6(66), 3669. doi:10.21105/joss.03669." + ) + if mask and not t2smap: # TODO: add affine check LGR.info("Using user-defined mask")