OSCR

BIBSNet: A deep learning baby image brain segmentation network for MRI scans.

Code ↔ Paper

The paper beside its authors' code: matches between them have not been computed for this paper yet.

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

  1. #!/usr/bin/env python3
  2. # coding: utf-8
  3. """
  4. Wrapper to run nnU-Net_predict with model 512, produced via training on BCP
  5. subjects of ages 0-8 months
  6. Greg Conan: [email hidden]
  7. Created: 2022-02-08
  8. Updated: 2022-06-28
  9. """
  10. # Import standard libraries
  11. import argparse
  12. from datetime import datetime
  13. from glob import glob
  14. import os
  15. import subprocess
  16. import sys
  17. def main():
  18. # Time how long the script takes and get command-line arguments from user
  19. start_time = datetime.now()
  20. cli_args = get_cli_args()
  21. run_nnUNet_predict(cli_args)
  22. # Show user how long the pipeline took and end the pipeline here
  23. exit_with_time_info(start_time)
  24. def run_nnUNet_predict(cli_args):
  25. """
  26. Run nnU-Net_predict in a subshell using subprocess
  27. :param cli_args: Dictionary containing all command-line input arguments
  28. :return: N/A
  29. """
  30. subprocess.call((cli_args["nnUNet"], "-i",
  31. cli_args["input"], "-o", cli_args["output"], "-t",
  32. str(cli_args["task"]), "-m", cli_args["model"]))
  33. # Only raise an error if there are no output segmentation file(s)
  34. if not glob(os.path.join(cli_args["output"], "*.nii.gz")):
  35. # NOTE This statement should change if we add a new model
  36. sys.exit("Error: Output segmentation file not created at the path "
  37. "below during nnUNet_predict run.\n{}\n\nFor your input files "
  38. "at the path below, check their filenames and visually "
  39. "inspect them if needed.\n{}\n\n"
  40. .format(cli_args["output"], cli_args["input"]))
  41. def get_cli_args():
  42. """
  43. :return: Dictionary containing all validated command-line input arguments
  44. """
  45. script_dir = os.path.dirname(__file__)
  46. default_model = "3d_fullres"
  47. default_nnUNet_path = os.path.join(script_dir, "nnUNet_predict")
  48. default_task_ID = 512
  49. parser = argparse.ArgumentParser()
  50. parser.add_argument(
  51. "--input", "-i", type=valid_readable_dir, required=True,
  52. help=("Valid path to existing input directory following valid nnU-Net "
  53. "naming conventions (T1w files end with _0000.nii.gz and T2w "
  54. "end with _0001.nii.gz). There should be exactly 1 T1w file and "
  55. "exactly 1 T2w file in this directory.")
  56. )
  57. parser.add_argument(
  58. "--output", "-o", type=valid_output_dir, required=True,
  59. )
  60. parser.add_argument(
  61. "--nnUNet", "-n", type=valid_readable_file, default=default_nnUNet_path,
  62. help=("Valid path to existing executable file to run nnU-Net_predict. "
  63. "By default, this script will assume that nnU-Net_predict will "
  64. "be in the same directory as this script: {}".format(script_dir))
  65. )
  66. parser.add_argument( # TODO Does this even need to be an argument, or will it always be the default?
  67. "--task", "-t", type=valid_whole_number, default=default_task_ID,
  68. help=("Task ID, which should be a 3-digit positive integer starting "
  69. "with 5 (e.g. 512).")
  70. )
  71. parser.add_argument( # TODO Does this even need to be an argument, or will it always be the default?
  72. "--model", "-m", default=default_model
  73. )
  74. return validate_cli_args(vars(parser.parse_args()), parser)
  75. def validate_cli_args(cli_args, parser):
  76. """
  77. :param cli_args: Dictionary containing all command-line input arguments
  78. :param parser: argparse.ArgumentParser to raise error if anything's invalid
  79. :return: cli_args, but with all input arguments validated
  80. """
  81. # Verify that there is exactly 1 T1w file and exactly 1 T2w file in the
  82. # --input directory
  83. err_msg = ("There must be exactly 1 T{0}w file in {1} directory, but the "
  84. "number of T{0}w files there currently is {2}")
  85. t1or2_path_format = os.path.join(cli_args["input"], "*_000{}.nii.gz")
  86. for t1or2 in (1, 2):
  87. img_files = glob(t1or2_path_format.format(t1or2 - 1))
  88. if len(img_files) != 1:
  89. parser.error(err_msg.format(t1or2, cli_args["input"],
  90. len(img_files)))
  91. # TODO Ensure that task ID is a 3-digit number starting with 5?
  92. return cli_args
  93. def valid_output_dir(path):
  94. """
  95. Try to make a folder for new files at path; throw exception if that fails
  96. :param path: String which is a valid (not necessarily real) folder path
  97. :return: String which is a validated absolute path to real writeable folder
  98. """
  99. return validate(path, lambda x: os.access(x, os.W_OK),
  100. valid_readable_dir, "Cannot create directory at {}",
  101. lambda y: os.makedirs(y, exist_ok=True))
  102. def valid_readable_dir(path):
  103. """
  104. :param path: Parameter to check if it represents a valid directory path
  105. :return: String representing a valid directory path
  106. """
  107. return validate(path, os.path.isdir, valid_readable_file,
  108. "Cannot read directory at '{}'")
  109. def valid_readable_file(path):
  110. """
  111. Throw exception unless parameter is a valid readable filepath string. Use
  112. this, not argparse.FileType("r") which leaves an open file handle.
  113. :param path: Parameter to check if it represents a valid filepath
  114. :return: String representing a valid filepath
  115. """
  116. return validate(path, lambda x: os.access(x, os.R_OK),
  117. os.path.abspath, "Cannot read file at '{}'")
  118. def valid_whole_number(to_validate):
  119. """
  120. Throw argparse exception unless to_validate is a positive integer
  121. :param to_validate: Object to test whether it is a positive integer
  122. :return: to_validate if it is a positive integer
  123. """
  124. return validate(to_validate, lambda x: int(x) >= 0, int,
  125. "{} is not a positive integer")
  126. def validate(to_validate, is_real, make_valid, err_msg, prepare=None):
  127. """
  128. Parent/base function used by different type validation functions. Raises an
  129. argparse.ArgumentTypeError if the input object is somehow invalid.
  130. :param to_validate: String to check if it represents a valid object
  131. :param is_real: Function which returns true iff to_validate is real
  132. :param make_valid: Function which returns a fully validated object
  133. :param err_msg: String to show to user to tell them what is invalid
  134. :param prepare: Function to run before validation
  135. :return: to_validate, but fully validated
  136. """
  137. try:
  138. if prepare:
  139. prepare(to_validate)
  140. assert is_real(to_validate)
  141. return make_valid(to_validate)
  142. except (OSError, TypeError, AssertionError, ValueError,
  143. argparse.ArgumentTypeError):
  144. raise argparse.ArgumentTypeError(err_msg.format(to_validate))
  145. def exit_with_time_info(start_time, exit_code=0):
  146. """
  147. Terminate the pipeline after displaying a message showing how long it ran
  148. :param start_time: datetime.datetime object of when the script started
  149. :param exit_code: Int, exit code
  150. :return: N/A
  151. """
  152. print("BIBSnet for this subject took this long to run {}: {}"
  153. .format("successfully" if exit_code == 0 else "and then crashed",
  154. datetime.now() - start_time))
  155. sys.exit(exit_code)
  156. if __name__ == "__main__":
  157. main()

