New CATMAID release: 2018.11.09

Skip to first unread message

Tom Kazimiers

Nov 9, 2018, 9:43:21 AM11/9/18
Hi all,

We just released a new CATMAID version, 2018.11.09:

You will find a list of changes as we well as some update notes at the
end of this email and on the website linked above. As always, please let
us know if you run into any problems, both as administrator and user.

If you update a CATMAID instance, please use the most recent commit of
the master branch in our GitHub repository, which includes all future
bug fixes for this release:

If you are administering a CATMAID server,, please note that this
version of CATMAID drops support for Python 2. You need Python 3.5 or
Python 3.6 to run CATMAID, we recommend Python 3.6.



Contributors: Andrew Champion, Chris Barnes, Tom Kazimiers, William
Patton, Eric Trautman


- Python 3 is now required for the back-end. We recommend the use of
Python 3.6.

- CATMAID's version information is now presented in a different form. It
follows the pattern <base-version>[-dev]-<commit>. The <base-version>
is baked into the source code on a release. The -dev part will only be
present if CATMAID's dev branch is used for deployment. It won't be
present for master branch based setups. The <commit> part is the 10
digit version of the Git commit ID. This version representation is now
also consistent with what is display in Docker images. In the rare
event that no commit information can be found, <commit> will fallback
to "unknown". This version will now also logged during start-up of the

Features and enhancements

Connectivity matrix:

- The new checkbox labeled "Fractions" in the "Main" tab makes it now possible
to display connector fraction instead of an absolute link number in each cell.
The number of connections from one source row to a target column is divided by
the number of total posynaptic connections that are made to the target
skeleton (column). This makes columns better comparable to each other.

- The auto-connectivity matrix of a large set of skeletons can now be exported
as CSV without displaying it using the "Auto-connectivity CSV" button. This
makes it possible to export larger connectivity matrices in a usable format.

- The aggregation method for the connectivity count in groups can now be
selected. Available are: sum (default), min, max and average.

3D viewer:

- Treenodes that are linked to connector nodes can now be scaled independently
from other node handles using the "Link node scaling" option.

- Volume picking is now optional and disabled by default, i.e Shift + Click will
go through volumes. To enable volume surface location selection, the
"Pickable" checkbox needs to be checked.

- If Reconstruction Sampler domain shading or interval shading is used, a list
of valid domains and intervals can now be specified in the "Shadings
parameter" tab.

- The X/Y/Z rainbow coloring modes are now also available normalized to each
individual skeleton.

- Add custom connector coloring. The pre and post colors can be adjusted in the
"Shading parameters" tab.

- The X/Y/Z/ axes can now be displayed in the lower right corner using the
"Axes" checkbox in the "View settings" tab.

Reconstruction sampler:

- Improve performance of interval length computation

- Sampled skeletons can now be split after the users confirm this is their
intention. The split-off part of the skeleton will not contain any sampler
information anymore. Intervals on the split-off part are removed, split-point
crossing intervals are shortened and domain end points will be removed and
recreated as needed.

- Sampled skeletons can now be merged into. All samplers that reference the
merged-in fragment are deleted. If the merged fragment is merged outside
of a domain, nothing special is happening---it is a regular merge. If the
merge treenode is in a sampler domain, there are currently three options,
"Branch", "Domain end" and "New domain": 1. Branch: add the new fragment to the
skeleton without changing domain end nodes or intervals. This is only allowed
if the merge target is not the start or end of an interval. 2. Domain end: add
a new domain end node right where the merged in fragment starts. This keeps
the new fragment isolated from the sampled domain. 3. New domain: a new
domain is created for the merged in fragment. This also adds the domain end
node from (2).

- Domain completion is now shown in percent along with interval coverage of the
domain in "Interval" step.

- Merge decisions can now be limited when the 'merge' or 'merge-or-create' leaf
handling mode is selected. This means a percentage can be specified which
defined below which ratio of extra cable versus interval length the extra
cable should be merged into the previous interval (if possible) rather than a
new interval is created.

- Ignored lead segments can now be inspected in more detail using the
"Uncovered domain parts" button the "Interval" step. This will open a dialog
window with a histogram on all ignored leaf segments in the current domain.
Clicking on individual bins will open a treenode table containing the
respective start nodes of the ignored leaf segments. From this dialog, it is
also possible to list all downstream/upstream partners linked to nodes in
ignored segments of a domain.

