Thursday, December 11, 2025

build dpgr training data

 aws

9:30am ->   Worked on downsample DPGR samples in order to build the training data in a reasonable time. 



(base) [hqin@ip-10-3-4-198 dpgr_build_training_data]$ sbatch sample_pair_accuracy.sbatch

Submitted batch job 241

(base) [hqin@ip-10-3-4-198 dpgr_build_training_data]$ squeue

             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)

               241 gpu-a100- dpgrSamp     hqin        0:03      1 gpu-a100-2

               210 gpu-a100- fine_lr5 malam007  R    8:56:48      1 gpu-a100-1

               211 gpu-a100- fine_lr5 malam007  R    8:56:48      1 gpu-a100-1

               212 gpu-a100- fine_lr1 malam007  R    8:56:48      1 gpu-a100-1

               213 gpu-a100- fine_lr1 malam007  R    8:56:48      1 gpu-a100-1

               214 gpu-a100- fine_lr2 malam007  R    8:56:48      1 gpu-a100-1

               215 gpu-a100- fine_lr2 malam007  R    8:56:48      1 gpu-a100-1

               199 gpu-h100- h100-1Ma     hqin CF       0:48      1 gpu-h100-1-1

               198 gpu-h100- dpgrVari     hqin CF       0:48      1 gpu-h100-8-1

  13:08, run sampling accuracy check, verify tuples of location, time windows, DPGR rates in the mapping csv.gz file. 


DPGR summary contains 2,068 unique (Location, Time Window, DPGR (Slope)) tuples.

Warning: 2066 tuples from the DPGR summary were not found in the pairs file.

Checked 100 sampled rows.

No issues found in the sampled subset.

Wrote per-row validation results to sample_pair_validation_results.csv

Wrote tuple comparison summary to logs/sample_pair_tuple_check.241.txt

Finished at: Thu Dec 11 18:25:36 UTC 2025

(base) [hqin@ip-10-3-4-198 dpgr_build_training_data]$ cat logs/sample_pair_tuple_check.241.txt

Found 2 unique (Location, Time Window, DPGR (Slope)) tuples in dpgr_variant_pairs-2025-12-09.csv.gz.

DPGR summary contains 2,068 unique (Location, Time Window, DPGR (Slope)) tuples.

Warning: 2066 tuples from the DPGR summary were not found in the pairs file.

(base) [hqin@ip-10-3-4-198 dpgr_build_training_data]$ git add logs/sample_pair_tuple_check.241.txt

(base) [hqin@ip-10-3-4-198 dpgr_build_training_data]$ git commit -m 'only 2 tuples in mapping results, error found'

[main f68e0a6] only 2 tuples in mapping results, error found

 1 file changed, 3 insertions(+)

 create mode 100644 logs/sample_pair_tuple_check.241.txt

(base) [hqin@ip-10-3-4-198 dpgr_build_training_data]$ git push

13:35. find out the mapping was wrong on Dec 9 mapping out. Only 2 tuples of location, time window, and dpgr were there. So, this is a case that my quality check and feedback to codex is incomplete. 


So, need to redo the mapping. 



(base) [hqin@ip-10-3-4-198 dpgr_build_training_data]$ sbatch scripts/sample_pair_accuracy_small.sbatch 

Submitted batch job 242

(base) [hqin@ip-10-3-4-198 dpgr_build_training_data]$ squeue

             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)

               242 gpu-a100- dpgrSamp     hqin CF       0:02      1 gpu-a100-2

               210 gpu-a100- fine_lr5 malam007  R    9:42:42      1 gpu-a100-1

               211 gpu-a100- fine_lr5 malam007  R    9:42:42      1 gpu-a100-1

               212 gpu-a100- fine_lr1 malam007  R    9:42:42      1 gpu-a100-1

               213 gpu-a100- fine_lr1 malam007  R    9:42:42      1 gpu-a100-1

               214 gpu-a100- fine_lr2 malam007  R    9:42:42      1 gpu-a100-1

               215 gpu-a100- fine_lr2 malam007  R    9:42:42      1 gpu-a100-1

               199 gpu-h100- h100-1Ma     hqin CF       1:42      1 gpu-h100-1-1

               198 gpu-h100- dpgrVari     hqin CF       1:42      1 gpu-h100-8-1

(base) [hqin@ip-10-3-4-198 dpgr_build_training_data]$ 

(base) [hqin@ip-10-3-4-198 dpgr_build_training_data]$ 

(base) [hqin@ip-10-3-4-198 dpgr_build_training_data]$ 

13:54 submitted the above slurm job to test the revised mapping code

14:18, revised the slurm job and resubmitted. 


Noticed that default python is now 3.12.12. So, my venv of python 3.12 is unnecessary now. 


