Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
30a68eb
:bug: Fix typo in dimenet++ config key which caused a silent bug
tonyzamyatin Sep 29, 2025
03ceeb9
:sparkles: Refactor DimeNet implementation and add DimeReaction
tonyzamyatin Sep 29, 2025
190d549
:sparkles: Add support for data augmentations
tonyzamyatin Sep 30, 2025
941a550
:hammer: Move partition specifc subsampling and transformation logic …
tonyzamyatin Oct 6, 2025
4d5c2da
:sparkles: Add property system in favor of dataset subclasses for com…
tonyzamyatin Oct 6, 2025
83ab240
:bug: Improve error handling for saving predictions in multi-partitio…
tonyzamyatin Oct 6, 2025
e369684
:sparkles: Enhance SupervisedRoutine to support multiple test dataloa…
tonyzamyatin Oct 6, 2025
2fed79b
:wrench: Update configs
tonyzamyatin Oct 6, 2025
2a8dcfc
:white_check_mark: Add config integration tests and restructure test …
tonyzamyatin Oct 6, 2025
28d7594
:heavy_plus_sign: Add pytest-order as developer dep
tonyzamyatin Oct 6, 2025
a746f1d
:green_heart: Refactor CI workflow to separate unit and integration t…
tonyzamyatin Oct 6, 2025
7ef3fc6
:sparkles: Add TS 3D Gaussian noise transform and augmentation
tonyzamyatin Oct 6, 2025
8023fe2
:wrench: Update pytest-order dependency to version 1.3.0
tonyzamyatin Oct 6, 2025
80e0c4c
:hammer: Add support for passing augmentations as dict to data module
tonyzamyatin Oct 7, 2025
b257415
:hammer: Improve handling of multiple test dataloaders across main, r…
tonyzamyatin Oct 7, 2025
291d85c
:sparkles: Add configs for DimeReaction TS sensitivity experiments
tonyzamyatin Oct 7, 2025
33568ad
:bug: Fix defaults list syntax for props in graph experiment
tonyzamyatin Oct 9, 2025
c63c0a5
:heavy_plus_sign: Add pytest-dependency to deps
tonyzamyatin Oct 17, 2025
bad52d4
:white_check_mark: Add experiment config tests and clean up integrat…
tonyzamyatin Oct 17, 2025
2e8ca59
:bug: Fix graph and token experiment configs
tonyzamyatin Oct 17, 2025
11e3931
:wrench: Update .gitignore to exclude debug configs
tonyzamyatin Oct 17, 2025
c2305f9
Merge remote-tracking branch 'origin/main' into experiment/dimereaction
tonyzamyatin Jan 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions conf/data_module/augmentations/ts_3d_jitter.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@

_target_: chemtorch.components.augmentation.TS3DJitterAugmentation
jitter:
_target_: chemtorch.components.transform.TS3DJitterTransform
sigma: 0.1
clip: 0.5
48 changes: 48 additions & 0 deletions conf/experiment/dimereaction_ts_sensitivity.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# @package _global_
defaults:
- /data_module/data_pipeline: rdb7_fwd_xyz
- /data_module/representation: reaction_3d_graph
- /data_module/dataloader_factory: pyg_dataloader
- /data_module/transform/ts_3d_jitter@data_module.transform.test.ts_3d_jitter
- /model: dimereaction
- /routine: regression
- /props/label_mean@props.label_mean
- /props/label_std@props.label_std
- _self_

# LOGGING (Weight and Biases)
log: true
project_name: chemtorch
group_name: dimereaction_ts_sensitivity
run_name: dimereaction

# Prediction and checkpoint saving
save_dir: experiment/dimereaction_ts_sensitivity/${run_name}/seed_${seed}_${now:%Y-%m-%d_%H-%M-%S}
save_predictions_for: all
predictions_save_dir: ${save_dir}/predictions
trainer.enable_checkpointing: true
trainer.checkpoint_callback.dirpath: ${save_dir}/checkpoints

# INITIALIZATION
seed: 0

tasks:
- fit
- test

trainer:
max_epochs: 100

