About

What is BIDS Manager?

BIDS Manager is a multimodal raw-to-BIDS conversion and curation tool. It covers the full workflow for MRI, PET, EEG, MEG and the physiological recordings stored inside MRI DICOM files, in a single application, with the official BIDS schema as the source of truth for naming, structure and validation.

It does the conversion, and it puts you in control of how the conversion happens. The established engines write the files; BIDS Manager decides what each one is asked to do, one recording at a time, from a table you can read and change. Used on their own, those engines take their instructions from command-line flags and configuration files written before you know what is in the folder. Here you make the same decisions after looking at it, and you can see the result of each one before anything is written.

Around the conversion it does the rest of the job. Working out what a raw folder actually contains. Deciding what belongs in the dataset and what each file should be called. Collecting metadata that is scattered between file headers, a dose sheet on a desk, and the memory of whoever ran the session. Then checking that what came out is what you intended.

Everything arrives in one installation.

The conversion and defacing engines, the validator and the viewers are installed with the application, on macOS, Linux and Windows. There is no separate toolchain to assemble and no compiler to set up. See Installation.

Foundations

The engines underneath

Converting a scanner file, and removing the face from a head scan, are both solved problems. BIDS Manager does not solve either again. It uses the established tool for each job and extends it with the work that tool was never meant to cover.

  • dcm2niix converts MRI and PET DICOM series into NIfTI images.
  • mne-bids writes EEG and MEG recordings into the BIDS layout, and fNIRS recordings where the channels identify them as such.
  • pet2bids reads ECAT7 scanner headers and PMOD blood curves. It is the reference implementation for the PET part of the standard.
  • bidsphysio decodes the physiological signals that Siemens MRI scanners record alongside an image and store inside the DICOM files: respiration, ECG and pulse oximetry.
  • niimath removes the face from anatomical and PET images, by registering a mask from the avg152T1 atlas and blanking what it covers. The same operation with a brain mask is the atlas skull-strip engine. The template and mask pair comes from niivue/deface.
  • brainchop runs the mindgrab brain-extraction network, which finds the brain in an image directly rather than fitting an average one to it. It runs on tinygrad, so it needs no PyTorch and no ONNX runtime.

All six are installed with BIDS Manager. The dcm2niix and niimath binaries are included, MNE, pet2bids and brainchop arrive as dependencies, and bidsphysio is built in. There is no separate installation step for any of them, on any platform. The single exception is niimath on Python 3.14, which has no wheel for it yet: BIDS Manager installs and runs, and the defacing entry greys out with a tooltip saying why.

Defacing follows the same principle as conversion: these are established, openly licensed tools, and reimplementing either would only mean a second implementation to be wrong in its own way. What BIDS Manager adds around them is the preview, the reversibility and the before-and-after viewer.

You decide what each engine does, after you have seen the data

Each engine is normally given its instructions up front, through command-line flags or a configuration file, and you find out what it decided afterwards. BIDS Manager turns that around. It shows you every recording it found, you say what each one is and what it should be called, and only then are the engines run, on exactly what you chose.

The settings that usually live in flags are here too, as things you can see and change: whether a recording is converted at all, how many run in parallel, what happens when a subject already exists, whether the extra single-volume copies dcm2niix produces are kept, whether recordings are re-encoded to a format BIDS accepts. Rules you write once, for the way your own site names its sequences, are applied to every scan from then on.

The rest of the job

What BIDS Manager adds around them

Each engine does one job well and stops there, by design. Six named steps make up the rest, and they are what this application is for. They run in order, and each one leaves something you can read.

Step 1

Inventory

Every file in the raw folder is opened and its header read, then listed as one row per recording: which subject, which session, which sequence, how many files, and the name it will carry in BIDS. Nothing has to be sorted or renamed first, and a folder of mixed modalities produces one list.

Step 2

Curation

You read that list and change it: leave out the localisers and the run that was aborted, correct a task name, separate two subjects that were wrongly merged. Nothing is converted, moved or written to disk until you press Run.

