0%
Data Analytics @ Ohio State · Building ML systems that go from lab notebooks to real-world impact — from tumor microenvironments to wildfire drones.
// 001 · about
I'm a Data Analytics & Scholars student at The Ohio State University, applying machine learning and statistical modeling to problems that matter. From detecting brain cancer patterns in 1.2M+ spatial data points to building ML-powered wildfire drones, I turn complex data into real decisions. My patient outcome research has been presented to clinicians at an international conference, directly improving care for hundreds of assistive technology users.
Interned at BMW Financial Services, published at an international conference, won a medical hackathon, and conducted research across 4 institutions — all while holding a 3.7 GPA.
// data · visualization
import numpy as np
class KalmanFilter:
def __init__(self, dt=0.01):
self.Q = np.eye(3) * 1e-3
self.R = np.eye(3) * 0.03
self.P = np.eye(3)
self.x = np.zeros(3)
self.dt = dt
def step(self, gyro, accel):
self.x += gyro * self.dt
self.P = self.P + self.Q
K = self.P @ np.linalg.inv(
self.P + self.R)
self.x += K @ (accel - self.x)
self.P = (np.eye(3) - K) @ self.P
return self.x
imu = KalmanFilter(dt=0.01)
// 002 · experience
@ BMW Financial Services
@server.call_tool()
async def call_tool(name: str, args: dict):
if name == "query_model_metrics":
sql = """SELECT run_id, metric, value
FROM model_runs
WHERE ts >= NOW() - INTERVAL '7 days'
ORDER BY ts DESC LIMIT 100"""
rows = await db_fetch(sql)
return [TextContent(type="text",
text=json_table(rows))]
raise ValueError(f"Unknown tool: {name}")
@ OSU Dept. of Mechanical & Aerospace Engineering
def euler2quat(roll, pitch, yaw):
cr, sr = np.cos(roll/2), np.sin(roll/2)
cp, sp = np.cos(pitch/2), np.sin(pitch/2)
cy, sy = np.cos(yaw/2), np.sin(yaw/2)
return np.array([
cr*cp*cy + sr*sp*sy,
sr*cp*cy - cr*sp*sy,
cr*sp*cy + sr*cp*sy,
cr*cp*sy - sr*sp*cy
])
def predict(self):
self.x = self.F @ self.x
self.P = self.F @ self.P @ self.F.T + self.Q
@ OSU Wexner Medical Center — Assistive Technology
groups = [df[df["funding"]==g]["outcome"]
for g in df["funding"].unique()]
F, p = stats.f_oneway(*groups)
tukey = pairwise_tukeyhsd(
endog=df["outcome"],
groups=df["funding"],
alpha=0.05
)
sig = tukey.summary().data[1:]
sig_pairs = [r for r in sig if r[-1]]
@ Nationwide Children's Hospital — Immune Response Modeling
def permutation_test(obs, n_perm=10000):
real_diff = np.mean(obs["ICI_R"]) - np.mean(obs["ICI_NR"])
pooled = np.concatenate([
obs["ICI_R"], obs["ICI_NR"]])
n = len(obs["ICI_R"])
null = np.array([
np.mean(s := np.random.permutation(pooled)[:n])
- np.mean(pooled[n:])
for _ in range(n_perm)])
return np.mean(np.abs(null) >= abs(real_diff))
// 003 · skills
ML & AI
Data & Viz
Tools & Cloud
// 004 · projects
iOS app using ARKit & SceneKit with vector-grid facial volume capture achieving 95% accurate lymphedema detection. Won first place at OSU College of Medicine Appathon.
func session(_ s: ARSession,
didUpdate anchors: [ARAnchor]) {
guard let face = anchors.first
as? ARFaceAnchor else { return }
let grid = VectorGrid(face.geometry)
DispatchQueue.main.async {
self.volumeDelta = grid.delta()
self.scanProgress = grid.progress()
}
}
Built MCP tools for internal LLM inference pipelines at BMW. Improved data retrieval efficiency by 40% and cut model training cycles by 30%.
@server.call_tool()
async def call_tool(name: str, args: dict):
async with pool.acquire() as conn:
rows = await conn.fetch(args["sql"])
return [TextContent(
type="text",
text=json.dumps(
[dict(r) for r in rows])
)]
Lightweight on-drone ML models for aerial wildfire classification. Custom IMU with Kalman Filter.
class WildfireCNN(nn.Module):
def __init__(self):
super().__init__()
self.backbone = nn.Sequential(
nn.Conv2d(3, 16, 3, padding=1),
nn.ReLU(), nn.MaxPool2d(2),
nn.Conv2d(16, 32, 3, padding=1),
nn.ReLU(), nn.AdaptiveAvgPool2d(4),
)
self.head = nn.Linear(512, 2)
def forward(self, x):
return self.head(
self.backbone(x).flatten(1))
Analyzed 1.2M+ spatial data points from 30+ brain tumors. Designed fencing algorithms to cluster immune cells around cancer cells, revealing ICI response correlations. Published in iScience.
def dbscan_fraction_near_cancer(
df, radius=50, eps=35, min_samples=5):
cancer = df[df["cell_type"] == "cancer"][
["x", "y"]].values
immune = df[df["cell_type"] == "immune"][
["x", "y"]].values
tree = KDTree(cancer)
dists, _ = tree.query(immune, k=1)
near = immune[dists.flatten() <= radius]
if len(near) < min_samples:
return 0.0, -1
labels = DBSCAN(
eps=eps, min_samples=min_samples
).fit_predict(near)
clusters = len(set(labels) - {-1})
return len(near) / len(immune), clusters
Designed and built a 3-axis attitude control test stand for drone flight dynamics. Custom encoder-driven rig measuring pitch, roll & yaw. Submitted to AIAA SciTech 2026.
function [q, P] = ekf_update(q, P, gyro, dt)
F = state_transition(q, gyro, dt);
Q = 1e-4 * eye(4);
P = F*P*F' + Q;
z = encoder_meas();
H = meas_jacobian(q);
K = P*H' / (H*P*H' + R);
q = q + K*(z - h(q));
q = q / norm(q);
P = (eye(4) - K*H) * P;
end
// 005 · research & recognition
Analyzed 1.2M+ spatial data points from 30+ brain tumor samples. Designed fencing algorithms to spatially cluster immune cells around cancer cells, revealing cell-type correlations linked to ICI response. Multi-year analysis pipeline built in Python and R.
Analyzed 4,000+ patient data points to identify demographic correlations in assistive technology usage patterns. Applied hypothesis testing and Power BI dashboards. Findings led to a measurable 25% improvement in clinical outcomes, presented to treating clinicians.
Lightweight convolutional models for real-time wildfire classification deployed on autonomous drones. Custom IMU (Arduino + BNO055 + ESP32) with Kalman Filter achieving 85% reduction in orientation error for indoor navigation during reconnaissance missions.
Continuation of RESNA 2025 work leveraging Functional Mobility Assessment data to drive evidence-based service delivery improvements in a clinical assistive technology setting. Applies statistical modeling to long-term outcome predictors across patient subgroups.
1st Place — OSU College of Medicine Appathon
iOS lymphedema detection app · 95% accuracy · Feb 2024
Honors & Scholars — Ohio State University
GPA 3.7 · Data Analytics · Expected May 2027
Mount Scholars Leadership Society
75+ mentoring hours · Team Security lead · Aug 2023–Present
// 006 · contact
Targeting summer/fall 2026 internships in ML engineering, computer vision, edge AI, and computational research.