Skip to content

Commit ef63a50

Browse files
committed
updated and cleaned up the papers logic
1 parent 6d9140d commit ef63a50

6 files changed

Lines changed: 219 additions & 60 deletions

File tree

_config.yml

Lines changed: 2 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -3,59 +3,9 @@ title: Mo Shakiba
33
about_content: |
44
**<sub>[CV](https://moneuron.github.io/assets/data/drive/cv.pdf) ·
55
[CONTACT](#contact)</sub>**
6-
7-
papers: |
8-
> I’m **Mo**, a NeuroAI researcher.
9-
10-
---
11-
<span class="paper-item">
12-
· **Shakiba M**, Rokni R, Mohammadi M, Dehghani N. Harnessing cortical geometry, wiring, and function as inductive biases for recurrent neural networks. *arXiv*, 2026.
13-
<sub>**[HTML](https://arxiv.org/) ·
14-
[PDF](https://moneuron.github.io/assets/data/drive/preprint/) ·
15-
[CODE](https://github.com/moneuron/neuro-constrained-RNN) ·
16-
[BLOG](https://neurovium.github.io/)**</sub>
17-
<sub>**`Preprint`**</sub>
18-
</span>
19-
20-
<span class="paper-item">
21-
· 34th Annual Computational Neuroscience Meeting: CNS\*2025. *J Comput Neurosci*, 2026.
22-
<sub>**[HTML](https://doi.org/10.1007/s10827-025-00915-4) ·
23-
[PDF](https://moneuron.github.io/assets/data/drive/article/cns-rnn.pdf)**</sub>
24-
<sub class="citation" id="cns-rnn" data-doi="10.1007/s10827-025-00915-4"></sub>
25-
<sub>**`Article`**</sub>
26-
</span>
27-
28-
<span class="paper-item">
29-
· **Shakiba M**, Rokni R, Mohammadi M, Dehghani N. Anatomically and Functionally Constrained Bio-Inspired Recurrent Neural Networks Outperform Traditional RNN Models. *Kempner Institute Frontiers in NeuroAI Symposium*, 2025.
30-
<sub>**[HTML](https://www.researchgate.net/publication/393980916) ·
31-
[PDF](https://moneuron.github.io/assets/data/drive/poster/frnt-rnn.pdf)**</sub>
32-
<sub>**`Poster`**</sub>
33-
</span>
346
35-
<span class="paper-item">
36-
· **Shakiba M**, Rokni R, Mohammadi M. Neuro-constrained Bio-inspired Recurrent Neural Network. *Zenodo*, 2025.
37-
<sub>**[HTML](https://doi.org/10.5281/zenodo.15313132) ·
38-
[PDF](https://moneuron.github.io/assets/data/drive/preprint/neuro-bio.pdf)**</sub>
39-
<sub>**`Preprint`**</sub>
40-
</span>
41-
42-
<span class="paper-item">
43-
· **Shakiba M**, Rassouli FB. Joining up the scattered anticancer knowledge on auraptene and umbelliprenin: a meta-analysis. *Scientific Reports*, 2024.
44-
<sub>**[HTML](https://doi.org/10.1038/s41598-024-62747-z) ·
45-
[PDF](https://moneuron.github.io/assets/data/drive/article/srep-meta.pdf) ·
46-
[CODE](https://github.com/moneuron/srep-meta-codes) ·
47-
[DATA](https://doi.org/10.5061/dryad.cvdncjt9k)**</sub>
48-
<sub class="citation" id="srep-meta" data-doi="10.1038/s41598-024-62747-z"></sub>
49-
<sub>**`Article`**</sub>
50-
</span>
51-
52-
<span class="paper-item">
53-
· Talebian S, Shahnavaz B, **Shakiba M**, Rassouli FB. Illuminating new possibilities: Effects of copper oxide nanoparticles on gastrointestinal adenocarcinoma cells in hypoxic condition. *Heliyon*, 2024.
54-
<sub>**[HTML](https://doi.org/10.1016/j.heliyon.2024.e31414) ·
55-
[PDF](https://moneuron.github.io/assets/data/drive/article/hel-cuonp.pdf)**</sub>
56-
<sub class="citation" id="hel-cuonp" data-doi="10.1016/j.heliyon.2024.e31414"></sub>
57-
<sub>**`Article`**</sub>
58-
</span>
7+
intro: |
8+
> I’m **Mo**, a NeuroAI researcher.
599
6010
meta_title: Mo Shakiba · Home
6111
meta_url: moneuron.github.io

_data/papers.yml

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
- key: rnn-inductive-biases
2+
authors:
3+
- name: Shakiba M
4+
highlight: true
5+
- name: Rokni R
6+
- name: Mohammadi M
7+
- name: Dehghani N
8+
title: Harnessing cortical geometry, wiring, and function as inductive biases for recurrent neural networks
9+
venue: arXiv
10+
year: 2026
11+
type: Preprint
12+
links:
13+
- label: HTML
14+
url: https://arxiv.org/
15+
- label: PDF
16+
url: https://moneuron.github.io/assets/data/drive/preprint/
17+
- label: CODE
18+
url: https://github.com/moneuron/neuro-constrained-RNN
19+
- label: BLOG
20+
url: https://neurovium.github.io/
21+
22+
- key: cns-rnn
23+
title: "34th Annual Computational Neuroscience Meeting: CNS*2025"
24+
venue: J Comput Neurosci
25+
year: 2026
26+
type: Article
27+
doi: 10.1007/s10827-025-00915-4
28+
citation_id: cns-rnn
29+
links:
30+
- label: HTML
31+
url: https://doi.org/10.1007/s10827-025-00915-4
32+
- label: PDF
33+
url: https://moneuron.github.io/assets/data/drive/article/cns-rnn.pdf
34+
35+
- key: frnt-rnn
36+
authors:
37+
- name: Shakiba M
38+
highlight: true
39+
- name: Rokni R
40+
- name: Mohammadi M
41+
- name: Dehghani N
42+
title: Anatomically and Functionally Constrained Bio-Inspired Recurrent Neural Networks Outperform Traditional RNN Models
43+
venue: Kempner Institute Frontiers in NeuroAI Symposium
44+
year: 2025
45+
type: Poster
46+
links:
47+
- label: HTML
48+
url: https://www.researchgate.net/publication/393980916
49+
- label: PDF
50+
url: https://moneuron.github.io/assets/data/drive/poster/frnt-rnn.pdf
51+
52+
- key: neuro-bio
53+
authors:
54+
- name: Shakiba M
55+
highlight: true
56+
- name: Rokni R
57+
- name: Mohammadi M
58+
title: Neuro-constrained Bio-inspired Recurrent Neural Network
59+
venue: Zenodo
60+
year: 2025
61+
type: Preprint
62+
links:
63+
- label: HTML
64+
url: https://doi.org/10.5281/zenodo.15313132
65+
- label: PDF
66+
url: https://moneuron.github.io/assets/data/drive/preprint/neuro-bio.pdf
67+
68+
- key: srep-meta
69+
authors:
70+
- name: Shakiba M
71+
highlight: true
72+
- name: Rassouli FB
73+
title: "Joining up the scattered anticancer knowledge on auraptene and umbelliprenin: a meta-analysis"
74+
venue: Scientific Reports
75+
year: 2024
76+
type: Article
77+
doi: 10.1038/s41598-024-62747-z
78+
citation_id: srep-meta
79+
links:
80+
- label: HTML
81+
url: https://doi.org/10.1038/s41598-024-62747-z
82+
- label: PDF
83+
url: https://moneuron.github.io/assets/data/drive/article/srep-meta.pdf
84+
- label: CODE
85+
url: https://github.com/moneuron/srep-meta-codes
86+
- label: DATA
87+
url: https://doi.org/10.5061/dryad.cvdncjt9k
88+
89+
- key: hel-cuonp
90+
authors:
91+
- name: Talebian S
92+
- name: Shahnavaz B
93+
- name: Shakiba M
94+
highlight: true
95+
- name: Rassouli FB
96+
title: "Illuminating new possibilities: Effects of copper oxide nanoparticles on gastrointestinal adenocarcinoma cells in hypoxic condition"
97+
venue: Heliyon
98+
year: 2024
99+
type: Article
100+
doi: 10.1016/j.heliyon.2024.e31414
101+
citation_id: hel-cuonp
102+
links:
103+
- label: HTML
104+
url: https://doi.org/10.1016/j.heliyon.2024.e31414
105+
- label: PDF
106+
url: https://moneuron.github.io/assets/data/drive/article/hel-cuonp.pdf

_includes/about.html

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
<div class="container">
22
<div class="row clearfix">
33
<div class="col-xs-12">
4-
{{ site.papers | strip | markdownify }}
4+
{%- if site.intro -%}
5+
{{ site.intro | strip | markdownify }}
6+
{%- endif -%}
7+
<hr>
8+
{%- include papers.html -%}
59
</div>
610
</div>
711
</div>

_includes/papers.html

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<section aria-label="Papers">
2+
{%- for paper in site.data.papers -%}
3+
<article class="paper-item">
4+
<header>
5+
<span>
6+
·
7+
{%- assign authors_count = paper.authors | size -%}
8+
{%- if authors_count > 0 -%}
9+
{%- for author in paper.authors -%}
10+
{%- if author.highlight -%}
11+
<strong>{{ author.name }}</strong>
12+
{%- else -%}
13+
{{ author.name }}
14+
{%- endif -%}
15+
{%- unless forloop.last -%}, {%- endunless -%}
16+
{%- endfor -%}.
17+
{%- endif -%}
18+
19+
{%- assign title = paper.title | strip -%}
20+
{{ title }}{%- unless title | slice: -1 == '.' -%}.{%- endunless -%}
21+
<em>{{ paper.venue }}</em>, {{ paper.year }}.
22+
</span>
23+
</header>
24+
25+
<footer>
26+
{%- assign links_count = paper.links | size -%}
27+
{%- if links_count > 0 -%}
28+
<div>
29+
<sub>
30+
<strong>
31+
{%- for link in paper.links -%}
32+
<a href="{{ link.url }}">{{ link.label }}</a>{% unless forloop.last %} · {% endunless %}
33+
{%- endfor -%}
34+
</strong>
35+
</sub>
36+
</div>
37+
{%- endif -%}
38+
39+
{%- if paper.doi -%}
40+
<div>
41+
<sub class="citation"{% if paper.citation_id %} id="{{ paper.citation_id }}"{% endif %} data-doi="{{ paper.doi }}"></sub>
42+
</div>
43+
{%- endif -%}
44+
45+
<div>
46+
<sub><strong><code>{{ paper.type }}</code></strong></sub>
47+
</div>
48+
</footer>
49+
</article>
50+
{%- endfor -%}
51+
</section>

assets/data/fetch_citations.py

Lines changed: 50 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,62 @@
99
from scholarly import scholarly
1010

1111
# -------------------------------------------------------------------
12-
# Load DOIs from _config.yml
12+
# Load DOIs from site files
1313
# -------------------------------------------------------------------
1414

15-
def load_dois_from_config(config_path="_config.yml") -> list[str]:
16-
with open(config_path, encoding="utf-8") as f:
17-
config = yaml.safe_load(f)
15+
REPO_ROOT = Path(__file__).resolve().parents[2]
16+
PAPERS_DATA_FILE = REPO_ROOT / "_data" / "papers.yml"
17+
PAPERS_INCLUDE_FILE = REPO_ROOT / "_includes" / "papers.html"
18+
CONFIG_FILE = REPO_ROOT / "_config.yml"
1819

19-
papers_html = config.get("papers", "")
2020

21-
return re.findall(r'data-doi="([^"]+)"', papers_html)
21+
def extract_dois(text: str) -> list[str]:
22+
return re.findall(r'data-doi="([^"]+)"', text)
2223

2324

24-
PAPERS = load_dois_from_config()
25+
def unique_keep_order(values: list[str]) -> list[str]:
26+
seen: set[str] = set()
27+
out: list[str] = []
28+
for v in values:
29+
if v in seen:
30+
continue
31+
seen.add(v)
32+
out.append(v)
33+
return out
34+
35+
36+
def load_dois() -> list[str]:
37+
# Primary source: structured data file
38+
if PAPERS_DATA_FILE.exists():
39+
data = yaml.safe_load(PAPERS_DATA_FILE.read_text(encoding="utf-8")) or []
40+
41+
papers: list[dict] = []
42+
if isinstance(data, list):
43+
papers = [p for p in data if isinstance(p, dict)]
44+
45+
dois = [str(p.get("doi")) for p in papers if p.get("doi")]
46+
if dois:
47+
return unique_keep_order(dois)
48+
49+
# Fallback: extract from include HTML (works if papers are still hard-coded)
50+
if PAPERS_INCLUDE_FILE.exists():
51+
dois = extract_dois(PAPERS_INCLUDE_FILE.read_text(encoding="utf-8"))
52+
dois = [d for d in dois if "{{" not in d and "}}" not in d]
53+
if dois:
54+
return unique_keep_order(dois)
55+
56+
# Fallback: legacy config key (kept for backwards compatibility)
57+
if CONFIG_FILE.exists():
58+
config = yaml.safe_load(CONFIG_FILE.read_text(encoding="utf-8")) or {}
59+
papers_html = str(config.get("papers", ""))
60+
dois = extract_dois(papers_html)
61+
if dois:
62+
return unique_keep_order(dois)
63+
64+
return []
65+
66+
67+
PAPERS = load_dois()
2568

2669
# -------------------------------------------------------------------
2770
# Settings

assets/main.css

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -965,6 +965,11 @@ opacity: 0;
965965
transform: translateY(12px);
966966
animation: fadeUp 0.6s ease forwards;
967967
}
968+
.page-content .paper-item {
969+
font-size: 1.6rem;
970+
text-align: left;
971+
font-weight: 500;
972+
}
968973
@keyframes fadeUp {
969974
to {
970975
opacity: 1;

0 commit comments

Comments
 (0)