Step 3

Overwrite protection

Every destination filename is worked out before conversion starts. Genuine repeats are numbered; anything still sharing a name is shown in red and the conversion refuses to run. Without this, one recording silently replaces another and both the conversion and the validator report success.

Step 4

Enrichment

What is already inside your files is written into the metadata for you: acquisition parameters, channel counts, sampling rates, frame timing and units. So are the facts that span files, such as which images a fieldmap corrects and which channel is really an EOG rather than an EEG.

Step 5

Metadata templates

Some of what BIDS requires is in no file anywhere. The injected dose for a PET scan is on a dose sheet; the reference electrode for an EEG recording was chosen by whoever set up the cap. A template asks each question once for every file of its kind, and any answer can be overridden for a single recording that differs.

Step 6

Validation

The dataset is checked against the standard without installing anything else, and every finding names the rule it came from. Images, recordings, sidecars and tables all open in the application, so a problem can be fixed where it was found. More on validation below.

BIDS Manager is also project-first. You begin by creating or opening a dataset project, and from then on every scan, edit and decision is saved into it. Each scan is kept as a versioned snapshot, and every edit is undoable. Curation carries across sessions, so you can stop half way and come back to it. Re-running a conversion safely merges in new subjects and sessions rather than overwriting what is already there.

Motivation

Why it exists

Raw datasets are rarely as clean as a conversion assumes. Real sessions accumulate complications:

  • DICOM files from one subject land in another subject's folder.
  • An interrupted run leaves residual volumes behind.
  • A bad scan is repeated on the spot, and both attempts stay in the same folder.
  • Calibration scans, localisers and scanner reports sit among the acquisitions of interest.
  • Naming drifts because the protocol changed mid-study.
  • A session is missing a run, or carries one extra.

Most conversion tools ask you to declare what is in the folder before they start, through a heuristic file or a configuration that encodes the expected structure: this acquisition is the T1w, this one is the resting-state BOLD, ignore the localisers. That design assumes you know exactly what happened in every session and every run.

The assumption is fragile. People routinely work with data they did not acquire: a colleague's project, a multi-site dataset, an archive from someone who has left. Even when you were the operator, months later the memory of restarting run 02 because the subject moved is gone. When the data does not match the configuration, the conversion mislabels rows, skips legitimate acquisitions, or produces an output that is structurally valid and wrong about what each file contains.

BIDS Manager starts from the other end. Before converting anything it reads the raw folder and presents every acquisition as it actually exists on disk: subject, session, run, modality, file count, scanner timestamps, image type, sequence parameters. Mixed subjects appear as separate rows. Residual volumes show their reduced file counts. Repeated sequences are listed side by side with the timestamps that let you pick the right take. Calibration and localiser series are marked for skipping, and you confirm every decision before anything is written.

What is converted is then what you saw and chose, rather than what a configuration file assumed.

Inventory rows the scan set aside, each carrying the reason it was excluded
Nothing disappears quietly. The teal row is an object with no image data inside it at all, a scanner report, which no converter can turn into anything. The dimmed rows are localisers set aside automatically. Every one carries its reason in the issues column, and any of them can be put back with a click. A tool that simply skipped them would leave you unable to tell an excluded file from a missing one.
The hard part

The failures you do not notice

A conversion that crashes is an inconvenience, and you fix it. The costly ones are the conversions that succeed, produce a dataset that looks correct, and are wrong. Every failure below is real and every one is silent by default. They are grouped by where they happen: the first group to any modality, then the three that are particular to MRI, to electrophysiology and to PET, and a last group that happens later, when a finished dataset is changed.

Whatever you are converting

Overwritten

Two recordings, one filename

Two recordings resolve to the same BIDS filename, and the second is written over the first. Nothing reports it: the conversion succeeds, the validator passes, and one scan is simply missing. You find out when the analysis has one subject fewer than your spreadsheet.

