Python-catmaid

Latest version: v2.4.1

Safety actively analyzes 682404 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 7

2021.12.21

Contributors: Chris Barnes, Albert Cardona, Andrew Champion, Stephan Gerhard, Sanja Jasek, Tom Kazimiers

Notes

- The version requires PostgreSQL 12. If you also want to upgrade PostGIS,
update PostGIS first and run ``ALTER EXTENSION postgis UPDATE;`` in every
existing database in the cluster that should be upgraded. For docker-compose
setups this database update is performed automatically if `DB_UPDATE=true` is
set for the `db` container (watch the Docker output). CATMAID's documentation
Docker has more information. If a replication setup is in use, the database
configuration changes for Postgres 12. CATMAID's replication documentation
explains what needs to be done.

In Postgres 12, JIT compilation is available to the planner by default. We
found that being more conservative with the use of it helped a few common
queries (like the tracing data field of view). We set the required minimum
cost of JIT use to 1,000,000 in ``postgresql.conf``::

jit_above_cost = 1000000

- If R extensions are used, make sure to use R 3.6. On Ubuntu this can be made
available by first installing the official R PPA repository:

sudo gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-key E084DAB9
sudo gpg -a --export E084DAB9 | sudo apt-key add -
echo "deb https://cloud.r-project.org/bin/linux/ubuntu xenial-cran35/" | sudo tee -a /etc/apt/sources.list

And second update the package index and update the local R setup:

sudo apt-get update
sudo apt-get install r-base r-base-dev mesa-common-dev libglu1-mesa-dev \
libssl-dev libssh2-1-dev libcurl4-openssl-dev cmtk

This also requires updating all installed R packages. In all likelihood this
requires executing "manage.py catmaid_setup_nblast_environment".

- The default downsample factors for a stack without explicit factors defined,
changed slightly: if you relied on the automatic creation of downsample
factors for image stacks, make sure the changed behavior still works for you
or enforce the previous configuration with an explicit specification of
downsample factors. Previously as many zoom levels as needed were created to
map the image size in a quadratic fashion per level onto a 1024x1024px tile.
Instead of hard-coding the 1024px, the minimum tile size defined in the mirror
set is used. Without any mirrors, no extra zoom levels will be assumed.

- The recommended python version is now 3.8, although support for 3.6 is maintained.

- A virtualenv update is required.

Features and enhancements

Notes widget:

- This new and simple widget can be used to take notes either only for the
current project, shared across all projects or globally visible for all users.
The last option is only available to admin users for writing. Use the "Open
Widget" dialog to open it using the "Notes" keyword.

Publication widget:

- This new widget makes management of publication related annotations easier. It
lists all annotations that annotated with one of the publication annotations
defined in the Settings Widget in the Publication section. Each of them
represents a publication for the widget. The export options for each one of
them can now be configured through the table.

Project management widget:

- This new widget allows superusers and users with can_administer role in a
project to edit user and group permissions for this project. This interface is
easier to find and manage then the admin view and allows for more granular
admin permissions. It is also useful to share own spaces (own copies of
projects) with other users.

- The widget allows to define for both user and groups the following
permissions: can browse (read), can annotate (write), can administer, can
import, can queue, compute taks, can write through API, can fork

- Clicking any checkbox will store the value right away.

- If a user has "can_administer" permissions in a project, they can edit the
project title and project description (comment) in the second tab.

- If a user has "can_administer" and "delete_project" permissions in a project,
the project management widget allows to delete the current project. This is
mainly useful for personal spaces, in which users typically have
delete_project permissions.

