Skip to content

2021.12.21

Latest
Compare
Choose a tag to compare
@tomka tomka released this 21 Dec 13:01
· 43 commits to master since this release
2021.12.21
b74f51f

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. The next CATMAID release will require Postgres
    13, which is also supported by this version.

    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.
    The next CATMAID release will require at least Python 3.8 and will drop support for
    Python 3.6.

  • 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 " can be provided to the
    exporter. For instance, assuming the provided 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.

API Changes

Additions

  • POST /{project_id}/neurons/rename:
    Rename multiple neurons at the same time.

  • GET|POST /{project_id}/skeletons/summary:
    Retrieve meta information like cable length or number of nodes for skeletons.

  • GET /accounts/anonymous-api-token:
    Get the API token for the anonymous user.

  • POST /{project_id}/neurons/all-skeletons:
    Map a list of neuron IDs to the skeleton IDs that model them.

  • GET /{project_id}/:
    Get project details like the title and comment.

  • POST /{project_id}/:
    Update the project title if the user has admin permissions in the project.

Modifications

  • GET /{project_id}/transactions/:
    Now accepts the optional parameters user_id and type to further constrain the
    result. Type is a transaction label string, e.g. 'skeletons.import'.

  • POST /{project_id}/skeletons/import:
    Now accepts the optional boolean parameter replace_annotations, which can be
    used to remove all existing annotations if an existing neuron/skeleton is
    replaced with force=true.

  • POST /{project_id}/graphexport/json:
    The returned 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.

  • POST /{project_id}/skeleton/connectivity_matrix:
    The new parameters row_relations and col_relations allow callers now to
    specify the relations used to connect two skeletons for each side. They
    default to "presynaptic_to" and "postsynaptic_to".

  • POST /{project_ids}/skeletons/in-bounding-box:
    Returns now also unlinked connectors by default. To only get linked connectors
    like before, pass in only_linked = true.

Deprecations

None.

Removals

None.