Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
10 changes: 6 additions & 4 deletions assets/data/publications.json
Original file line number Diff line number Diff line change
Expand Up @@ -174,28 +174,30 @@
"journal": "Instituto del Mar del Perú (IMARPE)",
"type": "Technical Protocol",
"doi": "",
"url": "",
"url": "https://www.gob.pe/institucion/imarpe/informes-publicaciones/7947433-elaboracion-de-las-tablas-de-decision-para-la-determinacion-del-limite-maximo-total-de-captura-permisible-por-temporada-de-pesca-en-la-pesqueria-del-stock-norte-centro-de-la-anchoveta-peruana",
"institutional_author": "Instituto del Mar del Perú (IMARPE)",
"identifier": "Ed. 06 · Rev. 00",
"role": "Contributor",
"summary": "Risk-based methodology linking abundance-at-length, biological parameters, environmental and exploitation scenarios, and spawning-biomass projections to seasonal harvest advice.",
"source": "Career master",
"output_category": "Reports & technical outputs",
"curated": true
"curated": true,
"open_access": true
},
{
"title": "North-central Peruvian anchovy stock status and 2026 first-season exploitation outlook",
"year": "2026",
"journal": "Instituto del Mar del Perú (IMARPE)",
"type": "Stock Assessment & Management Advice",
"doi": "",
"url": "",
"url": "https://www.gob.pe/institucion/imarpe/informes-publicaciones/7960391-informe-correspondiente-al-oficio-n-0507-2026-imarpe-pe",
"institutional_author": "Instituto del Mar del Perú (IMARPE)",
"role": "Contributor",
"summary": "Integrated stock-status assessment combining environmental conditions, fishery indicators, acoustic biomass, size structure, biological condition, and exploitation scenarios for management advice.",
"source": "Career master",
"output_category": "Reports & technical outputs",
"curated": true
"curated": true,
"open_access": true
},
{
"title": "North-central Peruvian anchovy status and 2025 second-season exploitation outlook",
Expand Down
2 changes: 1 addition & 1 deletion contact/index.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ toc: false
## Contact

**Elmer Quispe-Salazar**
Marine Quantitative Ecologist · Fisheries Scientist
Quantitative Fisheries Scientist
[Instituto del Mar del Perú (IMARPE)](https://www.gob.pe/imarpe)
Callao, Peru

Expand Down
8 changes: 1 addition & 7 deletions includes/profile-sidebar.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<img src="/images/profile.png" alt="Portrait of Elmer Quispe-Salazar">
</div>
<p class="qs-sidebar-name">Elmer Quispe-Salazar</p>
<p class="qs-sidebar-role">Marine Quantitative Ecologist<br>Fisheries Scientist</p>
<p class="qs-sidebar-role">Quantitative Fisheries Scientist</p>
<div class="qs-sidebar-context qs-sidebar-affiliation"><i class="bi bi-building" aria-hidden="true"></i><span>Instituto del Mar del Perú (IMARPE)</span></div>
<div class="qs-sidebar-context"><i class="bi bi-geo-alt-fill" aria-hidden="true"></i><span>Peru · Humboldt Current</span></div>
<div class="qs-sidebar-context"><i class="bi bi-water" aria-hidden="true"></i><span>Pelagic fisheries · Statistical ecology</span></div>
Expand All @@ -16,11 +16,5 @@
<a href="https://github.com/qselmer"><i class="bi bi-github" aria-hidden="true"></i><span>GitHub</span></a>
<a href="https://www.linkedin.com/in/elmer-quispe-salazar-104b6b1a4/"><i class="bi bi-linkedin" aria-hidden="true"></i><span>LinkedIn</span></a>
</nav>
<p class="qs-sidebar-section-label">Research metrics</p>
<div class="qs-sidebar-metrics-list" aria-label="Research metrics">
<div class="qs-sidebar-metric-row"><span>ORCID works</span><strong>5</strong></div>
<div class="qs-sidebar-metric-row"><span>OpenAlex works</span><strong>3</strong></div>
</div>
<p class="qs-sidebar-metrics-note">Public ORCID and OpenAlex records.</p>
</div>
</aside>
220 changes: 174 additions & 46 deletions projects/_generated.md

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions projects/index.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ description: "Research themes, projects at different stages of maturity, and rel
css: research.css
---

::: {.qs-footnote-note}
**Project-stage note.** This catalogue includes active analyses, manuscripts in development, reusable research infrastructure, and planned studies. The stage shown on each card describes its current maturity; inclusion here does not imply that all projects are being pursued simultaneously.
:::

{{< include _generated.md >}}

::: {.qs-footnote-note}
**Research catalogue.** Each project card represents a canonical research repository or a stable public project record linked to its source repository. Formal publication, talk, software, teaching, and post metadata remain authoritative in their respective catalogues. [Explore the public Research Graph](/research-graph/) to see these records connected through common themes, projects, repositories, and provenance.
:::

::: {.qs-footnote-note}
**Project-stage note.** This catalogue includes active analyses, manuscripts in development, reusable research infrastructure, and planned studies. The stage shown on each card describes its current maturity; inclusion here does not imply that all projects are being pursued simultaneously.
:::
35 changes: 35 additions & 0 deletions projects/research.css
Original file line number Diff line number Diff line change
Expand Up @@ -83,3 +83,38 @@
white-space: normal;
}
}