- The "User data permissions" tab allows to configure user level edit
permissions (who is allowed to edit who's data).

- The "Project token" tab allows project admins to view existing project tokens
("invitation codes") available for a project. For each generated token, the
table allows to copy both the token itself as well as an invitation link using
this token to the clipboard. If a user opens an invitation link, they will
automatically apply the token. Anonymous users are asked to log in first.

- As admin user in a project, it is also possible from to manually change
skeleton IDs from the "ID updates" tab. This is only allowed if the new ID
isn't used already. Also, if the new ID is a new maximum ID number, all new
IDs will be automatically be larger than this ID. This functionality is also
available as the back-end managment command catmaid_change_skeleton_id.

Skeleton ID change management command:

- Just like the Project Management functionality explained in the last
paragraph, the management command catmaid_change_skeleton_id can be used to
change skeleton IDs (and optionally neuron IDs) from the command line.

Link widget and deep links:

- This new widget allows users to create persistent deep links into the
dataset using an alias, allowing for friendlier URLs of the form
`<catmaid-url>/<project-id>/links/<alias>`. The stored parameters are the same
as for regular deep links, with most of them being optional.

- Like with fully parameterized URLs, features like layout, widget settings and
loaded skeletons can be used.

- Links can be marked private, making them only accessible (and listable) by the
creator of the link.

- An optional message can be stored with the link and is shown to the user when
the links is opened.

- The context menu for creating different types of links moved from entries
in the Layouts menu to its own menu that is shown when hovering the mouse
cursor over the "URL to this view" link. The first menu entry is new and opens
a link creation dialog, similar to the Link Widget's 'Add link' dialog.

Neuron renaming:

- There is now a new neuron renaming dialog, which allows a search/replace
renaming workflow for many neurons at the same time. This can be launched
through the "Rename" button in both the Neuron Search widget and the neuron
lists of the Neuron Navigator (e.g. neurons with a particular annotation).

- The dialog supports simple find/replace, but also regular expressions
including capture groups and presents live previews.

Neuron search:

- Neuron search: add option to show meta data columns (cable length, number of
nodes, creation time and last edition time) for neurons.

- Removal tools for annotations are now opt-in, i.e. not shown by default. To
enable them during annotation display, click the "Show removal tools"
checkbox.

- The optional annotation column has now the option to only show annotations
with a particular meta-annotation. This meta-annotation can be configured in
the input field in the table column header.

- The CSV export comes now with a header row to make clear the first column is a
neuron ID.

- The CSV export includes now the skeleton ID as well and will export metadata
like cable length, if metadata display is enabled in the UI.

- Expanded elements (e.g. annotations) are now sorted correctly within their
expansion group. This also fixes the out-of-order expansion display.

- Escape underscore and percent sign properly. They were treated as wildcards
before.

Connectivity Matrix:

- The new buttons "Save JSON" and "Open JSON" can be used to save the row and
column skeletons, including groups and widget settings.

- The loading speed has been improved significantly.

- With the new "Link type" selector in the Main tab it is now possible to show
the connectivity matrix for other link types (like desmosomes or gap
junctions). The selected link type is also respected by the CSV export.

Layouts:

- New layout menu item: "Copy URL to view with layout". This will create a URL
to the current view like the link button on the right hand side of the second
toolbar, but with a layout spec included. It will open all widgets in the new
CATMAID like in the current one. This includes skeletons, their colors and
widget configurations by default. A second menu entry with the "(no
skeletons)" suffix allows to create link with only the layout and no
skeletons. And a third menu entry with the suffix ("no widget settings)"
allows to copy only the layout plus skeletons, without any widget
configuration.

- New layout menu item: "Copy current layout spec". This will copy the layout
specification of the current view to the clipboard. This can be useful when
constructing URLs to specific views.

- Widgets in layouts can now optionally specify a list of skeletons to load.
This is done by adding the `skeletons` parameter:

"skeletons": [16035815, {"id": 16035701, "color": "rgb(0.5,1,0.2)"}]

The list of skeletons can consist of skeleton IDs and/or optionally objects
that can also specify a color in terms of common CSS definitions.

- The Selection Table can now receive an options parameter from the layout
initialization. If it contains a list of skeleton IDs like this, then
selection table will load this automatically:

options: {"skeleton-ids": [16035815, 16035701]}

This has to be added to the URL manually at the moment, by adding it to the
selection table config part in the layout spec.

Volume manager:

- The table of filters applied to input neurons for volume creation has now a
new "Actions" column. At the moment this includes a "Remove" link for each
filter. This makes it easier to try different filters without removing all
other filters

- Annotations can now also be removed from volumes if "Show removal tools" is
enabled.

- For new node filters during volume creation, the merge mode can now be
selected, i.e. whether additional filters will be combined using OR or AND.

- The new "Import from CATMAID" tab allows users with import permission to
search and import volumes/meshes from other CATMAID projects, both local and
remote. Volumes can be searched by name and annotation.

- Don't show removal options by default. It happens generally rarely that one
wants to remove volumes, especially in the skeleton innervation tab. To reduce
the risk of accidental removals (even though a confirmation dialog is shown),
removal buttons are now only shown if the "Show removal options" checkbox is
enabled in the Main tab.

- The connector listing for a volume will now include unlinked nodes.

- The checkbox to show the removal tools is now colored red, to make it easier
to see how to remove volumes.

Graph widget:

- Add options to configure the edge text outline size and opacity. The options
area available from the properties dialog.

- Grouping with undirected edges like desmosomes won't lead to multiple edges
between the same groups anymore.

- Ungrouping groups with members having non-synaptic links (e.g. desmosomes)
doesn't lead to an error anymore.

- Remember selected link types in local widget state storage.

- Applying node filters works now correctly and only removes an edge if both
source and target node are not allowed according to the filter configuration.
It is now also possible to use additional subgraphs (e.g. axon/dendrite
split) with filters applied.

Connectivity widget:

- Larger input and partner sets can now be displayed.

- Make node filter test consistent with filter application in the Graph Widget.
A connection is now valid according to the selected filters if it uses a
connector node that is linked to a node allowed by the node filters. The node
filters are still only applied to the query skeletons. This makes the
filtering numbers consistent with the Graph Widget.

3D viewer:

- The new tab "Volumes & Geometry" contains now all settings related to volumes,
landmarks and point clouds. This makes the "Volume settings" tab a little
less overloaded.

- The View tab has two new controls to control the sensitivity of both camera
zoom and position change when using the scroll wheel without an with the Alt
key, respectively.

- Connector restrictions (View tab) now offer a new option: show only connectors
with a specific tag. If selected, a dialog will ask for the desired tag and
will hide all connectors that aren't tagged with it.

- For both in-widget and exported animations a duration time in seconds can now
be specified. When enabled and an animation is played in the 3D Viewer, the
duration will just stop rotation and any other ongoing animation after the
specified time in seconds. If enabled for an animation export, it determines
the total length of the video, regardless of history or rotation settings.

- The history export in the animation export doesn't use a frame number input
field anymore and the "Complete history" checkbox has been removed, too.
Instead, the duration input can be used. If the duration input isn't enabled,
the complete history is exported.

- Both in-widget and exported animations don't need to have rotation anymore. A
new checkbox can be used to disabled rotation. Without rotation the camera
will just keep its position at the moment.

- Zoom behavior of the camera can be animated both for in-widget and export
animations. When enabled, a speed of nm/sec can be defined for the camera with
which it will move towards its target. This setting is both available in the
animation tab and the export dialog.

- A scaled version of the Strahler analysis shading mode has been added. The
scaling factor can be adjusted in the Shading parameters tab. This is mainly
useful for visualization.

- The PNG export dialog allows now to select whether the background should be
transparent.

- The "Focus skeleton(s)" button in the Main tab will now focus the center of
mass of all skeletons loaded in 3D, if no skeleton is active or the active
skeleton is not loaded in the 3D Viewer.

- The current view is now part of the saved state/settings. This is used as
initial view when used in a URL or when saved through the 'Save settings'
button in the panel opened by the window icon in the widget title bar.

- The "Shading" tab features now an input text field that allows to change the
location of the hemispheric light source. The checkbox "Lock light to camera"
next the location input allows to automatically set the light location to the
camera location, causing the light to come always from the viewing direction.

- The export "Connectors as CSV" 3D Viewer button now also exports the spatial
coordinates of each connector. The coordinates are represented with three
additional columns.

Skeleton history widget:

- Skeletons to query can now also be appened through the common skeleton source
controls.

- Now past skeletons with different skeleton IDs than the query IDs are
displayed as well as part of the graph.

- Edges show now more information in their labels: the number of nodes added as
well as the number of nodes deleted from the transition of nodes from skeleton
A to skeleton B.

- By default skeleton refreshs keep all nodes in-place. To try a different
version of the current layout, use the "Relayout" button.

Neuron navigator:

- Neuron widget nodes (like the active neuron display) show now also the initial
creator of the neuron and the initial creation time.

- The textual representation of neurons now follows the global settings.

- The neuron list filter input now remains focused when typing. The neuron
table should also update quicker initially.

- The pagination in neuron lists is fixed and does work on the
first attempt now. Previously it took a second click to actually jump to a
page.

- Sorting annotation lists works again for all columns.

- The annotation filter/search term survives now refreshes of the currently
displayed data (e.g. by clicking on the name in the navigator path).

- The select-all checkboxes in neuron lists now actually select all neurons
across all pages. This allows for bulk annotation, deannotation and deletion.

Morphology plot:

- Radial density can now be shown also for desmosomes and gap junctions.

Treenode table:

- The new node type "Adjacent to gap" will show all nodes that are in a Z slice
marked as broken or adjacent to it. Such nodes are marked with an additional
"G" in the node type flags.

Docker:

- The new environment variable CM_SERVER_SETTINGS can be used to define any
settings.py based setting. A valid Python code sting is expected, \n can be
used for newlines.

- Asynchronous tasks can now also be run inside the Docker container. Celery and
RabbitMQ are run by default, but can also be run in separate containers (see
CM_CELERY_BROKER_URL, CM_CELERY_WORKER_CONCURRENCY and CM_RUN_CELERY
Docker environment variables).

- Maintenance tasks are now automatically executed inside the Docker container
if Celery is enabled. This happens around midnight UTC by default, but the
time zone can be adjusted using the CM_CELERY_TIMEZONE environment variable.
For instance, use "America/New_York' for US east coast time. This way,
maintenance tasks can be moved to whenever local midnight is.

- CORS header are now enabled by default and allow also authentication. This is
useful to allow other web services to access a Docker back-end directly. This
can be disabled by setting "-e CORS_OPEN=false" with e.g. "docker run".

Vagrant:

- We now support a Vagrant configuration for setting up a full replicable development environment with minimal effort.

- This is distinct from the Docker image, which is for creating an ephemeral production environment.

- See the relevant developer documentation page for more details.

Data sources:

- A new tile source has been added: Neuroglancer Precomputed data, with ID 14.
This image block source works very similar to the N5 tile source. At the
moment only non-compressed and non-sharded image volumes are supported. In
order for the voxel space coordinates to match between CATMAID and
Neuroglancer, if the Neuroglancer dataset defines a voxel offset, the
respective CATMAID stack needs to have its zoom-level zero voxel offset
defined in the stack meta data in the admin view, e.g. `{"voxelOffset":
[-3072, -3072, 0]}`.

- A second new tile source is available: CloudVolume based tiles, generated by
the back-end. While slow for many users, it is a convenient way of make
neuroglancer volumes available to CATMAID if they aren't supported by the
Neuroglancer Precomputed source. It works better for a small set of users and
smaller block sizes. The new tile source has ID 13.

Administration:

- User profiles can now include a "home view", which is a reference to the
preferred data view for a particular user. When a user signs-in, this data
view is displayed. If none is set, the default data view is used.

- External accounts can now be used to sign-in to a CATMAID instance (if
enabled) using OAuth2. The documentation has details on how to configure this.
This can allow users with e.g. an existing Orcid ID or GitHub account to
sign-in to a CATMAID instance. If enabled, there is now a menu displayed when
hovering the mouse over the "Login" button in the upper right corner.

- Like every other new user, users created this way can be in default user
groups (`NEW_USER_DEFAULT_GROUPS` setting) and the default tool visibility
settings apply as well.

- If new users are created, there is now also a user group created with the same
name as the new user's username. This group can be used to manage edit permissions
the user's data. If groups shouldn't be created automatically, set the
`NEW_USER_CREATE_USER_GROUP` to `False` in the settings.

- Project importer: YAML data can now also be pasted into a text box for
project import, just like JSON data.

- The basic scripts/tiles/tile Bash 2D tiling script now by default creates as
many zoom levels until the whole image fits on one tile (rather than two like
before). It also accepts now an additional optional argument with which the
number of zoom levels to generate can be specified. Moreover it also provides
an option to specify an output directory and knows the common default value
for the overview size (192px).

- System check widget: more information regarding a potential transaction ID
wraparound has been added to the database section.

- User account creation now supports confirmation emails and welcome emails. The
User Accounts section of the manual has more details on this.

- Superusers will now see an extra menu item in their user menu (upper right
corner user name): Instance configuration. It opens a dialog which currently
presents two options: whether to show local and external login controls.

Tracing data export:

- The management command catmaid_export_data supports now the specification of
export options for tags, annotations and connectors per publication. To tell
the exporter which annotations/publications are allowed to carry these
settings, the "--settings-meta-annotation <annotation>" can be provided to the
exporter. For instance, assuming the provided <annotation> is "Published",
then all annotations that are annotated with "Published" are checked for
additional annotations that specify explicitly whether to export tags,
annotations and connectivity. The following annotations are respected:
"export: no-connectors", "export: no-tags", "export: annotations",
"export: no-annotations", "export: no-connectors",
"export: intra-connectors-only", "export: intra-connectors-and-placeholders",
and "export: intra-connectors-and-original-placeholders".

- The --conector-placeholders and the --original-placeholder-context options
have been removed. Instead the --connector option can now have four different
options: false, intra_connectors_only, intra_connectors_and_placeholders,
intra_connectors_and_original_placeholders. This provides the default
configuration if no publication specific options are provided.

- With the help of the new --allowed-tags-only parameter it is possible to limit
the kinds of tags that are exported. Without this parameter, all tags are
exported. If --allowed-tags-only is provided without arguments, a standard set
of known tags is included (uncertain end, posterior end, ends, anterior end,
not a branch, really ends, uncertain continuation, soma, microtubules end, out
to nerve). Alternatively, such a list can be provided as argument to this
parameter.

- In case all (minus exclusions) skeletons should be exported, now also all
annotations are exported if requested by the user. This wasn't the case so far
and in this mode no annotations were exported before.

Tracing data import:

- The catmaid_import_data management command will now truly update only project
wide data if --update-project-materializations is provided (as opposed to
selective updates for the imported data). Before, the summary information was
still computed instance wide.

- The new option --update-instance-materializations can now be used to update
the summary table information instance wide.

Import/export widget:

- A new 'Import log' tab will show users with import permission a list of their
imports. Double clicking entries moves the few to a representative location.

- So far, if no name was provided in the UI, the imported neuron would just have
no name. Now the user is asked whether the import should be canceled or if the
file name should be used as default name, if no name was provided by the user.

- If multiple SWC files are imported and a name is provided, an incrementing
numeric suffic will be added to each name.

- After one or more SWC files have been imported, there is now a list of links
displayed at the bottom of the widget. Each link is a successful import and,
when clicked, selects and moves to the respective skeleton.

- The NetowrkX JSON graph export is now in networkx 2.x format, rather than in
v1.x format like before. The main difference is that start and target nodes of
an edge are now defined explicitly by ID rather than an index.

Project statistics widget:

- Subsections will now show more clearly when they are still fetching data.

- A new data overview section has been added to the bottom of the content. It
shows currently the total cable length of skeletons in the project along with
the total number of treenodes and connectors.

Selection table:

- A minim review percentage can now be used as a filter using the new numeric
input in the name column header table cell.

- Duplicate skeleton IDs are now ignored in a CSV file import.

TrakEM2 import managmenet command:

- The new catmaid_import_from_trakem2 management command can be used to import
data from a TrakEM2 XML file in a similar fashion as the
scripts/export/export_from_trakem2.py script. It can however import in
addition TrakEM2 AreaList objects and connectivity.

- It generates meshes and skeletons by first generating a marching cubes based
mesh from the AreaList (using TrakEM2 functionality), then using Blender to
remesh that mesh to get a watertight manifold. This mesh is then first
imported as a triangle volume into CATMAID and then it is skeletonized. The
skeletonization can be done in different ways, by using skeletor or stl2swc.
The latter seems to generate better skeletons at the moment, but might require
a bit more setup time.

TrakEM2 based node transformation management command:

- The new catmaid_update_tracing_data_using_trakem2_xml management command can
be used to transform all spatial data in a project based on the
transformations defined in a TrakEM2 XML file. This includes

- This command uses Java and Fiji directly using pyjnius, which needs to be set
up separately. The management command will expect the PYJNIUS_JAR environment
variable to point to it (or provided using the --pyjnius parameter).

Data views:

- Add the options sample_image, sample_mirror and sanmple_slice to the front-end
based "Simple project list" data view. These options behave like in the other
data views.

- If more than one data view is available, users can now select a home view by
clicking the home icon in the 'Home' menu in the upper left corner. Upon next
reload of the page, this makes the respective data view the default one the
users sees.

- The icon to create a link to a data view changed to a more common chain icon.

- A click on the Home button in the upper left corner will now bring the user to
their home view (if defined), otherwise the global default data view.

- The data view menu (Home button) will now highlight the currently active data
view.

- A new front-end based data view type is available: resources and spaces. It
organizes projects in resources (read-only) and spaces (write) and indicates
this with different colors.

- The front-end data views now support the option "with_controls" (false by
default). If enabled favorite projects are indicated with a little star, which
also allows to toggle the favorite state by clicking on it. Only for admins
visible, right next to it, there is a pencil button to open a dialog to edit
the project title and description. If a project token was used to make a
project visible, the controls will also show an option to revoke a previously
used token. This will undo all permissions added by the token.

Cropping tool:

- A new radio button in front of both the top and the bottom Z index sliders
allows users now to choose whether the link the displayed Z slice to either
the top or the bottom of the copping box. This makes it easier to visually
confirm top and bottom of the bounding box.

- The ARTIST TIFF tag is now used to store meta information about the cropping
task: the min and max coordinates of the bounding box as well as the
resolution. ImageJ/Fiji read this particular tag.

Landmark widget:

- Landmarks can now be exported from the widget as CSVs

- Skeletons in the list of displayed transformations are now shown using their
Neuron Name Service based name, rather than only a skeleton ID. This works for
local and remote skeletons.

Tracing layer:

- Shift + Delete will now attempt to delete a node even if it is not in view.
This is mainly useful for deleting nodes in previously visible broken
sections.

- It's now possible to add the personal tag set to newly created nodes. Both the
personal tag set and the new option can be configured in the Tracing section
of the Settings Widget.

- Fallback to WebGL 1, if WebGL 2 is not available or can't be initialized
properly. In these cases image block rendering (e.g. N5) will be unavailable.
(Applies to image layer as well)

Tracing tool:

- Node distance measurements (icon in tracing tool bar) are now allowed also
between nodes of different skeletons. In this case only the straight line
distance will be displayed. Both the straight line distance and the path
distance will be displayed for nodes of the same skeleton.

- Centering on the active node reads now the active node only once all present
tasks (like node creation) are done, which makes centering on newly created
nodes using 'A' center reliably on the new node rather than the parent.

- The position and ID input box on the right side of the second tool bar accepts
now also location triplets that are delimited by space or tabs.

Miscellaneous:

- The dialog to add new annotations (F3 key) accepts now multiple annotations as
input, separated by commas. To include a literal coma, use baslash to escape
it: \,

- Regular view links (URL to this view): virtual nodes can now be referenced.
Only the parent and child ID are looked at when selecting a virtual node,
which means URLs keep working if parent or child location of a virtual node
change.

- The initial loading of client settings is now faster, because it performs
fewer requests.

- Each stack viewer will now show the project name by default along with the
stack and mirror name in its title bar. This can be adjusted in the "Stack
view" settings of the Settings Manager.

- Layer settings like opacity, blending more or filters can now be stored as
part of the regular settings and can be defined for the regular scopes like in
the Settings Widget (e.g. session or project). These settings are stored per
layer type and source reference (e.g. stack ID). In order to save, restore and
clear those settings, there are now three new buttons at the bottom of each
layer that supports settings storage.

- The minimum zoom level can now be configured in the Settings Widget using the
"Min zoom level" control of the "Stack view" section.

- Stack viewers can now have an optional layer offset configured. Accessible
through the Layer Controls, it allows users to configure one or more Z steps
from a stack space Z coordinate z1 to z2, that will cause an offset of the
current location in XY if the move from z1 to z2 is performed by the user
(e.g. by pressing comma or period). This can optionally be constrained by a
location and a radius. Generally, this helps working with registration
problems e.g. at TEM gaps.

- Client-side widget settings aren't stored by default anymore, if the widget is
closed. The former default caused a lot of confusion, especially with the 3D
Viewer. If widget settings should be stored, they have to be stored explicitly
using the "Store settings" button in the widget settings panel, available by
clicking the window icon right next to the widget title.

- Client-side widget state can now optionally store UI interaction information
like the camera location / details in the 3D Viewer. In the widget settings
panel (window icon in widget title bar), this can be done through the "Save
settings & UI state" if a widget supports this. Deep links will include the UI
state by default.

- Auto-completion should now be faster by displaying only 15 filtering results
by default. Clicking on the "..." entry will expand the auto-completion list
to its full length.

- Volume widget: box volumes can now be created also based on the active
skeleton's bounding box.

- Connector table: a search filter is now available for the table that allows
filtering across all columns.

- Global Search (looking glass icon): Neuron names are now properly displayed
using the general naming service. This makes the naming respect global naming
patterns.

- Connector selection: a search filter is now available for the table that allows
filtering across all columns.

- Settings widget: adding a remote CATMAID instance without supplying an API key
will now make CATMAID try and get the API key of the remote anonymous user.
This makes it easy to add publicly accessible CATMAID instances, because it is
now enough to provide the URL of the remote CATMAID instance. Additionally,
hash characters () at the end of passed in URLs are now removed
automatically.

- The user registration form fits now the overall layout better and include first
and last name as well as the email address. Also, a link to the user
registration form is now displayed right next to the login link in the top
right corner, if user registration is enabled. It also allows to optionally
require users to accept a certain set of terms and conditions, which can be
configured through the settings variables USER_REGISTRATION_CONFIRM_TERMS and
USER_REGISTRATION_CONFIRM_TERMS_TEXT (disabled by default).

- The overview image in the lower right corner of the stack viewer is now
displayed by default. This behavior can be adjusted for users, projects and
the whole instance in the Settings Widget.

- Open window: a new button "Open with active skeleton" makes it quicker to open
a new widget with the active skeleton loaded.

- Log/history tables: the relevant data is now fetched in parallel and doesn't
block the rest of CATMAID anymore.

- Layer settings: the color transform filter matrix input elements use now
background colors to better indicate the meaning of rows and columns.

- Key shortcut widget: the content is now refreshed when the selected tool
changes.

- If Caps-Lock is enabled, users now see a warning by default if they press down
any key. This can be disabled in the Settings Widget.

- Client settings that are stored in the browser's local storage are now
properly namespaced so that they work with multiple instances on the same
server.

- The new settings.py setting `PROJECT_TOKEN_USER_VISIBILITY` allows to
constrain the users that are visible to non-superuser users. If enabled, only
users that share knowledge about the same project tokens can be seen.

- Export management command: the new option --public-deep-links allows to export
public deep links of the selected projects.

Bug fixes

- Cropping tool: if a single pixel past the start of a new image tile
represented part of the outer boundary of a cropping area, this part was
rendered only as black pixels. This is fixed now.

- Cropping tool: fix error on tool destruction when clicking on Home link

- Graph widget: fraction edge labels work again. They produced an error before.

- Graph widget: edge color updates of non-synaptic links works now properly.

- Graph widget: fix node width/height setting.

- 3D viewer: PNG exports can now be transparent again.

- 3D viewer: the default settings for orthographic mode and control lock are no
correct (i.e. in accordance with what has been saved as default).

- 3D viewer: the scale bar is now properly initialized if orthographic mode is
stored as default view.

- 3D viewer: fix camera movement using the mouse wheel.

- 3D viewer: the volume list is now also updated if a volume is deleted.

- 3D viewer: the landmark group list is now updated when landmark groups are
added or deleted.

- 3D viewer: the volume visibility controls are now correctly enabled if a
volume is made visible from another widget.

- 3D viewer: prevent accidental double loading of volumes, if the first attempt
didn't finish before the second.

- 3D viewer: fix saving a loaded volume twice in a saved state or URL.

- 3D viewer: mesh transparency is now handled in a more robust fashion.

- 3D viewer: landmark group event handlers are now correctly unregistered,
fixing an error in the Landmark Widget showing if a 3D Viewer was closed.

- 3D viewer: history animations can be created again.

- Volume lists (drop down menus) are now automatically refreshed if a volume is
added, updated or removed.

- Volume manager: the "Invert" checkbox for new filter rules for input skeletons
during volume creation is now position properly.

- Volume manager: the colors used for showing result volumes from an innervation
query in a new 3D Viewer are now computed correctly so that they match the
listing colors.

- Node filters: default values for extra options like merge operation,
skeleton/name filters or invert, are now correct on repeated filter creation
if these options were changed for the first filter.

- CSVs imported into the skeleton selection widget may contain nonexistent
skeleton IDs, as intended.
- Skeleton bulk updates like splits or joins should now be faster on setups with
spatial change events disabled (default).

- Connectivity widget: the rendering of large sets of input skeletons is now
much faster.

- Connectivity widget: showing a list of displayed links ("List links" button)
is working again.

- Connector list: shows now neuron names rather than skeleton IDs and can
optionally include them in exported CSVs as well.

- Neuron search: row highlighting for the active skeleton works now again for
the whole row and registers deselection properly.

- Neuron search: the active skeleton is now highlighted as soon as it part of
the result shown in the table. Before, the row of the active skeleton wouldn't
be highlighted after a search and only upon new selection of a skeleton.

- Tracing data importer: The catmaid_import_data management command was not
update edge data for project-wide materialization updates if there were no
connectors imported. This if fixed now.

- Tracing tool: a tracing data mirror server can now also be used with
authentication.

- Tracing tool: the "More tools" menu is now properly closed when a remote data
source is selected.

- Tracing tool: the mouse cursor icon is now initialized correctly.

- Remote tracing layers: mouse bindings are now correctly updated when a remote
layer is added. Before this could sometimes lead to mouse clicks not been
caught in the remote tracing layer.

- Skeleton import API: new annotations are now added to existing annotations by
default, rather than overriding them. This can be changed by setting the
replace_annotations parameter to true.

- Stack viewer: fix inconsistent state when removing copies of stack layers.

- Docker: when the container is stopped, all processes are now gracefully
stopped as well. I.e. the database will be notified about an imminent
shutdown, etc.

- Layouts: subscriptions, skeletons and options are now now properly loaded from
tab nodes in layout specs.

- Tracing data export: management command: connector tags are now exported
properly. Before in some cases inconsistent data was exported where either
connectors or tags where wrongly referenced even though they were not included
in the export.

- Split/merge dialog: both annotation lists (one for each partner) maintain now
a height of 50% in the dialog and don't cause enlarging the dialog with long
lists.

- Neuron navigator: require less neuron name updates when updating the active
skeleton display.

- Node filters: the "Pruned arbor" filter works again.

- Neuron search: row highlighting for the active skeleton works now again for
the whole row and registers deselection properly.

- Connector list: can now display connectors without links.

- Measurements table: "N presynaptic sites" column includes now by default also
presynaptic connectors that don't have any postsynaptic link. To restore the
previous behavior, the "Include half links/synapses" checkbox can be
unchecked.

- Navigator tool and sub-tools like Tracing tool: the Z slider is now properly
hidden if the image data set has only one section.

2020.02.15

Contributors: Chris Barnes, Andrew Champion, Stephan Gerhard, Pat Gunn, Tom Kazimiers

Notes

- Python 3.5 is not supported anymore. Use Python 3.6, 3.7 or 3.8.

- Postgres 11 and PostGIS 2.5 is required, Postgres 12 and PostGIS 3 is
recommended. If Postgres needs to be updated, update directly to Postgres 12.
If both needs to be updated, update PostGIS first and run ``ALTER EXTENSION
postgis UPDATE;`` in every database. For docker-compose setups this database
update is performed automatically. If a replication setup is in use, the
database configuration changes for Postgres 12. CATMAID's replication
documentation explains what needs to be done.

- A virtualenv update is required. Before you start it, please remove some
packages that are not needed anymore first:

pip uninstall asgi-ipc asgi-rabbitmq

- If ASGI was set up before, make sure to install channels_rabbitmq or
channels_redis (depending on what yous use). The older asgi_rabbitmq and
asgi_redis packages aren't supported anymore. This also requires an update of
the CHANNELS_LAYERS in settings.py. The channels_rabbitmq documentation for an
example: https://github.com/CJWorkbench/channels_rabbitmq/. This variable
isn't defined by default anymore. Therefore you likely have to replace any
`CHANNELS_LAYERS[…] = …` with something like `CHANNELS_LAYERS = { … }`. The
new format is (use custom credentials on any production system!):


CHANNEL_LAYERS = {
"default": {
"BACKEND": "channels_rabbitmq.core.RabbitmqChannelLayer",
"CONFIG": {
"host": "amqp://guest:guest127.0.0.1/asgi",
},
},
}


Also, if supervisord is in use to manage CATMAID process groups, the main
Daphne process needs an adjustment: instead of calling `daphne` with the
`mysite.asgi:channel_layer` parameter, use `mysite.asgi:application`. A
complete supervisord entry would then look something like this:


[program:catmaid-daphne]
directory = /home/catmaid/catmaid/django/projects/
command = /home/catmaid/catmaid/django/env/bin/daphne --unix-socket=/var/run/daphne/catmaid.sock --access-log - --proxy-headers mysite.asgi:application
user = www-data
stdout_logfile = /var/log/daphne/catmaid-server.log
redirect_stderr = true


As last step, the supervisor entry for the `daphne worker` process has to be
removed. New types of workers can be added, but are not needed in most cases.
The channels documentation has more information on this.

Note, it seems to be also required to upgrade RabbitMQ to the latest version.
Using v3.8 worked, while 3.5 didn't.

- GDAL v2 or newer is now needed. If your Ubuntu version doesn't support this
yet, there is an official PPA:

sudo add-apt-repository ppa:ubuntugis/ppa
sudo apt-get update

- The next version of CATMAID will require Postgres 12 and PostGIS 3.

- The management command catmaid_populate_summary_tables is now known as
catmaid_refresh_node_statistics.

- When enabling and disabling both history tracking and spatial update events on
startup, advisory locks are now used. This should make the startup of parallel
CATMAID workers more robust.

- The application of migrations 88-91 and 98-99 might take a while to complete,
because they rewrite potentially big database table (treenode_edge, treenode,
class_instance, and more). Therefore, make also sure that there is enough
space available at the database storage location (25% of database data
directory should be plenty). If no replication is used, setting the following
Postgres options can speed up the process: `wal_level = minimal`,
`archive_mode = off` and `max_wal_senders = 0`.

Due to this database update data consistency and correctness was improved,
because additional foreign key relationships have been added that were missing
before.

- Both `configuration.py.example` and `create_configuration.py` support now the
option `catmaid_default_enabled_tools`, which defines the list of front-end
tools that are enabled by default for new users. The following options are
supported: cropping, tagging, textlabel, tracing, ontology and roi. By default
the tracing tool is now enabled for new users, because it seems in many setups
users want to have this enabled by default.

- Back-end errors result now in actual HTTP error status codes. Third-party
clients need possibly some adjustments to handle API errors. In case of an
error, status 400 is returned if an input data or parameter problem, 401 for
permission problems and 500 otherwise.

- On startup, CATMAID will now test if the output directory is accessible as
well as if its expected folder layout is present. If expected subfolders are
missing, they will now be created.

- Python code is now linted by flake8. The config is fairly relaxed
(see .travis.flake8), but contributions which do not conform with the selected
rules will fail CI checks.

- If R based tools like NBLAST or NRRD export are used, the R environment has to
be updated, too. This can be done by calling the following management command:

manage.py catmaid_setup_nblast_environment

Features and enhancements

Permissions:

- If data is imported by a user, e.g. from a remote CATMAID instance, this user
has all permissions over the imported data. If data was imported or created by
someone else, the regular rules apply: permissions are granted if the user is
creator, superuser or has permission over the data's creator. If user A has
permissions over user B's data, user A will also have permission to edit user
B's imported skeletons. This is done in order to be able to maintain the
original creator and editor data of the imported data, should it be available.

Node filters:

- Binary split: a new toggle labeled "inclusive" allows to decide whether to
include the split not in an upstream sub-arbor (default: true).

CLI importer:

- Performance improvement: only the skeleton summary entries of the imported
skeletons are now created.

- Only update treenode edges and skeleton summary if treenodes were actually
imported (rather than e.g. only volumes).

- Add --auto-name-unknown-users option, to automatically generate names for
users that are not available from an import, but referenced in it (by ID).

CLI exporter:

- The new --annotation-annotation option allows to specify a meta-annotation
that all exported annotations need to share transitively. If for instance all
all top-level annotations that should be exported are annotated with
"exportable" and "--annotation-annotation exportable" is used, only
annotations from those annotation hierarchies marked as "exportable" will be
exported. Without this option, all annotations are exported.

- If users should be exported, also export users of volumes.

Project statistics:

- Requests to the back-end our now performed in parallel, resulting in faster
loading times.

- It is now possible to configure how many largest neurons should be displayed
as well as an optional name pattern.

- The user/time action table will now also list imported nodes and imported
cable length. These values are subtracted from the corresponding regular
counters. If "Include imports" is unchecked, the same information that was
displayed before this commit is shown, i.e. the regular node count and cable
length field include the imported data.

Tracing tool:

- The tool bar button to refresh caches has been replaced with a button to open
a context menu titled "More tools". The context menu has an entry to refresh
cashes and a list of tracing data in other projects.

- Tracing data from other CATMAID instances (or other local projects) can now be
added to the active stack viewer by selecting the respective remote project
from the "More tools" menu item "Remote data". Without any remote server added
through the Settings Widget, the current CATMAID instance will be available
from this menu as "This server".

- To open a remote CATMAID instance at the same location as the current view,
find the remote project in the "Remote data" section of the "More tools" menu,
and click on "Open remote view".

- The marker type used fore remote tracing data can be configured through the
Settings Widget in the Tracing Overlay section, option "Remote node marker". A
ring is used by default.

- Merges will now by default respect the special annotation "stable". If a
neuron is marked as such it will always win a merge and if both merge partners
are marked "stable", the merge is canceled. This can be disabled by setting
the project or instance setting "Stable join annotation" in the Tracing
section of the Settings Widget to an empty string. The merge dialog will show
a warning if stable merge annotations have any bearing on the merge direction.

- Fast merge mode can now optionally be applied only to neurons/fragments with
a particular name pattern (regular expression). This can be configured in the
Fast Merge section of the Tracing section in the Settings Widget.

- Alt + G will now select the closest node in the active skeleton. If no
skeleton is selected, the globally closest node is select. Regular G works as
before in the current section.

- Skeleton splitting: if a skeleton sampler was in use, a split could so far
only be successfully executed if the split node is within a sampler domain.
This is fixed now and sampled skeletons can now be split upstream or
downstream of a domain as well. If split upstream, the domain will be deleted,
because it is part of the split-off fragment.

- The default interaction mode (skeleton tracing, synapse dropping, select,
move, import) can now be configured in the Tracing section of the Settings
Widget. This interaction mode will be enabled when opening the Tracing tool.

Tracing overlay:

- The remote mirror CATMAID instance configuration is now taken from the central
configuration, which can be edited in the "Other CATMAID instances" section in
the Settings Widget. The "Read-only mirror index" settings is kept but refers
to list elements in the central configuration list.

- Joining two skeletons without confirmation ("fast mode"), will now attach an
annotation to the resulting skeleton that references the merged in skeleton by
name. The name of this annotation as well as the suggested reference visible
in the confirmation dialog have the form "Merged: <neuron-name>".

- It is now possible order loaded tracing data by skeleton size, both in
ascending and descending order. This is useful with other node count limiting
filters. The layer settings accessible through the blue/white box in the lower
left corner of a stack viewer provides the "Data ordering" select box to
change this setting. By default no ordering is applied.

- When merging a fragment that contains a sampler, it can now be merged if the
respective skeleton doesn't need to be rerooted.

- Visibility groups can now use a generic node creator test that references
the current user (logged in our anonymous). It is called "(self)" in the list
of creators for all three visibility groups. This is useful to define
visibility groups on the project or instance level that include a hiding
pattern while guaranteeing that users see their own nodes.

- Shift + Click on a remote node from a local node (or vice versa) will now
bring up an import preview dialog which is used as a merge preview at the same
time. Confirming the change will import the remote skeleton and merge it at
the selected location, works with virtual nodes.

Navigator:

- Two new buttons and a text input field on the right side of the toolbar allow
easier handling of locations: the first icon (the map marker) is a button to
copy the current location of the center of the view in project (physical)
coordinates. If clicked while the Alt key is pressed, stack (pixel)
coordinates will be copied. Both modes will copy the coordinates in the form
"X, Y, Z" to the clipboard.

- The text input box allows to enter coordinates and other information. Pressing
enter or clicking the angle brackets on its right side will make CATMAID try
to interpret the text and act accordingly. The following interpretations are
attempted: 1. `Project coordinates` of the form "X, Y, Z" and "X, Y".
Parentheses and brackets are removed, 2. `Skeleton ID`, 3. `Location ID`
(treenode, connector, etc.), 4. `Neuron ID`, 5. `Bookmark letter` from the
bookmark system accessible through `;` and 6. Project coordinates from
`CATMAID URL`. These are tested in order and whatever matches first, wins.

- Additionally, particular interpretations can be enforced by using any of the
following prefixes "stack:", "px:", "neuron:", "skeleton:", "node:",
"connector:", "url:" and "bookmark:". It is possible to use only the beginning
of a prefix, i.e. "stack: 1,2,3" is the same as "st 1,2,3". This will only try
the referenced parser. It also makes stack-coordinate parsing available, which
is otherwise not checked for.

- Annotation lists show now also annotation IDs.

Administration:

- The catmaid_update_cache_tables management command accepts now a `--jobs=n`
parameter, which allows it to run in parallel when set to values `n` larger one.
By default a single process is used. This can speed up cache generation
significantly. With the help of the option `--chunk-size=n` it is possible to
define how many cells should be processed per CPU task. For large dataset it
might be useful to raise the default of 10.

- The catmaid_update_cache_tables management command accepts now a
`--depth-step=n` parameter, which makes the update process reevaluate the
number of grid cells to look at `n` times during a single run. For instance,
if set to 2, the upper bound of cells to look at is reevaluated when the
process is through with half the depth dimension. In larger datasets, this can
speed up cache generation significantly.

- The catmaid_update_cache_tables management command accepts now an optional
``--order`` parameter, which can be set to either "cable-asc" or "cable-desc".
By default no order is applied.

- The group list will now also show a sortable column containing the number of
group members. It also provides a more useful filtering option on the right.
Clicking "Only non-user groups" will now only show groups with a name that
isn't a username. Additionally, it is possible to filter by a minimum and
maximum number of group members.

- Settings: add CLIENT_SETTINGS and FORCE_CLIENT_SETTINGS options so that
an initial instance-wide client configuration can be specified.

- Setup: the create_configuration.py script will now create backups of existing
settings.py and django.wsgi files.

Volumes:

- Volumes have now their surface area and volume associated with them as well as
whether they are watertight. This information is visible in the Volume Manager
widget and can be recomputed on demand if needed, using the respective button
in the action column.

- The base unit used for the ara and volume columns can be adjusted using the
"Reference unit" select box in the widget controls.

Neuron Search:

- Name queries can now be marked as exact, which prevents matching against parts
of other names. This is ignored for regular expressions.

- Name queries can now be marked as case sensitive using the respective checkbox
next to the name field. By default name queries are case insensitive.

- The search can now be further constrained to only skeletons that include at
least partially imported fragments or to skeletons that are fully imported.

Graph widget:

- Node filters are now supported. Like in many widgets, they available through
the funnel icon in the title bar. Only nodes that are allowed by the selected
filters, can contribute connections and the graph. At the moment, this comes
with a few caveats: if filters are in use, no subgraphs (e.g. axon/dendrite,
synapse clusters) can be used. Grouping isn't available either and in
addition, skeletons are removed from the widget if they don't comply with the
filters. All this is likely going to chagne in future versions.

- The "Nodes" tab has now three new buttons to hide, show and remove unconnected
nodes. Show will nodes visible that have been hidden before. Removing nodes
will remove the skeletons/nodes completely from the widget.

- The node size specified in an imported .graphml file is now respected. This is
useful if graph fine tuning (layout and node size) is done in other tools,
like Gephi.

Review widget:

- The new tab "Synapse completeness" can list synaptic connector nodes don't
have a presynaptic node associated with them as well the ones without a
postsynaptic node.

- The Skeleton analytics tab now also lists low confidence nodes/edges with a
confidence lower than 4. The label of each entry shows the respective
confidence value.

Import/Export widget:

- It is now possible to import neurons from other CATMAID instances. The "Import
from CATMAID" tab provides tools to search remote skeletons by name or
annotation. Imported neurons can automatically be annotated with a set of
annotations. If no annotation are provided, CATMAID will add the annotation
"Import" to imported skeletons.

- A custom set of default annotations that will be added to imported skeletons
can be defined through the "Default skeleton import annotations" option in the
Settings Widget. At the moment, this is set to "Import" as well as "{source}
upload {group}". The second annotation uses two optional placeholders, which
are replaced by the skeleton import source reference and the user's primary
group, respectively. Should no primary group be set, the username name is
used.

- The original ID and source URL of all imported skeletons is tracked. This
allows the widget to display local skeleton IDs, if the remote ID has already
been imported from the current source URL.

- If the active skeleton is a remote skeleton (in a remote data tracing layer),
it can now be imported by clicking the "Import active skeleton" button in the
"Import from CATMAID" tab of the widget. Like the other import, this iwll
first ask for confirmation with a 3D dialog.

- The NRRD export can now use the JRC2018U (unisex) target template brain space
as target.

- The NRRD export can now export more than one skeleton at a time. All skeleton
sources are now displayed.

- The NRRD export will now by default create a Zip file if multiple skeletons
are exported both in a synchronous and asynchronous export.

- SWC imports can now have a user defined initial name.

Neuron navigator:

- The new button "Imported nodes" will list all imported treenodes for the
displayed skeleton.

- The detail view of an annotation will now list the time a neuron was annotated
next to the listed neuron name. The last time this link was edited is shown as
well. Both columns can be used for sorting as well.

3D viewer:

- The new shading mode named "Imported fragments" will make only imported edges
visible. The new coloring mode "Imported (green)" will highlight all imported
fragments in green.

- Stored views (View tab > Save view) are now shared between all CATMAID
instances, not only between all 3D Viewers like it is done now. This means
they are also persisted on the back-end and can be retrieved at a later point.

- 3D viewer: the line width has now an upper limit of 25px to prevent crashes of
the 3D viewer with larger values and many skeletons.

- Desmosome links can now be displayed. The color assigned in the Settings
Widget section for desmosomes in the Tracing Overlay is used here as well.

Neuroglancer widget:

- CATMAID now includes a copy of Neuroglancer that can be accessed at
<catmaid_base_url>/neuroglancer

- The Neurglancer widget allows to open an instance of Neuroglancer in a new
window and its navigation (center location, zoom level) is synchronized with
the navigation happening in CATMAID. An URL to a Neuroglancer instance containing
the same dataset as shown in the CATMAID stack viewer needs to be provided.

- The widget's info page has a step-by-step guide on how to use it for the
FAFB dataset

Treenode table:

- The UI elements to select active filter options like node type, confidence or
confidence operator now havea a colored background if an active filter is
selected. This is useful to draw more attention to the fact that leaf nodes
are selected by default.

- Remote skeletons are now supported. They can be mixed with local skeletons.

- A new column "i" represents whether or not a particular treenode was imported.
This information is loaded separately, parallel to the regular information.
Which, is why initially "…" is shown. If a node wasn't imported, the field is
empty. If it was imported, "Y" is shown.

Morphology plot:

- Two new center computation modes have been added: Tagged node closest to root,
Tagged node most distant from root. Both use the tag input field to the right
of the center mode selector. Either pressing enter or Redraw after a tag
change will recompute the plot. If no node is found with the respective tag,
the root is used and a warning is displayed.

- It is now possible to select the interpolation mode of the plot. So far the
plotted data was always interpolated with a basis spline. This isn't
necessarily what is required for a particular plot, e.g. if the sample values
have to be intersected. To allow this, a drop-down menu with the following
interpolation options has been added: basis spline, linear, cardinal spline,
monotone, step before and step after.

Spaces:

- Users with the new "can_fork" permission have a new user menu entry in the
upper right corner: "Create own space". This allows to create a personal copy
of a project, without any tracing data. By default, all meshes/volumes are
copied to the new space, which can be disabled in the creation dialog.

Miscellaneous:

- The active project title is now shown in the window title.

- There is a new menu item named "User info" in the menu displayed when hovering
the mouse cursor over the user's name in the upper right corner. When clicked,
it will show the basic information on a user: name, username, user id, primary
group and color.

- Projects can now be kept open if all last stack-viewers are closed. To not
automatically close the open project with the last stack-viewer, uncheck the
"Project closes with last stack viewer" option in the Settings Widget.

- Neuron similarity widget: besides a regular arithmetic mean, the geometric
mean is now an additional option for how to combine (normalized) forward and
reverse scores.

- Neuron similarity detail widget: make CSV export of object IDs and names
configurable.

- Retrieving review information is now faster for bigger skeletons.

- Name search: the speed of search queries is now improved.

- Selection table: the summary info button now shows also the number of imported
nodes within the selected skeletons.

- Neuron search: search fields will now expand if their content is bigger than
the default size. Also copied fields don't contain the content of the source
field anymore.

- A CATMAID deep-link URL can now include the layout that should be displayed
using the `layout` parameter. It takes a layout specification as it is used in
the Settings Widget and the Layout menu.

- The speed of bulk operations on skeletons has changed (e.g. splitting, joins,
reroot).

- Settings widget: it is now possible to clear both front-end and back-end
settings through the "Clear settings" button. It will ask for confirmation and
whether both front-end and back-end settings should be cleared.

- The top toolbar of the web UI won't add line breaks anymore if only little
horizontal space is available. The part of the toolbar that contains the
widget buttons for the selected tool will shrink instead. Only elements that
fit the available width are displayed there now. Invisible items are not a
problem, because all widgets can be reached through the "Open Widget" dialog
or Ctrl + Space.

- Potential WebGL performance problems are now detected when stacks and stack
groups are loaded. If problems are expected by the browser, a warning is
shown.

- Spatial update worker: cache cells are not queued for updates anymore if the
source project of a spatial event doesn't have any caches.

- Data views: add option "show_empty_projects" to simple project list data view.
It is false by default and can be turned on to show empty projects, including
the classification dummy project.

- Project statistics: clicking the "User analytics" button with user selected
will open the respective user analytics views for all of them (max. the first
three).

Bug fixes

- Connector list: dates are now display correctly.

- Tracing tool: don't allow moving nodes in select-only mode.

- Tracing layer: merged-in single nodes will now also have their name remembered
as a new annotation in a join if their name doesn't follow the default pattern
"neuron <number>".

- Project importer: the UNIX "glob" filter pattern that can be used to filter
imported projects is now also applied to imports from URLs and files.

- Nblast widget: store tangent neighbor count specified in UI for scoring matrix
imported from CSV.

- Celery can now be restarted again without restarting all of CATMAID.

- Connectivity widget: fix error showing when doing many subsequent Refresh
button clicks.

- 3D viewer: the handling of intersecting transparent objects has improved and
works like expected in most situations.

- Synapse plot: a missing skeleton source interface method was added, making it
now possible to also remove skeletons from the widget.

- Synapse plot: skeletons can now be added to the widget again. This was
temporarily broken for CATMAID instances using a sub-folder in their URL.

- Management command "catmaid_find_node_provider_config" to generate
NODE_PROVIDERS configurations for the `settings.py` file:The default value for
the "--orientation" parameter is now "xy". It was accidentally "xz" before.

- Graph widget: pressing the Delete key with a node selected in an active Graph
Widget will now ask for the removal of the node from the graph, not anymore
whether the active node should be deleted completely.

- Graph widget: showing fractions of inbound/outbound fractions of connections
as edge labels works again.

- Graph widget: refreshing a graph with undirected edges (e.g. sub-graphs like
axon/dendrite split, desmosomes, etc.) doesn't lead to suddenly appearing
arrow heads.

- Graph widget: undirected links like desmosomes will now only appear once
between two nodes. They would be shown twice before, once for each of the
partners being the "source" or "target".

- Graph widget: apply currently selected layout after graph update. This fixes
occasional fall-backs to the force-directed layout.

- SWC skeleton import: if `force = true`, treenodes of a replaced skeleton are
now correctly removed on a successful import.

- CLI Importer: creating unknown users manually works now as expected.

- Node filters: the application of node filters with rules applied in an
intersected fashion is fixed now and the filtered result of all skeletons is
shown.

- Spatial update notifications: only try to update the database configuration if
the database isn't running as a database replica.

- Synapse plot: fix read-out of settings input fields.

- Connectivity matrix: don't raise an error in "fraction" display mode on a
widget refresh (e.g. caused by a neuron name update).

- Connectivity matrix: don't show error when enabling "fractions" display
without neurons being loaded.

- Connectivity widget: fix error caused by quickly refreshing the table
successively.

- Graph widget: fix error caused by quickly refreshing the graph successively.

- Neuron navigator: fix name display after rename of neuron.

- Neuron search: the tab key focus order within one widget is now maintained if
multiple search windows are open.

- Neuron search: sort results ascending by name by default and keep the sort
order through table redraws.

- Settings widget: the width of multiline select elements (e.g. annotation based
neuron naming) is now adjusted automatically to fit the content.

- 3D Viewer: fix skeleton vs. name CSV in "Synapses as CSV" export.

- 3D Viewer: fix accidental hiding of soma node sphere when hiding radius
meshes. This happened if the node tagged 'soma' wasn't the root node. Now the
test for whether to hide radius meshes for a node now requires that the node
isn't tagged with 'soma', which is more robust than root node alone.

- Measurement table: fix CSV export for aggregated multi-fragment results.

2019.06.20

Contributors: Chris Barnes, Albert Cardona, Andrew Champion, Stephan Gerhard, Pat Gunn, William Patton, Tom Kazimiers

Notes

- A virtualenv update is required.

- All \*.pyc files in the folders `django/applications/catmaid/migrations/`,
`django/applications/performancetests/migrations/` and
`django/applications/pgcompat/migrations/` need to be deleted.

- Python 3.7 is now supported.

- Heads-up: The next CATMAID version will require Postgres 11, PostGIS 2.5 and
Python 3.6 or 3.7.

- Should migration 0057 fail due a permission error, the Postgres extension
"pg_trgm" has to be installed manually into the CATMAID database using a
Postgres superuser:
`sudo -u postgres psql -d <catmaid-db> -c 'CREATE EXTENSION pg_trgm;'`

- CATMAID's version information changes back to a plain `git describe` format.
This results overall in a simpler setup and makes live easier for some
third-party front-ends, because the commit counter is included again. The
version display is now the same `git describe` format for both regular setups
and Docker containers.

- Tile loading is clamped to (0,0) again, i.e. there are no negative tile
coordinates anymore by default. If you need them, set the respective stack's
`metadata` field to `{"clamp": false}`.

- To write to CATMAID through its API using an API token, users need to have
now dedicated "API write" permission, called "Can annotate project using
API token" in the admin UI. To restore the previous behavior (regular annotate
permission allows API write access) the settings.py variable
`REQUIRE_EXTRA_TOKEN_PERMISSIONS` can be set to `False`. This is done as a
safety measure to prevent accidental changes through automation.

