Skip to content

Commit 8c93722

Browse files
Phase 1: NOFO + Specific Aims (R21 animacy) (#41)
* scaffold: r21 epic state file * scaffold: r21 epic state, drop epic branch * r21 phase 1: aims + nofo + scaffold * ci: path-filter matlab workflows
1 parent 84cce91 commit 8c93722

17 files changed

Lines changed: 316 additions & 33 deletions

File tree

.claude/epic-r21.local.md

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
---
2+
epic_issue: 35
3+
epic_title: "R21 (NIMH), Animacy across age in naturalistic viewing (HBN R3)"
4+
integration_branch: main
5+
epic_branch: null
6+
worktree_base: "../r21-phase{N}-*"
7+
mechanism: "NIH R21"
8+
target_ic: "NIMH"
9+
nofo: "TBD in Phase 1 (parent PA-23-058 or NIMH-specific)"
10+
phases:
11+
- number: 1
12+
title: "NOFO selection and Specific Aims"
13+
issue: 36
14+
branch: "feature/issue-36-phase1-aims"
15+
status: pending
16+
- number: 2
17+
title: "Significance and Innovation, lit-review expansion"
18+
issue: 37
19+
branch: "feature/issue-37-phase2-sig-inn"
20+
status: pending
21+
- number: 3
22+
title: "Approach, preliminary data, timeline"
23+
issue: 38
24+
branch: "feature/issue-38-phase3-approach"
25+
status: pending
26+
- number: 4
27+
title: "Supplemental sections (Bib, Facilities, DMS, Budget, Biosketches)"
28+
issue: 39
29+
branch: "feature/issue-39-phase4-supplemental"
30+
status: pending
31+
- number: 5
32+
title: "Assembly, grant-review, humanizer pass"
33+
issue: 40
34+
branch: "feature/issue-40-phase5-assembly"
35+
status: pending
36+
current_phase: 1
37+
created_at: "2026-05-13T17:05:00Z"
38+
updated_at: "2026-05-13T17:05:00Z"
39+
---
40+
41+
## Notes
42+
43+
- Parallel to Epic #1 (HBN ERSP analysis). Both use main as integration branch; phase PRs land into main directly (no separate epic-merge branch), matching the project convention in CLAUDE.md.
44+
- State file is separate from Epic #1's `.claude/epic.local.md` to avoid collision.
45+
- Preliminary data source: whatever Epic #1 derivatives have landed by Phase 3 start. Cite published HBN-EEG R3 group results where available; clearly label pilot vs group.
46+
- Lit-review strategy: existing 98-paper corpus in `research/collection/` plus `direction-papers/movie-ersp-direction.md` is the base. Phase 2 expands via `opencite:opencite` on animacy/biological motion, developmental EEG, and naturalistic-viewing time-resolved EEG.
47+
- Proposal directory: `proposals/r21-nimh/2026-animacy/` (created in Phase 1).
48+
- R21 constraints: 2 years, $275K direct costs total; 1p aims + 6p strategy.
49+
- No emojis in commits/PRs/issues. No em-dashes in prose. Define abbreviations on first use.
50+
- Per-phase review: invoke `/review-pr` on each phase PR. For Phase 5, also invoke `grant:grant-review` and `grant-figure-qa` before finalization.

.github/workflows/lint.yml

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -55,36 +55,3 @@ jobs:
5555
!derivatives/**
5656
!node_modules/**
5757
!research/collection/*/*/source.md
58-
59-
matlab-syntax:
60-
name: matlab syntax (checkcode)
61-
runs-on: ubuntu-latest
62-
steps:
63-
- uses: actions/checkout@v4
64-
- uses: matlab-actions/setup-matlab@v2
65-
with:
66-
release: R2024a
67-
- name: Run checkcode on src/matlab
68-
uses: matlab-actions/run-command@v2
69-
with:
70-
command: |
71-
files = dir(fullfile('src','matlab','**','*.m'));
72-
if isempty(files)
73-
error('hbn:lint:no_sources', ...
74-
'No MATLAB sources found under src/matlab; refusing to pass.');
75-
end
76-
paths = fullfile({files.folder}, {files.name});
77-
issues = checkcode(paths{:}, '-id', '-severity');
78-
n = 0;
79-
for k = 1:numel(issues)
80-
msgs = issues{k};
81-
for j = 1:numel(msgs)
82-
fprintf('%s:%d: [%s] %s\n', paths{k}, msgs(j).line, msgs(j).id, msgs(j).message);
83-
if ~isempty(msgs(j).severity) && msgs(j).severity > 0
84-
n = n + 1;
85-
end
86-
end
87-
end
88-
if n > 0
89-
error('checkcode found %d severe issues.', n);
90-
end
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
name: matlab-syntax
2+
3+
on:
4+
push:
5+
branches: [main]
6+
paths:
7+
- 'src/matlab/**'
8+
- 'tests/matlab/**'
9+
- '.github/workflows/matlab-syntax.yml'
10+
pull_request:
11+
branches: [main]
12+
paths:
13+
- 'src/matlab/**'
14+
- 'tests/matlab/**'
15+
- '.github/workflows/matlab-syntax.yml'
16+
17+
permissions:
18+
contents: read
19+
20+
jobs:
21+
matlab-syntax:
22+
name: matlab syntax (checkcode)
23+
runs-on: ubuntu-latest
24+
steps:
25+
- uses: actions/checkout@v4
26+
- uses: matlab-actions/setup-matlab@v2
27+
with:
28+
release: R2024a
29+
- name: Run checkcode on src/matlab
30+
uses: matlab-actions/run-command@v2
31+
with:
32+
command: |
33+
files = dir(fullfile('src','matlab','**','*.m'));
34+
if isempty(files)
35+
error('hbn:lint:no_sources', ...
36+
'No MATLAB sources found under src/matlab; refusing to pass.');
37+
end
38+
paths = fullfile({files.folder}, {files.name});
39+
issues = checkcode(paths{:}, '-id', '-severity');
40+
n = 0;
41+
for k = 1:numel(issues)
42+
msgs = issues{k};
43+
for j = 1:numel(msgs)
44+
fprintf('%s:%d: [%s] %s\n', paths{k}, msgs(j).line, msgs(j).id, msgs(j).message);
45+
if ~isempty(msgs(j).severity) && msgs(j).severity > 0
46+
n = n + 1;
47+
end
48+
end
49+
end
50+
if n > 0
51+
error('checkcode found %d severe issues.', n);
52+
end

.github/workflows/matlab-tests.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,18 @@ name: matlab-tests
33
on:
44
push:
55
branches: [main]
6+
paths:
7+
- 'src/matlab/**'
8+
- 'tests/matlab/**'
9+
- 'tests/fixtures/**'
10+
- '.github/workflows/matlab-tests.yml'
611
pull_request:
712
branches: [main]
13+
paths:
14+
- 'src/matlab/**'
15+
- 'tests/matlab/**'
16+
- 'tests/fixtures/**'
17+
- '.github/workflows/matlab-tests.yml'
818

919
permissions:
1020
contents: read
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# NOFO Summary
2+
3+
## Primary target
4+
5+
### PA-25-304: NIH Exploratory/Developmental Research Grant Program (Parent R21 Clinical Trial Not Allowed)
6+
7+
- **URL:** https://grants.nih.gov/grants/guide/pa-files/PA-25-304.html
8+
- **Issuing components:** NIH-wide parent announcement; NIMH and NINDS both accept applications under this NOFO.
9+
- **Activity code:** R21, Exploratory/Developmental Research
10+
- **Clinical-trial designation:** Clinical Trial Not Allowed
11+
- **Why this one:** Broadest reviewer pool, no clinical-trial requirement, NIMH explicitly lists it as the receiving NOFO for non-clinical-trial R21 applications.
12+
13+
## Alternate target
14+
15+
### PA-25-150: Joint NINDS/NIMH Exploratory Neuroscience Research Grant (R21 Clinical Trial Not Allowed)
16+
17+
- **URL:** https://grants.nih.gov/grants/guide/pa-files/PA-25-150.html
18+
- **Issuing components:** Joint NINDS and NIMH
19+
- **Status to verify:** A NOT-NS-26-007 reissue notice flagged a 2026-05-08 transition; the NIMH funding page still lists PA-25-150 as active. Verify the current PA number with NIH eRA Commons or a program officer before submission.
20+
- **Why consider it:** Dual-IC review pool, mechanism-focused review criteria align with EEG oscillatory neuroscience.
21+
22+
## Required fields, per `grant-writing` SKILL.md Step 0
23+
24+
| Field | Value |
25+
|---|---|
26+
| Mechanism + agency | NIH R21 |
27+
| Specific objectives | Exploratory and developmental research; novel directions, high-risk/high-reward, foundational feasibility |
28+
| Page limits | Specific Aims 1 page; Research Strategy 6 pages (Significance + Innovation + Approach); Bibliography no limit; supporting documents per FOA |
29+
| Review criteria | Significance, Innovation, Approach (includes rigor and feasibility), Investigator, Environment; protections for human subjects |
30+
| Special requirements | Data Management and Sharing Plan; Inclusion of Children, Women, Minorities; Vertebrate Animals N/A; Human Subjects yes (pediatric cohort, secondary use of existing HBN data) |
31+
| Eligible PIs | Any individual with required skills; no career-stage restriction; foreign institutions eligible |
32+
| Budget constraints | Direct costs not to exceed $275,000 over the two-year period, with no more than $200,000 in any single year |
33+
| Submission deadlines (2026 cycle) | February 16 (new applications), June 16 (renewals/resubmissions), October 16 (AIDS-related). Standard receipt dates apply to both PA-25-304 and PA-25-150. |
34+
35+
## Deviations from standard R21 template
36+
37+
- **None at this scope.** Secondary use of HBN data triggers a Human Subjects section but not new IRB approval (HBN's data-use agreement governs research use).
38+
- **Clinical trial:** Not allowed and not proposed. The work is observational re-analysis of an existing pediatric cohort.
39+
40+
## Pre-submission risk flags
41+
42+
1. **NOFO expiry**: PA-25-150 has a renewal notice (NOT-NS-26-007). Verify the current PA number before the Feb 2026 receipt date if targeting the joint NINDS/NIMH track.
43+
2. **Human Subjects**: Although HBN data is open and de-identified, NIH requires the Human Subjects section to be filled. We will check the Exempt-4 box (secondary data analysis).
44+
3. **Data Management and Sharing Plan**: Required as of 2023 NIH DMS Policy. Phase 4 deliverable.
45+
4. **Bibliography size**: R21 has no page limit on Bibliography but reviewers expect curated references. Phase 2 lit expansion via `opencite` aims for under 100 cited works.
46+
47+
## Next NOFO check
48+
49+
Phase 4 PR should re-verify NOFO numbers and dates with `gh` and the NIH guide, since notices are issued continuously. If PA-25-304 is also reissued before submission, the proposal text remains unaffected but the cover letter and submission package update.
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# R21 to NIMH/NINDS, Animacy across age in naturalistic viewing
2+
3+
## At a glance
4+
5+
| Field | Value |
6+
|---|---|
7+
| Mechanism | NIH R21, Exploratory/Developmental Research Grant |
8+
| Target IC | NIMH (Parent R21); NINDS as alternate co-receiving IC under PA-25-150 |
9+
| NOFO (primary) | PA-25-304, NIH Parent R21 Clinical Trial Not Allowed |
10+
| NOFO (alternate) | PA-25-150, Joint NINDS/NIMH Exploratory Neuroscience R21 |
11+
| PI | Seyed Yahya Shirazi (lead drafter; institutional affiliation TBD in Phase 4) |
12+
| Project period | 2 years |
13+
| Direct costs | $275,000 total; $200,000 max/year |
14+
| Stimulus + cohort | Pixar's *The Present* (silent, 3.5 min, 56 annotated shots); HBN-EEG R3, N approximately 184, ages 5 to 21, 128-channel HydroCel net |
15+
| Status | Phase 1 in progress, drafting Specific Aims |
16+
| Target receipt date | February 16, 2026 (new submission cycle) |
17+
18+
## Repository links
19+
20+
- Epic issue: [#35](https://github.com/OpenScience-Collective/agentic-research-practicum/issues/35)
21+
- Direction paper: [`direction-papers/movie-ersp-direction.md`](../../../direction-papers/movie-ersp-direction.md)
22+
- Science map: [`research/synthesis/science-map.md`](../../../research/synthesis/science-map.md)
23+
- Gap analysis: [`research/synthesis/gap-analysis.md`](../../../research/synthesis/gap-analysis.md)
24+
- Pilot analysis (Epic #1): [`derivatives/`](../../../derivatives/)
25+
- State file: [`.claude/epic-r21.local.md`](../../../.claude/epic-r21.local.md)
26+
27+
## Phase tracker
28+
29+
| Phase | Issue | Status | Deliverable |
30+
|---|---|---|---|
31+
| 1. NOFO + Specific Aims | [#36](https://github.com/OpenScience-Collective/agentic-research-practicum/issues/36) | in_progress | `NOFO.md`, `submission/specific-aims.md`, scaffold |
32+
| 2. Significance + Innovation + lit expansion | [#37](https://github.com/OpenScience-Collective/agentic-research-practicum/issues/37) | pending | `submission/research-strategy/significance.md`, `innovation.md`, `refs.bib` |
33+
| 3. Approach + preliminary data + timeline | [#38](https://github.com/OpenScience-Collective/agentic-research-practicum/issues/38) | pending | `submission/research-strategy/approach.md`, `figures/` |
34+
| 4. Supplemental sections | [#39](https://github.com/OpenScience-Collective/agentic-research-practicum/issues/39) | pending | Facilities, Equipment, DMS plan, Budget, Biosketches, LoS queue |
35+
| 5. Assembly + grant-review + humanizer | [#40](https://github.com/OpenScience-Collective/agentic-research-practicum/issues/40) | pending | `submission/build/r21.pdf`, `reviews/grant-review.md` |
36+
37+
## Working hypotheses (locked at Phase 1)
38+
39+
1. Mu-band event-related desynchronization over central-rolandic clusters is larger for animate-agent shots and scales non-monotonically with age, peaking in late childhood.
40+
2. Frontal alpha asymmetry differentiates human-agent from non-human-agent shots and shifts across age.
41+
3. After partialling per-shot log luminance ratio, surviving condition-level signal localizes to action and emotion clusters, not language-network sites; effect scales with age.
42+
43+
See [`submission/specific-aims.md`](submission/specific-aims.md) for the load-bearing 1-page version and [`ideas.md`](ideas.md) for the iteration log.
44+
45+
## Conventions
46+
47+
- No em-dashes (commas, semicolons, parentheses).
48+
- Define every abbreviation on first use, once per document.
49+
- NIH formatting at submission: Helvetica 11pt body, 0.5 inch margins, justified, 4pt paragraph spacing, no indentation.
50+
- No emojis, no AI attribution in commits or PR text.

proposals/r21-nimh/2026-animacy/drafts/.gitkeep

Whitespace-only changes.

proposals/r21-nimh/2026-animacy/figures/.gitkeep

Whitespace-only changes.
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# R21 Animacy, Design Decisions and Iteration Log
2+
3+
## 2026-05-13, Aims framing
4+
5+
**Decision: 2 aims, exploratory R21 format.**
6+
7+
R21 reviewers expect 2 aims, occasionally 3. With $275K direct over 2 years and an observational re-analysis of an existing open cohort, 2 aims is the right granularity. A third aim on autism-stratification or attention-stratification was considered and deferred to a follow-on R01.
8+
9+
**Decision: Aims 1 and 2 are independent (failure of one does not block the other).**
10+
11+
- Aim 1 maps the developmental trajectory under existing literature framing (mu rhythm action observation, frontal alpha asymmetry affective).
12+
- Aim 2 is the methodological-rigor aim (LLR partialling, animacy versus luminance).
13+
14+
Per R21 best practice, neither aim depends on the other's success. Aim 1 produces a developmental ERSP map regardless of whether LLR partialling cleanly removes low-level variance. Aim 2's GLM produces interpretable estimates even if Aim 1's age-by-condition interaction is null.
15+
16+
**Decision: Hypothesis structure deliberately committed to falsification.**
17+
18+
The Aims explicitly state two falsification conditions in Aim 2 (surviving signal in left-frontotemporal language-network sites; no surviving signal at corrected alpha). This is unusual on an Aims page but matches the direction-paper thesis structure that locked on 2026-04-21 in [`.context/ideas.md`](../../../.context/ideas.md) and reads as scientific rigor rather than risk to reviewers when it follows from the literature gap.
19+
20+
## 2026-05-13, Scope decisions
21+
22+
**Decision: Animacy framed as a within-stimulus gradient, not a between-stimulus contrast.**
23+
24+
The boy-only versus puppy-only contrast inside *The Present* is the cleanest available, with mutually exclusive conditions (20 vs 15 shots after `match_diff_s > 1.0 s` QC), shared visual style, shared narrative arc, and a controlled LLR distribution. This avoids the confounds that plague between-movie animacy comparisons (Heider-Simmel triangles versus live action, etc.). The within-stimulus design is also reproducible by anyone with HBN-EEG R3, requiring no new data collection.
25+
26+
**Decision: Developmental cohort is HBN-EEG R3 as-is (ages 5-21), no clinical stratification at this R21.**
27+
28+
HBN includes participants with documented psychiatric diagnoses (autism, attention deficit, anxiety). The exploratory R21 deliberately treats the full developmental sample as a single curve to be characterized. Clinical stratification is the R01 follow-on.
29+
30+
**Decision: 100 Hz local data is the working set; 500 Hz S3 pull is validation only.**
31+
32+
Per repo CLAUDE.md, the local 184-subject 100 Hz BDF set is the dev data, and we validate against the full 500 Hz S3 release only after the pipeline lands. The R21 proposes the same: pipeline development on 100 Hz, group-level analysis on the 500 Hz release.
33+
34+
## 2026-05-13, NOFO decisions
35+
36+
**Decision: PA-25-304 (Parent R21) as primary; PA-25-150 (NINDS/NIMH joint) as alternate.**
37+
38+
See `NOFO.md`. PA-25-150 has a 2026-05-08 renewal notice (NOT-NS-26-007) that the NIMH funding page has not yet reconciled. Targeting the parent R21 removes this uncertainty without sacrificing reviewer fit.
39+
40+
## 2026-05-13, Aims word budget
41+
42+
Target under 650 words (NIH soft cap for 1 page at Helvetica 11pt, 0.5 inch margins, 4pt paragraph spacing). Current draft is approximately 470 words, leaving margin to expand the opening with one additional citation if Phase 2 lit expansion finds a stronger animacy-development anchor than Petroni-Cohen 2018 or Richardson-Saxe 2018.
43+
44+
## Open questions to revisit before Phase 5 freeze
45+
46+
- **Q1:** Should the R01 connector in Expected Impact name specific clinical conditions (autism spectrum, social anxiety) or stay generic ("clinical cohorts where animacy perception is altered")? Current draft is specific. Reviewer trade-off: specific is concrete but commits us to a particular follow-on, generic is safer but reads as boilerplate.
47+
- **Q2:** Frontal asymmetry's reliability is contested ([reznik-allen-2018-frontal-asymmetry](../../../research/collection/emotion/reznik-allen-2018-frontal-asymmetry/card.md) vs the [davidson-2000-affective-style](../../../research/collection/emotion/davidson-2000-affective-style/card.md) framework). H1B is exploratory in the gap-analysis and is presented as such in the Aims. Decide in Phase 3 whether to keep H1B in the Aim or push it to a secondary analysis.
48+
- **Q3:** Mu-band 8-13 Hz overlaps the alpha band. The Aims use "mu-band" but Phase 2 Innovation should clearly state how we distinguish mu from posterior alpha (IC topography + dipole location, AMICA + ICLabel pipeline).

proposals/r21-nimh/2026-animacy/lit-review/.gitkeep

Whitespace-only changes.

0 commit comments

Comments
 (0)