BIDS Manager works out the destination filename of every row before converting anything, gives genuine repeats a run number where the standard allows one, shows the rest in red, and refuses to convert until they are resolved.

Three rows resolving to the same BIDS name shown in red, above two rows separated automatically by run number
Caught before anything is written. The three red rows resolve to one filename with nothing to tell them apart, so the conversion refuses to start. The two below them were duplicates that a run number resolves, so they were separated automatically.
Invisible

A folder BIDS never reads

A datatype folder is mistyped, anatt instead of anat, or a well-meant raw folder is created inside a subject. The files inside can have perfect BIDS names. No BIDS tool will ever read them, because tools look inside the datatype folders. Most validators say nothing, because each filename is valid when examined on its own.

BIDS Manager reports it as an error and names the folder.

A structural error: a correctly named T1w inside a folder called anatt instead of anat
What it looks like when reported. The folder line reads ANATT, and the message says the file has a valid name but is not in a datatype directory, then lists what it should be. Every filename inside that folder is still correct, which is exactly why checking one name at a time says nothing.
Split apart

One participant, three identities

Every modality states who was scanned in its own way. MRI and PET carry a patient identifier in the DICOM header; EEG and MEG carry nothing, so the answer has to come from the folder. Scan a visit where somebody had all four and you get several subjects where there was one person, each holding part of the session.

BIDS Manager puts every recording in one table with the subject it worked out, so a disagreement is visible before conversion and is fixed by editing a column.

Shared anyway

A deidentified dataset with the faces still in it

Removing names and dates from the sidecars feels like the job is done, and every validator agrees. But a T1w contains enough of the face to render a recognisable portrait, and nothing in the dataset says so. The metadata is clean, the imaging is not, and the failure only surfaces once the data is somewhere you cannot take it back from.

BIDS Manager can remove faces during the conversion itself, so the identifiable image never enters the dataset, and shows you the before and after side by side so you can confirm that the face went and the brain did not. How defacing works.

MRI

Unusable

Fieldmaps that point at nothing

A fieldmap without IntendedFor is valid BIDS and useless: no pipeline can tell which images it is meant to correct.

BIDS Manager fills it in from what the scan measured.

False alarm

Objects that cannot be converted at all

A Siemens TENSOR map or a PhoenixZIPReport contains no image pixels. dcm2niix cannot convert it and returns an error, which looks exactly like a failed conversion of something that mattered.

BIDS Manager detects that there is no image inside, marks the row and excludes it with the reason shown, so a real failure is never lost among expected ones.

Phantom runs

Derived copies that look like extra data

dcm2niix can split one series into the real image plus several single-volume derivatives, named _bolda, _Eq_, _ROI or _i<instance>. They are valid NIfTI files with valid names. Left in place they inflate the run count and can be picked up by a pipeline as if they were acquisitions.

BIDS Manager drops them by default and tells you how many, with a setting to keep them. Genuine multi-output series, fieldmap pairs, complex data and DWI derivatives, are untouched.

EEG and MEG

Answered falsely

Metadata that looks answered and is not

BIDS requires EEGReference and EEGGround in every EEG sidecar. A converter cannot know them, so it writes "n/a". The field is present, the validator is satisfied, and the file now states something false about your recording.

BIDS Manager treats n/a as a question nobody has answered yet, and asks you once for the whole study.

Mistyped

An ECG trace filed as a brain channel

An amplifier records the heart, the eyes and the stimulus trigger on the same connector as the scalp, and the file format has no way to say which is which. Everything therefore arrives typed as EEG. An analysis that averages across channel type is then averaging a heartbeat into the data.

BIDS Manager lets you say once which channels are which, and rewrites their type in channels.tsv for every recording in the study. The types it accepts come from the schema, not from a list somebody typed out.

Overwritten

A device the converter already identified

A study-wide answer applied without checking will overwrite the manufacturer that mne-bids read out of a MEG file, replacing a fact from the recording with a guess from a form.