- For samplers using the 'ignore' leaf handing mode, it is now possible to
update this to 'short-interval' mode including the generation of missing
intervals for existing domains. A visual confirmation dialog is shown. To use
this, press the "Set short-interval leaf mode" button in the Domain tab.

- The Synapse tab now also shows all leaf nodes of an interval. This makes it
easier to find the places where an interval needs to be continued.

Tracing layer:

- Tracign layer: cycle open end in reverse using Shift + Alt + R.

- Alt + Click now opens consistently the link type context menu, regardless of
whether a treenode or connector node is currently selected.

- The layer options now allow to select a user who's tracing data won't be
fetched from the server. The main motivation is to hide data imported by a
dedicated import user by default and not even fetch it from the server.

- Similar to image data mirrors, it is now possible to configure read-only
tracing data mirror servers from which the tracing data will load all data
except for the active node, which will be read from the main server. This is
particularly useful if connecting to the main server from a remote location.
To make this work reliably, it is expected that physical replication is setup
on the database level that mirrors the main server constantly. A separate
CATMAID instance needs to be setup on the mirror server as well. To configure
this, the "Read-only CATMAID mirrors" option in the settings widget can be
used together with the "Read-only mirror index".

Neuron similarity:

- The new Neuron Similarity Widget makes it possible to compare neurons to each
other, to neurons transformed based on landmarks as well as to arbitrary point
clouds. Point clouds can for instance be created from light microscopy data.
It creates a similarity ranking based on NBLAST. To open the widget, use Ctrl
+ Space or the Open Widget button and then search for "Neuron similarity".

- To compare two different objects, NBLAST will compare a query object pairwise
with potential target objects. It iterates over each point of the query
object, find the closest point in a target object and computes a score based
on the distance of these points and their orientation to each other.

- This scoring is done based on a scoring matrix, which needs to be created
before any comparisons can be made. Scoring matrices are typically reused and
don't need to be recomputed every time. The "Configurations" tab allows to
create new similarity matrices and lists existing ones. For a new scoring
matrix, probabilities for distance and orientation are computed for both a set
of of similar neurons and a representative sample of random neurons. Both are
combined into a single matrix in which a value of zero makes a particular a
pair of points equally likely to be random or to be a match. Values above zero
make a match more likely. Computed similarity matrices can be visualized by
clicking the "View" link in the Scoring column of the respective similarity

- With a similarity matrix computed, similarity queries ca be performed from the
"Neuron similarity" tab. In its most basic form, this compares neurons to
other neurons. It is also possible to select transformed neurons and point
clouds as query type or target type in a search. This however requires
additional setup (see below). Query and target skeletons can be selected by
selecting a skeleton source for each. A similarity matrix has to be selected
as well, but all other options have reasonable defaults. A click on "Compute
similarity" queues a new similarity request, which is computed asynchronously.
Once the task is complete its table entry will switch its status to

- Once completed, the similarity query results can be viewed by clicking on
"View" in the "Scoring" column. This will open a new result window (or
dialog, if selected in the "View" option), which shows the similarity ranking.

- To query with or against transformed skeletons, a landamark based "display
transformation" has to be created. To do so, open the Landmark Widget, and
create a transformation in its "Display" tab. Transformations created this way
are selectable from the Similarity Widget, if "transformed skeletons" is
selected for either query or target. Depending on available landmark groups,
this could be for instance a skeleton transformation to its contralateral

- The Point cloud tab allows to import individual point clouds, along with an
optional transformation and representative images. It also provides a list of
all point clouds that are visible to the current user. A group visibility
option during import allows to restrict visibility of imported point clouds to
selected groups (which need to be added from the admin interface).

- The "Point cloud import" tab allows to import many point clouds at the same
time, optionally transformed and with linked representative images.


- The general widget controls are now distributed across tabs.

- Annotations can now be used on volumes too. The "Annotate" button in the
Volume Manager can be used to annotate all selected volumes.

- The "Add from file" button in the Volume Manager can now be used to import
volumes from STL files.

- The "Skeleton innervations" tab allows to search for volumes that intersect
with a set of query skeletons. A volume annotation can be specified to look
only at volumes having this annotation. Optionally, exact result computation
can be disabled to only compute skeleton/bounding-box intersections. This is
slightly faster, but leads to false positives.