(base) [hqin@ip-10-3-4-198 dpgr_build_training_data]$ 

(base) [hqin@ip-10-3-4-198 dpgr_build_training_data]$ cat scripts/sample_pair_accuracy_small.sbatch 

#!/bin/bash

#SBATCH --job-name=dpgrSampleAccuracySmall

#SBATCH --time=00:20:00

#SBATCH --partition=gpu-a100-8

#SBATCH --ntasks=1

#SBATCH --cpus-per-task=2

#SBATCH --output=logs/sample_pair_accuracy.small.%j.out


# Small-scale Slurm job to generate a tiny mapping and sample-check it.

set -euo pipefail


# Default to the submission directory so the script works across hosts.

WORKDIR="${SLURM_SUBMIT_DIR:-$(pwd)}"


# Fall back to a home-relative clone if the submission directory is missing

# (e.g., when submitting from a container-only path like /workspace).

if [ ! -d "$WORKDIR" ] && [ -d "$HOME/dpgr_build_training_data" ]; then

  WORKDIR="$HOME/dpgr_build_training_data"

fi


cd "$WORKDIR"


# Optional: activate your environment (uncomment and adjust as needed).

# source ~/miniforge3/etc/profile.d/conda.sh

# conda activate dpgr310


PAIRS_DATE=$(date +%Y-%m-%d)

PAIRS_FILE="dpgr_variant_pairs-${PAIRS_DATE}.csv"


python - <<'PY'

import generate_dpgr_variant_mapping as g


g.MAX_CANDIDATES_PER_VARIANT = 500

g.MAX_TOTAL_PAIRS = 2000

g.debug = 1


g.main()

PY


mkdir -p logs

python scripts/sample_pair_accuracy.py \

  --pairs "${PAIRS_FILE}" \

  --dpgr dpgr_analysis_summary.csv \

  --metadata metadata1K.tsv \

  --sample-size 25 \

  --random-state 7 \

  --tuple-output "logs/sample_pair_tuple_check.$SLURM_JOB_ID.txt"


14:26, run above slurm job. 

14:33, un-commted virtual enviroment, and run sample_pair_accuracy_small.sbatch  again. 


16:31. delete old output, and sbatch scripts/generate_dpgr_variant_mapping_full.sbatch 


17:34, discovered global paramenters in the py file that set the limit. 

debug = 0
MAX_CANDIDATES_PER_VARIANT = 50_000
MAX_TOTAL_PAIRS = 500_000
MAX_PAIRS_PER_DPGR = 250


Set MAX_PAIRS_PER_DPGR as 100, and MAX_TOTAL_PAIRS = 1,000,000, MAX_CANDIDATES_PER_VARIANT = 1000


17:39, (base) [hqin@ip-10-3-4-198 dpgr_build_training_data]$ sbatch scripts/generate_dpgr_variant_mapping_full.sbatch

Submitted batch job 250

(base) [hqin@ip-10-3-4-198 dpgr_build_training_data]$ scontrol show job 250

JobId=250 JobName=dpgrVariantMapFull

   UserId=hqin(1004) GroupId=hqin(1004) MCS_label=N/A

   Priority=1 Nice=0 Account=(null) QOS=(null)

   JobState=RUNNING Reason=None Dependency=(null)

   Requeue=1 Restarts=0 BatchFlag=1 Reboot=0 ExitCode=0:0

   RunTime=00:05:25 TimeLimit=08:00:00 TimeMin=N/A

   SubmitTime=2025-12-11T22:39:06 EligibleTime=2025-12-11T22:39:06

   AccrueTime=2025-12-11T22:39:06

   StartTime=2025-12-11T22:46:35 EndTime=2025-12-12T06:46:35 Deadline=N/A

   SuspendTime=None SecsPreSuspend=0 LastSchedEval=2025-12-11T22:39:06 Scheduler=Backfill

   Partition=gpu-a100-8 AllocNode:Sid=ip-10-3-4-198:31406

   ReqNodeList=(null) ExcNodeList=(null)

   NodeList=gpu-a100-4

   BatchHost=gpu-a100-4

   NumNodes=1 NumCPUs=8 NumTasks=1 CPUs/Task=8 ReqB:S:C:T=0:0:*:*

   ReqTRES=cpu=8,mem=1120665M,node=1,billing=8

   AllocTRES=cpu=8,node=1,billing=8

   Socks/Node=* NtasksPerN:B:S:C=0:0:*:* CoreSpec=*

   MinCPUsNode=8 MinMemoryNode=0 MinTmpDiskNode=0

   Features=(null) DelayBoot=00:00:00

   OverSubscribe=OK Contiguous=0 Licenses=(null) LicensesAlloc=(null) Network=(null)

   Command=/home/hqin/dpgr_build_training_data/scripts/generate_dpgr_variant_mapping_full.sbatch

   WorkDir=/home/hqin/dpgr_build_training_data

   StdErr=/home/hqin/dpgr_build_training_data/logs/dpgr_variant_mapping.full.250.out

   StdIn=/dev/null

   StdOut=/home/hqin/dpgr_build_training_data/logs/dpgr_variant_mapping.full.250.out

   TresPerTask=cpu=8

   


