Releases: bids-standard/pybids
0.10.2
0.10.1
Release Notes
Bug fix release in the 0.10.x series.
This release just makes available some of the latest minor fixes and improvements.
Changes
- FIX: Replace
os.path.sep
withfwdslash
because bids validator hardcodes fwd (#582) - FIX: Refactor of
build_path
and inner machinery (#574) - FIX: Domain entity, and slow
__repr__
(#569) - FIX: "strict" helptext in
BIDSLayout.write_contents_to_file
(#566) - FIX: typos in helpstrings and comments (#564)
- FIX: Correct term "caret" to "angle bracket" in helpstrings (#565)
- ENH: Extend
build_path
to generate lists of files (#576) - ENH: Add one parametric test of
BIDSLayout.build_path
(#577) - ENH: Enable partial metadata indexing (#560)
- ENH: Upscale to collection sampling rate prior to resampling (#568)
- ENH: Calculate default sampling rate for
SparseRunVariable.to_dense
(#571) - MNT: Add
.vscode
(for Visual Studio Code) to.gitignore
(#562) - MNT: Ignore pip-wheel-metadata (#581)
- DOC: Remove Python 2 support statement, now that v0.10.0 has dropped it (#561)
0.10.0
Release Notes
New feature release in the 0.10.x series.
This release removes Python 2 support.
Changes
- ENH: Helpful error for db argument mismatch, and add classmethod load_from_db (#547)
- ENH: Add Resample transformation (#373)
- ENH: Save BIDSLayout + Derivatives to folder (with init arguments) (#540)
- ENH: Adds support for NONE and ANY query Enums (#542)
- ENH: Transformation-related improvements (#541)
- ENH: FEMA contrasts (#520)
- STY: Minor PEP8 Fixes (#545)
- MNT: Various (#543)
- MNT: Remove Python 2.7 support (#524)
- CI: Configure Circle Artifact Redirector (#544)
0.9.5
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 indefault_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
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 notNone
before using inbuild_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
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
0.9.2
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
0.9.0
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 argumentindex_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 theBIDSLayout
that saves the current SQLite DB
to the specified location. Conversely, passing a filename asdatabase_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 areset_database
argument
that forces reindexing even if adatabase_file
is specified. - The
BIDSLayout
has a newindex_metadata
flag that controls whether or
not the contents of JSON metadata files are indexed. - Added
metadata
flag toBIDSLayout.to_df()
that controls whether or not
metadata columns are included in the returned pandasDataFrame
(#232). - Added
get_entities()
method toBIDSLayout
that allows retrieval of all
Entity
instances available within a specified scope (#346). - Adds
drop_invalid_filters
argument toBIDSLayout.get()
, enabling users to
(optionally) ensure that invalid filters don't clobber all search results
(#402). BIDSFile
instances now have aget_associations()
method that returns
associated files (see #431).- The
BIDSFile
class has been split into a hierarchy, withBIDSImageFile
andBIDSDataFile
subclasses. The former adds aget_image()
method (returns
a NiBabel image); the latter adds aget_df()
method (returns a pandas DF).
AllBIDSFile
instances now also have aget_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
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
andexclude
have been replaced withignore
and
force_index
. Paths passed toignore
will be ignored from indexing;
paths passed toforce_index
will be forcibly indexed even if they are
otherwise BIDS-non-compliant.force_index
takes precedence overignore
.
- 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 limitedderivatives
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 thescope
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
inbids.external
, minimizing external dependencies. - REF: Core modules have been reorganized. Key data structures and containers
(e.g.,BIDSFile
,Entity
, etc.) are now in a newbids.layout.core
module. - REF: A new
Config
class has been introduced to house the information
found inbids.json
and other layout configuration files. - REF: The file-indexing process has been completely refactored. A new
hierarchy ofBIDSNode
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 withread_csv
.