diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7a6bf4793f..065a059512 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -18,6 +18,7 @@ About changelog [here](https://keepachangelog.com/en/1.0.0/)
- Display inheritance models on structural variantS pages (#6015)
- Analysis types wgs-lr and panel-lr (#6029)
- Option to specify database name for the loqusdb API in the scout config file (#6028)
+- popEVE link on variant page, RefSeq transcripts table (#6016)
### Changed
- Institutes are now ordered alphabetically by display name on gene panels search (#5965)
- Display all available individual/sample IDs for a case (display_name, individual_id and subject_id) directly on cases page (#5966)
diff --git a/scout/server/blueprints/variant/controllers.py b/scout/server/blueprints/variant/controllers.py
index b2d5b04651..fc77952d2f 100644
--- a/scout/server/blueprints/variant/controllers.py
+++ b/scout/server/blueprints/variant/controllers.py
@@ -128,6 +128,7 @@ def tx_overview(variant_obj: dict, genome_build: str):
"cbioportal_link",
"mutalyzer_link",
"mycancergenome_link",
+ "popeve_link",
"tp53_link",
"varsome_link",
"vutr_link",
diff --git a/scout/server/blueprints/variant/templates/variant/tx_overview.html b/scout/server/blueprints/variant/templates/variant/tx_overview.html
index 0b9998334f..c2ee92ff9f 100644
--- a/scout/server/blueprints/variant/templates/variant/tx_overview.html
+++ b/scout/server/blueprints/variant/templates/variant/tx_overview.html
@@ -113,6 +113,10 @@
MCG
{% endif %}
+ {% if tx.popeve_link %}
+ pE
+ {% endif %}
{% endfor %}
diff --git a/scout/server/links.py b/scout/server/links.py
index e734cf5bce..a614757827 100644
--- a/scout/server/links.py
+++ b/scout/server/links.py
@@ -356,6 +356,8 @@ def add_tx_links(tx_obj, build=37, hgnc_symbol=None):
if build == 38:
tx_obj["ensembl_link"] = ensembl_38_link
+ tx_obj["popeve_link"] = popeve(tx_obj)
+
refseq_links = []
refseq_id = tx_obj.get("refseq_id") or (
tx_obj.get("transcript_id")
@@ -403,6 +405,16 @@ def refseq(refseq_id):
return link.format(refseq_id)
+def popeve(tx_obj: dict) -> Optional[str]:
+ """Generates a PopEVE link for a transcript by extracting the RefSeq protein_id, if present."""
+ protein_id = tx_obj.get("protein_id")
+ if not protein_id or not protein_id.startswith("NP_"):
+ return None
+
+ protein_id = protein_id.replace(".", "-") # Format RefSeq protein ID for PopEVE URL
+ return f"https://pop.evemodel.org/protein/{protein_id}"
+
+
def ensembl_tx(ens_tx_id, build=37):
link = "http://grch37.ensembl.org/Homo_sapiens/" "Gene/Summary?t={}"