- More CATMAID configuration options are now accessible through Docker

- The Git commit from which a Docker image was built is now preserved and
included in the CATMAID's version information.

CLI importer:

- If no user information except for IDs is present in the imported data, the
importer will by default ask for a username and create new inactive users for
those IDs (and update the referenced IDs). Alternatively, the --map-user-ids
parameter can be specified, which will make the importer map referenced IDs to
existing users. If an existing user with the respective ID is not available,
the user is asked for a username and a new user will be created.

- With the help of a few additional progress bars, import progress can be better

- Database statistics are now automatically recomputed after an import, i.e.
ANALYZE is run.


- Each Tracing Layer is now listed as a skeleton source. All skeletons visible
in their fields of view are made available to other widgets that way.

- Tracing tool: add icon button to toggle a node coloring mode in which each
node is colored according to the length of their respective skeleton. The
colors and cable length values when to use it can be set for three colors in
the Settings Widget in the "Skeleton length coloring" section.

- The SWC exporter can now optionally mark a node as soma if it either is tagged
as "soma", if it has a radius larger than a defined value or if it is the root
node. All three conditions can be selected, and they will be applied in the
order they are listed above. If selected, a soma tagged node will always take

- There is small copy-to-clipboard button left to the "URL to the view" link in
the upper right corner of the user interface.

- The Ctrl modifier can now be used with - and + to animate zooming.

- New widget: stack info, which displays properties for stacks related to the
active project.

- The node cache update management command `catmaid_update_cache_tables` can now
update all caches configured in the NODE_PROVIDERS settings variable
automatically when the `--from-config` option is provided.

- Admin: a projects/export JSON export of the visible project/stack structure
can now be used directly in the Project/stack Importer by selection "JSON
representation" as source and pasting the data into the text field.

- Neuron search: regular expressions are now optional for the neuron name.
Unless the search string starts with '/', no regular expressions are used,
but a regular case insensitive text search.

- Two new connector types are available: "tight junction" and "desmosome". Both
can be created through the Alt + Click menu, are reciprocal and two links at
one connector are allowed for each type.

- Connectivity widget: all available link types can no be selected to be
displayed. Both the gapjunction and attachment checkboxes have been removed in
favor of a more generic list select element.

- Tracing layer: the displayed tracing data can now be constrained to show only
the N most recently edited skeletons. This settings adds to the skeletons
selected by the N largest skeletons filter.

- WebGL layers are now preferred by default.

- Project statistics: a top ten of the largest neurons is now displayed.

- Admin: a user import view is now available to import users from other CATMAID
instances. It requires superuser permissions on the remote instance.

- DB integrity check management command: volumes are now checked to make sure
all faces are triangles. The --tracing [true|false] and --volumes [true|false]
command line parameters now allow to explicitly test only some parts of the
database. By default all is tested.

Bug fixes

- 3D viewer: loading a single node skeleton with smoothing enabled no longer
causes an error.

- 3D viewer: nodes taged with 'uncertain' can be loaded again.

- 3D viewer: various rendering bugs for Reconstruction Sampler domains and
intervals have been fixed.

- 3D viewer: stored node scaling settings are now properly restored.

- 3D viewer: TODO tag coloring doesn't override custom label colors anymore.

- 3D viewer: all synaptic site spheres are created and colored again.

- 3D viewer: camera won't flip anymore if it is upside down during animations.

- Tracing overlay: the border of the tracing window is now properly rendered.

- Tracing overlay: child node edition times are now correctly updated if the
parent is deleted, which fixes occasional state matching errors.

- Tracing overlay: Shift + Click now works also with attachment connectors,
should they be selected as default connector type in the settings.

- Reconstruction sampler: deleting samplers while other samplers on the same
neuron refer to the same created boundary nodes no longer causes an error.

- Reconstruction sampler: cable length columns are now sorted numercially.

- Reconstruction sampler: all settings are now correctly reset when a sampler is
selected or "New session" is pressed.

- Reconstruction sampler: a few corner cases for binary interval coloring have
been fixed. Colors should now alternate in most cases.

- Connectivity matrix: synapse count based ordering works again.

- Connectivity widget: annotations on neurons (used for filtering) are now
properly updated when they are changed in another part of CATMAID.