# HYPERPARAMETERS
routine:
optimizer:
lr: 0.0020537287319414765
weight_decay: 2.5493166021321106e-05
data_module:
dataloader:
batch_size: 32

model:
hidden_channels: 128
num_blocks: 4
cutoff: 5.528600558772409
7 changes: 7 additions & 0 deletions conf/experiment/dimereaction_ts_sensitivity_augmented.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# @package _global_
defaults:
- dimereaction_ts_sensitivity
- /data_module/augmentations/ts_3d_jitter@data_module.augmentations.ts_3d_jitter
- _self_

run_name: dimereaction_augmented
35 changes: 35 additions & 0 deletions src/chemtorch/components/augmentation/ts_3d_jitter.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
from typing import List, Optional
import torch
from torch._tensor import Tensor

from chemtorch.components.transform.graph_transform.ts_3d_jitter import TS3DJitterTransform

try:
# Python ≥ 3.12
from typing import override # type: ignore
except ImportError:
# Python < 3.12
from typing_extensions import override # type: ignore

from chemtorch.components.augmentation.abstract_augmentation import AbstractAugmentation
from chemtorch.components.representation.graph.reaction_3d_graph import Reaction3DData


class TS3DJitterAugmentation(AbstractAugmentation[Reaction3DData]):
"""
Apply Gaussian noise to the 3D coordinates of the transition state.
"""

def __init__(self, jitter: TS3DJitterTransform, num_augmentations: int = 1):
self.jitter = jitter
self.num_augmentations = num_augmentations

@override
def _augment(self, obj: Reaction3DData, label: Optional[Tensor] = None) -> List[tuple[Reaction3DData, Optional[Tensor]]]:
augmented_list = []

for _ in range(self.num_augmentations):
augmented_data = self.jitter(obj.clone())
augmented_list.append((augmented_data, label))

return augmented_list
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
from .dummy import DummyNodeTransform
from .randomwalkpe import RandomWalkPETransform
from .ts_3d_jitter import TS3DJitterTransform
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import torch

try:
# Python ≥ 3.12
from typing import override # type: ignore
except ImportError:
# Python < 3.12
from typing_extensions import override # type: ignore

from chemtorch.components.representation.graph.reaction_3d_graph import Reaction3DData
from chemtorch.components.transform.abstract_transform import AbstractTransform


class TS3DJitterTransform(AbstractTransform[Reaction3DData]):
"""
Apply Gaussian noise to the 3D coordinates of the transition state.

The noise is sampled from a normal distribution with mean 0 and standard deviation defined by `sigma`.
The noise is clipped to the range [-clip, clip] to prevent excessive perturbations.
"""

def __init__(self, sigma: float = 0.1, clip: float = 0.5):
self.sigma = sigma
self.clip = clip

def _make_jitter(self, pos: torch.Tensor) -> torch.Tensor:
return torch.clamp(
torch.randn_like(pos) * self.sigma, -self.clip, self.clip
)

@override
def __call__(self, obj: Reaction3DData, **kwargs) -> Reaction3DData:
def _make_jitter(pos: torch.Tensor) -> torch.Tensor:
return torch.clamp(
torch.randn_like(pos) * self.sigma, -self.clip, self.clip
)

ts_jitter = _make_jitter(obj.pos_ts)

obj.pos_ts += ts_jitter

return obj
55 changes: 55 additions & 0 deletions test/test_integration/fixtures/baselines.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# Reference baseline values for saved config tests
#
# This file defines expected validation losses and test configuration for each model.
# Timeout values fallback to presets.py defaults (PRECOMPUTE_TIMEOUT=30s, DEFAULT_TIMEOUT=60s)
# Only specify timeout values when they differ from defaults.

# Configuration defaults
defaults:
tolerance: 1.1e-5 # Tolerance for prediction comparisons

# Model-specific baselines
models:
atom_han:
val_loss:
epoch_1: 1.34
epoch_3: 1.39
timeout:
precompute: 10
per_epoch: 60
reference_predictions:
epoch_1: "rdb7_subsample_0.01_atom_han_seed_0_epoch_1.csv"
epoch_3: "rdb7_subsample_0.01_atom_han_seed_0_epoch_3.csv"