17:55

(base) [hqin@ip-10-3-4-198 dpgr_build_training_data]$ cut -d ',' -f 2 /home/hqin/dpgr_build_training_data/dpgr_variant_pairs-2025-12-11.csv | tail -n +2 | sort | uniq

Africa

Asia

Europe

North America

Oceania

South America


17:57, it seems there are 1639 unique tuples of Location and Time window

(base) [hqin@ip-10-3-4-198 dpgr_build_training_data]$ cut -d ',' -f 2,3 /home/hqin/dpgr_build_training_data/dpgr_variant_pairs-2025-12-11.csv | tail -n +2 | sort | uniq | wc -l

1639


Python check find our tuples, 2033 unique triple tuples. 

(base) [hqin@ip-10-3-4-198 dpgr_build_training_data]$ 

(base) [hqin@ip-10-3-4-198 dpgr_build_training_data]$ cat logs/dpgr_variant_mapping.full.250.out

Saved 169942 sampled pairs to /home/hqin/dpgr_build_training_data/dpgr_variant_pairs-2025-12-11.csv

Found 2,033 unique (Location, Time Window, DPGR (Slope)) tuples in dpgr_variant_pairs-2025-12-11.csv.

DPGR summary contains 2,068 unique (Location, Time Window, DPGR (Slope)) tuples.

Warning: 35 tuples from the DPGR summary were not found in the pairs file.

Checked 200 sampled rows.

Found 1 rows with potential issues.

Issue breakdown:

  - Metadata collection date missing or invalid: 1

  - Collection date could not be parsed: 1


Examples (up to 10):

DPGR row 13 (EPI_ISL_1501662 / EPI_ISL_2163883) -> Metadata collection date missing or invalid, Collection date could not be parsed

Wrote per-row validation results to logs/sample_pair_validation_results.full.250.csv

Wrote tuple comparison summary to logs/sample_pair_tuple_check.full.250.txt



no changes added to commit (use "git add" and/or "git commit -a")

(base) [hqin@ip-10-3-4-198 dpgr_build_training_data]$ cat logs/sample_pair_tuple_check.full.250.txt

Found 2,033 unique (Location, Time Window, DPGR (Slope)) tuples in dpgr_variant_pairs-2025-12-11.csv.

DPGR summary contains 2,068 unique (Location, Time Window, DPGR (Slope)) tuples.

Warning: 35 tuples from the DPGR summary were not found in the pairs file.

(base) [hqin@ip-10-3-4-198 dpgr_build_training_data]$ 

(base) [hqin@ip-10-3-4-198 dpgr_build_training_data]$ 

In 200 sampled entries, one row has an irregular collection date. So, the potential error rate is 1/200 ~ 0.5%. 


20:51, committed. 


22:30

(base) [hqin@ip-10-3-4-198 dpgr_build_training_data]$ squeue -u hqin

             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)

               259  gpu-A10G dpgrPair     hqin CF       1:04      1 gpu-A10G-1

               199 gpu-h100- h100-1Ma     hqin PD       0:00      1 (BeginTime)

               198 gpu-h100- dpgrVari     hqin PD       0:00      1 (BeginTime)





(base) [hqin@ip-10-3-4-198 dpgr_build_training_data]$ sh  scripts/debug_submit_slice_jobs.sh 

Prepared 33 slices in tmp/variant_pair_slices_debug

Submitting only first 5 slice(s) due to --max-jobs

DRY RUN: sbatch --job-name dpgrRows000001-000002 --partition gpu-a100-8 --cpus-per-task 2 --time 00:15:00 --output logs/build_fasta_pair_000001-000002.%j.out --wrap 'cd /home/hqin/dpgr_build_training_data && source ~/miniforge3/etc/profile.d/conda.sh && conda activate dpgr310 && python scripts/build_fasta_pair_and_dpgr.py --pairs-path tmp/variant_pair_slices_debug/dpgr_variant_pairs-2025-12-11-small_rows000001-000002.csv --sequences-path data/raw/sequences.fasta --metadata-path metadata1K.tsv --output-dir data/processed/row_slices_debug/rows000001-000002 --label-path data/labels/row_slices_debug/dpgr_pair_labels_rows000001-000002.tsv --pair-prefix ROWS000001-000002_ --shard-size 500 --chunk-size 1000'