run.py, under other-open · at the source

Overview

Authors: Timothy J Hendrickson1,2, Paul Reiners2, Lucille A Moore2, Jacob T Lundquist2, Begim Fayzullobekova2, Anders J Perrone2, Erik G Lee1,2, Julia Moser2, Trevor KM Day2,3,4, Dimitrios Alexopoulos5, Martin Styner6, Omid Kardan7,8, Taylor A Chamberlain7, Anurima Mummaneni7, Henrique A Caldas7, Brad Bower9, Sally Stoyell2, Tabitha Martin2, Sooyeon Sung2, Ermias A Fair2
and 10 other authorsKenevan 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,14
14 affiliations
  1. Minnesota Supercomputing Institute, University of Minnesota, USA
  2. Masonic Institute for the Developing Brain, University of Minnesota, USA
  3. Institute of Child Development, University of Minnesota, USA
  4. Center for Brain Plasticity and Recovery, Georgetown University, USA
  5. Departments of Neurology, Pediatrics, Radiology, and Psychiatry, Washington University in St. Louis, USA
  6. Department of Psychiatry, University of North Carolina at Chapel Hill, USA
  7. Department of Psychology, University of Chicago, USA
  8. University of Michigan, USA
  9. PrimeNeuro, USA
  10. Oregon Health & Science University, USA
  11. Department of Neurology, University of Minnesota, USA
  12. Department of Radiology, University of Minnesota, USA
  13. Center for Magnetic Resonance Research, University of Minnesota, USA
  14. Department of Pediatrics, University of Minnesota, USA
