npm install
npm run build
Serve a HTML site from root of folder.
If using python3, in project root
python -m http.server
The module can be imported according to ES6 syntax as follows:
import Neu3D from 'neu3d';Instantiate the visualization object by passing a HTMLDivElement with class vis-3d to it along with other optional configurations:
var ffbomesh = new Neu3D(
parentDiv, // parent div object with class `vis-3d`
undefined, // optionally add initalization JSON data
{ "globalCenter": { 'x': 0, 'y': -250, 'z': 0 } }, // optional metadata
false); // display stats panel on top left
window.ffbomesh = ffbomesh; // exposing to global namespace if desired
$.getJSON("./data/data.json", (json) => {
ffbomesh.addJson({
ffbo_json: json,
showAfterLoadAll: true
});
});- Global
The class
Neu3Dis available if script is loaded as script tag. Seeindex.html. - ES6 See Usage section.
- TypeScript
import Neu3D = require('neu3d');
There are two ways to visualize: upload a file, or call ffbomesh.addJson with a json.
neu3D takes files of the following format:
Mesh:
A json file with the following dict items example
vertices: a list of flattened coordinates withx,y,zof each vertex appearing consecutively.faces: a list of integers, every 3 of them indicates the ids of three vertices that form the face. The first vertex is 0.
Neuron:
An SWC file with columns in the following order example1 example2:
sample: sample ID of the nodeidentifier: type of the node, 0: unspecified, 1: somax: x coordinate of the node positiony: y coordinate of the node positionz: z coordinate of the node positionrorradius: width of the nodeparent: sample ID of the parent node
In addition to SWC files, a neuron mesh in GLTF format, with '.gltf' extension, can also be visualized example.
Synapse:
A .syn file defined as a csv file with the columns in the following order example:
pre_x: x coordinate of the presynaptic site,pre_y: y coordinate of the presynaptic site,pre_z: z coordinate of the presynaptic site,pre_r: radius of presynaptic site,post_x: x coordinate of the postsynaptic site,post_y: y coordinate of the postsynaptic site,post_z: z coordinate of the postsynaptic site,post_r: radius of the postsynaptic site.
The last four columns are optional.
To call ffbomesh.addJson, the json input should be of the following format:
Mesh: a dict with the following fields:
- vertices: a list of flattened coordinates with
x,y,zof each vertex appearing consecutively. - faces: a list of integers, every 3 of them indicates the ids of three vertices that form the face. The first vertex is 0.
Neuron: a dict with the following fields:
sample: sample ID of the nodeidentifier: type of the node, 0: unspecified, 1: somax: x coordinate of the node positiony: y coordinate of the node positionz: z coordinate of the node positionrorradius: width of the nodeparent: sample ID of the parent node
Synapse: a dict with the following fields:
sample: list of unique integersidentifier: a list of same length as sample (not used).x: a list of x coordinates, with the first half for presynaptic sites and the second half for postsynaptic sites.y: a list of y coordinates, with the first half for presynaptic sites and the second half for postsynaptic sites.z: a list of z coordinates, with the first half for presynaptic sites and the second half for postsynaptic sites.rorradius: a list of radius, with the first half for presynaptic sites and the second half for postsynaptic sites.parent: a list of integers: -1 for the first half (presynaptic sites), and for the second half, the sample ID of their presynaptic site.
This library is developed and maintained by:
Developer Emeriti:
A part of this library is inspired by the Sharkviewer project, developed at the Janelia Research Campus.