- If R based NBLAST is used, make sure to execute to update all dependencies:
`manage.py catmaid_setup_nblast_environment`.

- The main documentation on catmaid.org has now a place for widget specific
documentation as well. Only a few widgets have been updated yet, but more will
follow.


Features and enhancements

Tracing tool:

- Add a new Tracing Tool icon button to compute the distance between two nodes
on a skeleton. Respects virtual nodes.

- The globally nearest node can now be selected and brought into view using
Alt + G, as opposed to selecting the nearest node in the current section
using the G key without modifier.

- Using the H shortcut now without an active skeleton, the most recently edited
node of the current user (Alt: anyone) in the last active skeleton will be
selected. Using Shift will look in all skeletons.

- Using Shift + Alt + Click with a connector selected, will will now create a
presynaptic node. This is consistent with the already existing Shift + Alt +
Click behavior with a treenode selected, which creates a presynaptic
connector.

Graph widget:

- GraphML files can now be imported, positions and colors are respected. This is
useful if layouting is done in e.g. Gephi and coloring should be done in
CATMAID. The help page explains a possible workflow for this.

- The button "Group equally colored" in the "Main" tab will group all skeletons
with the same color into a single group. The user is asked for group names for
each color.

3D viewer:

- A new synapse coloring mode has been added: polyadicity. The number of partner
nodes for each connector is color coded (for synaptic connectors, this is the
number of postsynapses). The colors and ranges can be configured through the
"Polyadicity colors" button in the "Shading parameters" tab. This is basically
a configurable version of an absolute "N with partner" coloring.

