2017.10.02
2017.10.02
Contributors: Chris Barnes, Dylan Simon, Albert Cardona, Andrew Champion, Tom Kazimiers
Notes
-
A virtualenv update is required.
-
This release adds optional statics summary tables, which can increase the
performance of project/user statistics significantly, but statistics will also
be correct without them. The additional table keeps aggregated information
about various user actions. To initialize this table, the following
manangement command has to be run after the migration:./manage.py catmaid_populate_summary_tables
To maintain good performance, this command has to be run regularly, e.g.
through a cron job or Celery every night. Because summary updates are
incremental by default, they don't take much time to update. -
CATMAID's Docker images changed: The existing
catmaid/catmaid
image is now
only a base image that is used for a simple standalone demo image, available
ascatmaid/catmaid-standalone
. Additionally, the base image is used in a new
docker-compose setup, which can be used if persistent data is required. The
documentation has been updared with all the details. -
The Docker default port is now 8000 for both regular setups and docker-compose
setups. -
The data view "legacy project list" has been renamed to "simple project list".
It now supports separate project title and stack title filters, which can be
preconfigured using the data view config options "projectFilterTerm" and
"stackFilterTerm". For both simple terms and regular expressions can be used.
The filter input boxes can optionally be hidden by setting the "filter" config
property to false. -
Running periodic tasks is now easier and a default setup for cleaning up
cropping data at 23:30 and update tracing project statistics at 23:45 every
night is now available. All it needs is to run a Celery worker and a Celery
beat scheduler. The documentation has more details. -
The cropping output file file name prefix and file extension can now be
specified from settings.py. The defaults are:CROPPING_OUTPUT_FILE_EXTENSION = "tiff"
CROPPING_OUTPUT_FILE_PREFIX = "crop_" -
CATMAID can now make use of a ASGI server to utilize WebSocket connections.
Such a server (e.g. Daphne) needs to handle URLs that start with /channels/.
Currently only messages can be updated this way, which already removes many
requests for setups with many users. This allows for instance an immediate
feedback after a cropping a sub-stack finished without requiring the client to
check for new messages every minute.
Features and enhancements
Project/user statistics:
-
The widget should now be much faster.
-
Import actions are not counted anymore by default. The "Include imports"
checkbox can be used to change this. -
State saving is now supported.
Neuron history:
-
Events by different users are now collected in separate bouts to attribute
parallel user activity. To restore the previous behavior (users are ignored)
the "Merge parallel events" checkbox can be checked. -
State saving is now supported
-
Individual neurons can be removed with the help of an "X" icon in the firs
column. -
A "total time" column has been added, which aggregates time across all active
bouts formed by both tracing and review events. Since events are binnned in
bouts, the total time is not just the sum of both tracing time and review
time.
Node filters:
- A Reconstruction Sampler interval can now be used as a node filter. This
allows e.g. reviewing only an interval or look only at the connectivity of
the interval.
Graph Widget:
- Edge labels can now take different forms and can be configured in the
properties dialog. There are two new label options available: "Fractions of
outbound connections" and "Fractions of inbound connections". Instead of an
absolute number they display the relative fraction. This works for both
regular connections and connections involving groups.
Reconstruction sampler:
-
Intervals for a particular interval length can now be previewed before
creating a new sampler. To do so, use the "Preview intervals" button in the
Sampler tab. -
Interval reviews can now be initiated directly from the interval step table.
It will open a new review widget with pre-set interval filter and added
skeleton. The same is possible from the synapse workflow step using the
"Review interval" button.
Layouts:
-
The Stack View section of the Settings Widget allows now the configuration of
a list of default layouts that can be applied to newly opened stacks and stack
groups. Layouts are useful for having a reasonable default configuration of a
newly opened CATMAID workspace including stacks and stack groups. -
Layouts mimic nested function calls and are constructed from v(a,b) and h(a,b)
elements for vertical and horizontal splits, o(a) for optional windows, where
a and b can each be other v() or h() nodes, one of [XY, XZ, ZY, F1, X3D] or any
quoted widget handle (e.g. "neuron-search", see Ctrl + Space). At the moment,
in o(a), "a" can't be XY, XZ or ZY. To reference the 3D Viewer use X3D. -
By default only one layout is available: organize XY, XZ and ZY in four
quadrants using one additional window (if non available the help page). This
is its specification: h(v(XY, XZ), v(ZY, o(F1))). With h() and v(), horizontal
and vertical splits are declared, respectively. With o(F1) a help window will
be opened as fourth window if not already another window exists. -
Useful for organizing orthogonal views in a custom way and to create default
workspaces. For instance, to always open a Neuron Search widget right to the
a single XY view stack, the layout can be used: h(XY, "neuron-search").
CATMAID extensions:
-
As well as supporting standalone 3rd party static files, CATMAID now supports
fully-featured extensions, which can include database models, API endpoints,
and tests as well as static files. -
CATMAID extensions are Django apps which follow a particular layout, and can
be installed withpip
-
The goal is for CATMAID extensions to be reusable and interoperable
between versions and installations of CATMAID, reducing the need to fork it
and keep the fork updated in parallel. -
More details can be found in the docs.
3D viewer:
- Volumes can now be filtered in the volume drop-down menu with the help of a
built-in text box.
Miscellaneous:
-
The Open Widget dialog now displays a table that includes more information on
widgets. Instead of the previously used auto-completion this table is now
filtered. -
If multiple tile layers are used, the stack viewer layer settings (blue white
box in lower left corner) allow to set which stacks should be respected if
broken sections are skipped. This can be done through the "Skip broken
sections of stacks" drop-down menu. Whether layers added after the first layer
should be respected by default when checking for broken sections can be set in
the Settings Widget in the "Stack view" section. -
The dialog to add a new annotation displays now the existing annotations as
well. -
Tabbed windows: changing window aliases are now reflected in tab headers.
-
The performance of node creation and deletion operations has been improved by
preventing full node updates after these operations. -
Widgets with state saving support now also support removing previously saved
states through a button in the widget controls available through the window
icon in the widget title bar. -
The Selection Tool (the first icon in the top bar) has been removed, because
it didn't provide any functionality. It is replaced by an icon to show the
"Open Widget" dialog, which can otherwise be shown using Ctrl + Space. -
When splitting a skeleton on a virtual node, the virtual node will now only be
instantiated if the user presses OK in the dialog, canceling won't cause a
change of the virtual node. -
The default for hiding tile layers if the nearest section is broken (instead
of showing the next available) can now be configured from the Settings Widget
in its Stack View section. -
plotly.js
, a d3-based plotting library, is now available within CATMAID,
making it much easier to generate common plots.
Bug fixes
-
Review widget: moving in reverse direction from a virtual node doesn't show
error anymore. -
Review widget: the Shift + Q key combination to select the next unreviewed
node in downstream direction is respected again. -
Review widget: Shift + W and Shift + Q work now correctly if the first
unreviewed node is a virtual node. -
Key combinations involving the Alt key were not respected on Mac OS. This is
fixed now. -
Reconstruction sampler: the list of connectors in the selected interval of the
synapse workflow step is now complete when refreshed. -
3D viewer: the error shown when changing skeleton properties with an active
connector restriction is fixed. -
The neuron history widget now calculates both tracing time and review time
correctly. -
'Peek skeleton' (P key) works again.
-
The Split Skeleton Dialog updates the embedded 3D view again after all
skeletons are loaded. -
Former partner nodes of deleted connector nodes can now be deleted without an
additional tracing layer update. -
The Skeleton Projection Layer can now use the skeleton source colors and other
colors source again. -
The simple front end data view's project filter works again
-
Skeleton source subscriptions: opting in and out of applying color changes in
source skeletons to existing target skeletons works again. -
Dragging nodes in stacks with smaller resolutions (larger nm/px) doesn't
require large drag distances anymore, before the move is registered. -
Node selection works now reliably with orthogonal views, including using the
"G" key.
API Changes
Additions
-
GET /{project_id}/samplers/domains/intervals/{interval_id}/details
:
Get detailed information about a particular interval. -
GET /{project_id}/neurons/
:
List all neurons in a project. Optionally, the parameters created_by,
reviewed_by, from, to and nodecount_gt can be provided.
Modifications
-
POST /{project_id}/treenodes/{treenode_id}/info
:
This API endpoint is changed to only accept GET requests. Using POST will
raise an error. -
GET /{project_id}/stats/nodecount
:
The response format changed. Now a dictionary mapping user IDs to node counts
is returned. -
GET /{project_id}/stats/editor
:
The response format changed. Now a dictionary mapping user IDs to the number
of edited nodes is returned. -
GET /{project_id}/projects/export
:
Stacks include now also their translation and orientation relative to project
space.
Deprecations
GET /{project_id}/annotationdiagram/nx_json
:
This API has a confusing name, because it uses 'annotation' differently than
others. There are different APIs available to get skeleton IDs and treenode
IDs.
Removals
None.