Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
This repository provides a collection of tools to simplify reading CZI (Carl Zeiss Image) pixel and metadata in Python. In addition, it also contains other useful utilities to visualize CZI images inside Napari (needs to be installed). It is also available as a Python Package on PyPi
To install the basic functionality (will not install Napari und plotting functionality) use:
pip install czitools
To install the package with all optional dependencies use:
pip install czitools[all]
Please check use_metadata_tools.py for some examples.
from czitools.metadata_tools.czi_metadata import CziMetadata, writexml
from czitools.metadata_tools.dimension import CziDimensions
from czitools.metadata_tools.boundingbox import CziBoundingBox
from czitools.metadata_tools.channel import CziChannelInfo
from czitools.metadata_tools.scaling import CziScaling
from czitools.metadata_tools.sample import CziSampleInfo
from czitools.metadata_tools.objective import CziObjectives
from czitools.metadata_tools.microscope import CziMicroscope
from czitools.metadata_tools.add_metadata import CziAddMetaData
from czitools.metadata_tools.detector import CziDetector
from czitools.read_tools import read_tools
from czitools.napari_tools import napari_tools
import napari
# get the metadata_tools at once as one big class
mdata = CziMetadata(filepath)
# get only specific metadata_tools
czi_dimensions = CziDimensions(filepath)
print("SizeS: ", czi_dimensions.SizeS)
print("SizeT: ", czi_dimensions.SizeT)
print("SizeZ: ", czi_dimensions.SizeZ)
print("SizeC: ", czi_dimensions.SizeC)
print("SizeY: ", czi_dimensions.SizeY)
print("SizeX: ", czi_dimensions.SizeX)
# try to write XML to file
xmlfile = writexml(filepath)
# get info about the channels
czi_channels = CziChannelInfo(filepath)
# get the complete metadata_tools from the CZI as one big object
czimd_complete = get_metadata_as_object(filepath)
# get an object containing only the dimension information
czi_scale = CziScaling(filepath)
# get an object containing information about the sample
czi_sample = CziSampleInfo(filepath)
# get info about the objective, the microscope and the detectors
czi_objectives = CziObjectives(filepath)
czi_detectors = CziDetector(filepath)
czi_microscope = CziMicroscope(filepath)
# get info about the sample carrier
czi_sample = CziSampleInfo(filepath)
# get additional metainformation
czi_addmd = CziAddMetaData(filepath)
# get the complete data about the bounding boxes
czi_bbox = CziBoundingBox(filepath)
While the pylibCZIrw is focussing on reading individual planes it is also helpful to read CZI pixel data as a STCZYX(A) stack. Please check use_read_tools.py for some examples.
# return a dask or numpy array with dimension order STCZYX(A)
array6d, mdata = read_tools.read_6darray(filepath,
use_dask=True,
chunk_zyx=False,
# T=0,
# Z=0
# S=0
# C=0
)
if array6d is None:
print("Empty array6d. Nothing to display in Napari")
else:
# show array inside napari viewer
viewer = napari.Viewer()
layers = napari_tools.show(viewer, array6d, mdata,
blending="additive",
contrast='from_czi',
gamma=0.85,
show_metadata="tree",
name_sliders=True)
napari.run()
The basic usage can be inferred from this sample notebook:
The basic usage can be inferred from this sample notebook:
The basic usage can be inferred from this sample notebook:
The basic usage can be inferred from this sample notebook:
The basic usage can be inferred from this sample notebook:
The basic usage can be inferred from this sample notebook:
The code to read multi-dimensional with delayed reading using Dask array was heavily inspired by input from: Pradeep Rajasekhar.
Local installation (base functionality only):
pip install -e .
Local installation (full functionality):
pip install -e ".[all]"
FAQs
Tools to simplify reading CZI (Carl Zeiss Image) meta and pixel data
We found that czitools demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.