- Branches with leaf nodes tagged "not a branch" can now be collapsed using the
'Collapse "not a branch"' checkbox in the Skeleton Filters tab.

- The visibility of radius information can now be controlled using the "Show
radius" checkbox in the "Views settings" tab.

- History animations can now be exported in full length without requiring to
guess the number of frames for the export. The animation export dialog will
show an additional checkbox ("Complete history") if a history animation should
be exported. If complete history is enabled, CATMAID will export the complete
history of the exported skeletons.

- Animations can now be exported as stream directly to a file, which allows for
much larger exports (32GB maximum at the moment).

- Fractional rotations are now allowed in the animation export.

- The default time per rotation in the animation export is set to 15 seconds now,
slowing down the default by a factor of 3, which makes it easier to look at.

- Stack Z slices can now be animated. Configurable are the change frequency and
the change step in terms of sections. This is available for animation exports
as well.

- Stack Z slices can now be thresholded to replace a background color with
another color. If enabled and the sum of all channels is in a configurable
range [a,b] it will be replaced with another color.

- The rotation time for animations can now specified in seconds rather than
angular distance.

- The background color is now fully adjustable through the "backgorund" button
in the "View settings" tab.

- Basic support for Virtual Reality is now available on Windows platforms using
a Mixed Reality / SteamVR.3D setup and Firefox >= v65. To enable, check the
VR checkbox in the "View" tab and click the "Enter" button right next to it.