BIDS Manager offers what it detected as a suggestion and writes it only where you accepted it, so a value the file already knew is never quietly replaced.

PET

Wrong by decades

A scanner clock that says 1936

TimeZero is the instant every frame time and every blood sample is measured against. One of the published OpenNeuroPET phantom files records a scan start before the epoch, which renders as a plausible-looking time of day in 1936. Deriving TimeZero from it produces a dataset in which every time is wrong.

BIDS Manager refuses to derive it from an impossible value and asks you for it instead.

Drifting

Frame timing that drifts through a batch

Converting a folder of ECAT files can leave the second file with two frame times and the third with three, when one metadata template is reused between files. The images are right, the timing is wrong, and no validator checks for it.

BIDS Manager gives every file its own metadata, so the tenth file is as correct as the first.

Not in the file

Required numbers no scanner records

Injected dose, injected mass, specific activity, mode of administration. BIDS requires them. They are on the dose sheet, not in the file. A tool that reads only files cannot help, so it leaves them blank or writes a placeholder.

BIDS Manager asks for them once per study, with the standard's own description beside each box, and can read them from your lab's own dose spreadsheet.

Orphaned

A blood table its own sidecar cannot describe

BIDS separates hand-drawn and autosampled blood with a recording entity in the filename, and requires it on the sidecar as well as the table. A converter that puts it on one and not the other produces a pair no tool can match up, and the table is read without the units and flags that describe it.

BIDS Manager names the sidecar for the sampling it belongs to, so each table has a sidecar that can be found from its own name.

After conversion, when you change something

Left behind

A table still listing a file that moved

Rename a task, put a datatype into a session, delete a pilot run. The files change; the things that named them do not. The *_scans.tsv row still lists the old path, the IntendedFor entry on a fieldmap still points at the old image, the participants.tsv row is still there for a subject who is not. Every filename left in the dataset is valid, so the dataset passes, and the fieldmap is simply never applied to anything.

BIDS Manager treats the reference as part of the operation rather than as follow-up work. Renaming, restructuring and deleting each repair the scans tables, the sidecar fields the standard defines as holding a path, the participants and sessions rows, and the folders left empty, as one step that can be undone as one step.

Contradicted

A task name that no longer matches its own label

TaskName inside the sidecar is supposed to be the readable form of the task- label in the filename. Rename the label and the sidecar keeps the old name, so the file says one thing and the folder says another. No validator compares the two, and the wrong one is the one most analysis code reads.

BIDS Manager follows the rename into the sidecar, but only when the value there really does derive from the old label. A TaskName somebody wrote by hand is left alone rather than overwritten with a guess.

Half-rewritten

A link whose folder and filename disagree

The standard lets one file point at another with a URI such as bids::sub-001/anat/sub-001_T1w.nii.gz, where the subject appears twice, once as a folder and once inside the name. Rename the subject and a tool that rewrites only the part it recognises leaves a link whose two halves name different people. It resolves to nothing, and it is not reported.

BIDS Manager reads the link as a path rather than as text, so both halves are rewritten together, in all three of the spellings BIDS uses for pointing at a file.

Side by side

What a converter alone leaves undone

Most raw-to-BIDS tools are converters: give them a folder and a configuration, and they write BIDS. BIDS Manager uses the best of those converters rather than writing another one, and covers what lies on either side of them.

A converter aloneBIDS Manager
Knowing what is in the folderYou declare it up frontIt reads inside every file and shows you
Two files with one nameThe last one wins, silentlyConversion refuses and names both files
A folder that is not a datatypeUsually unreportedReported as an error, with the folder named
Metadata no file containsBlank, or a placeholderAsked once per study, in the standard's own words
Metadata that differs per runOne value for everythingA dataset default, with per-recording overrides
ValidationA separate tool, separately installedIncluded, on the same schema, citing the rule
Reviewing the resultOpen other softwareSidecar forms, TSV tables, NIfTI in 2-D, 3-D and time series, and a MEG / EEG signal viewer
Picking the work up againStart overVersioned scans, saved edits, undo
An engine that fails on one fileThe run failsThe failure is contained, the rest still converts