Institutions: University of Minnesota (United States); Minnesota Supercomputing Institute (United States); Georgetown University (United States); Washington University in St. Louis (United States); University of North Carolina at Chapel Hill (United States); University of Michigan (United States); University of Chicago (United States); Oregon Health & Science University (United States)
Journal: Developmental cognitive neuroscience, volume 79, article 101706
Dates: received 12 March 2025; accepted 6 March 2026; published online 9 March 2026; in print June 2026
Type: Research article · Language: English
License: CC BY-NC-ND
Identifiers: DOI 10.1016/j.dcn.2026.101706 · PMID 42013743 · PMCID PMC13122235 · OpenAlex W7134238510
Open access: gold, a free copy (OpenAlex)
Status: code verified
Categories: structural MRI / diffusion (modality), human (organism), developmental (subfield)
Methods: Connectivity, Statistics, Machine learning, Preprocessing
Keywords: Infancy, MRI, Deep Learning, Anatomical Brain Tissue Segmentation, Processing Methods
MeSH: Brain*, Deep Learning*, Image Processing, Computer-Assisted*, Magnetic Resonance Imaging*, Female, Humans, Infant, Infant, Newborn, Male (* major topic)
Topic: Fetal and Pediatric Neurological Disorders (Pediatrics, Perinatology and Child Health, Medicine), according to OpenAlex
Citations: cited by 10 papers (Europe PMC); 76 references in the paper

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

License: other-open
State: the link answers, verified on 30 September 2026
Evidence: files inventoried
Size: 1 file
Software Heritage: not checked
Found in: the references
Not found: README, license file, CITATION.cff, environment file, tests, continuous integration, documentation
Availability: 1 check, the latest on 30 September 2026: the link answers (HTTP 200)
  • 30 September 2026: the link answers (HTTP 200)
2 files
At the source:

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://doi.org/10.1016/j.dcn.2026.101706

BibTeX

@article{hendrickson2026bibsnet,
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/j.dcn.2026.101706},
url = {https://doi.org/10.1016/j.dcn.2026.101706},
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/03/09
VL - 79
SP - 101706
SN - 1878-9293
PB - Elsevier
DO - 10.1016/j.dcn.2026.101706
UR - https://doi.org/10.1016/j.dcn.2026.101706
LA - en
ER -

CSL-JSON

{
"id": "10.1016/j.dcn.2026.101706",
"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": "Dev Cogn Neurosci",
"volume": "79",
"page": "101706",
"DOI": "10.1016/j.dcn.2026.101706",
"PMID": "42013743",
"PMCID": "PMC13122235",
"ISSN": "1878-9293",
"publisher": "Elsevier",
"URL": "https://doi.org/10.1016/j.dcn.2026.101706",
"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 reports
In 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 biology
In 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 communications
In common: 6 references
[5] doi:10.1016/j.dcn.2026.101775 [code]
Neonatal brain-age models in full- and preterm infants.
Journal: Developmental cognitive neuroscience
In 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 neurology
In 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 intelligence
In 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 communications
In common: developmental, 4 references
[10] doi:10.1002/hbm.70547 [code]
miniMORPH: A Morphometry Pipeline for Low-Field MRI in Infants.
Journal: Human brain mapping
In 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.

Request its removal

To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).

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.