{"id":15654383,"url":"https://github.com/casperdcl/brainweb","last_synced_at":"2025-04-15T01:09:10.130Z","repository":{"id":35001722,"uuid":"195467905","full_name":"casperdcl/brainweb","owner":"casperdcl","description":"BrainWeb: Multimodal models of 20 normal brains","archived":false,"fork":false,"pushed_at":"2024-04-14T19:35:59.000Z","size":532,"stargazers_count":27,"open_issues_count":16,"forks_count":9,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-05-01T15:01:44.890Z","etag":null,"topics":["fdg","mri","neuroimaging","pet-mr","volume-rendering"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/casperdcl.png","metadata":{"files":{"readme":"README.ipynb","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-07-05T21:13:33.000Z","updated_at":"2024-05-03T20:38:11.768Z","dependencies_parsed_at":"2022-08-08T03:16:09.992Z","dependency_job_id":"c5d36696-d5e4-48c0-9ce1-b35c8af88911","html_url":"https://github.com/casperdcl/brainweb","commit_stats":{"total_commits":74,"total_committers":3,"mean_commits":"24.666666666666668","dds":"0.41891891891891897","last_synced_commit":"bac7b4cdf6d1f25b810958d5f9d30e94d24af338"},"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/casperdcl%2Fbrainweb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/casperdcl%2Fbrainweb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/casperdcl%2Fbrainweb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/casperdcl%2Fbrainweb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/casperdcl","download_url":"https://codeload.github.com/casperdcl/brainweb/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248986313,"owners_count":21194025,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fdg","mri","neuroimaging","pet-mr","volume-rendering"],"created_at":"2024-10-03T12:51:24.170Z","updated_at":"2025-04-15T01:09:10.114Z","avatar_url":"https://github.com/casperdcl.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# BrainWeb-based multimodal models of 20 normal brains\\n\",\n    \"\\n\",\n    \"This project was initially inspired by \\\"[BrainWeb: 20 Anatomical Models of 20 Normal Brains][RawData].\\\"\\n\",\n    \"\\n\",\n    \"However there are a number of generally useful tools, image processing \u0026 display functions included in this project. For example, this includes `volshow()` for interactive comparison of multiple 3D volumes, `get_file()` for caching data URLs, and `register()` for image coregistration.\\n\",\n    \"\\n\",\n    \"[![PyPI]][PyPI-target]|[![CI]][CI-target]|[![Quality]][Quality-target]|[![DOI]][DOI-target]|[![LICENCE]][LICENCE-target]\\n\",\n    \"-|-|-|-|-\\n\",\n    \"\\n\",\n    \"**Download and Preprocessing for PET-MR Simulations**\\n\",\n    \"\\n\",\n    \"This notebook will not re-download/re-process files if they already exist.\\n\",\n    \"\\n\",\n    \"- Output data\\n\",\n    \"    + `~/.brainweb/subject_*.npz`: dtype(shape): `float32(127, 344, 344)`\\n\",\n    \"\\n\",\n    \"- [Raw data source][RawData]\\n\",\n    \"    + `~/.brainweb/subject_*.bin.gz`: dtype(shape): `uint16(362, 434, 362)`\\n\",\n    \"\\n\",\n    \"- Install\\n\",\n    \"    + `pip install brainweb`\\n\",\n    \"\\n\",\n    \"----\\n\",\n    \"\\n\",\n    \"- Author: Casper da Costa-Luis \u003c\u003ccasper.dcl@physics.org\u003e\u003e\\n\",\n    \"- Date: 2017-2020\\n\",\n    \"- Licence: [MPLv2.0](https://www.mozilla.org/MPL/2.0)\\n\",\n    \"\\n\",\n    \"[RawData]: http://brainweb.bic.mni.mcgill.ca/brainweb/anatomic_normal_20.html\\n\",\n    \"[PyPI]: https://img.shields.io/pypi/v/brainweb.svg\\n\",\n    \"[PyPI-target]: https://pypi.org/project/brainweb\\n\",\n    \"[CI]: https://travis-ci.org/casperdcl/brainweb.svg?branch=master\\n\",\n    \"[CI-target]: https://travis-ci.org/casperdcl/brainweb\\n\",\n    \"[Quality]: https://api.codacy.com/project/badge/Grade/cdad13693b0141199c31d5b44c7ab185\\n\",\n    \"[Quality-target]: https://www.codacy.com/app/casper-dcl/brainweb\\n\",\n    \"[DOI]: https://zenodo.org/badge/DOI/10.5281/zenodo.3269888.svg\\n\",\n    \"[DOI-target]: https://doi.org/10.5281/zenodo.3269888\\n\",\n    \"[LICENCE]: https://img.shields.io/pypi/l/brainweb.svg?label=licence\\n\",\n    \"[LICENCE-target]: https://www.mozilla.org/MPL/2.0\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from __future__ import print_function, division\\n\",\n    \"%matplotlib notebook\\n\",\n    \"import brainweb\\n\",\n    \"from brainweb import volshow\\n\",\n    \"import numpy as np\\n\",\n    \"from os import path\\n\",\n    \"from tqdm.auto import tqdm\\n\",\n    \"import logging\\n\",\n    \"logging.basicConfig(level=logging.INFO)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Raw Data\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# download\\n\",\n    \"files = brainweb.get_files()\\n\",\n    \"\\n\",\n    \"# read last file\\n\",\n    \"data = brainweb.load_file(files[-1])\\n\",\n    \"\\n\",\n    \"# show last subject\\n\",\n    \"print(files[-1])\\n\",\n    \"volshow(data, cmaps=['gist_ncar']);\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Transform\\n\",\n    \"\\n\",\n    \"\u003cdiv style=\\\"visibility: hidden\\\"\u003e$\\\\ifcsname bm\\\\endcsname\\\\else\\\\newcommand{\\\\bm}[1]{\\\\mathbf{#1}}\\\\fi$\u003c/div\u003e\\n\",\n    \"Convert raw image data:\\n\",\n    \"\\n\",\n    \"- Siemens Biograph mMR resolution (~2mm) \u0026 dimensions (127, 344, 344)\\n\",\n    \"- PET/T1/T2/uMap intensities\\n\",\n    \"  + PET defaults to FDG intensity ratios; could use e.g. Amyloid instead\\n\",\n    \"- randomised structure for PET/T1/T2\\n\",\n    \"  + $\\\\bm{\\\\theta} \\\\circ (\\\\bm{1} + \\\\gamma[2G_\\\\sigma(\\\\bm{\\\\rho}) - \\\\bm{1}])$\\n\",\n    \"    * $\\\\bm{\\\\rho} = rand(127, 344, 344) \\\\in [0, 1)$\\n\",\n    \"    * Gaussian smoothing $\\\\sigma = 1$\\n\",\n    \"    * $\\\\gamma = \\\\left\\\\{\\\\matrix{1 \u0026 \\\\text{for PET}\\\\\\\\ 0.75 \u0026 \\\\text{for MR}}\\\\right.$\\n\",\n    \"    * $\\\\bm{\\\\theta}$ is the PET or MR piecewise constant phantom\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# show region probability masks\\n\",\n    \"PetClass = brainweb.FDG\\n\",\n    \"label_probs = brainweb.get_label_probabilities(files[-1], labels=PetClass.all_labels)\\n\",\n    \"volshow(label_probs[brainweb.trim_zeros_ROI(label_probs)], titles=PetClass.all_labels, frameon=False);\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"brainweb.seed(1337)\\n\",\n    \"\\n\",\n    \"for f in tqdm(files, desc=\\\"mMR ground truths\\\", unit=\\\"subject\\\"):\\n\",\n    \"    vol = brainweb.get_mmr_fromfile(\\n\",\n    \"        f,\\n\",\n    \"        petNoise=1, t1Noise=0.75, t2Noise=0.75,\\n\",\n    \"        petSigma=1, t1Sigma=1, t2Sigma=1,\\n\",\n    \"        PetClass=PetClass)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# show last subject\\n\",\n    \"print(files[-1])\\n\",\n    \"volshow([vol['PET' ][:, 100:-100, 100:-100],\\n\",\n    \"         vol['uMap'][:, 100:-100, 100:-100],\\n\",\n    \"         vol['T1'  ][:, 100:-100, 100:-100],\\n\",\n    \"         vol['T2'  ][:, 100:-100, 100:-100]],\\n\",\n    \"        cmaps=['hot', 'bone', 'Greys_r', 'Greys_r'],\\n\",\n    \"        titles=[\\\"PET\\\", \\\"uMap\\\", \\\"T1\\\", \\\"T2\\\"],\\n\",\n    \"        frameon=False);\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# add some lesions\\n\",\n    \"brainweb.seed(1337)\\n\",\n    \"im3d = brainweb.add_lesions(vol['PET'])\\n\",\n    \"volshow(im3d[:, 100:-100, 100:-100], cmaps=['hot']);\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# bonus: use brute-force registration to transform\\n\",\n    \"#!pip install -U 'brainweb[register]'\\n\",\n    \"reg = brainweb.register(\\n\",\n    \"    data[:, ::-1], target=vol['PET'],\\n\",\n    \"    src_resolution=brainweb.Res.brainweb,\\n\",\n    \"    target_resolution=brainweb.Res.mMR)\\n\",\n    \"\\n\",\n    \"volshow({\\n\",\n    \"    \\\"PET\\\":    vol['PET'][:, 100:-100, 100:-100],\\n\",\n    \"    \\\"RawReg\\\": reg[       :, 100:-100, 100:-100],\\n\",\n    \"    \\\"T1\\\":     vol['T1' ][:, 100:-100, 100:-100],\\n\",\n    \"}, cmaps=['hot', 'gist_ncar', 'Greys_r'], ncols=3, tight_layout=5, figsize=(9.5, 3.5), frameon=False);\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\"\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcasperdcl%2Fbrainweb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcasperdcl%2Fbrainweb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcasperdcl%2Fbrainweb/lists"}