Message Passing Module
Fixes #515
Tentative RoadMap
- [ ]
MessagePassingInterface: handles the shared methods and attributes, can be overridden from MessagePassing from PyG. Possible additional features it might contain are if the graph is equivariant/invariant, the associated symmetry group, and others ... - [ ]
InteractionNetworkBlock: implements the interaction network (See sec.2 of https://arxiv.org/pdf/1704.01212) - [ ]
DeepTensorNetworkBlock: implements the Deep Tensor Neural Networks block (See sec.2 of https://arxiv.org/pdf/1704.01212) - [ ]
EGNNBlock: implements the E(n) Equivariant Graph Neural Network block(See sec.3 of https://arxiv.org/pdf/2102.09844) - [ ]
RadialFieldBlock: implements the radial field network block (See Tab1. of https://arxiv.org/pdf/2102.09844) - [ ]
TensorFieldBlock: implements the tensor field block (See Tab1. of https://arxiv.org/pdf/2102.09844) - [ ]
SchnetBlock: implements the schnet block (See Tab1. of https://arxiv.org/pdf/2102.09844)
Code Coverage Summary
Filename Stmts Miss Cover Missing
----------------------------------------------------------- ------- ------ ------- ---------------------------------------------------------------------------------------------------------------------
__init__.py 7 0 100.00%
graph.py 114 11 90.35% 99-100, 112, 124, 126, 142, 144, 166, 169, 182, 271
label_tensor.py 251 32 87.25% 81, 121, 144-148, 165, 177, 182, 188-193, 273, 280, 332, 334, 348, 444-447, 490, 537, 629, 649-651, 664-673, 688, 710
operator.py 72 5 93.06% 250-268, 459
operators.py 6 6 0.00% 3-12
plotter.py 1 1 0.00% 3
trainer.py 75 6 92.00% 195-204, 293, 314, 318, 322
utils.py 60 8 86.67% 113, 150, 153, 156, 192-195
adaptive_function/__init__.py 3 0 100.00%
adaptive_function/adaptive_function.py 55 0 100.00%
adaptive_function/adaptive_function_interface.py 51 6 88.24% 98, 141, 148-151
adaptive_functions/__init__.py 6 6 0.00% 3-12
callback/__init__.py 5 0 100.00%
callback/linear_weight_update_callback.py 28 1 96.43% 63
callback/optimizer_callback.py 22 1 95.45% 34
callback/processing_callback.py 49 5 89.80% 42-43, 73, 168, 171
callback/refinement/__init__.py 3 0 100.00%
callback/refinement/r3_refinement.py 28 1 96.43% 88
callback/refinement/refinement_interface.py 50 5 90.00% 32, 59, 67, 72, 78
callbacks/__init__.py 6 6 0.00% 3-12
condition/__init__.py 7 0 100.00%
condition/condition.py 35 8 77.14% 23, 127-128, 131-132, 135-136, 151
condition/condition_interface.py 37 4 89.19% 31, 76, 100, 122
condition/data_condition.py 26 1 96.15% 56
condition/domain_equation_condition.py 19 0 100.00%
condition/input_equation_condition.py 44 1 97.73% 129
condition/input_target_condition.py 44 1 97.73% 125
data/__init__.py 3 0 100.00%
data/data_module.py 201 22 89.05% 41-52, 132, 172, 193, 232, 313-317, 323-327, 399, 466, 546, 637, 639
data/dataset.py 85 7 91.76% 42, 123-126, 256, 307
domain/__init__.py 10 0 100.00%
domain/cartesian.py 112 10 91.07% 37, 47, 75-76, 92, 97, 103, 246, 256, 264
domain/difference_domain.py 25 2 92.00% 54, 87
domain/domain_interface.py 20 5 75.00% 37-41
domain/ellipsoid.py 104 24 76.92% 52, 56, 127, 250-257, 269-282, 286-287, 290, 295
domain/exclusion_domain.py 28 1 96.43% 86
domain/intersection_domain.py 28 1 96.43% 85
domain/operation_interface.py 26 1 96.15% 88
domain/simplex.py 72 14 80.56% 62, 207-225, 246-247, 251, 256
domain/union_domain.py 25 1 96.00% 43
equation/__init__.py 4 0 100.00%
equation/equation.py 11 0 100.00%
equation/equation_factory.py 24 10 58.33% 37, 62-75, 97-110, 132-145
equation/equation_interface.py 4 0 100.00%
equation/system_equation.py 22 0 100.00%
geometry/__init__.py 7 7 0.00% 3-15
loss/__init__.py 7 0 100.00%
loss/loss_interface.py 17 2 88.24% 45, 51
loss/lp_loss.py 15 0 100.00%
loss/ntk_weighting.py 26 0 100.00%
loss/power_loss.py 15 0 100.00%
loss/scalar_weighting.py 16 0 100.00%
loss/weighting_interface.py 6 0 100.00%
model/__init__.py 10 0 100.00%
model/average_neural_operator.py 31 2 93.55% 73, 82
model/deeponet.py 93 13 86.02% 187-190, 209, 240, 283, 293, 303, 313, 323, 333, 488, 498
model/feed_forward.py 89 11 87.64% 58, 195, 200, 278-292
model/fourier_neural_operator.py 78 10 87.18% 96-100, 110, 155-159, 218, 220, 242, 342
model/graph_neural_operator.py 40 2 95.00% 58, 60
model/kernel_neural_operator.py 34 6 82.35% 83-84, 103-104, 123-124
model/low_rank_neural_operator.py 27 2 92.59% 89, 98
model/multi_feed_forward.py 12 5 58.33% 25-31
model/spline.py 89 37 58.43% 30, 41-66, 69, 128-132, 135, 159-177, 180
model/block/__init__.py 12 0 100.00%
model/block/average_neural_operator_block.py 12 0 100.00%
model/block/convolution.py 64 13 79.69% 77, 81, 85, 91, 97, 111, 114, 151, 161, 171, 181, 191, 201
model/block/convolution_2d.py 146 27 81.51% 155, 162, 282, 314, 379-433, 456
model/block/embedding.py 48 7 85.42% 93, 143-146, 155, 168
model/block/fourier_block.py 31 0 100.00%
model/block/gno_block.py 22 4 81.82% 73-77, 87
model/block/integral.py 18 4 77.78% 22-25, 71
model/block/low_rank_block.py 24 0 100.00%
model/block/orthogonal.py 37 0 100.00%
model/block/pod_block.py 73 10 86.30% 55-58, 70, 83, 113, 148-153, 187, 212
model/block/rbf_block.py 179 25 86.03% 18, 42, 53, 64, 75, 86, 97, 223, 280, 282, 298, 301, 329, 335, 363, 367, 511-524
model/block/residual.py 46 0 100.00%
model/block/spectral.py 83 4 95.18% 132, 140, 262, 270
model/block/stride.py 28 7 75.00% 55, 58, 61, 67, 72-74
model/block/utils_convolution.py 22 3 86.36% 58-60
model/block/message_passing/__init__.py 6 0 100.00%
model/block/message_passing/deep_tensor_network_block.py 21 0 100.00%
model/block/message_passing/en_equivariant_network_block.py 39 0 100.00%
model/block/message_passing/interaction_network_block.py 23 0 100.00%
model/block/message_passing/radial_field_network_block.py 20 0 100.00%
model/block/message_passing/schnet_block.py 25 0 100.00%
model/layers/__init__.py 6 6 0.00% 3-12
optim/__init__.py 5 0 100.00%
optim/optimizer_interface.py 7 0 100.00%
optim/scheduler_interface.py 7 0 100.00%
optim/torch_optimizer.py 14 0 100.00%
optim/torch_scheduler.py 19 2 89.47% 5-6
problem/__init__.py 6 0 100.00%
problem/abstract_problem.py 117 18 84.62% 39-40, 59-70, 115-120, 149, 161, 179, 253, 257, 286
problem/inverse_problem.py 22 0 100.00%
problem/parametric_problem.py 8 1 87.50% 29
problem/spatial_problem.py 8 0 100.00%
problem/time_dependent_problem.py 8 0 100.00%
problem/zoo/__init__.py 8 0 100.00%
problem/zoo/advection.py 33 7 78.79% 36-38, 52, 108-110
problem/zoo/allen_cahn.py 20 6 70.00% 20-22, 34-36
problem/zoo/diffusion_reaction.py 29 5 82.76% 94-104
problem/zoo/helmholtz.py 30 6 80.00% 36-42, 103-107
problem/zoo/inverse_poisson_2d_square.py 31 0 100.00%
problem/zoo/poisson_2d_square.py 19 3 84.21% 65-70
problem/zoo/supervised_problem.py 11 0 100.00%
solver/__init__.py 6 0 100.00%
solver/garom.py 107 2 98.13% 129-130
solver/solver.py 188 10 94.68% 192, 215, 287, 290-291, 350, 432, 515, 556, 562
solver/ensemble_solver/__init__.py 4 0 100.00%
solver/ensemble_solver/ensemble_pinn.py 23 1 95.65% 104
solver/ensemble_solver/ensemble_solver_interface.py 27 0 100.00%
solver/ensemble_solver/ensemble_supervised.py 9 0 100.00%
solver/physics_informed_solver/__init__.py 8 0 100.00%
solver/physics_informed_solver/causal_pinn.py 47 3 93.62% 157, 166-167
solver/physics_informed_solver/competitive_pinn.py 58 0 100.00%
solver/physics_informed_solver/gradient_pinn.py 17 0 100.00%
solver/physics_informed_solver/pinn.py 18 0 100.00%
solver/physics_informed_solver/pinn_interface.py 47 1 97.87% 130
solver/physics_informed_solver/rba_pinn.py 35 3 91.43% 155-158
solver/physics_informed_solver/self_adaptive_pinn.py 90 3 96.67% 315-318
solver/supervised_solver/__init__.py 4 0 100.00%
solver/supervised_solver/reduced_order_model.py 24 1 95.83% 137
solver/supervised_solver/supervised.py 7 0 100.00%
solver/supervised_solver/supervised_solver_interface.py 25 0 100.00%
solvers/__init__.py 6 6 0.00% 3-12
solvers/pinns/__init__.py 6 6 0.00% 3-12
TOTAL 4663 504 89.19%
Results for commit: fbc0382cc50d211dd3c1bcaa9406b0fd49794902
Minimum allowed coverage is 80.123%
:recycle: This comment has been updated with latest results
Hi @AleDinve @GiovanniCanali ! How is it going with this?
Hi @AleDinve @GiovanniCanali ! How is it going with this?
Hi @dario-coscia, I need to fix some minor issues with InteractionNetwork, and then I will fix EGNN. Also, tests will be implemented. @AleDinve agreed to take care of the remaining classes.
Hi @AleDinve @GiovanniCanali ! How is it going with this?
Hi @dario-coscia, I need to fix some minor issues with InteractionNetwork, and then I will fix EGNN. Also, tests will be implemented. @AleDinve agreed to take care of the remaining classes.
Yes, I confirm, I will have a tentative implementation of the classes assigned to me by the weekend.
@dario-coscia loops and hyperlinks have been fixed.
There are two last things left:
- fix the
forwardof the Equivariant Network. I will take care of it asap. - implement equivariance tests for the very same model.
Fixed EGNN and added equivariance test. Ready for final review @dario-coscia.
❤️