Skeleton history widget:

- A basic view of the change of a set of skeleton IDs over time based on all
nodes that are part of a given skeleton ID or that have been in the past.

- Skeleton history can also be used with past skeleton IDs to see into what
skeleton they changed (if any).

- All past and present treenodes with a passed in skeleton ID are tracked
through the complete history and their path of skeleton ID changes is
recorded along with the number of treenodes following a given skeleton path.

- The widget shows a graph from origin skeletons to the final skeleton IDs in
every available path, summing the treenode counts for each contributing path.

- Existing skeletons are colored in yellow, past skeletons are colored in cyan.
Selected skeletons are colored green.

- Ctrl+Click on skeleton will select it and go to the closest location in it.
Shift+Click allows selecting multiple skeletons. All selected skeletons are
available through the Skeleton Source interface.

Node and skeleton filters:

- Filter rules support now an "invert" option during creation, which allows to
create filters that include everything but whatever is matched by a particular
filter strategy. This can be useful e.g. during neuron review to only look at
segments that have been created by people other than oneself or connectivity
everywhere excluding a particular compartment.

Measurement table:

- Node filters are now supported. Like in other widgets, the respective panel
can be opened through the funnel icon in the widget title bar. Measurements
are displayed for all independent fragments of a skeleton after a set of node
filter rules has been applied.

