TBD
- java (ubuntu):
sudo apt install default-jre default-jdk
- maven (ubuntu):
sudo apt install maven
- javafx (ubuntu):
sudo apt install openjfx
run:
mvn clean install
or, to generate a "fat jar" with all dependencies added, run:
mvn -Pfat clean package
(Linux and OSX only)
[PREFIX=</path/to/prefix>] sh install.sh
Set PREFIX
to a path that is on your PATH
If you are on Linux/OSX you can install ctrueden/jrun and the paintera launch script (instructions) and then run:
[VERSION=<version>] [JAVA_OPTS=<java-opts>] paintera [ARG...]
If you set VERSION
to a SNAPSHOT
release you will need to run
mvn clean install
first.
On any OS, you can also run a compiled fat jar
java <java-opts> -jar target/paintera-0.1.0-SNAPSHOT-shaded.jar
We recommend at these Java options:
Option | Description |
---|---|
-Xmx16G | Maximum Java heap space (replace 16G with desired amount) |
-XX:+UseConcMarkSweepGC | concurrent garbage collector generally better for UI applications |
$ java -jar target/paintera-0.1.0-SNAPSHOT-shaded.jar --help
Usage: Paintera [-h] [--height=HEIGHT] [--width=WIDTH]
[--label-source=LABEL_SOURCE]... [--raw-source=RAW_SOURCE]...
--height=HEIGHT Initial height of viewer. Defaults to 600.
--label-source=LABEL_SOURCE
Open label source at start-up. Has to be [file://]
/path/to/<n5-or-hdf5>:path/to/dataset
--raw-source=RAW_SOURCE
Open raw source at start-up. Has to be [file://]
/path/to/<n5-or-hdf5>:path/to/dataset
--width=WIDTH Initial width of viewer. Defaults to 800.
-h, --help Display this help message.
Action | Description |
---|---|
P |
Show Status bar on right side |
(Shift +) Ctrl + Tab |
Cycle current source forward (backward) |
Ctrl + O |
Show open dataset dialog |
M |
Maximize current view |
Shift + M |
Maximize split view of one slicing viewer and 3D scene |
Shift + Z |
Un-rotate but keep scale and translation |
left click | toggle id under cursor if current source is label source (de-select all others) |
right click | toggle id under cursor if current source is label source (append to current selection) |
Shift left click |
Merge id under cursor with id that was last toggled active (if any) |
Shift right click |
Split id under cursor from id that was last toggled active (if any) |
Space left click/drag |
Paint with id that was last toggled active (if any) |
Space right click/drag |
Erase within canvas only |
Shift + Space right click/drag |
Paint background label |
Space wheel |
change brush size |
F + left click |
2D Flood-fill in current viewer plane with id that was last toggled active (if any) |
Shift + F + left click |
Flood-fill with id that was last toggled active (if any) |
N |
Select new, previously unused id |
Ctrl + C |
Show dialog to commit canvas and/or assignments |
C |
Increment ARGB stream seed by one |
Shift + C |
Decrement ARGB stream seed by one |
Ctrl + Shift + C |
Show ARGB stream seed spinner |
V |
Toggle visibility of current source |
Shift + V |
Toggle visibility of not-selected ids in current source (if label source) |
R |
Clear mesh caches and refresh meshes (if current source is label source) |
L |
Lock last selected segment (if label source) |
Ctrl + S |
Save current project state |
In #61 we introduced a specification for the data format that Paintera can load through the opener dialog (Ctrl O
).
These restrictions hold only for the graphical user interface. If desired, callers can
- add arbitrary data sets programatically, or
- through the
attributes.json
project file if an appropriate gson deserializer is supplied.
Accept any of these:
- any regular (i.e. default mode) three-dimensional N5 dataset that is integer or float. Optional attributes are
"resolution": [x,y,z]
and"offset": [x,y,z]
. - any multiscale N5 group that has
"multiScale" : true
attribute and contains three-dimensional multi-scale datasetss0
...sN
. Optional attributes are"resolution": [x,y,z]
and"offset: [x,y,z]"
. In addition to the requirements from (1), alls1
...sN
datasets must contain"downsamplingFactors": [x,y,z]
entry (s0
is exempt, will default to[1.0, 1.0, 1.0]
). All datasets must have same type. Optional attributes from (1) will be ignored. - (preferred) any N5 group with attribute
"painteraData : {"type" : "raw"}
and a dataset/groupdata
that conforms with (2).
Accept any of these:
- any regular (i.e. default mode) integer or varlength
LabelMultisetType
("isLabelMultiset": true
) three-dimensional N5 dataset. Required attributes are"maxId": <id>
. Optional attributes are"resolution": [x,y,z]
,"offset": [x,y,z]
. - any multiscale N5 group that has
"multiScale" : true
attribute and contains three-dimensional multi-scale datasetss0
...sN
. Required attributes are"maxId": <id>
. Optional attributes are"resolution": [x,y,z]
,"offset": [x,y,z]
,"maxId": <id>
. If"maxId"
is not specified, it is determined at start-up and added (this can be expensive). In addition to the requirements from (1), alls1
...sN
datasets must contain"downsamplingFactors": [x,y,z]
entry (s0
is exempt, will default to[1.0, 1.0, 1.0]
). All datasets must have same type. Optional attributes from (1) will be ignored. - (preferred) any N5 group with attribute
"painteraData : {"type" : "label"}
and a dataset/groupdata
that conforms with (2). Required attributes are"maxId": <id>
. Optional sub-groups are:
fragment-segment-assignment
-- Dataset to store fragment-segment lookup table. Can be empty or will be initialized empty if it does not exist.label-to-block-mapping
-- Multiscale directory tree with one text files per id mapping ids to containing label:label-to-block-mapping/s<scale-level>/<id>
. If not present, no meshes will be generated.unique-labels
-- Multiscale N5 group holding unique label lists per block. If not present (or not usingN5FS
), meshes will not be updated when commiting canvas.