DRY RUN: sbatch --job-name dpgrRows000003-000004 --partition gpu-a100-8 --cpus-per-task 2 --time 00:15:00 --output logs/build_fasta_pair_000003-000004.%j.out --wrap 'cd /home/hqin/dpgr_build_training_data && source ~/miniforge3/etc/profile.d/conda.sh && conda activate dpgr310 && python scripts/build_fasta_pair_and_dpgr.py --pairs-path tmp/variant_pair_slices_debug/dpgr_variant_pairs-2025-12-11-small_rows000003-000004.csv --sequences-path data/raw/sequences.fasta --metadata-path metadata1K.tsv --output-dir data/processed/row_slices_debug/rows000003-000004 --label-path data/labels/row_slices_debug/dpgr_pair_labels_rows000003-000004.tsv --pair-prefix ROWS000003-000004_ --shard-size 500 --chunk-size 1000'

DRY RUN: sbatch --job-name dpgrRows000005-000006 --partition gpu-a100-8 --cpus-per-task 2 --time 00:15:00 --output logs/build_fasta_pair_000005-000006.%j.out --wrap 'cd /home/hqin/dpgr_build_training_data && source ~/miniforge3/etc/profile.d/conda.sh && conda activate dpgr310 && python scripts/build_fasta_pair_and_dpgr.py --pairs-path tmp/variant_pair_slices_debug/dpgr_variant_pairs-2025-12-11-small_rows000005-000006.csv --sequences-path data/raw/sequences.fasta --metadata-path metadata1K.tsv --output-dir data/processed/row_slices_debug/rows000005-000006 --label-path data/labels/row_slices_debug/dpgr_pair_labels_rows000005-000006.tsv --pair-prefix ROWS000005-000006_ --shard-size 500 --chunk-size 1000'

DRY RUN: sbatch --job-name dpgrRows000007-000008 --partition gpu-a100-8 --cpus-per-task 2 --time 00:15:00 --output logs/build_fasta_pair_000007-000008.%j.out --wrap 'cd /home/hqin/dpgr_build_training_data && source ~/miniforge3/etc/profile.d/conda.sh && conda activate dpgr310 && python scripts/build_fasta_pair_and_dpgr.py --pairs-path tmp/variant_pair_slices_debug/dpgr_variant_pairs-2025-12-11-small_rows000007-000008.csv --sequences-path data/raw/sequences.fasta --metadata-path metadata1K.tsv --output-dir data/processed/row_slices_debug/rows000007-000008 --label-path data/labels/row_slices_debug/dpgr_pair_labels_rows000007-000008.tsv --pair-prefix ROWS000007-000008_ --shard-size 500 --chunk-size 1000'

DRY RUN: sbatch --job-name dpgrRows000009-000010 --partition gpu-a100-8 --cpus-per-task 2 --time 00:15:00 --output logs/build_fasta_pair_000009-000010.%j.out --wrap 'cd /home/hqin/dpgr_build_training_data && source ~/miniforge3/etc/profile.d/conda.sh && conda activate dpgr310 && python scripts/build_fasta_pair_and_dpgr.py --pairs-path tmp/variant_pair_slices_debug/dpgr_variant_pairs-2025-12-11-small_rows000009-000010.csv --sequences-path data/raw/sequences.fasta --metadata-path metadata1K.tsv --output-dir data/processed/row_slices_debug/rows000009-000010 --label-path data/labels/row_slices_debug/dpgr_pair_labels_rows000009-000010.tsv --pair-prefix ROWS000009-000010_ --shard-size 500 --chunk-size 1000'

(base) [hqin@ip-10-3-4-198 dpgr_build_training_data]$ 


1:13am

(base) [hqin@ip-10-3-4-198 dpgr_build_training_data]$ git pull

Warning: Permanently added 'github.com,140.82.112.3' (ECDSA) to the list of known hosts.

remote: Enumerating objects: 6, done.

remote: Counting objects: 100% (6/6), done.

remote: Compressing objects: 100% (6/6), done.

remote: Total 6 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0)

Unpacking objects: 100% (6/6), 5.10 KiB | 30.00 KiB/s, done.

From github.com:QinLab/dpgr_build_training_data

   ee52044..118ab5b  main                                                 -> origin/main

 * [new branch]      codex/turn-off-dry-run-in-debug_submit_slice_jobs.sh -> origin/codex/turn-off-dry-run-in-debug_submit_slice_jobs.sh

Updating ee52044..118ab5b

Fast-forward

 README.md                          |  4 ++--

 scripts/debug_submit_slice_jobs.sh | 10 +++++-----

 2 files changed, 7 insertions(+), 7 deletions(-)

