Changelog
This project attempts to follow Semantic Versioning and uses Keep-a-Changelog formatting. But I make mistakes sometimes.
[3.5.2] - 2024-11-11
Fixed
- Fixed behavior of
statebuilder.helpers.make_neuron_neuroglancer_link
to actually render the state as it used to.
[3.5.1] - 2024-11-10
Fixed
- Removed inadvertent debug statement in the last release.
- Fixed a bug in the
expand_tags
option in theannotation_dataframe
function.
[3.5.0] - 2024-11-10
Added
- StateBuilder: Added tags to Spelunker neuroglancer states! Note that this might not be available in all mainline-style deployments yet.
- Parser: Added a number of new features to parse classic and Spelunker-style states, including layer and segment information, filtering archived layers, and a new class-level interface to make life easier.
Fixed
- Reformatted use of
target_site
to be more consistent when using "spelunker" as a name.
[3.4.0] - 2024-08-26
Added
- StateBuilder : Added
use_skeleton_source
as an optional argument forfrom_client
to use a skeleton service advertised in the info service. - SegmentProperties New option
prepend_col_name
inSegmentProperties.from_dataframe
will prepend the column name to the tag values.
[3.3.7] - 2024-07-24
Added
- StateBuilder New option on
StateBuilder.render_as
:return_as="short"
will upload the state and return a short URL to the state. - StateBuilder New helper
statebuilder.helpers.segment_property_link
will quickly generate a basic link from a segment property.
Changed
- Default "spelunker" neuroglancer deployment was changed.
Fixed
- StateBuilder Fixed a bug when setting the background color in Spelunker sites.
- StateBuilder Fixed a bug in using segment property maps.
[3.3.6] - 2024-07-23
Added
- SegmentProperties New method "label_format_map" allows you to build arbitrary label formats from dataframe columns using
Fixed
- SegmentProperties Nulls in label columns are ignored as intended.
[3.3.5] - 2024-07-19
Added
- SegmentProperties The
label_col
argument inSegmentProperties.from_dataframe
can now take a list of column names. Labels are concatenated with a seperator set withlabel_separator
that defaults to an underscore (_
). - StateBuilder Recent segment property arguments included in the segment property maps for SegmentationLayerConfigs.
Changed
- SegmentProperties All property names (the
id
field) are coerced to strings, as required.
[3.3.4] - 2024-07-19
Fixed
- SegmentProperties: Fixed a bug in building tags from dataframes.
[3.3.3] - 2024-07-19
Added
- SegmentProperties: Tag columns will now automatically disambuguate tags if they are duplicated in different columns of the dataframe.
For example, if you had "my_column" with value "type_a" and "their_column" also with value "type_a", the tag would become "my_column:type_a" and "their_column:type_a". This can be turned off by setting the
allow_disambiguation
argument to False. - SegmentProperties: The
SegmentProperties.from_dataframe
method now has aallow_disambiguation
argument to control whether the disambiguation above is performed.
Changed
- SegmentProperties: Tag property generation performance for long dataframes is improved.
Fixed
- SegmentProperties: Fixed a bug in handling tag columns with categorical dtype.
[3.3.2] - 2024-07-18
Changed
- StateBuilder: When providing a URL but not a client, you will now get a warning that target-site cannot be inferred.
Fixed
- Small changes to work in python 3.8, because the only issue was type hints.
[3.3.1] - 2024-07-12
Fixed
- Removed debug statements left in after testing.
[3.3.0] - 2024-07-12
Added
- StateBuilder : Added a
skeleton_source
andskeleton_shader
parameter to SegmentationLayerConfig to put skeleton info into the state. - EasyViewer : Added
set_skeleton_source
andset_skeleton_shader
methods to EasyViewer.
Fixed
- SegmentProperties : Better handling of null values (nan, None, and empty strings) in tag columns, all of which are ignored.
- Various requirements updates that were necessary.
[3.2.1] - 2024-07-11
Added
- SegmentProperties : Added a
.to_dataframe()
method for segment properties to convert them back to a dataframe.
[3.2.0] - 2024-07-10
Added
- SegmentProperties : A new module has been created to build Segment Properties, which are a method of organizing information about segment IDs in a Neuroglancer segmentation layer. Segment Properties only work with the newer Google/Spelunker branches, and offer a way to add browsable and searchable metadata to segments that can be viewed in the viewer.
- StateBuilder : Various changes were made to support segment properties from both explicit URLs and from data-driven mapping. See documentation for details.
Changed
- StateBuilder : Image layers for spelunker now use native contrast controls.
Fixed
- StateBuilder : Improvements to the use of
target_site
andurl_prefix
in general when both creating statebuilder and rendering states. In particular, the values inrender_state
should now correctly take precendence over the values inStateBuilder
when both are set.
[3.1.0] - 2024-05-29
Added
- The Parser function
annotation_dataframe
now has a parameterexpand_tags
that will create a boolean column for each tag in each annotation layer indicating if the annotation has that tag or not.
Fixed
- Parser : Fixed bugs in getting bounding box annotations and in getting linked segmentations for Spelunker-style states.
[3.0.3] – 2024-4-30
Fixed
- StateBuilder : Fixed a bug preventing tags from being set.
[3.0.2] – 2024-1-19
Fixed
- Improve consistency of target_site argument in StateBuilder.
[3.0.1] – 2023-12-20
Fixed
- Fixed an unnecessary import that caused an error.
- Added python package neuroglancer to the requirements so versions with errors or incompatibilities can be avoided.
[3.0.0] – 2023-12-20
Added
- StateBuilder and EasyViewer Substantial refactor, adding basic support for the main Google Neuroglancer branch and the Cave-Explorer/Spelunker deployments coming online with CAVE.
Most functionality should be seamless, with the client checking for version.
Currently, only the Cave-Explorer and Spelunker deployments are fully supported for this automated version check, as the response depends on a build-specific version.json file.
If no automated version is set or one wants to override any settings, the
target_site
argument can be set tocave-explorer
ormainline
for the main Google branch orseunglab
for the older Seung-lab branch.
[2.14.1] - 2023-05-14
Fixed
- StateBuilder Recast all layer names as strings to avoid issues with numeric.
[2.14.0] - 2023-04-12
Fixed
- StateBuilder Fixed various issues with stacking multiple points into a single row.
[2.13.0] - 2023-02-21
Added
- StateBuilder Adding a helper function for basic line annotation states
- StateBuilder Helper functions can take
split_position
argument.
[2.12.1] - 2023-01-30
Fixed
- StateBuilder Handle None data correctly with mapping sets.
[2.12.0] - 2023-01-30
Added
- EasyViewer At long last, you can set the background color in
set_view_options
with the argumentbackground_color
. As elsewhere, this uses webcolors to deal with color parsing, so it can take names or rgb or hex. - StateBuilder StateBuilder can now set the background color in in
view_kws
with the keybackground_color
. - StateBuilder Mapping sets offer a new and simple iapproach to having multiple dataframes with different mapping rules.
- StateBuilder Mapping rules can handle dataframes where the point position components are split across different columns, assuming that the suffices are always
_x
,_y
, and_z
. Setsplit_positions=True
in the mapping rule to use this.
Changed
- StateBuilder Mapping rules now default to
set_position = True
.
[2.10.0] - 2022-08-11
Added
- StateBuilder A number of helper functions to produce common states have been added to statebuilder.
You can use the function
make_neuron_neuroglancer_link
to generate a link with one or more root ids and, optionally, their synapses. Further, you can use the functionmake_synapse_neuroglancer_link
to generate a state from a synapse dataframe. - StateBuilder Linked segmentations and annotation groups now support multiple columns. For linked segmentations, this adds multiple root ids per annotation. For groups, each unique combinations of values gets its own group.
- StateBuilder and EasyViewer Colors for layers or segment ids can now be in RGB tuples with values between 0--1 or CSS3 named colors, not just hex.
- StateBuilder When using the
client=
argument, viewer resolution is inferred from the client info and does not need to be passed as an additional argument.
Fixed
- StateBuilder For SegmentationLayerConfigs, adding selection maps via
add_selection_map
is more robust.
[2.7.2] - 2021-06-13
Fixed
- StateBuilder Multipoint now works with
set_position
.
[2.7.1] - 2021-06-13
Fixed
- StateBuilder Multipoint performance has improved.
[2.7.0] - 2021-06-13
Added
- StateBuilder In all Mappers, setting
multipoint=True
will allow the point columns to contain multiple points per row, with the other columns assigned to all points in the row. Note that for Mappers with multiple point columns (e.g. LineMappers, SphereMappers, and BoundingBoxMappers), the number of values must be the same in both columns.
[2.6.0] - 2021-06-11
Added
- StateBuilder You can now set a timestamp in SegmentationLayerConfig. Either datetime or unix epoch are allowed.
[2.5.0]
- StateBuilder You can now set split points using a SplitPointMapper
[2.4.0] - 2021-01-22
Added
- Parser:
get_selected_ids
does what it says for a layer.
Fixed
- Parser: Getting annotations with tags/descriptions/etc works.
- StateBuilder:
return_as
parameter works with ChainedStateBuilder now
[2.3.1] - 2021-01-15
Fixed
- Remove pytables from requirements, because the pip install does not work on OS X (at least). If you want to run tests, you will need to install either with
pip install tables
if you're on a system where that works orconda install pytables
otherwise.
[2.3.0] - 2021-01-14
Added
- StateBuilder: At long last, a BoundingBoxMapper
- StateBuilder: A
from_client
function to generate simple image & segmentation states from a FrameworkClient instance. - StateBuilder: Statebuilder can take a client to configure certain default parameters.
- StateBuilder: SegmentationLayerConfig explicitly takes some view keyword arguments:
alpha_selected
,alpha_3d
, andalpha_unselected
. - Parser: New options to get annotation groups and group ids for all annotations.
- Parser: New function to extract multicut information from a state.
Fixed
- StateBuilder: Fixed a scenario where int64s get altered by a conversion through floats.
Changed
- Statebuilder: Behind the scenes refactoring that should not affect use.
[2.2.1] — 2020-10-21
Fixed
- StateBuilder: Setting view options for Graphene segmentation layers now works
- Parser: Now imported as a property of nglui if you import as
import nglui
. - Small bug fixes.
[2.2.0] — 2020-09-04
Added
-
Parser submodule
nglui.parser
for quickly extracting data from neuroglancer states. This should remove some of the boilerplate one writes every time you want to get data out of a state. -
AnnotationLayerConfig now can take arguments about user interactions such as filtering by segmentation and bracket shortcuts showing segmentations.
Changed
- Default behavior for annotation layers now has filtering by segmentation turned off and bracket shortcuts showing segmentations turned on.
[2.1.1] — 2020-08-17
Changed
- Switched from numpy
isnan
to pandasisnull
in StateBuilder. This allows nullable pandas Int64 dtypes to work as columns
[2.1.0] — 2020-07-14
Added
-
Grouped annotations in nglite base and EasyViewer's annotation module. This feature lets you create annotation groups in the Seung-lab branches of Neuroglancer, where multiple annotations are related to one another. It works by passing a list of already-created annotations and getting a new "CollectionAnnotation" that groups them together.
-
Grouped annotations in StateBuilder. PointMapper, SphereMapper, and LineMapper objects can take a 'group_column' value. Data in this column is intended to be numeric or NaN, and rows that share the same value are grouped together. At the moment, this feature only works within individual mapper objects.
-
Two options for linked segmentation ids on grouped annotations:
gather_linked_segmentations
assigns all linked ids of objects within the group to the group annotation itself (True by default).share_linked_segmentations
will add all linked objects within the group to all annotations within the group (False by default). -
array_data
option on AnnotationLayerConfig for simple cases where you just want to map Nx3 arrays to points, a pair of Nx3 arrays to lines, or an Nx3 + N array to spheres (centers+radii).
Fixed
- Bug in GL Shader that caused StateBuilder to fail when
constrast_controls
was set to True.
[2.0.2] - 2020-06-18
Added
-
Custom GL Shaders (see documentation) for image and segmentation layers can be set in EasyViewer.
-
JSON State Server can be set in EasyViewer.
-
Added
contrast_controls
argument tostatebuilder.ImageLayerConfig
to provide brightness/contrast controls to layer through GL Shader. -
Added
state_server
argument tostatebuilder.StateBuilder
to pre-set state server endpoints.
[2.0.1] - 2020-04-27
Fixed
- Removed unnecessary parts of the included neuroglancer module (
nglite
) for cleanliness.
[2.0.0] - 2020-04-25
This update significantly changed the underlying nature and goals of the Neuroglancer Annotation UI project.
Added
-
StateBuilder module for rule-based method of generating Neuroglancer states from Pandas DataFrames.
-
Added various features to make use of specific aspects of the Seung-lab Neuroglancer fork.
Changed
- Removed dependency on neuroglancer python package, which was not designed for the Seung-Lab Neuroglancer fork and had some difficult install requirements for features that were unnecessary for this project demanded.
Removed
- Dynamic state management via python server.