Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
06aa6d3
Rebrand site visuals from Duke to NYU
jmxpearson Jul 22, 2026
9bd8b20
Apply pre-commit auto-fixes (markdownlint blank lines, svgo minify)
jmxpearson Jul 22, 2026
3e6f75a
Drop NYU lockup, set move notice above the lab logo
jmxpearson Jul 25, 2026
56c1da1
Add hidden flag to toggle research entries off the page
jmxpearson Jul 25, 2026
d84239d
Housekeeping: drop orphaned Duke images, unpublish migration TODO
jmxpearson Jul 25, 2026
110dd91
Use Greenwich Village photo for the page banner
jmxpearson Jul 25, 2026
b543762
Lighten the banner scrim to 0.45/0.55
jmxpearson Jul 25, 2026
3df30be
Fix publication merge losing preprint-to-journal updates
jmxpearson Jul 25, 2026
52f1939
Refresh only publications that can still change
jmxpearson Jul 25, 2026
27c277b
Drop the comma before "and" for two-author papers
jmxpearson Jul 25, 2026
cbb6ea1
Tone the banner scrim down further to 0.28/0.38
jmxpearson Jul 25, 2026
1d1ac86
Auto-update publications from Google Scholar [skip ci]
github-actions[bot] Jul 25, 2026
91d483f
Make the banner subtitle white
jmxpearson Jul 25, 2026
ee93fe6
Badge PNAS papers as journal, not conference
jmxpearson Jul 25, 2026
a1a0612
Add a workshop badge with a manual override
jmxpearson Jul 25, 2026
47d428f
Fix CI failures, author names, and CCN paper metadata
jmxpearson Jul 25, 2026
dbead08
Remove the undated Bejjani entry
jmxpearson Jul 25, 2026
2ee0ac4
NYU migration: site identity, people, recruiting, location
jmxpearson Jul 25, 2026
0e8a181
Drop Duke-specific course references from learning.md
jmxpearson Jul 25, 2026
c0f20d4
Remove the NYU migration TODO
jmxpearson Jul 25, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions _config.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
title: "Pearson Lab at Duke University"
title: "Pearson Lab at NYU"
description: >-
Computational neuroscience at Duke University. We build statistical and
Computational neuroscience at NYU. We build statistical and
machine-learning tools to understand how brains generate behavior.
url: "https://pearsonlab.github.io"
author: "Pearson Lab"
Expand Down
27 changes: 13 additions & 14 deletions _data/people.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,11 @@ pi:
of Kentucky and his PhD in physics from Princeton. He became a neuroscientist
at Duke, where he did his postdoctoral training with Michael Platt, working
on the neurobiology of reward and decision-making. From 2015 to 2018, he was
an Assistant Research Professor in the Duke Institute for Brain Sciences. In
2018, he moved back to the School of Medicine as an Assistant Professor in
the Department of Biostatistics & Bioinformatics, and in 2022, he moved
to the Department of Neurobiology, where he was promoted to Associate
Professor in 2025. In addition, he maintains secondary appointments in the
departments of Biostatics & Bioinformatics, Psychology &
Neuroscience, and Electrical and Computer Engineering.
(<a href="https://www.dropbox.com/scl/fi/o05n1v0skl5el9w938oca/john_pearson_cv.pdf?rlkey=wickra8h33u8hfsr40l0jdhxf&amp;st=8buq1yz2&amp;dl=0">cv</a>)
an Assistant Research Professor in the Duke Institute for Brain Sciences, and
from 2018-2025, he was an Assistant Professor in Biostatistics & Bioinformatics
and Neurobiology. Since 2026, he has been an Associate Professor in the <a href="https://as.nyu.edu/departments/cns/people/CoreFaculty.html">Center for Neural
Science</a> at NYU, with an affiliation at the <a href="https://www.simonsfoundation.org/flatiron/center-for-computational-neuroscience/">Center for Computational Neuroscience</a>
at the Flatiron Institute. (<a href="https://www.dropbox.com/scl/fi/o05n1v0skl5el9w938oca/john_pearson_cv.pdf?rlkey=wickra8h33u8hfsr40l0jdhxf&amp;st=8buq1yz2&amp;dl=0">cv</a>)

