Skip to content

Colin-Jay/NMRPeak

Repository files navigation

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)

arXiv Zenodo License Web App


This is the official code repository for NMRPeak: a ready-to-use intelligent system for molecular structure elucidation enabled by synergistic cross-modal learning.

📖 Overview

Example Figure

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

🗞️ News

⚠️ 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

⚙️ Installation

1. Create and activate conda environment

conda create -n nmrpeak python=3.10 -y
conda activate nmrpeak

2. Install dependencies

# 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.txt

3. Clone the repository

cd ..
git clone https://github.com/Colin-Jay/NMRPeak.git
cd NMRPeak

4. Download data and trained weights

All 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.)

📁 Repository Structure

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

🚀 Usage

Demo

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.

Training

Note: Update data_path, dict_path, and save_path in the respective shell scripts to match your local directory structure before running any commands.

NMRPeak-P Training

# 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 

NMRPeak-R Training

# 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   

NMRPeak-G Training

# 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 

Inference

Note: Update data_path and dict_path in the respective shell scripts to match your local directory structure before running any commands.

NMRPeak-P Inference

# 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 

NMRPeak-G Inference

# 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 

Evaluation

Note: Update results_dir, data_dir, and dict_path in 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_dir organized 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 Evaluation

# 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

NMRPeak-R Evaluation

⚠️ 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=false first to generate NMRPeak-R-SME / SSE / SSR results, then set use_cache=true to 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

NMRPeak-G Evaluation

🔔 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

Input condition flags

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

⚠️ Usage Restriction

⚠️ 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.

📜 Citation

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}
}

📬 Contact

For questions and issues, please contact the author xufanjie@stu.xmu.edu.cn or open a GitHub issue.


State Key Laboratory of Physical Chemistry of Solid Surfaces · Xiamen University

About

No description, website, or topics provided.

Resources

License

Stars

3 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors