BIBSNet: A deep learning baby image brain segmentation network for MRI scans.
Paper
Loaded from Europe PMC by your browser, not stored by OSCR: doi.org · Europe PMC
The paper is loaded when this pane is shown.
The authors' code
Python · 185 lines · 7.1 KB · other-open
- #!/usr/bin/env python3
- # coding: utf-8
- """
- Wrapper to run nnU-Net_predict with model 512, produced via training on BCP
- subjects of ages 0-8 months
- Greg Conan: [email hidden]
- Created: 2022-02-08
- Updated: 2022-06-28
- """
- # Import standard libraries
- import argparse
- from datetime import datetime
- from glob import glob
- import os
- import subprocess
- import sys
- def main():
- # Time how long the script takes and get command-line arguments from user
- start_time = datetime.now()
- cli_args = get_cli_args()
- run_nnUNet_predict(cli_args)
- # Show user how long the pipeline took and end the pipeline here
- exit_with_time_info(start_time)
- def run_nnUNet_predict(cli_args):
- """
- Run nnU-Net_predict in a subshell using subprocess
- :param cli_args: Dictionary containing all command-line input arguments
- :return: N/A
- """
- subprocess.call((cli_args["nnUNet"], "-i",
- cli_args["input"], "-o", cli_args["output"], "-t",
- str(cli_args["task"]), "-m", cli_args["model"]))
- # Only raise an error if there are no output segmentation file(s)
- if not glob(os.path.join(cli_args["output"], "*.nii.gz")):
- # NOTE This statement should change if we add a new model
- sys.exit("Error: Output segmentation file not created at the path "
- "below during nnUNet_predict run.\n{}\n\nFor your input files "
- "at the path below, check their filenames and visually "
- "inspect them if needed.\n{}\n\n"
- .format(cli_args["output"], cli_args["input"]))
- def get_cli_args():
- """
- :return: Dictionary containing all validated command-line input arguments
- """
- script_dir = os.path.dirname(__file__)
- default_model = "3d_fullres"
- default_nnUNet_path = os.path.join(script_dir, "nnUNet_predict")
- default_task_ID = 512
- parser = argparse.ArgumentParser()
- parser.add_argument(
- "--input", "-i", type=valid_readable_dir, required=True,
- help=("Valid path to existing input directory following valid nnU-Net "
- "naming conventions (T1w files end with _0000.nii.gz and T2w "
- "end with _0001.nii.gz). There should be exactly 1 T1w file and "
- "exactly 1 T2w file in this directory.")
- )
- parser.add_argument(
- "--output", "-o", type=valid_output_dir, required=True,
- )
- parser.add_argument(
- "--nnUNet", "-n", type=valid_readable_file, default=default_nnUNet_path,
- help=("Valid path to existing executable file to run nnU-Net_predict. "
- "By default, this script will assume that nnU-Net_predict will "
- "be in the same directory as this script: {}".format(script_dir))
- )
- parser.add_argument( # TODO Does this even need to be an argument, or will it always be the default?
- "--task", "-t", type=valid_whole_number, default=default_task_ID,
- help=("Task ID, which should be a 3-digit positive integer starting "
- "with 5 (e.g. 512).")
- )
- parser.add_argument( # TODO Does this even need to be an argument, or will it always be the default?
- "--model", "-m", default=default_model
- )
- return validate_cli_args(vars(parser.parse_args()), parser)
- def validate_cli_args(cli_args, parser):
- """
- :param cli_args: Dictionary containing all command-line input arguments
- :param parser: argparse.ArgumentParser to raise error if anything's invalid
- :return: cli_args, but with all input arguments validated
- """
- # Verify that there is exactly 1 T1w file and exactly 1 T2w file in the
- # --input directory
- err_msg = ("There must be exactly 1 T{0}w file in {1} directory, but the "
- "number of T{0}w files there currently is {2}")
- t1or2_path_format = os.path.join(cli_args["input"], "*_000{}.nii.gz")
- for t1or2 in (1, 2):
- img_files = glob(t1or2_path_format.format(t1or2 - 1))
- if len(img_files) != 1:
- parser.error(err_msg.format(t1or2, cli_args["input"],
- len(img_files)))
- # TODO Ensure that task ID is a 3-digit number starting with 5?
- return cli_args
- def valid_output_dir(path):
- """
- Try to make a folder for new files at path; throw exception if that fails
- :param path: String which is a valid (not necessarily real) folder path
- :return: String which is a validated absolute path to real writeable folder
- """
- return validate(path, lambda x: os.access(x, os.W_OK),
- valid_readable_dir, "Cannot create directory at {}",
- lambda y: os.makedirs(y, exist_ok=True))
- def valid_readable_dir(path):
- """
- :param path: Parameter to check if it represents a valid directory path
- :return: String representing a valid directory path
- """
- return validate(path, os.path.isdir, valid_readable_file,
- "Cannot read directory at '{}'")
- def valid_readable_file(path):
- """
- Throw exception unless parameter is a valid readable filepath string. Use
- this, not argparse.FileType("r") which leaves an open file handle.
- :param path: Parameter to check if it represents a valid filepath
- :return: String representing a valid filepath
- """
- return validate(path, lambda x: os.access(x, os.R_OK),
- os.path.abspath, "Cannot read file at '{}'")
- def valid_whole_number(to_validate):
- """
- Throw argparse exception unless to_validate is a positive integer
- :param to_validate: Object to test whether it is a positive integer
- :return: to_validate if it is a positive integer
- """
- return validate(to_validate, lambda x: int(x) >= 0, int,
- "{} is not a positive integer")
- def validate(to_validate, is_real, make_valid, err_msg, prepare=None):
- """
- Parent/base function used by different type validation functions. Raises an
- argparse.ArgumentTypeError if the input object is somehow invalid.
- :param to_validate: String to check if it represents a valid object
- :param is_real: Function which returns true iff to_validate is real
- :param make_valid: Function which returns a fully validated object
- :param err_msg: String to show to user to tell them what is invalid
- :param prepare: Function to run before validation
- :return: to_validate, but fully validated
- """
- try:
- if prepare:
- prepare(to_validate)
- assert is_real(to_validate)
- return make_valid(to_validate)
- except (OSError, TypeError, AssertionError, ValueError,
- argparse.ArgumentTypeError):
- raise argparse.ArgumentTypeError(err_msg.format(to_validate))
- def exit_with_time_info(start_time, exit_code=0):
- """
- Terminate the pipeline after displaying a message showing how long it ran
- :param start_time: datetime.datetime object of when the script started
- :param exit_code: Int, exit code
- :return: N/A
- """
- print("BIBSnet for this subject took this long to run {}: {}"
- .format("successfully" if exit_code == 0 else "and then crashed",
- datetime.now() - start_time))
- sys.exit(exit_code)
- if __name__ == "__main__":
- main()
run.py, under other-open · at the source
Overview
and 10 other authors
Kenevan Carter2, Jonathan Uriarte-Lopez10, Amanda R Rueter11, Essa Yacoub12,13, Monica D Rosenberg7, Christopher D Smyser5, Jed T Elison2,3,14, Alice Graham10, Damien A Fair2,3,14, Eric Feczko2,1414 affiliations
- Minnesota Supercomputing Institute, University of Minnesota, USA
- Masonic Institute for the Developing Brain, University of Minnesota, USA
- Institute of Child Development, University of Minnesota, USA
- Center for Brain Plasticity and Recovery, Georgetown University, USA
- Departments of Neurology, Pediatrics, Radiology, and Psychiatry, Washington University in St. Louis, USA
- Department of Psychiatry, University of North Carolina at Chapel Hill, USA
- Department of Psychology, University of Chicago, USA
- University of Michigan, USA
- PrimeNeuro, USA
- Oregon Health & Science University, USA
- Department of Neurology, University of Minnesota, USA
- Department of Radiology, University of Minnesota, USA
- Center for Magnetic Resonance Research, University of Minnesota, USA
- Department of Pediatrics, University of Minnesota, USA
Abstract
The abstract is not reproduced here: the paper's license (CC BY-NC-ND) does not allow it. Read it in the paper, at the publisher or on Europe PMC.
Repository
Its files are read in the Code ↔ Paper reader above.
Zenodo 7106148
Availability: 1 check, the latest on 30 September 2026: the link answers (HTTP 200)
- 30 September 2026: the link answers (HTTP 200)
Tracing map
Proposed by the machine: these links were found in the paper and verified at the source, without human review. The map will receive a Zenodo DOI once one of the paper's authors has validated it with their ORCID.
What the map holds:
- 1 repository of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
- 1 script, each with its path and the digest of its content;
- no match between paragraphs and code yet;
- neither the text of the paper nor the code itself.
Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.
Data
No dataset and no data link were found in the paper.
Data availability statement
The paper has a data availability statement. Its license (CC BY-NC-ND) does not allow reproducing it here; in short, from what the harvester recognized in it:
- it says that the data are available on request
Read it in the paper: doi.org/10.1016/j.dcn.2026.101706.
Versions
The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.
Version 1, 30 September 2026: the first record
Recorded: type, language, journal, volume, pages, dates, 30 authors, 5 keywords, 9 MeSH terms, 63 references.
Cite
This paper
Hendrickson, T. J., Reiners, P., Moore, L. A., Lundquist, J. T., Fayzullobekova, B., Perrone, A. J., Lee, E. G., Moser, J., Day, T. K., Alexopoulos, D., Styner, M., Kardan, O., Chamberlain, T. A., Mummaneni, A., Caldas, H. A., Bower, B., Stoyell, S., Martin, T., Sung, S., . . . Feczko, E. (2026). BIBSNet: A deep learning baby image brain segmentation network for MRI scans. Developmental cognitive neuroscience, 79, 101706. https://
BibTeX
@article{hendrickson2026
author = {Hendrickson, Timothy J and Reiners, Paul and Moore, Lucille A and Lundquist, Jacob T and Fayzullobekova, Begim and Perrone, Anders J and Lee, Erik G and Moser, Julia and Day, Trevor KM and Alexopoulos, Dimitrios and Styner, Martin and Kardan, Omid and Chamberlain, Taylor A and Mummaneni, Anurima and Caldas, Henrique A and Bower, Brad and Stoyell, Sally and Martin, Tabitha and Sung, Sooyeon and Fair, Ermias A and Carter, Kenevan and Uriarte-Lopez, Jonathan and Rueter, Amanda R and Yacoub, Essa and Rosenberg, Monica D and Smyser, Christopher D and Elison, Jed T and Graham, Alice and Fair, Damien A and Feczko, Eric},
title = {{BIBSNet: A deep learning baby image brain segmentation network for MRI scans}},
journal = {Developmental cognitive neuroscience},
year = {2026},
month = mar,
volume = {79},
pages = {101706},
publisher = {Elsevier},
issn = {1878-9293},
doi = {10.1016/
url = {https://
pmid = {42013743},
pmcid = {PMC13122235}
}
RIS
TY - JOUR
AU - Hendrickson, Timothy J
AU - Reiners, Paul
AU - Moore, Lucille A
AU - Lundquist, Jacob T
AU - Fayzullobekova, Begim
AU - Perrone, Anders J
AU - Lee, Erik G
AU - Moser, Julia
AU - Day, Trevor KM
AU - Alexopoulos, Dimitrios
AU - Styner, Martin
AU - Kardan, Omid
AU - Chamberlain, Taylor A
AU - Mummaneni, Anurima
AU - Caldas, Henrique A
AU - Bower, Brad
AU - Stoyell, Sally
AU - Martin, Tabitha
AU - Sung, Sooyeon
AU - Fair, Ermias A
AU - Carter, Kenevan
AU - Uriarte-Lopez, Jonathan
AU - Rueter, Amanda R
AU - Yacoub, Essa
AU - Rosenberg, Monica D
AU - Smyser, Christopher D
AU - Elison, Jed T
AU - Graham, Alice
AU - Fair, Damien A
AU - Feczko, Eric
TI - BIBSNet: A deep learning baby image brain segmentation network for MRI scans
T2 - Developmental cognitive neuroscience
J2 - Dev Cogn Neurosci
PY - 2026
DA - 2026/
VL - 79
SP - 101706
SN - 1878-9293
PB - Elsevier
DO - 10.1016/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1016/
"type": "article-journal",
"title": "BIBSNet: A deep learning baby image brain segmentation network for MRI scans",
"container-title": "Developmental cognitive neuroscience",
"author": [
{
"family": "Hendrickson",
"given": "Timothy J"
},
{
"family": "Reiners",
"given": "Paul"
},
{
"family": "Moore",
"given": "Lucille A"
},
{
"family": "Lundquist",
"given": "Jacob T"
},
{
"family": "Fayzullobekova",
"given": "Begim"
},
{
"family": "Perrone",
"given": "Anders J"
},
{
"family": "Lee",
"given": "Erik G"
},
{
"family": "Moser",
"given": "Julia"
},
{
"family": "Day",
"given": "Trevor KM"
},
{
"family": "Alexopoulos",
"given": "Dimitrios"
},
{
"family": "Styner",
"given": "Martin"
},
{
"family": "Kardan",
"given": "Omid"
},
{
"family": "Chamberlain",
"given": "Taylor A"
},
{
"family": "Mummaneni",
"given": "Anurima"
},
{
"family": "Caldas",
"given": "Henrique A"
},
{
"family": "Bower",
"given": "Brad"
},
{
"family": "Stoyell",
"given": "Sally"
},
{
"family": "Martin",
"given": "Tabitha"
},
{
"family": "Sung",
"given": "Sooyeon"
},
{
"family": "Fair",
"given": "Ermias A"
},
{
"family": "Carter",
"given": "Kenevan"
},
{
"family": "Uriarte-Lopez",
"given": "Jonathan"
},
{
"family": "Rueter",
"given": "Amanda R"
},
{
"family": "Yacoub",
"given": "Essa"
},
{
"family": "Rosenberg",
"given": "Monica D"
},
{
"family": "Smyser",
"given": "Christopher D"
},
{
"family": "Elison",
"given": "Jed T"
},
{
"family": "Graham",
"given": "Alice"
},
{
"family": "Fair",
"given": "Damien A"
},
{
"family": "Feczko",
"given": "Eric"
}
],
"container-title-short":
"volume": "79",
"page": "101706",
"DOI": "10.1016/
"PMID": "42013743",
"PMCID": "PMC13122235",
"ISSN": "1878-9293",
"publisher": "Elsevier",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
3,
9
]
]
}
}
The tracing map gets a citation of its own once an author has validated it and it has a DOI.
Similar papers
The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.
- [1] doi:10.1038/s41598-026-55397-w [code]
- Fast surface reconstruction of human brain MRI: benchmarking deep-learning based morphometry tools.Journal: Scientific reportsIn common: structural MRI / diffusion, 7 references
- [2] doi:10.1371/journal.pbio.3003927 [code]
- Brain structural and functional connectivity converge prenatally but diverge after birth.Journal: PLoS biologyIn common: developmental, structural MRI / diffusion, 6 references
- [3] doi:10.1162/netn.a.547 [code]
- An evaluation of the efficacy of single-echo and multi-echo fMRI denoising strategies.Journal: Network neuroscience (Cambridge, Mass.)In common: 7 references
- [4] doi:10.1038/s41467-026-72940-5 [code]
- Cerebellar growth is associated with domain-specific cerebral maturation and socio-linguistic behavior.Journal: Nature communicationsIn common: 6 references
- [5] doi:10.1016/j.dcn.2026.101775 [code]
- Neonatal brain-age models in full- and preterm infants.Journal: Developmental cognitive neuroscienceIn common: developmental, structural MRI / diffusion, 5 references
- [6] doi:10.1007/s00415-026-14034-2
- Similarities and differences in the late-onset GM2 gangliosidoses: Tay-Sachs and Sandhoff diseases.Journal: Journal of neurologyIn common: structural MRI / diffusion, 5 references
- [7] doi:10.1162/nol.a.265 [code]
- Structural Brain Correlates of Poor Reading Comprehension.Journal: Neurobiology of language (Cambridge, Mass.)In common: structural MRI / diffusion, 5 references
- [8] doi:10.3389/frai.2026.1771088 [code]
- Few-shot deployment of pretrained MRI transformers in brain imaging tasks.Journal: Frontiers in artificial intelligenceIn common: structural MRI / diffusion, 5 references
- [9] doi:10.1038/s41467-026-73366-9 [code]
- Cortical and white matter myelination proceed in concert during early infancy.Journal: Nature communicationsIn common: developmental, 4 references
- [10] doi:10.1002/hbm.70547 [code]
- miniMORPH: A Morphometry Pipeline for Low-Field MRI in Infants.Journal: Human brain mappingIn common: developmental, structural MRI / diffusion, 3 references
Contribute
The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.
Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.
Claim this paper
Correct its record
Say what each link of this record is, remove the ones that are not the paper's, add the ones that are missing. The correction becomes a new version of the record, in its Versions section.
Validate its tracing map
You validate the map as this page shows it: 1 repository of the authors' code, each at its verified commit and with its license, 1 script, and 0 matches between paragraphs and code (see the Code and Map sections). It then receives a DOI on Zenodo, with you (your ORCID iD) and OSCR as its creators; the code itself is not deposited.
The map's fingerprint: sha256:ad94d892ba5ab3d3…
Add the badge to its README
The badge links the code to this page. Copy one of these into the README of the paper's code: only you decide where it goes, and nothing is changed for you.
Markdown
[.
Discussion, reproductions, activity
Discussion: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.
Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.
Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.