- With the help of the "Sum fragments" toggle all fragments that result from a
node filter application can be aggregated into one row by summing individual
values.

Remote CATMAID instances

- Some tools in CATMAID gained support to communicate with other CATMAID
instances, e.g. the Landmark Widget (see below). To enable this functionality,
remote CATMAID instances can now be added to the user settings.

- The Settings Widget contains now a section labeled "Other CATMAID instances".
It allows to manage a list of other CATMAID servers based on their URL, an API
key and optional HTTP authentication. This information is stored under an
alias.

Landmarks:

- Clicking on the name of a landmark group in the Landmarks tab will now open
the group member edit dialog that was previously accessible by clicking any
landmark name. Clicking a landmark name will now show a new dialog, which
allows to specify of which landmark groups the clicked landmark is a member
of.

- The color of each active display transformation can be established separately
in the respective table row. Color changes are now also visible in the 3D
Viewer.

- It is now possible to load skeletons and landmarks from other CATMAID
instances. Point matches are done on the basis of matching landmark names. To
enable the UI for this, check the "Source other projects" checkbox in the
Display tab.

- With the "other projects" UI enabled and a remote CATMAID instance configured
in the Setting Widget (see above), it is now possible to select a remote
CATMAID instance from the "Source remote" dropdown menu. Alternatively, the
local instance can be selected if another project from the same instance
should be used.

- Next the source project in the selected instance needs to be specified. This
list is updated when a different remote instance is selected.

- Skeletons from a remote instance are collected through annotations. The
respective annotation has to be entered in the "Source skeleton annotation".
With the help of the "Preview" button it is possible to load the matching
skeletons from their remote CATMAID to inspect if the correct ones are
selected.

- As a last step for the remote data configuration, the source landmark group
has to be defined. This list is updated if the source project changes.
Landmarks from this group are mapped to the selected target group. The
matching is done by name, i.e. no landmarks can have the same names in a
group.

- Adding such a transformation adds it to the list at the bottom of the widget,
just like with regular transformations and they can be used in the same way.
The can be shown in 3D Viewers, superimposed on the Tracing Layer and used in
NBLAST queries from the Neuron Similarity Widget (see below).

- The new checkbox 'Multiple mappings' displays additional user interface
elements to add multiple source and target landmark group mappings for a
single display transformation. Point matches are created independently for
each pair and only merged for finding the final transformation.

- Using a transformation is now optional (but enabled by default). To disable
landmark transformations, uncheck the "Apply transformation" checkbox. This
allows e.g. to display skeletons from remote CATMAID instances without
modification.

Neuron Similarity:

- The computation of the default "mean" normalized similarity scores is now
considerably faster.

- The new "Top N" option allows to store only the Top N best matches in the result
set. For "mean" normalization, it will also only compute the mean score for
the top N forward hits (mean is the average between forward and backward
score). A value of zero disables this cutoff (default). This cutoff can be
used speed up computation for very large sets of neurons or large point
clouds.

- The new "Reverse" option allows to rank similar objects by there reverse
score. That means that the stored score for a particular object pair is target
versus query rather than query versus target. NBLAST uses the query neuron as
reference, and thereforoe the reverse option can make a difference as long as
no "mean" scoring is used.

- It is now possible to use display transformations defined in the Landmark
Widget that reference another CATMAID server as their data source. They can be
used both as source and target for NBLAST comparisons. This makes it
essentially possible to compare skeletons from another CATMAID project,
possibly on another CATMAID server, to local skeletons using NBLAST.

- Similarity matrices can now include transformed skeletons in their set of
similar objects. To do so, create a Display Transformation in the Landmark
Widget that represents the wanted transformation and the select it from the
"Sim. transformed skeletons" drop down in the Configurations tab of the Neuron
Similarity Widget when creating a similarity matrix.

- Similarity matrices can now be created with more control over which skeletons
are looked at as similar. The drop down menu "Similarity mode" allows to
select different groupings of the input skeletons (and transformed skeletons).
It is for instance possible to group a neuron and its contralateral partner
that has been transformed to the side of the first neuron as similar. A
confirmation dialog presents the computed grouping before actually creating a
similarity matrix.

- Similarity matrices can now be imported from CSV files, optionally including
the distance binning and dot binning as header row and column. As part of the
import, the distance binning can be scaled to adjust for differences in
datasets. This is available through the "Create from CSV file" button in the
Configurations tab.

- Similarity query results can now be used as skeleton source in other widgets,
if the target type of the query are skeletons.

System check widget:

- A subset of important database statistics are now displayed if a user has the
"can_administer" permission in a project. These statistics include e.g. cache
hit ratio, temporary files, requested checkpoints and replication lag. For
most of them a rule of thumb suggestion on how a value should behave is
provided as well.

Extension: CATMAID-autoproofreader:

- This extension is written by Will Patton and has to be installed separately,
because it requires additional setup steps for segmentation data handling.
Details can be found here: https://github.com/pattonw/CATMAID-autoproofreader.

- This tool suggests locations in a skeleton reconstructions where branches
might be missing or wrongly connected. Users can step through these
suggestions to fix potential problems. After reviewing a node it can be marked
as reviewed for future reference.

- In the CATMAID front-end the autoproofreader provides a widget that relies on
a compute server to handle the computations involved with automatically
proofreading a neuron reconstruction. Proofreading jobs are performed
asyncronously and might take a few minutes to complete.

Administration:

- A grid based node query cache can now be used to speed up tracing data
retrieval by precomputing intersection results. This can be useful for larger
field of views in big data set. It supports multiple levels of detail per grid
cell and can therefore provide a somewhat uniform sampling when limiting the
number of displayed nodes. The sorting of this LOD configuration can be
controlled so that e.g. only the top N largest skeletons will be shown per
cell with growing LOD. The documentation has more details. This cache can be
kept up updated using two extra worker processes that listen to database
changes, implemented as management commands `catmaid_spatial_update_worker`
and `catmaid_cache_update_worker`.

- The database can now emit notifications on tracing data changes using the
"catmaid.spatial-update" channel and when grid cache cells get marked dirty
on the "catmaid.dirty-cacche" channel. These can be subscribed to using
Postgres' LISTEN command. To enable emitting these events and let cache update
workers work, set `SPATIAL_UPDATE_NOTIFICATIONS = True` in `settings.py`. This
is disabled by default, because sending events for spatial cache updates can
add slightly more time to spatial queries, which will mainly be relevant for
importing and merging large skeleotons.

- Projects can now be deleted along with the data that reference them (e.g.
treenodes, ontologies, volumes). To do so select the projects to delete in the
admin project list and select "Delete selected" from action drop down.

- Users can now be set to an inactive state after a specified amount of time.
This time is configured for a user group and it applies to users if they are
members of such a group. A message can optionally be displayed as well as
users to contact that could potentially help. This is configurable as "Group
inactivity period" in the admin view. Users to contact for support, can be
either configured there or from individual user views.

CLI Exporter:

- If both required annotations and exclusion annotations are provided, the
importer will now only exclude a skeleton if it is not also annotated with a
sub-annotation of the required annotations set. This behavior can be disabled
and exclusion can be enforced when a skeleton is annotated with the exclusion
annotation or one of its sub-annotations. To do so, use the new
"--exclusion-is-final" switch.

- Volumes can now be exported by using the `--volumes` switch. By default all
volumes of the exported project will be included. This can be further
constrained by using `--volume-annotation <annotation-name>` arguments.

- The way she exported objects are specified through the command line interface
changed. Instead of writing e.g. `--notreenodes` to not import treenodes from
a source, `--treenodes false` has to be used now. This is the case for
treenodes, connectors, tags and annotations. The defaults (when the argument
is not provided) stay the same. To explicitly disable the export of a type
`false`, `no`, `f`, `n` and `0` can be provided as argument, e.g. `-treenodes
false` or `--users n`. For a positive parameter use `true`, `yes`, `t`, and
`1`.

CLI Importer:

- Precompute materializations (edges, connectors) explicitly only for imported
data, which improves performance in typical scenarios (import is small
compared to existing data). If the old behavior of recomputing everything in
the target project should be used in cases where a full data base is imported,
the --update-project-materializations switch can be used.

- The way she imported objects are specified through the command line interface
changed. Instead of writing e.g. `--notreenodes` to not import treenodes from
a source, `--treenodes false` has to be used now. This is the case for
treenodes, connectors, tags and annotations. The defaults (when the argument
is not provided) stay the same. To explicitly disable the import of a type
`false`, `no`, `f`, `n` and `0` can be provided as argument, e.g. `-treenodes
false` or `--users n`. For a positive parameter use `true`, `yes`, `t`, and
`1`.

- Imported usernames can now be mapped to existing usernames and mapped
selectively by using one or more parameters of the form
--username-mapping="import-username=target-username". The example would map
all references to the user import-username in the imported data to the
existing user target-username. The mapping is performed even with --map-users
off.

- It is now possible to import volumes from CATMAID export files and other
projects..

Miscellaneous:

- Tracing layer: a minimum skeleton length can now be specified in the layer
options, causing the Tracing Layer to show only nodes of skeletons of at least
this cable length (nm).

- Tracing layer: a minimum number of nodes can now be configured to only show
skeletons of at certain minimum size (just like the existing minimum cable
length constraint). This is configurable through the layer configuration,
accessible by clicking the blue/white box in the lower left corner of stack
viewers.

- Settings widget: visibility group conditions can now be inverted.

- Confirming a radius selection (Shift + Y) can now also be done using the Enter
key.

- Neuron name searches and annotations should be much faster on larger
instances.

- Basic support for touch screens (e.g. phones and tablets) is now implemented.

- CATMAID can now export files (e.g. CSVs, videos, etc.) of much larger size
than before, if "Save exported files in streaming mode" is enabled in the
Settings Widget. To make this work, the browser settings (chrome://settings)
"Ask where to save each file before downloading" has to be enabled.

- Context aware help: by clicking the new question mark icon in the upper right
corner, a context aware help dialog can be displayed on top of all other
CATMAID tools. It provides some general guidance for the intended workflow
with individual tools. This can be enable to be displayed by default as part
of the Settings Widget. The display of this can also be enabled in a link to a
view by appending `&help=true`. This will be added automatically if a help
dialog is open during URL creation.

- Connectivity widget: the new "List links' button will open a Connector List
with all links of the selected neurons.

- Selection table: the new checkbox "Link visibility" allows to change the
behavior of the visibility checkboxes. So far the pre/post/text/meta
select-all controls were only affecting the respective visibility options of
visible/selected skeletons (default). With unlinked visibility
pre/post/text/meta can also be controlled for all neurons, regardless of their
visibility. This allows e.g. to only show synapses, but no skeletons.

- General search widget: a more flexible table is now used for display, which
allows sorting, filtering and pagination.

- Neuron dendrogram: select currently active node by default when loading the
dendrogram for the active skeleton.

- The right end of the status bar contains now a button to toggle the visibility
of the top toolbars.

- Updating the copy of client side annotations will only request new data if
there are actually new annotations. This makes loading of e.g. the Neuron
Search widget faster.

- Boss databases can now be used as tile source type so that image data is
loaded from them. More details: https://docs.theboss.io/docs/image.

- Docker: HTTP basic authentication can be configured by using the environment
variables HTTP_AUTH_ENABLED, HTTP_AUTH_USER and HTTP_AUTH_PASS in the web
container of the `docker-compose.yml` file (an example is given).

- Performance: selecting the closest node in a skeleton should now be faster.

Bug fixes

- A race condition has been fixed that could in rare cases lead to inconsistent
skeleton IDs in a skeleton that is merge into different skeletons by different
requests.

- Landmark transformations: fix Moving Least Square transformations for skeleton
fragments outside of source group bounding box.

- The Connectivity Graph Plot draws now individual bars in each sub-plot
side-by-side and uses the same neuron names as other widgets (from CATMAID's
neuron name service).

- Information based on historic information like the history animation in the 3D
Viewer and the Neuron History widget includes merge information now correctly.
Before, merge nodes were represented twice in a time slice that included the
merge.

- The default connector type is now properly persisted as a setting.

- Neuron search: no duplicate entries are shown anymore, which could result e.g.
when sub-annotations where allowed.

- Neuron similarity: when showing result skeletons in 3D, skeletons are now
appended to the Selection Table of a 3D Viewer, rather than the 3D Viewer
directly.

- Connectivity widget: the auto-connectivity CSV will now use formatted neuron
names as column and row headers.

- Connectivity widget: the 'Export CSV' button will now respect name and
annotation filters.

- Graph widget: ungrouping of one-element groups is now allowed.

- Graph widget: merging of grouped skeletons is now handled properly.

- 3D viewer: the depth test for connector partner spheres is now performed
correctly and spheres should be rendered in the correct Z order.

- 3D viewer: mouse controls now work correctly in fullscreen mode.

- 3D viewer: the suggested width and height of the animation export are now by
default a factor of two. This is required by the WebM encoder. Off values are
reduce by one.

- 3D viewer: spatial select works now also without the active node highlighted.

- 3D viewer: no error is shown any more when attempting to move while in radius
edit mode.

- 3D viewer: landmark transformed skeletons show now also radius spheres.

- Connector table: the section and tag columns are now part of the CSV export.

- Tracing tool: unneeded node updates are removed from initial tracing layer
loading.

- Selection table: don't try to load missing skeletons from JSON file.

- Settings widget: default values for tracing layer skeleton limits can now be
configured under Tracing Overlay > Tracing layer skeleton filters.

- The numpad delete key is now recognized as regular delete (if numlock is off).

- SWC neuron import: providing a neuron ID for an import works again and will
now also set an optionally provided neuron name. Additionally, it is now
required that a user importing skeleton data for an existing neuron ID has
the rights to edit the skeleton instance as well as all its treenodes.

- Volume widget: volumes/meshes with annotation can now be removed properly.

- Volume widget: editing a volume by double clicking its table entry works
again.

- Neuron dendrogram: correctly reload skeleton if it changes as a result of a
split or merge. If a dendrogram node is selected, the respective skeleton will
be reloaded after a split, even if its ID changed.

- The Notification Table can be opened again without errors.

- Exporter: connector links are now exported properly if the parameter
--original-placeholder-context is used.

- Docker: the docker-compose setup now uses Postgis 2.5 internally and therefore
allows upgrades from Postgres versions < 10 with Postgis 2.4.

- Docker: stale Postgres PID files will now be removed during a database upgrade
in a docker-compose setup. PID files without actually running database
processes prevented some updates before.

- Initial setup: create_configuration.py now also prints the media files
directory as part of the webserver example configuration. This is the folder
where e.g. some exported files are made available.

2018.11.09

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


Notes

- 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 back-end.

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
configuration.

- 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
"complete".

- 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
location.

- 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.

Volumes:

- 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.

Docker:

- More CATMAID configuration options are now accessible through Docker
environment cariables: CM_DEBUG, CM_FORCE_CONFIG_UPDATE, CM_WRITABLE_PATH,
CM_NODE_LIMIT, CM_NODE_PROVIDERS, CM_SUBDIRECTORY, CM_CSRF_TRUSTED_ORIGINS.

- 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
monitored.

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

Miscellaneous:

- 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
precedence.

- 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.

- Many tables should now allow for larger CSV exports.

- Connector table: the exported CSV file has now a more reasonable name and
doesn't include all skeleton IDs anymore (this became impractical with larger
sets).

- 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.

2018.07.19

Contributors: Albert Cardona, Andrew Champion, Pat Gunn, Tom Kazimiers, Will Patton, Eric Trautman


Notes

- Both the standalone Docker image and the Docker-compose setup can now be
updated after a Postgres version change. This makes it possible again to use
CATMAID versions after 2018.02.16 with Docker. The documentation has more
information.

- This is the last CATMAID version with support for Python 2.7. Starting from
next version, only Python 3 will be supported.


Features and enhancements

Volume widget:

- Add a "List connectors" link to each volume, to show all connectors in a
volume bounding box.

- The new "Min skeleton nodes" and "Min skeleton length" options allow to
further constrain volume based skeleton selections ("List skeletons").

- The Connector List widget that is shown when clicking on "List connectors",
now supports connector filtering. The volume of the link's row is now
automatically set as filter in the new Connector List widget. This means
connector links in this table are now shown only if they intersect exactly
with the volume (and not only with the bounding box like before).

- State saving is now supported.

3D Viewer:

- The line width of skeletons can be adjusted again on platforms other than
Linux. This Requires "Volumetric lines" in the "View settings" tab to be
enabled (it is by default). Unchecking this option brings back the previous
line rendering behavior.

- The new "Focus skeleton" button in the "View" tab will look at the active
skeleton's center of mass from the current camea location.

- Volumes can now be smoothed by subdivision. The volume option panel available
from the View Settings tab now contains a "Subdivide" checkbox.

- A volume's bounding box can now be displayed using the "BB" checkbox that is
available for visible volumes in the volume option panel.

- New coloring option: X/Y/Z rainbow lookup table coloring for active stack
dimensions.

- The active node respects now a node radius by default and is scaled to 1.5x
its size. This behavior can be disabled using the "Radius adaptive active
node" checkbox in the "View settings" tab.

- Catalog export: use global neuron name for sorting and display by default.

- Catalog export: support for multiple neurons per panel has been added
(separate from pinned neurons). The export dialog contains now a "Skeletons
per panel" input field. Essentially, the displayed skeletons can bow be
iterated in batches.

- Catalog export: individual skeleton panels can now also be exported as PNG
instead of SVG, which reduces the file size, export time, parsing time. Plus
it allows for an exact copy of what is shown in the 3D Viewer.

- Catalog export: in orthographic mode it is now possible to export a scale bar
on either none, the first or all exported panels.

- If the estimated size of the tiles to load for a Z plane exceeds 100 MB, users
are asked for confirmation.

Connectivity matrix:

- Connector node filters can now be applied using the funnel icon in the widget
title bar.

- The new "Groups" tab allows to group rows, columns or both by their displayed
name.

- State saving is now supported.

Reconstruction sampler:

