NMRPeak: a ready-to-use intelligent system for molecular structure elucidation enabled by synergistic cross-modal learning
Fanjie Xu, Jinyuan Hu, Jingxiang Zou, Junjie Wang, Boying Huang, Zhifeng Gao, Xiaohong Ji*, Weinan E, Zhong-Qun Tian, Fujie Tang*, Jun Cheng* (* indicates corresponding authors)
This is the official code repository for NMRPeak: a ready-to-use intelligent system for molecular structure elucidation enabled by synergistic cross-modal learning.
NMRPeak is a unified cross-modal learning framework for automated molecular structure elucidation from one-dimensional NMR spectroscopy. It integrates three synergistic modules:
| Module | Description |
|---|---|
| NMRPeak-P | Forward spectrum prediction from molecular structures |
| NMRPeak-R | Bidirectional cross-modal retrieval between molecules and NMR spectra |
| NMRPeak-G | End-to-end de novo molecular structure generation from NMR spectra |
⚠️ Note Please note that the Zenodo records may be updated. Make sure to check the latest version.
| Date | Update |
|---|---|
| 🏷️ 2026.03.19 | Code has been released on GitHub |
| 🎞️ 2026.03.12 | Dataset and trained weights released on Zenodo |
| 📄 2026.02.09 | Paper published on arXiv |
conda create -n nmrpeak python=3.10 -y
conda activate nmrpeak# 3.1 Install PyTorch with CUDA support
pip install torch==2.3.0 torchvision==0.18.0 torchaudio==2.3.0 --index-url https://download.pytorch.org/whl/cu121
# 3.2 Install Uni-Core
git clone https://github.com/dptech-corp/Uni-Core.git
cd Uni-Core
python setup.py install
# 3.3 Install other Python dependencies
pip install -r requirements.txtcd ..
git clone https://github.com/Colin-Jay/NMRPeak.git
cd NMRPeakAll datasets and trained model weights are available on Zenodo:
https://zenodo.org/records/19122815
(Tip: Please ensure you are viewing and downloading the latest version on Zenodo, as updates will generate a new record URL.)
After downloading, organize the directory as follows:
NMRPeak/
├── data/ # Dataset directory (needs to be downloaded from Zenodo)
├── dict/ # Dictionary directory
├── figure/ # Figure directory
├── nmrpeak/ # Core code of NMRPeak
├── results/ # Results of NMRPeak
├── scripts/ # Scripts directory
│ ├── example.sh # Example script demonstrating various ways to run NMRPeak
│ ├── train_mol_trans_spec.sh # NMRPeak-P training
│ ├── train_spec_mol_cl.sh # NMRPeak-R training
│ ├── train_spec_trans_mol.sh # NMRPeak-G training
│ ├── infer_mol_trans_spec.sh # NMRPeak-P inference
│ ├── infer_spec_trans_mol.sh # NMRPeak-G inference
│ ├── eval_prediction.sh # NMRPeak-P evaluation
│ ├── eval_retrieval.sh # NMRPeak-R evaluation
│ └── eval_generation.sh # NMRPeak-G evaluation
├── weights/ # Trained model weights (needs to be downloaded from Zenodo)
├── .gitignore
├── demo_generation.ipynb
├── demo_prediction.ipynb
├── demo_retrieval.ipynb
├── eval_generation.py
├── eval_prediction.py
├── eval_retrieval.py
├── README.md
└── requirements.txt
The repository provides several interactive Jupyter notebooks to demonstrate the functionality of the NMR prediction, retrieval, and generation pipeline:
- demo_prediction.ipynb – Demonstrates NMRPeak-P (NMR prediction module).
- demo_retrieval.ipynb – Demonstrates NMRPeak-R with M2S (molecule-to-spectrum) retrieval and S2M (spectrum-to-molecule) retrieval and.
- demo_generation.ipynb – Demonstrates NMRPeak-G (structure generation guided by spectra).
Each notebook is self-contained and includes sample molecules and spectra, allowing users to quickly reproduce the workflow and visualize results. Simply open the notebooks in this repository with Jupyter or Colab, run the cells sequentially, and explore the predicted, retrieved, and generated molecular structures.
Note: Update
data_path,dict_path, andsave_pathin the respective shell scripts to match your local directory structure before running any commands.
# 13C NMR
bash scripts/train_mol_trans_spec.sh NMRexp 3e-4 16 mol_trans_spec mol_trans_spec_bart_base /fs_mol/fjxu/Spectra/NMR/NMRPeak/weights/pretrained/mol_pre_all_h_220816.pt --use-cnmr
# 1H NMR
bash scripts/train_mol_trans_spec.sh NMRexp 3e-4 16 mol_trans_spec mol_trans_spec_bart_base /fs_mol/fjxu/Spectra/NMR/NMRPeak/weights/pretrained/mol_pre_all_h_220816.pt --use-hnmr --use-h-nh --use-h-jvalue --use-h-category --use-range-shift # 13C NMR
bash scripts/train_spec_mol_cl.sh NMRexp 3e-4 512 spec_mol_cl spec_mol_cl_bart_base 0.1 /fs_mol/fjxu/Spectra/NMR/NMRPeak/weights/pretrained/mol_pre_all_h_220816.pt --use-cnmr
# 1H NMR
bash scripts/train_spec_mol_cl.sh NMRexp 3e-4 512 spec_mol_cl spec_mol_cl_bart_base 0.1 /fs_mol/fjxu/Spectra/NMR/NMRPeak/weights/pretrained/mol_pre_all_h_220816.pt --use-hnmr --use-h-nh --use-h-jvalue --use-h-category --use-range-shift
# 13C + 1H NMR
bash scripts/train_spec_mol_cl.sh NMRexp 3e-4 512 spec_mol_cl spec_mol_cl_bart_base 0.1 /fs_mol/fjxu/Spectra/NMR/NMRPeak/weights/pretrained/mol_pre_all_h_220816.pt --use-cnmr --use-hnmr --use-h-nh --use-h-jvalue --use-h-category --use-range-shift # 13C NMR
bash scripts/train_spec_trans_mol.sh NMRexp 3e-4 16 spec_trans_mol spec_trans_mol_bart_base --use-cnmr --use-spec-end-token
# 1H NMR
bash scripts/train_spec_trans_mol.sh NMRexp 3e-4 16 spec_trans_mol spec_trans_mol_bart_base --use-hnmr --use-h-nh --use-h-jvalue --use-h-category --use-spec-end-token
# 13C + 1H NMR
bash scripts/train_spec_trans_mol.sh NMRexp 3e-4 16 spec_trans_mol spec_trans_mol_bart_base --use-cnmr --use-hnmr --use-h-nh --use-h-jvalue --use-h-category --use-spec-end-token
# 13C NMR + molecular formula constraint
bash scripts/train_spec_trans_mol.sh NMRexp 3e-4 16 spec_trans_mol spec_trans_mol_bart_base --use-cnmr --use-spec-end-token --use-formula
# 1H NMR + molecular formula constraint
bash scripts/train_spec_trans_mol.sh NMRexp 3e-4 16 spec_trans_mol spec_trans_mol_bart_base --use-hnmr --use-h-nh --use-h-jvalue --use-h-category --use-spec-end-token --use-formula
# 13C + 1H NMR + molecular formula constraint
bash scripts/train_spec_trans_mol.sh NMRexp 3e-4 16 spec_trans_mol spec_trans_mol_bart_base --use-cnmr --use-hnmr --use-h-nh --use-h-jvalue --use-h-category --use-spec-end-token --use-formula Note: Update
data_pathanddict_pathin the respective shell scripts to match your local directory structure before running any commands.
# 13C NMR
bash scripts/infer_mol_trans_spec.sh NMRexp test 16 mol_trans_spec mol_trans_spec_bart_base 70 1 1.0 /fs_mol/fjxu/Spectra/NMR/NMRPeak/results/mol_trans_spec/NMRexp/c1_h0_nh0_j0_t0_r0_f0_e0/lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_6_100 /fs_mol/fjxu/Spectra/NMR/NMRPeak/results/mol_trans_spec/NMRexp/c1_h0_nh0_j0_t0_r0_f0_e0/lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_6_100/checkpoint_best.pt --use-cnmr
# 1H NMR
bash scripts/infer_mol_trans_spec.sh NMRexp test 16 mol_trans_spec mol_trans_spec_bart_base 160 1 1.0 /fs_mol/fjxu/Spectra/NMR/NMRPeak/results/mol_trans_spec/NMRexp/c0_h1_nh1_j1_t1_r1_f0_e0/lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_6_100 /fs_mol/fjxu/Spectra/NMR/NMRPeak/results/mol_trans_spec/NMRexp/c0_h1_nh1_j1_t1_r1_f0_e0/lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_6_100/checkpoint_best.pt --use-hnmr --use-h-nh --use-h-jvalue --use-h-category --use-range-shift
# 13C NMR
bash scripts/infer_spec_trans_mol.sh NMRexp test 16 spec_trans_mol spec_trans_mol_bart_base 160 10 3.0 /fs_mol/fjxu/Spectra/NMR/NMRPeak/results/spec_trans_mol/NMRexp/c1_h0_nh0_j0_t0_r0_f0_e1/lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_6_100 /fs_mol/fjxu/Spectra/NMR/NMRPeak/results/spec_trans_mol/NMRexp/c1_h0_nh0_j0_t0_r0_f0_e1/lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_6_100/checkpoint_best.pt --use-cnmr --use-spec-end-token
# 1H NMR
bash scripts/infer_spec_trans_mol.sh NMRexp test 16 spec_trans_mol spec_trans_mol_bart_base 160 10 3.0 /fs_mol/fjxu/Spectra/NMR/NMRPeak/results/spec_trans_mol/NMRexp/c0_h1_nh1_j1_t1_r0_f0_e1/lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_6_100 /fs_mol/fjxu/Spectra/NMR/NMRPeak/results/spec_trans_mol/NMRexp/c0_h1_nh1_j1_t1_r0_f0_e1/lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_6_100/checkpoint_best.pt --use-hnmr --use-h-nh --use-h-jvalue --use-h-category --use-spec-end-token
# 13C NMR + 1H NMR
bash scripts/infer_spec_trans_mol.sh NMRexp test 16 spec_trans_mol spec_trans_mol_bart_base 160 10 3.0 /fs_mol/fjxu/Spectra/NMR/NMRPeak/results/spec_trans_mol/NMRexp/c1_h1_nh1_j1_t1_r0_f0_e1/lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_6_100 /fs_mol/fjxu/Spectra/NMR/NMRPeak/results/spec_trans_mol/NMRexp/c1_h1_nh1_j1_t1_r0_f0_e1/lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_6_100/checkpoint_best.pt --use-cnmr --use-hnmr --use-h-nh --use-h-jvalue --use-h-category --use-spec-end-token
# 13C NMR + molecular formula constraint
bash scripts/infer_spec_trans_mol.sh NMRexp test 16 spec_trans_mol spec_trans_mol_bart_base 160 10 3.0 /fs_mol/fjxu/Spectra/NMR/NMRPeak/results/spec_trans_mol/NMRexp/c1_h0_nh0_j0_t0_r0_f1_e1/lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_6_100 /fs_mol/fjxu/Spectra/NMR/NMRPeak/results/spec_trans_mol/NMRexp/c1_h0_nh0_j0_t0_r0_f1_e1/lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_6_100/checkpoint_best.pt --use-cnmr --use-spec-end-token --use-formula
# 1H NMR + molecular formula constraint
bash scripts/infer_spec_trans_mol.sh NMRexp test 16 spec_trans_mol spec_trans_mol_bart_base 160 10 3.0 /fs_mol/fjxu/Spectra/NMR/NMRPeak/results/spec_trans_mol/NMRexp/c0_h1_nh1_j1_t1_r0_f1_e1/lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_6_100 /fs_mol/fjxu/Spectra/NMR/NMRPeak/results/spec_trans_mol/NMRexp/c0_h1_nh1_j1_t1_r0_f1_e1/lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_6_100/checkpoint_best.pt --use-hnmr --use-h-nh --use-h-jvalue --use-h-category --use-spec-end-token --use-formula
# 13C NMR + 1H NMR + molecular formula constraint
bash scripts/infer_spec_trans_mol.sh NMRexp test 16 spec_trans_mol spec_trans_mol_bart_base 160 10 3.0 /fs_mol/fjxu/Spectra/NMR/NMRPeak/results/spec_trans_mol/NMRexp/c1_h1_nh1_j1_t1_r0_f1_e1/lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_6_100 /fs_mol/fjxu/Spectra/NMR/NMRPeak/results/spec_trans_mol/NMRexp/c1_h1_nh1_j1_t1_r0_f1_e1/lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_6_100/checkpoint_best.pt --use-cnmr --use-hnmr --use-h-nh --use-h-jvalue --use-h-category --use-spec-end-token --use-formula Note: Update
results_dir,data_dir, anddict_pathin the respective shell scripts to match your local directory structure before running any commands.
Prepare the best prediction, retrieval, and generation model weights under
results_dirorganized by condition type.
results_dir/
├── prediction/
│ └── all_weights/
│ └── <model_config_name>/
│ ├── C/
│ └── H/
│ └── all_weights/
│ ..........
├── retrieval/
│ └── all_weights/
│ └── <model_config_name>/
│ ├── C/
│ ├── CH/
│ └── H/
│ └── all_weights/
│ ..........
└── generation/
│ └── all_weights/
│ └── <model_config_name>/
│ ├── C/
│ ├── CF/
│ ├── CH/
│ ├── CHF/
│ ├── H/
│ └── HF/
│ └── all_weights/
│ ..........
└────────────────────────────────
# NMRPeak-P-Single (1 model)
## 13C NMR
bash scripts/eval_prediction.sh NMRexp test 16 true C 1 NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000_best NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000
## 1H NMR
bash scripts/eval_prediction.sh NMRexp test 16 true H 1 NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000_best NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000
# NMRPeak-P-Multi (ensemble of 10 models)
## 13C NMR
bash scripts/eval_prediction.sh NMRexp test 16 true C 10 NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000
## 1H NMR
bash scripts/eval_prediction.sh NMRexp test 16 true H 10 NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000
⚠️ For large datasets, this step may require high-memory machines to avoid OOM errors.
🔔 The retrieval evaluation supports multiple similarity strategies. Run with
use_cache=falsefirst to generate NMRPeak-R-SME / SSE / SSR results, then setuse_cache=trueto combine them efficiently without recomputation.
🔔 When both C and H spectra are provided, the 4th float parameter specifies the SSR weight for the ¹³C spectrum.
# NMRPeak-R-SME (α=1, β=0, γ=0)
## 13C NMR
bash scripts/eval_retrieval.sh NMRexp test 10 16 false 1.0 0.0 0.0 0.0 C NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 false
## 1H NMR
bash scripts/eval_retrieval.sh NMRexp test 10 16 false 1.0 0.0 0.0 0.0 H NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 false
## 13C NMR + 1H NMR
bash scripts/eval_retrieval.sh NMRexp test 10 16 false 1.0 0.0 0.0 0.0 CH NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 false
## 13C NMR + molecular formula constraint
bash scripts/eval_retrieval.sh NMRexp test 10 16 true 1.0 0.0 0.0 0.0 C NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 false
## 1H NMR + molecular formula constraint
bash scripts/eval_retrieval.sh NMRexp test 10 16 true 1.0 0.0 0.0 0.0 H NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 false
## 13C NMR + 1H NMR + molecular formula constraint
bash scripts/eval_retrieval.sh NMRexp test 10 16 true 1.0 0.0 0.0 0.0 CH NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 false
# NMRPeak-R-SSE (α=0, β=1, γ=0)
## 13C NMR
bash scripts/eval_retrieval.sh NMRexp test 10 16 false 0.0 1.0 0.0 0.0 C NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 false
## 1 HNMR
bash scripts/eval_retrieval.sh NMRexp test 10 16 false 0.0 1.0 0.0 0.0 H NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 false
## 13C NMR + 1H NMR
bash scripts/eval_retrieval.sh NMRexp test 10 16 false 0.0 1.0 0.0 0.0 CH NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 false
## 13C NMR + molecular formula constraint
bash scripts/eval_retrieval.sh NMRexp test 10 16 true 0.0 1.0 0.0 0.0 C NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 false
## 1H NMR + molecular formula constraint
bash scripts/eval_retrieval.sh NMRexp test 10 16 true 0.0 1.0 0.0 0.0 H NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 false
## 13C NMR + 1H NMR + molecular formula constraint
bash scripts/eval_retrieval.sh NMRexp test 10 16 true 0.0 1.0 0.0 0.0 CH NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 false
# NMRPeak-R-SSR (α=0, β=0, γ=1)
## 13C NMR
bash scripts/eval_retrieval.sh NMRexp test 10 16 false 0.0 0.0 1.0 0.0 C NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 false
## 1 HNMR
bash scripts/eval_retrieval.sh NMRexp test 10 16 false 0.0 0.0 1.0 0.0 H NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 false
## 13C NMR + 1H NMR (λ=1)
bash scripts/eval_retrieval.sh NMRexp test 10 16 false 0.0 0.0 1.0 1.0 CH NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 false
## 13C NMR + 1H NMR (λ=0)
bash scripts/eval_retrieval.sh NMRexp test 10 16 false 0.0 0.0 1.0 0.0 CH NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 false
## 13C NMR + molecular formula constraint
bash scripts/eval_retrieval.sh NMRexp test 10 16 true 0.0 0.0 1.0 0.0 C NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 false
## 1H NMR + molecular formula constraint
bash scripts/eval_retrieval.sh NMRexp test 10 16 true 0.0 0.0 1.0 0.0 H NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 false
## 13C NMR + 1H NMR + molecular formula constraint (λ=1)
bash scripts/eval_retrieval.sh NMRexp test 10 16 true 0.0 0.0 1.0 1.0 CH NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 false
## 13C NMR + 1H NMR + molecular formula constraint (λ=0)
bash scripts/eval_retrieval.sh NMRexp test 10 16 true 0.0 0.0 1.0 0.0 CH NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 false
# NMRPeak-R-Combine (optimal weights, use cache=true after above)
## 13C NMR
bash scripts/eval_retrieval.sh NMRexp test 10 16 false 0.1 0.0 0.9 0.0 C NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 true
## 1H NMR
bash scripts/eval_retrieval.sh NMRexp test 10 16 false 0.2 0.2 0.6 0.0 H NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 true
## 13C NMR + 1H NMR
bash scripts/eval_retrieval.sh NMRexp test 10 16 false 0.1 0.0 0.9 0.5 CH NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 true
## 13C NMR + molecular formula constraint
bash scripts/eval_retrieval.sh NMRexp test 10 16 true 0.2 0.0 0.8 0.0 C NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 true
## 1H NMR + molecular formula constraint
bash scripts/eval_retrieval.sh NMRexp test 10 16 true 0.4 0.1 0.5 0.0 H NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 true
## 13C NMR + 1H NMR + molecular formula constraint
bash scripts/eval_retrieval.sh NMRexp test 10 16 true 0.0 0.1 0.9 0.6 CH NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 true🔔 When both C and H spectra are provided, the 4th float parameter specifies the SSR weight for the ¹³C spectrum.
# NMRPeak-G-Raw (no post-processing)
## 13C NMR
bash scripts/eval_generation.sh NMRexp test 10 16 false false false false false 0.0 0.0 0.0 0.0 C NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000
## 1H NMR
bash scripts/eval_generation.sh NMRexp test 10 16 false false false false false 0.0 0.0 0.0 0.0 H NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000
## 13C NMR + 1H NMR
bash scripts/eval_generation.sh NMRexp test 10 16 false false false false false 0.0 0.0 0.0 0.0 CH NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000
## 13C NMR + molecular formula constraint
bash scripts/eval_generation.sh NMRexp test 10 16 false false false false false 0.0 0.0 0.0 0.0 CF NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000
## 1H NMR + molecular formula constraint
bash scripts/eval_generation.sh NMRexp test 10 16 false false false false false 0.0 0.0 0.0 0.0 HF NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000
## 13C NMR + 1H NMR + molecular formula constraint
bash scripts/eval_generation.sh NMRexp test 10 16 false false false false false 0.0 0.0 0.0 0.0 CHF NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000
# NMRPeak-G-Rerank-Base (chemical validation + optional formula filtering)
## 13C NMR
bash scripts/eval_generation.sh NMRexp test 10 16 true true true false false 0.0 0.0 0.0 0.0 C NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000
## 1H NMR
bash scripts/eval_generation.sh NMRexp test 10 16 true true true false false 0.0 0.0 0.0 0.0 H NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000
## 13C NMR + 1H NMR
bash scripts/eval_generation.sh NMRexp test 10 16 true true true false false 0.0 0.0 0.0 0.0 CH NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000
## 13C NMR + molecular formula constraint
bash scripts/eval_generation.sh NMRexp test 10 16 true true true true false 0.0 0.0 0.0 0.0 CF NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000
## 1H NMR + molecular formula constraint
bash scripts/eval_generation.sh NMRexp test 10 16 true true true true false 0.0 0.0 0.0 0.0 HF NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000
## 13C NMR + 1H NMR + molecular formula constraint
bash scripts/eval_generation.sh NMRexp test 10 16 true true true true false 0.0 0.0 0.0 0.0 CHF NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000
# NMRPeak-G-Rerank-SME (α=1, β=0, γ=0)
## 13C NMR
bash scripts/eval_generation.sh NMRexp test 10 16 true true true false true 1.0 0.0 0.0 0.0 C NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000
## 1H NMR
bash scripts/eval_generation.sh NMRexp test 10 16 true true true false true 1.0 0.0 0.0 0.0 H NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000
## 13C NMR + 1H NMR
bash scripts/eval_generation.sh NMRexp test 10 16 true true true false true 1.0 0.0 0.0 0.0 CH NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000
## 13C NMR + molecular formula constraint
bash scripts/eval_generation.sh NMRexp test 10 16 true true true true true 1.0 0.0 0.0 0.0 CF NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000
## 1H NMR + molecular formula constraint
bash scripts/eval_generation.sh NMRexp test 10 16 true true true true true 1.0 0.0 0.0 0.0 HF NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000
## 13C NMR + 1H NMR + molecular formula constraint
bash scripts/eval_generation.sh NMRexp test 10 16 true true true true true 1.0 0.0 0.0 0.0 CHF NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000
# NMRPeak-G-Rerank-SSE (α=0, β=1, γ=0)
## 13C NMR
bash scripts/eval_generation.sh NMRexp test 10 16 true true true false true 0.0 1.0 0.0 0.0 C NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000
## 1H NMR
bash scripts/eval_generation.sh NMRexp test 10 16 true true true false true 0.0 1.0 0.0 0.0 H NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000
## 13C NMR + 1H NMR
bash scripts/eval_generation.sh NMRexp test 10 16 true true true false true 0.0 1.0 0.0 0.0 CH NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000
## 13C NMR + molecular formula constraint
bash scripts/eval_generation.sh NMRexp test 10 16 true true true true true 0.0 1.0 0.0 0.0 CF NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000
## 1H NMR + molecular formula constraint
bash scripts/eval_generation.sh NMRexp test 10 16 true true true true true 0.0 1.0 0.0 0.0 HF NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000
## 13C NMR + 1H NMR + molecular formula constraint
bash scripts/eval_generation.sh NMRexp test 10 16 true true true true true 0.0 1.0 0.0 0.0 CHF NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000
# NMRPeak-G-Rerank-SSR (α=0, β=0, γ=1)
## 13C NMR
bash scripts/eval_generation.sh NMRexp test 10 16 true true true false true 0.0 0.0 1.0 0.0 C NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000
## 1H NMR
bash scripts/eval_generation.sh NMRexp test 10 16 true true true false true 0.0 0.0 1.0 0.0 H NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000
## 13C NMR + 1H NMR (λ=1)
bash scripts/eval_generation.sh NMRexp test 10 16 true true true false true 0.0 0.0 1.0 1.0 CH NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000
## 13C NMR + 1H NMR (λ=0)
bash scripts/eval_generation.sh NMRexp test 10 16 true true true false true 0.0 0.0 1.0 0.0 CH NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000
## 13C NMR + molecular formula constraint
bash scripts/eval_generation.sh NMRexp test 10 16 true true true true true 0.0 0.0 1.0 0.0 CF NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000
## 1H NMR + molecular formula constraint
bash scripts/eval_generation.sh NMRexp test 10 16 true true true true true 0.0 0.0 1.0 0.0 HF NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000
## 13C NMR + 1H NMR + molecular formula constraint (λ=1)
bash scripts/eval_generation.sh NMRexp test 10 16 true true true true true 0.0 0.0 1.0 1.0 CHF NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000
## 13C NMR + 1H NMR + molecular formula constraint (λ=0)
bash scripts/eval_generation.sh NMRexp test 10 16 true true true true true 0.0 0.0 1.0 0.0 CHF NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000
# NMRPeak-G-Rerank-Combine (best performance)
## 13C NMR
bash scripts/eval_generation.sh NMRexp test 10 16 true true true false true 0.0 0.0 1.0 0.0 C NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000
## 1H NMR
bash scripts/eval_generation.sh NMRexp test 10 16 true true true false true 0.0 0.7 0.3 0.0 H NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000
## 13C NMR + 1H NMR
bash scripts/eval_generation.sh NMRexp test 10 16 true true true false true 0.0 0.0 1.0 0.7 CH NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000
## 13C NMR + molecular formula constraint
bash scripts/eval_generation.sh NMRexp test 10 16 true true true true true 0.0 0.0 1.0 0.0 CF NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000
## 1H NMR + molecular formula constraint
bash scripts/eval_generation.sh NMRexp test 10 16 true true true true true 0.0 0.5 0.5 0.0 HF NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000
## 13C NMR + 1H NMR + molecular formula constraint
bash scripts/eval_generation.sh NMRexp test 10 16 true true true true true 0.0 0.0 1.0 1.0 CHF NMRexp_lr3e-4_bs16_gpu8_unimol_pretrain1_frozen0_mol_trans_spec_bart_base_mol_trans_spec_60000_1000000 NMRexp_lr3e-4_bs512_gpu1_t0.1_unimol_pretrain1_frozen0_spec_mol_cl_bart_base_spec_mol_cl_15000_250000 NMRexp_lr3e-4_bs16_gpu8_spec_trans_mol_bart_base_spec_trans_mol_60000_1000000| Flag | Meaning |
|---|---|
C |
¹³C NMR only |
H |
¹H NMR only |
CH |
¹³C + ¹H NMR |
CF |
¹³C NMR + molecular formula |
HF |
¹H NMR + molecular formula |
CHF |
¹³C + ¹H NMR + molecular formula |
⚠️ This project is licensed under CC BY-NC-SA 4.0.
It is strictly for non-commercial use only.
Commercial use is prohibited without permission from the authors.
If you find NMRPeak useful in your research, please cite:
@article{xu2026synergistic,
title={Synergistic cross-modal learning for experimental NMR-based structure elucidation},
author={Xu, Fanjie and Hu, Jinyuan and Zou, Jingxiang and Wang, Junjie and Huang, Boying and Gao, Zhifeng and Ji, Xiaohong and Tian, Zhong-Qun and Tang, Fujie and Cheng, Jun and others},
journal={arXiv preprint arXiv:2602.08752},
year={2026}
}For questions and issues, please contact the author xufanjie@stu.xmu.edu.cn or open a GitHub issue.
