Neu3d
A javascript 3D visualization engine for neural data in SWC format
Install / Use
/learn @fruitflybrain/Neu3dREADME
Neu3D SWC visualization for fruitfly
Installation
npm install
npm run build
Test
Serve a HTML site from root of folder.
If using python3, in project root
python -m http.server
Usage
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
});
});
Consumption Example
- Global
The class
Neu3Dis available if script is loaded as script tag. Seeindex.html. - ES6 See Usage section.
- TypeScript
import Neu3D = require('neu3d');
Expected Formats
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.
Authors
This library is developed and maintained by:
Developer Emeriti:
Acknowledgements
A part of this library is inspired by the Sharkviewer project, developed at the Janelia Research Campus.
Related Skills
node-connect
354.5kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
112.4kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
354.5kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
354.5kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
