pub mod cg_coefficients;
pub mod egnn;
pub mod se3_transformer;
pub use cg_coefficients::{clebsch_gordan, tensor_product, CgTable};
pub use egnn::{Activation, Egnn, EgnnConfig, EgnnLayer};
pub use se3_transformer::{
EquivariantFeatures, Se3Config, Se3Layer, Se3Transformer, SphericalHarmonics,
};
#[derive(Debug, Clone)]
pub struct EquivariantNodeFeatures {
pub scalars: Vec<f64>,
pub vectors: Vec<[f64; 3]>,
pub n_nodes: usize,
}
impl EquivariantNodeFeatures {
pub fn new(n_nodes: usize, n_scalars_per_node: usize) -> Self {
Self {
scalars: vec![0.0; n_nodes * n_scalars_per_node],
vectors: vec![[0.0; 3]; n_nodes],
n_nodes,
}
}
}