Tedana

Latest version: v24.0.0

Safety actively analyzes 621751 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 4

24.0.0

Release Notes

Summary

We have continued to make under-the-hood changes and improvements to documentation.
Several key changes may be noticable to users.
* By default, tedana has been saving 4D volumes of the high-kappa components `Accepted_bold.nii.gz`
and the low-kappa components 'Rejected_bold.nii.gz` even though very few people use them and they
use a lot of space. These will now only be saved if the program is run with `--verbose`. Additionally
our final denoised time series was called `desc-optcomDenoised_bold.nii.gz` and this created confusion.
It is now called `desc-denoised_bold.nii.gz`. **This will break pipelines that looked for a file with the
previous name.** https://github.com/ME-ICA/tedana/pull/1033
* We noticed a small difference between the decision tree implemented in
[MEICA v2.5](https://bitbucket.org/prantikk/me-ica/src/master/) and the tree we were calling `kundu`.
We have renamed our existing tree `tedana_orig` and there is now a `meica` tree that should match the
MEICA method. In practice, the results will be identical or `meica` will accept additional components.
The additionally accepted components can have substantive variance and, upon visual inspection usually
looked like they should have been rejected. Therefore, we've kept the same default, but give both options
to users. [952](https://github.com/ME-ICA/tedana/pull/952)
* Different metrics, like kappa and rho, are calculated for each ICA component. While the code allowed
for a range of different metrics, the list that was calculated when tedana was run was impossible to
change without editing the code. The metrics that were already specified in the decision tree json files
will now be the ones calculated. The actual metric calculations still need to be defined within the code,
but this change makes it practical to add a range of additional metrics that can vary by decision tree.
[969](https://github.com/ME-ICA/tedana/pull/969)
* The `tedana_report.html` file now includes the mean T2* and S0 maps used in calculations
[1040](https://github.com/ME-ICA/tedana/pull/1040), consistent orientations for all images of
brain slices [1045](https://github.com/ME-ICA/tedana/pull/1045), version numbers for key python
packages used during execution [1014](https://github.com/ME-ICA/tedana/pull/1014), and the reference
list is now properly rendered [1001](https://github.com/ME-ICA/tedana/pull/1001).

Changes
* Remove accepted and rejected time series from the standard file outputs and change denoised time series name (updated) by martaarbizu and handwerkerd in https://github.com/ME-ICA/tedana/pull/1033
* Generate metrics based on decision tree by tsalo and handwerkerd in https://github.com/ME-ICA/tedana/pull/969
* Align with old meica by handwerkerd and tsalo in https://github.com/ME-ICA/tedana/pull/952
* Add T2* and S0 figures by tsalo in https://github.com/ME-ICA/tedana/pull/1040
* Improve component plots by tsalo in https://github.com/ME-ICA/tedana/pull/1045
* Adding python library version numbers by handwerkerd in https://github.com/ME-ICA/tedana/pull/1014
* Fix Bibtex rendering in reports by eurunuela martaarbizu and martinezeguiluz in https://github.com/ME-ICA/tedana/pull/1001
* Fixed Inappropriate Logical Expression by fazledyn-or in https://github.com/ME-ICA/tedana/pull/1012
* Document decision tree steps in report and remove log_extra_report by handwerkerd and tsalo in https://github.com/ME-ICA/tedana/pull/1043
* Fixing ica_reclassify CLI documentation typo by handwerkerd in https://github.com/ME-ICA/tedana/pull/1010
* [DOC] Replaced newsletter with Google Groups by goodalse2019 in https://github.com/ME-ICA/tedana/pull/1017
* Reformat with new version of black by tsalo in https://github.com/ME-ICA/tedana/pull/1020
* Add Dependabot config and switch Release Drafter to Changelog config by tsalo in https://github.com/ME-ICA/tedana/pull/1024
* Fix error on empty input file & pre-commit updated to black version 24.2.0 by martinezeguiluz and handwerkerd in https://github.com/ME-ICA/tedana/pull/1031
* docs: add effigies as a contributor for code by allcontributors in https://github.com/ME-ICA/tedana/pull/1004
* docs: add bpinsard as a contributor for code by allcontributors in https://github.com/ME-ICA/tedana/pull/1003
* docs: add goodalse2019 as a contributor for doc, ideas, and question by allcontributors in https://github.com/ME-ICA/tedana/pull/1018
* docs: add martinezeguiluz as a contributor for code by allcontributors in https://github.com/ME-ICA/tedana/pull/1032
* docs: add martaarbizu as a contributor for code by allcontributors in https://github.com/ME-ICA/tedana/pull/1039

New Contributors
* bpinsard made their first contribution in https://github.com/ME-ICA/tedana/pull/1003
* fazledyn-or made their first contribution in https://github.com/ME-ICA/tedana/pull/1012
* goodalse2019 made their first contribution in https://github.com/ME-ICA/tedana/pull/1017
* dependabot made their first contribution in https://github.com/ME-ICA/tedana/pull/1025
* martinezeguiluz made their first contribution in https://github.com/ME-ICA/tedana/pull/1032
* martaarbizu made their first contribution in https://github.com/ME-ICA/tedana/pull/1039

**Full Changelog**: https://github.com/ME-ICA/tedana/compare/23.0.2...24.0.0

23.0.2

Summary

These changes includes a lot of documentation updates, logging of python and software versions in `tedana_report` (747), fixing a bug where one could not specify PCA variance explained from the command line interface (950), stricter code style rules along with pre-commits, cleaning up code in several places including several places where we were unnecessarily using old versions of python modules (998), and updating to allow `tedana` to run with python version 3.12 (999)

What's Changed

* Add recommendations for distortion correction by tsalo in https://github.com/ME-ICA/tedana/pull/896
* tedpca CLI fix by handwerkerd in https://github.com/ME-ICA/tedana/pull/950
* logging MAPCA subsampling by handwerkerd in https://github.com/ME-ICA/tedana/pull/951
* docs: add handwerkerd as a contributor for code by allcontributors in https://github.com/ME-ICA/tedana/pull/954
* [FIX] Styling issues and make RTD build work by eurunuela in https://github.com/ME-ICA/tedana/pull/968
* Remove RefLGR from code and refs field from decision trees by tsalo in https://github.com/ME-ICA/tedana/pull/965
* Add pre-commit to automatically fix style issue before pushing commits by eurunuela in https://github.com/ME-ICA/tedana/pull/973
* Add section to reports that show system info, tedana call and version by eurunuela in https://github.com/ME-ICA/tedana/pull/747
* Multiple documentation updates by handwerkerd in https://github.com/ME-ICA/tedana/pull/948
* Add .pre-commit-config.yaml by eurunuela in https://github.com/ME-ICA/tedana/pull/983
* Add prefix to all output files by tsalo in https://github.com/ME-ICA/tedana/pull/963
* Make it clearer in CONTRIBUTING.md how devs can make pre-commit work by eurunuela in https://github.com/ME-ICA/tedana/pull/985
* Lint codebase with additional style restrictions by tsalo in https://github.com/ME-ICA/tedana/pull/970
* remove unecessary copy of large data by bpinsard in https://github.com/ME-ICA/tedana/pull/995
* MNT: Uncap dependencies by effigies in https://github.com/ME-ICA/tedana/pull/998
* MNT: Test on 3.11 and 3.12 by effigies in https://github.com/ME-ICA/tedana/pull/999

New Contributors

* bpinsard made their first contribution in https://github.com/ME-ICA/tedana/pull/995

**Full Changelog**: https://github.com/ME-ICA/tedana/compare/23.0.1...23.0.2

23.0.1

Release Notes

Most of these changes were made for [v23.0.0](https://github.com/ME-ICA/tedana/releases/tag/23.0.0), but the package did not build for pip so the descriptive release notes are stored with this version.

This release changes many internal aspects of the code, will make future improvements easier, and will hopefully make it easier for more people to understand their results and contribute. The denoising results should be identical. Right before releasing this new version, we released version 0.0.13, which is the last version of the older code.

User-facing changes

* **Breaking change**: `tedana` can no longer be used to manually change component classifications. A separate program, `ica_reclassify`, can be used for this. This makes it easier for programs like [Rica](https://github.com/ME-ICA/rica) to output a list of component numbers to change and to then change them with `ica_reclassify`. Internally a massive portion of the `tedana` workflow code was a mess of conditional statements that were designed just so that this functionality could be retained within tedana. By separating out `ica_reclassify` the `tedana` code is more comprehensible and adaptable.
* **Breaking change**: No components are classified as `ignored`. `Ignored` has long confused users. It was intended to identify components with such low variation that it was not worth deciding whether to lose a statistical degree of freedom by rejecting them. They were treated identically to `accepted` components. Now they are classified as `accepted` and tagged as `Low variance` or `Borderline Accept`. This `classification_tag` now appears on the html report of the results and the component table file.
* **Breaking change**: In the component table file `classification_tag` has replaced `rationale`. Since the tags use words and one can assign more than one tag to each component, these are both more informative and more flexible than the older `rationale` numerical codes.
* It is now possible to select different decision trees for component selection using the `--tree` option. The default tree is `kundu` and that should replicate the current outputs. We also include `minimal` which is a simpler tree that is intended to provide more consistent results across a study, but needs more testing and validation and may still change. [Flow charts for these two options are here.](https://tedana.readthedocs.io/en/stable/included_decision_trees.html)
* Anyone can create their own decision tree. If one is using metrics that are already calculated, like `kappa` and `rho`, and doing greater/less than comparisons, one can make a decision tree with a user-provided json file and the `--tree` option. More complex calculations might require editing the tedana python code. This change also means any metric that has one value per component can be used in a selection process. This makes it possible to combine the multi-echo metrics used in tedana with other selection metrics, such as correlations to head motion. The documentation includes [instructions on building and understanding this component selection process](https://tedana.readthedocs.io/en/stable/building_decision_trees.html).
* Additional files are saved which store key internal calculations and what steps changed the accept vs reject classifications for each component. The documentation includes [descriptions of the newly outputted files and file contents](https://tedana.readthedocs.io/en/stable/outputs.html#classification-output-descriptions). These includes:
* A registry of all files outputted by tedana. This allows for multiple file naming methods and means internal and external programs that want to interact with the tedana outputs just need to load this file.
* A file of all the metrics calculated across components, such as the `kappa` and `rho` elbow thresholds
* A decision tree file which records the exact decision tree that was run on the data and includes metrics calculated and component classifications changed in each step of the process
* A component status table that is summarizes each components classification at each step of the decision tree

Under-the-hood changes

* The component classification process that designates components as “accepted” or “rejected” was completely rewritten so that every step in the process is modular and the inputs and outputs of every step are logged.
* Moved towards using the terminology of “Component Selection” rather than “Decision Tree” to refer to the code that’s part of the selection process. “Decision Tree” is used to more specifically to refer to the steps to classify components.
* `ComponentSelector` object created to include common elements from the selection process including the component_table and information about what happens along every step of the decision tree. Additional information that will be stored in `ComponentSelector` and saved in files (as described above) includes `component_table`, `cross_component_metrics`, `component_status_table`, and `tree`
* The new class is defined in `./selection/component_selector.py`, the functions that define each node of a decision tree are in `./section/selection_nodes.py` and some key common functions used by selection_nodes are in `./selection/selection_utils.py`
* By convention, functions in selection_nodes.py that can change component classifications, begin with `dec_` for decision and functions that calculate cross_component_metrics begin with `calc_`
* A key function in selection_nodes.py is `dec_left_op_right` which can be used to change classifications based on the intersection of 1-3 boolean statements. This means most of the decision tree is modular functions that calculate cross_component_metrics and then tests of boolean conditional statements.
* When defining a decision tree a list of `necessary_metrics` are required and, when a tree is executed, the `used_metrics` are saved. This information is both a good internal check and can potentially be used to calculate metrics as defined in a `tree` rather than separately specifying the metrics to calculate and the tree to use.
* `io.py` is now used to output a registry (default is `desc-tedana_registry.json`) and can be used by other programs to read in files generated by `tedana` (i.e. Load the optimcally combined time series and ICA mixing matrix from the output of tedana rather than needing to input the names of each file separately)
* Some terminology changes, such as using `component_table` instead of `comptable` in code
* integration tests now store testing data in `.testing_data_cache` and only download data if the data on OSF was updated more recently than the local data.
* Nearly 100% of the new code and 98% of all tedana code is covered by integration testing.
* Tedana python package management now uses pyproject.toml
* **Possible breaking change** Minimum python version is now 3.8 and minimum pandas version is now 2.0 (might cause problems if the same python environment is used for packages that require older versions of pandas)

Changes

* [REF] Decision Tree Modularization jbteves handwerkerd n-reddy marco7877 tsalo in 756
* Update python-publish.yml by tsalo in 945

**Full Changelog**: <https://github.com/ME-ICA/tedana/compare/0.0.13...23.0.1>

23.0.1rc0

Release Notes

[Version 23.0.0](https://github.com/ME-ICA/tedana/releases/tag/23.0.0) was released, but did not build correctly for pip. This release fixed that issue.

What's Changed
* Update python-publish.yml by tsalo in https://github.com/ME-ICA/tedana/pull/945


**Full Changelog**: https://github.com/ME-ICA/tedana/compare/23.0.0...23.0.1rc0

23.0.0

Release Notes

This release changes many internal aspects of the code, but there was a small bug that prevented it from building for `pip`. Since this version cannot be installed through `pip` the descriptive release notes are included with [Version 23.0.1](https://github.com/ME-ICA/tedana/releases/tag/23.0.1)

Changes

* [REF] Decision Tree Modularization (756) jbteves handwerkerd n-reddy marco7877 tsalo

**Full Changelog**: <https://github.com/ME-ICA/tedana/compare/0.0.13...23.0.0>

0.0.13

Release Notes

This is the last release before refactoring of large portions of the code.

Breaking Changes

* Corrected a bug where the component classification process should have calculated a threshold on a sorted list of component variances, but it was calculated on an unsorted list. (938)
* In v0.0.12 we changed the default method for selecting the number of components from MDL to AIC, but later realized this was only implemented when run through the python API, but not from the command line. Now AIC is the default for both. (877)

Additional changes to highlight

* Optimization curves and additional info for the PCA dimensionality reduction step are saved to help users and developers identify problems with the step that identifies the number of components to use (839)
* Added Python 3.10 compatibility (818)
* Using BibTeX instead of duecredit for listing references so warnings from users not having duecredit installed will **finally** be gone (875)
* Tedana python package management now uses setup.cfg (874)

All changes since last stable release

* Generalize installation instructions to work with Windows in CONTRIBUTING by aryangupta701 in https://github.com/ME-ICA/tedana/pull/846
* [MAINT] Switch to setup.cfg-based configuration by tsalo in https://github.com/ME-ICA/tedana/pull/874
* [FIX] Add function to prep data for JSON serialization by jbteves in https://github.com/ME-ICA/tedana/pull/859
* [ENH, FIX] PCA variance enhancements and consistency improvements by handwerkerd in https://github.com/ME-ICA/tedana/pull/877
* Print optimal number of maPCA components and plot optimization curves by eurunuela in https://github.com/ME-ICA/tedana/pull/839
* [DOC] Add information about using tedana with fMRIPrep v21.0.0 by tsalo in https://github.com/ME-ICA/tedana/pull/847
* [REF] Replace duecredit with BibTeX by tsalo in https://github.com/ME-ICA/tedana/pull/875
* Update CONTRIBUTING.md by jbteves in https://github.com/ME-ICA/tedana/pull/885
* [REF] Suppresses divide by 0 warning by jbteves in https://github.com/ME-ICA/tedana/pull/786
* Add links to several multi-echo datasets by tsalo in https://github.com/ME-ICA/tedana/pull/895
* Add F-T2 and F-S0 maps to verbose outputs by tsalo in https://github.com/ME-ICA/tedana/pull/893
* [MAINT] Add 3.10 unit test, compatibilities in setup.cfg by jbteves in https://github.com/ME-ICA/tedana/pull/818
* [FIX] Use capital names in desc-ICAOrth_mixing.tsv columns by pablosmig in https://github.com/ME-ICA/tedana/pull/906
* [DOC] Add documentation page on denoising approaches by tsalo in https://github.com/ME-ICA/tedana/pull/823
* docs: add giadaan as a contributor for doc by allcontributors in https://github.com/ME-ICA/tedana/pull/916
* Add Nashiro dataset to documentation by Kasambx in https://github.com/ME-ICA/tedana/pull/912
* Fix example code in denoising documentation by tsalo in https://github.com/ME-ICA/tedana/pull/917
* Sorting varex for decision tree criterion I011 by handwerkerd in https://github.com/ME-ICA/tedana/pull/924
* [DOC] Remove Josh as maintainer by jbteves in https://github.com/ME-ICA/tedana/pull/928
* add pandas version check >= 1.5.2 and mod behavior by pmolfese in https://github.com/ME-ICA/tedana/pull/938

New Contributors
* aryangupta701 made their first contribution in https://github.com/ME-ICA/tedana/pull/846
* pablosmig made their first contribution in https://github.com/ME-ICA/tedana/pull/906
* Kasambx made their first contribution in https://github.com/ME-ICA/tedana/pull/912
* pmolfese made their first contribution in https://github.com/ME-ICA/tedana/pull/938

**Full Changelog**: https://github.com/ME-ICA/tedana/compare/0.0.12...0.0.13

Page 1 of 4

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.