(base) [hqin@ip-10-3-4-198 dpgr_build_training_data]$ sh  scripts/debug_submit_slice_jobs.sh 

Prepared 33 slices in tmp/variant_pair_slices_debug

Submitting only first 5 slice(s) due to --max-jobs

Submitted dpgrRows000001-000002: Submitted batch job 262

Submitted dpgrRows000003-000004: Submitted batch job 263

Submitted dpgrRows000005-000006: Submitted batch job 264

Submitted dpgrRows000007-000008: Submitted batch job 265

Submitted dpgrRows000009-000010: Submitted batch job 266


Concatenate label outputs after jobs complete:

cat data/labels/row_slices_debug/dpgr_pair_labels_rows*.tsv > data/labels/row_slices_debug/dpgr_pair_labels_all.tsv

(base) [hqin@ip-10-3-4-198 dpgr_build_training_data]$ squeue

             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)

               261  gpu-A10G dpgrPair     hqin  R      15:58      1 gpu-A10G-1

               262 gpu-a100- dpgrRows     hqin CF       0:07      1 gpu-a100-2

               263 gpu-a100- dpgrRows     hqin CF       0:07      1 gpu-a100-2

               264 gpu-a100- dpgrRows     hqin CF       0:07      1 gpu-a100-2

               265 gpu-a100- dpgrRows     hqin CF       0:07      1 gpu-a100-2

               266 gpu-a100- dpgrRows     hqin CF       0:07      1 gpu-a100-2

               210 gpu-a100- fine_lr5 malam007  R   21:00:58      1 gpu-a100-1

               211 gpu-a100- fine_lr5 malam007  R   21:00:58      1 gpu-a100-1

               212 gpu-a100- fine_lr1 malam007  R   21:00:58      1 gpu-a100-1

               213 gpu-a100- fine_lr1 malam007  R   21:00:58      1 gpu-a100-1

               214 gpu-a100- fine_lr2 malam007  R   21:00:58      1 gpu-a100-1

               215 gpu-a100- fine_lr2 malam007  R   21:00:58      1 gpu-a100-1

               199 gpu-h100- h100-1Ma     hqin PD       0:00      1 (BeginTime)

               198 gpu-h100- dpgrVari     hqin PD       0:00      1 (BeginTime)

(base) [hqin@ip-10-3-4-198 dpgr_build_training_data]$ 




























Bosch Small Traffic Lights Dataset

 

https://www.kaggle.com/datasets/researcherno1/small-traffic-lights?resource=download


Tuesday, December 9, 2025

FDA approved AI tools

 two AI-based tools related to liver disease that have received regulatory milestones by the U.S. Food and Drug Administration (FDA). Note: the list is small because few liver-AI tools have full diagnostic clearance yet.


1. AIM‑NASH (by PathAI)

  • This is a cloud-based AI system that analyses digital images of liver biopsy histology to score features like steatosis (fat infiltration), lobular inflammation, ballooning and fibrosis according to the NASH Clinical Research Network scoring system. (U.S. Food and Drug Administration)

  • The FDA qualified AIM-NASH as a Drug Development Tool (DDT) for use in clinical trials of Metabolic Dysfunction‑Associated Steatohepatitis (MASH) / formerly NASH. (U.S. Food and Drug Administration)

  • Important limitations: This qualification does not indicate clearance/approval for standalone diagnostic use in routine clinical practice. A pathologist must still review and approve the results. (Fierce Biotech)

  • Intended context: clinical trial endpoints and histology scoring standardisation. (pharmaphorum)


2. Velacur ONE (by Sonic Incytes Medical Corp.)

  • This is a point-of-care ultrasound elastography device with AI-guided features, intended to assess liver stiffness (fibrosis), attenuation (fat), and a proprietary fat fraction metric (VDFF) for management of chronic liver disease (including MASLD/MASH). (DI Europe)

  • The FDA granted 510(k) clearance to the Velacur ONE for features supporting liver disease assessment. (DI Europe)

  • This tool is more in the imaging/point-of-care device side, rather than purely software-AI histology scoring.


Summary Table

Tool Regulatory Status Purpose/Use Case Key Notes
AIM-NASH FDA qualified as DDT Histology scoring in MASH drug trials Not cleared for general clinical diagnosis
Velacur ONE FDA 510(k) clearance POC ultrasound elastography for liver disease Device + AI guidance, non-biopsy mode


Thursday, December 4, 2025

20251204 deep seek

== In-class to do: 

clean up destktop space, calendars, 

ZOOM, live transcript (start video recording). 

ODU course survey. 

basic principle, pdf, 

 MLA: Capacity & efficiency (esp. KV cache reduction / long-context handling).

