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

Incorporating json into bids.File (issues #596 #371) #597

Merged
merged 17 commits into from
Aug 8, 2023

Conversation

nbeliy
Copy link
Collaborator

@nbeliy nbeliy commented Jul 28, 2023

First draft to incorporating managing sidecar into bids.File class.

@Remi-Gau , Is it better to use the bids.File class directly or use a daughter class extending functionality?

Todo:

  • lint
  • tests
  • docs
  • Decide if create new class bids.JSONFileor use the bids.File
  • Add path management to Sources and Raw. BIDS requires path starting from root of dataset

@nbeliy nbeliy changed the title Incorporating json into bids.File Incorporating json into bids.File (issues #596 #369 #371) Jul 28, 2023
@Remi-Gau
Copy link
Collaborator

Is it better to use the bids.File class directly or use a daughter class extending functionality?

my hunch would be to first keep things in the same class

@nbeliy
Copy link
Collaborator Author

nbeliy commented Aug 1, 2023

Ok, will merge into main class.

@nbeliy
Copy link
Collaborator Author

nbeliy commented Aug 1, 2023

Few changes:

  • Removed JSONFile subclass, and moved functions to File class
  • Created new util.update_struct function that manages the updating fields in json structure (with tests)
  • Added documentation

@Remi-Gau

  • util.update_struct duplicates the internal function from bids.Description, should we replace it?
  • In current bids.File implementation, the metadata is loaded when instance is created, which may cause slowdowns (reading file on disk and searching for inheritence). Will it be better to make metadata load on request only?
  • I've added the doc for both util.update_struct and File, can you check if it's extensive and comprehensive?

% a: 'val_a'
% Appending values to existing field:
% update_struct(struct('a', 'val_a', 'b', 'val_b'),
% 'b-add', 'val_b2')
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
% 'b-add', 'val_b2')
% 'b-add', 'val_b2')

Random thought.
I know this is an edge case in the world of bids because we would expect the field to be camel camse but what if one of the field to update is named "b-add", do you have then do something like: "b-add-add" ?

Copy link
Collaborator

@Remi-Gau Remi-Gau Aug 1, 2023

Choose a reason for hiding this comment

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

maybe it would be better to have simpler function:

  • one for adding
  • one for removing
  • one for appending an element to a an array or a cell
  • one for popping an element from a array or a cell

or have the first argument specify what "action" to perform.

Copy link
Collaborator Author

@nbeliy nbeliy Aug 2, 2023

Choose a reason for hiding this comment

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

Well, no matter how BIDS will decide to make life needlessly complicated, but if json is transformed into matlab structure, the fieldnames like b-add will be forbidden.

Splitting into several subcommand: metadata_add, metadata_append, metadata_rm can be implemented, and maybe is a good idea. But then it would be difficult to work with struct instead of parameters.

For poping (remove and return) is more complicated, as matlab do not modify current object, and multiple returns looks ugly:

 [file, val] = file.metadata_pop('val_a');

What is your take on not forcing to read metadata when creating File instance, and making it on request only?

Copy link
Collaborator

Choose a reason for hiding this comment

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

the fieldnames like b-add will be forbidden

Oh dear... Matlab 101. Silly me for forgetting this... I guess that's what happens when you start switching back and forth between languages

Copy link
Collaborator

Choose a reason for hiding this comment

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

What is your take on not forcing to read metadata when creating File instance, and making it on request only?

I think that the metadata reading will try to implement the inheritance principle (by reading potentially matching metadatafiles in the parent directories) and I don't remember if I have put the fail safe in place to avoid "weird" behaviors.

For example it may be while doing some file wrangling that I do not want the metadata from temp/task-foo_bold.json to b added to those of tmp/WIP/sub-01_task-foo_bold.json.

temp
├── task-foo_bold.json
└── WIP
    ├── sub-01_task-foo_bold.json
    └── sub-01_task-foo_bold.nii

