A simple module for testing used at Bliq Photonics
Project description
BliqTools
Cross-platform Python tools to manipulate any type of images and data from Bliq microscopes (and general). Used by Bliq programmers internally and by the community. For now, fairly limited with only tools for unittesting, but the goal is to add more and more this project public.
Project objectives
- To collect often-used tools in a single package, easy to install.
- To make manipulation of images task-oriented by removing the boiler-plate, generic code.
- To let the community look at the code, and tailor it to their needs.
Installing
Python 3.12 is the version used for development, and setuptools have evolved away from setup.py
. The best method to install bliqtools
is pip
:
pip install bliqtools
or install from source:
cd bliqtools/ # In root directory of project (with setup.cfg file)
python3 -m pip install .
This will install with the current version of Python. You can then use it in scripts with:
from bliqtools.testing import *
Tools for unittesting
In bliqtools.testing
, you will find these functions. You can also run the tests that are incorporated directly into the file by running it.
Progress
is a simple class used with contextlib that can provide reasonable feedback. The user provides total number of iterations and calls next() every iterations.
with Progress(self.total, description="Volume creation") as progress:
for i,j,k in self.index_list:
tile = self.tile(i,j,k)
volume[i-1,j-1,k-1,:,:] = tile
progress.next()
TimeIt
is a simple class to time a small section of code:
with TimeIt(f"Get layers (single)"):
stitcher.get_layers()
Debuggable
can be used as a parent class to get useful debugging functions, like _dump_internals() or to see what variables have changed between calls.
def test_base_stitcher_still_working(self):
stitcher = Stitcher(self.valid_root_dir, overlap=0.2, channel="Grayscale")
self.assertIsNotNone(stitcher)
# stitcher._save_state()
stitcher.array_from_tiff_dirs()
stitcher.make_z_stack()
stitcher._dump_internals()
will print:
-- begin test_base_stitcher_still_working (/Users/dccote/GitHub/Stitching/stitcher.py @line 276)
no_c_directory [<class 'str'> ] : /Users/dccote/Downloads/Test_maps
app_directory [<class 'NoneType'> ] : None
overlap [<class 'float'> ] : 0.2
dtype [<class 'numpy.dtypes.UInt8DType'> ] : uint8
channel [<class 'str'> ] : Grayscale
channels [<class 'NoneType'> ] : None
start_memory [<class 'int'> ] : 8276803584
save_name [<class 'NoneType'> ] : None
array_paths [<class 'list'> ] : []
sorted_files [<class 'list'> ] : len=945
use_zarr_arrays[<class 'bool'> ] : False
og_arrays [<class 'NoneType'> ] : None
z_stacks [<class 'numpy.ndarray'> ] : shape=(5, 740, 2780)
-- end test_base_stitcher_still_working (/Users/dccote/GitHub/Stitching/stitcher.py @line 276)
MemoryMonitor
can monitor memory in a separate thread during a long calculation to provide insight on performance. It will print out the time and memory available when done:
with MemoryMonitor(self.id()) as monitor:
stitcher = ArrayStitcher(volume_kji=volume)
with TimeIt(f"Save Zarr {volume_shape}"):
stitcher.save("/tmp/test-zarr.tif")
and can be used to provide a graph of memory available vs time:
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file bliqtools-1.0.2.tar.gz
.
File metadata
- Download URL: bliqtools-1.0.2.tar.gz
- Upload date:
- Size: 8.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4902eb6c811b046a66994dda21b1ca912dd3d2c737ee9130a33ee5c837f3a44c |
|
MD5 | 0bda4e4e33e6621eed7957564b27c3bd |
|
BLAKE2b-256 | 7a75099ab883230f6c122da78f524547453278d549be2e45af10f939120e5bf7 |
File details
Details for the file bliqtools-1.0.2-py3-none-any.whl
.
File metadata
- Download URL: bliqtools-1.0.2-py3-none-any.whl
- Upload date:
- Size: 8.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3e4d89cd526ba71f55442e65ba5f0439a95800a6e768bf581f9cba0d9af717f7 |
|
MD5 | dbafb87cae2b9de2954ae4e22ae0992b |
|
BLAKE2b-256 | de7a18fc43ca9111505dd8674e08f1d85ae655ef9b5966f10e389de1fd19e4f9 |