Skip to content

Releases: bids-standard/pybids

0.9.5

11 Nov 18:27
0.9.5
285d4a3
Compare
Choose a tag to compare

DOI

Release Notes

Bug fix release in the 0.9.x series.

Final planned release with Python 2 support.

With thanks to new contributors Ashley Gillman, Satra Ghosh and Hans Johnson.

Changes

  • FIX: Filter before downsampling (#529)
  • FIX: Copy input dict in replace_entities; Typos in default_path_patterns (#517)
  • FIX: Use string dtype for all entities when using regex search (#511)
  • FIX: Update Sphinx docs for 2.2 (#507)
  • ENH: Enable automatic derivative database caching (#523)
  • ENH: Raise ValueError if BIDSLayout.build_path fails to match any pattern (#508)
  • RF: Subclass analysis Node from object (#528)
  • DOC: Unify docstring format (#499)
  • DOC: Auto-generate stubs (#513)
  • STY: .sql is a misleading extension to sqlite files (#531)
  • STY: General cleanups (#526, #527)

0.9.4

23 Sep 19:13
0.9.4
Compare
Choose a tag to compare

DOI

Release Notes

Bug fix release in the 0.9.x series.

With thanks to new contributor Jon Haitz Legarreta.

Changes

  • FIX: Ignore default_ignore paths by default (#495)
  • FIX: Filter and sort on scalar metadata in get_nodes() (#488)
  • FIX: Automatically sanitize dtype of get() arguments (#492)
  • FIX: Check that default_path_patterns is not None before using in build_path (#485)
  • FIX: Add CBV and phase modalities to func datatype path pattern (#479)
  • FIX: Drop bold suffix constraint from echo entity (#477)
  • ENH: Enforce dtypes on spec-defined columns when reading in DFs (#494)
  • ENH: Validate built paths (#496)
  • ENH: Update contrast enhancing agent query name (ceagent) (#497)
  • DOC: Add citation information to README (#493)
  • DOC: Improve wording in Python notebook example comment (#484)
  • DOC: Finish sentence in Python Notebook example documentation (#483)
  • DOC: Add JOSS Badge (#472)
  • STY: Apply syntax highlight to Python notebook example doc (#482)
  • MAINT: Move setup configuration to setup.cfg (#448)
  • MAINT: Additional Zenodo metadata (#470)
  • MAINT/CI: Use extras_require to declare dependencies for tests (#471)

0.9.3

08 Aug 16:12
a2cf22f
Compare
Choose a tag to compare

DOI

Release Notes

This version includes a number of minor fixes and improvements, one of which
breaks the existing API (by renaming two entities; see #464).

With thanks to new contributor Remi Gau.

Changes

  • FIX: Avoid DB collisions for redundant entities (#468)
  • FIX: Minor changes to entity names in core spec (#464)
  • FIX: Make bids.reports work properly with .nii images (#463)
  • CI: Execute notebook in Travis (#461)
  • ENH: More sensible __repr__ for Tag model (#467)

0.9.2

12 Jul 09:45
0.9.2
7d3435b
Compare
Choose a tag to compare

DOI

Release Notes

This version includes a number of minor fixes and improvements. EEG files are better handled, and BIDSLayout and BIDSFile play more nicely with Path-like objects.

With thanks to new contributor Cecile Madjar.

Changes

  • FIX: Instantiate ignore/force_index after root validation (#457)
  • FIX: Restore <entity>=None query returning files lacking the entity (#458)
  • ENH: Add BIDSJSONFile (#444)
  • ENH: Add BIDSFile.__fspath__ to work with pathlib (#449)
  • ENH: Add eeg datatype to layout config (#455)
  • RF: Remove unused kwargs to BIDSFile (#443)
  • DOC: Improve docstring consistency, style (#443)
  • DOC: Address final JOSS review (#453)
  • STY: PEP8 Fixes (#456)
  • MAINT: Set name explicitly in setup.py (#450)

0.9.1

24 May 14:19
Compare
Choose a tag to compare

DOI

Release notes

Hotfix release:

  • Fixed package deployment issues (#446)
  • Updated author list (#447)

Thanks to new contributors Erin Dickie, Chadwick Boulay and Johannes Wennberg.

0.9.0

21 May 16:40
Compare
Choose a tag to compare

DOI

Release notes

Version 0.9 replaces the native Python backend with a SQLite database managed
via SQLAlchemy. The layout module has been refactored (again), but API changes
are minimal. This release also adds many new features and closes a number of
open issues.

API CHANGES/DEPRECATIONS:

  • The extensions argument has now been banished forever; instead, use
    extension, which is now defined as a first-class entity. The former will
    continue to work until at least the 0.11 release (closes #404).
  • Relatedly, values for extension should no longer include a leading .,
    though this should also continue to work for the time being.
  • The BIDSLayout init argument index_associated has been removed as the
    various other filtering/indexing options mean there is longer a good reason for
    users to manipulate this.
  • bids.layout.MetadataIndex no longer exists. It's unlikely that anyone will
    notice this.
  • BIDSLayout.get_metadata() no longer takes additional entities as optional
    keyword arguments (they weren't necessary for anything).
  • Direct access to most BIDSFile properties is discouraged, and in one case
    is broken in 0.9 (for .metadata, which was unavoidable, because it's reserved
    by SQLAlchemy). Instead, users should use getters (get_metadata, get_image,
    get_df, etc.) whenever possible.

NEW FUNCTIONALITY:

  • All file and metadata indexing and querying is now supported by a
    relational (SQLite) database (see #422). While this has few API implications,
    the efficiency of many operations is improved, and complex user-generated
    queries can now be performed via the SQLAlchemy .session stored in each
    BIDSLayout.
  • Adds .save() method to the BIDSLayout that saves the current SQLite DB
    to the specified location. Conversely, passing a filename as database_file at
    init will use the specified store instead of re-indexing all files. This
    eliminates the need for a pickling strategy (#435).
  • Related to the above, the BIDSLayout init adds a reset_database argument
    that forces reindexing even if a database_file is specified.
  • The BIDSLayout has a new index_metadata flag that controls whether or
    not the contents of JSON metadata files are indexed.
  • Added metadata flag to BIDSLayout.to_df() that controls whether or not
    metadata columns are included in the returned pandas DataFrame (#232).
  • Added get_entities() method to BIDSLayout that allows retrieval of all
    Entity instances available within a specified scope (#346).
  • Adds drop_invalid_filters argument to BIDSLayout.get(), enabling users to
    (optionally) ensure that invalid filters don't clobber all search results
    (#402).
  • BIDSFile instances now have a get_associations() method that returns
    associated files (see #431).
  • The BIDSFile class has been split into a hierarchy, with BIDSImageFile
    and BIDSDataFile subclasses. The former adds a get_image() method (returns
    a NiBabel image); the latter adds a get_df() method (returns a pandas DF).
    All BIDSFile instances now also have a get_entities() method.

BUG FIXES AND OTHER MINOR CHANGES:

  • Metadata key/value pairs and file entities are now treated identically,
    eliminating a source of ambiguity in search (see #398).
  • Metadata no longer bleeds between raw and derivatives directories unless
    explicitly specified (see #383).
  • BIDSLayout.get_collections() no longer drops user-added columns (#273).
  • Various minor fixes/improvements/changes to tests.
  • The tutorial Jupyter notebook has been fixed and updated to reflect the
    latest changes.

0.8.0

15 Feb 18:45
3170502
Compare
Choose a tag to compare

DOI

Release notes

Version 0.8 refactors much of the layout module. It drops the grabbit
dependency, overhauls the file indexing process, and features a number of other
improvements. However, changes to the public API are very minimal, and in the
vast majority of cases, 0.8 should be a drop-in replacement for 0.7.*.

API-breaking changes

  • Changes to (rarely-used) BIDSLayout initialization arguments:
    • include and exclude have been replaced with ignore and
      force_index. Paths passed to ignore will be ignored from indexing;
      paths passed to force_index will be forcibly indexed even if they are
      otherwise BIDS-non-compliant. force_index takes precedence over ignore.
  • Most querying/selection methods add a new scope argument that controls
    scope of querying (e.g., 'raw', 'derivatives', 'all', etc.). In some
    cases this replaces the more limited derivatives argument.
  • No more domains: with the grabbit removal (see below), the notion of a
    'domain' has been removed. This should impact few users, but those who need
    to restrict indexing or querying to specific parts of a BIDS project should be
    able to use the scope argument more effectively.

Other changes

  • FIX: Path indexing issues in get_file() (#379)
  • FIX: Duplicate file returns under certain conditions (#350)
  • FIX: Pass new variable args as kwargs in split() (#386) @effigies
  • TEST: Update naming conventions for synthetic dataset (#385) @effigies
  • REF: The grabbit package is no longer a dependency; as a result, much of the
    functionality from grabbit has been ported over to pybids.
  • REF: Required functionality from six and inflect is now bundled with pybids
    in bids.external, minimizing external dependencies.
  • REF: Core modules have been reorganized. Key data structures and containers
    (e.g., BIDSFile, Entity, etc.) are now in a new bids.layout.core module.
  • REF: A new Config class has been introduced to house the information
    found in bids.json and other layout configuration files.
  • REF: The file-indexing process has been completely refactored. A new
    hierarchy of BIDSNode objects has been introduced. While this has no real
    impact on the public API, and isn't really intended for public consumption yet,
    it will in future make it easier for users to work with BIDS projects in a
    tree-like way, while also laying the basis for a more sensible approach to
    reading and accessing associated BIDS data (e.g., .tsv files).
  • MNT: All invocations of pd.read_table have been replaced with read_csv.

0.7.1

01 Feb 21:55
0.7.1
f13b800
Compare
Choose a tag to compare

DOI

Release Notes

This is a bug fix release in the 0.7 series. The primary API change is improved handling of Path objects.

CHANGES

  • FIX: Path validation (#342)
  • FIX: Ensure consistent entities at all levels (#326)
  • FIX: Edge case where a resampled column was too-long-by-one (#365)
  • FIX: Use BIDS metadata for TR over nii header (#357)
  • FIX: Add check for run_info to be a list, pass run_info in correct position. (#353)
  • FIX: If sampling_rate is 'auto', set to first rate of DenseRunVariables (#351)
  • FIX: Get the absolute path of the test data directory (#347)
  • FIX: Update reports to be 0.7-compatible (#341)
  • ENH: Rename sr variable to more intuitive interval (#366)
  • ENH: Support pathlib.Path and other str-castable types (#307)
  • MNT: Updates link to derivative config file in notebook (#344)
  • MNT: Add bids-validator dependency (#363)
  • MNT: Require pandas >= 0.23.0 (#348)
  • MNT: Bump grabbit version (#338)
  • CI: Ignore OSX Python 3.5 failures (#372)
  • CI: Build with Python 3.7 on Travis, deploy on 3.6 (#337)

0.7.0

10 Jan 21:28
10292a0
Compare
Choose a tag to compare

DOI

Release notes

This is a major, API-breaking release. It introduces a large number of new features, bug fixes, and improvements.

API-BREAKING CHANGES:

  • A number of entities (or keywords) have been renamed to align more closely with the BIDS specification documents:
    • 'type' becomes 'suffix'
    • 'modality' becomes 'datatype'
    • 'acq' is removed (use 'acquisition')
    • 'mod' becomes 'modality'
  • The following directories are no longer indexed by default: derivatives/, code/, stimuli/, models/, sourcedata/. They must be explicitly included using the 'include' initialization argument.
  • The grabbids module has been renamed to layout and BIDSLayout.py and BIDSvalidator.py are now layout.py and validation.py, respectively.
  • The BIDS validator is now enabled by default at layout initialization (i.e., validate=True)
  • The exclude initialization argument has been removed.
  • BIDSLayout.parse_entities utility has been removed (use the more flexible parse_file_entities).
  • Calls to .get() now return BIDSFile objects, rather than namedtuples, by default (#281). The BIDSFile API has been tweaked to ensure backwards incompatibility in nearly all cases.
  • Naming conventions throughout the codebase have been updated to ensure consistency with the BIDS specs. This is most salient in the analysis module, where snake_case has been replaced with CamelCase throughout.

NEW FEATURES:

  • File metadata (i.e., in JSON sidecars) is now searchable by default, and behaves just like native BIDS entities (e.g., metadata keys can be passed as arguments to .get() calls)
  • A new BIDSFile wrapper provides easy access to .metadata and .image
  • HRF convolution is now supported via bundling of nistats' hemodynamic_models module; convolution is handled via the convolve_HRF transformation.
  • Named config paths that customize how projects are processed can be added at run-time (#313)
  • Preliminary support for BIDS-Derivatives RC1 (mainly core keywords)

MINOR IMPROVEMENTS AND BUG FIXES:

  • Specifying 'derivatives' in a path specification now automatically includes 'bids' (#246)
  • Zenodo DOIs are now minted with new releases (#308)
  • Variable loading via load_variables can now be done incrementally
  • Expanded and improved path-building via layout.build_path()
  • get_collections no longer breaks when merge=True and the list is empty (#202)
  • Layout initialization no longer fails when validate=True (#222)
  • The auto_contrasts field in the modeling tools now complies with the BIDS-Model spec (#234)
  • Printing a BIDSFile now provides more useful information, including path (#298)
  • Resample design matrix to 1/TR by default (#309)
  • Fix the Sum transformation
  • Ensure that resampling works properly when a sampling rate is passed to get_design_matrix (#297)
  • Propagate derivative entities into top-level dynamic getters (#306)
  • Deprecated get_header call in nibabel removed (#300)
  • Fix bug in entity indexing for BIDSVariableCollection (#319)
  • Exclude modules with heavy dependencies from root namespace for performance reasons (#321)
  • Fix bug that caused in-place updating of input selectors in Analysis objects (#323)
  • Add a DropNA transformation (#325)
  • Add a get_tr() method to BIDSLayout (#327)
  • Add entity hints when calling get() with a target argument (#328)
  • Improved test coverage

0.6.5

21 Aug 21:02
28c0a3b
Compare
Choose a tag to compare

Release Notes

This release includes a number of documentation improvements, BIDS-MEG support, as well as some bug fixes.

CHANGES