The last row matters more than it appears to. Real archives contain files that break tools. A conversion that stops at the first difficult file turns a morning's work into a week's.

Validation

Validation is part of the application

Validation is not a separate tool to install and run afterwards. It reads the same BIDS schema the rest of the application reads, so what it checks and what the metadata forms ask for cannot disagree. It runs on a whole dataset, a folder or a single file, and it runs while you edit, so a correction turns a finding green without leaving the window.

Every finding states three things: what is wrong, how to fix it, and which rule of the BIDS schema it comes from. The last of those is what makes a finding checkable. A rule path such as rules.sidecars.mri.MRIHardware points at the part of the standard the requirement is drawn from, so you can read it and judge the finding yourself.

Findings point at the field or the table column they concern, and a button takes you to it. Deep checks additionally open the NIfTI image headers, which catches a truncated or corrupt image that is otherwise indistinguishable from a healthy one.

A validation finding with the schema rule it came from printed underneath the message
A finding, in full. What is wrong, how to fix it, the field it concerns, and the rule in the BIDS schema the requirement is drawn from. This one is not a naming problem: it is a value inside a table that is the wrong type, which no check on filenames could ever see.
A dataset-level finding: no subject directories under the dataset root
Three scopes, always visible. Every finding is about the dataset as a whole, about the folder you are in, or about the file you have selected, and each section carries its own count. Nearly everything lands on a file, which is what makes the top section worth reading when it is not zero: here a sidecar describes a data file that is not in the dataset, which belongs to no single file and would have nowhere else to appear.
The validator is also available on its own.

The checks are implemented in bidsval, a separate open-source package, so the same validation can be used in a pipeline that has nothing to do with this application. BIDS Manager depends on it in the ordinary way.

Interfaces

Two ways to drive it

The graphical interface presents the decisions visually, with an editable inventory table, an inspection view, and viewers for NIfTI images, MEG and EEG signals, JSON sidecars and TSV tables.

The command line offers seven console scripts (bidsmgr-create, bidsmgr-scan, bidsmgr-rebuild, bidsmgr-convert, bidsmgr-metadata, bidsmgr-validate, bidsmgr-project) for scripted, headless or pipeline use.

Both drive the same engine. A scan run from the command line produces the inventory the graphical interface populates, and an edit made in the interface can be replayed from the command line.

Privacy

Your data stays on your machine

BIDS Manager runs entirely on your computer. Your images, your recordings and your participant information are read from your disk and written back to your disk. Nothing is uploaded, there is no account, there is no cloud service, and the application works with the network switched off.

The application contains no analytics and no telemetry. It does not report what you convert, how often you use it, or that you use it at all.

Telemetry in dependencies is switched off as well.

pet2bids reports usage by default. BIDS Manager disables that before loading it, because you chose this application and cannot reasonably consent on behalf of a dependency you did not know you were installing.

One feature uses the network, and only one: on request, BIDS Manager asks pypi.org for the latest published version number so it can tell you an update exists. That request carries nothing about you or your data, and it is the same request pip makes.

How it works

Eight stages, three views.

The workflow runs in eight stages that alternate between user-driven and engine-driven steps:

Raw is the input folder, untouched. Scan walks it and reads the metadata inside every file. Curate is where you review the inventory and decide what converts, under which name. Convert sends each row to the engine that reads its format and writes the BIDS files with their sidecars. Enrich fills the sidecar fields that can be filled, from the captured metadata, your template answers and the schema, and repairs what the engines leave incomplete. Fix-ups is the manual stage: you open the Editor, settle what no algorithm could infer, and correct anything about the dataset's shape that turned out wrong. Validate audits the result against the schema. BIDS is the finished dataset.

Before any of it, you create or open a dataset project. Everything after that is recorded into it, so the work is resumable and a second conversion merges rather than overwrites.