github: rotary encoding, multihead latent attention, 

R1 nature paper, reasoning through RL. 






Wednesday, December 3, 2025

aws ec2 usage

 $ conda deactivate 

$ module load python3
$ crun ~/envs/scGPT/bin/python3
>>> import scgpt 

Or, to run a script directly: 
$ module load python3
$ crun ~/envs/scGPT/bin/python3 python_file.py 

several new GPUpartitions: 
gpu-a100-8: Single node with 8x A100 GPUs (up to 4 nodes)
gpu-h100-1: Single node with 1x H100 GPU (up to 4 nodes)
gpu-h100-8: Single node with 8x H100 GPUs (up to 4 nodes) 

Tuesday, December 2, 2025

funding application

 audio and conversation file with AD and non-AD progression? LLM 

https://cdmrp.health.mil/pubs/press/2025/25azrppreann

Transforming Research AwardThe PI must be an independent investigator at any career level.
CIT Partnership Option: an eligible PI, as above, and either
  • Career Initiation: an investigator three or more years from their terminal degree but no more than seven years into an independent position
    OR
  • Career Transition: an investigator transitioning from another field to the AD/ADRD/TBI/military health fields and has only nominal, if any, publications in the AD-related field.
  • Supports high-impact research that addressed the priority area of "Reduce risk and prevent AD/ADRD."
  • Projects must be responsive to a FY25 AZRP TrRA focus area:
    • Risk factor knowledge
    • Risk reduction solutions
  • Clinical trials are not supported, but studies with prospective human subjects' enrollment may be allowed.
    • Applications proposing clinical studies will require community collaboration.
  • Studies leveraging existing cohorts or data sets are encouraged.
  • Animal studies that are fully justified for relevance to human health are allowed.
    • Community collaboration is not required for projects that focus primarily on animal studies but is encouraged.
  • The CIT Option is available.
  • Submission of a preproposal is required; application submission is by invitation only.
  • Maximum period of performance is 4 years
Single PI:
  • Maximum funding of $1.0M for total costs.
CIT Partnership Option:
  • Maximum funding of $1.0M for total costs.

Monday, December 1, 2025

aws ec2 miniforge3 conda

 

source ~/miniforge3/etc/profile.d/conda.sh

conda init bash

source ~/.bashrc
conda create -n dpgr310 python=3.10 -y

conda activate dpgr310

(dpgr310) pip install -r requirements.txt
# or at least:
(dpgr310) pip install pandas

Friday, November 21, 2025

Accessibility of Technology for People With Dementia

 https://amandalazar.net/Research.html?utm_source=chatgpt.com

Summary of Amanda Lazar’s Research Page

  • The lab studies how researchers and designers conceptualize marginalized populations, especially around vulnerability, disability, and wellness.

  • Their work includes designing and building novel interactive systems and conducting long-term mixed-method evaluations.

  • A major focus is on technologies for older adults, especially individuals with cognitive impairments such as dementia.


Current Projects

1. Accessibility of Technology for People With Dementia

  • Investigates how technologies for meaningful engagement are currently used by people with dementia.

  • Includes interviews with practitioners, people with dementia, and caregivers.

  • Aims to identify barriers to long-term technology use and unmet needs.

  • Goal is to guide the design of technologies that better support meaningful engagement.

  • Led by Emma Dixon (PhD student, iSchool).

  • Funded by U.S. Administration for Community Living, HHS (Grant 90REGE0008).

2. Knowledge Sharing Between Experts and Novices

  • Focuses on how to design technologies (particularly VR/MR) to support the sharing of embodied skills (e.g., woodworking, knitting, gardening) between generations.

  • Addresses how technology can help people access meaningful hobbies despite disabilities or constraints.

  • Current work centers on gardening, with participant observation and interviews.

  • Studies how experienced older gardeners can mentor younger novices remotely.

  • Led by Teja Maddali (PhD student, Computer Science).

3. Future of Smart Homes and IoT for Aging in Place

  • Examines why older adults adopt or abandon IoT technologies.

  • Explores integrating maker technology so retirees can build IoT devices that matter to them.

  • Developing a modular toolkit to allow older adults to design their own IoT systems.

  • Includes a human-rights-based co-design study involving people with dementia in intergenerational workshops.

  • Projects explore smart home technologies in cohousing contexts.

  • Led by Alisha Pradhan (PhD student, iSchool).

  • Funded by NSF Award #1816145.


Tuesday, November 18, 2025

ODURF GRA support request

 Here’s a streamlined protocol you can follow next time you submit GRA support in the Research Foundation portal.


Protocol: Creating a GRA EPASS / Assignment in the Research Foundation Portal


0. Before you start


