BlueBrain / BlueBrain/Atlas-Download-Tools

Determine `donwsample_img` automatically

Open
#51 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
17
Forks
8
PR merge metrics
No merged PRs in 30d

Description

In `download_parallel_dataset` one can specify both the `downsample_ref` and `downsample_img` manually. However,
it might be very useful to imply a reasonable `downsample_img` from the selected `downsample_ref` and the resolution of a given image (can be found in the API metadata).

Intuitively, the following should be true to avoid artifacts in the synchronized image
```python
img_shape / (2 ** downsample_img) > refspace_shape / downsample_ref
```
At the same time, we want the `downsample_img` to be as large as possible to make the download fast + avoid wasting disk space.

So specifically let's take a section image `id = 101349501`. It comes from a coronal dataset and has a shape of `(4344, 5096)`. As usually, we set `downsample_ref` to 25.

Therefore
```Python
refspace_shape = (8000, 11400)
downsample_ref = 25

img_shape = (4344, 5096)
downsample_img = x # we want to solve for this and it must be an integer
```
Just using the above unequality one proposition could be
```
downsample_img < log_2((min(img_shape) * downsample_ref) / max(refspace_shape)))
```
So the below formula could work?
```python
int(np.log2((min(img_shape) * downsample_ref) / max(refspace_shape)))
```
```
3
```

I checked the synchronized image and there seem to be no artifacts.

Finally, we should be also careful about `downsample_img` being too high because the image download API does not support high values.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.