Conversation
|
Check out this pull request on See visual diffs & provide feedback on Jupyter Notebooks. Powered by ReviewNB |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #338 +/- ##
==========================================
- Coverage 94.18% 94.06% -0.12%
==========================================
Files 185 207 +22
Lines 6690 8730 +2040
==========================================
+ Hits 6301 8212 +1911
- Misses 389 518 +129 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
…ectDestinationFEs - Add TestSelectDestinationFEs to test_CombinedFEs.py (forward, __call__, missing-key error, None x) - Add test_PrecomputeKHopFeatures.py covering repr, max_hop decrement, dim-1 and dim-2 forward paths, use_initial_features, and output type - Add TestTBEvaluatorMultioutput to test_evaluator.py: init, update/compute, perfect predictions, reset - Add TestDatasetLossMultioutput to test_dataset_loss.py: init, repr, forward_criterion, forward with model_out dict - Extend test_adme_loader.py with mocked TDC/smiles2graph tests covering classification labels, regression labels, node/edge features, and split-index partitioning Co-authored-by: Cursor <cursoragent@cursor.com>
…dices - Add test_DifferentFeatureTransforms.py covering DifferentGausFeatures, DifferentGausFeaturesSANN, and DifferentZeroFeaturesSANN (__init__, __repr__, forward, __call__, shape checks) - Add test_KeepSelectedTargetIndices.py covering __init__, __repr__, forward column selection and __call__ - Extend test_CombinedPSEs.py with TestCombinedPSEsEdgeCases covering unsupported-encoding ValueError, CUDA fallback to CPU, and preprocessor_device override - Fix __repr__ bug in DifferentGausFeaturesSANN and DifferentZeroFeaturesSANN: list() cannot wrap an int; use self.dimensions directly Co-authored-by: Cursor <cursoragent@cursor.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
HOPSE branch merge
This release merges the
hopsebranch intomain. It adds the HOPSE model, several new datasets, a suite of feature/positional/structural encoding transforms, and a number of internal infrastructure improvements. Most user-visible behaviour is backwards compatible; see "Behaviour changes" below for the few exceptions.Added
topobench.nn.backbones.combinatorial.hopse.HOPSEandHOPSELayer.topobench.nn.encoders.hopse_encoder.HOPSEFeatureEncoder, with optionalSimpleAtomEncoder/SimpleBondEncoderfor OGB-style molecule inputs.topobench.nn.wrappers.combinatorial.hopse_wrapper.HOPSEWrapper.topobench.nn.readouts.hopse.HOPSEReadout(supports both graph- and node-level tasks).configs/experiment/hopse_*.yaml; several reference Hydra config groups that still need to be added (tracked viaxfailintest/pipeline/test_hopse_pipeline.py).topobench.data.loaders.graph.adme_datasets._ADMEDataset+ADMEDatasetLoader(TDC ADME family, both classification and regression splits).topobench.data.loaders.graph.graph_universe_loader.GraphUniverseDatasetLoader(synthetic graphs via thegraph_universepackage; configs atconfigs/dataset/graph/graphuniverse_*.yaml).MoleculeDatasetLoader._collapse_qm9_targetscollapsing path for selecting individual QM9 targets.topobench/transforms/data_manipulations/:hk_feature_encodings.HKFE,hkdiag_encodings.HKdiagSE),khop_feature_encodings.KHopFE,precompute_khop_features),electrostatic_encodings.ElectrostaticPE),hopse_ps_information.HOPSE_PE_Information,combine_hopse2cell_transform.HOPSE2CellFeatures,add_gpse_information),rename_fields.RenameFields,barycentric_subdivision.topobench.utils.config_resolversdriving HOPSE configuration:get_routes_from_neighborhoods,get_pse_dimensions,get_fes_dimensions,get_all_encoding_dimensions,check_pses_in_transforms,check_fes_in_transforms,infer_in_khop_feature_dim,infer_in_hasse_graph_agg_dim,infer_list_length,infer_list_length_plus_one,infer_topotune_num_cell_dimensions,set_preserve_edge_attr,get_list_element.TBEvaluatornow understandstask="multioutput classification"with per-output metric naming (e.g.accuracy-0,f1-1);DatasetLossaccepts MSE on multi-output classification.lint.ymlnow runsruff format --checkand a fullpre-commitjob (numpydoc-validation, end-of-file/trailing-whitespace, etc.);codecov.ymladds an 80% patch-coverage target and a 1% project-coverage threshold;test.ymlflipsfail_ci_if_error: trueon the Codecov upload.Changed
pyproject.toml: replaced the legacyrdkit-pypimirror with the canonicalrdkitwheel.topobench/run.py:cfg.transformsis now Hydra-instantiated before being passed to thePreProcessor(the preprocessor still accepts the raw config for compatibility).preprocessor_timemetric when preprocessing runs.log_every_n_steps=1(Lightning requires ≥1; previously0, which was fragile).delete_checkpoint_after_testconfig flag (default off) to clean up checkpoint files at the end of a rerun.topobench/data/preprocessor/preprocessor.py:FileLockaround the processed-data directory makes concurrent preprocessing safe.tqdmprogress bar over the transform pipeline.preprocessing_timeattribute and propagation ofsplit_idx_list.preprocessor_device: cudakwarg (defaults to CPU; CPU↔GPUToDeviceops are inserted automatically and the pipeline always returns to CPU before saving).HOPSEFeatureEncodernow uses the non-deprecatednorm="batch_norm"argument and castsproj_dropouttofloatfortorch_geometric.nn.models.MLP.Behaviour changes (non-backwards-compatible)
PreProcessor.processed_dirno longer appends/processedwhen transforms are applied; the property simply returnsself.root, which already encodes the full preprocessing-specific path (<data_dir>/<repo_name>/<params_hash>). Cached datasets generated bymainwill therefore not be re-used – delete the old preprocessed cache after upgrade.CellCycleLiftingnow sorts the cycles it produces deterministically. The numericalincidence_2values are unchanged but the column ordering may differ frommain-branch outputs (column-order-invariant comparison is required if you cached fixtures).Dependencies
yacs==0.1.8,PyTDC==1.1.15,rdkit(replacesrdkit-pypi),setuptools>=69,<82(PyTDC still importspkg_resourceswhichsetuptools>=82removed),filelock.>=3.11, <3.12.