postdocs:
- name: Ganchao Wei
Expand Down Expand Up @@ -115,23 +112,24 @@ graduate_students:
github: https://github.com/DavidStA95
email: david.st-amand@duke.edu
desc: >-
David is a third-year graduate student in Neurobiology. He graduated
David is a third-year graduate student in Neurobiology at Duke. He graduated
from McGill University, where he received his BS in Psychology and
his MS in Neuroscience. His research investigates how efficient
coding models can help us understand how information is computed in
the retina. Outside the lab, he likes to work out and play games.

- name: Shiyang Pan
title: Electrical and Computer Engineering PhD Student
title: Center for Data Science PhD Student
image: /images/shiyang.jpg
site: https://waaaaaterfall.github.io
github: https://github.com/WaAaaAterfall
email: shiyang.pan@duke.edu
linkedin: https://www.linkedin.com/in/shiyangpan
desc: >-
Shiyang is a graduate student in Electrical &amp; Computer Engineering
at Duke. She received her Bsc in Applied Mathematics from University
of Liverpool and Xi'an Jiaotong-Liverpool University. Her research
Shiyang is a graduate student in the Center for Data Science at NYU.
She received her Bsc in Applied Mathematics from University
of Liverpool and Xi'an Jiaotong-Liverpool University and her master's
in electrical and computer engineering from Duke. Her research
focuses on developing computational models and real-time methods to
understand the activity of large-scale neural populations. When not
doing research she enjoys music, reading, and creative writing.
Expand All @@ -143,7 +141,7 @@ graduate_students:
email: caitlin.lewis@duke.edu
linkedin: https://www.linkedin.com/in/caitlinllewis/
desc: >-
Caitlin is a second-year graduate student in Electrical &amp; Computer
Caitlin is a graduate student in Electrical &amp; Computer
Engineering at Duke. She received her B.S. in Computer Science and
Statistics from the University of North Carolina at Chapel Hill. Her
research focuses on developing computational models and open-source
Expand All @@ -168,6 +166,7 @@ graduate_students:
current: false
url: https://achintzeus1994.github.io
years: 2021-2022
outcome: Deep Learning Researcher, Shell

