Vectorized Backend¶
NumPy-vectorized force computation for 10-16x speedup without Cython. Uses broadcasting for pairwise operations on (N, dim) arrays.
This module is used automatically when backend="vectorized" or when backend="auto" and no Cython extension is compiled.
Note
The vectorized backend does not support Barnes-Hut approximation ā all repulsion is O(n²) pairwise. For graphs over ~5000 nodes, the Cython backend with Barnes-Hut is significantly faster.
Functions¶
apply_repulsion
¶
Apply repulsion forces between all node pairs.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
positions
|
ndarray of shape (N, dim)
|
|
required |
masses
|
ndarray of shape (N,)
|
|
required |
coefficient
|
float(scalingRatio)
|
|
required |
Returns:
| Name | Type | Description |
|---|---|---|
forces |
ndarray of shape (N, dim)
|
|
Source code in fa2/fa2util_vectorized.py
apply_repulsion_adjustSizes
¶
Apply anti-collision repulsion between all node pairs.
Source code in fa2/fa2util_vectorized.py
apply_gravity
¶
Apply gravitational forces toward origin.
Returns:
| Name | Type | Description |
|---|---|---|
forces |
ndarray of shape (N, dim)
|
|
Source code in fa2/fa2util_vectorized.py
apply_attraction
¶
apply_attraction(positions, edge_sources, edge_targets, edge_weights, masses, distributedAttraction, coefficient, edgeWeightInfluence, linLogMode=False, adjustSizes=False, sizes=None)
Apply attraction forces along all edges.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
positions
|
ndarray of shape (N, dim)
|
|
required |
edge_sources
|
ndarray of shape (M,), int
|
|
required |
edge_targets
|
ndarray of shape (M,), int
|
|
required |
edge_weights
|
ndarray of shape (M,)
|
|
required |
masses
|
ndarray of shape (N,)
|
|
required |
distributedAttraction
|
bool
|
|
required |
coefficient
|
float
|
|
required |
edgeWeightInfluence
|
float
|
|
required |
linLogMode
|
bool
|
|
False
|
adjustSizes
|
bool
|
|
False
|
sizes
|
ndarray of shape (N,) or None
|
|
None
|
Returns:
| Name | Type | Description |
|---|---|---|
forces |
ndarray of shape (N, dim)
|
|
Source code in fa2/fa2util_vectorized.py
adjustSpeedAndApplyForces
¶
adjustSpeedAndApplyForces(positions, forces, old_forces, masses, speed, speedEfficiency, jitterTolerance, adjustSizes=False, sizes=None)
Adjust speed and apply forces to positions.
Returns:
| Name | Type | Description |
|---|---|---|
new_positions |
ndarray of shape (N, dim)
|
|
speed |
float
|
|
speedEfficiency |
float
|
|