Have these items ready:

  • GRA’s full name and ODU email

  • Their home academic department/program (critical for routing)

  • Employee type: GR (Graduate Research Assistant)

  • Pay basis: semester or annual (you used semester basis)

  • Stipend for the semester (e.g., $11,000)

  • Hours per week: usually 20 hours

  • Funding project (RF project number)

  • Whether there is a tuition exemption, and if so:

    • Source (e.g., ODU Research Foundation)

    • Level (Master’s or Doctoral)


Important: You must know the student’s home department/program. The EPASS routes to that chair/dean for approval and cannot be changed later. If it’s wrong, the assignment must be deleted and recreated.


1. Start a new assignment

  1. Log in to the Research Foundation portal. https://hera.odurf.odu.edu/RFPortal 

  2. Go to “Research Assignments”.

  3. In the blue bar, click “Add Assignment”.


2. Add or select the GRA as an employee

  1. Next to Employee ID, click “Select”.

  2. Try typing the student’s name:

    • If found: select them.

    • If not found:

      • Click “Start a new employee” at the bottom.

      • Enter first name, last name, and email.

      • Save.

      • Then click “Select” again and choose the new employee.


3. Set employee type, department, and term

  1. Set Employee Type to GR.

  2. Choose Pay Basis:

    • For GRA by term, select Semester basis.

  3. Select Employee Department from the dropdown: (eg 6093 Computer Science)

    • This must be the student’s home department/program (not your department if they’re different).

    • Do not proceed until you are sure this is correct; it controls the routing path.

  4. Select the semester (e.g., Fall).

  5. Click “Save and Next”.


If the wrong department is chosen at this step, it cannot be edited later. The EPASS must be deleted and recreated.


4. Enter salary and hours

  1. In Annual/Term Salary, enter the semester stipend amount (since you selected semester basis).

  2. Enter Hours per Week = 20.


5. Set tuition exemption (if applicable)

  1. Locate the Tuition Exemption section.

  2. Select the appropriate option (e.g., ODU RF Tuition Exemption).

  3. Choose the degree level: Master’s or Doctoral (for your case: Doctoral).

  4. Indicate if you are covering 100% of tuition or another percentage, as required.


(Note: this tuition entry is separate from salary and fringe.)


6. Add the payline

  1. Scroll down to Payline and click “Add Payline”.

  2. Select the correct project from the list.

  3. For the payline details:

    • You can enter hours/week (e.g., 20) for the project.

    • Do not manually type the budget amount.

  4. To calculate salary for that payline:

    • Click “Calc” next to Budget on the right.

    • The system will calculate the salary based on the previously entered stipend and hours.

  5. Adjust any rounding (e.g., remove a $0.01 extra) if needed.

  6. Click “Create” to finalize the payline.


(This covers salary only – no tuition, no fringe.)


7. Review, edit, and submit

  1. Click “Save” to save the assignment.

  2. To review or change details:

    • Go to the top and click “Edit Assignment” (green button).

    • Confirm:

      • Employee type = GR

      • Correct home department

      • Semester basis and semester

      • Stipend amount and 20 hours/week

      • Tuition exemption details

      • Correct project and calculated payline

  3. When everything looks correct, click “Submit”.

  4. The status will show pending chair approval, routed through the student’s home department.


8. If the department is wrong

  • The department cannot be edited in an existing assignment.

  • The RF staff must delete the assignment, and you must create a new one with the correct department.

  • If you are unsure of the student’s department:

    • Check the offer letter, the program catalog, or contact the Graduate School / program.

    • You can also coordinate with RF staff to help verify if needed.


9. New hire paperwork

  • RF will request new hire paperwork from the student if needed.

  • Remind the student to complete all HR documents promptly so the GRA appointment can be processed on time.


Monday, November 17, 2025

Saturday, November 15, 2025

patent related to AI

 

Neural taxonomy expander

https://patents.google.com/patent/US20250259081A1/en


Wednesday, November 12, 2025

AMIA LLM workshop, material AI for Health

 

https://workshopamia2025.github.io/AMIA-KDDM-2025/


chrome-extension://efaidnbmnnnibpcajpcglclefindmkaj/https://workshopamia2025.github.io/AMIA-KDDM-2025/slides/AMIA%202025%20KDDM%20Workshop_Demo_Balu_Version%202.pdf



Monday, November 10, 2025

ROSMAP data

 


The links are

Command line: 
synapse get -r syn21311380

Python: 
import synapseclient
import synapseutils
syn = synapseclient.Synapse()
syn.login(authToken="YOUR_TOKEN_HERE")
files = synapseutils.syncFromSynapse(syn, 'syn21311380')

Wednesday, November 5, 2025