- name: Na Young Jun
current: false
Expand Down
46 changes: 18 additions & 28 deletions _data/publications.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -264,9 +264,10 @@
given: Tobias
issued:
- year: 2024
title: 'Optimal decision-making under task uncertainty: a computational basis for cognitive'
container-title: Proceedings of the Annual Meeting of the Cognitive Science Society, 46 (0)
URL: https://escholarship.org/content/qt2d40418r/qt2d40418r.pdf?v=lg
title: 'Optimal decision-making under task uncertainty: a computational basis for cognitive stability versus flexibility'
container-title: Proceedings of the Annual Meeting of the Cognitive Science Society
URL: https://escholarship.org/uc/item/2d40418r
volume: '46'
- id: oneill2024modeling
type: article-journal
author:
Expand Down Expand Up @@ -675,6 +676,7 @@
issue: '39'
URL: https://www.pnas.org/doi/abs/10.1073/pnas.2105115118
- id: martinez2021reproducible
badge: workshop
type: article-journal
author:
- family: Martinez
Expand Down Expand Up @@ -788,8 +790,9 @@
issued:
- year: 2020
title: Online neural connectivity estimation with ensemble stimulation
container-title: arXiv preprint arXiv:2007.13911
container-title: Advances in Neural Information Processing Systems
URL: https://arxiv.org/abs/2007.13911
volume: '33'
- id: mcdonald2020dorsolateral
type: article-journal
author:
Expand Down Expand Up @@ -1070,6 +1073,7 @@
issue: '4'
URL: https://link.springer.com/article/10.3758/s13423-016-1204-5
- id: iqbal2017goal
badge: workshop
type: article-journal
author:
- family: Iqbal
Expand Down Expand Up @@ -1794,38 +1798,22 @@
volume: '82'
issue: '2'
URL: https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.82.255
- id: bejjani0towards
type: article-journal
author:
- family: Bejjani
given: Christina
- family: Egner
given: Tobias
- family: Pearson
given: John
- family: Moffitt
given: Terrie E
- family: Caspi
given: Avshalom
- family: Adcock
given: Alison
issued: []
title: TOWARDS A COMPUTATIONAL PSYCHIATRY OF TRANSDIAGNOSTIC DEFICITS IN COGNITIVE CONTROL
URL: https://scholar.google.com/scholar?cluster=478861155140086647&hl=en&oi=scholarr
- id: mcdonald0bayesian
type: article-journal
- id: mcdonald2019bayesianb
type: paper-conference
author:
- family: McDonald
given: Kelsey
- family: Huettel
given: Scott
- family: Pearson
given: John
issued: []
issued:
- year: 2019
title: Bayesian nonparametric models characterize social sensitivity in a competitive dynamic game
container-title: Conference on Cognitive Computational Neuroscience
URL: https://2019.ccneuro.org/proceedings/0000705.pdf
- id: mcdonald0gaussian
type: article-journal
- id: mcdonald2018gaussian
type: paper-conference
author:
- family: McDonald
given: Kelsey
Expand All @@ -1835,6 +1823,8 @@
given: Scott
- family: Pearson
given: John
issued: []
issued:
- year: 2018
title: Gaussian Process Models Characterize Other-Regarding Strategies Over Multiple Timescales in a Dynamic Social Game
container-title: Conference on Cognitive Computational Neuroscience
URL: https://2018.ccneuro.org/proceedings/1126.pdf
10 changes: 10 additions & 0 deletions _data/research.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,15 @@
# full description revealed via the
# "Read more" disclosure; supports
# inline links and <figure>/<img> tags)
# hidden: true (optional, defaults to showing. Set to
# true to keep the entry here but leave
# it off the Research page — use this
# instead of deleting or commenting out
# a project you may want back later.
# Use the bare YAML boolean true, not
# "true" in quotes: any non-empty string
# is truthy in Liquid, so "false" would
# hide the entry too.)

- title: Real-time analysis of neural data
image: /images/colorFish.png
Expand Down Expand Up @@ -66,6 +75,7 @@