I think this was the kind of concern I had. But improving the handling of the inheritance principle could help with things like this.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I agree that inheritance should be part of bids (even if I don't like it due to all the complications). My question should the metadata be loaded implicitly or explicitly (f.set_metadata();).

Implicit reading of metadata imposes that the logic of retrieving json files, and reading them happens every time when a new instance is created, even if it's not needed.

The way how inheritance principle is implemented is an another issue -- it requires the knowledge of the layout of dataset, which is stored in layout structure, but not in File. For me (very personal opinion), inheritance principle should be applied during creation of layout, by setting File.metadata_files, but not in File.

Copy link
Collaborator

Choose a reason for hiding this comment

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

Just realized that set_metadata relies on bids.internal.get_meta_list that tries to implement the inheritance principle (same one use for bids.layout).

    function obj = set_metadata(obj)
      if isempty(obj.metadata_files)
        pattern = '^.*%s\\.json$';
        obj.metadata_files = bids.internal.get_meta_list(obj.path, pattern);
      end
      obj.metadata =  bids.internal.get_metadata(obj.metadata_files);
    end

I would say that changing this is beyond the scope of this PR which is on updating metadata. Just thought it was good to mention it.

Copy link
Collaborator

Choose a reason for hiding this comment

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

For poping (remove and return) is more complicated, as matlab do not modify current object, and multiple returns looks ugly:

 [file, val] = file.metadata_pop('val_a');

I think I would just return the file object.

file = file.metadata_pop('FieldToPopFrom', 'value_to_pop');

Copy link
Collaborator

Choose a reason for hiding this comment

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

FWI: will open a small PR to add a parameter to bids.internal.get_meta_list to decide to use the inheritance principle or not to list metadata files.

It could then be reused here to let user decide what they want to do.

@nbeliy
Copy link
Collaborator Author

nbeliy commented Aug 2, 2023

Added tests for File and set up implicit metadada reading.

For me, the PR can be removed from draft.

+bids/File.m Outdated Show resolved Hide resolved
@Remi-Gau
Copy link
Collaborator

Remi-Gau commented Aug 2, 2023

Tacking #369 feels a bit too much in this PR, no?
maybe better in a separate one, no?

@nbeliy
Copy link
Collaborator Author

nbeliy commented Aug 4, 2023

Tacking #369 feels a bit too much in this PR, no?
maybe better in a separate one, no?

Technically yes, but it can be integrated in the current PR. But I'm not sure what to do with inheritance principle -- renaming can easily brake it.

@Remi-Gau
Copy link
Collaborator

Remi-Gau commented Aug 4, 2023

You are right. One headache at time. Let's leave it out of the scope of this one for now.

@nbeliy nbeliy marked this pull request as ready for review August 4, 2023 14:10
@nbeliy
Copy link
Collaborator Author

nbeliy commented Aug 4, 2023

  1. Added functions that acts on single field:
  • metadata_add(obj, field, value) to add/overwrite -- pointless, as same effect can be achieved with f.metadata.Filed = value
  • metadata_append(obj, field, value) -- transforms value to cellarray if needed, and appends new value
  • metadata_remove(obj, field) -- removes field from metadata, don't want to call it pop, cause in python remove removes element, and pop removes and returns element

The metada_update is kept, as a way to update several fields at same time without copying same variable 25 times (why matlab don't have pointers or references????)

Updated doc and tests (couldn't run coverage).

At this point the PR do what is supposed to do -- ready for final discussion/review?

I'll open a new tangent issue for automatic loading of metadata, just to keep things organized.

@Remi-Gau Remi-Gau changed the title Incorporating json into bids.File (issues #596 #369 #371) Incorporating json into bids.File (issues #596 #371) Aug 5, 2023
+bids/File.m Show resolved Hide resolved
Comment on lines 70 to 80
% test metadata manipulation
% metadata_update
bf = bf.metadata_update('Testing', 'adding field');
assertTrue(isfield(bf.metadata, 'Testing'));
assertEqual(bf.metadata.Testing, 'adding field');

bf = bf.metadata_update('Testing', 'modifying field');
assertEqual(bf.metadata.Testing, 'modifying field');

bf = bf.metadata_update('Testing', []);
assertFalse(isfield(bf.metadata, 'Testing'));
Copy link
Collaborator

Choose a reason for hiding this comment

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

probably better to have smaller independent tests (into separate functions)

not a blocker: I can take care of it in a separate PR

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Can do -- I put there to not reread metadata again.

Copy link
Collaborator

Choose a reason for hiding this comment

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

yeah that's always the trade off, but unless set up is super heavy then I tend to prefer smaller independent tests.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Just to be clear, do you want a new function inside tests_bids_file.m or completely separate test suite? I guess it's former, but want to be sure.

Copy link
Collaborator

Choose a reason for hiding this comment

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

a new function inside tests_bids_file.m

just new function

matlab is annoying enough to force you to have one "main" function per file, let's not feed the monster. 😉

Copy link
Collaborator

@Remi-Gau Remi-Gau left a comment

Choose a reason for hiding this comment

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

2 minor points regarding having smaller tests and where the doc for each method should go.

If you don't have the time I can take care of it.

just let me know.

thanks

@nbeliy
Copy link
Collaborator Author

nbeliy commented Aug 8, 2023

Spitted the tests.

Just to be completely transparent and to be sure that docs are clear:
metadata_update: several keys can be passed, or one structure
metadata_add, metadata_append, metadata_remove: only one key can be passed; do not catches errors
metadata_write: passed keys modifies only written metadata, not the original object

@Remi-Gau
Copy link
Collaborator

Remi-Gau commented Aug 8, 2023

All good.
thanks for this @nbeliy
looking forward to start using this actually!!

@Remi-Gau
Copy link
Collaborator

Remi-Gau commented Aug 8, 2023

I may add another option later in a separate PR to add the possibility to use the inheritance principle or not when loading the metadata

will ask for a review if you have time

@Remi-Gau Remi-Gau merged commit 43eb70b into bids-standard:dev Aug 8, 2023
20 checks passed
@nbeliy nbeliy deleted the nb_jsonfile branch August 9, 2023 09:14
Remi-Gau added a commit that referenced this pull request Nov 20, 2023
* add transformers to label and merge identical rows

* update doc

* refactor

* add cumulative behavior to label indentical rows

* refactor

* expand behavior of label rows to support cell type for columns

* add tests for merge rows

* FCI

* FCI

* add inequality to Filter transformer

* support regex for Replace transformers

* update docs

* refactor

* add possibility to generate json version of transformers

* add demo transformers split by trials

* update help sections

* update code to adapt to new schema

* fix entity order bug

* return only one datatypes when they are duplicates

* set file modality in constructor

* get definition will look into metadata if it returns empty in colums

* rm old CI

* remove labels from dependabot config

* fix test that delete schema

* make layout more verbose

* make layout more versbose and make warning mosre useful

* only display a . for actually indexed modality

* fix octave bug

* add function to create basic participant.tsv

* silence warning test for octave

* make query warning more explicit

* add extra model validation

* revert 21a9a9e

* retry more informative error on metadata query

* remove some old copyrights

* lint

* use new copyright format

* update doc

* bring back images for contributing

* fix typo

* update demos

* update notebooks and convert to matlab scripts

* update notebooks

* add test workflow

* FCI

* FCI

* fix notebooks

* Update demos/working_with_files.m

* update doc

* FCI

* switch back to isdir to see if older octave is happier with this

* update README

* update create participants.tsv

* update image path

* fix copyright line skip

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* fix spelling

* fix report tests

* update create participants

* add create session tsv

* fix test

* update test

* update bids init

* refactor create readme

* update create readme

* add extra columns sessions.tsv

* add doc arguments

* lint

* improve test and messages

* fix some test

* exclude some files from scans.tsv

* refactor tests

* fix octave warning

* silence warning test on octave

* skip bids validation with octave for now

* skip failing matlab test

* simplify test

* windows related fixes

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* skip octave test

* improve error message

* fix octave test

* fix listing of trial types

* improve default stats model when no task present

* silence test for warning under octave

* fix creation of json for derivatives when entity labels are numbers

* make download more robust

* skip warning test for octave

* reformat windows path when printing to avoiding escaped characters warnings

* improve error message on query

* fix create sessions and participants tsv

* add potential datalad related hints when file writing fails

* fix typo

* improve error message

* silence codespell

* silence octave warning

* improve transformers

* add response time histogram

* add get root node method

* refactor

* use bids stats model to plot events

* fix code spell and octave bug

* fix miss hit config

* remove comment

* fix download face rep dataset

* better handle datalad datasets

* validate folder name in bids.init

* fix cell indexing

* fix cell indexing

* update doc

* add diagnostic for events

* improve figure saving

* update doc

* rename transformers tests

* refactor tests

* silence writing tranformers test definitions

* move logical operation as compute opertion

* update transformer test description

* update facerep

* add versbosity options to reports

* add flag to all figures

* add filter to layout to only index certain subjects, sessions, modalities

* use filtering of layout

* fix when no filter

* use regexp

* fix when to use regex

* improve octave support of transformers

* rm some tests skip for octave

* stop using moxunit

* refactor ci

* change action version

* use bids validator with octave

* fix octace in ci

* add JSONio to octave path

* add quotes

* fiw path

* fix path

* fix dead links

* fix links

* update download

* update precommit

* fix tests

* make transformer more tolerant when filtering variable is missing

* [DOC] update bids.layout doc and return_file_index error message (#539)

* update doc

* add more detail when error happens in return_file_index

* update precommit

* update pre-commit and run on all files

* [ENH] update warning message on return_file_index failure (#540)

* update doc

* add more detail when error happens in return_file_index

* update precommit

* update pre-commit and run on all files

* update warning

* improve error message

* update info about gunzip (#547)

* [MAINT] back merge master (#549)

* docs: update README.md [skip ci]

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

* CI: Use PAT to submit pull requests (#534)

This will ensure that actions run on the PR. The default `GITHUB_TOKEN` is not enabled to do that to avoid a possible loop of new PRs with actions.

* Bump peter-evans/create-pull-request from 4 to 5 (#536)

Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 4 to 5.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](peter-evans/create-pull-request@v4...v5)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [MAINT] update schema (#548)

* update schema

* readd token$

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
Co-authored-by: Chris Markiewicz <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [FIX] failing to return file index during dependencies indexing thorw warning and not error (#546)

* no file index throws warning and not error

* silence octave warning

* update doc (#554)

* [ENH] support querying for scans.tsv and sessions.tsv  (#550)

* add querying for scans

* add querying for sessions

* count sessions and scans as suffixes

* fix tests

* [ENH] allow to query directly for tsv content (#555)

* silence some warnings

* test error

* allow  query  of  participants (#557)

* [INFRA] run tests on mac OS and windows for matlab (#560)

* docs: update README.md [skip ci]

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

* CI: Use PAT to submit pull requests (#534)

This will ensure that actions run on the PR. The default `GITHUB_TOKEN` is not enabled to do that to avoid a possible loop of new PRs with actions.

* Bump peter-evans/create-pull-request from 4 to 5 (#536)

Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 4 to 5.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](peter-evans/create-pull-request@v4...v5)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [MAINT] update schema (#548)

* update schema

* readd token$

* update ci (#558)

* split workflows matlab and octave

* fix

* use shorthand for commands

* skip coverage on windows

* [FIX] remove byte order mark from tsv file (#556)

* fix bom

* add data

* octave fix

* change the way CI is detected

* fix tests

* sanitize path in error

* [DATALAD] Recorded changes

* [DATALAD] Recorded changes

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
Co-authored-by: Chris Markiewicz <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [INFRA] randomize tests order (#566)

* randomize tests

* fix doc generation and links

* skip dead links

* skip dead links

* skip dead links

* skip dead links

* use temp_dir

* [MAINT] update schema dev (#580)

* docs: update README.md [skip ci]

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

* CI: Use PAT to submit pull requests (#534)

This will ensure that actions run on the PR. The default `GITHUB_TOKEN` is not enabled to do that to avoid a possible loop of new PRs with actions.

* Bump peter-evans/create-pull-request from 4 to 5 (#536)

Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 4 to 5.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](peter-evans/create-pull-request@v4...v5)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [MAINT] update schema (#548)

* update schema

* readd token$

* update ci (#558)

* [FIX] remove byte order mark from tsv file (#556)

* fix bom

* add data

* octave fix

* Bump matlab-actions/run-command from 1.1.3 to 1.2.0 (#570)

Bumps [matlab-actions/run-command](https://github.com/matlab-actions/run-command) from 1.1.3 to 1.2.0.
- [Release notes](https://github.com/matlab-actions/run-command/releases)
- [Commits](matlab-actions/run-command@v1.1.3...v1.2.0)

---
updated-dependencies:
- dependency-name: matlab-actions/run-command
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [MAINT] update schema (#577)

* update schema

* rm token

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
Co-authored-by: Chris Markiewicz <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [ENH] give more meaningful error messsages when failing to read json (#582)

* add warning mentioning which json files could not be read

* add file not found erro

* fix force false skipped when unzipping files (#584)

* [DOC] update help of several functions (#583)

* update doc

* update example

* fixes

* [ENH] add electrodes and optodes as group dependencies (#586)

* add electrodes and optodes as dependencies

* inline function

* fix

* allow indexing of files missing session entity when schemaless (#598)

* improve wrong dir message (#601)

* [ENH] index and query phenotype (#590)

* index and query phenotype

* do not load content and metadata

* [ENH] do not add subject to layout if it is empty (#600)

* do not add subject to layout if it is empty

* subject is in structure if schemaless

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* refactor

* get properties and not fields when dealing with bids.File instance

* rerun

* silence failing tests on windows

---------

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

* [MAINT] Update from main (#606)

* docs: update README.md [skip ci]

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

* CI: Use PAT to submit pull requests (#534)

This will ensure that actions run on the PR. The default `GITHUB_TOKEN` is not enabled to do that to avoid a possible loop of new PRs with actions.

* Bump peter-evans/create-pull-request from 4 to 5 (#536)

Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 4 to 5.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](peter-evans/create-pull-request@v4...v5)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [MAINT] update schema (#548)

* update schema

* readd token$

* update ci (#558)

* [FIX] remove byte order mark from tsv file (#556)

* fix bom

* add data

* octave fix

* Bump matlab-actions/run-command from 1.1.3 to 1.2.0 (#570)

Bumps [matlab-actions/run-command](https://github.com/matlab-actions/run-command) from 1.1.3 to 1.2.0.
- [Release notes](https://github.com/matlab-actions/run-command/releases)
- [Commits](matlab-actions/run-command@v1.1.3...v1.2.0)

---
updated-dependencies:
- dependency-name: matlab-actions/run-command
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [MAINT] update schema (#577)

* update schema

* rm token

* docs: add coxroy as a contributor for bug, ideas, and userTesting (#585)

* docs: update README.md [skip ci]

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

---------

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

* BIDS schema update (#587)

Co-authored-by: Remi-Gau <[email protected]>

* BIDS schema update (#592)

Co-authored-by: Remi-Gau <[email protected]>

* BIDS schema update (#594)

Co-authored-by: Remi-Gau <[email protected]>

* Bump matlab-actions/run-command from 1.2.0 to 1.2.1 (#602)

Bumps [matlab-actions/run-command](https://github.com/matlab-actions/run-command) from 1.2.0 to 1.2.1.
- [Release notes](https://github.com/matlab-actions/run-command/releases)
- [Commits](matlab-actions/run-command@v1.2.0...v1.2.1)

---
updated-dependencies:
- dependency-name: matlab-actions/run-command
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [FIX] handle nan and and datetimes when printing tables (#605)

* fix bugs in tables and datetimes

* skip on windows

* update schema

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
Co-authored-by: Chris Markiewicz <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Remi-Gau <[email protected]>

* [ENH] use inheritance in get_meta_list (#609)

* use inheritance in get_meta_list

* refactor

* [ENH] improve bids schema api (#610)

* improve API

* add doc

* skip octave for test

* [FIX] better handle printing of paths in windows (#611)

* better handle printting of paths in windows

* fix more paths

* more clean up

* fix more paths

* fix bug with unsorted model (#613)

* add info about skipped tests (#614)

* Incorporating json into bids.File (issues #596 #371) (#597)

* First attempt to incorporate json into bids.File

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* lint

* Added util function to update structures

* Style and tests for util/update_struct.m

* Using metadata field instead of json_struct

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Removed JSONFile subclass

* Added tests for metadata for File class

* Fixed spelling in doc

* File: Added functions that act on individual fields

* File: fixed style

* Splitted File.metadada tests into smaller ones

---------

Co-authored-by: Beliy Nikita <[email protected]>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Remi Gau <[email protected]>

* add id to warning

* fix bug with 2 json file for one level (#616)

* [ENH] improve performance and testing (#618)

* update timing

* try speed up test by not indexing dependencies

* run on latest and oldest matlab

* [DATALAD] Recorded changes

* [DATALAD] Recorded changes

* cancel previous runs

* speed up some tests or functions

* run slow and fast tests in parallel

* windows env var fix

* try using globals

* fix

* add more slow test

* add doc

* update demo (#621)

* update demo

* doc changes

* [ENH] remove atlas and update res and den metadata (#622)

* rm atlas and update res and den metadata

* fix

* [FIX] Fix tests after merge from master (#627)

* fix tests after merge from main

* fix test octave

* use objects for levels (#630)

* add internal function to start resolvig uri (#631)

* fix hed tags (#632)

* [MAINT] merge main in dev (#644)

* BIDS schema update (#628)

Co-authored-by: Remi-Gau <[email protected]>

* Bump actions/checkout from 3 to 4 (#629)

Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* BIDS schema update (#633)

Co-authored-by: Remi-Gau <[email protected]>

* BIDS schema update (#634)

Co-authored-by: Remi-Gau <[email protected]>

* BIDS schema update (#635)

Co-authored-by: Remi-Gau <[email protected]>

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

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)

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

* BIDS schema update (#637)

Co-authored-by: Remi-Gau <[email protected]>

* BIDS schema update (#639)

Co-authored-by: Remi-Gau <[email protected]>

* BIDS schema update (#640)

Co-authored-by: Remi-Gau <[email protected]>

* Bump matlab-actions/setup-matlab from 1.2.4 to 1.2.5 (#641)

Bumps [matlab-actions/setup-matlab](https://github.com/matlab-actions/setup-matlab) from 1.2.4 to 1.2.5.
- [Release notes](https://github.com/matlab-actions/setup-matlab/releases)
- [Commits](matlab-actions/setup-matlab@v1.2.4...v1.2.5)

---
updated-dependencies:
- dependency-name: matlab-actions/setup-matlab
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump matlab-actions/run-command from 1.2.1 to 1.2.2 (#642)

Bumps [matlab-actions/run-command](https://github.com/matlab-actions/run-command) from 1.2.1 to 1.2.2.
- [Release notes](https://github.com/matlab-actions/run-command/releases)
- [Commits](matlab-actions/run-command@v1.2.1...v1.2.2)

---
updated-dependencies:
- dependency-name: matlab-actions/run-command
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [FIX] update test after schema update (#643)

* fix test after schema update

* set os version for doc

* update schema

* fix typos

* update tests

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Remi-Gau <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
Co-authored-by: Chris Markiewicz <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Remi-Gau <[email protected]>
Co-authored-by: Nikita Beliy <[email protected]>
Co-authored-by: Beliy Nikita <[email protected]>
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.

2 participants