# brainglobe-ccf-translator

CCF translator (brainglobe-ccf-translator) is a tool for translating between common coordinate frameworks using deformation matrices.
A longstanding problem in NeuroInformatics has been the inability to easily translate data between common coordinate frameworks. CCF translator aims to solve this. By connecting each new space to an existing one, we can construct a graph of deformations. This means that data can be translated as long as there is a route from one space to another, even if that route passes through multiple other spaces. Now, when new templates for new modalities, strains, or ages are released, users will not be subdivided into unrelated spaces. As long as they are connected to a space which exists in our network, they will be fully connected to all other spaces.
CCF translator can also interpolate between spaces and create a new intermediate space. This is primarily useful for development, where, for instance, the midpoint between day 5 and day 7 can be taken and used as a postnatal day 6 reference. It could also be useful for making references of disease progression.

## Use Cases
One way you can use CCF translator is to view data from one space, in another space. For instance the allen connectivity dataset shows projections from viral tracing studies in the adult brain. We can take any of these projection datasets and view them in the developing brain, for instance post natal day 9.

## Installation
CCF translator can be installed by running
```
pip install brainglobe-ccf-translator
```
## Currently supported spaces
the name in CCF translator aims to copy the name of atlases in the brainglobe_atlasapi when possible.
| Framework Name | name in api | supported age range
| -------------- | ----------- | -----------
| Allen mouse CCFv3 | allen_mouse | 56
| Demba developmental mouse | demba_dev_mouse| 4-56
| Gubra lightsheet mouse | perens_lsfm_mouse| 56
| Gubra MRI mouse | perens_mri_mouse| 56
| Gubra STPT mouse | perens_stpt_mouse| 56
| Princeton lighsheet mouse | princeton_mouse| 56
## Usage
**Transforming points**
To take a coordinate in one volume and find the equivalent coordinate in a second volume is quite simple in CCF translator.
```python
import numpy as np
import brainglobe_ccf_translator
points = np.array([(286,250,267), (414,247,452)])
pset = brainglobe_ccf_translator.PointSet(points, 'demba_dev_mouse', voxel_size_micron=20, age_PND=56)
pset.transform(target_age=56, target_space='allen_mouse')
print(f"new points are {pset.values}")
```
```
new points are [[267 250 286] [452 247 414]]
```
**Transforming volumes**
To run the volume examples you will want to install brainglobe-atlasapi using the following
```
pip install brainglobe-atlasapi
```
Transforming a volume is equally simple, here we get the volume from the brainglobe api, but you can load it however you like. In the Demba space the valid ages are from 4 to 56, and all of these are valid targets for transformation.
```python
from brainglobe_atlasapi.bg_atlas import BrainGlobeAtlas
import brainglobe_ccf_translator
voxel_size_micron = 10
space_name = r"allen_mouse"
atlas = BrainGlobeAtlas("{space_name}_{voxel_size_micron}um")
source_age = 56
target_age= 32
ccft_vol = brainglobe_ccf_translator.Volume(
values = atlas.reference,
space = 'allen_mouse',
voxel_size_micron=voxel_size_micron,
segmentation_file=False,
age_PND = source_age
)
ccft_vol.transform(target_age, 'demba_dev_mouse')
ccft_vol.save(rf"demo_data/P{target_age}_template_{voxel_size_micron}um.nii.gz")
```
## Contributing
If you would like to add a new space or connect an existing one, please create a deformation matrix and/or describe the required reorientation, flipping, cropping, and padding of the axis between this space and one that already exists in the network, and then open an issue in this repository. Ideally, choose a space which covers all the areas which are covered in your space. While the Allen CCFv3 is very popular, it is missing the anterior olfactory bulb and the caudal portion of the cerebellum and brain stem, so it is not the optimal choice.
## Citation
CCF translator was first described in [DeMBA: a developmental atlas for navigating the mouse brain in space and time](https://www.biorxiv.org/content/10.1101/2024.06.14.598876v1). If you use CCF translator, please cite that paper.
Raw data
{
"_id": null,
"home_page": "https://github.com/brainglobe/brainglobe-ccf-translator",
"name": "brainglobe-ccf-translator",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "neuroinformatics, brain, atlas, brainglobe, neuroscience",
"author": null,
"author_email": "harry.carey@medisin.uio.no",
"download_url": "https://files.pythonhosted.org/packages/c2/24/677f016dbc9041e450329cc16c582cffd39ac4f79685de994596ea9da62f/brainglobe_ccf_translator-0.21.tar.gz",
"platform": null,
"description": "# brainglobe-ccf-translator\n\n\nCCF translator (brainglobe-ccf-translator) is a tool for translating between common coordinate frameworks using deformation matrices. \nA longstanding problem in NeuroInformatics has been the inability to easily translate data between common coordinate frameworks. CCF translator aims to solve this. By connecting each new space to an existing one, we can construct a graph of deformations. This means that data can be translated as long as there is a route from one space to another, even if that route passes through multiple other spaces. Now, when new templates for new modalities, strains, or ages are released, users will not be subdivided into unrelated spaces. As long as they are connected to a space which exists in our network, they will be fully connected to all other spaces. \n\nCCF translator can also interpolate between spaces and create a new intermediate space. This is primarily useful for development, where, for instance, the midpoint between day 5 and day 7 can be taken and used as a postnatal day 6 reference. It could also be useful for making references of disease progression. \n\n\n## Use Cases\nOne way you can use CCF translator is to view data from one space, in another space. For instance the allen connectivity dataset shows projections from viral tracing studies in the adult brain. We can take any of these projection datasets and view them in the developing brain, for instance post natal day 9.\n\n## Installation\nCCF translator can be installed by running \n```\npip install brainglobe-ccf-translator\n```\n## Currently supported spaces\nthe name in CCF translator aims to copy the name of atlases in the brainglobe_atlasapi when possible. \n| Framework Name | name in api | supported age range\n| -------------- | ----------- | ----------- \n| Allen mouse CCFv3 | allen_mouse | 56\n| Demba developmental mouse | demba_dev_mouse| 4-56\n| Gubra lightsheet mouse | perens_lsfm_mouse| 56\n| Gubra MRI mouse | perens_mri_mouse| 56\n| Gubra STPT mouse | perens_stpt_mouse| 56\n| Princeton lighsheet mouse | princeton_mouse| 56\n## Usage\n**Transforming points**\nTo take a coordinate in one volume and find the equivalent coordinate in a second volume is quite simple in CCF translator. \n```python\nimport numpy as np\nimport brainglobe_ccf_translator\n\npoints = np.array([(286,250,267), (414,247,452)])\npset = brainglobe_ccf_translator.PointSet(points, 'demba_dev_mouse', voxel_size_micron=20, age_PND=56)\npset.transform(target_age=56, target_space='allen_mouse')\nprint(f\"new points are {pset.values}\")\n\n```\n```\nnew points are [[267 250 286] [452 247 414]]\n ```\n**Transforming volumes**\n\nTo run the volume examples you will want to install brainglobe-atlasapi using the following\n```\npip install brainglobe-atlasapi\n```\n\nTransforming a volume is equally simple, here we get the volume from the brainglobe api, but you can load it however you like. In the Demba space the valid ages are from 4 to 56, and all of these are valid targets for transformation. \n```python\nfrom brainglobe_atlasapi.bg_atlas import BrainGlobeAtlas\nimport brainglobe_ccf_translator\n\n\nvoxel_size_micron = 10\nspace_name = r\"allen_mouse\"\natlas = BrainGlobeAtlas(\"{space_name}_{voxel_size_micron}um\")\nsource_age = 56\ntarget_age= 32\n\nccft_vol = brainglobe_ccf_translator.Volume(\n values = atlas.reference,\n space = 'allen_mouse',\n voxel_size_micron=voxel_size_micron,\n segmentation_file=False,\n age_PND = source_age\n)\n\nccft_vol.transform(target_age, 'demba_dev_mouse')\nccft_vol.save(rf\"demo_data/P{target_age}_template_{voxel_size_micron}um.nii.gz\")\n```\n## Contributing\nIf you would like to add a new space or connect an existing one, please create a deformation matrix and/or describe the required reorientation, flipping, cropping, and padding of the axis between this space and one that already exists in the network, and then open an issue in this repository. Ideally, choose a space which covers all the areas which are covered in your space. While the Allen CCFv3 is very popular, it is missing the anterior olfactory bulb and the caudal portion of the cerebellum and brain stem, so it is not the optimal choice. \n\n## Citation\nCCF translator was first described in [DeMBA: a developmental atlas for navigating the mouse brain in space and time](https://www.biorxiv.org/content/10.1101/2024.06.14.598876v1). If you use CCF translator, please cite that paper.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "a package to translate data between common coordinate frameworks",
"version": "0.21",
"project_urls": {
"Homepage": "https://github.com/brainglobe/brainglobe-ccf-translator"
},
"split_keywords": [
"neuroinformatics",
" brain",
" atlas",
" brainglobe",
" neuroscience"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "812a5809d98d568c3b05ab54838a531b313d0c87197be57164f86cb539305898",
"md5": "4146c9a202fad192585517a0b5e4d652",
"sha256": "835a005884bcd0f4f4891d9bf3632137bb1b9d9b96b286049883e1a2b1d166b5"
},
"downloads": -1,
"filename": "brainglobe_ccf_translator-0.21-py3-none-any.whl",
"has_sig": false,
"md5_digest": "4146c9a202fad192585517a0b5e4d652",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 24922,
"upload_time": "2024-11-18T14:56:59",
"upload_time_iso_8601": "2024-11-18T14:56:59.539997Z",
"url": "https://files.pythonhosted.org/packages/81/2a/5809d98d568c3b05ab54838a531b313d0c87197be57164f86cb539305898/brainglobe_ccf_translator-0.21-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c224677f016dbc9041e450329cc16c582cffd39ac4f79685de994596ea9da62f",
"md5": "c2f3a560c6bfa9c717b5ba35c274ce80",
"sha256": "1446f5d0118b12c3064c43216fe185f28327979b366a5e23696aa7c5a5f4b8cb"
},
"downloads": -1,
"filename": "brainglobe_ccf_translator-0.21.tar.gz",
"has_sig": false,
"md5_digest": "c2f3a560c6bfa9c717b5ba35c274ce80",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 25992,
"upload_time": "2024-11-18T14:57:01",
"upload_time_iso_8601": "2024-11-18T14:57:01.532143Z",
"url": "https://files.pythonhosted.org/packages/c2/24/677f016dbc9041e450329cc16c582cffd39ac4f79685de994596ea9da62f/brainglobe_ccf_translator-0.21.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-18 14:57:01",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "brainglobe",
"github_project": "brainglobe-ccf-translator",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "brainglobe-ccf-translator"
}