- title: Autoencoding whole-brain dynamics
image: /images/website_VAEGAM_fig.png
hidden: true
caption: >-
A) VAE-GAM Model Schematic: brain volumes with signal of interest are
compressed to a lower dimensional representation using encoder
Expand Down
12 changes: 12 additions & 0 deletions _includes/footer.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,16 @@
document.write(year)
</script>
</p>
<!-- The header photo is CC BY 2.0, which requires visible credit, a
link to the licence, and a note of any changes. This include is
used by the same layouts that render the banner, so the credit
appears on exactly the pages that show the photo. Remove this if
the banner image is ever replaced. -->
<p class="photo-credit">
Header photo:
<a href="https://commons.wikimedia.org/wiki/File:Greenwich_Village_(27483343909).jpg">Greenwich Village</a>
by Felix Stahlberg,
<a href="https://creativecommons.org/licenses/by/2.0/">CC BY 2.0</a>
&mdash; cropped and colour-tinted.
</p>
</footer>
4 changes: 3 additions & 1 deletion _includes/jumbotron.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
<div class="container">
<br>
<h1>{{ page.title }}</h1>
<h5 style="color: #B5B5B5">{{ page.desc }}</h5>
<!-- No colour override: inherits white from .jumbotron. The old grey
(#B5B5B5) washed out once the flat violet header became a photo. -->
<h5>{{ page.desc }}</h5>
</div>
</div>
65 changes: 61 additions & 4 deletions _includes/pubs.html
Original file line number Diff line number Diff line change
Expand Up @@ -23,16 +23,40 @@
tighter than last-name-only — keeps Amanda Li from being bolded just
because Thomas Li is a former undergrad.
{%- endcomment -%}
{%- comment -%}
Drop parenthesised nicknames before picking the surname. people.yml
carries entries like "Lun (Sam) Yin" and "Chaichontat Sriworarat
(Richard)"; a trailing one would otherwise be taken as the surname,
giving the key "C|(Richard)", which matches no author and silently
leaves that person unbolded.
{%- endcomment -%}
{%- assign lab_keys = "" | split: "" -%}
{%- for full_name in all_lab_people -%}
{%- assign parts = full_name | split: " " -%}
{%- assign tokens = full_name | split: " " -%}
{%- assign parts = "" | split: "" -%}
{%- for token in tokens -%}
{%- unless token contains "(" -%}
{%- assign parts = parts | push: token -%}
{%- endunless -%}
{%- endfor -%}
{%- assign first = parts | first -%}
{%- assign last = parts | last -%}
{%- assign initial = first | slice: 0, 1 -%}
{%- assign key = initial | append: "|" | append: last -%}
{%- assign lab_keys = lab_keys | push: key -%}
{%- endfor -%}

{%- comment -%}
Display-name overrides, for people who publish under a name they don't
go by. Scholar supplies the published name and the scraper rewrites
author fields on every run, so this can't live in publications.yaml.
Parallel arrays, comma-separated: "PublishedGiven|Family" -> preferred
given name. Bolding still matches on the published name, so an entry
here doesn't affect lab-member detection.
{%- endcomment -%}
{%- assign alias_keys = "Chaichontat|Sriworarat" | split: "," -%}
{%- assign alias_given = "Richard" | split: "," -%}

<p>This list is not guaranteed to be up to date, but the lab's complete publications can be found <a href="https://scholar.google.com/citations?user=4whjDosAAAAJ&hl=en">here</a>.</p>

{% assign sorted_pubs = site.data.publications | group_by_exp:'item', 'item.issued.first.year' | sort: 'name' | reverse %}
Expand All @@ -43,9 +67,30 @@
<h3>{{ year.name }}</h3>
<ol>
{% for pub in year.items %}
{%- comment -%}
Type badge. An explicit `badge:` on the entry in publications.yaml
wins; otherwise it is derived from the venue string.

The override exists because some venues can't be inferred from
Scholar's metadata — a workshop paper often looks like a bare arXiv
preprint, or carries no venue at all. Set `badge: workshop` (or any
of journal / preprint / conference) by hand on those entries. The
scraper preserves keys it doesn't produce, so the override survives
the weekly refresh; add a matching .pub-badge-<name> rule in
css/publications.css for any new value.

Derivation order matters: a few journals are named "Proceedings
of ..." (PNAS, Proc. R. Soc.) and would otherwise be caught by the
generic "proceedings" rule and badged as conference papers, so they
are matched first.
{%- endcomment -%}
{%- assign venue_lc = pub.container-title | downcase -%}
{%- if venue_lc contains "biorxiv" or venue_lc contains "arxiv" or venue_lc contains "medrxiv" or venue_lc contains "chemrxiv" or venue_lc contains "psyarxiv" or venue_lc contains "osf preprints" -%}
{%- if pub.badge and pub.badge != "" -%}
{%- assign pub_type = pub.badge -%}
{%- elsif venue_lc contains "biorxiv" or venue_lc contains "arxiv" or venue_lc contains "medrxiv" or venue_lc contains "chemrxiv" or venue_lc contains "psyarxiv" or venue_lc contains "osf preprints" -%}
{%- assign pub_type = "preprint" -%}
{%- elsif venue_lc contains "national academy of sciences" or venue_lc contains "proceedings of the royal society" -%}
{%- assign pub_type = "journal" -%}
{%- elsif venue_lc contains "proceedings" or venue_lc contains "advances in neural" or venue_lc contains "neurips" or venue_lc contains "cosyne" or venue_lc contains "conference" -%}
{%- assign pub_type = "conference" -%}
{%- else -%}
Expand All @@ -55,12 +100,24 @@ <h3>{{ year.name }}</h3>
<span class="pub-badge pub-badge-{{ pub_type }}">{{ pub_type }}</span>
{% if pub.URL and pub.URL != "" %}<a href="{{ pub.URL }}"><b>{{ pub.title }}</b></a>{% else %}<b>{{ pub.title }}</b>{% endif %}
<br>
{%- comment -%}
Separator between authors: two-author papers read "A and B" with no
comma, three or more take the serial comma, "A, B, and C". The
trailing "and " is added by the loop below.
{%- endcomment -%}
{%- assign author_sep = ", " -%}
{%- if pub.author.size == 2 %}{% assign author_sep = " " %}{% endif -%}
{% for aa in pub.author -%}
{%- if forloop.last and forloop.first == false %}and {% endif -%}
{%- assign author_initial = aa.given | slice: 0, 1 -%}
{%- assign author_key = author_initial | append: "|" | append: aa.family -%}
{%- if lab_keys contains author_key -%}<b>{{ aa.given }} {{ aa.family }}</b>{%- else -%}{{ aa.given }} {{ aa.family }}{%- endif -%}
{%- if forloop.last == false %}, {% endif -%}
{%- assign shown_given = aa.given -%}
{%- assign alias_lookup = aa.given | append: "|" | append: aa.family -%}
{%- for ak in alias_keys -%}
{%- if ak == alias_lookup -%}{%- assign shown_given = alias_given[forloop.index0] -%}{%- endif -%}
{%- endfor -%}
{%- if lab_keys contains author_key -%}<b>{{ shown_given }} {{ aa.family }}</b>{%- else -%}{{ shown_given }} {{ aa.family }}{%- endif -%}
{%- if forloop.last == false %}{{ author_sep }}{% endif -%}
{%- endfor %}
({{ year.name }}).
<br>
Expand Down
21 changes: 15 additions & 6 deletions _layouts/home.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,22 @@
{% include head.html %}

<body>
<!-- Viewport-locked background so the [λ] logo always centers in the
visible area, regardless of how tall/wide body grows. Inset from
the viewport edges so the SVG doesn't push flush against the
window frame. -->
<div style="position: fixed; top: 80px; right: 80px; bottom: 80px; left: 80px; z-index: -1; background: url('/images/plab_logo_dark.svg') no-repeat center center; background-size: contain;"></div>
<!-- Viewport-locked splash so the [λ] logo always centers in the visible
area, regardless of how tall/wide body grows. Inset from the viewport
edges so the SVG doesn't push flush against the window frame. The
moving announcement stacks directly above the logo.

MOVING ANNOUNCEMENT: delete the <p class="move-note"> line below (and
the matching .move-note rule in css/custom.css) once the move is
complete (after 2026-09-01). -->
<div class="splash">
<p class="move-note" role="status">
The Pearson Lab is moving to the <b>Center for Neural Science at NYU</b>
</p>
<img class="splash-logo" src="/images/plab_logo_dark.svg" alt="Pearson Lab">
</div>
{% include navbar.html %}
<img src="/images/DUSOM_Dept_Neurobio_stack.jpg" alt="Duke School of Medicine, Department of Neurobiology" style="width: 25%; float: right; padding-top: 50px"/>

<footer>
<div style="display: block; position: fixed; bottom: 20px; left: 30px">
<h3 style="color: #9d9d9d">{{ page.desc }}</h3>
Expand Down
Loading
Loading