cgr_dmpnn:
val_loss:
epoch_1: 1.36
epoch_3: 1.49
timeout:
precompute: 10
per_epoch: 120
reference_predictions:
epoch_1: "rdb7_subsample_0.01_cgr_dmpnn_seed_0_epoch_1.csv"
epoch_3: "rdb7_subsample_0.01_cgr_dmpnn_seed_0_epoch_3.csv"

drfp_mlp:
val_loss:
epoch_1: 1.30
epoch_3: 1.34
timeout:
precompute: 30
per_epoch: 30
reference_predictions:
epoch_1: "rdb7_subsample_0.01_drfp_mlp_seed_0_epoch_1.csv"
epoch_3: "rdb7_subsample_0.01_drfp_mlp_seed_0_epoch_3.csv"

dimereaction:
val_loss:
epoch_1: 1.37
epoch_3: 1.16
timeout:
precompute: 20
per_epoch: 80
reference_predictions:
epoch_1: "rdb7_subsample_0.01_dimereaction_seed_0_epoch_1.csv"
epoch_3: "rdb7_subsample_0.01_dimereaction_seed_0_epoch_3.csv"
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
label,smiles,prediction
92.62519,[C:1]1([H:7])([H:8])[C@:2]2([H:9])[C:3]([H:10])([H:11])[C:4]([H:12])([H:13])[C:5]([H:14])([H:15])[C@:6]12[H:16]>>[C:1]1([H:7])([H:8])[C@:2]([C:3]([C:4]([H:12])([H:13])[H:14])([H:10])[H:11])([H:9])[C@:6]1([C:5][H:15])[H:16],81.07571
90.15481,[C:1]([C:2]([C:3]1([O:4][H:12])[C:5]([H:13])([H:14])[C:6]1([H:15])[H:16])([H:10])[H:11])([H:7])([H:8])[H:9]>>[C:1]([C:2]([C:6]([C:5]([C:3][O:4][H:12])([H:13])[H:14])([H:15])[H:16])([H:10])[H:11])([H:7])([H:8])[H:9],81.091736
75.21907,[C:1]([C:2]1([O:3][H:10])[C:4]([H:11])([H:12])[O:5][C:6]1([H:13])[H:14])([H:7])([H:8])[H:9]>>[C:1]([C:2](=[O:3])[C:4]([O:5][C:6]([H:10])([H:13])[H:14])([H:11])[H:12])([H:7])([H:8])[H:9],81.06443
47.00517,[N:1]([c:2]1[n:3][c:4]([O:5][H:10])[c:6]([H:11])[n:7]1[H:12])([H:8])[H:9]>>[N:1]([C@@:2]1([H:12])[N:3]=[C:4]([O:5][H:10])[C:6]([H:11])=[N:7]1)([H:8])[H:9],81.176216
86.62878,[C:1]1([H:7])([H:8])[N:2]([H:9])[C@:3]1([C@@:4]1([H:11])[C:5]([H:12])([H:13])[N:6]1[H:14])[H:10]>>[C:1](=[N:2][H:9])([H:7])[H:8].[C:3]([C@@:4]1([H:11])[C:5]([H:12])([H:13])[N:6]1[H:14])[H:10],81.20128
114.48725,[C:1](#[C:2][c:3]1[c:4]([H:9])[n:5]([H:10])[n:6][c:7]1[H:11])[H:8]>>[C+:1]#[C:2][C:3]1=[C:4]([H:9])[N:5]([H:10])[N-:6][C:7]1([H:8])[H:11],81.16353
67.50583,[O:1]([C@@:2]1([H:8])[C:3]([H:9])([H:10])[C:4]([H:11])([H:12])[C@:5]1([O:6][H:14])[H:13])[H:7]>>[C:2]1([H:8])=[C:3]([H:9])[C:4]([H:11])([H:12])[C@:5]1([O:6][H:14])[H:13].[O:1]([H:7])[H:10],81.120895
76.88764,[C:1]([N:2]([C:3](=[O:4])[H:10])[C:5](=[O:6])[H:11])([H:7])([H:8])[H:9]>>[C-:3]#[O+:4].[C:1]([N:2]([C:5](=[O:6])[H:11])[H:10])([H:7])([H:8])[H:9],81.04735
136.10961,[O:1]=[C:2]1[C:3]([H:8])([H:9])[C:4]([C:6]#[N:7])([H:10])[C:5]1([H:11])[H:12]>>[O:1]=[C:6]=[N:7][C:4]1([H:10])[C:3]([H:8])([H:9])[C:2][C:5]1([H:11])[H:12],81.06836
99.43027,[N:1]#[C:2][C@@:3]1([H:7])[C:4]([H:8])([H:9])[C:5]([H:10])([H:11])[N:6]1[H:12]>>[N:1]#[C:2][C@@:3]1([H:7])[C-:4]([H:9])[N+:6]1([C:5]([H:8])([H:10])[H:11])[H:12],81.16888
54.73362,[C:1]([C@@:2]([O:3][H:11])([C@@:4]1([H:12])[C:5]([H:13])([H:14])[O:6]1)[H:10])([H:7])([H:8])[H:9]>>[C:1]([C@@:2]1([H:10])[O:3][C@@:4]1([C:5]([O:6][H:11])([H:13])[H:14])[H:12])([H:7])([H:8])[H:9],81.1118
115.48569,[C:1]([C:2]([c:3]1[c:4]([H:13])[n:5]([H:14])[n:6][n:7]1)([H:11])[H:12])([H:8])([H:9])[H:10]>>[C:1]([C:2]([C:4](=[C:3]=[N:7][N:6]=[N:5][H:14])[H:13])([H:11])[H:12])([H:8])([H:9])[H:10],81.07801
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
label,smiles,prediction
92.62519,[C:1]1([H:7])([H:8])[C@:2]2([H:9])[C:3]([H:10])([H:11])[C:4]([H:12])([H:13])[C:5]([H:14])([H:15])[C@:6]12[H:16]>>[C:1]1([H:7])([H:8])[C@:2]([C:3]([C:4]([H:12])([H:13])[H:14])([H:10])[H:11])([H:9])[C@:6]1([C:5][H:15])[H:16],82.991585
90.15481,[C:1]([C:2]([C:3]1([O:4][H:12])[C:5]([H:13])([H:14])[C:6]1([H:15])[H:16])([H:10])[H:11])([H:7])([H:8])[H:9]>>[C:1]([C:2]([C:6]([C:5]([C:3][O:4][H:12])([H:13])[H:14])([H:15])[H:16])([H:10])[H:11])([H:7])([H:8])[H:9],82.98281
75.21907,[C:1]([C:2]1([O:3][H:10])[C:4]([H:11])([H:12])[O:5][C:6]1([H:13])[H:14])([H:7])([H:8])[H:9]>>[C:1]([C:2](=[O:3])[C:4]([O:5][C:6]([H:10])([H:13])[H:14])([H:11])[H:12])([H:7])([H:8])[H:9],82.76704
47.00517,[N:1]([c:2]1[n:3][c:4]([O:5][H:10])[c:6]([H:11])[n:7]1[H:12])([H:8])[H:9]>>[N:1]([C@@:2]1([H:12])[N:3]=[C:4]([O:5][H:10])[C:6]([H:11])=[N:7]1)([H:8])[H:9],82.400604
86.62878,[C:1]1([H:7])([H:8])[N:2]([H:9])[C@:3]1([C@@:4]1([H:11])[C:5]([H:12])([H:13])[N:6]1[H:14])[H:10]>>[C:1](=[N:2][H:9])([H:7])[H:8].[C:3]([C@@:4]1([H:11])[C:5]([H:12])([H:13])[N:6]1[H:14])[H:10],82.82114
114.48725,[C:1](#[C:2][c:3]1[c:4]([H:9])[n:5]([H:10])[n:6][c:7]1[H:11])[H:8]>>[C+:1]#[C:2][C:3]1=[C:4]([H:9])[N:5]([H:10])[N-:6][C:7]1([H:8])[H:11],82.331924
67.50583,[O:1]([C@@:2]1([H:8])[C:3]([H:9])([H:10])[C:4]([H:11])([H:12])[C@:5]1([O:6][H:14])[H:13])[H:7]>>[C:2]1([H:8])=[C:3]([H:9])[C:4]([H:11])([H:12])[C@:5]1([O:6][H:14])[H:13].[O:1]([H:7])[H:10],82.748215
76.88764,[C:1]([N:2]([C:3](=[O:4])[H:10])[C:5](=[O:6])[H:11])([H:7])([H:8])[H:9]>>[C-:3]#[O+:4].[C:1]([N:2]([C:5](=[O:6])[H:11])[H:10])([H:7])([H:8])[H:9],82.253746
136.10961,[O:1]=[C:2]1[C:3]([H:8])([H:9])[C:4]([C:6]#[N:7])([H:10])[C:5]1([H:11])[H:12]>>[O:1]=[C:6]=[N:7][C:4]1([H:10])[C:3]([H:8])([H:9])[C:2][C:5]1([H:11])[H:12],82.3757
99.43027,[N:1]#[C:2][C@@:3]1([H:7])[C:4]([H:8])([H:9])[C:5]([H:10])([H:11])[N:6]1[H:12]>>[N:1]#[C:2][C@@:3]1([H:7])[C-:4]([H:9])[N+:6]1([C:5]([H:8])([H:10])[H:11])[H:12],82.64329
54.73362,[C:1]([C@@:2]([O:3][H:11])([C@@:4]1([H:12])[C:5]([H:13])([H:14])[O:6]1)[H:10])([H:7])([H:8])[H:9]>>[C:1]([C@@:2]1([H:10])[O:3][C@@:4]1([C:5]([O:6][H:11])([H:13])[H:14])[H:12])([H:7])([H:8])[H:9],82.747314
115.48569,[C:1]([C:2]([c:3]1[c:4]([H:13])[n:5]([H:14])[n:6][n:7]1)([H:11])[H:12])([H:8])([H:9])[H:10]>>[C:1]([C:2]([C:4](=[C:3]=[N:7][N:6]=[N:5][H:14])[H:13])([H:11])[H:12])([H:8])([H:9])[H:10],82.515076
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
label,smiles,prediction
92.62519,[C:1]1([H:7])([H:8])[C@:2]2([H:9])[C:3]([H:10])([H:11])[C:4]([H:12])([H:13])[C:5]([H:14])([H:15])[C@:6]12[H:16]>>[C:1]1([H:7])([H:8])[C@:2]([C:3]([C:4]([H:12])([H:13])[H:14])([H:10])[H:11])([H:9])[C@:6]1([C:5][H:15])[H:16],81.62593
90.15481,[C:1]([C:2]([C:3]1([O:4][H:12])[C:5]([H:13])([H:14])[C:6]1([H:15])[H:16])([H:10])[H:11])([H:7])([H:8])[H:9]>>[C:1]([C:2]([C:6]([C:5]([C:3][O:4][H:12])([H:13])[H:14])([H:15])[H:16])([H:10])[H:11])([H:7])([H:8])[H:9],81.555855
75.21907,[C:1]([C:2]1([O:3][H:10])[C:4]([H:11])([H:12])[O:5][C:6]1([H:13])[H:14])([H:7])([H:8])[H:9]>>[C:1]([C:2](=[O:3])[C:4]([O:5][C:6]([H:10])([H:13])[H:14])([H:11])[H:12])([H:7])([H:8])[H:9],81.62833
47.00517,[N:1]([c:2]1[n:3][c:4]([O:5][H:10])[c:6]([H:11])[n:7]1[H:12])([H:8])[H:9]>>[N:1]([C@@:2]1([H:12])[N:3]=[C:4]([O:5][H:10])[C:6]([H:11])=[N:7]1)([H:8])[H:9],81.32265
86.62878,[C:1]1([H:7])([H:8])[N:2]([H:9])[C@:3]1([C@@:4]1([H:11])[C:5]([H:12])([H:13])[N:6]1[H:14])[H:10]>>[C:1](=[N:2][H:9])([H:7])[H:8].[C:3]([C@@:4]1([H:11])[C:5]([H:12])([H:13])[N:6]1[H:14])[H:10],81.37023
114.48725,[C:1](#[C:2][c:3]1[c:4]([H:9])[n:5]([H:10])[n:6][c:7]1[H:11])[H:8]>>[C+:1]#[C:2][C:3]1=[C:4]([H:9])[N:5]([H:10])[N-:6][C:7]1([H:8])[H:11],81.442276
67.50583,[O:1]([C@@:2]1([H:8])[C:3]([H:9])([H:10])[C:4]([H:11])([H:12])[C@:5]1([O:6][H:14])[H:13])[H:7]>>[C:2]1([H:8])=[C:3]([H:9])[C:4]([H:11])([H:12])[C@:5]1([O:6][H:14])[H:13].[O:1]([H:7])[H:10],81.47074
76.88764,[C:1]([N:2]([C:3](=[O:4])[H:10])[C:5](=[O:6])[H:11])([H:7])([H:8])[H:9]>>[C-:3]#[O+:4].[C:1]([N:2]([C:5](=[O:6])[H:11])[H:10])([H:7])([H:8])[H:9],81.21686
136.10961,[O:1]=[C:2]1[C:3]([H:8])([H:9])[C:4]([C:6]#[N:7])([H:10])[C:5]1([H:11])[H:12]>>[O:1]=[C:6]=[N:7][C:4]1([H:10])[C:3]([H:8])([H:9])[C:2][C:5]1([H:11])[H:12],81.4186
99.43027,[N:1]#[C:2][C@@:3]1([H:7])[C:4]([H:8])([H:9])[C:5]([H:10])([H:11])[N:6]1[H:12]>>[N:1]#[C:2][C@@:3]1([H:7])[C-:4]([H:9])[N+:6]1([C:5]([H:8])([H:10])[H:11])[H:12],81.46528
54.73362,[C:1]([C@@:2]([O:3][H:11])([C@@:4]1([H:12])[C:5]([H:13])([H:14])[O:6]1)[H:10])([H:7])([H:8])[H:9]>>[C:1]([C@@:2]1([H:10])[O:3][C@@:4]1([C:5]([O:6][H:11])([H:13])[H:14])[H:12])([H:7])([H:8])[H:9],81.47171
115.48569,[C:1]([C:2]([c:3]1[c:4]([H:13])[n:5]([H:14])[n:6][n:7]1)([H:11])[H:12])([H:8])([H:9])[H:10]>>[C:1]([C:2]([C:4](=[C:3]=[N:7][N:6]=[N:5][H:14])[H:13])([H:11])[H:12])([H:8])([H:9])[H:10],81.588684
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
label,smiles,prediction
92.62519,[C:1]1([H:7])([H:8])[C@:2]2([H:9])[C:3]([H:10])([H:11])[C:4]([H:12])([H:13])[C:5]([H:14])([H:15])[C@:6]12[H:16]>>[C:1]1([H:7])([H:8])[C@:2]([C:3]([C:4]([H:12])([H:13])[H:14])([H:10])[H:11])([H:9])[C@:6]1([C:5][H:15])[H:16],84.23839
90.15481,[C:1]([C:2]([C:3]1([O:4][H:12])[C:5]([H:13])([H:14])[C:6]1([H:15])[H:16])([H:10])[H:11])([H:7])([H:8])[H:9]>>[C:1]([C:2]([C:6]([C:5]([C:3][O:4][H:12])([H:13])[H:14])([H:15])[H:16])([H:10])[H:11])([H:7])([H:8])[H:9],83.56094
75.21907,[C:1]([C:2]1([O:3][H:10])[C:4]([H:11])([H:12])[O:5][C:6]1([H:13])[H:14])([H:7])([H:8])[H:9]>>[C:1]([C:2](=[O:3])[C:4]([O:5][C:6]([H:10])([H:13])[H:14])([H:11])[H:12])([H:7])([H:8])[H:9],82.76854
47.00517,[N:1]([c:2]1[n:3][c:4]([O:5][H:10])[c:6]([H:11])[n:7]1[H:12])([H:8])[H:9]>>[N:1]([C@@:2]1([H:12])[N:3]=[C:4]([O:5][H:10])[C:6]([H:11])=[N:7]1)([H:8])[H:9],82.29532
86.62878,[C:1]1([H:7])([H:8])[N:2]([H:9])[C@:3]1([C@@:4]1([H:11])[C:5]([H:12])([H:13])[N:6]1[H:14])[H:10]>>[C:1](=[N:2][H:9])([H:7])[H:8].[C:3]([C@@:4]1([H:11])[C:5]([H:12])([H:13])[N:6]1[H:14])[H:10],82.80066
114.48725,[C:1](#[C:2][c:3]1[c:4]([H:9])[n:5]([H:10])[n:6][c:7]1[H:11])[H:8]>>[C+:1]#[C:2][C:3]1=[C:4]([H:9])[N:5]([H:10])[N-:6][C:7]1([H:8])[H:11],82.15445
67.50583,[O:1]([C@@:2]1([H:8])[C:3]([H:9])([H:10])[C:4]([H:11])([H:12])[C@:5]1([O:6][H:14])[H:13])[H:7]>>[C:2]1([H:8])=[C:3]([H:9])[C:4]([H:11])([H:12])[C@:5]1([O:6][H:14])[H:13].[O:1]([H:7])[H:10],82.745
76.88764,[C:1]([N:2]([C:3](=[O:4])[H:10])[C:5](=[O:6])[H:11])([H:7])([H:8])[H:9]>>[C-:3]#[O+:4].[C:1]([N:2]([C:5](=[O:6])[H:11])[H:10])([H:7])([H:8])[H:9],81.92301
136.10961,[O:1]=[C:2]1[C:3]([H:8])([H:9])[C:4]([C:6]#[N:7])([H:10])[C:5]1([H:11])[H:12]>>[O:1]=[C:6]=[N:7][C:4]1([H:10])[C:3]([H:8])([H:9])[C:2][C:5]1([H:11])[H:12],82.93045
99.43027,[N:1]#[C:2][C@@:3]1([H:7])[C:4]([H:8])([H:9])[C:5]([H:10])([H:11])[N:6]1[H:12]>>[N:1]#[C:2][C@@:3]1([H:7])[C-:4]([H:9])[N+:6]1([C:5]([H:8])([H:10])[H:11])[H:12],84.14849
54.73362,[C:1]([C@@:2]([O:3][H:11])([C@@:4]1([H:12])[C:5]([H:13])([H:14])[O:6]1)[H:10])([H:7])([H:8])[H:9]>>[C:1]([C@@:2]1([H:10])[O:3][C@@:4]1([C:5]([O:6][H:11])([H:13])[H:14])[H:12])([H:7])([H:8])[H:9],83.52624
115.48569,[C:1]([C:2]([c:3]1[c:4]([H:13])[n:5]([H:14])[n:6][n:7]1)([H:11])[H:12])([H:8])([H:9])[H:10]>>[C:1]([C:2]([C:4](=[C:3]=[N:7][N:6]=[N:5][H:14])[H:13])([H:11])[H:12])([H:8])([H:9])[H:10],82.9841
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
label,reaction_dir,smiles,prediction
92.62519,4480,[C:1]1([H:7])([H:8])[C@:2]2([H:9])[C:3]([H:10])([H:11])[C:4]([H:12])([H:13])[C:5]([H:14])([H:15])[C@:6]12[H:16]>>[C:1]1([H:7])([H:8])[C@:2]([C:3]([C:4]([H:12])([H:13])[H:14])([H:10])[H:11])([H:9])[C@:6]1([C:5][H:15])[H:16],82.04172
90.15481,1868,[C:1]([C:2]([C:3]1([O:4][H:12])[C:5]([H:13])([H:14])[C:6]1([H:15])[H:16])([H:10])[H:11])([H:7])([H:8])[H:9]>>[C:1]([C:2]([C:6]([C:5]([C:3][O:4][H:12])([H:13])[H:14])([H:15])[H:16])([H:10])[H:11])([H:7])([H:8])[H:9],82.04172
75.21907,5507,[C:1]([C:2]1([O:3][H:10])[C:4]([H:11])([H:12])[O:5][C:6]1([H:13])[H:14])([H:7])([H:8])[H:9]>>[C:1]([C:2](=[O:3])[C:4]([O:5][C:6]([H:10])([H:13])[H:14])([H:11])[H:12])([H:7])([H:8])[H:9],82.04173
47.00517,11183,[N:1]([c:2]1[n:3][c:4]([O:5][H:10])[c:6]([H:11])[n:7]1[H:12])([H:8])[H:9]>>[N:1]([C@@:2]1([H:12])[N:3]=[C:4]([O:5][H:10])[C:6]([H:11])=[N:7]1)([H:8])[H:9],82.04173
86.62878,4190,[C:1]1([H:7])([H:8])[N:2]([H:9])[C@:3]1([C@@:4]1([H:11])[C:5]([H:12])([H:13])[N:6]1[H:14])[H:10]>>[C:1](=[N:2][H:9])([H:7])[H:8].[C:3]([C@@:4]1([H:11])[C:5]([H:12])([H:13])[N:6]1[H:14])[H:10],82.041664
114.48725,10250,[C:1](#[C:2][c:3]1[c:4]([H:9])[n:5]([H:10])[n:6][c:7]1[H:11])[H:8]>>[C+:1]#[C:2][C:3]1=[C:4]([H:9])[N:5]([H:10])[N-:6][C:7]1([H:8])[H:11],82.04171
67.50583,2699,[O:1]([C@@:2]1([H:8])[C:3]([H:9])([H:10])[C:4]([H:11])([H:12])[C@:5]1([O:6][H:14])[H:13])[H:7]>>[C:2]1([H:8])=[C:3]([H:9])[C:4]([H:11])([H:12])[C@:5]1([O:6][H:14])[H:13].[O:1]([H:7])[H:10],82.04172
76.88764,5928,[C:1]([N:2]([C:3](=[O:4])[H:10])[C:5](=[O:6])[H:11])([H:7])([H:8])[H:9]>>[C-:3]#[O+:4].[C:1]([N:2]([C:5](=[O:6])[H:11])[H:10])([H:7])([H:8])[H:9],82.041695
136.10961,9371,[O:1]=[C:2]1[C:3]([H:8])([H:9])[C:4]([C:6]#[N:7])([H:10])[C:5]1([H:11])[H:12]>>[O:1]=[C:6]=[N:7][C:4]1([H:10])[C:3]([H:8])([H:9])[C:2][C:5]1([H:11])[H:12],82.04174
99.43027,589,[N:1]#[C:2][C@@:3]1([H:7])[C:4]([H:8])([H:9])[C:5]([H:10])([H:11])[N:6]1[H:12]>>[N:1]#[C:2][C@@:3]1([H:7])[C-:4]([H:9])[N+:6]1([C:5]([H:8])([H:10])[H:11])[H:12],82.04175
54.73362,2618,[C:1]([C@@:2]([O:3][H:11])([C@@:4]1([H:12])[C:5]([H:13])([H:14])[O:6]1)[H:10])([H:7])([H:8])[H:9]>>[C:1]([C@@:2]1([H:10])[O:3][C@@:4]1([C:5]([O:6][H:11])([H:13])[H:14])[H:12])([H:7])([H:8])[H:9],82.0417
115.48569,7952,[C:1]([C:2]([c:3]1[c:4]([H:13])[n:5]([H:14])[n:6][n:7]1)([H:11])[H:12])([H:8])([H:9])[H:10]>>[C:1]([C:2]([C:4](=[C:3]=[N:7][N:6]=[N:5][H:14])[H:13])([H:11])[H:12])([H:8])([H:9])[H:10],82.0417
Loading
Loading