/* Repository visibility is explicit without exposing private GitHub links. */
.qs-project-topline {
display: flex;
align-items: center;
justify-content: space-between;
gap: .55rem;
}

.qs-project-visibility {
display: inline-flex;
align-items: center;
justify-content: center;
width: 1.45rem;
height: 1.45rem;
border-radius: 50%;
font-size: .82rem;
line-height: 1;
}

.qs-project-visibility-private {
color: #9a6200;
background: rgba(196, 132, 0, .11);
}

.qs-project-visibility-public {
color: #39724d;
background: rgba(57, 114, 77, .10);
}

.qs-project-repository-state {
color: #6b7280;
font-size: .84rem;
white-space: nowrap;
}
45 changes: 25 additions & 20 deletions publications/_generated.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,33 +3,38 @@
<nav class="qs-publication-nav" aria-label="Publication sections">
<a href="#papers"><strong>Papers</strong></a>
<a href="#theses"><strong>Theses</strong></a>
<a href="#reports"><strong>Reports</strong></a>
</nav>

<p class="qs-publication-profile"><em>My ORCID iD is</em> <a href="https://orcid.org/0000-0001-9229-6379"><strong>0000-0001-9229-6379</strong></a>.</p>
<p class="qs-publication-profile"><em>My Google Scholar profile is</em> <a href="https://scholar.google.com/citations?user=wz83egoAAAAJ"><strong>here</strong></a>.</p>

## Peer-reviewed articles {#papers}

