Quantum Physics & Data Analysis Case Study

Franck-Hertz Experiment Data Analysis

This project utilizes Python to ingest, process, and model experimental current-voltage datasets from the historic Franck-Hertz experiment. By fitting and decoupling the underlying thermionic electron emission curves, the pipeline isolates clear quantum collisions to prove the existence of quantized atomic energy states within gas-filled tubes.

THE GOAL: Mathematical isolation and subtraction of the exponential background baseline current to reveal pure, normalized periodic current drops with minimum statistical variance.

01 / Interactive Workspace & Engine Output

baseline_decoupling.py
import numpy as np
import pandas as pd
from scipy.optimize import curve_fit

# 1. Define Exponential Background Function
def exponential_baseline(V, a, b, c):
    return a * np.exp(b * V) + c

# 2. Fit Background to Local Minima Trajectories
popt, _ = curve_fit(
    exponential_baseline, 
    v_minima, 
    i_minima, 
    p0=[0.1, 0.05, 0]
)

# 3. Decouple Baseline to Isolate Pure Peaks
df['I_isolated'] = df['I_raw'] - exponential_baseline(df['V'], *popt)
Raw data plot showing heavy exponential baseline curve Processed plot showing clean peak drops after exponential baseline subtraction

02 / Technical Competencies Applied

Data Pipeline
Automated CSV Parsing Pandas DataFrames NumPy Array Vectorization Signal-to-Noise Isolation Metadata Extractions
Signal Processing
SciPy Signal Modules Gaussian Smoothing Filters Local Maxima / Peak Detection Voltage Baseline Corrections Data Resampling
Statistical Fit
Excitation Potential Evaluation Matplotlib/Seaborn Viz Linear Standard Error Fits Quantization Error Bounds Confidence Intervals
EXPERIMENTAL DATA & PHYSICS

Quantizing Electron Energy: The Mercury Franck-Hertz Experiment

A data-driven verification of Bohr’s atomic model, evaluating the 4.9 eV excitation potential of vaporised mercury through automated signal processing and error modeling.

Role Data Analyst & Physicist
Core Tools Python (NumPy, SciPy), OriginPro
Key Target Insight ΔV ≈ 4.9 eV
Mercury Franck-Hertz Experimental Schematic Setup
Fig 1: Franck-Hertz control module and heated mercury oven environment.

Signal Processing & Data Pipeline

Track the mathematical transformations used to isolate the 4.9 eV electronic collisions from raw hardware outputs.

Raw Franck-Hertz Data

01. Raw Stream Ingestion

Loads the initial tabular matrix output directly from the hardware logger and maps the legacy channel outputs onto accessible structural names via Pandas.

df = pd.read_csv("1.7v_fil.csv")
df.rename(columns={"in s": "s", "C1 in V": "C1", "C2 in V": "C2"}, inplace=True)
Visuals Matrix

Responsive Motion Showcase

Modular Data Analytics Ingestion Pipeline for Deterministic Trend Extraction

Executive Summary

A highly modular, decoupled data ingestion and analysis pipeline built in NumPy. Features a vectorized, deterministic local optimization engine to isolate high-frequency signal signatures from non-linear, noisy data backgrounds.


The Data

Below is the data selector


Data Cleaning & EDA

Engine Standby…
⏱️ Active Execution Trace: Initializing execution environment watcher…
0.0s
⏳ [1/4] Connecting to Pyodide runtime environment…
⚪ [2/4] Injecting data analytics dependencies: pandas & matplotlib…
⚪ [3/4] Fetching targeted .csv stream from media repository…
⚪ [4/4] Executing pandas runtime parsing & canvas compilation…
Preparing WebAssembly analytical matrix…

Initializing isolated environment…


Methodology

Python Source Script
import matplotlib.pyplot as plt
import numpy as np

# Generate sample dataset data
x = np.linspace(0, 10, 100)
y = np.sin(x)

# Compute pyplot layout graphics
fig, ax = plt.subplots()
ax.plot(x, y, label='Signal VFil')
ax.set_title('Waveform Analysis Output')
ax.legend()

plt.show

()
Python Pyplot Render Visualisation Output Dashboard

Key Insights

Python Source Script
import matplotlib.pyplot as plt
import numpy as np

# Generate sample dataset data
x = np.linspace(0, 10, 100)
y = np.sin(x)

# Compute pyplot layout graphics
fig, ax = plt.subplots()
ax.plot(x, y, label='Signal VFil')
ax.set_title('Waveform Analysis Output')
ax.legend()

plt.show

()
Python Pyplot Render Visualisation Output Dashboard

Business Value

Python Source Script
import matplotlib.pyplot as plt
import numpy as np

# Generate sample dataset data
x = np.linspace(0, 10, 100)
y = np.sin(x)

# Compute pyplot layout graphics
fig, ax = plt.subplots()
ax.plot(x, y, label='Signal VFil')
ax.set_title('Waveform Analysis Output')
ax.legend()

plt.show

()
Python Pyplot Render Visualisation Output Dashboard

Production & Code

Python Source Script
import matplotlib.pyplot as plt
import numpy as np

# Generate sample dataset data
x = np.linspace(0, 10, 100)
y = np.sin(x)

# Compute pyplot layout graphics
fig, ax = plt.subplots()
ax.plot(x, y, label='Signal VFil')
ax.set_title('Waveform Analysis Output')
ax.legend()

plt.show

()
Python Pyplot Render Visualisation Output Dashboard