Spectral Foundations of Elastic Network Models

Elastic Network Models (ENMs) are deeply connected to spectral analysis, both mathematically and conceptually.
In fact, the core of ENM theory is spectral analysis of the system’s stiffness (Hessian) matrix.
Here’s a detailed explanation that connects ENM theory to classical and modern spectral methods across physics, engineering, and applied mathematics:


1. Spectral Foundation of ENM

When you build an ENM, you define a stiffness matrix ( H ) that encodes spring interactions between all node pairs (atoms, residues, or coarse elements).
ENM analysis then solves the eigenvalue problem:

[
H \mathbf{u}_k = \lambda_k \mathbf{u}_k
]

This is precisely a spectral decomposition of the network’s Laplacian-like operator:

  • ( \mathbf{u}_k ): eigenvectors (normal modes)

  • ( \lambda_k ): eigenvalues (mode stiffness or squared frequency)

So the “spectrum” of an ENM — the ordered list of eigenvalues — represents the vibrational frequency spectrum of the molecular or mechanical network.


2. Connection to Graph Spectral Theory

The ENM is mathematically equivalent to a weighted graph Laplacian:

[
L_{ij} =
\begin{cases}

  • k_{ij} & i \neq j, \
    \sum_{m \neq i} k_{im} & i = j
    \end{cases}
    ]

where ( k_{ij} ) are spring constants.
In this form:

  • (L) is symmetric and positive semidefinite.

  • Its eigenvectors describe collective deformation patterns.

  • Its eigenvalues describe mode stiffness (λ) or oscillation frequencies (ω²).

This is directly analogous to spectral graph theory, where eigenvectors of (L) define smooth “vibrations” over a network — the same concept used in graph signal processing and diffusion geometry.


3. Low-Frequency Spectrum → Global Collective Motion

In ENM:

  • The lowest nonzero eigenvalues correspond to soft, large-scale motions (e.g., hinge bending in proteins).

  • The high-frequency spectrum corresponds to local vibrations (e.g., bond stretching).

Spectral analysis isolates these frequencies, enabling dimensionality reduction:
Instead of using 3N coordinates, ENM keeps only the first ~20–50 eigenmodes — just as in principal component analysis (PCA) or Fourier decomposition.

This is why ENM-based normal mode analysis (NMA) is sometimes called “spectral mode decomposition of structure.”


4. Spectral Analogies in Other Domains

Field Operator Eigenvectors represent ENM Equivalent
Quantum mechanics Schrödinger operator stationary states normal modes
Graph theory Laplacian diffusion patterns elastic vibrations
Image processing Graph Laplacian texture or segmentation basis molecular domain partitioning
Mechanics Stiffness/mass matrices vibration shapes residue motion
Data science Covariance matrix PCA directions soft collective modes

Thus, the ENM spectrum is analogous to a vibrational fingerprint or energy landscape basis — widely used for reduced modeling, clustering, and dynamics inference.


5. Spectral Quantities Extracted from ENM

Spectral Quantity Meaning / Use
Eigenvalues ((λ_k)) Mode stiffness or frequency; related to energy curvature
Eigenvectors ((u_k)) Collective motion directions
Spectral density Distribution of stiffness over frequency bands
Spectral gap Rigidity vs flexibility contrast; useful for detecting modular domains
Participation ratio Localization measure of each mode
Mode overlap Projection between observed conformational changes and ENM modes
Spectral entropy Quantifies complexity of the motion spectrum

6. Spectral Applications in ENM Research

  1. Dimensional reduction – Keep the top 10–20 softest modes to represent conformational changes efficiently.

  2. Domain decomposition – Detect flexible regions by analyzing spectral gaps or nodal structure of eigenmodes.

  3. Allosteric communication – Use mode correlation spectra to identify dynamic coupling between residues.

  4. Multiscale analysis – Compare spectra across coarse-grained and fine-grained ENMs to infer scale invariance.

  5. AI/ML integration – Use ENM eigenvalues as spectral graph features for learning protein motion embeddings.


7. Summary Connection

Concept ENM Term Spectral Analogy
Stiffness matrix (H) Elastic coupling Graph Laplacian
Normal modes Eigenvectors Basis functions
Mode frequencies Eigenvalues Spectrum
Collective motion Low-frequency subspace Smooth eigenfunctions
Rigidity transition Spectral gap Connectivity change

Key Insight:
The Elastic Network Model is not just similar to spectral analysis — it is a spectral analysis of molecular mechanics.
It’s a graph-based eigen-decomposition of the protein’s elastic energy landscape.


Would you like me to show a small numerical example (e.g., a 5-node ENM stiffness matrix and its spectral decomposition) to visualize how the eigenmodes correspond to motion patterns?