# Nmr Peak JSON Serialization

> Use when you have proton (1H) and carbon-13 (13C) NMR peak measurements from a molecular sample and need to classify the molecule using the SMART 3 deep learning API. The peaks must be reformatted from their native instrument output into JSON before submission to the /api/smart3/search endpoint.

- Skill: `holobiomicslab/nmr-peak-json-serialization` (Agent Skill)
- Install (CLI): `npx skillmds@latest add holobiomicslab/nmr-peak-json-serialization`
- Raw SKILL.md: https://api.skillmd.com/api/skills/holobiomicslab/nmr-peak-json-serialization/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- License: CC-BY-4.0
- Author: HolobiomicsLab (https://skillmd.com/u/holobiomicslab)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/holobiomicslab/nmr-peak-json-serialization

---


# nmr-peak-json-serialization

## Summary

Serialize nuclear magnetic resonance peak data into JSON dictionary format with 1H and 13C headers for programmatic submission to the SMART 3 classification API. This skill bridges raw NMR spectroscopic measurements and machine learning-ready molecular classification requests.

## When to use

You have proton (1H) and carbon-13 (13C) NMR peak measurements from a molecular sample and need to classify the molecule using the SMART 3 deep learning API. The peaks must be reformatted from their native instrument output into JSON before submission to the /api/smart3/search endpoint.

## When NOT to use

- Input peaks are already in a pre-computed feature table or embedding space — use direct model inference instead.
- NMR data is malformed, missing 1H or 13C headers, or contains null/NaN values — validate and clean the data first.
- Model input schema has changed without code update — check /model/metadata endpoint and update field names before serialization.

## Inputs

- 1H NMR peak list (chemical shift and intensity values)
- 13C NMR peak list (chemical shift and intensity values)
- JSON dictionary with '1H' and '13C' keys
- TensorFlow Serving model metadata (from /model/metadata endpoint)

## Outputs

- JSON-formatted peak payload (list of dictionaries)
- Classification response from /api/smart3/search endpoint
- Molecular structure prediction(s) with confidence scores

## How to apply

Extract or prepare lists of 1H and 13C chemical shift and intensity values from your NMR instrument output or processing software. Construct a JSON payload as a list of dictionaries, where each dictionary contains '1H' and '13C' keys with their respective peak data. Before submission, query the TensorFlow Serving /model/metadata endpoint to confirm the expected input schema and field names, since model input names may change and require code updates. Format the peaks as a JSON list of dicts and POST to the /api/smart3/search endpoint. Parse the returned JSON classification response to extract molecular structure predictions or confidence scores.

## Related tools

- **TensorFlow Serving** (Hosts the SMART 3 classification model and provides /model/metadata schema endpoint and /api/smart3/search inference endpoint for peak-based molecular classification)
- **DeepSAT** (Source repository containing the SMART 3 deep learning architecture for NMR-based molecular classification) — github:mwang87__DeepSAT

## Examples

```
import json; peaks = [{"1H": [1.2, 2.5, 7.3], "13C": [20.1, 45.6, 128.9]}]; requests.post('http://tensorflow-serving:8501/api/smart3/search', json=peaks, headers={'Content-Type': 'application/json'})
```

## Evaluation signals

- JSON payload passes schema validation against /model/metadata endpoint output names (no missing or misnamed keys)
- 1H and 13C peak lists are non-empty and contain numeric chemical shift and intensity values within expected ranges (e.g., 1H: 0–14 ppm, 13C: 0–220 ppm)
- /api/smart3/search endpoint returns HTTP 200 with a valid JSON response containing molecular classification results
- Classification response includes molecular structure predictions with associated confidence scores or probability distributions
- Round-trip serialization and deserialization preserve peak data fidelity (no loss of precision or truncation)

## Limitations

- Model input names may change across TensorFlow Serving deployments, requiring manual code updates and /model/metadata re-inspection
- No changelog is available to track model schema or endpoint breaking changes
- Peak data quality and format depend on upstream NMR preprocessing; malformed or incomplete peak lists will fail classification
- The skill assumes TensorFlow Serving is accessible at the documented URL and /model/metadata endpoint is available

## Evidence

- [intro] You can put in your peaks as a json list of dicts, with 1H,13C as headers: "You can put in your peaks as a json list of dicts, with 1H,13C as headers"
- [other] The SMART 3 API accepts peak data programmatically through the /api/smart3/search endpoint as a JSON list of dictionaries with proton (1H) and carbon-13 (13C) nuclear magnetic resonance headers for molecular classification.: "The SMART 3 API accepts peak data programmatically through the /api/smart3/search endpoint as a JSON list of dictionaries with proton (1H) and carbon-13 (13C) nuclear magnetic resonance headers"
- [intro] We pass through tensorflow serving at this url: /model/metadata: "We pass through tensorflow serving at this url: /model/metadata"
- [intro] If the model input names change, then we need to change it in the code: "If the model input names change, then we need to change it in the code"

