Individualized cortical mapping
Studying individual differences in cortical anatomy and their role in brain mapping.
Machine learning & neuroimaging
Ph.D. Candidate in Computer Science
The University of Texas at Arlington

I build machine learning systems and the software around them, spanning medical imaging, multimodal LLMs, clinical agents, and speech. My work combines model training and evaluation with data pipelines, APIs, and full-stack development.
Available December 2026
Software Engineer · Machine Learning Engineer · Data Scientist · Research Scientist
Open to relocation anywhere in the U.S. at my own expense.
Papers with figures and summaries are on publications; CV, résumé and email on contact.
My research focuses on individualized cortical mapping and connectome analysis, exploring how brain structure and connectivity vary across individuals.
Studying individual differences in cortical anatomy and their role in brain mapping.
Exploring brain connectivity through computational methods and machine learning.
Python research prototype using LangGraph and FastAPI for intake, diagnosis, treatment, coding, and a deterministic audit. Extends an open-source scaffold with symptom-based retrieval, curated drug-interaction and allergy checks, bounded diagnosis retries, and a configurable OpenAI-compatible model backend. Includes offline regression tests and an evaluation harness with five synthetic cases and archived stage outputs.
Local speech experiments with reproducible inputs and scoring. One workflow transcribes mixed Chinese–English clips with no, a correct or an unrelated glossary; on 200 frozen ASCEND clips (600 CPU runs) the correct glossary did not recover missed terms, and the small drop in error rate was within noise. The other separates two overlapping speakers, matches them, transcribes with Qwen and writes meeting notes with Ollama.
Reproducible H100 benchmark of eager PyTorch, vLLM 0.17.1 and TensorRT-LLM on the autoregressive backbone of a multi-stage TTS model. vLLM reaches about 453 tok/s against 213 for TensorRT-LLM and 21 for eager, but the LLM is only about 21% of end-to-end latency; the flow-matching stage takes about 68%, which these engines do not cover.
Open-weight TTS and ASR run as a production-style AWS service: Kokoro-82M text-to-speech on ECS Fargate (Graviton), a CPU Whisper transcription endpoint, infrastructure in AWS CDK, keyless OIDC CI/CD, and a GPU LoRA fine-tuning track.
A diagnosis of Direct Preference Optimization on a continuous-latent flow-matching TTS model. The automatic-metric reward consistently prefers the candidate the model finds less likely, so standard DPO pushes the model the wrong way and quality degrades. Shown with a held-out benchmark, a training-free mechanistic probe and a cross-architecture replication, followed by the alignment routes that do work.
Real-time Chinese–English interpretation for medical phone calls, built on Twilio Media Streams and the OpenAI Realtime API, with a live web dashboard and auto-generated SOAP notes. First-token latency is about 400–800 ms end to end.
A wellness web app built around a 27-question Traditional Chinese Medicine constitution screening, scored with the GB/T 46939-2025 standard. Users ask follow-up questions; AI drafts diet, exercise and lifestyle guidance, and a Wellness Advisor reviews every answer before it is shown. Emergency symptoms block the form and point to 911 / 988.
Live at qiorazen.com.
Extracts the gyral net — the network of gyral crests whose three-way junctions are 3-hinge gyri — from cortical surfaces. Reads VTK surface meshes with sulcal depth (or gradient-density maps, the “DensityMap” variant), isolates and thins gyral regions, grows a skeleton tree per region and repairs missing crest links along shortest paths; run on HCP surfaces.
Can open 7B LLMs strip protected health information from clinical notes, zero-shot? Runs LLaMA 1 and 2, Falcon-7B and Flan-T5 on the 514-note n2c2 2014 test set under explicit, implicit and ask-then-delete prompts. A re-read of the 2023 runs shows the rewrite scores sit at the floor of an untouched note (0.597), because the scripts saved the prompt with the output; asking Flan-T5 for the PHI and deleting its answers gave the one real gain (0.737). A synthetic worked example shows every step without the restricted data.
Can one generic LLM read radiology reports as well as models fine-tuned on the task? Builds RadQNLI from RadQA’s MIMIC-III reports by pairing each clinician question with every report sentence and keeping the negatives that share words with the question (ROUGE-1 ≥ 0.2): 9,838 pairs, rebuilt exactly by the repository’s scripts. ChatGPT with three examples drops from 0.81 to 0.62 accuracy as the test negatives share more words with the question, but random negatives of the same count drop almost as far (0.83 to 0.64): most of the decline follows the rising share of entailment pairs. In the paper GPT-4 reaches 0.842 accuracy, against 0.847 for BERT-family models fine-tuned on all the training data. RadQA needs PhysioNet credentialing; a synthetic example shows every step.
Course 640 final project: detects people in street video with a Faster R-CNN model from the TF2 Detection Zoo, links each centroid to its nearest neighbour five frames later and marks links that enter or leave hand-drawn regions. Outputs are annotated videos and a centroid-dot heatmap; in/out totals are not computed.
Course 603 term project: five scikit-learn classifiers on the UCI Cleveland heart-disease data (303 patients, one-hot encoded, one 80/20 split). SVM and random forest reach ROC AUC 0.97 on the 61 held-out patients, ahead of logistic regression (0.96), decision tree (0.95) and k-NN (0.89); the scaler is fitted before the split, so test statistics leak into the scaling.
DATA 641 team project (three people) on news coverage of Russia’s invasion of Ukraine: 2,921 liveuamap posts serve as references, each turned into a dated Google query, giving 6,347 articles from 902 domains (Selenium and newspaper3k). Two LDA comparisons follow: per-outlet topic models of the references each outlet covered, compared by Jaccard distance, and the bigram partners of shared topic words in pairs of articles. Contribution: the proposal, zero-shot NLI tests with XLM-RoBERTa, LDA experiments on reference titles and an articles-per-outlet filter. No bias score or classifier is computed; conclusions are read from the plots.
DATA605 (big data systems) project: finds the days national COVID-19 policy levels change in the OxCGRT tracker and lines them up with a 20-day average of CDC case counts. Read off the plot, policy changes trailed case waves by about a month; no predictive model is trained yet.
Django movie site with user-based (Pearson) and item-based collaborative filtering and a most-viewed fallback, plus search, rating, favourites, an admin back end and review word clouds. Movie data is crawled from Douban; the bundled ratings are 2,200 random ones from 400 seeded accounts.
DATA 602 team project (four people): joins 1,788 US state COVID-19 policy changes from OxCGRT to a per-state profile (census, vaccination, case peaks, hospital beds, party control) and to the CDC case trend on the day of each change, then fits decision trees, kernel ridge and k-means. Contribution: a Selenium scraper for data.census.gov state profiles, the obesity and fire-department data, and the clustering notebook. Bachelor’s-degree share tracks mid-August 2021 vaccination (r = 0.67 across 49 states). The trend targets end on the change day, so the models describe the run-up to each policy rather than its effect, and the clustering notebook fits both of its k-means runs on the demographic table.