name: ruvector-nervous-system-wasm description: "Bio-inspired AI components in WASM: Hyperdimensional Computing, BTSP synaptic plasticity, and neuromorphic spiking networks. Use when building brain-inspired classifiers, implementing one-shot learning with HDC, or simulating spiking neural networks in browsers."
@ruvector/nervous-system-wasm
Bio-inspired AI components compiled to WebAssembly. Implements Hyperdimensional Computing (HDC) for ultra-fast classification, Behavioral Time-Scale Synaptic Plasticity (BTSP) for one-shot learning, and neuromorphic spiking network primitives.
Quick Reference
| Task | Code |
|---|---|
| Import | import { HyperdimensionalComputing, BTSP, SpikingNetwork } from '@ruvector/nervous-system-wasm'; |
| Initialize | await init(); |
| HDC encode | hdc.encode(data) |
| HDC classify | hdc.classify(vector) |
| BTSP learn | btsp.learn(input, target) |
| Spiking sim | snn.step(input) |
Installation
npx @ruvector/nervous-system-wasm@latest
Node.js Usage
import init, {
HyperdimensionalComputing,
BTSP,
SpikingNetwork,
} from '@ruvector/nervous-system-wasm';
await init();
// Hyperdimensional Computing: encode and classify
const hdc = new HyperdimensionalComputing({
dimensions: 10_000,
numClasses: 5,
encoding: 'random-projection',
});
// Train on labeled data
hdc.train('cat', new Float32Array([0.1, 0.8, 0.2, 0.9]));
hdc.train('dog', new Float32Array([0.9, 0.2, 0.8, 0.1]));
// Classify new input
const result = hdc.classify(new Float32Array([0.15, 0.75, 0.25, 0.85]));
console.log(`Class: ${result.label}, confidence: ${result.confidence}`);
// BTSP: one-shot synaptic plasticity
const btsp = new BTSP({
inputSize: 100,
outputSize: 50,
plasticityRate: 0.1,
plateauDuration: 10,
});
const input = new Float32Array(100).fill(0.5);
const target = new Float32Array(50).fill(1.0);
btsp.learn(input, target); // Single-exposure learning
const output = btsp.forward(input);
console.log('BTSP output correlation:', btsp.correlation(output, target));
// Spiking Neural Network
const snn = new SpikingNetwork({
neurons: 1000,
excitatory: 800,
inhibitory: 200,
connectivity: 0.1,
model: 'izhikevich',
});
const spikes = snn.step(new Float32Array(1000));
console.log(`Active neurons: ${spikes.filter(s => s > 0).length}`);
Browser Usage
<script type="module">
import init, { HyperdimensionalComputing } from '@ruvector/nervous-system-wasm';
await init();
const hdc = new HyperdimensionalComputing({ dimensions: 10000, numClasses: 3 });
hdc.train('A', new Float32Array([1, 0, 0]));
hdc.train('B', new Float32Array([0, 1, 0]));
const result = hdc.classify(new Float32Array([0.9, 0.1, 0]));
console.log(result.label); // 'A'
</script>
Key API
HyperdimensionalComputing
Ultra-fast classification using high-dimensional binary vectors.
const hdc = new HyperdimensionalComputing(config: HDCConfig);
HDCConfig:
| Parameter | Type | Default | Description |
|---|---|---|---|
dimensions | number | 10000 | Hypervector dimensionality |
numClasses | number | required | Number of classes |
encoding | 'random-projection' | 'thermometer' | 'level' | 'random-projection' | Encoding method |
similarity | 'cosine' | 'hamming' | 'cosine' | Similarity metric |
hdc.train(label: string, features: Float32Array): void
hdc.classify(features: Float32Array): ClassifyResult
hdc.batchClassify(batch: Float32Array[]): ClassifyResult[]
hdc.encode(features: Float32Array): Float32Array // Raw hypervector
hdc.retrain(): void // Re-optimize class prototypes
hdc.accuracy(testData: Array<{ features: Float32Array; label: string }>): number
ClassifyResult: { label: string; confidence: number; scores: Record<string, number> }
BTSP
Behavioral Time-Scale Synaptic Plasticity for one-shot learning.
const btsp = new BTSP(config: BTSPConfig);
BTSPConfig:
| Parameter | Type | Default | Description |
|---|---|---|---|
inputSize | number | required | Input neurons |
outputSize | number | required | Output neurons |
plasticityRate | number | 0.1 | Learning rate |
plateauDuration | number | 10 | Plateau potential duration |
decayRate | number | 0.01 | Weight decay |
btsp.learn(input: Float32Array, target: Float32Array): void
btsp.forward(input: Float32Array): Float32Array
btsp.correlation(output: Float32Array, target: Float32Array): number
btsp.weights(): Float32Array
btsp.reset(): void
SpikingNetwork
Spiking Neural Network with configurable neuron models.
const snn = new SpikingNetwork(config: SNNConfig);
SNNConfig:
| Parameter | Type | Default | Description |
|---|---|---|---|
neurons | number | 1000 | Total neurons |
excitatory | number | 800 | Excitatory count |
inhibitory | number | 200 | Inhibitory count |
connectivity | number | 0.1 | Connection probability |
model | 'izhikevich' | 'lif' | 'hodgkin-huxley' | 'izhikevich' | Neuron model |
dt | number | 0.5 | Timestep (ms) |
snn.step(input: Float32Array): Float32Array // One timestep, returns spikes
snn.stepN(input: Float32Array, n: number): Float32Array[] // N timesteps
snn.membranePotentials(): Float32Array
snn.firingRates(): Float32Array
snn.reset(): void