- Different leaf handling strategies are now available to be selected for a
sampler. The behavior so far (and current default) is to just ignore leaf
segments that are shorter than the interval length minus the error margin.
Alternatively, it is now possible to merge the leaf segment into the last
interval, to create new shorter intervals for the leaf segments or, combining
both, it is possible to try to merge it into the last interval and if that's
not possible (e.g. on a small twig with no previous interval on the same
segment), then create a new short interval. This option is available in the
Sampler tab.

- Both the domain table and the interval table now show the cable length of each
domain and interval in nanometers, respectively. Additionally, the interval
tab also show the aggregated cable length of all completed intervals.

Tracing layer:

- The new option "Update tracing data while panning" allows to configure weather
the tracing data on the layer will be updated when the view is panned around.

- A set of new options allows now to configure a "tracing window", which will
restrict tracing data loading by allowing it only in view centered rectangle.
Width and height can be configured independently. This is useful for remote
review and tracing.

- A new option to show only the N largest skeletons in a field of view is now
available for the layer settings (and the API).

Miscellaneous:

- The behavior of the Ctrl modifier on section navigation with , and . can now
be inverted using the "Animate section change by default" option in the
Settings Widget.

- Connectivity widget: annotations can now be used for additional filtering per
partner table.

- Split/merge dialog: the node count of the individual parts is now shown when
hovering over their cable length information.

- Review widget: the user who created the last node of each segment is now
displayed in the review table. This allows to focus review on segments not
created by oneself.

- A skeleton cable length limit can be set so that a warning is displayed if a
change to the skeleton morphology results in a cable length larger than the
limit. This is available in the Warnings section of the Settings Widget.

- Node filters: if a neuron name is provided for a rule, the rule is now valid
for all neurons with neuron names that include the provided name and not only
exact matches.

- Neuron name display: neighboring duplicate name components are now removed by
the default. This setting can be adjusted from the Annotation sections in the
Settings Widget.

- Boolean parameters for API endpoints are no case-insensitive, allowing the use
of regular boolean values in requests from Python.

- CLI exporter: the new --excluded-annotation parameter can be used to exclude
neurons from the export based on annotations.

- CLI exporter: placeholder nodes are now exported as completely new skeletons
that are not linked to their original skeleton, unless it is part of the set
of exported skeletons or the --original-placeholder-context flag is provided.


Bug fixes

- Measurements table: column headers in CSV export are now quoted.

- Export management command: the default output filename can be used again.

- Export management command: class instances and links of skeletons and neuronsa
are now exported alongside treenodes.

- Neuron name service: missing naming components don't lead to removal of all
whitespace between neighbors anymore.

- Initial skeleton coloring of merge dialog when merging from smaller into
larger skeletons is fixed.

- 3D viewer: refreshing the active skeleton does not refresh all skeletons
anymore.

- 3D viewer: connector restrictions like "show only shared connectors" now
respect the pre/post visibility toggles in the Selection Table.

- 3D viewer: the initial text scaling for label text is now correctly set again.

- Reconstruction sampler: during interval creation preview, only intervals from
the currently active domain are now shown.

- Graph Widget: when subscribed to other widgets, their skeletons are not
removed anymore from the Graph Widget when the other widget is closed.

- Neuron Search: annotation data range can be used again.

- The Strahler number computation no correctly increases the Strahler number
when two more children have the local maximum number rather than requiring all
children to share the same number.

- Radius editing: using undo (Ctrl + Z) after editing the radius of a node works
now without an error message.

2018.04.15

Contributors: Albert Cardona, Andrew Champion, Chris Barnes, Rob Court, Tom Kazimiers


Notes

- Requires a virtualenv update.

- A new management command "catmaid_find_node_provider_config" is available,
which can be used to compare different node providers on existing data, which
is useful to configure the NODE_PROVIDERS setting.

- The Docker images now support the options CM_HOST and CM_PORT to configure
where uwsgi is listening.

- When using the Javascript console, node positions returned from tracing
overlays are now in project space coordinates (physical nm), not stack space
voxel coordinates. Transformation to project space is no longer necessary.

- Postgres 10+ is now required.

Features and enhancements

Layouts:

- A new "Layouts" menu is shown in the top bar when a project is opened. It
allows to save the current window layout under a name, it provides an option
to close all widgets and will show all available layouts as menu entries.

- Layouts store window arrangement, window sizes, tabs and subscriptions.

- Saved layouts can also be manually configured from the "Custom layouts"
setting in the Settings Widget.

- Tabbed windows are now supported in layout specs by using "t([a, b, c])" where
a, b, c or any other number of elements can be children of the tabbed window.

Landmarks:

- Support transformation of nodes that cross space between landmark groups and
even reach into target groups. This allows to e.g. transform skeletons that
cross the midline. Doing this is enabled by default, but can be disabled
through the "Interpolate between groups" option.

- Virtual transformed skeletons are now also shown on a separate layer in all
open Stack Viewers. Nodes of those skeletons can currently not selected. To
disable the Landmark Layer, uncheck the "Show landmark layers" checkbox in the
Display tab's button panel.

- The new "Edit landmark" tab provides a simpler interface to add new landmark
locations to landmark groups. If the option "Update existing landmark
locations" is selected, new landmark locations will replace existing ones
shared between the provided landmark and the selected group. The lower
section of this tab allows to edit links between landmark groups, which can
be used for rule based display transformations.

- As an alternative to selecting a target landmark group explicitly to create a
display transformation, it is now possible to instead select a target relation
in the Display tab. Doing so will automatically create all display
transformations from the source group to all landmark groups transitively
linked to the source group using the selected relation. The reciprocity of
relations is respected.

- The new "Create groups" tab provides an option to create landmark groups along
with required landmarks from the bounding boxes of two volumes. This allow to
quickly create simple landmark group mappings.

- The color and extra scaling for nodes on Landmark Layers can be adjusted from
the widget.

- All 3D Viewers are now enabled by default as transformation display target.

- State saving is now supported.

3D Viewer:

- A scale bar can now be displayed when in orthographic mode. The scale bar
can disabled via a checkbox in the View Settings tab.

- PNG and SVG exports offer now a filename input field.

- Loaded volumes are now stored along with their styling in the widget state.

- Landmark groups are now show with landmark name labels. This can be disabled
from the landmark menu.

- Text scaling can be adjusted from the View tab.

- The width and height of animation exports are now restricted to even numbers.
This is required by the H264 codec we refer to in our documentation.

Graph widget:

- The old "Graph" tab was split into two: "Nodes" and "Edges", each with the
corresponding functionality.

- New feature: color edges with the same color as the source node, the target
node, or the general color specified in the "Properties" menu (from the "Main"
tab). See the "Edges" tab.

- New feature: change the arrow shape to a circle, diamond, tee, etc. The new
"Set" button in the "Edges" tab applies the change to selected nodes.

- New feature: the new "Selections" tab can record sets of nodes, stored as a
named selection. Then these can be selected or deselected. The "Select all"
button selects all nodes from all created selections.

- Basic state saving is now supported.

Reconstruction Sampler:

- Intervals are now displayed with only two colors by default, it makes
distinguishing many intervals easier. The previous multi-color mode can be
reactivated from the preview window.

Tracing general:

- The settings widget allows now to configure a "fast split mode" and a "fast
merge mode" to allow particular groups of skeletons to be split and merged
without confirmation. Similarly to Visibility Groups, these Fast Split/Merge
Groups can be defined in terms of a universal match (all skeletons), a
required meta-annotation or a creator ID. In fast split mode, all annotations
from the split skeletons are copied over to the split off part. In fast merge
mode, all annotations are taken over from a skeleton merged in without
confirmation.

- The `P` shortcut (peek) will now show the closest skeleton to the cursor in
all open 3D Viewers. To show the active skeleton use `Shift + P`.

- A move/navigation mode can now be used using the new (third) button in the
tracing tool bar. If enabled, no mouse based node actions will be performed
anymore. Left mouse button clicks/movements are handled like right mouse
button clicks/movements.

- The Split Neuron Dialog has now "select all" checkboxes for annotations.

Statistics widget:

- Statistics widget: The new option "All" in the time unit selection control
allow to aggregate user data for the whole time range.

- The number of newly created treenodes is now displayed alongside the cable
length in the contribution table.

- Each user can now be included in an aggregate statistics row at the end of the
table by checking the checkbox in front of the username.

- Add extra Refresh button to top bar.

Volume widget:

- The new link "List skeletons" in each volume table row allows to open a new
Selection Table containing all skeletons the bounding box of the respective
volume intersects. Due to large numbers of skeletons in bigger volumes, this
is currently mainly useful for smaller volumes.

- When creating box volumes, the new button "Define cube at
current location" allows to conveniently create a cube with a configurable
edge length at the current location.

Miscellaneous:

- Basic Search: allow search for treenode IDs and connector IDs.

- Project administration: selected projects can now be exported as JSON or YAML
file using the respective action from the drop-down menu.

- In addition to the '/apis' endpoint, the API documentation is now also
available as part of the general documentation.

- Connectivity Widget: partner header indexes can now optionally be replaced
with the neuron name and rotated by 90 degrees.

- The Keyboard/Mouse Help Widget has now a text filter, which allows to show
only items containing a particular text.

- The Tracing Overlay has a new setting "Allow lazy node updates", available in
the Settings Widget. If enabled (default), stack viewers can skip node updates
if a change didn't occur in the Viewer's field of view. This is useful when
e.g. the Connector Viewer is open while tracing, because not all viewers get
update due to the addition of a node.

- Selection Table: Skeletons can now be imported from CSV files.

- The status bar shows now both stack space and project space coordinates of the
mouse cursor.

- The skeleton projection layer works now with orthogonal views.

- Detailed review colors are now enabled by default. To get the old behavior
back, adjust your settings (admins can do this for the whole project or
server).

- Stacks can now be created whose planar axes have anisotropic resolution.
The stack viewer will display these stacks correctly by scaling tiles
separately along each axis. The tracing overlay is also compatible with these
stacks in all orthoviews.

- Added H2N5 tile source type.

- Due to the new skeleton summary tables, some APIs are much faster now:
1. Obtaining review info skeletons with /{project_id}/skeletons/review-status,
2. API and connectivity information through /{project_id}/skeletons/connectivity,
3. Listing skeletons with a minimum node count with /{project_ids}/skeletons/
4. Getting skeleton node count with /{project_id}/skeleton/{skeleton_id}/node_count.

In consequence the following widgets became faster too: Connectivity Widget,
Selecting skeleton counts in the Statistics Widget, Review count based
coloring (e.g. in Graph Widget). Opening the Merge Dialog is also faster due
to this change.


Bug fixes

- Reconstruction Sampler: 3D visualizations for interval preview and color mode
were sometimes wrong and showed additional intervals. This is fixed now.
Actual interval boundaries were not affected and are correct.

- Reconstruction Sampler: Individual intervals are not silently deleted anymore
if referenced start or end node is deleted. As consequence interval start and
end nodes can't be deleted anymore.

- Measurement table: no error is shown anymore after merging two listed
skeletons.

- Radio button drop-downs and checkbox drop-downs now hide on a mouse click
outside of the control.

- Review: fix node selection error appearing during review of some virtual
nodes.

- Tracing layer: when trying to create a second presynaptic node to a connector,
a warning is now shown instead of a full error dialog. Also the previously
created target treenode isn't created anymore in this case.

- Tracing layer: prevent browser context menu on tracing overlay right click.

Page 1 of 7

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.