Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
9f80a20
spinna - clean progress dialog + use fitting_mode in compare models
rafalkowalewski1 May 18, 2026
1b23b4b
convenient LE fitting in spinna
rafalkowalewski1 May 18, 2026
4887b6e
update spinna docs
rafalkowalewski1 May 18, 2026
5a7b44f
Merge branch 'development' into feat-spinna-le-new
rafalkowalewski1 May 19, 2026
9d1071f
clean up the new spinna fitting again
rafalkowalewski1 May 19, 2026
689ce87
faster rendering, low-hanging fruits
rafalkowalewski1 May 19, 2026
6d453d1
make gaussian blur gentler on servers
rafalkowalewski1 May 20, 2026
82fdad5
small fix for faster gaussian rot + add more tests
rafalkowalewski1 May 20, 2026
975629e
add spatial indexing for efficient rendering of zoomed in fovs
rafalkowalewski1 May 21, 2026
b2064de
improve spatial indexing for whole FOVs
rafalkowalewski1 May 21, 2026
001c526
Fixed linking saving `lpz`
rafalkowalewski1 May 21, 2026
6043a60
anisotropic dbscan + improved dosctrings for smlm clusterer 3d
rafalkowalewski1 May 21, 2026
9202b4b
spinna le batch analysis
rafalkowalewski1 May 22, 2026
c411ce4
supress convergence warning for bayesian spinna fitting
rafalkowalewski1 May 25, 2026
0ce77ee
cleaner saving of spinna batch analysis
rafalkowalewski1 May 25, 2026
b39f3b3
SPINNA: area/volume button removed + batch analysis does not require …
rafalkowalewski1 May 25, 2026
d43acca
correct documentation and enhance visibilty of spinna batch analysis …
rafalkowalewski1 May 25, 2026
a33102d
Merge branch 'feat-faster-render' into development
rafalkowalewski1 May 25, 2026
544e0e5
Merge branch 'feat-spinna-le-new' into development
rafalkowalewski1 May 25, 2026
de072d6
Multichannel rendering supports colormaps, not only a single RGB color
rafalkowalewski1 May 25, 2026
5879c50
add documentation of the colormaps in multichannel and the files dialog
rafalkowalewski1 May 25, 2026
e8e5a02
add new tests for multichannel colormaps
rafalkowalewski1 May 25, 2026
ba3b0c0
flake8 cleanup
rafalkowalewski1 May 25, 2026
0e8c856
more efficient Filter
rafalkowalewski1 May 25, 2026
db5db5d
Fixed Gauss-fitting error when spot's sum is zero (zero division error)
rafalkowalewski1 May 26, 2026
e2cc782
adjust the spatial indexing ratio for smoother large FOV rendering
rafalkowalewski1 May 26, 2026
7f6cecf
remove parallel gaussian blur rendering
rafalkowalewski1 May 26, 2026
ec0a3c3
Fixed NND plot reindexing after fitting (#665)
rafalkowalewski1 May 26, 2026
bab0149
faster cluster centers + add lpz to cluster centers
rafalkowalewski1 May 27, 2026
56a8fc1
Removed render property cache
rafalkowalewski1 May 27, 2026
f07492f
udpate readme + cleanup
rafalkowalewski1 May 27, 2026
9374fdf
Installers are distributed with readme.txt files (previously .rst)
rafalkowalewski1 May 27, 2026
2f4afec
Load FOV keeps the aspect ratio of the input .txt file
rafalkowalewski1 May 27, 2026
16167f5
Files dialog resizing fixed
rafalkowalewski1 May 27, 2026
f54d7a9
Render GUI: show 3D clustering widgets only when 3D data is loaded
rafalkowalewski1 May 27, 2026
fb2451a
...and the same for spinna's mask generation
rafalkowalewski1 May 27, 2026
8b11096
Fixed high-resolution display of mask in Render (#666)
rafalkowalewski1 May 27, 2026
686b19a
Fixed subcluster check plot when one of the two populations is empty…
rafalkowalewski1 May 27, 2026
e394615
fix test
rafalkowalewski1 May 27, 2026
39d5b74
expand sample notebook 1 + tqdm error fix
rafalkowalewski1 May 28, 2026
b55f03d
expand notebook 2 + small improvements
rafalkowalewski1 May 28, 2026
9c00dc3
expand notebook 3 + small improvements in docstrings
rafalkowalewski1 May 28, 2026
8b2aef8
expand sample notebook 4 and correct notebook 1 too
rafalkowalewski1 May 28, 2026
3d2efb4
prep for release
rafalkowalewski1 May 28, 2026
0fd4284
typo fix
rafalkowalewski1 May 28, 2026
8fb9658
Merge pull request #668 from rafalkowalewski1/development
rafalkowalewski1 May 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,9 @@ jobs:
run: |
pip install flake8
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics --exclude=tests,picasso/ext
# exit-zero treats all errors as warnings. Line length and E203 match black configuration
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=79 --extend-ignore=E203 --statistics
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=79 --extend-ignore=E203 --statistics --exclude=tests,picasso/ext
- name: Test with pytest
run: |
pip install pytest
Expand Down
41 changes: 40 additions & 1 deletion changelog.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,45 @@
# Changelog

Last change: 19-MAY-2026 CEST
Last change: 28-MAY-2026 CEST

## 0.10.1

#### Localize
- Fixed Gauss-fitting error when spot's sum is zero (zero division error)

#### Render
- Faster rendering through improvements for all blur methods and multi-level spatial indexing for quick zoomed-in rendering
- Multichannel rendering supports colormaps, not only a single RGB color
- Anisotripic DBSCAN (with faster implementation) [DOI: 10.1021/acs.jpcb.4c02030](https://doi.org/10.1021/acs.jpcb.4c02030)
- Faster cluster centers calculation for SMLM clusterer, DBSCAN and HDBSCAN + `lpz` is saved if applicable
- Load FOV keeps the aspect ratio of the input .txt file
- Files dialog resizing fixed
- Show 3D clustering widgets only when 3D data is loaded
- Fixed linking saving `lpz`
- Fixed high-resolution display of mask in Render (#666)
- Removed render property cache since it did not provide any significant speed improvement

#### SPINNA
- Comparing models uses fitting modes (Bayesian, etc) and has a cleaner progress dialog
- Convenient fitting of LE
- Area/volume button removed (deduced automatically from densities and number of molecules in the exp. data)
- Show 3D masking widgets only if 3D mask is selected
- Batch analysis for LE fitting
- Batch analysis does not require area input (if found in metadata)
- Batch analysis has clear instructions on what columns are required via CLI and the docs update
- Fixed NND plot reindexing after fitting (#665)

#### Filter
- Efficient Filter: much lower RAM usage + faster filtering by histogram selection (1D/2D), especially for very large datasets

#### Others
- Expanded the scope of the sample notebooks
- Improved docstrings for 3D SMLM clusterer
- Flake8 clean-up
- Installers are distributed with readme.txt files (previously .rst)
- Minor changes to documentation
- Fixed subcluster check plot when one of the two populations is empty (#667)
- Fixed 2D fitting with console printout and no multiprocessing

## 0.10.0

Expand Down
22 changes: 18 additions & 4 deletions distribution/create_linux_shortcuts.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import os.path as op

try:
import picasso
import picasso # noqa: F401
except ImportError:
print(
"This script must be run within an environment "
Expand All @@ -14,15 +14,29 @@
raise

SUBCMD = (
"average", "design", "filter", "localize", "render", "simulate", "spinna",
"average",
"design",
"filter",
"localize",
"render",
"simulate",
"spinna",
)
SCRIPT_PATH_ROOT = (os.sep, "usr", "bin", "picasso")
DESKTOP_PATH_ROOT = (
os.sep, "usr", "share", "applications", "picasso_{subcmd}.desktop",
os.sep,
"usr",
"share",
"applications",
"picasso_{subcmd}.desktop",
)
SCRIPT_PATH_USER = ("~", "bin", "picasso")
DESKTOP_PATH_USER = (
"~", ".local", "share", "applications", "picasso_{subcmd}.desktop",
"~",
".local",
"share",
"applications",
"picasso_{subcmd}.desktop",
)

DESKTOP_TEMPLATE = """[Desktop Entry]
Expand Down
2 changes: 1 addition & 1 deletion docs/files.rst
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,6 @@ YAML Metadata Files
YAML files are document-oriented text files that can be opened and changed with any text editor. In Picasso, YAML files are used to store metadata of movie or localization files.
Each localization HDF5 file must always be accompanied with a YAML file of the same filename, except for the extension, which is ``.yaml``. **Deleting this YAML metadata file will result in failure of the Picasso software!**

The metadata file must contain the keys: ``Width``, ``Height`` (size of the field of view in camera pixels), ``Frames`` (number of frames in the movie), and ``Pixelsize`` (camera pixel size in nm). Example files can be found `here <https://github.com/jungmannlab/picasso/tree/master/samples/data>`_
The metadata file must contain the keys: ``Width``, ``Height`` (size of the field of view in camera pixels), ``Frames`` (number of frames in the movie), and ``Pixelsize`` (effective camera pixel size after magnification in nm). Example files can be found `here <https://github.com/jungmannlab/picasso/tree/master/samples/data>`_

Raw binary files (i.e., with extension ``.raw``) may be accompanied by a YAML metadata file to store data about the movie dimensions, etc. While the metadata file, in this case, is not required, it reduces the effort of typing in this metadata each time the movie is loaded with ``Picasso: Localize``. To generate such a YAML metadata file, load the raw movie into ``Picasso: Localize``, then enter all required information in the appearing dialog. Check the checkbox ``Save info to yaml file`` and click ok. The movie will be loaded and the metadata saved in a YAML file. This file will be detected the next time this raw movie is loaded, and the metadata does not need to be entered again.
56 changes: 54 additions & 2 deletions docs/render.rst
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ These columns can be used to plot density profiles of localizations along the re

Save pick properties
^^^^^^^^^^^^^^^^^^^^
Calculates the properties of each pick (i.e., mean frame, mean x mean y as well as kinetic information and saves it as an hdf5 file.
Calculates the properties of each pick (i.e., mean frame, mean x mean y as well as kinetic information) and saves it as an hdf5 file.

Save pick regions
^^^^^^^^^^^^^^^^^
Expand Down Expand Up @@ -272,7 +272,59 @@ Opens the Display Settings Dialog.

Files (CTRL + F)
^^^^^^^^^^^^^^^^
Open a dialog to select the color and toggle visibility for each loaded dataset.
Opens the **Datasets** dialog, which lists every loaded channel and lets you
control its title, visibility, color (or colormap), and relative intensity.
A small horizontal gradient next to each channel previews what that channel
will look like at intensity 0 → intensity 1.

Each channel's *Color* dropdown is organised into three sections:

* **Solid colors** — the 14 default named colors (``red``, ``cyan``,
``green``, …). You can also type a hexadecimal code such as ``#FF5733``
directly into the dropdown. Solid colors are rendered as a black →
color ramp, exactly matching the previous "intensity × RGB" behaviour.
* **Built-in colormaps** — one 3-stop *black → color → white* gradient
per default solid color, named ``<color>_gradient`` (e.g.
``blue_gradient``, ``red_gradient``).
* **Custom** — any user-defined colormaps (see "Edit custom colormaps…"
below). This section only appears once at least one custom colormap
has been defined.

Channels are blended additively in the final image and clipped to 1.0,
so overlapping high-intensity regions saturate toward the sum of the
channel colors.

The ``Automatic coloring`` checkbox overrides per-channel selections with
HSV-spaced colors for as long as it's ticked. ``Save colors`` /
``Load colors`` write / read a one-identifier-per-line ``.txt`` file —
any name from the three dropdown sections (or a hex code) is valid.

Edit custom colormaps
+++++++++++++++++++++
Opens a small editor where you can create, rename, duplicate, or delete
your own colormaps. Each custom colormap is a list of 2-5 *stops*; each
stop has a position in [0, 1] and an RGB color. Stops are linearly
interpolated into the 256-row look-up table (LUT) used at render time. Click any of the R / G / B cells to type a value, or **double-click** the row to pick the
stop color from a standard color dialog. Use ``Add stop`` /
``Remove stop`` to grow or shrink the gradient.

Programmatic use
++++++++++++++++
The underlying conversion from solid colors or stops to a ``(256, 3)``
LUT is also exposed as part of ``picasso.render``::

from picasso import render
lut_red = render.solid_to_lut((1.0, 0.0, 0.0)) # black → red
lut_fire = render.stops_to_lut([(0, 0, 0, 0),
(0.5, 1, 0, 0),
(1, 1, 1, 0)]) # black → red → yellow
qimage, *_ = render.render_scene(
locs=..., info=..., colors=[lut_red, lut_fire], ...
)

Passing a list of LUTs to ``render_scene`` selects the per-channel
colormap path; passing a list of plain RGB triplets (legacy) still works
and is equivalent to ``solid_to_lut`` per channel.

Left / Right / Up / Down
^^^^^^^^^^^^^^^^^^^^^^^^
Expand Down
Loading
Loading