Click any stage in the diagram below to read it as engine internals, data artefacts, or GUI panels.

Raw Scan Curate Convert Enrich Fix-ups Validate BIDS

rawRaw data

Click a stage in the diagram above to read about it.

Why eight stages?

Most BIDS converters collapse the middle stages into one opaque run. Splitting them is what lets the user review the inventory before any conversion runs, and review the converted result before any validation.

Enrich and Fix-ups have different drivers. Enrich is automatic: a schema-driven algorithm fills what it can. Fix-ups is interactive: the user resolves what the algorithm could not.

Audience

Who it is for

  • Researchers who want a scan, review, convert and validate loop without writing scripts.
  • Lab managers who need reproducible BIDS exports across many subjects and modalities.
  • Power users who want to build their own pipelines on the same engine, through the command line.
Getting help

Questions, ideas, and problems

BIDS Manager is developed in the open by a small group, and there is one place for all of it: the issue tracker. It is not only for things that are broken. A question, a suggestion, or a sentence saying that something in these pages did not make sense are all as useful as a bug report, and often more so.

Open an issue → Browse existing issues

You need a free GitHub account, and nothing else.

No mailing list to join, no form to fill in, no institutional affiliation required. If you would rather not post publicly, say so in an issue with as little detail as you like and we will find another way.

What to send, whichever kind it is

Something is broken

Bug

The software did something wrong

It crashed, it refused to do something it should do, a conversion produced the wrong thing, or something looked right and was not. The last of those is the most valuable report we get, and the hardest to notice.

Tell us what you expected and what happened instead; the version from the About dialog and your operating system; the modality and the source format, for example PET ECAT or EEG BrainVision; and the message copied as text rather than photographed. Attach the log if you can: the application writes one, and it usually contains the answer.

Docs bug

The documentation is wrong or unclear

A step that does not match what you see, a number that no longer holds, a screenshot of a window that has changed, or an explanation that assumes something you were never told. These pages are generated against the running application and still go out of date.

Name the page and the section heading, and say what you expected to read there. "I could not tell whether this applied to ECAT" is a complete and useful report.

Something is missing

Feature

You want the software to do something it does not

A file format it does not read, a modality it does not handle, a step in your lab's workflow that still has to be done by hand, or a control that is in the wrong place for the way you work. Support for new formats and new modalities usually starts as somebody saying they had one.

Describe the workflow rather than the feature where you can. What you are trying to end up with tells us more than a proposed solution, and quite often there is already a way.

Docs idea

You want the documentation to cover something

A tutorial for a modality or a workflow that is not here, a worked example closer to your own data, a sample dataset you could practise on, or a diagram of something these pages only describe in words.

Say what you were trying to do when you went looking for it. That is what tells us where the page belongs.

Something is unclear

Question

You are not sure, and the answer is not here

Whether the tool can do what you need, whether your data is in a shape it can read, what a finding means, or whether something you are seeing is expected. There is no wrong question, and a question asked is usually a page that needs writing.

Ask it. If the answer turns out to be in these pages, the fact that you could not find it is itself worth knowing, and we will move it somewhere you would have looked.

Before you write, one look at the tracker

Search the existing issues first. One line saying "this happens to me too", with your own version and modality, is more useful than a duplicate: it tells us how widespread something is, which is how we decide what to do first.

Give the issue a title that says what happened rather than what you were doing. "Conversion refuses with a duplicate name on a two-session dataset" is better than "problem with conversion", and "PET tutorial does not say which dose sheet to use" is better than "documentation".

Please do not attach participant data.

A filename, an excerpt of a header, or an anonymised sidecar is almost always enough. If a file is genuinely needed to reproduce the problem, say so in the issue and we will find a way that does not involve posting it publicly. The privacy section above covers what BIDS Manager itself does with identifying data.

You do not need to know the codebase, and you do not need to propose a fix. A clear description of what went wrong, or of what you wish existed, is the useful part.

Next

Next steps