- Graph widget: edge color updates now trigger a redraw operation again.

- CLI importer: the ID sequence for the auth_user table is now properly reset
after an import.

- CLI importer: missing treenode-connector links are now imported between
connectors and placeholer nodes.

- CLI impoerter: the ID of reused objects is now proplery updated in imported
data when --preserve-ids is used.

- CLI importer: skeleton summaries and edge tables aew correctly created again.

- CLI importer: unmapped imported users are now correctly saved.

- The error dialog prints now linen breaks and spaces correctly again, which
improves its formatting.

API changes


- `POST /{project_id}/skeletons/cable-length`:
The POST version of the already existing GET endpoint. It allows passing in
more skeleton IDs for which to get the cable length.

- `POST /{project_id}/skeletons/connectivity-counts`:
Allows to get the number connector links per relation type for each passed in
skeleton. Also accepts GET parameters.

- `POST /{project_id}/skeletons/connectivity_matrix/csv`:
Return a CSV file containing the connectivity matrix for the passed in `rows`
and `columns`.

- `POST /{project_id}/skeletons/sampler-count`:
Return the number of samplers linked to each skeleton in the passed in
`skeleton_ids` list.

- `GET /{project_id}/skeletons/{skeleton_id}/sampler-count`:
Return the number of samplers linked to this skeleton.

- `GET /{project_id}/labels/detail`:
Returns a list of of label objects, each with a name field and an ID field.

- `POST /{project_id}/volumes/import`:
Import volumes as STL files.

- `GET /{project_id}/volumes/{volume_id}/export.{extension}`:
Export a particular volume. Currentl only exports AS STL are supported.

- `GET /{projec_id}/stats/cable-length`:
Get the top N largest skeletons. N can be specified using the 'n_skeletons'

- `POST /{project_id}/volumes/skeleton-innervations`:
Get a list of all volume/skeleton combinations that intersect. Skeletons are
provided with a 'skeleton_ids' parameter. This can be constrained by volume
annotation, cable length and node count.

- `POST /{project_id}/volumes/`:
Previously only the GET method would be supported. With the introduction of an
optional `volume_ids` parameter, POST can be used as well. This parameter can
be used to constrain the returned set of volumes.


- `POST /{project_id}/skeletons/node-label`:
The new `label_names` parameter accepts a list of strings that an be used
instead of or together with label IDs to get skeletons with nodes that have
particular labels.

- `GET /{project_id}/stacks/{stack_id}/info`:
Now includes the `comment` field for each stack.

- `GET /{project_id}/connectors/`:
The partner data returned when the `with_partners` is set, includes now
additionally the creator of the link and the creation and edition time (in
epoch format).

- `GET /user-list`:
Accepts a new boolean parameter `with_passwords` to export encrypted
passwords, which in turn can be imported into other CATMAID instances. This
requires the requesting user to be a superuser.

- `GET /{project_id}/skeleton/{skeleton_id}/swc`:
A new optional parameter `soma_markers` can be supplied. It is a list of
'tag:soma', 'radius:<n>' and 'root'. These are conditions for when a node is
marked as soma in the SWC export. The first matching condition in this order

- `GET /{project_id}/volumes/`:
The return format changed. Instead of a list of volume objects an object with
a 'columns' field and a 'data' field are returned. The data fields contains a
list of lists, with each inner list being a volume. The entries are described
by the 'columns' field. Along with the already returned fields, annotations
are now retuned as well.

- `GET /{project_id}/volumes/`:
An optional `volume_ids` parameter can now be used and the POST method is
supported as well (to transfer larger volume ID lists). This parameter can be
used to constrain the returned set of volumes.

- `POST /{project_id}/skeletons/connectivity`:
A new optional option 'link_types' allows to specify which connectivity types
should be returned. By default 'incoming' and 'outgoing' is returned.
Additionally, the following options are allowed: gapjunction, abutting,
attachment, close_object. The return field names have also been adapted to
these parameters and match them. Instead of 'gapjunctions' and 'attachments',
the fields are now named 'gapjunction' and 'attachment'.

- `GET /{project_id}/annotations/`:
Supports now an optional boolean parameter named `simple`, which returns only
names and IDs and is therefore much faster.




Reply all
Reply to author
0 new messages