- **Quispe-Salazar, E.**, Sánchez, J., & Perea, Á. (2025). Classification models based on the gonadosomatic index to determine gonadal maturity stages: a case study in the Peruvian anchovy Engraulis ringens. *Scientia Marina, 89*(4), e117. <span class="qs-badge-row qs-publication-badges"><a class="qs-badge qs-badge-blue" href="https://doi.org/10.3989/scimar.05636.117"><span class="qs-badge-label">DOI</span><span class="qs-badge-value">10.3989/scimar.05636.117</span></a><a class="qs-badge qs-badge-green" href="https://doi.org/10.3989/scimar.05636.117"><span class="qs-badge-label">Open</span><span class="qs-badge-value">access</span></a><a class="qs-badge qs-badge-amber" href="/projects/#life-history"><span class="qs-badge-label">Research</span><span class="qs-badge-value">Reproduction &amp; growth</span></a></span> <details class="qs-publication-bibtex"><summary aria-label="Show BibTeX citation"><span class="qs-badge qs-badge-neutral"><span class="qs-badge-label">BibTeX</span><span class="qs-badge-value">view</span></span></summary><pre><code>@article{quispesalazar2025classification,
author = {Elmer Quispe-Salazar and Javier Sánchez and Ángel Perea},
title = {Classification models based on the gonadosomatic index to determine gonadal maturity stages: a case study in the Peruvian anchovy Engraulis ringens},
year = {2025},
journal = {Scientia Marina},
volume = {89},
number = {4},
pages = {e117},
doi = {10.3989/scimar.05636.117},
url = {https://doi.org/10.3989/scimar.05636.117}
}</code></pre></details>
- **Quispe-Salazar, E.**, Sánchez, J., & Perea, Á. (2025). Classification models based on the gonadosomatic index to determine gonadal maturity stages: a case study in the Peruvian anchovy Engraulis ringens. *Scientia Marina, 89*(4), e117. <span class="qs-badge-row qs-publication-badges"><a class="qs-badge qs-badge-blue" href="https://doi.org/10.3989/scimar.05636.117"><span class="qs-badge-label">DOI</span><span class="qs-badge-value">10.3989/scimar.05636.117</span></a><a class="qs-badge qs-badge-green" href="https://doi.org/10.3989/scimar.05636.117"><span class="qs-badge-label">Open</span><span class="qs-badge-value">access</span></a></span>

## Theses {#theses}

- **Quispe-Salazar, E.** (2025). Interannual variability in the growth of the Northern-Central stock of Peruvian anchovy (Engraulis ringens) during the period 1960–2022. *Cybertesis Revistas UNMSM Fondo editorial*. <span class="qs-badge-row qs-publication-badges"><a class="qs-badge qs-badge-blue" href="https://doi.org/10.5281/zenodo.17452484"><span class="qs-badge-label">DOI</span><span class="qs-badge-value">10.5281/zenodo.17452484</span></a><a class="qs-badge qs-badge-green" href="https://zenodo.org/doi/10.5281/zenodo.17452484"><span class="qs-badge-label">Open</span><span class="qs-badge-value">access</span></a><a class="qs-badge qs-badge-amber" href="/projects/#life-history"><span class="qs-badge-label">Research</span><span class="qs-badge-value">Reproduction &amp; growth</span></a></span> <details class="qs-publication-bibtex"><summary aria-label="Show BibTeX citation"><span class="qs-badge qs-badge-neutral"><span class="qs-badge-label">BibTeX</span><span class="qs-badge-value">view</span></span></summary><pre><code>@misc{quispesalazar2025interannual,
author = {Elmer Quispe-Salazar},
title = {Interannual variability in the growth of the Northern-Central stock of Peruvian anchovy (Engraulis ringens) during the period 1960–2022},
year = {2025},
howpublished = {Cybertesis Revistas UNMSM Fondo editorial},
doi = {10.5281/zenodo.17452484},
url = {https://zenodo.org/doi/10.5281/zenodo.17452484},
note = {Dissertation Thesis}
}</code></pre></details>
- **Quispe-Salazar, E.** (2025). Interannual variability in the growth of the Northern-Central stock of Peruvian anchovy (Engraulis ringens) during the period 1960–2022. *Cybertesis Revistas UNMSM Fondo editorial*. <span class="qs-badge-row qs-publication-badges"><a class="qs-badge qs-badge-blue" href="https://doi.org/10.5281/zenodo.17452484"><span class="qs-badge-label">DOI</span><span class="qs-badge-value">10.5281/zenodo.17452484</span></a><a class="qs-badge qs-badge-green" href="https://zenodo.org/doi/10.5281/zenodo.17452484"><span class="qs-badge-label">Open</span><span class="qs-badge-value">access</span></a></span>

## Reports and institutional technical outputs {#reports}

### 2026

- IMARPE Pelagic Resources Team (2026). Decision-table protocol for seasonal catch advice in the north-central Peruvian anchovy fishery. Risk-based methodology linking abundance-at-length, biological parameters, environmental and exploitation scenarios, and spawning-biomass projections to seasonal harvest advice. <span class="qs-badge-row qs-publication-badges"><a class="qs-badge qs-badge-green" href="https://www.gob.pe/institucion/imarpe/informes-publicaciones/7947433-elaboracion-de-las-tablas-de-decision-para-la-determinacion-del-limite-maximo-total-de-captura-permisible-por-temporada-de-pesca-en-la-pesqueria-del-stock-norte-centro-de-la-anchoveta-peruana"><span class="qs-badge-label">Open</span><span class="qs-badge-value">access</span></a></span>
- IMARPE Pelagic Resources Team (2026). North-central Peruvian anchovy stock status and 2026 first-season exploitation outlook. Integrated stock-status assessment combining environmental conditions, fishery indicators, acoustic biomass, size structure, biological condition, and exploitation scenarios for management advice. <span class="qs-badge-row qs-publication-badges"><a class="qs-badge qs-badge-green" href="https://www.gob.pe/institucion/imarpe/informes-publicaciones/7960391-informe-correspondiente-al-oficio-n-0507-2026-imarpe-pe"><span class="qs-badge-label">Open</span><span class="qs-badge-value">access</span></a></span>

### 2025

- IMARPE Pelagic Resources Team (2025). Jack mackerel fishery status in 2025 and exploitation outlook for 2026. Assessment synthesis covering the 2025 jack-mackerel fishery, stock status, spawning biomass, fishing mortality, recruitment, exploitation scenarios, and catch-limit advice; individual contribution is not attributed in the report itself.
- IMARPE Pelagic Resources Team (2025). North-central Peruvian anchovy status and 2025 second-season exploitation outlook. Seasonal assessment integrating fishery performance, environmental conditions, acoustic biomass, demographic structure, reproductive condition, and exploitation perspectives.
- IMARPE Pelagic Resources Team (2025). Southern Peruvian anchovy status and 2026 first-season exploitation outlook. Regional assessment of southern anchoveta availability, fishery indicators, biomass projections, exploitation scenarios, and management advice.

### 2024

- SPRFMO Connectivity Task Team (2024). Critical appraisal of research approaches to inform evidence of connectivity of Trachurus murphyi – a systematic review of 11 topics. *SPRFMO 12th Meeting of the Scientific Committee*. Systematic evidence synthesis across 11 research domains relevant to population connectivity and management of Chilean jack mackerel. <span class="qs-badge-row qs-publication-badges"><a class="qs-badge qs-badge-green" href="https://www.sprfmo.int/assets/Meetings/02-SC/12th-SC-2024/Working-Papers/SC12-WP03-CJM_connectivity_TG_Desk_Study-FINAL-v2.pdf"><span class="qs-badge-label">Open</span><span class="qs-badge-value">access</span></a></span>
- Geronimo, M., Lujan, C., Torrejón, J., & **Quispe-Salazar, E.** (2024). The Joint Jack Mackerel (JJM) model: a user guide to IMARPE's proposal. *SPRFMO 12th Meeting of the Scientific Committee*. Documents the population-dynamics equations, AD Model Builder implementation, inputs, outputs, model execution, and practical use of the JJM stock-assessment model. <span class="qs-badge-row qs-publication-badges"><a class="qs-badge qs-badge-green" href="https://www.sprfmo.int/assets/Meetings/02-SC/12th-SC-2024/Jack-Mackerel/SC12-JM08-PER-Joint-Jack-Mackerel-Model-User-Guide.pdf"><span class="qs-badge-label">Open</span><span class="qs-badge-value">access</span></a></span>

### 2023

- Gutiérrez, M., Tarazona, A., Grados, D., Valdez, C., **Quispe-Salazar, E.**, Pereyra, N., Peraltilla, S., Meneses, G., & Vásquez, L. (2023). Habitat conditions of jack mackerel (Trachurus murphyi) and chub mackerel (Scomber japonicus) in the Peruvian sea between 2021 and 2023. *SPRFMO 11th Meeting of the Scientific Committee*. Links oceanographic and habitat conditions with the distribution of jack mackerel and chub mackerel in Peruvian waters. <span class="qs-badge-row qs-publication-badges"><a class="qs-badge qs-badge-green" href="https://www.sprfmo.int/assets/Meetings/02-SC/11th-SC-2023/Habitat-Monitoring/SC11-HM02-PER-Habitat-conditions-of-jack-mackerel-and-chub-mackerel-in-the-Peruvian-sea-between-2021-and-2023-.pdf"><span class="qs-badge-label">Open</span><span class="qs-badge-value">access</span></a></span>
2 changes: 1 addition & 1 deletion scripts/build_home.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ def render_sidebar(data: dict, identity: dict) -> str:
<img src="/images/profile.png" alt="Portrait of {name}">
</div>
<p class="qs-sidebar-name">{name}</p>
<p class="qs-sidebar-role">Marine Quantitative Ecologist<br>Fisheries Scientist</p>
<p class="qs-sidebar-role">{html.escape(str(identity["headline"]))}</p>
<div class="qs-sidebar-context qs-sidebar-affiliation"><i class="bi bi-building" aria-hidden="true"></i><span>Instituto del Mar del Perú (IMARPE)</span></div>
<div class="qs-sidebar-context"><i class="bi bi-geo-alt-fill" aria-hidden="true"></i><span>Peru · Humboldt Current</span></div>
<div class="qs-sidebar-context"><i class="bi bi-water" aria-hidden="true"></i><span>Pelagic fisheries · Statistical ecology</span></div>
Expand Down
21 changes: 18 additions & 3 deletions scripts/build_projects.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,24 +82,39 @@ def render_badges(items: list[dict], owner: str, expected_labels: tuple[str, ...


def render_card(project: dict) -> list[str]:
"""Render a GitHub-backed project while making its maturity explicit."""
"""Render a GitHub-backed project while making maturity and repository visibility explicit."""
slug = clean_class(project.get("slug"), "project slug")
title = str(project.get("title") or "").strip()
summary = str(project.get("summary") or "").strip()
context = str(project.get("context") or "").strip()
stage = str(project.get("stage") or "").strip()
repository = str(project.get("source_repository") or "").strip()
site_path = str(project.get("site_path") or "").strip()
if not all((title, summary, context, stage, repository)):
raise RuntimeError(f"Project {slug} is missing card content, stage, or source_repository")
target = f"https://github.com/{repository}"

repository_url = f"https://github.com/{repository}"
is_private = bool(site_path) and not re.match(r"^https?://", site_path, flags=re.I)
target = site_path if is_private else repository_url
visibility = "Private repository" if is_private else "Public repository"
visibility_class = "private" if is_private else "public"
visibility_icon = "bi-lock-fill" if is_private else "bi-unlock-fill"
repository_action = (
'<span class="qs-project-repository-state">Private repository</span>'
if is_private
else f'<a href="{html.escape(repository_url, quote=True)}">Repository</a>'
)

return [
'<article class="qs-project-tile">',
'<div class="qs-project-body">',
'<div class="qs-project-topline">',
'<span class="qs-project-type">PROJECT</span>',
f'<span class="qs-project-visibility qs-project-visibility-{visibility_class}" title="{html.escape(visibility, quote=True)}" aria-label="{html.escape(visibility, quote=True)}"><i class="bi {visibility_icon}" aria-hidden="true"></i></span>',
'</div>',
f'<h3><a href="{html.escape(target, quote=True)}">{html.escape(title)}</a></h3>',
f'<p class="qs-project-card-summary">{html.escape(summary)}</p>',
f'<div class="qs-project-footer"><span><strong>Stage:</strong> {html.escape(stage)} · {html.escape(context)}</span><a href="{html.escape(target, quote=True)}">Repository</a></div>',
f'<div class="qs-project-footer"><span><strong>Stage:</strong> {html.escape(stage)} · {html.escape(context)}</span>{repository_action}</div>',
"</div>",
"</article>",
]
Expand Down
5 changes: 4 additions & 1 deletion scripts/postprocess_site.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
PUBLICATIONS = ROOT / "assets" / "data" / "publications.json"
SOFTWARE = ROOT / "assets" / "data" / "software.json"
BLOG = ROOT / "blog" / "registry.json"
CONFIG = ROOT / "config" / "site.json"
PERSON_ID = SITE_URL + "/#person"


Expand Down Expand Up @@ -121,14 +122,16 @@ def apply_social_preview(text: str, route: str) -> str:


def person_schema() -> dict:
identity = load_json(CONFIG).get("identity") or {}
headline = str(identity.get("headline") or "Quantitative Fisheries Scientist")
return {
"@context": "https://schema.org",
"@type": "Person",
"@id": PERSON_ID,
"name": "Elmer Quispe-Salazar",
"url": SITE_URL + "/",
"image": SITE_URL + "/images/profile.png",
"jobTitle": ["Marine Quantitative Ecologist", "Fisheries Scientist"],
"jobTitle": headline,
"worksFor": {
"@type": "Organization",
"name": "Instituto del Mar del Perú (IMARPE)",
Expand Down
Loading