From 83db6c794605229a70a0ce345074dd49d7a5aeec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Sat, 19 Oct 2024 11:37:34 +0200 Subject: [PATCH 01/59] Bundle assembly resources --- hugo/content/species/foo_bar/_index.md | 55 ++++++ .../species/foo_bar/assembly/_index.md | 6 + .../species/foo_bar/assembly/assembly.yaml | 15 ++ .../species/foo_bar/assembly/contrib.md | 14 ++ .../species/foo_bar/assembly/stats.yaml | 24 +++ hugo/content/species/foo_bar/download.md | 6 + hugo/content/species/foo_bar/taxonomy.json | 58 ++++++ hugo/layouts/species/assembly.html | 175 ++++++++++++++++++ 8 files changed, 353 insertions(+) create mode 100644 hugo/content/species/foo_bar/_index.md create mode 100644 hugo/content/species/foo_bar/assembly/_index.md create mode 100644 hugo/content/species/foo_bar/assembly/assembly.yaml create mode 100644 hugo/content/species/foo_bar/assembly/contrib.md create mode 100644 hugo/content/species/foo_bar/assembly/stats.yaml create mode 100644 hugo/content/species/foo_bar/download.md create mode 100644 hugo/content/species/foo_bar/taxonomy.json create mode 100644 hugo/layouts/species/assembly.html diff --git a/hugo/content/species/foo_bar/_index.md b/hugo/content/species/foo_bar/_index.md new file mode 100644 index 00000000..7506ad6a --- /dev/null +++ b/hugo/content/species/foo_bar/_index.md @@ -0,0 +1,55 @@ +--- +# Required params below +title: "*Clupea harengus*" +subtitle: "Atlantic herring" + +last_updated: "15/05/2024" + +cover_image: "/img/species/clupea_harengus.webp" +img_attrib_text: "Clupea harengus by Gervais et Boulart, public domain" +img_attrib_link: "https://en.wikipedia.org/wiki/File:Clupea_harengus_Gervais.jpg" + + +# The params below were auto-generated, you should not need to edit them... +# unless you were warned by the add-new-species.py script. +layout: "species_intro" +banner_title: "Species overview" +url: "clupea_harengus" +weight: 1 +science_name: "Clupea harengus" +lineage_data_path: "clupea_harengus/taxonomy" + +gbif_taxon_id: "8351946" +goat_webpage: "https://goat.genomehubs.org/record?recordId=213953&result=taxon&taxonomy=ncbi#Parnassius%20mnemosyne" + + +# Optional params below, +# remove them if you don't want them or they are not relevant. +iucn_category: "Least Concern" +iucn_link: "https://www.iucnredlist.org/species/155123/4717767" + +swe_red_list: "Viable" +swe_red_list_link: "https://artfakta.se/taxa/206089/" + +# These 3 params define the initial view for the map +# latitude and longitude are for the map center. +latitude: 60 +longitude: -40 +initialZoom: 1 +--- + +### Description + +Write some content here in markdown for the introduction tab of the species page. + +#### Genome reference + +[EDIT] + +#### References + +- [EDIT] + +#### Changelog + +- DD/MM/YYYY - Species first published on the Portal diff --git a/hugo/content/species/foo_bar/assembly/_index.md b/hugo/content/species/foo_bar/assembly/_index.md new file mode 100644 index 00000000..59c22e0a --- /dev/null +++ b/hugo/content/species/foo_bar/assembly/_index.md @@ -0,0 +1,6 @@ +--- +title: "Genome assembly" +layout: assembly +--- + +### Methods diff --git a/hugo/content/species/foo_bar/assembly/assembly.yaml b/hugo/content/species/foo_bar/assembly/assembly.yaml new file mode 100644 index 00000000..21f063cc --- /dev/null +++ b/hugo/content/species/foo_bar/assembly/assembly.yaml @@ -0,0 +1,15 @@ +name: + label: "Assembly Name" + value: "Foobarus" +type: + label: "Assembly Type" + value: "" +level: + label: "Assembly Level" + value: "" +representation: + label: "Assembly Representation" + value: "" +accession: + label: "Assembly Accession" + value: "" diff --git a/hugo/content/species/foo_bar/assembly/contrib.md b/hugo/content/species/foo_bar/assembly/contrib.md new file mode 100644 index 00000000..97e53c71 --- /dev/null +++ b/hugo/content/species/foo_bar/assembly/contrib.md @@ -0,0 +1,14 @@ +--- +build: + list: never + publishResources: false + render: never +--- + +### Contributor(s) + +### Publication(s) + +### Funding + +### Acknowledgements diff --git a/hugo/content/species/foo_bar/assembly/stats.yaml b/hugo/content/species/foo_bar/assembly/stats.yaml new file mode 100644 index 00000000..0b6aa3d3 --- /dev/null +++ b/hugo/content/species/foo_bar/assembly/stats.yaml @@ -0,0 +1,24 @@ +assembly: + - "Assembly length (Mbp)": [EDIT] + - "GC %": [EDIT] + - "Contig #": [EDIT] + - "Contig N50 (Mbp)": [EDIT] + - "Contig L50": [EDIT] + - "Contig N90 (Mbp)": [EDIT] + - "Contig L90": [EDIT] + - "Scaffold #": [EDIT] + - "Scaffold N50 (Mbp)": [EDIT] + - "Scaffold L50": [EDIT] + - "Scaffold N90 (Mbp)": [EDIT] + - "Scaffold L90": [EDIT] + - "Scaffolds >= 10 kb": [EDIT] + - "BUSCO % [EDIT]": "[EDIT]" + +annotation: + - "Gene #": [EDIT] + - "Transcript #": [EDIT] + - "Avg exons per transcript": [EDIT] + - "Avg gene length (bp)": [EDIT] + - "Avg transcript length (bp)": [EDIT] + - "Avg exon length (bp)": [EDIT] + - "Avg intron length (bp)": [EDIT] diff --git a/hugo/content/species/foo_bar/download.md b/hugo/content/species/foo_bar/download.md new file mode 100644 index 00000000..be355e9c --- /dev/null +++ b/hugo/content/species/foo_bar/download.md @@ -0,0 +1,6 @@ +--- +title: "Download" +layout: "species_download" +url: "clupea_harengus/download" +weight: 3 +--- diff --git a/hugo/content/species/foo_bar/taxonomy.json b/hugo/content/species/foo_bar/taxonomy.json new file mode 100644 index 00000000..d64f3d63 --- /dev/null +++ b/hugo/content/species/foo_bar/taxonomy.json @@ -0,0 +1,58 @@ +{ + "Species": { + "science_name": "Clupea harengus", + "tax_id": "7950", + "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:7950", + "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=7950", + "display_order": 1 + }, + "Genus": { + "science_name": "Clupea", + "tax_id": "7949", + "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:7949", + "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=7949", + "display_order": 2 + }, + "Family": { + "science_name": "Clupeidae", + "tax_id": "55118", + "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:55118", + "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=55118", + "display_order": 3 + }, + "Order": { + "science_name": "Clupeiformes", + "tax_id": "32446", + "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:32446", + "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=32446", + "display_order": 4 + }, + "Class": { + "science_name": "Actinopteri", + "tax_id": "186623", + "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:186623", + "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=186623", + "display_order": 5 + }, + "Phylum": { + "science_name": "Chordata", + "tax_id": "7711", + "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:7711", + "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=7711", + "display_order": 6 + }, + "Kingdom": { + "science_name": "Metazoa", + "tax_id": "33208", + "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:33208", + "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=33208", + "display_order": 7 + }, + "Superkingdom": { + "science_name": "Eukaryota", + "tax_id": "2759", + "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:2759", + "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=2759", + "display_order": 8 + } +} diff --git a/hugo/layouts/species/assembly.html b/hugo/layouts/species/assembly.html new file mode 100644 index 00000000..18faeae0 --- /dev/null +++ b/hugo/layouts/species/assembly.html @@ -0,0 +1,175 @@ +{{ define "main" }} + +{{ partial "species_title.html" . }} + +{{ partial "species_nav.html" . }} + + +{{ $stats_file := (split .Params.stats_data_path "/") }} +{{ $stats_contents := index .Site.Data $stats_file }} + + +{{ $.Scratch.Add "accession" "" }} +{{ range .Params.key_info }} + {{ if isset . "Accession" }} + {{ $.Scratch.Set "accession" .Accession }} + {{ end }} +{{ end }} +{{ $accession := $.Scratch.Get "accession" }} + +{{ $ena_link := print "https://www.ebi.ac.uk/ena/browser/view/" $accession }} +{{ $ncbi_link := print "https://www.ncbi.nlm.nih.gov/datasets/genome/" $accession }} + + + +{{ $content := .Content }} +{{ $contrib := .Resources.Get "contrib.md" }} + + +
+ +
+
+

Description

+
    + {{ with .Resources.Get "assembly.yaml" }} + {{ $metadata := transform.Unmarshal . }} + {{ range slice "name" "type" "level" "representation" "accession" }} + {{ $entry := index $metadata . }} +
  • {{ $entry.label }}: {{ $entry.value }}
  • + {{ end }} + {{ end }} +
+
+ + +
+ + +
+
+ {{ $content | safeHTML }} +
+
+ +
+ + +
+

Assembly Statistics

+ + {{ if .Params.stats_data_path }} +
+ + + + + + + + + + + {{ range $idx, $statistic := $stats_contents.assembly }} + {{ range $stat_name, $value := $statistic }} + + + + + {{ end }} + {{ end }} + + +
StatisticValue
{{ $stat_name }} {{ $value }}
+
+ {{ else }} +

No assembly data has been provided for this species

+ {{ end }} +
+ + +
+

Annotation Statistics

+ + {{ if .Params.stats_data_path }} +
+ + + + + + + + + + + {{ range $idx, $statistic := $stats_contents.annotation }} + {{ range $stat_name, $value := $statistic }} + + + + + {{ end }} + {{ end }} + + +
StatisticValue
{{ $stat_name }} {{ $value }}
+
+ {{ else }} +

No annotation data has been provided for this species

+ {{ end }} +
+ +
+
+ + +
+
+ {{ $contrib | safeHTML }} +
+
+ +{{ partial "last_updated.html" . }} + + +{{ end }} + +{{ define "scripts" }} + + + +{{ end }} From a78ee2cdc69a65585e9b0667918b9d48aa83aa14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Sat, 19 Oct 2024 14:07:13 +0200 Subject: [PATCH 02/59] Simplify species assembly layout --- .../species/foo_bar/assembly/assembly.yaml | 4 +- hugo/layouts/species/assembly.html | 291 ++++++++---------- 2 files changed, 135 insertions(+), 160 deletions(-) diff --git a/hugo/content/species/foo_bar/assembly/assembly.yaml b/hugo/content/species/foo_bar/assembly/assembly.yaml index 21f063cc..3bd79ccd 100644 --- a/hugo/content/species/foo_bar/assembly/assembly.yaml +++ b/hugo/content/species/foo_bar/assembly/assembly.yaml @@ -11,5 +11,5 @@ representation: label: "Assembly Representation" value: "" accession: - label: "Assembly Accession" - value: "" + label: "Accession" + value: "GCA_XXX" diff --git a/hugo/layouts/species/assembly.html b/hugo/layouts/species/assembly.html index 18faeae0..c1574139 100644 --- a/hugo/layouts/species/assembly.html +++ b/hugo/layouts/species/assembly.html @@ -1,175 +1,150 @@ {{ define "main" }} -{{ partial "species_title.html" . }} - -{{ partial "species_nav.html" . }} - - -{{ $stats_file := (split .Params.stats_data_path "/") }} -{{ $stats_contents := index .Site.Data $stats_file }} - - -{{ $.Scratch.Add "accession" "" }} -{{ range .Params.key_info }} - {{ if isset . "Accession" }} - {{ $.Scratch.Set "accession" .Accession }} - {{ end }} -{{ end }} -{{ $accession := $.Scratch.Get "accession" }} - -{{ $ena_link := print "https://www.ebi.ac.uk/ena/browser/view/" $accession }} -{{ $ncbi_link := print "https://www.ncbi.nlm.nih.gov/datasets/genome/" $accession }} - - - -{{ $content := .Content }} -{{ $contrib := .Resources.Get "contrib.md" }} - - -
- -
-
-

Description

-
    - {{ with .Resources.Get "assembly.yaml" }} - {{ $metadata := transform.Unmarshal . }} - {{ range slice "name" "type" "level" "representation" "accession" }} - {{ $entry := index $metadata . }} -
  • {{ $entry.label }}: {{ $entry.value }}
  • - {{ end }} - {{ end }} -
-
- + {{ partial "species_title.html" . }} + + {{ partial "species_nav.html" . }} + +
+ {{ with .Resources.Get "assembly.yaml" }} + {{ $metadata := transform.Unmarshal . }} +
+
+

Description

+
    + {{ range slice "name" "type" "level" "representation" "accession" }} + {{ $entry := index $metadata . }} +
  • {{ $entry.label }}: {{ $entry.value }}
  • + {{ end }} +
+
+ +
+ {{ else }} + No metadata was provided for this assembly. + {{ end }} + +
+
+ {{ .Content }} +
+
+ +
+ {{ with .Resources.Get "stats.yaml" }} + {{ $stats := transform.Unmarshal . }} + + +
+

Assembly Statistics

+
+ + + + + + + + + + + {{ range $idx, $statistic := $stats.assembly }} + {{ range $stat_name, $value := $statistic }} + + + + + {{ end }} + {{ end }} + + +
StatisticValue
{{ $stat_name }} {{ $value }}
+
+
+ + +
+

Annotation Statistics

+ +
+ + + + + + + + + + + {{ range $idx, $statistic := $stats.annotation }} + {{ range $stat_name, $value := $statistic }} + + + + + {{ end }} + {{ end }} + + +
StatisticValue
{{ $stat_name }} {{ $value }}
+
+
+ {{ else }} +

No assembly and annotation statistics have been provided for this species

+ {{ end }} +
-
- {{ $content | safeHTML }} -
-
- -
- - -
-

Assembly Statistics

- - {{ if .Params.stats_data_path }} -
- - - - - - - - - - - {{ range $idx, $statistic := $stats_contents.assembly }} - {{ range $stat_name, $value := $statistic }} - - - - - {{ end }} - {{ end }} - - -
StatisticValue
{{ $stat_name }} {{ $value }}
-
- {{ else }} -

No assembly data has been provided for this species

- {{ end }} -
- - -
-

Annotation Statistics

- - {{ if .Params.stats_data_path }} -
- - - - - - - - - - - {{ range $idx, $statistic := $stats_contents.annotation }} - {{ range $stat_name, $value := $statistic }} - - - - - {{ end }} - {{ end }} - - -
StatisticValue
{{ $stat_name }} {{ $value }}
-
- {{ else }} -

No annotation data has been provided for this species

- {{ end }} -
- -
-
- - -
-
- {{ $contrib | safeHTML }} +
+ {{ with .Resources.Get "contrib.md" }} + {{ .Content }} + {{ end }} +
-
-{{ partial "last_updated.html" . }} + {{ partial "last_updated.html" . }} {{ end }} {{ define "scripts" }} - + {{ end }} From 700abd443f6980c4b53d976d3799661290dca0a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Mon, 21 Oct 2024 09:45:41 +0200 Subject: [PATCH 03/59] Add archetype stub --- hugo/archetypes/species/_index.md | 55 +++++++++++++++++ hugo/archetypes/species/assembly/_index.md | 5 ++ .../archetypes/species/assembly/assembly.yaml | 15 +++++ hugo/archetypes/species/assembly/contrib.md | 17 ++++++ hugo/archetypes/species/assembly/stats.yaml | 24 ++++++++ hugo/archetypes/species/download.md | 6 ++ hugo/archetypes/species/taxonomy.json | 58 ++++++++++++++++++ hugo/content/species/_index.md | 4 +- hugo/content/species/foo_bar/_index.md | 7 ++- .../foo_bar/assembly/{_index.md => index.md} | 0 hugo/layouts/species/browser.html | 60 +++++++++++++++++++ 11 files changed, 246 insertions(+), 5 deletions(-) create mode 100644 hugo/archetypes/species/_index.md create mode 100644 hugo/archetypes/species/assembly/_index.md create mode 100644 hugo/archetypes/species/assembly/assembly.yaml create mode 100644 hugo/archetypes/species/assembly/contrib.md create mode 100644 hugo/archetypes/species/assembly/stats.yaml create mode 100644 hugo/archetypes/species/download.md create mode 100644 hugo/archetypes/species/taxonomy.json rename hugo/content/species/foo_bar/assembly/{_index.md => index.md} (100%) create mode 100644 hugo/layouts/species/browser.html diff --git a/hugo/archetypes/species/_index.md b/hugo/archetypes/species/_index.md new file mode 100644 index 00000000..7506ad6a --- /dev/null +++ b/hugo/archetypes/species/_index.md @@ -0,0 +1,55 @@ +--- +# Required params below +title: "*Clupea harengus*" +subtitle: "Atlantic herring" + +last_updated: "15/05/2024" + +cover_image: "/img/species/clupea_harengus.webp" +img_attrib_text: "Clupea harengus by Gervais et Boulart, public domain" +img_attrib_link: "https://en.wikipedia.org/wiki/File:Clupea_harengus_Gervais.jpg" + + +# The params below were auto-generated, you should not need to edit them... +# unless you were warned by the add-new-species.py script. +layout: "species_intro" +banner_title: "Species overview" +url: "clupea_harengus" +weight: 1 +science_name: "Clupea harengus" +lineage_data_path: "clupea_harengus/taxonomy" + +gbif_taxon_id: "8351946" +goat_webpage: "https://goat.genomehubs.org/record?recordId=213953&result=taxon&taxonomy=ncbi#Parnassius%20mnemosyne" + + +# Optional params below, +# remove them if you don't want them or they are not relevant. +iucn_category: "Least Concern" +iucn_link: "https://www.iucnredlist.org/species/155123/4717767" + +swe_red_list: "Viable" +swe_red_list_link: "https://artfakta.se/taxa/206089/" + +# These 3 params define the initial view for the map +# latitude and longitude are for the map center. +latitude: 60 +longitude: -40 +initialZoom: 1 +--- + +### Description + +Write some content here in markdown for the introduction tab of the species page. + +#### Genome reference + +[EDIT] + +#### References + +- [EDIT] + +#### Changelog + +- DD/MM/YYYY - Species first published on the Portal diff --git a/hugo/archetypes/species/assembly/_index.md b/hugo/archetypes/species/assembly/_index.md new file mode 100644 index 00000000..7630469e --- /dev/null +++ b/hugo/archetypes/species/assembly/_index.md @@ -0,0 +1,5 @@ +--- +title: "Genome assembly" +--- + +### Methods diff --git a/hugo/archetypes/species/assembly/assembly.yaml b/hugo/archetypes/species/assembly/assembly.yaml new file mode 100644 index 00000000..1a49687b --- /dev/null +++ b/hugo/archetypes/species/assembly/assembly.yaml @@ -0,0 +1,15 @@ +name: + label: "Assembly Name" + value: "" +type: + label: "Assembly Type" + value: "" +level: + label: "Assembly Level" + value: "" +representation: + label: "Assembly Representation" + value: "" +accession: + label: "Assembly Accession" + value: "" diff --git a/hugo/archetypes/species/assembly/contrib.md b/hugo/archetypes/species/assembly/contrib.md new file mode 100644 index 00000000..c76ea97a --- /dev/null +++ b/hugo/archetypes/species/assembly/contrib.md @@ -0,0 +1,17 @@ +--- +build: + list: never + publishResources: false + render: never +--- + +### Contributor(s) + + +### Publication(s) + + +### Funding + + +### Acknowledgements diff --git a/hugo/archetypes/species/assembly/stats.yaml b/hugo/archetypes/species/assembly/stats.yaml new file mode 100644 index 00000000..0b6aa3d3 --- /dev/null +++ b/hugo/archetypes/species/assembly/stats.yaml @@ -0,0 +1,24 @@ +assembly: + - "Assembly length (Mbp)": [EDIT] + - "GC %": [EDIT] + - "Contig #": [EDIT] + - "Contig N50 (Mbp)": [EDIT] + - "Contig L50": [EDIT] + - "Contig N90 (Mbp)": [EDIT] + - "Contig L90": [EDIT] + - "Scaffold #": [EDIT] + - "Scaffold N50 (Mbp)": [EDIT] + - "Scaffold L50": [EDIT] + - "Scaffold N90 (Mbp)": [EDIT] + - "Scaffold L90": [EDIT] + - "Scaffolds >= 10 kb": [EDIT] + - "BUSCO % [EDIT]": "[EDIT]" + +annotation: + - "Gene #": [EDIT] + - "Transcript #": [EDIT] + - "Avg exons per transcript": [EDIT] + - "Avg gene length (bp)": [EDIT] + - "Avg transcript length (bp)": [EDIT] + - "Avg exon length (bp)": [EDIT] + - "Avg intron length (bp)": [EDIT] diff --git a/hugo/archetypes/species/download.md b/hugo/archetypes/species/download.md new file mode 100644 index 00000000..be355e9c --- /dev/null +++ b/hugo/archetypes/species/download.md @@ -0,0 +1,6 @@ +--- +title: "Download" +layout: "species_download" +url: "clupea_harengus/download" +weight: 3 +--- diff --git a/hugo/archetypes/species/taxonomy.json b/hugo/archetypes/species/taxonomy.json new file mode 100644 index 00000000..d64f3d63 --- /dev/null +++ b/hugo/archetypes/species/taxonomy.json @@ -0,0 +1,58 @@ +{ + "Species": { + "science_name": "Clupea harengus", + "tax_id": "7950", + "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:7950", + "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=7950", + "display_order": 1 + }, + "Genus": { + "science_name": "Clupea", + "tax_id": "7949", + "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:7949", + "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=7949", + "display_order": 2 + }, + "Family": { + "science_name": "Clupeidae", + "tax_id": "55118", + "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:55118", + "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=55118", + "display_order": 3 + }, + "Order": { + "science_name": "Clupeiformes", + "tax_id": "32446", + "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:32446", + "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=32446", + "display_order": 4 + }, + "Class": { + "science_name": "Actinopteri", + "tax_id": "186623", + "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:186623", + "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=186623", + "display_order": 5 + }, + "Phylum": { + "science_name": "Chordata", + "tax_id": "7711", + "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:7711", + "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=7711", + "display_order": 6 + }, + "Kingdom": { + "science_name": "Metazoa", + "tax_id": "33208", + "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:33208", + "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=33208", + "display_order": 7 + }, + "Superkingdom": { + "science_name": "Eukaryota", + "tax_id": "2759", + "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:2759", + "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=2759", + "display_order": 8 + } +} diff --git a/hugo/content/species/_index.md b/hugo/content/species/_index.md index ba412b29..7d50b2ff 100644 --- a/hugo/content/species/_index.md +++ b/hugo/content/species/_index.md @@ -1,7 +1,7 @@ --- # This prevents the species folder from generating a html file for the path [webaddress]/species/ -_build: +build: render: never list: never publishResources: false ---- \ No newline at end of file +--- diff --git a/hugo/content/species/foo_bar/_index.md b/hugo/content/species/foo_bar/_index.md index 7506ad6a..7d08497c 100644 --- a/hugo/content/species/foo_bar/_index.md +++ b/hugo/content/species/foo_bar/_index.md @@ -1,10 +1,12 @@ --- # Required params below -title: "*Clupea harengus*" -subtitle: "Atlantic herring" +title: "*Foo barus*" +subtitle: "Pacifc herring" last_updated: "15/05/2024" +# TODO Place image in bundle and use metadata for uniform naming +# TODO Extract non-standard fields under params key cover_image: "/img/species/clupea_harengus.webp" img_attrib_text: "Clupea harengus by Gervais et Boulart, public domain" img_attrib_link: "https://en.wikipedia.org/wiki/File:Clupea_harengus_Gervais.jpg" @@ -14,7 +16,6 @@ img_attrib_link: "https://en.wikipedia.org/wiki/File:Clupea_harengus_Gervais.jpg # unless you were warned by the add-new-species.py script. layout: "species_intro" banner_title: "Species overview" -url: "clupea_harengus" weight: 1 science_name: "Clupea harengus" lineage_data_path: "clupea_harengus/taxonomy" diff --git a/hugo/content/species/foo_bar/assembly/_index.md b/hugo/content/species/foo_bar/assembly/index.md similarity index 100% rename from hugo/content/species/foo_bar/assembly/_index.md rename to hugo/content/species/foo_bar/assembly/index.md diff --git a/hugo/layouts/species/browser.html b/hugo/layouts/species/browser.html new file mode 100644 index 00000000..ae2abb84 --- /dev/null +++ b/hugo/layouts/species/browser.html @@ -0,0 +1,60 @@ +{{ define "main" }} + +
+
+
+
+ + + +
+ +{{ if hugo.IsDevelopment }} + +{{ end }} + + + + +{{ end }} From f1fdc666b87692939d97d8da06a50985009a4da2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Sat, 26 Oct 2024 09:37:45 +0200 Subject: [PATCH 04/59] Start halloween experiment --- .../{species => halloween}/_index.md | 0 .../{species => halloween}/assembly/_index.md | 0 .../assembly/assembly.yaml | 0 .../assembly/contrib.md | 0 .../assembly/stats.yaml | 0 .../{species => halloween}/download.md | 0 .../{species => halloween}/taxonomy.json | 0 .../{species => halloween}/foo_bar/_index.md | 0 .../foo_bar/assembly/assembly.yaml | 0 .../foo_bar/assembly/contrib.md | 0 .../foo_bar/assembly/index.md | 0 .../foo_bar/assembly/stats.yaml | 0 .../foo_bar/download.md | 0 .../foo_bar/taxonomy.json | 0 .../{species => halloween}/assembly.html | 0 hugo/layouts/halloween/baseof.html | 97 +++++++++++++++++++ .../{species => halloween}/browser.html | 0 17 files changed, 97 insertions(+) rename hugo/archetypes/{species => halloween}/_index.md (100%) rename hugo/archetypes/{species => halloween}/assembly/_index.md (100%) rename hugo/archetypes/{species => halloween}/assembly/assembly.yaml (100%) rename hugo/archetypes/{species => halloween}/assembly/contrib.md (100%) rename hugo/archetypes/{species => halloween}/assembly/stats.yaml (100%) rename hugo/archetypes/{species => halloween}/download.md (100%) rename hugo/archetypes/{species => halloween}/taxonomy.json (100%) rename hugo/content/{species => halloween}/foo_bar/_index.md (100%) rename hugo/content/{species => halloween}/foo_bar/assembly/assembly.yaml (100%) rename hugo/content/{species => halloween}/foo_bar/assembly/contrib.md (100%) rename hugo/content/{species => halloween}/foo_bar/assembly/index.md (100%) rename hugo/content/{species => halloween}/foo_bar/assembly/stats.yaml (100%) rename hugo/content/{species => halloween}/foo_bar/download.md (100%) rename hugo/content/{species => halloween}/foo_bar/taxonomy.json (100%) rename hugo/layouts/{species => halloween}/assembly.html (100%) create mode 100644 hugo/layouts/halloween/baseof.html rename hugo/layouts/{species => halloween}/browser.html (100%) diff --git a/hugo/archetypes/species/_index.md b/hugo/archetypes/halloween/_index.md similarity index 100% rename from hugo/archetypes/species/_index.md rename to hugo/archetypes/halloween/_index.md diff --git a/hugo/archetypes/species/assembly/_index.md b/hugo/archetypes/halloween/assembly/_index.md similarity index 100% rename from hugo/archetypes/species/assembly/_index.md rename to hugo/archetypes/halloween/assembly/_index.md diff --git a/hugo/archetypes/species/assembly/assembly.yaml b/hugo/archetypes/halloween/assembly/assembly.yaml similarity index 100% rename from hugo/archetypes/species/assembly/assembly.yaml rename to hugo/archetypes/halloween/assembly/assembly.yaml diff --git a/hugo/archetypes/species/assembly/contrib.md b/hugo/archetypes/halloween/assembly/contrib.md similarity index 100% rename from hugo/archetypes/species/assembly/contrib.md rename to hugo/archetypes/halloween/assembly/contrib.md diff --git a/hugo/archetypes/species/assembly/stats.yaml b/hugo/archetypes/halloween/assembly/stats.yaml similarity index 100% rename from hugo/archetypes/species/assembly/stats.yaml rename to hugo/archetypes/halloween/assembly/stats.yaml diff --git a/hugo/archetypes/species/download.md b/hugo/archetypes/halloween/download.md similarity index 100% rename from hugo/archetypes/species/download.md rename to hugo/archetypes/halloween/download.md diff --git a/hugo/archetypes/species/taxonomy.json b/hugo/archetypes/halloween/taxonomy.json similarity index 100% rename from hugo/archetypes/species/taxonomy.json rename to hugo/archetypes/halloween/taxonomy.json diff --git a/hugo/content/species/foo_bar/_index.md b/hugo/content/halloween/foo_bar/_index.md similarity index 100% rename from hugo/content/species/foo_bar/_index.md rename to hugo/content/halloween/foo_bar/_index.md diff --git a/hugo/content/species/foo_bar/assembly/assembly.yaml b/hugo/content/halloween/foo_bar/assembly/assembly.yaml similarity index 100% rename from hugo/content/species/foo_bar/assembly/assembly.yaml rename to hugo/content/halloween/foo_bar/assembly/assembly.yaml diff --git a/hugo/content/species/foo_bar/assembly/contrib.md b/hugo/content/halloween/foo_bar/assembly/contrib.md similarity index 100% rename from hugo/content/species/foo_bar/assembly/contrib.md rename to hugo/content/halloween/foo_bar/assembly/contrib.md diff --git a/hugo/content/species/foo_bar/assembly/index.md b/hugo/content/halloween/foo_bar/assembly/index.md similarity index 100% rename from hugo/content/species/foo_bar/assembly/index.md rename to hugo/content/halloween/foo_bar/assembly/index.md diff --git a/hugo/content/species/foo_bar/assembly/stats.yaml b/hugo/content/halloween/foo_bar/assembly/stats.yaml similarity index 100% rename from hugo/content/species/foo_bar/assembly/stats.yaml rename to hugo/content/halloween/foo_bar/assembly/stats.yaml diff --git a/hugo/content/species/foo_bar/download.md b/hugo/content/halloween/foo_bar/download.md similarity index 100% rename from hugo/content/species/foo_bar/download.md rename to hugo/content/halloween/foo_bar/download.md diff --git a/hugo/content/species/foo_bar/taxonomy.json b/hugo/content/halloween/foo_bar/taxonomy.json similarity index 100% rename from hugo/content/species/foo_bar/taxonomy.json rename to hugo/content/halloween/foo_bar/taxonomy.json diff --git a/hugo/layouts/species/assembly.html b/hugo/layouts/halloween/assembly.html similarity index 100% rename from hugo/layouts/species/assembly.html rename to hugo/layouts/halloween/assembly.html diff --git a/hugo/layouts/halloween/baseof.html b/hugo/layouts/halloween/baseof.html new file mode 100644 index 00000000..865edeed --- /dev/null +++ b/hugo/layouts/halloween/baseof.html @@ -0,0 +1,97 @@ + + + + + + + {{ printf "%s | %s" (or .Params.banner_title .Title) .Site.Title }} + + {{ $description := partial "create_description.html" . }} + + + + + + + + + + + {{ template "_internal/opengraph.html" . }} + {{ template "_internal/twitter_cards.html" . }} + + + + + + + + {{ block "early_connections" . }} {{ end }} + + + + + + + + + + + + {{ $cssResource := resources.Get "css/styles.css" | resources.Minify | resources.Fingerprint }} + + + + + + + {{ block "script_includes" . }} {{ end }} + + + + + + {{- partial "navbar.html" . -}} + + {{ if eq .Kind "home" }} + {{- partial "hero.html" . -}} + {{ else }} + {{- partial "banner.html" . -}} + {{ end }} + + {{ $isGenomePage := eq .RelPermalink "/genome-browser/" }} + {{ if and (not $isGenomePage) (not .IsHome) }} + {{- partial "breadcrumbs.html" . -}} + {{ end }} + + {{- block "header" . }}{{- end }} +
+ + {{ if $isGenomePage }} +
+ {{ else }} +
+ {{ end }} + + {{ if .Params.toc }} +
+
{{- partial "toc.html" . -}}
+
{{- block "main" . }}{{- end }}
+
+ {{ else }} + {{- block "main" . }}{{- end }} + {{ end }} +
+
+ + {{ if not $isGenomePage }} +
+ {{- partial "footer.html" . -}} + {{ end }} + + diff --git a/hugo/layouts/species/browser.html b/hugo/layouts/halloween/browser.html similarity index 100% rename from hugo/layouts/species/browser.html rename to hugo/layouts/halloween/browser.html From 2170e580a674fc0f23f2895bd3fcf1fc0a527bf1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Sat, 26 Oct 2024 10:36:47 +0200 Subject: [PATCH 05/59] Specify cover image as page resource --- hugo/content/halloween/foo_bar/_index.md | 30 ++- hugo/content/halloween/foo_bar/pumpkin.jpg | Bin 0 -> 29752 bytes hugo/layouts/halloween/species_assembly.html | 189 +++++++++++++++++++ hugo/layouts/halloween/species_download.html | 107 +++++++++++ hugo/layouts/halloween/species_intro.html | 174 +++++++++++++++++ 5 files changed, 482 insertions(+), 18 deletions(-) create mode 100644 hugo/content/halloween/foo_bar/pumpkin.jpg create mode 100644 hugo/layouts/halloween/species_assembly.html create mode 100644 hugo/layouts/halloween/species_download.html create mode 100644 hugo/layouts/halloween/species_intro.html diff --git a/hugo/content/halloween/foo_bar/_index.md b/hugo/content/halloween/foo_bar/_index.md index 7d08497c..9fbd287d 100644 --- a/hugo/content/halloween/foo_bar/_index.md +++ b/hugo/content/halloween/foo_bar/_index.md @@ -1,39 +1,33 @@ --- -# Required params below -title: "*Foo barus*" -subtitle: "Pacifc herring" +title: Jacobus lanternibus +subtitle: "Jack-o'-lantern" +lastmod: 2024-10-26T10:00:00+0200 + +resources: + - title: "Fiery pumpkin" + name: cover_image + src: pumpkin.jpg + params: + attribution: demonic domain, CC BY-SATAN + link: https://commons.wikimedia.org/wiki/File:Pumpkin2007.jpg -last_updated: "15/05/2024" - -# TODO Place image in bundle and use metadata for uniform naming -# TODO Extract non-standard fields under params key cover_image: "/img/species/clupea_harengus.webp" img_attrib_text: "Clupea harengus by Gervais et Boulart, public domain" img_attrib_link: "https://en.wikipedia.org/wiki/File:Clupea_harengus_Gervais.jpg" - -# The params below were auto-generated, you should not need to edit them... -# unless you were warned by the add-new-species.py script. layout: "species_intro" -banner_title: "Species overview" +banner_title: "Halloween species overview" weight: 1 science_name: "Clupea harengus" lineage_data_path: "clupea_harengus/taxonomy" gbif_taxon_id: "8351946" goat_webpage: "https://goat.genomehubs.org/record?recordId=213953&result=taxon&taxonomy=ncbi#Parnassius%20mnemosyne" - - -# Optional params below, -# remove them if you don't want them or they are not relevant. iucn_category: "Least Concern" iucn_link: "https://www.iucnredlist.org/species/155123/4717767" swe_red_list: "Viable" swe_red_list_link: "https://artfakta.se/taxa/206089/" - -# These 3 params define the initial view for the map -# latitude and longitude are for the map center. latitude: 60 longitude: -40 initialZoom: 1 diff --git a/hugo/content/halloween/foo_bar/pumpkin.jpg b/hugo/content/halloween/foo_bar/pumpkin.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e3cbe03260589e55f507c1c2e61569faae689621 GIT binary patch literal 29752 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 OqKeuo`m>r(L;u-t5k(9D literal 0 HcmV?d00001 diff --git a/hugo/layouts/halloween/species_assembly.html b/hugo/layouts/halloween/species_assembly.html new file mode 100644 index 00000000..fa75c204 --- /dev/null +++ b/hugo/layouts/halloween/species_assembly.html @@ -0,0 +1,189 @@ +{{ define "early_connections" }} + + + +{{ end }} + + +{{ define "script_includes" }} + +{{ partial "add_datatables_jquery.html" . }} + +{{ end }} + + + +{{ define "main" }} + +{{ partial "species_title.html" . }} + +{{ partial "species_nav.html" . }} + + +{{ $stats_file := (split .Params.stats_data_path "/") }} +{{ $stats_contents := index .Site.Data $stats_file }} + + +{{ $.Scratch.Add "accession" "" }} +{{ range .Params.key_info }} + {{ if isset . "Accession" }} + {{ $.Scratch.Set "accession" .Accession }} + {{ end }} +{{ end }} +{{ $accession := $.Scratch.Get "accession" }} + +{{ $ena_link := print "https://www.ebi.ac.uk/ena/browser/view/" $accession }} +{{ $ncbi_link := print "https://www.ncbi.nlm.nih.gov/datasets/genome/" $accession }} + + + +{{ $content := split .Content "|||||| Content divider - do not remove ||||||" }} +{{ $contentp1 := index $content 0 }} +{{ $contentp2 := index $content 1 }} + + +
+ +
+
+

Description

+
    + {{ range .Params.key_info }} + {{ range $key, $value := . }} +
  • {{ $key }}: {{ $value }}
  • + {{ end }} + {{ end }} +
+
+ + +
+ + +
+
+ {{ $contentp1 | safeHTML }} +
+
+ +
+ + +
+

Assembly Statistics

+ + {{ if .Params.stats_data_path }} +
+ + + + + + + + + + + {{ range $idx, $statistic := $stats_contents.assembly }} + {{ range $stat_name, $value := $statistic }} + + + + + {{ end }} + {{ end }} + + +
StatisticValue
{{ $stat_name }} {{ $value }}
+
+ {{ else }} +

No assembly data has been provided for this species

+ {{ end }} +
+ + +
+

Annotation Statistics

+ + {{ if .Params.stats_data_path }} +
+ + + + + + + + + + + {{ range $idx, $statistic := $stats_contents.annotation }} + {{ range $stat_name, $value := $statistic }} + + + + + {{ end }} + {{ end }} + + +
StatisticValue
{{ $stat_name }} {{ $value }}
+
+ {{ else }} +

No annotation data has been provided for this species

+ {{ end }} +
+ +
+
+ + +
+
+ {{ $contentp2 | safeHTML }} +
+
+ +{{ partial "last_updated.html" . }} + + +{{ end }} + +{{ define "scripts" }} + + + +{{ end }} diff --git a/hugo/layouts/halloween/species_download.html b/hugo/layouts/halloween/species_download.html new file mode 100644 index 00000000..65172973 --- /dev/null +++ b/hugo/layouts/halloween/species_download.html @@ -0,0 +1,107 @@ +{{ define "early_connections" }} + + + +{{ end }} + + +{{ define "script_includes" }} + +{{ partial "add_datatables_jquery.html" . }} + +{{ end }} + + + +{{ define "main" }} + +{{ partial "species_title.html" . }} + +{{ partial "species_nav.html" . }} + +
+ +
+
+

Data availability

+

+ The table below lists the data files currently displayed on the Genome Portal. + In the Links column, you can find action buttons to download the data file, + go to the website of the source repository from where the data was fetched, + and (if applicable) the associated scientific article(s) to the data. + You can use the toggle on the top right of the table to switch between the default and the expanded table view. +

+
+
+ + + {{ $speciesName := index (split .RelPermalink "/") 1 }} + + {{ $tableDataPath := printf "%s/data_tracks.json" $speciesName }} + {{ $tableDataResource := resources.Get $tableDataPath }} + {{ $tableData := $tableDataResource | transform.Unmarshal }} + + {{ $staticDirPath := printf "/%s/data_tracks" $speciesName }} + {{ $staticDirFile := printf "%s/data_tracks.json" $speciesName }} + + {{ (resources.Get $tableDataPath | resources.Copy $staticDirFile).Publish }} + + + {{ $aliasFileURL := "" }} + {{ if .Params.alias_file_url }} + {{ $aliasFileURL = .Params.alias_file_url }} + {{ end }} + + +
+
+ + +
+ +
+ {{ partial "download_table" (dict "tableType" "long" "staticDirPath" $staticDirPath "tableData" $tableData "aliasFileURL" $aliasFileURL )}} +
+ +
+ {{ partial "download_table" (dict "tableType" "short" "staticDirPath" $staticDirPath "tableData" $tableData "aliasFileURL" $aliasFileURL )}} +
+
+ +
+ +{{ partial "last_updated.html" . }} + + + +{{ end }} diff --git a/hugo/layouts/halloween/species_intro.html b/hugo/layouts/halloween/species_intro.html new file mode 100644 index 00000000..a4d2d0e4 --- /dev/null +++ b/hugo/layouts/halloween/species_intro.html @@ -0,0 +1,174 @@ +{{ define "early_connections" }} + + + +{{ end }} + + +{{ define "script_includes" }} + + + + + +{{ end }} + + +{{ define "main" }} + +{{ partial "species_title.html" . }} + +{{ partial "species_nav.html" . }} + + +
+ + +
+ +
+
+ {{ with .Resources.Get "cover_image"}} + {{ .Title }} + {{ $title := printf "%s - %s" .Title .Params.Attribution }} + {{ if .Params.Link }} + +
{{ $title }}
+
+ {{ else }} +

+ {{ $title }} +

+ {{ end }} + {{ end }} +
+
+ +
+ {{ partial "distrib_map.html" . }} +
+
+ + +
+ + +
+

Taxonomy

+ + {{ $lineage_file := (split .Params.lineage_data_path "/") }} + {{ $unsorted_dict := index .Site.Data $lineage_file }} + + + {{ $lineage_slice := slice }} + {{ range $rank, $value := $unsorted_dict }} + {{ $lineage_slice = $lineage_slice | append (dict "rank" $rank "value" $value) }} + {{ end }} + {{ $sorted_lineage := sort $lineage_slice "value.display_order" "desc" }} + + + {{ range $rank, $item := $sorted_lineage }} +
+
+ {{ if eq $item.rank "Superkingdom" }} + Domain: + {{ else }} + {{ $item.rank }}: + {{ end }} + {{if or (eq $item.rank "Genus") (eq $item.rank "Species") }} + {{ $item.value.science_name }} + {{ else }} + {{ $item.value.science_name }} + {{ end }} +
+ +
+
+ {{ end }} + +
+
+ NCBI Taxonomy ID: + + {{ $species_dict := index $unsorted_dict "Species" }} + {{ $tax_id := index $species_dict "tax_id" }} + {{ $ncbi_link := index $species_dict "ncbi_link" }} + + {{$tax_id}} + +
+
+
+ +
+ {{ if or .Params.iucn_category .Params.swe_red_list }} +

Vulnerability

+

+ {{ if .Params.iucn_category }} + IUCN Category: + {{ .Params.iucn_category }} +
+ {{ end }} + + {{ if .Params.swe_red_list }} + Swedish Red List: + {{ .Params.swe_red_list }} +
+ {{ end }} +

+ {{ end }} + + +

External links

+ +
+ {{ if .Params.gbif_taxon_id }} + + + + + + + + {{ end }} + + {{ if .Params.goat_webpage }} + + + + {{ end }} + +
+ +
+ + + +
+ +
+ +
+
+ {{ .Content }} +
+
+ + {{ partial "last_updated.html" . }} + +
+{{ end }} From afd4ed1ba07be2876dc290254b7f58caf73d5807 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Sat, 26 Oct 2024 10:53:50 +0200 Subject: [PATCH 06/59] Use lastmod property in last_updated partial --- hugo/layouts/partials/last_updated.html | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/hugo/layouts/partials/last_updated.html b/hugo/layouts/partials/last_updated.html index d74d42ed..674abf06 100644 --- a/hugo/layouts/partials/last_updated.html +++ b/hugo/layouts/partials/last_updated.html @@ -1,10 +1,5 @@ -{{ $lastUpdated := .Params.last_updated }} -{{ if not (or .IsHome .IsSection) }} - {{ $lastUpdated = .Parent.Params.last_updated }} -{{ end }} -

- Page last updated: {{ $lastUpdated }} + Page last updated: {{ .Lastmod | time.Format ":date_long"}}

From 9da233aec0d72c19f8cf22ed64bf086e0a396ae6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Sat, 26 Oct 2024 10:57:42 +0200 Subject: [PATCH 07/59] fixup! Specify cover image as page resource --- hugo/content/halloween/foo_bar/_index.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/hugo/content/halloween/foo_bar/_index.md b/hugo/content/halloween/foo_bar/_index.md index 9fbd287d..864daa63 100644 --- a/hugo/content/halloween/foo_bar/_index.md +++ b/hugo/content/halloween/foo_bar/_index.md @@ -11,10 +11,6 @@ resources: attribution: demonic domain, CC BY-SATAN link: https://commons.wikimedia.org/wiki/File:Pumpkin2007.jpg -cover_image: "/img/species/clupea_harengus.webp" -img_attrib_text: "Clupea harengus by Gervais et Boulart, public domain" -img_attrib_link: "https://en.wikipedia.org/wiki/File:Clupea_harengus_Gervais.jpg" - layout: "species_intro" banner_title: "Halloween species overview" weight: 1 From 5f588499a15eb62a66b5309ba1563c178668f43b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Sat, 26 Oct 2024 11:15:17 +0200 Subject: [PATCH 08/59] Properly name pumpkin directory --- hugo/content/halloween/foo_bar/_index.md | 46 -------------- .../halloween/foo_bar/assembly/assembly.yaml | 15 ----- .../halloween/foo_bar/assembly/contrib.md | 14 ----- .../halloween/foo_bar/assembly/index.md | 6 -- .../halloween/foo_bar/assembly/stats.yaml | 24 -------- hugo/content/halloween/foo_bar/download.md | 6 -- hugo/content/halloween/foo_bar/pumpkin.jpg | Bin 29752 -> 0 bytes hugo/content/halloween/foo_bar/taxonomy.json | 58 ------------------ 8 files changed, 169 deletions(-) delete mode 100644 hugo/content/halloween/foo_bar/_index.md delete mode 100644 hugo/content/halloween/foo_bar/assembly/assembly.yaml delete mode 100644 hugo/content/halloween/foo_bar/assembly/contrib.md delete mode 100644 hugo/content/halloween/foo_bar/assembly/index.md delete mode 100644 hugo/content/halloween/foo_bar/assembly/stats.yaml delete mode 100644 hugo/content/halloween/foo_bar/download.md delete mode 100644 hugo/content/halloween/foo_bar/pumpkin.jpg delete mode 100644 hugo/content/halloween/foo_bar/taxonomy.json diff --git a/hugo/content/halloween/foo_bar/_index.md b/hugo/content/halloween/foo_bar/_index.md deleted file mode 100644 index 864daa63..00000000 --- a/hugo/content/halloween/foo_bar/_index.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Jacobus lanternibus -subtitle: "Jack-o'-lantern" -lastmod: 2024-10-26T10:00:00+0200 - -resources: - - title: "Fiery pumpkin" - name: cover_image - src: pumpkin.jpg - params: - attribution: demonic domain, CC BY-SATAN - link: https://commons.wikimedia.org/wiki/File:Pumpkin2007.jpg - -layout: "species_intro" -banner_title: "Halloween species overview" -weight: 1 -science_name: "Clupea harengus" -lineage_data_path: "clupea_harengus/taxonomy" - -gbif_taxon_id: "8351946" -goat_webpage: "https://goat.genomehubs.org/record?recordId=213953&result=taxon&taxonomy=ncbi#Parnassius%20mnemosyne" -iucn_category: "Least Concern" -iucn_link: "https://www.iucnredlist.org/species/155123/4717767" - -swe_red_list: "Viable" -swe_red_list_link: "https://artfakta.se/taxa/206089/" -latitude: 60 -longitude: -40 -initialZoom: 1 ---- - -### Description - -Write some content here in markdown for the introduction tab of the species page. - -#### Genome reference - -[EDIT] - -#### References - -- [EDIT] - -#### Changelog - -- DD/MM/YYYY - Species first published on the Portal diff --git a/hugo/content/halloween/foo_bar/assembly/assembly.yaml b/hugo/content/halloween/foo_bar/assembly/assembly.yaml deleted file mode 100644 index 3bd79ccd..00000000 --- a/hugo/content/halloween/foo_bar/assembly/assembly.yaml +++ /dev/null @@ -1,15 +0,0 @@ -name: - label: "Assembly Name" - value: "Foobarus" -type: - label: "Assembly Type" - value: "" -level: - label: "Assembly Level" - value: "" -representation: - label: "Assembly Representation" - value: "" -accession: - label: "Accession" - value: "GCA_XXX" diff --git a/hugo/content/halloween/foo_bar/assembly/contrib.md b/hugo/content/halloween/foo_bar/assembly/contrib.md deleted file mode 100644 index 97e53c71..00000000 --- a/hugo/content/halloween/foo_bar/assembly/contrib.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -build: - list: never - publishResources: false - render: never ---- - -### Contributor(s) - -### Publication(s) - -### Funding - -### Acknowledgements diff --git a/hugo/content/halloween/foo_bar/assembly/index.md b/hugo/content/halloween/foo_bar/assembly/index.md deleted file mode 100644 index 59c22e0a..00000000 --- a/hugo/content/halloween/foo_bar/assembly/index.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: "Genome assembly" -layout: assembly ---- - -### Methods diff --git a/hugo/content/halloween/foo_bar/assembly/stats.yaml b/hugo/content/halloween/foo_bar/assembly/stats.yaml deleted file mode 100644 index 0b6aa3d3..00000000 --- a/hugo/content/halloween/foo_bar/assembly/stats.yaml +++ /dev/null @@ -1,24 +0,0 @@ -assembly: - - "Assembly length (Mbp)": [EDIT] - - "GC %": [EDIT] - - "Contig #": [EDIT] - - "Contig N50 (Mbp)": [EDIT] - - "Contig L50": [EDIT] - - "Contig N90 (Mbp)": [EDIT] - - "Contig L90": [EDIT] - - "Scaffold #": [EDIT] - - "Scaffold N50 (Mbp)": [EDIT] - - "Scaffold L50": [EDIT] - - "Scaffold N90 (Mbp)": [EDIT] - - "Scaffold L90": [EDIT] - - "Scaffolds >= 10 kb": [EDIT] - - "BUSCO % [EDIT]": "[EDIT]" - -annotation: - - "Gene #": [EDIT] - - "Transcript #": [EDIT] - - "Avg exons per transcript": [EDIT] - - "Avg gene length (bp)": [EDIT] - - "Avg transcript length (bp)": [EDIT] - - "Avg exon length (bp)": [EDIT] - - "Avg intron length (bp)": [EDIT] diff --git a/hugo/content/halloween/foo_bar/download.md b/hugo/content/halloween/foo_bar/download.md deleted file mode 100644 index be355e9c..00000000 --- a/hugo/content/halloween/foo_bar/download.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: "Download" -layout: "species_download" -url: "clupea_harengus/download" -weight: 3 ---- diff --git a/hugo/content/halloween/foo_bar/pumpkin.jpg b/hugo/content/halloween/foo_bar/pumpkin.jpg deleted file mode 100644 index e3cbe03260589e55f507c1c2e61569faae689621..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29752 zcmbUIbyQo=9|ejgSa5esT7pB1wzz(ayBBvY6oLf`1h=MWfkKf|Tm!`^?$F|{4Gsm0 zyIp?w-gWO<@2~gXC+Dn{wa(1R>@#ORvuDrF=58&|uAR({w zMpjQ#M-1X%%j@iJ=K%5Hf58Xg@b+|abATwTC_+@U-Y7zRUI}pWKs>yy-Z^>sK_np} z!uWv4MSwg20|@-z@qY&(Mc3w#6ogb92Oz#s!+k^vuk0AK(Bi2a21 ze{lcr0AgTbVdFeC37_DpKpp8*^D!|oo*Ijdh4oZA@aZ}Liwv9m8NVzJg|-#wxd){{ zNMbH7i(GXlmCpDPRL~k0iib~4LrX``%Er#Y$t5KG>a~cdnEZcl6cm+|Rdn_A4GfLm z8r#^~**iEoIeU6}`}o5B{KLW{BBP>XVv~|Tr=+HRNzeG6mtRm=R9sT}qo%g5zM-+H zxvRUUx37O-aA;z3YIqc~|o_TM$NNGUSOI&!N!M29)iwr7-6*I#l}l+OSXuVmOVJ!%g?N9EHE*0nD{ll;maf-9Yi~U);46=W_V4JM~(yFHBgMGue2ZJp(JtEAm5Ra z4>)J979zg0ugaULnkn59?VT6vGyE4OuK%SlB1BMu3CR57teE z$4sZnNwKkFL`@|mNc$*;ZwmcEZ=~c*n%Z`ZwSL2}MfljUg0U^*X?Zqqf{~XXVXFW` zTsv(BLT|{}w;SAPYjFo5Vt-Hl+5>Ij==lUbe2-D#cMwcW=m$Mzp>rUOsKi>N1R670 zogh^NYpN(LtdojZhCfJwrB0;kFihPo|Kgj+Ac%4j043`X&BuhC7nKpid!d%6orML( zMEYGv#7>4R5(z=+MU%1&qtCzk5_|%jX6AH-7VYZTXKW*V^D$v!HW?fn-jv$b#!~_y z?F>0T5DVo`)gxkl<>yukAR$hpvJglKAk+zj4-*>;jugexNm=5b__*`}B9F`rQ5fHo z85j`leGM8L!%_t04pPnx(n-*}1O0}v;>0IYH+rPQZ7E_&-Jl!RiATgnt4{LVjKvVG zl%YoQegK9Oorybu@PlrZrW%5ahQVDg>^wi^izi-fADZGM!`wFkzygk7Deecx6lj2? zJ}-rchuMZ)zImZA#y>2yUC-H*l_!Fc@=qL3CCiD1U4*VkK|o0aOVUV!!Ub9eth^0ZpR|+q)sy!3SF$3gUqyhP zAIvmUJR_|aKciAH({M@h6$SX1f39M!3EcMX|2C`ysZDqURCqJ*sVno2H2Zn_FBNVK zD7-yE(A#k80C|)oiJaK7oVT4#BSr&@DAfxT;;>$mR!NZe)0KX*t*suvPt%!IH<=pd z&>$uTt*TTp8=;xAT$CkVyYGGeWXI(DZ27Jv$%*_;!nj!CzLVHMMC#}V%78Y(%vkjv zk4*aJcSA*xFzvcr_6T<7DXxaGw9t~dip@-KtQ)U!D1DW%|kOiH7qZm(7$*AEmlEKm75|&X0oN5(vTG3DRJfGob|J5m-@_N8%F4G|+ zee%5|wrDQ404`36+Ti$)s%Eq6$wF~Mu4P4)<(e7mW&kJGa_3qTy2w&Qlr6J#DKSA& z>T`ajeF>ASxd_Ce%}KB!RF=Kf^Voa}0{r zP=qG%xf9vTuTgZQ5KGFGjahUHd@9ET>&7}6MN!ANyDJboZ8HsGBm^{$itadpCtC&F zfEqA7+Veap+S1*BBD? z(gh-@fmbL8FfPWgT-`cJDD_vC{M;LUwJA;)-j5rVUGEx#IhTc!5z?bA!11D!{;w7 z#X==Bsd50i=V3;ln0ANqw?nQb6lZc2g`?cLe2}D^1lWJ`GZ+B2nLzzRZ=rf56&(!z z{c`FxH2a!2(j;paDl*!-LNRBB zlIn5wv9?R{IrO}-#=*MAOLM;XvW(jk!MD+jr)r|K9TJmc*qu;JZI0zMI-`UtIT^_D zUaa+SjR?RYuBmVU*3UShAmgUssWQXx)%g2z?I8_U527QcOto@JChy$@aI&8JwTGNC z)Yj`zjXV-!d-P#SCCP37Z&6$cQGt!-ZBSrOZMp0@M#jR@b~2mn1=W85SrA?R@}h*U z-gmHBiL0%dtFewK%yXaXL!kM8w3f&=w1M?Gs7?(RZx9fhKKUs$`&Gdu&u}pvs|da{ zzC}Y;FztBoMQ5o~YG=P_iC|o9CXHM+o9lA2Fxn%GJmjos*>vF=!b6+Pm^p0~hD?sN z%~jqY=j3o^H8;259~C&jro_CS)UnpUk98!t;||l%_;w+z&iF(nDjxyB;ZOmYfg%Wb zFx=F4SN+{_=T=J47D(iqE3qS;vRyak)uaj|@;#^?o5QmP1kouGWzZmLRkhhrcYa$t z#aasy$FT^iD|+w8G(eai90)IW{jD?COGaF3xR7Bl*!`v~&#`_y0r*{6?i-;D z`$U<^pX+e|<>A4u!Smo!H^i6Z(dv>9nF3)SYZzFnkq3061$-v8v6xBn9=aYaA!9n3 z2{P!6@pnoCxn%tfTj+^knruhyYQBx?i+om1dQfKWc#YsB%zbK5f!u!?@a*3+*6L|KwGB40IUb3Ff)pK6a^ zilh8p9oE2`Siq%ICai-0&lsvT{c+$YS!@!5QJ;7YfdGO5+v*Rt)$ zA^RI9TK@Df6SR+2E)ab6d&&(0nSAF|osq+i({B79z%7I;PncUya52~tFW6{hlZHdUp!?#71aqia0qgOcIXuVNVSUs)?P93s#YRjD^Ve|71y(LJJ#2CgYIyg|UKpB>iC(6yQ zsr5mZ5`9bWhn)r>_gu&TVr^9t$Td0PgzKWLrn4VWqlisY<6(K15tWoux+x6S_Tt z3Pkp4z=+uA7K^b+JbGWglP*!qFFi`okH)Co7Y0jWB)!J3yx7#+D8|V%LPA|d*b79a znuaYf*>fvNw?#ySkSZ5jWyZ^HT}nz;2EgS^7`Dsk*a?@e$9M>Pf&!6H9yuRwku9?k zy_{UA?7;VXLRYI-iBns#|0Tnr*^UDP8~Pk|Rrs_h7RH+i5KlkE`ZHLKUI7|56yF!G zLqBD@Uct8dm-EXrKghT;F%&<4n~oBjt0nvMx0Ju0>ei|N*+Q*@h$DY8*`az3rQA-d zkU>gF*9q{>Q-%ae%EvF~{VhSJqZilR?^|Q_S>^{@?F6yJUVOX+G`UAcakXThrdU6L zxX<0*SP&+hw@$pf%#@>>Q6}HZG%l!a+b6YRjn|$)2}CXeVw|1G#u>Mss9kilk}0DH zb{wv>A)-B2hT?xjo-Ez_cC|4YwK&W=_Z>%VkL`Og5xvKYQL+QI(^gzdU^@gH6C8-m z>VzmU>+SwJor_B`>`IJwOUSfpjy+>~F{Rdl#hV?*7<(5+gDlbT32R8d_YLiwD8r^t zG`^fegd=Pp0a)-^b(f8!C7$iiwG&~qUb>tUMwMEMnS0Hvc2G6GM7~xgP z+@cR7DS zf+OMli-#w!f7231pO3(*==&oI;O=;5tJ8J$Gowp2L-{6$)gt(ZUy<{xcKaYfc+Lgn zD(qX?zzz0BajP*o_>2xEJ|jip(k$L=y6am-JHiman|NdRuVTAfRWU zjl6~uhh@Azqywc)u)+Ho_v%-zx73|3PLdtf4cWLIo*er6+Jl1^eJ*PxaXDly!mHf# zUXK8hUgBI&iXW{b9nYdK3GUak&u?-_Jjw-q-!Y2*yin{sW{>=$R+!vleXN?YUs2`| zx?)^cv;RJ^`LtKgrr!Wd|C7Qo>Yup-mu=#Y9>S+?Q;ASmxA4U|D7lJ&_b*7PH{+M` z;b>?w`jn+*h%d1dPSlVOoW&mK_I=gzgKba3d)QtT*tCb4h zc%~drXYjC#a=%i1dguO3wwV5%B?)*&_lwvwRDgT4<^}(+BVYYRb?`TIz{}r%d(}@) zTC*Mj16PScB^by`;6)jq<8Rq#vID3ob%F;x1lmMt-RYg%3nkj$KS)X1u?&?95uH+Z zc<=Vxk3KC7*nnTy2Y{z$`(}?Fcs|y$uy2(IGK0I)``1g;)`GN*uMAv}SP^p#YQ%MA zc1P{{ja(&GJ{{S7QFq+ui(QX^ADR(DuVh_T_i*X_8xm;m1wI%C7Tgj3h@~BaY(~6T+Ub z6e~l*ESGiN*GKwwc}RmuBfakHJ!YYcz!2^H5oBt-^IC{B|qTp-TLe?(;t~dRH9h^ z8a!)hcx&<^*wRkZ^aK6fX^%8v*=iNSs6)>)Q1_nrf##UW0hUcOf1h~Ab+mGJy%qSgs0OnST^#eOV2TX+YPOBQL$sq_I|fby6yE&hB?+cCT^zfKTxVz*hWuHS#`y7j4%xamQtpf5}tYVEknxU;~^eJGb``uF=bj5NeDNP?Zy{^e3NRgyU-p^Wd*OsFHLqVD9zBE1E3Hk! zt|aM56JK7Z`a-9%7eUsb2ICvub#ONx55mEf?R>pcY5X+Ke>Nh3@8}dB-zVn%y>c_d z8#D%hAyR@q1})~`Duzj02jY0Rkrh_u?w(YXjislyk(4V7^r&m3?)4`Vew5%RS-D2 zWLSOG{>CYY?0XeZCaDFQPkM4$uCNI34SnRXmeCxfiNPM_7t@rzgj16Do zz)oCRI;-TZSpC2HQMvtYF6Vm}SogUB;9G?N>3UZ&RY`G+IyG}AjUiSok(G2&_%&_+ z@(78xMXblqHxLkjzkky#zN5KaM z2(Wy4#q}ow;n-N-BE8NY*8T9(+bA#VOJK6DC4Xi;zUZh%WLtl#5xMa5Kf~%JUG2QBYz1dX2X$`MdQeUsJ)Ai3(}XX~QeeO6u(1bHLFs`U#&5iR z-UWj&8mx{9j|VrSbM++a9l%+RZ{Q=P+FBU?;dH3XY(J*NNuD=KJL4m$@OdbqjlBU~ z$6qJK@D)CluGhdpiLGY5tqh-M8OU?->OZ8yt5?sDv+4Se%tPQeh^WLzyIn()cwl&ZV~j*CC^jdUZ~F3gL^1 zt4hyHb1L_69!tzVBAAr;M5U0+>qIKDQ9791g9u7{%6riS4@+lR@jc`bko|+p*8kMh zw~y|7<0McgMCIQ~%Rkx&{dxv6lWc(`C*SHFyT%fY7VFVeDTyah0?U47!Q@x)Yo(GC zRMla|@#2%}P9#Zi@S;C*RMvcR{VR5RliwGd7w%1x+`j_c_8iScrc(RF++8lDz;hv?bp zuYMJ8T{Bgp-VbY;e6lQ9iRz0#k@mq6nv4{>AA)yo$d+_JpB^ZQ$3=m&I3NIAcJ@jR zM)P`Z=gIpF3><+aeI|NLzbD=QTQW;Xyg8!lYq=V0GlX33*aVD!&^sIFwQ08$s@+^z z-o!B!q}Y&bHLa%4WwsGten*oV7%yKN{{7*fu>LkCz`L^a;vWeSJZMkX?M*l@H--q> z;qG?EA%ca*LqV?uYRM_GR@3hI^Kx7Y|L-O~w<%VHlH1QrhqK`zp4l1x@xlw3bp2lu z^vU3K)Lhu@LGDRgfw%AaADSgomHo*T6|?9K!psNLhtOtMLv+ek;&;hauJOK~Uy``9 zuWX7c9QUgM8AD52C$6@t-Q9i_BB- z2{ejU??lr!zmzvnrQ7S8Pn#746@{ri=y&Qg(e1z`U3UJ=8=tt45ae3RI4P^0h{Ybg z#D&B5di^ux$*JXFhoLgSR+rtwNPj(J?9W_XB32Ein~ho^9hdl6?%pvYFBI>-FWe;6 zpahvJy;|7Lau`1+-ha|t%9cG@o2cgV*;3`=;LlNo=Hk;_;k5dG-lqF9gDuR@sr+hf zRW4sU5lZhjx{?_-WfQS?ZMfCn`+m_x`>3FH;br*C&3ZX})8(#3rqN6NpTyS}sLZ-{ z%B4MD9Zhc!*54;dX3Oa@>`SNDvzv6jVMYPn0&fegTl-PZCm!0&%`^+vjOMy1PBeX&r=fx%3@T$?Y*65!ehCP9sFf`!}P^jL#KHs z{ooN$mDAmS{HH&VYo1b!8;7Ns1%fcXmw#gBEpYok-O^QRFixao^ZZ<~DR~p;jg`rX z@CnTwnais7F?*k2$sjGiN%H|K3LsEl`Yb0jo9t-0C8>DkobzQS4Cfbo z8si=>M>+!W>e&8;(SvvgdiN3VtKs*9%Jx~Cyn-KsU`6aT-Rn~WY3RXs-bxde&CG#s z>v3p@GZcK9H~bMmME<;|%6EMcr$t=xQ~oh)6{JR}xPS5GL|d?{aQ;!-1fDMQ>h(El z{_$lp!g9W>0yy?aijsh;udtW?(ei9f3LO> z5Mfz6WBW_87z_KY@@8J2N48z zd(=2!QS&$FX%VeaGrcut3p;sLctsJ|+o2=Qylj?aw0X8gf;3CTv_8y;E(8H3Lt=&j0M49iLwLu7ieSC^<) zSGUIo>#K-x`^H*aw?CVTR#~ln{r*>`FPQcJ_I-N&Q?f-^bSAB)sA&xTXALLjXi+n1 z&t%GV-*t-IKt3(O@`$F)u=7t{!yPqjwlj^!n7zA|N7)OgIE9i+qIT;(sZb9|TX!+eJsJ^r>x= zKfj;3kTwyPCO3koDTL`(Wx183l7C0)L(1a28xPG**6z%Nk}!e{?zp=j0q86XdWUJL zKj_81sHA7K%|D1?zd}wqMysLm&Nn3HlXwPDTbNQmXl!afllBJc%qHu*tAex2bL%5BLNFKMzuZgEk*}$7OS|E zByI0@uC)QDmxTArMR_zeT3s&UfN8>FNzw$z*`}q)K(*cgOS0a#lbam9o}I$_OB6$i zS9&w2Tvow@#`kRG)pv^q^fb$HYXAv+%4D!dtV7n8Ww4CZ%x6n?!PrU9QRnXP@Z&f| ze?0a$k$eC%v4{E`5K57O#R*+!%+R+%!Z;&kqWNcq?zVG`0Vsuudt#1!Efu7PdKsYf zi=_Mq`;@2v8%lPp4bniTo+OdZ{F$&SHb!!H-2C(m5wofw?F>BjP#|cf&Wi}w`Qmb< zo2;ASm1jpsaf!Cva8`N{ej!_Pfu@g#4u29%iA7@eX=J~tKOW9?$F*n44qIu$vw8L< za<}*W-K&}JV-mVfzORf$jGlJlcXg3Pqfr@=7jrj+p{050x~}HR9?UFYa zG#LX0O??l1k2NOy7yhMDe`Qg2aCqNXy<;}waRtB*a!J`}Y(Ef#l@ahh9K`Qdan;bZyB<9TGkNdX>9mmM`v0uH37Gm8Jz`jpGwV$y|A_ ziquB8*P`a0vr8PukG2NIBg;#AM;3BMu9-2~tfKW$jw^?C@v>LGtBWsjb_)IS<0!-J z-_iyfo<8Ug2IyX$OSNOpIqlC};Jf!~(7UzX8VVjWteLK`Hkzoyj-AFcAt3DgVHgRg zM8&O^pN=B(}-I6kAmp9{Ez`<={ z3W`olq1c{GM#C`<6Zw6}p1^GEDg;;b1TbXou zitlFfIgWg-M{JU0XBAAQ;CU{?&s2yS<4kJ0>vk0&xIezARl8Pw1jvZLFU1Jgc~1^c z>g&U@&p7dlkfDRtV1q|m?)2?ci1T*R&*qu&W_si#m)lOylOJ%O^2!6*%dnS~s**hDMbx2OnTD!0``e$?gETWDr-TC0Qj0pql&BMRlLVNbV>Iimsd)}=~ zgoG{vKWEeCMlr^+Y93mmxZlgNrio*m-eO{tlz*QqcDY>;nCp2|%8dw4Z5}*Tn;aUm zfs_{Ovs};qdIZ#1glm3m<9Do=C5Wk{VVQ%e2W8*cUO}@-?mr8)C=9TsDhnurHnlA( zJpKg|vT+kAT)-UTK~-asI4ytgTWJQti9wRJ)aE>G(c9eI)>TW`mi%F6X??2N@7M2@ ziE-aX?~ctf+x%ioP!B2!P1)(aemU^qvBoG}(?4Ueg80%gXZc3$2kH0Rz6m9)tyEE5 zXtn}(LC=wuxOf^bN=?T$4sZs#o~?Tr%&9w!McCzlOyC?hBWj8k*HY^(Q5e zA(II*kWe5BPf^O=KVGGQXdGL{@>}-#_LitQm_flPKu<51)jqrAE*`--Qik5+`po(_ zeuw=+^1ela`_=+(ybvhxPaI6T*r)!qcnafD?=zOZ-U&}U1@_Yc)?p8Gq-{m3=OA{x zOq;k?m!q6ji#{gLRn3_4^H2B>+iFuh1?0U#tmuDt`9t}VI_eQn+V=cv7kzPb7_*T@iTk3>4&csxVUGEG-5|E$gBikt|EeZw+ABA{2=#Jf z)Z;!$_yGU5GmVcvNA+jVMyZ`VyK)veNtoVdLqWrZtnqrY^Pm!xaQShR6d7Wjb>sSNC&~?%|ZCVE@ z7rzi{Z>oBd07P8VKM#9sz7nIdioD}0YlB?Y6<&~6sDv%Qd0>6LI7la2 zpg`M!WuKg*B6D}-X_0&GaC%^y^+Y!4dHC2tv?a1kpTqRaa|A45{01Ll$3?v)hDv{% zlW2J;sRVl@1n#_B4~va=;vJ-=v}g)f#3Jd00+oE?fFcDe1dL=zT^LA*^Rt37lM$IJ z9$LFLJM6T;sKZjh^Tyy)8W|eBE;5WAJg|gYn7IwH)hW07q1^BP1?gp{gs*^iXr6ME z*CnrW)H;;#+PsWSv$5Cj$A5O>l(zMNyWT*OqeVF}i>Qk4rg=Pm)?(X_fLROa9+3ux zB<(%aQc%IFf#!KjSHWBE;@-vS9KJmRk|JkvnZNpZ)3wkhm7ifW?Cyv@DNyN(eo!r61o_d!8Rci_)&%Y)& zARUCTL^nt|eSm}Plp)0NtdU9>ez!)`qQXKsEi z9A!!F-NP$3M3?+A_eJ_R)f%~pQ~B(VxNqTf7I*N9fbo3eLu)BZ4W<5Kx`&h-@29~p zb|u!pzn2Zo7O0RIf4kTqMICeM-DXF&H-8)JSi`Og`uA92OoR@)qZkXy1qPItB}HL)DM5inNXertG+n!8PA zFl}VjH{EB7)^eAw2x3Nb>Pg6gW29Y2nU#>X)U&^wvRk?-J#7BsTeoKh5Ekwo69xR& z_8Yu5It3podl>nOaC*o`9I3s>jHd}2pTTtWz|#05=brZnkVDOY7cFE}!Slc@xu)b{;UKM-+hRFb1eRrOLg~=8SN0^lgE_Gu)gYF3s^JF{K&+EXfvrfzvd;w;3>u+6I!P8Uigrdj+QWPv0RSnA-Db#t zALexrXihflw(S@q0|9g25LKG~Bgbupo%oSM$ss$Um9stmORrNsmgJ~xGFagu0D%(o z>_@=8^T{af-`qUe77j?g{~2nFhr8@az$dd<`<%0daM$S^>t4-`$~)pVy6(UDHEXm} ze-x^mp`*kE$7!=p2}wAC)1vI|%Ud+O!4&e2l`4ysN@wg9@bY3BXcEljMm+Lpr5}Ww zGa$ub^H7sHr8WOHut!(9hMjJdaxNc$8J65jYha1DJ1T_Dr3s=#<$Y|rHv8}2Kci5y zAH{%mVML|6eQ!LUZK5%E9G`}V@tZS|(td52C|1aMAtPpjY%iyd(FJ7$?(VSRvtbv! zR#glfPytJGrloy0DF=I4hI18Wickg}@%sIwN_gsqyX3L{MvD(E;kS5yqklPWxL6sJ zshd4Dv)JxWS=)4D^M_Q5k-327>mki;&0CA~2q^m2`lFFODykx4q}728J7v=x6y);v zJ+Y(bi_bsaka^n;MQp4i4S!`5Bw8I))edKxBtw`R8G{;8)ly)N`tb@I9%X$k&D9Q6 z$hz3X$56#HhfpKO7D?y$>x9Mk1f7+RC-deqN!?ug@FjQIbMSV?_1=2_{?C#tq8!~S zWw)~^=>Vcp9DnZhqUv1>n=3b5x)`{QdVf3klaIf2gx9hP-LniTel-~{OD3~GJ~+#s zMfPfAX`A6|kxIwb*=un1_8ndD$k9;hGh;K>Y4GPXgHM=%A^m2uNt|zRTx1j>XJ9&NeGSKzbX%W9}*@STCxZ`K5D%aeb3+1SV$K)5d#5T!20>RwdFI*&6z{ zbZ}A>lb0AMi$!>bnt>x?t3>OlB!ntnl$BnCf43NRe7Vagi!eHsJ$SLR&GL~@VN7t> zP$Pp7Smhb75~^yA#HGVppUA#^QC7?J?RIuTMPp@8ifO{bAP~RTy$7Jd#c5h|(0NyC zuOlD}og&WjQN_?KGG5?a)XjG80O}$c=}i*{hG}Wnq2pmYPU(1!Nn#TTxSe@e-Z-B* zp%}P0!P-BmpKOmxWj-a1!LoG4d1j56IR%byWmGva*?yF8n`K85fBZcCDV}hiu5wMQ z{I@11lV(BClVH`!*G34Akgj2iwu}1JoV|FUQ!mQP{+s0fWJntS&htJwh-T@|;A(Pp zn3~eTRqjG$WIXf5Kg|sygd8*e*z=>=ZVsykgEg5i&-4%w0BUQL@w848kC6P< zIA^Q{Gfa;!sYlgkDo71Qmf?p%`t6mtXU-$Q3?U_5+kiCb&tVGCudI15R$t-io4I{B zWbp{FzvsRzTlf8Bb7gh(zPI_T26toptnBMRjChb&^pCg?sQ?lkm+RfxO6(bw`(_N` z#*R|o1oZd6dpVEr$=rA!r++~k%K7fHVvLDQq^T2&hb#Zy{ z!EGHqJT##H`A2g6rFuZw)AT2Pbh8*hGmYBR`Ng~c#j5|PccrcBzQk3#jqr~EHz_T# z344n3RghGV0*X%M&`u0?%X3#_FOCg_Y}fe-0J;t zjwwOk^{=4NmNxx&)e^A}zXvz6@l)DUf)r0RX>{xDOzt#KpSf!QuriFsA_uW$^4Q%w z*z)ZbkgAx8NW(JE^}pOy(F}8hp^kLAgKKfVVR8H_9f=+6RLYLFQd0Ry%s4?qOOEHX zR*mPSS~&1QOsM{sC)Ym4_Zi#@rMZ-pkd3WMnfbU9r5=^JPSG;0-(7qn&PxDE{ zLGOaQ8~g(d)ot99xWnCH4A}KKro?p&)tDXt{D`^1>>dO1Px}o`tzr{VtxWXuIr4Yd z_ce70A|8M9c8^zi1yu|5^35hziI++bVCVC8$^h-^>00}?x@^&0Z**B$LmcoD70t70 zmj-IJNV8~a2=7ay;6iwt9-uz=9mP@Cy??L5_2MR{a)X&`-5vhEY+dp!HNLWa!{RCh zrHq1?UaZOWv}8I=G#OeeGu;!JwzfDerwXT+IXuoU>bF*?rwr%IU5+>@P>Uny5?iPvjyQn{rY zhwT*drTfX+&nOb@h&^ighV69JSbsh$X?^E-_y9X9o$KB3+4fY7ttLGI_~s226%s-#&|cpdjdtQoy=hqaO~D?I;#Bk3j5W~&uOC=VA}9CCL1 z{SVt6!E@42dZ$JAz}X)%6XE(IEb({VMmF-kjw|URG+{~Yt(}5($@1V2sc$c{Dm8e?nHZY z6ol7GV5e^`r@@hb>ZR`}Q2o+BUbGyP%{>AfcV3gH)J-4AOV+k35qg}60Z_El$Z06ZpZHCR*?L#;~w1tf1}5t{%}bL)ONP|4t}2+V0A=b5%{{7p6DUo zvng6o?mthGLza-b{zepknDmzWb@p$N3_!Al>v0s-sEwG6thT zzVPjWXL2}x!tWMpFca{%8&qt%Wco;`mWt+%Si_R$Dv*f_SydikD%PUwv9O*Vbb`{^ zo@VBt&aC#u@n)5H?99Zs<>!R2*=MN~CZ03FArxjWBZX#uw#SgE{^VN_L}ve~4xFyfxNuW&O5e<_eRhxFJ31)9`n|fSS8emj3_o@9xWeQlrgj0 zHt@ZD9-Nv7^}!BiITJ>MkCbxe2kv<8(`soNWB+TK@paavHVr^s3O)kfbv=0hYo1=6 z66Q|ta(xSSzp+IJ$>2XQ9Xp7@e@{5=SEda-Bo6I#WfaMYzcIV1*+gA&_xEU{rRVxh z8a{iBh z!uPhJhLzE|(JL03NHxTd3>CP^#}cFU_K_!L>WAStqPF#0Jo?koCk=^SYfbH7I7<9! zePMW|1h={1Jo+6nZNBx4pB;a=HS30Xj^zv`dtbcq-K#>?n<<;QUv}KF-B(%>92Xg`JKF2^S9Y4KLRG^qYs_nI4NKD26@JV^@hEK` z0Ck(XFSUr3B)Mo~>-rZ0pj)~BsH>uT$TE@i%1}VIrc`Y>BiYnAA5pDMfk<_&BAY1;4GzO?Zp$7x@MpXQV zb!@NfXvJ&$=_1SoVqE64QsqG`gxK5!k8@(J?OG;28lBB?3WCvo&@$qK5Z7k937zAz zod~-a?qHUT-r*W9WfQhp?7P@&;qjN*p6y5%1n>qFP`@_aG%{QOgWfAtuYSd2Izf?V z6T@D`KbZvrJmfP{ME!Hd+CXc1=Fh+Grw<0rOH=3&F?V-YDc3C#d`uEd5?v@-#A&ve zkKA8^dMO9GyOM z@NE(1y7dRp=ogGo!KE{l`PKX91zj`{zIT{=7E#AcP!zN>Xf!G`CB9OM#3_a(3X-ay zq+mBXoU!+hRT-$S^V$Px`1+`H$Mi~vT!|d}n%8+pHMl^_A(pTDrUIzXT;x{}K^9iE|wiwl?DXC#HsuT=0!93{+kH zbl)1@smjEzoy?iZh+Bxcc_R%z@R9y53OJB$`k6VIz1)?=@XKnc9`pz>Z;Ou-nH3#$ z=0rQ!Hdm}Ym@pd%0;76lyU8eL*ANmG3<%qojCU9_^rOAzOjBoRJU+j8*ayBYL+K2e zSId5%6VV;ybN!XQ@wAxu6Vt+82=A9m)|fuKFnX-DuTHR9$8{PcJcl?wQQ@w zBIf#^%j!9OBCPYL)bBg*e z16f)~q1%R0R55ya>zZR1!;RMltD$ONKTrwZ)?4JDtIs|k)#=T8jbG2aj_`o{8N1K* z|EP1YO3t`^1k4qot*)Am%euu(nm@_O z6Ma+{uiK*5B$U)_QHjZRa62y3NAkYL^m@u=rfVddsnUs8dUez@oO8A6s+Y$?y;XA; z7AWvC3XHQ(P1cQXR_>Gfw-FBmTT&WZ`)c-UGMlKaSu5>{=p#VnVmRRR_7$SjM1trT zg`P<)x=Pkp$F!KtBmL?_F4=tTtoNe|+#{+l@sQGbYZNrm{A4Y&&7p!P%T3qr{YwPR;z>I(Pn#8i}d&11ZA$)i28Xx8!_ zy*_3MXASk_a50zqAd&tXhDT?`Erw)6rF-HJ?EjWtYc6O|Jm}3|E#GQrxCQa<5qidp zgOft;POlBqhw-=*$ZzH;!n|zP~VklDWT7XXTA!4G}*UN zO9OYdXZQ%*`#Ry{cwh@J`~7nX zSH-SVpK~fMYZ`7eC~QZx5ja^829Y(JcfR-V=lwGDBP4t%IWADrWvx{^<(v~~;|#KF z@uovnJp!B&jLP5Px>|OL2?G(7nEjH9n-&a$F^ne~#3Ut`mBe`Z&N^kW72G9~PaX$a zYA}f*NoXEcronxhEEwXM^z?sSYSWShNzMsU!NGh3T8Y?OKVI_&X-X4EwmwN>4>hPQ zlH3V>iVRj~X+)w4w=z`(!jm*1_%bs7an6fr)rL5t7-MfegfP z+comKKh6j|0r~Q4=wH~&RxnL_3uG%YH|bm)QHQ<)OR@Cc7~`cJ?l*rLXV(4_CME@2 zavzt9^zQ~IXIY;Y8wgx95bUgvkpG6!1zdCsVF)71X4!pS6( zKEC~*{8{$xIV}m?>bM#F>p%9n{j79P*(c%Dn%=3l^7`?-tv% zc4f>qHlfK&Xaf+4J7>8)%NqF(4e;&fS*)js(u6f{yY2HnKa6u4d0nbY?O6RV_)+_7 z__N~Qhir8yqtmP+yg>Uc;K&4%^5uynfCf%~3iba03;bHtBuLt4ONU{CNC1A7@b~-^ z{{Y2DTlgtps@tX0C3u^^B-hm*6uK)O*BB$P>N0B{CdjauOkG+OsidOzJuI=py$ICh zzcRV+o)Ga2z9(4(k*s?cJaBr7)soz*0IJy>dWz;g5K0hAm}0D%$sG2s#@6LXCutjx zamN+;Mqy4csmm2(hZ!D9t|?fp<+Z`YxljfO7{d=kUN!Nv{t4gkqvO}wCf0m4Yh`_N z$-L6hY~}}_nCt-<`?9h3uWgd@HVii?!KXeKSxW#LM&at_BQo+@5Z>(SDaaDw8 z9$BlS^5^!8{{Vs%c!NU|-~2w-t^7w28T$qH+gp+_eo)!+-|9-_Tq`%3Y1~Y}Qn6Kf-mH8jfRgR;m zXc9X?JofTP2tHheaD5Ic)$fn>jZ;n*mlyYP+p)=wq%4kqKYIOH{h@#0jGhMgrzEHu(m z;5hfM+j374ID0jUlBlCK(n`(3bDZ; z`!1cWY8RImQC!7k5N|aIF|b(Fwg}+x4SsBX)t?*2wz{?Cv#XR=C4u84dj2)>zkD8PEOO0mdJsKo86zj<#w&L7 zOgv)%ilZf&B!auK&lR+4X>-c0fPIYk;3>%j3bEyooewo(Y;vWFpG_#dj zSzmF|!8B$hATb1$1DcRyp#Xv2tbL5Rz*2MVPD?$+1;Jza()OBMUsY>zxl9hD=}ZXD zbB=xL?3#Or3Pum6IjJGi?W`c5VuQ1vo&&kQ5LrWpp_P4&0N+ zO3=~%AL<(Y(!pzKJ`r_+~(u7X5#=6SG4U4 zTiH<&Sjt-*43YR(&|e9E;Ge!R@tnxl_Jc#Tl#I3d>?C_9Q~bEErhXXy$9@#}G$WA4 z`mUm*ndd+e4_}oB9lDzM%Fa)kT*XDIIEKX&L`o(vp^hfQvc2kDR@XCc1w!h}jnEwE5zZ4n8rGhvH zSzX_rz+?K?fP>EioMO9gj=m~BDfo+i!MDQ;c_;zM1byTA;<$#HBLtQRSBn0F$nZ}O zgMziMuik$gasF#8!#b@}`X_I=23d$8idJ2tIpV8LtU(wc$WPE@)mPWm0V^3G@snQ9 zBYLCbi|3gE9Eu$CSn_Mqmia(j`teNu(3QC)rymnD8nxBeL=+n#S{RlstpB18PYNs zNq~PG)pfWwzH}hsIa_xot$m$9&jhK!s#?Tstgb*H@lz^%$lncB(w{QwKo}VS&l$(* zUd#I<>q`fVE?_ck^J2*NAg>>-c&f3^aColI;HQWWhx}`1>c9yYsprMo^X`8R<%CYGSm&rYuSD?Pu_R3yV#QSFQp#+EH@dm#3(42;mmjp8m`hq)GKaMN)XTf@k-6gnm1jq*NI0pop`~$@t2eQnaM6{`9e&@iMhqlY9 zyX~RuUkGJr?_=CZM&S0y#d-vm;a!v#Ad`SkO7lMnYE5pj5igbj!2ooxN&7=;7Ew=Z zOQ9Hc9c%gTJE0zDD4xb;2C6EAi4;iK3cHkK?j31NXRjD;m{Kq(fkcW`w*q+QsHaOA zfl9G#4u{shdEWPDn%=f#6V9s>e6BY4!NpQA{jNi_1A)%&0I8=XzEBD0xFn9;ekQ&& z{kwnQs`^*#`nO&e@FQAko+(B#TwUNvYo|9VzyZU^Gt)R6=RFV8aPJLc^Q=s8*a+SA zeHYBC)#Hbz>P_0m*^z1H5KBs!PNSe-#;3N^WYkfmiZe7(jm*k&st0~Qr#0}u{1dmu=t$$U#)O8Dck1gHg8&NVgg;CHPo;q+iUWe}wh7jKW0K!pXg&>nlQHdZR z=2Afbf1gVAGj0r?SzdH;Gxwv|&aNSSU+Wa5eJ*moKKMuBzloMFY2r->M%HaWz+0pKY0HD{s|rMYsWLZ)|Pt5hvjZnbo2_wvNLT8 z-!K{BK>z?fN6Vc1)j4HLc4Ab3qd67iWxP+B;9S0|h?H&8?%!~&8qi8==jU(4KlmZF z%nu}<8S#CU%7c_mLfznebH?P}3F+xxFXK=6B?rZy2KkQ{hZ|UhKjp5SI?m1XKudq) zwfgXvX63>xQ@K3`I@d*_csp0rVONJm)vh8vS}Rs?eY1=T{Vyl+Pl_QGW$jn^b^Foh zV(_>MYW0+2{Mtw26|d}L;@ulpir-l9=CP;D#06WMHi?dVe85-Gejfh-f=YPrQt+Z* z$KlOK%9cMdNsn(B>(e#**Wm97OJS?p4NpqAiUA_-OPC25&wPsegG19S#)D{(K>&cl zrBP9KV;@TW(|~iFe-bK>5f?$i*U{PEYh3)hi+Ga_l};a5rm87lXQHwElze6Vne`8c z+N8FZcC*1e1gk3{1RC-kYr*oud5M`p#&MBf(%35RO12HiH z&N_zwrExA-MYmh4GD- zgDh?Ittu!i*4OWOARrCxf!FY=p8`K=jXLL1I&X-tAhKi_isn*wKTZkl^*)u$kMYMd zoeyn;!YAtA`~%sK1kr{GVxZx4<9pZjP6r#J7Ge_<-(_a`0)|cHEC?UB8-F>ZgXFwAD12?yc^kx`t7dXxzw$ zo-x|I&-RA#ta>a)$|)PnZb;|=!LQ3Pel~GtHxTGksHv{0M^*D@k(A+Kh{UWcDW$Hu z9|CG$@Jug*KMgLWiXAgk)|elbO-A&wKKP6xk?civUJUqq;h%>2*J)Gy7vj)+(c=O?{-G_$PJ8x{4eMCa=#Z@B%}2bE#4 z^ps;5rn=Zq8R%(rtvpGWUsIO)gI+`N4^p`B{fyTuGc0JVUvR)s0m-jpxz(e*(OF9n z#Ak3ncn;O_XYJAPy4%AZ1D8y;WQ$YPT*Vq7`Ia-Bu|I$xjeTzmWz{iQxKM(>c6s@Z zEn(=+vujU~npeah_)PRjZ<8pp??oL+3UQozb?4f==k|;EhQ12$CZTlF=0$|6FGIP3 z!T!I6bRH5b;ZKKJU7;u@g4r_1yA{iSB7YkBfA+=rmoBxb+vu=LS~zng{r+yt_yg14 zzh>e5nl;+I<0?xS$iJNbpqSdrA8rl67h)*;9T z*y4~v&Nnj^2aF1>a;mOEvlCysK_slYAI5bga(r0_y?CdMJa2R2-D+#g zi3>c0;d?0T1!oT$-yaQ)E$#`nRtx~^*Qe65p5V!n!~$63(-q?7`AjHIRXVfuZY1Ms zxsD!|8kUMFb9t5w%t(#4AbfIyahvK?F1Fb`XBss`d8yVE9HFnIAUPE=(~OA^cRJB zgQ(|0pKthP@rthmXM>&r_pea+eX1;Rn|Vnw$-(xo6!7N16qf4Bq=zAoJvgsH@K&k5 zbN~PkJhm(OUo*oiH2NR1V=&&r@AcQts$O0C)1v4h{+R zACaq`DbS9(*3$`g!qG0_>V5r>PsY9-{{Vub{@(Wg0JC?6X7D$Ibp}rtU&a>hc$@w~ zHswwgNabfBj!!BMM>wx9AmO}TbB~S#2^+Te=$BT{mw1dd96PIB>be;p@Kj&;DP_OH z?LPP6_klGw{@#$7bzM%`f&R~4h6s;&dBeBxjE)Hv`B|!K^JNLoTg-Jkq?9yo_?p#It=*uUz)$ip%rCWgrZXQ(xRX9l^LfhXk;=c-~q! zF0J+d0Dyi!pK&crWSnE9Q$Fnf0D?aJUXQ|FKG!sBnU*NEYh;=r-R6yl%08fz_*d)y z0KvJgZVVE_vY; zzW}^#ZLau#O4MzbJ&pCMT}H#^EUu)Eow0-Y*W{il1&2X3pfQP2|YY zG3Z9%2tTE8*YR2`B(6gNlY^7=ujU+18Pmknr4^&Tr>&M_B|0maYMqazKj5Encu!Nd z)h(xr!haN7znD^G4KLaLP^`K1Y~+rcm(*9($!@WzAysqv57RaH>2u?)N5fwbS5(sP zuC(jxIYUKp1ch2NgX!(YIr?KY^>4r*_$kh#VH`GIG1E?^67lxSAR?b0uNnCX>&le+ zSM{fb{vqV}JieA)kEa?^iukOx^JnEgA^2mPRK(9R!OPmlTJrT>(&*Qr_Vo7gu){2D zPh5=gS=x@REP9=trJN#C?nTMY7Tz$Y2kKjH2XIO4Uq5_X{{Vucd^q@9;rm@h?yhcx zj6C?=4ZFa&{w?_DIN)cmTK7MN{{RuR?~7gq(mX|^%3jA>w2JZ_#1`7>7z6GB#eVCS z=Xqu>Qu>WZ$*VtiXLIqa!ywFXRHI)TMp2BNmGsql9B0Mf*>g?!ovF{LCGFLn{NQtd z@nj4Sl>Y!iE5tl;`z&~e!0gf(4x?%Z6F@iZ9)x}6{YM>oXY65s$BYqC%NS)~*(iF9 zWLLp)hl80OdgWfyrB&bFi_zb@>W@z+<803Wl{m>x3!~`0PtV({(`tOB1%h=4imz{_ zt^AwiDhqRl^sjvVrF$Y4eio9Ttb9lKr4nLwsTxHhlcGg)g+80n}+;j zJXi347i1N39L}a$IVm_j8h5(r{JlCKw`JT#OA&>RA`o%Ee&-{nX)S3WNF5~yqK=}X z@%M@!z#bi*@?#Q85Qx<9az|gKbY3{P(|if1z4gkhL02lI5Lo+q*T|o=f5%txW#fdE zg}M!>px}K?dD(7LR=s%1pHaivWn9+0X4mf4{$~O4OUG@kYS%N#Gcl0xbCOSg*1TuO z{y2-nmUG?BAdWaxvpY66`~7=Cvrd&5Y8v*)u&3j+RuNx+{;)|axgQFY*KiBB&S1(>cWf?icwy!+n+VV8GpCLOEs$- zDJ>D1tZId1U>QOv$FZ(kTbetD54@=zx(czaYf-5xN(>Iw$oP+4j@1K5Nr>Ye!8xt4 zSVr}VwU4u_H?&NT82I)t3F$X?7gDTt_K`EOCkui90N23$Yx7Uzr^SnpieD3Mbr&aS zn-Q)~)KGW>>t6f&c>H@dR`U3A%5_=gB;B$ei_RDP`d7(b9Ej@vC$ozsgp#8DMtL>; zA>sc34J;lOSlX-Jm-!!uc!R`BrY4?WMpjo>^||#IjXog5;qM4N-Q1!m?QPYY9mqg- z{YmX#6?mJ)7d|4_Zm(_`q?+lBjh>??{0RK3(!Xe*h%$JyR!uesBGS+0kSlQ`jz2+O zTRnh6RFVkm?_Z?w-d7wYCt0m!sreU)d{pxsOmKAF;Y!K*%ef3vt952m`ctHmHXv+g z{4gn2#fsnnN7odOZt?O{iuzW5UjG0QRFU^p5FX^zQbvy;4EY0|I#Yn_@@Mg;nAwL2 z0Uq??L)>dbcVTcq^`|Ta##rFeASJL+413Z`kl5HxJ?gF?Rs`S-8g@YH38rKzQ^rjJ z%WlEPG#Xrf;pjy<9|w$+?@U!ac_M+K- z0yCNph|H8J&OjsiRI#8O{J@W1l>#xq0OZuF#C16}GCC>0dgg|ma8=chP)GBxvVY*2 z9}<7F{7HYIOvJ6!V&X1(72&@|&*5Je+Bq1{2E9-AS@C@S8u+`TNgcs}Jl;`0p|~Qx zTZ%IEi_5CheUH-oKh5QZ%&ESTcKgrS9|zqlM5wZ;5rytDYt%d=a(70{AOv6^%vaCf z4E#*Grk81Ok|RC>NHLC_XY?PPdJetue@OU4;LS_K8nnjWPtxHsN_Y(2f(-uv6BB{k zBon|j{B4+Jl_y*3^p`ZRZeH)F+<#cN2Tiu@qHliO{{XhtkL->6Jsa4hwwJ`(i@m;& zYU3;jQ<<1`Wljz{5>$T`ej9vH_>ri5LGe}gtEyekd4H%(^G`IcS>$$N%yN4YN&1uP zUGMFQ`&DZH0JPV|E8TNbl1Q!7Hue^Zd3q!H+l=^%6R9c`AG)98)O$!v5E%1JMqtAyy;d_F;2iPI5YO|R zXNvtvQ`21!%-$yM=Jttq_Ic5Rg(1iDuh}2?Bp=7)@eAOsww*l1ulzXQW7tVzW7--s z^u|E{0Cf6S;{KU%%OGGt0Q1LDUu%ECBR(}BhyMT^qS9rQEE@f}gl{-eG6KqexKcmh zRr$AwxkJU}Q}60b|^84vTt7{k4-=O-I4kq1$hiBb)^o$qWY{opHxfSsP>dPuT%Csy8&vGrylA50AF#$O>~!9)aXHHV#McydCo`Dx@|jDi@^E}y2b2* zFr)n&aoV{UCCNRM0(kBPQqw#fuc+N>a?GPgMh0gxZE$m)fORZL;Pe=;lYii)-?e+_ zz8jCjnnbHNak(PO+n%26K==FJqQ0jf%Bp7A$YAMhD_!C{{Z9v0L8nRlJ??lI@)cKF(sPdgSDhNzy#xg*k->#{{Y~dzZoy} zzuBimYb{q&v!6_oO9>ter-->m+@~P)+Td~NUyC|!s?uHV4}#|>j(XSXhx`){#c^1E z%uuUFh)$(B4Y*~#SnKw05ik+T@+x%jH;*iqt4Hf|;_y<2V=2Z_PCXWuOSO-^^uLdO zG_!~-elOO*AK$upc>2FIy2tGo;`3_pP2!DbYkzj+#83PQa7B2+{6bhE-GT_<1KzLb z9v!;z>l?eP&+OeE-asB=KY2HDBm4p8zYC8M=I%cJCTTD4OJ6O_EAYl&O7pKu2`&BD z-TG*Cx-X4l*L9<9aF=(N7ZL|%4$kr)bBwU}CcEDhd~(x18R)xYD%UE%EF+z~cR$j+ zSH%AS6ttg)@Xrs2;t;d$%K9+hgM15 zzPg@`4iAn#QJmu8No>0P-4WgVb^WETymdL0Zn2_-ryW8_ZP|= z=&PUooY%N(UMg7SAUgtm>-qbPFh1WtttH(r!5_HrtQ2x;54tyXjdcwESml^v8FJiFlFVzvBh@e(~RO1PF;V^oZ8E?XN%b6*Mm(fz6mT zQW++=kjW-VKR^$ltjIP00Qg1hXS-jT_C+zkt-wt6Z@>fikyNj*5(V7gkh~9bT;{7Z z`kl#gP6rAzz!m)+hQa%>idKr){z%O;sk)M{CwaYB%t>$NxRr}Zys_QSCm-WU_NH&V z7e3(CMuFEk7$c4iMisJf#1Zdax{6B3_^C=#la%*+ng;#UaTq^9MKtP6z=lExvBgm` zIpDT2OMp3MCXQQ~%W~kkQlyYU`sR>cqORkdo;j+4ka9^Q+JQd;o>1V7QMQjjj38{i_T}B#&WC zf=KOTY-b6ddS%FHP5}gZ)KXs_a7aG&1J3di2{c#;#sdKR9oZQ<)C+>x^o*G@7wzCNb{zH8AuZ+oU` z&1oIfvB4?%(|HPiDy=rCA8=;lum>W)Jiu^14-Jo=I#Im7&yo9PW8y^dS#&UzG?lF1 zpzFKVm=esy1HtGC?^&}*aB>LA;+AWSl0ITO)n}VLhRCnJrA;KPenpMNb4jb*dq`Ap zMty1V$@1_rO+pxx$jwNy07lca){=?E3Xhn-V<(pC4+Ayme+PVfb>Kf7X*#Ww0duEZ zrNm!00c9Y8^e2y@uQr9)kT-7pD{o1<`#4A30UZW1O?i0g3alI_s%qbP^_dPe(XASf zqd$HB0B7%vN#hR;=^C}Vu!ic|JCw=b23(J?1dph%dGVKoJPBjqX|Jb5hU)nR*O?pU zK_MLD)4hIV{{X=?{yoE~d=L8+_XJ#Mj9}ZH*^Kw^MueiTM4dcss)v1!Wc* zE}s!$61UAK9Ou=KIK_TXe0=!FH^sk*SGu&W!EPLw*PoGk1s>P~@y&Igwdd_ydGUW+ zdmAZU9U|4Xpj_s2&&=PgcuQVxZ0=k)QH&8^&>kM}L^7HmSgyZ$FUz6u++)Qw=KiCD ze&l{9-JK_gE(702j^$Cv2OJVJ&po)W+y4OgCNJ#a;N3^|G4RH}sq6O*7NBk?`z@v- z8@$Jjfyg_UY+TpjZjEr>dhHp=^w0V9{A>0{{s~p_b4iEx3%t`VZ&9u^%|_v)f<`W3 z5+btg2dB&==iJu^i&#m|D^3rp(Ba4`VyjVf@Un4jtyQmM?7s{6U*X5W1ea5c>Kgpc zp`wELL?ev*HqzP74;bmzyl>-A?E`b-jZRl-ipROUv<;O-><1?RSDNZS9UALLc!`E) zDTQWSx8^I&d_m*#WE-UnTy{KH^Qy~h;v}ObWV#=yWgImOJ|W_ii0^PkH)@c{i6Q>YdExzKTpwS z^XGAiX50u)4nVKaICq6>V&@oBR!gbw=DD^X2T9b#OO-9GcE26JX-z-j#f*^0A-dEg zQWhY<1U{$IzB2fS@gGp}*0U}3^~|$NG3t09Ks#cxd`05BpAla@#l+K1Bj+sVC#_@L zPC*1QBEO;de}=I6bu`kvyPwYdRmPQb89H!wf+d!6K>!n)j@9?d0r@~V&T1oYSR8Xp z0}@6CNw24t&DzJn#---9>V22{5o*Us_&szL%Cwhck)C)(uSVDWWGyXPR%YFd4A+VN z&Hf`#416V78IeS@$oVIM)1Reqe;t2l&$qPJ8f45_{#hp7f!`okbQPZ1q z`accCcwDn1p*qi19T2~?r|khQvvD?;r%dA9e6q5(cY1+d2YGr`i#A3$9QCK_8klxz zBx9C2135p9a~ieG_wx`NY+&RJ;MeO}K2=W*O;d`skLG?b;@RV?y459q#JY{e)x^b= zub0>w&yi=r1Z1DmkgTbUhd)D1c9g$a6n=H|aY-!?%<4_bPEFq9cFac!fH*z#PVyu? zfOGVwJ3m0|N79(?;Be#`q6xmoA>@KHNcQa-l1T&UP@~C^cd#Eyoi#ZUMFguae2NKc zQWgNI%k=i7Si|tLXFr8#-CSw%#7@~nhtYVf&6}8pAy?XhNyUtyDcTw~ILBkR9V{yl#qbuBxKbatJ6HCxjFnONCmf22672B_6*ztGfslo=kE-GQ>1DD z<1`M%VQhN!CZ+p10AyfQhC%27rsVYJ6r6&?BeyDg8k9x{QOz!WIU<0>jIbl?P}xxx z2GfuRY2%)|K&Enf3VP%L^5oDlc3@;+(c}piB!ERYZowx2Q5oWdx{W((R+=*wP7Xb3 zk+B0fAR4;GN|3-D)oJb7NGfu^f{Wa!RJhSF&N2z9V33B$2Lx4Z+Zg3eew3*;(bRoA z(s8-d3br&B_{Mi z&MLf;Z~-KJXo>Ji1azgyIoEG;*l#cl3}T+7U=HG|#~~}h=}$=yT;x=^n^US>h4#Kj zIjuWMh})1lj=W=<#)fUJ$RyS1ZVIU+f(Yqc)oH$DdiYF2THe+@@Agml=QqOJtwuTJ z5NX%Yg_9?#R^uM{ss1_s)Vhbnoz^z;wZ4@P%8{uc$?i>fExxSCr9+aZ_)B0^qf#v% z(A@RwUpYP=!%G(NPB)SIO&&bOLoND+IdaFpSLAEUsqU1qz}@-N8ss(z1ZJ`p{GJFo zsnX{l7HkUjy_TC;`InA!X|{AaZP<yGvHN9;BGLQmnl`|S=(#)U87{nGST zVa74*gI^xSs0GFeBDHic7f+$z!*y>okxK#GrA`fanbu8DABL40is#kv=MuaIA~i3k zQ}l~V_=h6LA~dB!955#%Jk}SCJ~!z;8n-fEUPOUG8vz@b`eMFB*Z%-&O-lDeh8uYr z-r>{t&ZnubH`Y9LcdJOxb3D_#9Ob0qzdyiucLzRd+9lZiQ#SEK2|_FCk>-;}xBP4U zu5bKbB-UDM8%rO$Hk>;SYr^$iW=n|)k=T|wKQ>ACtjV=jIJmTC&K26SAGUHG45(yxRjix(Jc&gIe6i^2>8M$M@I0C&@2iW;J;#Wpm z^S(|9AB`+`KmalU9cqcW87CkCQJb)*B#+LtjXSF|o><;Slj?SNpB6O};m9aMmXRO{b{Lzm=kEhOoQ!8AVwgSP<`t3u$2HQ4fs?~ z2_pmnig&nNuJ&MMzEUZws>_2I2kBNB4l#p)O)(bW5(uD&xdF2bFhD;_jjR_usn61` z1|tIpB8N~&B=x4HVGyPO;Z9F{QocF>e=3wgwFXHhk1y*kVYOgh`N0JC5 zuTl zF}Q+rP7*E&1PY`iWF0{!pB=&5hEhkhOM$AYU5Z1<9Oj-MYJd(#YKNRbByIwq71+QW zgYQz{Z5sA81i&!KH9A~?yc1cUY8!@5MLlkp0|1(dQ@b{XF4`CV)AJ5RSc>Ql2>{km zxde=4VxRVm;DeAWH%RG*IipkUeuNsCZvjFwGg%9DjB*L5E$C8mK>TSsS{uhQv98yl z0{p}9G>fQ!cqGNi9t9!MsrLN4oM72_N5M2f(SG;hl~;^ zQMQLIOhl#e4p@i;kVv4%j1opD3|Ik?lSb1Y8?Zk*b~$>8${3xeBnoN*RFZOiDnR6C z<|jVbriH-H4>eI7qkTqzM_wryZ(N#?08R)dm&rNp^r6isW=|mqUbqyhNK!x`A8b^n z6WfXw76(0OQyQi~6cNu_V2ETXlr}` z!@XM(dJLa>LkK-{pVF(G*VvTyd(q{eQ&xqrW;~84Hu>WR0*-MyB~ck1@P4$OU(9j= z6?5$T4x*2<6VRGo*2McFpp8k!Fhw=t0kQ^jSC-gk1Q2P$&>opIdt#%9Z(}>l>A|Hd zwX#7utLT~R)m&##s+tCX{S!gle8TB z;;B_jajYDSw;P5rk|`DtbC3mSojVJXbDr3v`#XYmpUSONPhk3_%+Dlbk;$g{IbaQF zoj8Gz3jUPe?DBa$0p6cE4-X{DFKz(@=M;UM5r9Ce-(w}X$ph1xQ($@FfgYlcaV$KF z0@vJ{U$X(!5Gwq7b7LSJQ`b#)&j*fq6uqF<7H^@LZPZ{AK{TS#kdg@*twqx$BoLsV zrAz&hBAgW^zMN6*;~&}zDp>p!>yqSvPgB6G<&36|s(CIY=#k9%Td)d~j(Stp1;Hgq&2^CY z1*A|^k`JXk{6AoD#Ef%QXvxzM^jF%m-| z$vo7E4tg>AR=W6MqWQMuRD(if!7Iu3r16lpfU;VhQIq9L;0>gxJX59eEn zrLwpzxju_lx02!riE)X-2 zN$N36>x|jt)?1vSS+OUl9+cr|!vuyW>0LAFaU3#$J*gW^O#G@1Kdr8-Q$Or`Yjd7h zTXzeSih9Jr@}vXkGh0VaQcge^sG86z=KxTvwl$Yqb2nz(06HGxmPHuldiNE4*^c0v zW5m4*oc$>}mJh2Xp;>K}fFJ^K%`n>Khyg`f@^*8RgU1xot(;?z)`-@3u`;0&quP}@ zBmwP7_I>)uzZK?Z_gL7=iajYUJI_ohYLXE=fG({xsurv=g)%D6ZI}%I0Gh;4#5b zN@okmUVgMuQzfZ!lMvmWK2c9MXK?vPG*M9`Z4HGtXCvhlsdRI|0*WbE+M3i)wz{@J z0G=vP?IUEKNTP}?bfyiFj&qt+JHZ44k7_8S(WS)l*EuSu@TVjqMj(a9(uyl7ww{H> zj}}OC!jHm`S*n6^I3AQyP^9~jEy#ta&m<9_N*>uk=mvc#qJ<~i6CE5%2HXM%Jk;xM zx!@@LD59H_v8_2WcwkUQRZrnpV7HD(#>E&Olu=koYI-y_FI#Exxg!cc3X$}DHGDr4IX=L8IUQAG)AXHn=x&QX8>bL~u)R#FHfpK2(owx>15i>Dvm zKZOr?_~@UN6jj)XGAVD_6CqHarB-c4*pO95Jp~k1#T+<^H1s1nqlUpyK&L*aMn87B zKJ-ytG@%zAQOnN7Gpv9TfRcS_mnDLNHh_C#iYqy*PeDpf#b=$9B!zC>D!Xb72>}!G OqKeuo`m>r(L;u-t5k(9D diff --git a/hugo/content/halloween/foo_bar/taxonomy.json b/hugo/content/halloween/foo_bar/taxonomy.json deleted file mode 100644 index d64f3d63..00000000 --- a/hugo/content/halloween/foo_bar/taxonomy.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "Species": { - "science_name": "Clupea harengus", - "tax_id": "7950", - "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:7950", - "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=7950", - "display_order": 1 - }, - "Genus": { - "science_name": "Clupea", - "tax_id": "7949", - "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:7949", - "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=7949", - "display_order": 2 - }, - "Family": { - "science_name": "Clupeidae", - "tax_id": "55118", - "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:55118", - "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=55118", - "display_order": 3 - }, - "Order": { - "science_name": "Clupeiformes", - "tax_id": "32446", - "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:32446", - "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=32446", - "display_order": 4 - }, - "Class": { - "science_name": "Actinopteri", - "tax_id": "186623", - "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:186623", - "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=186623", - "display_order": 5 - }, - "Phylum": { - "science_name": "Chordata", - "tax_id": "7711", - "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:7711", - "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=7711", - "display_order": 6 - }, - "Kingdom": { - "science_name": "Metazoa", - "tax_id": "33208", - "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:33208", - "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=33208", - "display_order": 7 - }, - "Superkingdom": { - "science_name": "Eukaryota", - "tax_id": "2759", - "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:2759", - "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=2759", - "display_order": 8 - } -} From b97143251d3e29104f5677c6ab2e15a6364cb441 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Sat, 26 Oct 2024 11:15:48 +0200 Subject: [PATCH 09/59] Use concise form of crossorigin HTML attribute --- hugo/layouts/halloween/species_intro.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hugo/layouts/halloween/species_intro.html b/hugo/layouts/halloween/species_intro.html index a4d2d0e4..675fb402 100644 --- a/hugo/layouts/halloween/species_intro.html +++ b/hugo/layouts/halloween/species_intro.html @@ -8,10 +8,10 @@ {{ define "script_includes" }} + integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=" crossorigin/> + integrity="sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo=" crossorigin defer> {{ end }} From 15140fc7534a294947d1af945123d97afa515a0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Sat, 26 Oct 2024 11:16:25 +0200 Subject: [PATCH 10/59] Show debug information in development environment --- hugo/layouts/halloween/baseof.html | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hugo/layouts/halloween/baseof.html b/hugo/layouts/halloween/baseof.html index 865edeed..cca47405 100644 --- a/hugo/layouts/halloween/baseof.html +++ b/hugo/layouts/halloween/baseof.html @@ -93,5 +93,8 @@
{{- partial "footer.html" . -}} {{ end }} + {{ if hugo.IsDevelopment }} +
 {{ debug.Dump . }} 
+ {{ end }} From a2f2634fb7f78abd9b7b66fba3259796485123c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Sat, 26 Oct 2024 11:17:50 +0200 Subject: [PATCH 11/59] Add forgotten content directory --- .../halloween/jacobus_lanternibus/_index.md | 46 ++++++++++++++ .../assembly/assembly.yaml | 15 +++++ .../jacobus_lanternibus/assembly/contrib.md | 14 +++++ .../jacobus_lanternibus/assembly/index.md | 6 ++ .../jacobus_lanternibus/assembly/stats.yaml | 24 ++++++++ .../halloween/jacobus_lanternibus/download.md | 6 ++ .../jacobus_lanternibus/intro/index.md | 3 + .../halloween/jacobus_lanternibus/pumpkin.jpg | Bin 0 -> 29752 bytes .../jacobus_lanternibus/taxonomy.json | 58 ++++++++++++++++++ 9 files changed, 172 insertions(+) create mode 100644 hugo/content/halloween/jacobus_lanternibus/_index.md create mode 100644 hugo/content/halloween/jacobus_lanternibus/assembly/assembly.yaml create mode 100644 hugo/content/halloween/jacobus_lanternibus/assembly/contrib.md create mode 100644 hugo/content/halloween/jacobus_lanternibus/assembly/index.md create mode 100644 hugo/content/halloween/jacobus_lanternibus/assembly/stats.yaml create mode 100644 hugo/content/halloween/jacobus_lanternibus/download.md create mode 100644 hugo/content/halloween/jacobus_lanternibus/intro/index.md create mode 100644 hugo/content/halloween/jacobus_lanternibus/pumpkin.jpg create mode 100644 hugo/content/halloween/jacobus_lanternibus/taxonomy.json diff --git a/hugo/content/halloween/jacobus_lanternibus/_index.md b/hugo/content/halloween/jacobus_lanternibus/_index.md new file mode 100644 index 00000000..864daa63 --- /dev/null +++ b/hugo/content/halloween/jacobus_lanternibus/_index.md @@ -0,0 +1,46 @@ +--- +title: Jacobus lanternibus +subtitle: "Jack-o'-lantern" +lastmod: 2024-10-26T10:00:00+0200 + +resources: + - title: "Fiery pumpkin" + name: cover_image + src: pumpkin.jpg + params: + attribution: demonic domain, CC BY-SATAN + link: https://commons.wikimedia.org/wiki/File:Pumpkin2007.jpg + +layout: "species_intro" +banner_title: "Halloween species overview" +weight: 1 +science_name: "Clupea harengus" +lineage_data_path: "clupea_harengus/taxonomy" + +gbif_taxon_id: "8351946" +goat_webpage: "https://goat.genomehubs.org/record?recordId=213953&result=taxon&taxonomy=ncbi#Parnassius%20mnemosyne" +iucn_category: "Least Concern" +iucn_link: "https://www.iucnredlist.org/species/155123/4717767" + +swe_red_list: "Viable" +swe_red_list_link: "https://artfakta.se/taxa/206089/" +latitude: 60 +longitude: -40 +initialZoom: 1 +--- + +### Description + +Write some content here in markdown for the introduction tab of the species page. + +#### Genome reference + +[EDIT] + +#### References + +- [EDIT] + +#### Changelog + +- DD/MM/YYYY - Species first published on the Portal diff --git a/hugo/content/halloween/jacobus_lanternibus/assembly/assembly.yaml b/hugo/content/halloween/jacobus_lanternibus/assembly/assembly.yaml new file mode 100644 index 00000000..3bd79ccd --- /dev/null +++ b/hugo/content/halloween/jacobus_lanternibus/assembly/assembly.yaml @@ -0,0 +1,15 @@ +name: + label: "Assembly Name" + value: "Foobarus" +type: + label: "Assembly Type" + value: "" +level: + label: "Assembly Level" + value: "" +representation: + label: "Assembly Representation" + value: "" +accession: + label: "Accession" + value: "GCA_XXX" diff --git a/hugo/content/halloween/jacobus_lanternibus/assembly/contrib.md b/hugo/content/halloween/jacobus_lanternibus/assembly/contrib.md new file mode 100644 index 00000000..97e53c71 --- /dev/null +++ b/hugo/content/halloween/jacobus_lanternibus/assembly/contrib.md @@ -0,0 +1,14 @@ +--- +build: + list: never + publishResources: false + render: never +--- + +### Contributor(s) + +### Publication(s) + +### Funding + +### Acknowledgements diff --git a/hugo/content/halloween/jacobus_lanternibus/assembly/index.md b/hugo/content/halloween/jacobus_lanternibus/assembly/index.md new file mode 100644 index 00000000..59c22e0a --- /dev/null +++ b/hugo/content/halloween/jacobus_lanternibus/assembly/index.md @@ -0,0 +1,6 @@ +--- +title: "Genome assembly" +layout: assembly +--- + +### Methods diff --git a/hugo/content/halloween/jacobus_lanternibus/assembly/stats.yaml b/hugo/content/halloween/jacobus_lanternibus/assembly/stats.yaml new file mode 100644 index 00000000..0b6aa3d3 --- /dev/null +++ b/hugo/content/halloween/jacobus_lanternibus/assembly/stats.yaml @@ -0,0 +1,24 @@ +assembly: + - "Assembly length (Mbp)": [EDIT] + - "GC %": [EDIT] + - "Contig #": [EDIT] + - "Contig N50 (Mbp)": [EDIT] + - "Contig L50": [EDIT] + - "Contig N90 (Mbp)": [EDIT] + - "Contig L90": [EDIT] + - "Scaffold #": [EDIT] + - "Scaffold N50 (Mbp)": [EDIT] + - "Scaffold L50": [EDIT] + - "Scaffold N90 (Mbp)": [EDIT] + - "Scaffold L90": [EDIT] + - "Scaffolds >= 10 kb": [EDIT] + - "BUSCO % [EDIT]": "[EDIT]" + +annotation: + - "Gene #": [EDIT] + - "Transcript #": [EDIT] + - "Avg exons per transcript": [EDIT] + - "Avg gene length (bp)": [EDIT] + - "Avg transcript length (bp)": [EDIT] + - "Avg exon length (bp)": [EDIT] + - "Avg intron length (bp)": [EDIT] diff --git a/hugo/content/halloween/jacobus_lanternibus/download.md b/hugo/content/halloween/jacobus_lanternibus/download.md new file mode 100644 index 00000000..be355e9c --- /dev/null +++ b/hugo/content/halloween/jacobus_lanternibus/download.md @@ -0,0 +1,6 @@ +--- +title: "Download" +layout: "species_download" +url: "clupea_harengus/download" +weight: 3 +--- diff --git a/hugo/content/halloween/jacobus_lanternibus/intro/index.md b/hugo/content/halloween/jacobus_lanternibus/intro/index.md new file mode 100644 index 00000000..ca03031f --- /dev/null +++ b/hugo/content/halloween/jacobus_lanternibus/intro/index.md @@ -0,0 +1,3 @@ +--- +headless: true +--- diff --git a/hugo/content/halloween/jacobus_lanternibus/pumpkin.jpg b/hugo/content/halloween/jacobus_lanternibus/pumpkin.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e3cbe03260589e55f507c1c2e61569faae689621 GIT binary patch literal 29752 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 OqKeuo`m>r(L;u-t5k(9D literal 0 HcmV?d00001 diff --git a/hugo/content/halloween/jacobus_lanternibus/taxonomy.json b/hugo/content/halloween/jacobus_lanternibus/taxonomy.json new file mode 100644 index 00000000..d64f3d63 --- /dev/null +++ b/hugo/content/halloween/jacobus_lanternibus/taxonomy.json @@ -0,0 +1,58 @@ +{ + "Species": { + "science_name": "Clupea harengus", + "tax_id": "7950", + "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:7950", + "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=7950", + "display_order": 1 + }, + "Genus": { + "science_name": "Clupea", + "tax_id": "7949", + "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:7949", + "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=7949", + "display_order": 2 + }, + "Family": { + "science_name": "Clupeidae", + "tax_id": "55118", + "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:55118", + "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=55118", + "display_order": 3 + }, + "Order": { + "science_name": "Clupeiformes", + "tax_id": "32446", + "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:32446", + "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=32446", + "display_order": 4 + }, + "Class": { + "science_name": "Actinopteri", + "tax_id": "186623", + "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:186623", + "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=186623", + "display_order": 5 + }, + "Phylum": { + "science_name": "Chordata", + "tax_id": "7711", + "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:7711", + "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=7711", + "display_order": 6 + }, + "Kingdom": { + "science_name": "Metazoa", + "tax_id": "33208", + "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:33208", + "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=33208", + "display_order": 7 + }, + "Superkingdom": { + "science_name": "Eukaryota", + "tax_id": "2759", + "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:2759", + "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=2759", + "display_order": 8 + } +} From 8d753d7f1538d4bea4bea90ce63b84848cf49044 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Sat, 26 Oct 2024 14:51:36 +0200 Subject: [PATCH 12/59] Use XML taxonomy as resource --- .../jacobus_lanternibus/taxonomy.xml | 36 +++++++++++++++++++ hugo/layouts/halloween/species_intro.html | 9 +++++ .../partials/halloween/GetTaxonomyRanks.html | 11 ++++++ 3 files changed, 56 insertions(+) create mode 100644 hugo/content/halloween/jacobus_lanternibus/taxonomy.xml create mode 100644 hugo/layouts/partials/halloween/GetTaxonomyRanks.html diff --git a/hugo/content/halloween/jacobus_lanternibus/taxonomy.xml b/hugo/content/halloween/jacobus_lanternibus/taxonomy.xml new file mode 100644 index 00000000..ed33ef9d --- /dev/null +++ b/hugo/content/halloween/jacobus_lanternibus/taxonomy.xml @@ -0,0 +1,36 @@ + + + + \ No newline at end of file diff --git a/hugo/layouts/halloween/species_intro.html b/hugo/layouts/halloween/species_intro.html index 675fb402..9f79a27a 100644 --- a/hugo/layouts/halloween/species_intro.html +++ b/hugo/layouts/halloween/species_intro.html @@ -58,6 +58,15 @@

Taxonomy

+ {{ with .Resources.Get "taxonomy.xml" | transform.Unmarshal }} + {{ with partial "halloween/GetTaxonomyRanks.html" .taxon.lineage.taxon }} +
 {{ debug.Dump . }} 
+ {{ end }} + {{ else }} + {{ errorf "Unable to get taxonomy file" }} + {{ end }} + + {{ $lineage_file := (split .Params.lineage_data_path "/") }} {{ $unsorted_dict := index .Site.Data $lineage_file }} diff --git a/hugo/layouts/partials/halloween/GetTaxonomyRanks.html b/hugo/layouts/partials/halloween/GetTaxonomyRanks.html new file mode 100644 index 00000000..c8d9095e --- /dev/null +++ b/hugo/layouts/partials/halloween/GetTaxonomyRanks.html @@ -0,0 +1,11 @@ +{{ $byrank := dict }} +{{ range . }} + {{ $rank := index . "-rank" }} + {{ $scientificName := index . "-scientificName" }} + {{ $taxId := index . "-taxId" }} + {{ with $rank }} + {{ $data := dict "scientificName" $scientificName "taxId" $taxId }} + {{ $byrank = merge $byrank (dict $rank $data) }} + {{ end }} +{{ end }} +{{ return $byrank }} From db7345a415a717338420098febbffd3f806441ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Mon, 28 Oct 2024 10:09:55 +0100 Subject: [PATCH 13/59] Correct typo in .gitignore --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index cc87a647..ca72736d 100644 --- a/.gitignore +++ b/.gitignore @@ -38,7 +38,7 @@ __pycache__/ targets.mk # Emacs -.dirs-local.el +.dir-locals.el # JBrowse bundle hugo/static/browser \ No newline at end of file From 07ae29367c8878bd0bab420db09c1e71858552da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Mon, 28 Oct 2024 11:27:27 +0100 Subject: [PATCH 14/59] Generate lineage using a partial --- hugo/layouts/halloween/species_intro.html | 248 +++++++----------- .../partials/halloween/GetTaxonomyRanks.html | 5 +- hugo/layouts/partials/halloween/lineage.html | 43 +++ 3 files changed, 148 insertions(+), 148 deletions(-) create mode 100644 hugo/layouts/partials/halloween/lineage.html diff --git a/hugo/layouts/halloween/species_intro.html b/hugo/layouts/halloween/species_intro.html index 9f79a27a..3cd34014 100644 --- a/hugo/layouts/halloween/species_intro.html +++ b/hugo/layouts/halloween/species_intro.html @@ -1,183 +1,139 @@ {{ define "early_connections" }} - + {{ end }} {{ define "script_includes" }} - + - + {{ end }} {{ define "main" }} -{{ partial "species_title.html" . }} + {{ partial "species_title.html" . }} -{{ partial "species_nav.html" . }} + {{ partial "species_nav.html" . }} -
+
- -
+ +
-
-
- {{ with .Resources.Get "cover_image"}} - {{ .Title }} - {{ $title := printf "%s - %s" .Title .Params.Attribution }} - {{ if .Params.Link }} - -
{{ $title }}
-
- {{ else }} -

- {{ $title }} -

- {{ end }} - {{ end }} -
-
- -
- {{ partial "distrib_map.html" . }} -
-
- - -
- - -
-

Taxonomy

- - {{ with .Resources.Get "taxonomy.xml" | transform.Unmarshal }} - {{ with partial "halloween/GetTaxonomyRanks.html" .taxon.lineage.taxon }} -
 {{ debug.Dump . }} 
- {{ end }} - {{ else }} - {{ errorf "Unable to get taxonomy file" }} - {{ end }} - - - {{ $lineage_file := (split .Params.lineage_data_path "/") }} - {{ $unsorted_dict := index .Site.Data $lineage_file }} - - - {{ $lineage_slice := slice }} - {{ range $rank, $value := $unsorted_dict }} - {{ $lineage_slice = $lineage_slice | append (dict "rank" $rank "value" $value) }} - {{ end }} - {{ $sorted_lineage := sort $lineage_slice "value.display_order" "desc" }} - - - {{ range $rank, $item := $sorted_lineage }} -
-
- {{ if eq $item.rank "Superkingdom" }} - Domain: - {{ else }} - {{ $item.rank }}: - {{ end }} - {{if or (eq $item.rank "Genus") (eq $item.rank "Species") }} - {{ $item.value.science_name }} - {{ else }} - {{ $item.value.science_name }} - {{ end }} -
- -
-
- {{ end }} - -
-
- NCBI Taxonomy ID: - - {{ $species_dict := index $unsorted_dict "Species" }} - {{ $tax_id := index $species_dict "tax_id" }} - {{ $ncbi_link := index $species_dict "ncbi_link" }} - - {{$tax_id}} - -
-
-
- -
- {{ if or .Params.iucn_category .Params.swe_red_list }} -

Vulnerability

-

- {{ if .Params.iucn_category }} - IUCN Category: - {{ .Params.iucn_category }} -
- {{ end }} +

+
+ {{ with .Resources.Get "cover_image"}} + {{ .Title }} + {{ $title := printf "%s - %s" .Title .Params.Attribution }} + {{ if .Params.Link }} + +
{{ $title }}
+
+ {{ else }} +

+ {{ $title }} +

+ {{ end }} + {{ end }} +
+
- {{ if .Params.swe_red_list }} - Swedish Red List: - {{ .Params.swe_red_list }} -
- {{ end }} -

- {{ end }} +
+ {{ partial "distrib_map.html" . }} +
+
-

External links

+
-
- {{ if .Params.gbif_taxon_id }} - - - + +
+

Taxonomy

+ {{ with .Resources.Get "taxonomy.xml" | transform.Unmarshal }} + {{ with partial "halloween/GetTaxonomyRanks.html" . }} + {{ partial "halloween/lineage.html" . }} + {{ end }} + {{ else }} + {{ errorf "Unable to get taxonomy file" }} + {{ end }} - -
+ + -
+

External links

+ +
+ {{ if .Params.gbif_taxon_id }} + + + + + + + + {{ end }} + + {{ if .Params.goat_webpage }} + + + + {{ end }} + +
+ +
-
+
-
+
-
-
- {{ .Content }} -
-
+
+
+ {{ .Content }} +
+
- {{ partial "last_updated.html" . }} + {{ partial "last_updated.html" . }} -
+
{{ end }} diff --git a/hugo/layouts/partials/halloween/GetTaxonomyRanks.html b/hugo/layouts/partials/halloween/GetTaxonomyRanks.html index c8d9095e..ddaa2941 100644 --- a/hugo/layouts/partials/halloween/GetTaxonomyRanks.html +++ b/hugo/layouts/partials/halloween/GetTaxonomyRanks.html @@ -1,5 +1,6 @@ -{{ $byrank := dict }} -{{ range . }} +{{ $species := dict "scientificName" (index .taxon "-scientificName") "taxId" (index .taxon "-taxId") }} +{{ $byrank := dict "species" $species }} +{{ range .taxon.lineage.taxon }} {{ $rank := index . "-rank" }} {{ $scientificName := index . "-scientificName" }} {{ $taxId := index . "-taxId" }} diff --git a/hugo/layouts/partials/halloween/lineage.html b/hugo/layouts/partials/halloween/lineage.html new file mode 100644 index 00000000..14fa6727 --- /dev/null +++ b/hugo/layouts/partials/halloween/lineage.html @@ -0,0 +1,43 @@ +{{ $ena_url := "https://www.ebi.ac.uk/ena/browser/view/Taxon:" }} +{{ $ncbi_url := "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=" }} + +{{ $order := slice +"superkingdom" +"kingdom" +"phylum" +"class" +"order" +"family" +"genus" +"species" +}} + +{{ $labels := dict "superkingdom" "Domain"}} + +{{ $fmt := dict "genus" "%s" "species" "%s" }} + +{{ range $order }} + {{ $rank := . }} + {{ with index $ $rank }} +
+
+ {{ or (index $labels $rank) $rank | strings.FirstUpper }}: + + {{ printf (or (index $fmt $rank) "%s") .scientificName | safe.HTML }} + +
+ +
+
+ {{ else }} + {{ warnf "Missing lineage entry %s for %s" . $.species.scientificName }} + {{ end }} +{{ end }} +
+
+ NCBI Taxonomy ID: + + {{ .species.taxId }} + +
+
From 1ff6d605119239c4ddff19f5074d52a554af1412 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Mon, 28 Oct 2024 11:41:24 +0100 Subject: [PATCH 15/59] Comment taxonomy templates --- hugo/layouts/partials/halloween/GetTaxonomyRanks.html | 8 ++++++++ hugo/layouts/partials/halloween/lineage.html | 6 +++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/hugo/layouts/partials/halloween/GetTaxonomyRanks.html b/hugo/layouts/partials/halloween/GetTaxonomyRanks.html index ddaa2941..7d5883f6 100644 --- a/hugo/layouts/partials/halloween/GetTaxonomyRanks.html +++ b/hugo/layouts/partials/halloween/GetTaxonomyRanks.html @@ -1,3 +1,11 @@ +{{/* +Given a dictionary representation of taxonomy.xml, return lineage entries indexed by rank. +Example output: +{ + "species": { "scientificName": "Jacobus lanternibus", "taxId": 666 }, + "superkingdom": { "scientificName": "Eukaryota", "taxId": 2759 }, +} +*/}} {{ $species := dict "scientificName" (index .taxon "-scientificName") "taxId" (index .taxon "-taxId") }} {{ $byrank := dict "species" $species }} {{ range .taxon.lineage.taxon }} diff --git a/hugo/layouts/partials/halloween/lineage.html b/hugo/layouts/partials/halloween/lineage.html index 14fa6727..3423da6b 100644 --- a/hugo/layouts/partials/halloween/lineage.html +++ b/hugo/layouts/partials/halloween/lineage.html @@ -12,8 +12,10 @@ "species" }} +{{/* Ranks that need special labels */}} {{ $labels := dict "superkingdom" "Domain"}} +{{/* Ranks that need special name formatting */}} {{ $fmt := dict "genus" "%s" "species" "%s" }} {{ range $order }} @@ -21,8 +23,10 @@ {{ with index $ $rank }}
+ {{/* Uppercased rank or custom label */}} {{ or (index $labels $rank) $rank | strings.FirstUpper }}: + {{/* Scientific name with optional formatting */}} {{ printf (or (index $fmt $rank) "%s") .scientificName | safe.HTML }}
@@ -36,7 +40,7 @@
NCBI Taxonomy ID: - + {{ .species.taxId }}
From 1160dd85b38915662bd2e61a24ad5f8e2de5c83e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Mon, 28 Oct 2024 11:46:45 +0100 Subject: [PATCH 16/59] Remove obsolete references --- .../halloween/jacobus_lanternibus/_index.md | 4 +- .../jacobus_lanternibus/taxonomy.json | 58 ------------------- 2 files changed, 1 insertion(+), 61 deletions(-) delete mode 100644 hugo/content/halloween/jacobus_lanternibus/taxonomy.json diff --git a/hugo/content/halloween/jacobus_lanternibus/_index.md b/hugo/content/halloween/jacobus_lanternibus/_index.md index 864daa63..c88fde10 100644 --- a/hugo/content/halloween/jacobus_lanternibus/_index.md +++ b/hugo/content/halloween/jacobus_lanternibus/_index.md @@ -8,14 +8,12 @@ resources: name: cover_image src: pumpkin.jpg params: - attribution: demonic domain, CC BY-SATAN + attribution: demonic domain, CC BY-SA-TA-N link: https://commons.wikimedia.org/wiki/File:Pumpkin2007.jpg layout: "species_intro" banner_title: "Halloween species overview" weight: 1 -science_name: "Clupea harengus" -lineage_data_path: "clupea_harengus/taxonomy" gbif_taxon_id: "8351946" goat_webpage: "https://goat.genomehubs.org/record?recordId=213953&result=taxon&taxonomy=ncbi#Parnassius%20mnemosyne" diff --git a/hugo/content/halloween/jacobus_lanternibus/taxonomy.json b/hugo/content/halloween/jacobus_lanternibus/taxonomy.json deleted file mode 100644 index d64f3d63..00000000 --- a/hugo/content/halloween/jacobus_lanternibus/taxonomy.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "Species": { - "science_name": "Clupea harengus", - "tax_id": "7950", - "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:7950", - "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=7950", - "display_order": 1 - }, - "Genus": { - "science_name": "Clupea", - "tax_id": "7949", - "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:7949", - "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=7949", - "display_order": 2 - }, - "Family": { - "science_name": "Clupeidae", - "tax_id": "55118", - "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:55118", - "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=55118", - "display_order": 3 - }, - "Order": { - "science_name": "Clupeiformes", - "tax_id": "32446", - "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:32446", - "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=32446", - "display_order": 4 - }, - "Class": { - "science_name": "Actinopteri", - "tax_id": "186623", - "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:186623", - "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=186623", - "display_order": 5 - }, - "Phylum": { - "science_name": "Chordata", - "tax_id": "7711", - "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:7711", - "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=7711", - "display_order": 6 - }, - "Kingdom": { - "science_name": "Metazoa", - "tax_id": "33208", - "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:33208", - "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=33208", - "display_order": 7 - }, - "Superkingdom": { - "science_name": "Eukaryota", - "tax_id": "2759", - "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:2759", - "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=2759", - "display_order": 8 - } -} From defc5f1f6d0731a9cb3d2f69619f988513274c5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Tue, 29 Oct 2024 10:54:02 +0100 Subject: [PATCH 17/59] Create download page bundle --- .../download/data_tracks.json | 268 ++++++++++++++++++ .../{download.md => download/index.md} | 2 +- hugo/layouts/halloween/species_download.html | 19 +- .../partials/halloween/download_table.html | 128 +++++++++ 4 files changed, 403 insertions(+), 14 deletions(-) create mode 100644 hugo/content/halloween/jacobus_lanternibus/download/data_tracks.json rename hugo/content/halloween/jacobus_lanternibus/{download.md => download/index.md} (63%) create mode 100644 hugo/layouts/partials/halloween/download_table.html diff --git a/hugo/content/halloween/jacobus_lanternibus/download/data_tracks.json b/hugo/content/halloween/jacobus_lanternibus/download/data_tracks.json new file mode 100644 index 00000000..69d763d7 --- /dev/null +++ b/hugo/content/halloween/jacobus_lanternibus/download/data_tracks.json @@ -0,0 +1,268 @@ +[ + { + "dataTrackName": "Genome", + "description": "Reference genome sequence", + "fileName": "CAMGYJ01.fasta.gz", + "links": [ + {"Download": "https://ftp.ebi.ac.uk/pub/databases/ena/wgs/public/cam/CAMGYJ01.fasta.gz"}, + {"Website": "https://www.ebi.ac.uk/ena/browser/view/GCA_946122785.1"}, + {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} + ], + "accessionOrDOI": "GCA_946122785.1", + "principalInvestigator": "Tanja Slotte", + "principalInvestigatorAffiliation": "Stockholm University", + "firstDateOnPortal": "15 October 2024" + }, + { + "dataTrackName": "Protein-coding genes", + "description": "Functional annotation of protein-coding genes", + "links": [ + {"Download": "https://figshare.scilifelab.se/ndownloader/files/45076090"}, + {"Website": "https://doi.org/10.17044/scilifelab.24340378.v1"}, + {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} + ], + "accessionOrDOI": "10.17044/scilifelab.24340378.v1", + "fileName": "ltenue_v1_genes.gff.zip", + "principalInvestigator": "Tanja Slotte", + "principalInvestigatorAffiliation": "Stockholm University", + "firstDateOnPortal": "15 October 2024" + }, + { + "dataTrackName": "Repeats", + "description": "Annotation of the repetitive regions", + "links": [ + {"Download": "https://figshare.scilifelab.se/ndownloader/files/48879751"}, + {"Website": "https://doi.org/10.17044/scilifelab.24343000.v2"}, + {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} + ], + "accessionOrDOI": "10.17044/scilifelab.24340378.v1", + "fileName": "L_tenue_v1_rep.bed.gz", + "principalInvestigator": "Tanja Slotte", + "principalInvestigatorAffiliation": "Stockholm University", + "firstDateOnPortal": "15 October 2024" + }, + { + "dataTrackName": "Tajima's D, population 06", + "description": "Whole genome Tajima's D estimates for individuals of population 06 of L. tenue per 100 kb windows.", + "links": [ + {"Download": "https://figshare.scilifelab.se/ndownloader/files/49006876"}, + {"Website": "https://doi.org/10.17044/scilifelab.26937304.v1"}, + {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} + ], + "accessionOrDOI": "10.17044/scilifelab.26937304.v1", + "fileName": "Lten_pop06_TD.bed.zip", + "principalInvestigator": "Tanja Slotte", + "principalInvestigatorAffiliation": "Stockholm University", + "firstDateOnPortal": "15 October 2024" + }, + { + "dataTrackName": "Tajima's D, population 08", + "description": "Whole genome Tajima's D estimates for individuals of population 08 of L. tenue per 100 kb windows.", + "links": [ + {"Download": "https://figshare.scilifelab.se/ndownloader/files/49006879"}, + {"Website": "https://doi.org/10.17044/scilifelab.26937304.v1"}, + {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} + ], + "accessionOrDOI": "10.17044/scilifelab.26937304.v1", + "fileName": "Lten_pop08_TD.bed.zip", + "principalInvestigator": "Tanja Slotte", + "principalInvestigatorAffiliation": "Stockholm University", + "firstDateOnPortal": "15 October 2024" + }, + { + "dataTrackName": "Tajima's D, population 17", + "description": "Whole genome Tajima's D estimates for individuals of population 17 of L. tenue per 100 kb windows.", + "links": [ + {"Download": "https://figshare.scilifelab.se/ndownloader/files/49006882"}, + {"Website": "https://doi.org/10.17044/scilifelab.26937304.v1"}, + {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} + ], + "accessionOrDOI": "10.17044/scilifelab.26937304.v1", + "fileName": "Lten_pop17_TD.bed.zip", + "principalInvestigator": "Tanja Slotte", + "principalInvestigatorAffiliation": "Stockholm University", + "firstDateOnPortal": "15 October 2024" + }, + { + "dataTrackName": "Tajima's D, population 21", + "description": "Whole genome Tajima's D estimates for individuals of population 21 of L. tenue per 100 kb windows.", + "links": [ + {"Download": "https://figshare.scilifelab.se/ndownloader/files/49006888"}, + {"Website": "https://doi.org/10.17044/scilifelab.26937304.v1"}, + {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} + ], + "accessionOrDOI": "10.17044/scilifelab.26937304.v1", + "fileName": "Lten_pop21_TD.bed.zip", + "principalInvestigator": "Tanja Slotte", + "principalInvestigatorAffiliation": "Stockholm University", + "firstDateOnPortal": "15 October 2024" + }, + { + "dataTrackName": "Tajima's D, population 23", + "description": "Whole genome Tajima's D estimates for individuals of population 23 of L. tenue per 100 kb windows.", + "links": [ + {"Download": "https://figshare.scilifelab.se/ndownloader/files/49006891"}, + {"Website": "https://doi.org/10.17044/scilifelab.26937304.v1"}, + {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} + ], + "accessionOrDOI": "10.17044/scilifelab.26937304.v1", + "fileName": "Lten_pop23_TD.bed.zip", + "principalInvestigator": "Tanja Slotte", + "principalInvestigatorAffiliation": "Stockholm University", + "firstDateOnPortal": "15 October 2024" + }, + { + "dataTrackName": "Tajima's D, population 26", + "description": "Whole genome Tajima's D estimates for individuals of population 26 of L. tenue per 100 kb windows.", + "links": [ + {"Download": "https://figshare.scilifelab.se/ndownloader/files/49007380"}, + {"Website": "https://doi.org/10.17044/scilifelab.26937304.v1"}, + {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} + ], + "accessionOrDOI": "10.17044/scilifelab.26937304.v1", + "fileName": "Lten_pop26_TD.bed.zip", + "principalInvestigator": "Tanja Slotte", + "principalInvestigatorAffiliation": "Stockholm University", + "firstDateOnPortal": "15 October 2024" + }, + { + "dataTrackName": "Tajima's D, population 32", + "description": "Whole genome Tajima's D estimates for individuals of population 32 of L. tenue per 100 kb windows.", + "links": [ + {"Download": "https://figshare.scilifelab.se/ndownloader/files/49006918"}, + {"Website": "https://doi.org/10.17044/scilifelab.26937304.v1"}, + {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} + ], + "accessionOrDOI": "10.17044/scilifelab.26937304.v1", + "fileName": "Lten_pop32_TD.bed.zip", + "principalInvestigator": "Tanja Slotte", + "principalInvestigatorAffiliation": "Stockholm University", + "firstDateOnPortal": "15 October 2024" + }, + { + "dataTrackName": "Tajima's D, population 34", + "description": "Whole genome Tajima's D estimates for individuals of population 34 of L. tenue per 100 kb windows.", + "links": [ + {"Download": "https://figshare.scilifelab.se/ndownloader/files/49006924"}, + {"Website": "https://doi.org/10.17044/scilifelab.26937304.v1"}, + {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} + ], + "accessionOrDOI": "10.17044/scilifelab.26937304.v1", + "fileName": "Lten_pop34_TD.bed.zip", + "principalInvestigator": "Tanja Slotte", + "principalInvestigatorAffiliation": "Stockholm University", + "firstDateOnPortal": "15 October 2024" + }, + { + "dataTrackName": "Nucleotide diversity (Ï€), population 06", + "description": "Whole genome nucleotide diversity (Ï€) estimates for individuals of population 06 of L. tenue per 100 kb windows.", + "links": [ + {"Download": "https://figshare.scilifelab.se/ndownloader/files/49006264"}, + {"Website": "https://doi.org/10.17044/scilifelab.26937271.v1"}, + {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} + ], + "accessionOrDOI": "10.17044/scilifelab.26937271.v1", + "fileName": "Lten_pop06_Pi.bed.zip", + "principalInvestigator": "Tanja Slotte", + "principalInvestigatorAffiliation": "Stockholm University", + "firstDateOnPortal": "15 October 2024" + }, + { + "dataTrackName": "Nucleotide diversity (Ï€), population 08", + "description": "Whole genome nucleotide diversity (Ï€) estimates for individuals of population 08 of L. tenue per 100 kb windows.", + "links": [ + {"Download": "https://figshare.scilifelab.se/ndownloader/files/49006267"}, + {"Website": "https://doi.org/10.17044/scilifelab.26937271.v1"}, + {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} + ], + "accessionOrDOI": "10.17044/scilifelab.26937271.v1", + "fileName": "Lten_pop08_Pi.bed.zip", + "principalInvestigator": "Tanja Slotte", + "principalInvestigatorAffiliation": "Stockholm University", + "firstDateOnPortal": "15 October 2024" + }, + { + "dataTrackName": "Nucleotide diversity (Ï€), population 17", + "description": "Whole genome nucleotide diversity (Ï€) estimates for individuals of population 17 of L. tenue per 100 kb windows.", + "links": [ + {"Download": "https://figshare.scilifelab.se/ndownloader/files/49006270"}, + {"Website": "https://doi.org/10.17044/scilifelab.26937271.v1"}, + {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} + ], + "accessionOrDOI": "10.17044/scilifelab.26937271.v1", + "fileName": "Lten_pop17_Pi.bed.zip", + "principalInvestigator": "Tanja Slotte", + "principalInvestigatorAffiliation": "Stockholm University", + "firstDateOnPortal": "15 October 2024" + }, + { + "dataTrackName": "Nucleotide diversity (Ï€), population 21", + "description": "Whole genome nucleotide diversity (Ï€) estimates for individuals of population 21 of L. tenue per 100 kb windows.", + "links": [ + {"Download": "https://figshare.scilifelab.se/ndownloader/files/49006273"}, + {"Website": "https://doi.org/10.17044/scilifelab.26937271.v1"}, + {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} + ], + "accessionOrDOI": "10.17044/scilifelab.26937271.v1", + "fileName": "Lten_pop21_Pi.bed.zip", + "principalInvestigator": "Tanja Slotte", + "principalInvestigatorAffiliation": "Stockholm University", + "firstDateOnPortal": "15 October 2024" + }, + { + "dataTrackName": "Nucleotide diversity (Ï€), population 23", + "description": "Whole genome nucleotide diversity (Ï€) estimates for individuals of population 23 of L. tenue per 100 kb windows.", + "links": [ + {"Download": "https://figshare.scilifelab.se/ndownloader/files/49006282"}, + {"Website": "https://doi.org/10.17044/scilifelab.26937271.v1"}, + {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} + ], + "accessionOrDOI": "10.17044/scilifelab.26937271.v1", + "fileName": "Lten_pop23_Pi.bed.zip", + "principalInvestigator": "Tanja Slotte", + "principalInvestigatorAffiliation": "Stockholm University", + "firstDateOnPortal": "15 October 2024" + }, + { + "dataTrackName": "Nucleotide diversity (Ï€), population 26", + "description": "Whole genome nucleotide diversity (Ï€) estimates for individuals of population 26 of L. tenue per 100 kb windows.", + "links": [ + {"Download": "https://figshare.scilifelab.se/ndownloader/files/49006285"}, + {"Website": "https://doi.org/10.17044/scilifelab.26937271.v1"}, + {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} + ], + "accessionOrDOI": "10.17044/scilifelab.26937271.v1", + "fileName": "Lten_pop26_Pi.bed.zip", + "principalInvestigator": "Tanja Slotte", + "principalInvestigatorAffiliation": "Stockholm University", + "firstDateOnPortal": "15 October 2024" + }, + { + "dataTrackName": "Nucleotide diversity (Ï€), population 32", + "description": "Whole genome nucleotide diversity (Ï€) estimates for individuals of population 32 of L. tenue per 100 kb windows.", + "links": [ + {"Download": "https://figshare.scilifelab.se/ndownloader/files/49006297"}, + {"Website": "https://doi.org/10.17044/scilifelab.26937271.v1"}, + {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} + ], + "accessionOrDOI": "10.17044/scilifelab.26937271.v1", + "fileName": "Lten_pop32_Pi.bed.zip", + "principalInvestigator": "Tanja Slotte", + "principalInvestigatorAffiliation": "Stockholm University", + "firstDateOnPortal": "15 October 2024" + }, + { + "dataTrackName": "Nucleotide diversity (Ï€), population 34", + "description": "Whole genome nucleotide diversity (Ï€) estimates for individuals of population 34 of L. tenue per 100 kb windows.", + "links": [ + {"Download": "https://figshare.scilifelab.se/ndownloader/files/49006300"}, + {"Website": "https://doi.org/10.17044/scilifelab.26937271.v1"}, + {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} + ], + "accessionOrDOI": "10.17044/scilifelab.26937271.v1", + "fileName": "Lten_pop34_Pi.bed.zip", + "principalInvestigator": "Tanja Slotte", + "principalInvestigatorAffiliation": "Stockholm University", + "firstDateOnPortal": "15 October 2024" + } +] diff --git a/hugo/content/halloween/jacobus_lanternibus/download.md b/hugo/content/halloween/jacobus_lanternibus/download/index.md similarity index 63% rename from hugo/content/halloween/jacobus_lanternibus/download.md rename to hugo/content/halloween/jacobus_lanternibus/download/index.md index be355e9c..26e08224 100644 --- a/hugo/content/halloween/jacobus_lanternibus/download.md +++ b/hugo/content/halloween/jacobus_lanternibus/download/index.md @@ -1,6 +1,6 @@ --- title: "Download" layout: "species_download" -url: "clupea_harengus/download" +url: "jacobus_lanternibus/download" weight: 3 --- diff --git a/hugo/layouts/halloween/species_download.html b/hugo/layouts/halloween/species_download.html index 65172973..1136f81c 100644 --- a/hugo/layouts/halloween/species_download.html +++ b/hugo/layouts/halloween/species_download.html @@ -37,17 +37,10 @@

Data availability

- {{ $speciesName := index (split .RelPermalink "/") 1 }} - - {{ $tableDataPath := printf "%s/data_tracks.json" $speciesName }} - {{ $tableDataResource := resources.Get $tableDataPath }} - {{ $tableData := $tableDataResource | transform.Unmarshal }} - - {{ $staticDirPath := printf "/%s/data_tracks" $speciesName }} - {{ $staticDirFile := printf "%s/data_tracks.json" $speciesName }} - - {{ (resources.Get $tableDataPath | resources.Copy $staticDirFile).Publish }} + This means we don't need to store a copy of the data_tracks.json file inside the static dir. --> + {{ $resource := .Resources.Get "data_tracks.json" }} + {{ $tableData := $resource | transform.Unmarshal }} + {{ $staticDirPath := $resource.RelPermalink }} {{ $aliasFileURL := "" }} @@ -63,11 +56,11 @@

Data availability

- {{ partial "download_table" (dict "tableType" "long" "staticDirPath" $staticDirPath "tableData" $tableData "aliasFileURL" $aliasFileURL )}} + {{ partial "halloween/download_table" (dict "tableType" "long" "staticDirPath" $staticDirPath "tableData" $tableData "aliasFileURL" $aliasFileURL )}}
- {{ partial "download_table" (dict "tableType" "short" "staticDirPath" $staticDirPath "tableData" $tableData "aliasFileURL" $aliasFileURL )}} + {{ partial "halloween/download_table" (dict "tableType" "short" "staticDirPath" $staticDirPath "tableData" $tableData "aliasFileURL" $aliasFileURL )}}
diff --git a/hugo/layouts/partials/halloween/download_table.html b/hugo/layouts/partials/halloween/download_table.html new file mode 100644 index 00000000..9e904d18 --- /dev/null +++ b/hugo/layouts/partials/halloween/download_table.html @@ -0,0 +1,128 @@ +{{ $tableType := .tableType }} +{{ $tableData := .tableData }} +{{ $staticDirPath := .staticDirPath }} +{{ $aliasFileURL := .aliasFileURL }} + +
+ + + + + + + {{ if eq $tableType "long"}} + + + {{ end }} + + + {{ if eq $tableType "long"}} + + {{ end }} + + + + {{ range $tableData }} + + + + + + {{ if eq $tableType "long"}} + + + {{ end }} + + + + + {{ if eq $tableType "long"}} + + {{ end }} + + + {{ end }} + +
Data track nameDescriptionLinksAccession/DOIFile namePrincipal investigatorPrincipal investigator affiliationFirst date on portal
{{ .dataTrackName }}{{ .description }} + + + {{ $accessionUrl := "" }} + {{ range .links}} + {{ if .Website }} + {{ $accessionUrl = .Website }} + {{ end }} + {{ end }} + {{ if $accessionUrl }} + {{ .accessionOrDOI }} + {{ else }} + {{ .accessionOrDOI }} + {{ end }} + {{ .fileName }}{{ .principalInvestigator }}{{ .principalInvestigatorAffiliation }}{{ .firstDateOnPortal }}
+
+ + + + From ac8fd6f5a786fa7664e919175bdb2a182f550ed1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Thu, 31 Oct 2024 10:14:34 +0100 Subject: [PATCH 18/59] Remove unused data tables event listener --- hugo/layouts/halloween/assembly.html | 22 --- hugo/layouts/halloween/species_assembly.html | 189 ------------------- 2 files changed, 211 deletions(-) delete mode 100644 hugo/layouts/halloween/species_assembly.html diff --git a/hugo/layouts/halloween/assembly.html b/hugo/layouts/halloween/assembly.html index c1574139..3d155652 100644 --- a/hugo/layouts/halloween/assembly.html +++ b/hugo/layouts/halloween/assembly.html @@ -126,25 +126,3 @@

Annotation Statistics

{{ end }} - -{{ define "scripts" }} - - - -{{ end }} diff --git a/hugo/layouts/halloween/species_assembly.html b/hugo/layouts/halloween/species_assembly.html deleted file mode 100644 index fa75c204..00000000 --- a/hugo/layouts/halloween/species_assembly.html +++ /dev/null @@ -1,189 +0,0 @@ -{{ define "early_connections" }} - - - -{{ end }} - - -{{ define "script_includes" }} - -{{ partial "add_datatables_jquery.html" . }} - -{{ end }} - - - -{{ define "main" }} - -{{ partial "species_title.html" . }} - -{{ partial "species_nav.html" . }} - - -{{ $stats_file := (split .Params.stats_data_path "/") }} -{{ $stats_contents := index .Site.Data $stats_file }} - - -{{ $.Scratch.Add "accession" "" }} -{{ range .Params.key_info }} - {{ if isset . "Accession" }} - {{ $.Scratch.Set "accession" .Accession }} - {{ end }} -{{ end }} -{{ $accession := $.Scratch.Get "accession" }} - -{{ $ena_link := print "https://www.ebi.ac.uk/ena/browser/view/" $accession }} -{{ $ncbi_link := print "https://www.ncbi.nlm.nih.gov/datasets/genome/" $accession }} - - - -{{ $content := split .Content "|||||| Content divider - do not remove ||||||" }} -{{ $contentp1 := index $content 0 }} -{{ $contentp2 := index $content 1 }} - - -
- -
-
-

Description

-
    - {{ range .Params.key_info }} - {{ range $key, $value := . }} -
  • {{ $key }}: {{ $value }}
  • - {{ end }} - {{ end }} -
-
- - -
- - -
-
- {{ $contentp1 | safeHTML }} -
-
- -
- - -
-

Assembly Statistics

- - {{ if .Params.stats_data_path }} -
- - - - - - - - - - - {{ range $idx, $statistic := $stats_contents.assembly }} - {{ range $stat_name, $value := $statistic }} - - - - - {{ end }} - {{ end }} - - -
StatisticValue
{{ $stat_name }} {{ $value }}
-
- {{ else }} -

No assembly data has been provided for this species

- {{ end }} -
- - -
-

Annotation Statistics

- - {{ if .Params.stats_data_path }} -
- - - - - - - - - - - {{ range $idx, $statistic := $stats_contents.annotation }} - {{ range $stat_name, $value := $statistic }} - - - - - {{ end }} - {{ end }} - - -
StatisticValue
{{ $stat_name }} {{ $value }}
-
- {{ else }} -

No annotation data has been provided for this species

- {{ end }} -
- -
-
- - -
-
- {{ $contentp2 | safeHTML }} -
-
- -{{ partial "last_updated.html" . }} - - -{{ end }} - -{{ define "scripts" }} - - - -{{ end }} From 0de94d99be60dc0c833be93bbc9cdace375f3e66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Thu, 31 Oct 2024 10:32:32 +0100 Subject: [PATCH 19/59] Remove labels assmbly description configuration --- .../assembly/assembly.yaml | 20 +++++-------------- hugo/layouts/halloween/assembly.html | 11 +++------- 2 files changed, 8 insertions(+), 23 deletions(-) diff --git a/hugo/content/halloween/jacobus_lanternibus/assembly/assembly.yaml b/hugo/content/halloween/jacobus_lanternibus/assembly/assembly.yaml index 3bd79ccd..b14a1695 100644 --- a/hugo/content/halloween/jacobus_lanternibus/assembly/assembly.yaml +++ b/hugo/content/halloween/jacobus_lanternibus/assembly/assembly.yaml @@ -1,15 +1,5 @@ -name: - label: "Assembly Name" - value: "Foobarus" -type: - label: "Assembly Type" - value: "" -level: - label: "Assembly Level" - value: "" -representation: - label: "Assembly Representation" - value: "" -accession: - label: "Accession" - value: "GCA_XXX" +name: "Jaco_Lant" +type: "Spectroid" +level: "Underwordly" +repr: "Partially obscure" +accession: "GCA_666" diff --git a/hugo/layouts/halloween/assembly.html b/hugo/layouts/halloween/assembly.html index 3d155652..de61216c 100644 --- a/hugo/layouts/halloween/assembly.html +++ b/hugo/layouts/halloween/assembly.html @@ -10,16 +10,11 @@

Description

-
    - {{ range slice "name" "type" "level" "representation" "accession" }} - {{ $entry := index $metadata . }} -
  • {{ $entry.label }}: {{ $entry.value }}
  • - {{ end }} -
+ {{ partial "halloween/assembly_description.html" $metadata }}
- +
- {{ else }} - No metadata was provided for this assembly. - {{ end }} -
-
- {{ .Content }} +
+
+ {{ .Content }} +
-
-
- {{ with .Resources.Get "assembly.yaml" | transform.Unmarshal }} +

Assembly Statistics

@@ -53,21 +48,22 @@

Assembly Statistics

Annotation Statistics

{{ partial "halloween/annotation_stats.html" .annotation }} - {{ else }} -

No assembly and annotation statistics have been provided for this species

- {{ end }} -
+
-
+
-
-
- {{ with .Resources.Get "contrib.md" }} - {{ .Content }} - {{ end }} -
-
+
+
+ {{ with .Resources.Get "contrib.md" }} + {{ .Content }} + {{ end }} +
+
+ {{ else }} + {{ warnf "Missing assembby statistics for %s" .Path }} +

No statistics were provided for this assembly

+ {{ end}} {{ partial "last_updated.html" . }} From 4f6165f48437b6561a20f7aca032e26520ce5053 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Thu, 31 Oct 2024 11:36:51 +0100 Subject: [PATCH 25/59] Restore contributions section --- .../jacobus_lanternibus/assembly/contrib.md | 8 ++++++++ hugo/layouts/halloween/assembly.html | 16 ++++++++-------- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/hugo/content/halloween/jacobus_lanternibus/assembly/contrib.md b/hugo/content/halloween/jacobus_lanternibus/assembly/contrib.md index 97e53c71..0f19ad6c 100644 --- a/hugo/content/halloween/jacobus_lanternibus/assembly/contrib.md +++ b/hugo/content/halloween/jacobus_lanternibus/assembly/contrib.md @@ -7,8 +7,16 @@ build: ### Contributor(s) +Restless souls. + ### Publication(s) +- [How far will a pumpkin fly +?](https://www.nbcnews.com/id/wbna21197135) +- [The great pumpkin](https://www.smithsonianmag.com/science-nature/the-great-pumpkin-74423844/?no-ist=&page=1) + ### Funding +Mephisto Pact Treasury Foundation + ### Acknowledgements diff --git a/hugo/layouts/halloween/assembly.html b/hugo/layouts/halloween/assembly.html index 1096b44c..b4690fdf 100644 --- a/hugo/layouts/halloween/assembly.html +++ b/hugo/layouts/halloween/assembly.html @@ -53,19 +53,19 @@

Annotation Statistics

-
-
- {{ with .Resources.Get "contrib.md" }} - {{ .Content }} - {{ end }} -
-
{{ else }} {{ warnf "Missing assembby statistics for %s" .Path }}

No statistics were provided for this assembly

{{ end}} - {{ partial "last_updated.html" . }} +
+
+ {{ with .Resources.Get "contrib.md" }} + {{ .Content }} + {{ end }} +
+
+ {{ partial "last_updated.html" . }} {{ end }} From fabeaefae72d5501319a7639f941260a4d0e6ccb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Thu, 31 Oct 2024 11:57:44 +0100 Subject: [PATCH 26/59] Minor tweaks --- .../halloween/jacobus_lanternibus/_index.md | 34 ++++++++----------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/hugo/content/halloween/jacobus_lanternibus/_index.md b/hugo/content/halloween/jacobus_lanternibus/_index.md index c88fde10..2ad0c6e9 100644 --- a/hugo/content/halloween/jacobus_lanternibus/_index.md +++ b/hugo/content/halloween/jacobus_lanternibus/_index.md @@ -1,30 +1,30 @@ --- -title: Jacobus lanternibus +title: Jacobus Lanternibus subtitle: "Jack-o'-lantern" lastmod: 2024-10-26T10:00:00+0200 resources: - - title: "Fiery pumpkin" + - title: Fiery pumpkin name: cover_image src: pumpkin.jpg params: - attribution: demonic domain, CC BY-SA-TA-N + attribution: pandemonic domain, CC BY-SA-TA-N link: https://commons.wikimedia.org/wiki/File:Pumpkin2007.jpg layout: "species_intro" -banner_title: "Halloween species overview" weight: 1 -gbif_taxon_id: "8351946" -goat_webpage: "https://goat.genomehubs.org/record?recordId=213953&result=taxon&taxonomy=ncbi#Parnassius%20mnemosyne" -iucn_category: "Least Concern" -iucn_link: "https://www.iucnredlist.org/species/155123/4717767" - -swe_red_list: "Viable" -swe_red_list_link: "https://artfakta.se/taxa/206089/" -latitude: 60 -longitude: -40 -initialZoom: 1 +params: + banner_title: "Halloween species overview" + gbif_taxon_id: 2874508 + goat_webpage: "https://goat.genomehubs.org/record?recordId=213953&result=taxon&taxonomy=ncbi#Parnassius%20mnemosyne" + iucn_category: "Least Concern" + iucn_link: "https://www.iucnredlist.org/species/155123/4717767" + swe_red_list: "Viable" + swe_red_list_link: "https://artfakta.se/taxa/206089/" + latitude: 60 + longitude: -40 + initialZoom: 1.5 --- ### Description @@ -33,12 +33,8 @@ Write some content here in markdown for the introduction tab of the species page #### Genome reference -[EDIT] - #### References -- [EDIT] - #### Changelog -- DD/MM/YYYY - Species first published on the Portal +- 31/10/2024 - Species first published on the Portal From 13b6b45ba67932ca759294d8061e77bd98575f37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Thu, 31 Oct 2024 13:53:51 +0100 Subject: [PATCH 27/59] Add basic archetype --- hugo/archetypes/halloween/_index.md | 66 ++++++++----------- .../halloween/assembly/assembly.yaml | 44 ++++++++----- hugo/archetypes/halloween/assembly/contrib.md | 13 ++-- .../assembly/{_index.md => index.md} | 1 + .../halloween/download/data_tracks.json | 16 +++++ .../{download.md => download/index.md} | 2 +- hugo/archetypes/halloween/intro/index.md | 3 + hugo/archetypes/halloween/taxonomy.json | 58 ---------------- hugo/archetypes/halloween/taxonomy.xml | 36 ++++++++++ hugo/layouts/halloween/species_intro.html | 2 +- 10 files changed, 124 insertions(+), 117 deletions(-) rename hugo/archetypes/halloween/assembly/{_index.md => index.md} (73%) create mode 100644 hugo/archetypes/halloween/download/data_tracks.json rename hugo/archetypes/halloween/{download.md => download/index.md} (63%) create mode 100644 hugo/archetypes/halloween/intro/index.md delete mode 100644 hugo/archetypes/halloween/taxonomy.json create mode 100644 hugo/archetypes/halloween/taxonomy.xml diff --git a/hugo/archetypes/halloween/_index.md b/hugo/archetypes/halloween/_index.md index 7506ad6a..b7b6f893 100644 --- a/hugo/archetypes/halloween/_index.md +++ b/hugo/archetypes/halloween/_index.md @@ -1,41 +1,35 @@ --- -# Required params below -title: "*Clupea harengus*" -subtitle: "Atlantic herring" +title: '{{ replace .File.ContentBaseName `_` ` ` | title }}' +subtitle: Species common name +lastmod: {{ time.Format "31/01/2014" .Date }} + +resources: + - title: '{{ replace .File.ContentBaseName `_` ` ` | title }}' + name: cover_image + # Use relative path for a local image + src: "https://placehold.co/600x400" + params: + attribution: CC-BY-SA + link: "https://placehold.co/600x400" -last_updated: "15/05/2024" - -cover_image: "/img/species/clupea_harengus.webp" -img_attrib_text: "Clupea harengus by Gervais et Boulart, public domain" -img_attrib_link: "https://en.wikipedia.org/wiki/File:Clupea_harengus_Gervais.jpg" - - -# The params below were auto-generated, you should not need to edit them... -# unless you were warned by the add-new-species.py script. layout: "species_intro" -banner_title: "Species overview" -url: "clupea_harengus" weight: 1 -science_name: "Clupea harengus" -lineage_data_path: "clupea_harengus/taxonomy" - -gbif_taxon_id: "8351946" -goat_webpage: "https://goat.genomehubs.org/record?recordId=213953&result=taxon&taxonomy=ncbi#Parnassius%20mnemosyne" - -# Optional params below, -# remove them if you don't want them or they are not relevant. -iucn_category: "Least Concern" -iucn_link: "https://www.iucnredlist.org/species/155123/4717767" - -swe_red_list: "Viable" -swe_red_list_link: "https://artfakta.se/taxa/206089/" - -# These 3 params define the initial view for the map -# latitude and longitude are for the map center. -latitude: 60 -longitude: -40 -initialZoom: 1 +params: + banner_title: "Species overview" + goat_webpage: "https://goat.genomehubs.org" + + # Map + gbif_taxon_id: 2874508 + latitude: 60 + longitude: -40 + initialZoom: 1.5 + + # Optional + iucn_category: + iucn_link: + swe_red_list: + swe_red_list_link: --- ### Description @@ -44,12 +38,8 @@ Write some content here in markdown for the introduction tab of the species page #### Genome reference -[EDIT] - #### References -- [EDIT] - #### Changelog -- DD/MM/YYYY - Species first published on the Portal +- 31/10/2024 - Species first published on the Portal diff --git a/hugo/archetypes/halloween/assembly/assembly.yaml b/hugo/archetypes/halloween/assembly/assembly.yaml index 1a49687b..27999d94 100644 --- a/hugo/archetypes/halloween/assembly/assembly.yaml +++ b/hugo/archetypes/halloween/assembly/assembly.yaml @@ -1,15 +1,29 @@ -name: - label: "Assembly Name" - value: "" -type: - label: "Assembly Type" - value: "" -level: - label: "Assembly Level" - value: "" -representation: - label: "Assembly Representation" - value: "" -accession: - label: "Assembly Accession" - value: "" +description: + name: "Jaco_Lant" + type: "Spectroid" + level: "Underwordly" + repr: "Partially obscure" + accession: "GCA_666" +stats: + length: + gc: + contig: + contig_n50: + contig_l50: + contig_n90: + contig_l90: + scaffold: + scaffold_n50: + scaffold_l50: + scaffold_n90: + scaffold_l90: + scaffold_gt_10: + busco: +annotation: + gene_cnt: + transcript_cnt: + exons_avg: + gene_length_avg: + transcript_length_avg: + exon_length_avg: + intron_length_avg: diff --git a/hugo/archetypes/halloween/assembly/contrib.md b/hugo/archetypes/halloween/assembly/contrib.md index c76ea97a..0f19ad6c 100644 --- a/hugo/archetypes/halloween/assembly/contrib.md +++ b/hugo/archetypes/halloween/assembly/contrib.md @@ -1,17 +1,22 @@ --- build: - list: never - publishResources: false - render: never + list: never + publishResources: false + render: never --- - + ### Contributor(s) +Restless souls. ### Publication(s) +- [How far will a pumpkin fly +?](https://www.nbcnews.com/id/wbna21197135) +- [The great pumpkin](https://www.smithsonianmag.com/science-nature/the-great-pumpkin-74423844/?no-ist=&page=1) ### Funding +Mephisto Pact Treasury Foundation ### Acknowledgements diff --git a/hugo/archetypes/halloween/assembly/_index.md b/hugo/archetypes/halloween/assembly/index.md similarity index 73% rename from hugo/archetypes/halloween/assembly/_index.md rename to hugo/archetypes/halloween/assembly/index.md index 7630469e..59c22e0a 100644 --- a/hugo/archetypes/halloween/assembly/_index.md +++ b/hugo/archetypes/halloween/assembly/index.md @@ -1,5 +1,6 @@ --- title: "Genome assembly" +layout: assembly --- ### Methods diff --git a/hugo/archetypes/halloween/download/data_tracks.json b/hugo/archetypes/halloween/download/data_tracks.json new file mode 100644 index 00000000..1ba0765d --- /dev/null +++ b/hugo/archetypes/halloween/download/data_tracks.json @@ -0,0 +1,16 @@ +[ + { + "dataTrackName": "Genome", + "description": "Reference genome sequence", + "fileName": "placeholder.fasta.gz", + "links": [ + {"Download": "#"}, + {"Website": "#"}, + {"Article": "#"} + ], + "accessionOrDOI": "GCA_1234", + "principalInvestigator": "Someone", + "principalInvestigatorAffiliation": "Some university", + "firstDateOnPortal": "15 October 2024" + } +] diff --git a/hugo/archetypes/halloween/download.md b/hugo/archetypes/halloween/download/index.md similarity index 63% rename from hugo/archetypes/halloween/download.md rename to hugo/archetypes/halloween/download/index.md index be355e9c..26e08224 100644 --- a/hugo/archetypes/halloween/download.md +++ b/hugo/archetypes/halloween/download/index.md @@ -1,6 +1,6 @@ --- title: "Download" layout: "species_download" -url: "clupea_harengus/download" +url: "jacobus_lanternibus/download" weight: 3 --- diff --git a/hugo/archetypes/halloween/intro/index.md b/hugo/archetypes/halloween/intro/index.md new file mode 100644 index 00000000..ca03031f --- /dev/null +++ b/hugo/archetypes/halloween/intro/index.md @@ -0,0 +1,3 @@ +--- +headless: true +--- diff --git a/hugo/archetypes/halloween/taxonomy.json b/hugo/archetypes/halloween/taxonomy.json deleted file mode 100644 index d64f3d63..00000000 --- a/hugo/archetypes/halloween/taxonomy.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "Species": { - "science_name": "Clupea harengus", - "tax_id": "7950", - "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:7950", - "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=7950", - "display_order": 1 - }, - "Genus": { - "science_name": "Clupea", - "tax_id": "7949", - "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:7949", - "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=7949", - "display_order": 2 - }, - "Family": { - "science_name": "Clupeidae", - "tax_id": "55118", - "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:55118", - "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=55118", - "display_order": 3 - }, - "Order": { - "science_name": "Clupeiformes", - "tax_id": "32446", - "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:32446", - "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=32446", - "display_order": 4 - }, - "Class": { - "science_name": "Actinopteri", - "tax_id": "186623", - "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:186623", - "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=186623", - "display_order": 5 - }, - "Phylum": { - "science_name": "Chordata", - "tax_id": "7711", - "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:7711", - "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=7711", - "display_order": 6 - }, - "Kingdom": { - "science_name": "Metazoa", - "tax_id": "33208", - "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:33208", - "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=33208", - "display_order": 7 - }, - "Superkingdom": { - "science_name": "Eukaryota", - "tax_id": "2759", - "ena_link": "https://www.ebi.ac.uk/ena/browser/view/Taxon:2759", - "ncbi_link": "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=2759", - "display_order": 8 - } -} diff --git a/hugo/archetypes/halloween/taxonomy.xml b/hugo/archetypes/halloween/taxonomy.xml new file mode 100644 index 00000000..3a5d0b2f --- /dev/null +++ b/hugo/archetypes/halloween/taxonomy.xml @@ -0,0 +1,36 @@ + + + + diff --git a/hugo/layouts/halloween/species_intro.html b/hugo/layouts/halloween/species_intro.html index 3cd34014..ac496d91 100644 --- a/hugo/layouts/halloween/species_intro.html +++ b/hugo/layouts/halloween/species_intro.html @@ -62,7 +62,7 @@

Taxonomy

{{ partial "halloween/lineage.html" . }} {{ end }} {{ else }} - {{ errorf "Unable to get taxonomy file" }} + {{ errorf "Missing taxonomy file: %s/taxonomy.json" $.Path }} {{ end }}
From e08de8345fcbffede8a30091375d3a57849ab948 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Thu, 31 Oct 2024 14:07:50 +0100 Subject: [PATCH 28/59] Include placeholder image in archetype --- hugo/archetypes/halloween/_index.md | 8 ++++---- hugo/archetypes/halloween/placeholder.png | Bin 0 -> 11211 bytes hugo/layouts/halloween/species_intro.html | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) create mode 100644 hugo/archetypes/halloween/placeholder.png diff --git a/hugo/archetypes/halloween/_index.md b/hugo/archetypes/halloween/_index.md index b7b6f893..7c27d0ca 100644 --- a/hugo/archetypes/halloween/_index.md +++ b/hugo/archetypes/halloween/_index.md @@ -1,16 +1,16 @@ --- +date: {{ .Date }} title: '{{ replace .File.ContentBaseName `_` ` ` | title }}' subtitle: Species common name -lastmod: {{ time.Format "31/01/2014" .Date }} +lastmod: {{ .Date }} resources: - title: '{{ replace .File.ContentBaseName `_` ` ` | title }}' name: cover_image - # Use relative path for a local image - src: "https://placehold.co/600x400" + src: "placeholder.png" params: attribution: CC-BY-SA - link: "https://placehold.co/600x400" + link: "https://placehold.co/600x400/png" layout: "species_intro" weight: 1 diff --git a/hugo/archetypes/halloween/placeholder.png b/hugo/archetypes/halloween/placeholder.png new file mode 100644 index 0000000000000000000000000000000000000000..c5e3812e6a52d5f94fb4af0642fb915d0d1e4d40 GIT binary patch literal 11211 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 G_x=aK3*dGD literal 0 HcmV?d00001 diff --git a/hugo/layouts/halloween/species_intro.html b/hugo/layouts/halloween/species_intro.html index ac496d91..416fd246 100644 --- a/hugo/layouts/halloween/species_intro.html +++ b/hugo/layouts/halloween/species_intro.html @@ -39,7 +39,7 @@ {{ else }}

- {{ $title }} + {{ .Title }}

{{ end }} {{ end }} From 4252a4bfc81fc2de7a07fbcfd7f35b4cd396a756 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Sat, 16 Nov 2024 13:54:58 +0100 Subject: [PATCH 29/59] Extensible assembly fields --- .../_default/hugo.yaml} | 0 hugo/config/_default/params.yaml | 30 +++++++++ hugo/config/production/hugo.yaml | 1 + .../assembly/assembly.yaml | 44 ++++++------- .../jacobus_lanternibus/assembly/index.md | 5 ++ hugo/layouts/halloween/assembly.html | 22 +++++-- .../partials/halloween/annotation_stats.html | 31 --------- .../halloween/assembly_description.html | 31 ++++----- .../partials/halloween/assembly_stats.html | 63 +++++++++---------- 9 files changed, 122 insertions(+), 105 deletions(-) rename hugo/{config.yaml => config/_default/hugo.yaml} (100%) create mode 100644 hugo/config/_default/params.yaml create mode 100644 hugo/config/production/hugo.yaml delete mode 100644 hugo/layouts/partials/halloween/annotation_stats.html diff --git a/hugo/config.yaml b/hugo/config/_default/hugo.yaml similarity index 100% rename from hugo/config.yaml rename to hugo/config/_default/hugo.yaml diff --git a/hugo/config/_default/params.yaml b/hugo/config/_default/params.yaml new file mode 100644 index 00000000..9c622975 --- /dev/null +++ b/hugo/config/_default/params.yaml @@ -0,0 +1,30 @@ +assembly_fields: + description: + - ["name", "Assembly Name"] + - ["type", "Assembly Type"] + - ["level", "Assembly Level"] + - ["repr", "Assembly Representation"] + - ["accession"] + stats: + - ["length", "Assembly length (Mbp)"] + - ["gc", "GC %"] + - ["contig", "Contig #" ] + - ["contig_n50", "Contig N50 (Mbp)" ] + - ["contig_l50"] + - ["contig_n90", "Contig N90 (Mbp)" ] + - ["contig_l90"] + - ["scaffold", "Scaffold #"] + - ["scaffold_n50", "Scaffold N50 (Mbp)"] + - ["scaffold_l50"] + - ["scaffold_n90", "Scaffold N90 (Mbp)"] + - ["scaffold_l90"] + - ["scaffold_gt_10", "Scaffolds >= 10 kb"] + - ["busco", "BUSCO %"] + annotation: + - ["gene_cnt", "Gene #"] + - ["transcript_cnt", "Transcript #"] + - ["exons_avg", "Avg exons per transcript"] + - ["gene_length_avg","Avg gene length (bp)"] + - ["transcript_length_avg", "Avg transcript length (bp)"] + - ["exon_length_avg", "Avg exon length (bp)"] + - ["intron_length_avg", "Avg intron length (bp)"] diff --git a/hugo/config/production/hugo.yaml b/hugo/config/production/hugo.yaml new file mode 100644 index 00000000..94144a66 --- /dev/null +++ b/hugo/config/production/hugo.yaml @@ -0,0 +1 @@ +panicOnWarning: true diff --git a/hugo/content/halloween/jacobus_lanternibus/assembly/assembly.yaml b/hugo/content/halloween/jacobus_lanternibus/assembly/assembly.yaml index 27999d94..c113ff16 100644 --- a/hugo/content/halloween/jacobus_lanternibus/assembly/assembly.yaml +++ b/hugo/content/halloween/jacobus_lanternibus/assembly/assembly.yaml @@ -4,26 +4,28 @@ description: level: "Underwordly" repr: "Partially obscure" accession: "GCA_666" + extra_1: 666 + extra_2: 999 stats: - length: - gc: - contig: - contig_n50: - contig_l50: - contig_n90: - contig_l90: - scaffold: - scaffold_n50: - scaffold_l50: - scaffold_n90: - scaffold_l90: - scaffold_gt_10: - busco: + length: 1 + gc: 2 + contig: 3 + contig_n50: 4 + contig_l50: 5 + contig_n90: 6 + contig_l90: 7 + scaffold: 8 + scaffold_n50: 9 + scaffold_l50: 10 + scaffold_n90: 11 + scaffold_l90: 12 + scaffold_gt_10: 13 + busco: 34 annotation: - gene_cnt: - transcript_cnt: - exons_avg: - gene_length_avg: - transcript_length_avg: - exon_length_avg: - intron_length_avg: + gene_cnt: 14 + transcript_cnt: 15 + exons_avg: 16 + gene_length_avg: 17 + transcript_length_avg: 18 + exon_length_avg: 19 + intron_length_avg: 20 diff --git a/hugo/content/halloween/jacobus_lanternibus/assembly/index.md b/hugo/content/halloween/jacobus_lanternibus/assembly/index.md index 59c22e0a..d6db17cc 100644 --- a/hugo/content/halloween/jacobus_lanternibus/assembly/index.md +++ b/hugo/content/halloween/jacobus_lanternibus/assembly/index.md @@ -1,6 +1,11 @@ --- title: "Genome assembly" layout: assembly +params: + assembly_fields: + description: + - ["extra_1", "Additional field"] + - ["extra_2", "Another Additional field"] --- ### Methods diff --git a/hugo/layouts/halloween/assembly.html b/hugo/layouts/halloween/assembly.html index b4690fdf..a83621ca 100644 --- a/hugo/layouts/halloween/assembly.html +++ b/hugo/layouts/halloween/assembly.html @@ -4,12 +4,25 @@ {{ partial "species_nav.html" . }} + {{ $fields := dict + "default" .Site.Params.assembly_fields + "extra" (or .Params.assembly_fields dict) + }} + {{ with .Resources.Get "assembly.yaml" | transform.Unmarshal }} + {{/* Common context for partials rendering assembly description tables */}} + {{ $context := dict + "path" $.Page.Path + "fields" $fields + "values" . + }} +

Description

- {{ partial "halloween/assembly_description.html" .description }} + {{ $context = (merge $context (dict "section" "description")) }} + {{ partial "halloween/assembly_description.html" $context }}
@@ -41,18 +54,19 @@

Description

Assembly Statistics

- {{ partial "halloween/assembly_stats.html" .stats }} + {{ $context = merge $context (dict "section" "stats") }} + {{ partial "halloween/assembly_stats.html" $context }}

Annotation Statistics

- {{ partial "halloween/annotation_stats.html" .annotation }} + {{ $context = merge $context (dict "section" "annotation") }} + {{ partial "halloween/assembly_stats.html" $context }}
- {{ else }} {{ warnf "Missing assembby statistics for %s" .Path }}

No statistics were provided for this assembly

diff --git a/hugo/layouts/partials/halloween/annotation_stats.html b/hugo/layouts/partials/halloween/annotation_stats.html deleted file mode 100644 index 1e38b33c..00000000 --- a/hugo/layouts/partials/halloween/annotation_stats.html +++ /dev/null @@ -1,31 +0,0 @@ -{{ $labels := dict -"gene_cnt" "Gene #" -"transcript_cnt" "Transcript #" -"exons_avg" "Avg exons per transcript" -"gene_length_avg" "Avg gene length (bp)" -"transcript_length_avg" "Avg transcript length (bp)" -"exon_length_avg" "Avg exon length (bp)" -"intron_length_avg" "Avg intron length (bp)" -}} - -
- - - - - - - - - - - {{ range $key, $label := $labels }} - - - - - {{ end }} - - -
StatisticValue
{{ $label }} {{ or (index $ $key) "Not provided" }}
-
diff --git a/hugo/layouts/partials/halloween/assembly_description.html b/hugo/layouts/partials/halloween/assembly_description.html index 00337789..2701100c 100644 --- a/hugo/layouts/partials/halloween/assembly_description.html +++ b/hugo/layouts/partials/halloween/assembly_description.html @@ -1,14 +1,17 @@ -{{ $labels := dict -"name" "Assembly Name" -"type" "Assembly Type" -"level" "Assembly Level" -"repr" "Assembly Representation" -"accession" "Accession" -}} - - -
    - {{ range $key, $label := $labels }} -
  • {{ $label }}: {{ index $ $key }}
  • - {{ end }} -
+{{ $fields := append (or (index .fields.extra .section) slice) (index .fields.default .section) }} +{{ $values := index .values .section }} +{{ with $fields }} +
    + {{ range $fields }} + {{ $key := index . 0 }} + {{ $label := or (index . 1) (replace $key "_" " " | title ) }} + {{ with index $values $key }} +
  • {{ $label }}: {{ . }}
  • + {{ else }} + {{ warnidf "missing-assembly-meta" "%s/assembly.yaml lacks key %s" $.path $key }} + {{ end }} + {{ end }} +
+{{ else }} + {{ warnf "No assembly fields declared for section: %s" .section }} +{{ end }} diff --git a/hugo/layouts/partials/halloween/assembly_stats.html b/hugo/layouts/partials/halloween/assembly_stats.html index 05a0af48..07fd27bf 100644 --- a/hugo/layouts/partials/halloween/assembly_stats.html +++ b/hugo/layouts/partials/halloween/assembly_stats.html @@ -1,38 +1,31 @@ -{{ $labels := dict -"length" "Assembly length (Mbp)" -"gc" "GC %" -"contig" "Contig #" -"contig_n50" "Contig N50 (Mbp)" -"contig_l50" "Contig L50" -"contig_n90" "Contig N90 (Mbp)" -"contig_l90" "Contig L90" -"scaffold" "Scaffold #" -"scaffold_n50" "Scaffold N50 (Mbp)" -"scaffold_l50" "Scaffold L50" -"scaffold_n90" "Scaffold N90 (Mbp)" -"scaffold_l90" "Scaffold L90" -"scaffold_gt_10" "Scaffolds >= 10 kb" -"busco" "BUSCO %" -}} +{{ $fields := append (or (index .fields.extra .section) slice) (index .fields.default .section) }} +{{ $values := index .values .section }} +{{ with $fields }} +
+ -
-
- - - - - - - - - - {{ range $key, $label := $labels }} + - - + + - {{ end }} - - -
StatisticValue
{{ $label }} {{ or (index $ $key) "Not provided" }} StatisticValue
-
+ + + {{ range $fields }} + {{ $key := index . 0 }} + {{ $label := or (index . 1) (replace $key "_" " " | title ) }} + {{ with index $values $key | string }} + + {{ $label }} + {{ . }} + + {{ else }} + {{ warnidf "missing-assembly-stat" "%s/assembly.yaml: %s undefined" $.path $key }} + {{ end }} + {{ end }} + + +
+{{ else }} + {{ warnf "No assembly fields declared for section: %s" .section }} +{{ end }} From 8e5d859fb2bea888a38e5abeef44da008eb97fd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Sat, 16 Nov 2024 15:08:55 +0100 Subject: [PATCH 30/59] Use templates for templates --- scripts/add_new_species.py | 69 ++++++++++++++++++++--------------- scripts/templates/_index.md | 12 +++--- scripts/templates/assembly.md | 6 +-- scripts/templates/download.md | 2 +- 4 files changed, 49 insertions(+), 40 deletions(-) diff --git a/scripts/add_new_species.py b/scripts/add_new_species.py index bed46e2f..3989108d 100644 --- a/scripts/add_new_species.py +++ b/scripts/add_new_species.py @@ -7,8 +7,12 @@ """ import argparse +import logging +import re import shutil +from collections import defaultdict from pathlib import Path +from string import Template import requests from get_taxonomy import EbiRestException, get_taxonomy @@ -73,42 +77,47 @@ def create_dirs(dir_name: str) -> tuple[Path, Path, Path]: return content_dir_path, data_dir_path, assets_dir_path +def slugify(name): + return re.sub(r"\s+", "_", name) + + +def get_template_context(species_name: str, tax_id: str | None = None) -> dict: + ctxt = defaultdict( + lambda: "[EDIT]", + species_name=species_name, + slug=slugify(species_name), + ) + try: + ctxt["gbif_taxon_key"] = get_gbif_taxon_key(species_name) + except (requests.HTTPError, KeyError): + logging.warn("Failed to get GBIF key for species: %s", species_name) + if tax_id: + ctxt["goat_link"] = make_goat_weblink(species_name=species_name, tax_id=tax_id) + return ctxt + + +def render(template_str, context): + return Template(template_str).substitute(context) + + +def load_template(template_name): + try: + return (TEMPLATE_DIR / template_name).read_text() + except IOError: + raise ValueError(f"Template not found: {template_name}") from None + + def add_content_files(species_name: str, content_dir_path: Path, tax_id: str) -> None: """ Add the species name to the template content files, then write them to disk. """ - dir_name = species_name.replace(" ", "_").lower() + ctxt = get_template_context(species_name, tax_id) for file_name in CONTENT_FILES: - with open(TEMPLATE_DIR / file_name, "r") as file_in: - template = file_in.read() - - template = template.replace("SPECIES_NAME", species_name) - template = template.replace("SPECIES_FOLDER", dir_name) - - if file_name == INDEX_FILE: - try: - gbif_taxon_key = get_gbif_taxon_key(species_name=species_name) - template = template.replace("GBIF_TAXON_ID", gbif_taxon_key) - except (requests.exceptions.HTTPError, KeyError): - print( - f"""WARNING: Failed to get GBIF key for species: {args.species_name}. - Not to worry, - you can instead add it manually to the _index.md file in the species directory.""" - ) - template = template.replace("GBIF_TAXON_ID", "[EDIT]") - - if tax_id: - goat_link = make_goat_weblink(species_name=species_name, tax_id=tax_id) - template = template.replace("GOAT_WEBPAGE", goat_link) - else: - template = template.replace("GOAT_WEBPAGE", "[EDIT]") - - output_file_path = content_dir_path / file_name - - with open(output_file_path, "w") as file_out: - file_out.write(template) - print(f"File created: {output_file_path.resolve()}") + template_str = load_template(file_name) + content = render(template_str, ctxt) + (out_file := content_dir_path / file_name).write_text(content) + logging.info("File created: %s", out_file.resolve()) def add_stats_file(data_dir_path: Path) -> None: diff --git a/scripts/templates/_index.md b/scripts/templates/_index.md index 46104286..c13f2671 100644 --- a/scripts/templates/_index.md +++ b/scripts/templates/_index.md @@ -14,13 +14,13 @@ img_attrib_link: "[EDIT] - if there is no hyperlink available for this file, the # unless you were warned by the add-new-species.py script. layout: "species_intro" banner_title: "Species overview" -url: "SPECIES_FOLDER" +url: "${slug}" weight: 1 -science_name: "SPECIES_NAME" -lineage_data_path: "SPECIES_FOLDER/taxonomy" +science_name: "${species_name}" +lineage_data_path: "${slug}/taxonomy" -gbif_taxon_id: "GBIF_TAXON_ID" -goat_webpage: "GOAT_WEBPAGE" +gbif_taxon_id: "${gbif_taxon_id}" +goat_webpage: "${goat_webpage}" # Optional params below, @@ -50,4 +50,4 @@ Write content here in markdown for the introduction tab of the species page. #### Changelog -- [TODO - Add date] - Species first published on the Portal \ No newline at end of file +- [TODO - Add date] - Species first published on the Portal diff --git a/scripts/templates/assembly.md b/scripts/templates/assembly.md index d79bc4bc..c5c34f8c 100644 --- a/scripts/templates/assembly.md +++ b/scripts/templates/assembly.md @@ -11,11 +11,11 @@ key_info: # unless you were warned by the add-new-species.py script. title: "Genome assembly" layout: "species_assembly" -url: "SPECIES_FOLDER/assembly" +url: "${slug}/assembly" weight: 2 -stats_data_path: "SPECIES_FOLDER/species_stats" -lineage_data_path: "SPECIES_FOLDER/taxonomy" +stats_data_path: "${slug}/species_stats" +lineage_data_path: "${slug}/taxonomy" --- |||||| Content divider - do not remove |||||| diff --git a/scripts/templates/download.md b/scripts/templates/download.md index fa952a34..35f05707 100644 --- a/scripts/templates/download.md +++ b/scripts/templates/download.md @@ -3,6 +3,6 @@ alias_file_url: "[EDIT]" # The below parameters were generated automatically and do not need to be changed. title: "Download" layout: "species_download" -url: "SPECIES_FOLDER/download" +url: "${slug}/download" weight: 3 --- From 37ed418464f95a4d59fa51c00473557fcdd5630d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Mon, 18 Nov 2024 12:02:05 +0100 Subject: [PATCH 31/59] Allow optional fields defined globally --- hugo/config/_default/params.yaml | 76 ++++++++++++------- .../jacobus_lanternibus/assembly/index.md | 6 +- .../halloween/assembly_description.html | 9 ++- .../partials/halloween/assembly_stats.html | 9 ++- 4 files changed, 64 insertions(+), 36 deletions(-) diff --git a/hugo/config/_default/params.yaml b/hugo/config/_default/params.yaml index 9c622975..0a25fd5f 100644 --- a/hugo/config/_default/params.yaml +++ b/hugo/config/_default/params.yaml @@ -1,30 +1,54 @@ assembly_fields: description: - - ["name", "Assembly Name"] - - ["type", "Assembly Type"] - - ["level", "Assembly Level"] - - ["repr", "Assembly Representation"] - - ["accession"] + - key: name + label: Assembly Name + - key: type + label: Assembly Type + - key: level + label: Assembly Level + - key: repr + label: Assembly Representation + - key: accession stats: - - ["length", "Assembly length (Mbp)"] - - ["gc", "GC %"] - - ["contig", "Contig #" ] - - ["contig_n50", "Contig N50 (Mbp)" ] - - ["contig_l50"] - - ["contig_n90", "Contig N90 (Mbp)" ] - - ["contig_l90"] - - ["scaffold", "Scaffold #"] - - ["scaffold_n50", "Scaffold N50 (Mbp)"] - - ["scaffold_l50"] - - ["scaffold_n90", "Scaffold N90 (Mbp)"] - - ["scaffold_l90"] - - ["scaffold_gt_10", "Scaffolds >= 10 kb"] - - ["busco", "BUSCO %"] + - key: length + label: "Assembly length (Mbp)" + - key: gc + label: "GC %" + - key: contig + label: "Contig #" + - key: contig_n50 + label: "Contig N50 (Mbp)" + - key: contig_l50 + - key: contig_n90 + label: "Contig N90 (Mbp)" + - key: contig_l90 + - key: scaffold + label: "Scaffold #" + - key: scaffold_n50 + label: "Scaffold N50 (Mbp)" + - key: scaffold_l50 + - key: scaffold_n90 + label: Scaffold N90 (Mbp) + - key: scaffold_l90 + - key: scaffold_gt_10 + label: "Scaffolds >= 10 kb" + - key: busco + label: BUSCO % annotation: - - ["gene_cnt", "Gene #"] - - ["transcript_cnt", "Transcript #"] - - ["exons_avg", "Avg exons per transcript"] - - ["gene_length_avg","Avg gene length (bp)"] - - ["transcript_length_avg", "Avg transcript length (bp)"] - - ["exon_length_avg", "Avg exon length (bp)"] - - ["intron_length_avg", "Avg intron length (bp)"] + - key: gene_cnt + label: "Gene #" + - key: transcript_cnt + label: "Transcript #" + - key: exons_avg + label: Avg exons per transcript + - key: gene_length_avg + label: Avg gene length (bp) + - key: transcript_length_avg + label: Avg transcript length (bp) + - key: exon_length_avg + label: Avg exon length (bp) + - key: intron_length_avg + label: Avg intron length (bp) + - key: busco + label: BUSCO % + optional: true diff --git a/hugo/content/halloween/jacobus_lanternibus/assembly/index.md b/hugo/content/halloween/jacobus_lanternibus/assembly/index.md index d6db17cc..af456f47 100644 --- a/hugo/content/halloween/jacobus_lanternibus/assembly/index.md +++ b/hugo/content/halloween/jacobus_lanternibus/assembly/index.md @@ -4,8 +4,10 @@ layout: assembly params: assembly_fields: description: - - ["extra_1", "Additional field"] - - ["extra_2", "Another Additional field"] + - key: extra_1 + label: Additional field + - key: extra_2 + label: Another Additional field --- ### Methods diff --git a/hugo/layouts/partials/halloween/assembly_description.html b/hugo/layouts/partials/halloween/assembly_description.html index 2701100c..69f13877 100644 --- a/hugo/layouts/partials/halloween/assembly_description.html +++ b/hugo/layouts/partials/halloween/assembly_description.html @@ -3,12 +3,13 @@ {{ with $fields }}
    {{ range $fields }} - {{ $key := index . 0 }} - {{ $label := or (index . 1) (replace $key "_" " " | title ) }} - {{ with index $values $key }} + {{ $label := .label | default (replace .key "_" " " | title ) }} + {{ with index $values .key }}
  • {{ $label }}: {{ . }}
  • {{ else }} - {{ warnidf "missing-assembly-meta" "%s/assembly.yaml lacks key %s" $.path $key }} + {{ if not .optional }} + {{ warnidf "missing-assembly-meta" "%s/assembly.yaml: %s undefined" $.path .key }} + {{ end }} {{ end }} {{ end }}
diff --git a/hugo/layouts/partials/halloween/assembly_stats.html b/hugo/layouts/partials/halloween/assembly_stats.html index 07fd27bf..c2f7a8ea 100644 --- a/hugo/layouts/partials/halloween/assembly_stats.html +++ b/hugo/layouts/partials/halloween/assembly_stats.html @@ -12,15 +12,16 @@ {{ range $fields }} - {{ $key := index . 0 }} - {{ $label := or (index . 1) (replace $key "_" " " | title ) }} - {{ with index $values $key | string }} + {{ $label := .key | default (replace .key "_" " " | title ) }} + {{ with index $values .key | string }} {{ $label }} {{ . }} {{ else }} - {{ warnidf "missing-assembly-stat" "%s/assembly.yaml: %s undefined" $.path $key }} + {{ if not .optional }} + {{ warnidf "missing-assembly-stat" "%s/assembly.yaml: %s undefined" $.path .key }} + {{ end}} {{ end }} {{ end }} From 5e6a61b67f0b02a51ca12b129e9ac010d95cc267 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Mon, 18 Nov 2024 16:08:45 +0100 Subject: [PATCH 32/59] Inline taxonomic lineage in archetype --- hugo/archetypes/halloween/_index.md | 7 +++++-- hugo/layouts/partials/halloween/FetchTaxId.html | 3 +++ hugo/layouts/partials/halloween/LineageConfig | 3 +++ 3 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 hugo/layouts/partials/halloween/FetchTaxId.html create mode 100644 hugo/layouts/partials/halloween/LineageConfig diff --git a/hugo/archetypes/halloween/_index.md b/hugo/archetypes/halloween/_index.md index 7c27d0ca..ceac4226 100644 --- a/hugo/archetypes/halloween/_index.md +++ b/hugo/archetypes/halloween/_index.md @@ -1,7 +1,8 @@ +{{ $scientificName := replace .File.ContentBaseName `_` ` ` | title }} --- date: {{ .Date }} -title: '{{ replace .File.ContentBaseName `_` ` ` | title }}' -subtitle: Species common name +title: {{ $scientificName }} +subtitle: lastmod: {{ .Date }} resources: @@ -15,7 +16,9 @@ resources: layout: "species_intro" weight: 1 +{{ $taxId := partial "halloween/FetchTaxId" $scientificName }} params: + lineage: {{ partial "halloween/LineageConfig" $taxId }} banner_title: "Species overview" goat_webpage: "https://goat.genomehubs.org" diff --git a/hugo/layouts/partials/halloween/FetchTaxId.html b/hugo/layouts/partials/halloween/FetchTaxId.html new file mode 100644 index 00000000..8f30fca4 --- /dev/null +++ b/hugo/layouts/partials/halloween/FetchTaxId.html @@ -0,0 +1,3 @@ +{{ $url := replace . " " "%20" | printf "https://www.ebi.ac.uk/ena/taxonomy/rest/scientific-name/%s" }} +{{ $data := resources.GetRemote $url | transform.Unmarshal }} +{{ return index $data 0 "taxId" }} diff --git a/hugo/layouts/partials/halloween/LineageConfig b/hugo/layouts/partials/halloween/LineageConfig new file mode 100644 index 00000000..a4c82ad9 --- /dev/null +++ b/hugo/layouts/partials/halloween/LineageConfig @@ -0,0 +1,3 @@ +{{- $taxId := . -}} +{{- $taxonomy := resources.GetRemote (printf "https://www.ebi.ac.uk/ena/browser/api/xml/%s" $taxId) | transform.Unmarshal -}} +{{- partial "halloween/GetTaxonomyRanks" $taxonomy | encoding.Jsonify (dict "prefix" " " "indent" " ") -}} From 8a126530080c2d22c3574fa24a3313ebb435c9d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Tue, 19 Nov 2024 10:59:42 +0100 Subject: [PATCH 33/59] Add error handling to partials fetching ENA taxonomic information --- hugo/archetypes/halloween/_index.md | 3 +- .../archetypes/halloween/lineage.default.yaml | 35 +++++++++++++++++++ .../partials/halloween/FetchTaxId.html | 13 +++++-- hugo/layouts/partials/halloween/LineageConfig | 3 -- .../partials/halloween/LineageConfig.html | 10 ++++++ 5 files changed, 57 insertions(+), 7 deletions(-) create mode 100644 hugo/archetypes/halloween/lineage.default.yaml delete mode 100644 hugo/layouts/partials/halloween/LineageConfig create mode 100644 hugo/layouts/partials/halloween/LineageConfig.html diff --git a/hugo/archetypes/halloween/_index.md b/hugo/archetypes/halloween/_index.md index ceac4226..91e113ae 100644 --- a/hugo/archetypes/halloween/_index.md +++ b/hugo/archetypes/halloween/_index.md @@ -1,12 +1,11 @@ {{ $scientificName := replace .File.ContentBaseName `_` ` ` | title }} ---- date: {{ .Date }} title: {{ $scientificName }} subtitle: lastmod: {{ .Date }} resources: - - title: '{{ replace .File.ContentBaseName `_` ` ` | title }}' + - title: '{{ $scientificName }}' name: cover_image src: "placeholder.png" params: diff --git a/hugo/archetypes/halloween/lineage.default.yaml b/hugo/archetypes/halloween/lineage.default.yaml new file mode 100644 index 00000000..e70836a1 --- /dev/null +++ b/hugo/archetypes/halloween/lineage.default.yaml @@ -0,0 +1,35 @@ +# Example lineage configuration. +# This format is expeced by the .Params.lineage front matter key in `_index.md` +clade: + scientificName: Embryophyta + taxId: "3193" +class: + scientificName: Magnoliopsida + taxId: "3398" +family: + scientificName: Cucurbitaceae + taxId: "3650" +genus: + scientificName: Cucurbita + taxId: "3660" +kingdom: + scientificName: Viridiplantae + taxId: "33090" +order: + scientificName: Cucurbitales + taxId: "71239" +phylum: + scientificName: Streptophyta + taxId: "35493" +species: + scientificName: Cucurbita pepo + taxId: "3663" +subphylum: + scientificName: Streptophytina + taxId: "131221" +superkingdom: + scientificName: Eukaryota + taxId: "2759" +tribe: + scientificName: Cucurbiteae + taxId: "1003878" diff --git a/hugo/layouts/partials/halloween/FetchTaxId.html b/hugo/layouts/partials/halloween/FetchTaxId.html index 8f30fca4..0111ff42 100644 --- a/hugo/layouts/partials/halloween/FetchTaxId.html +++ b/hugo/layouts/partials/halloween/FetchTaxId.html @@ -1,3 +1,12 @@ {{ $url := replace . " " "%20" | printf "https://www.ebi.ac.uk/ena/taxonomy/rest/scientific-name/%s" }} -{{ $data := resources.GetRemote $url | transform.Unmarshal }} -{{ return index $data 0 "taxId" }} +{{ $taxId := "" }} +{{ with resources.GetRemote $url }} + {{ with .Err }} + {{ errorf "Error fetch ENA taxon ID for species %s: %s" $ . }} + {{ else }} + {{ $taxId = index (transform.Unmarshal .) 0 "taxId" }} + {{ return $taxId }} + {{ end }} +{{ else }} + {{ warnf "Could not find ENA taxon ID for species %s." $ }} +{{ end }} diff --git a/hugo/layouts/partials/halloween/LineageConfig b/hugo/layouts/partials/halloween/LineageConfig deleted file mode 100644 index a4c82ad9..00000000 --- a/hugo/layouts/partials/halloween/LineageConfig +++ /dev/null @@ -1,3 +0,0 @@ -{{- $taxId := . -}} -{{- $taxonomy := resources.GetRemote (printf "https://www.ebi.ac.uk/ena/browser/api/xml/%s" $taxId) | transform.Unmarshal -}} -{{- partial "halloween/GetTaxonomyRanks" $taxonomy | encoding.Jsonify (dict "prefix" " " "indent" " ") -}} diff --git a/hugo/layouts/partials/halloween/LineageConfig.html b/hugo/layouts/partials/halloween/LineageConfig.html new file mode 100644 index 00000000..c24f243e --- /dev/null +++ b/hugo/layouts/partials/halloween/LineageConfig.html @@ -0,0 +1,10 @@ +{{- $taxId := . -}} +{{- with resources.GetRemote (printf "https://www.ebi.ac.uk/ena/browser/api/xml/%s" $taxId) -}} + {{ with .Err }} + {{ errorf "Error fetching lineage of taxon %s: %s. Consider editing .Params.lineage" $taxId . }} + {{ else }} + {{- transform.Unmarshal . | partial "halloween/GetTaxonomyRanks" | jsonify (dict "prefix" " " "indent" " ") -}} + {{ end }} +{{- else -}} + {{ warnf "Missing lineage information. Consider editing .Params.lineage" $taxId . }} +{{- end -}} From ece065935306a5e776a8d4e6a0a83e22805cfc55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Tue, 19 Nov 2024 11:34:41 +0100 Subject: [PATCH 34/59] Restore dashing header --- hugo/archetypes/halloween/_index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/hugo/archetypes/halloween/_index.md b/hugo/archetypes/halloween/_index.md index 91e113ae..7144250e 100644 --- a/hugo/archetypes/halloween/_index.md +++ b/hugo/archetypes/halloween/_index.md @@ -1,4 +1,5 @@ {{ $scientificName := replace .File.ContentBaseName `_` ` ` | title }} +--- date: {{ .Date }} title: {{ $scientificName }} subtitle: From b3246938866e6a95b46a2dedd9b9d69d1a289969 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Tue, 19 Nov 2024 11:35:51 +0100 Subject: [PATCH 35/59] Define lineage fields in site parameters --- hugo/config/_default/params.yaml | 12 +++++++ hugo/layouts/halloween/species_intro.html | 8 ++--- hugo/layouts/partials/halloween/lineage.html | 34 ++++++-------------- 3 files changed, 24 insertions(+), 30 deletions(-) diff --git a/hugo/config/_default/params.yaml b/hugo/config/_default/params.yaml index 0a25fd5f..5b70b839 100644 --- a/hugo/config/_default/params.yaml +++ b/hugo/config/_default/params.yaml @@ -52,3 +52,15 @@ assembly_fields: - key: busco label: BUSCO % optional: true +taxonomy_ranks: + - key: "superkingdom" + label: "Domain" + - key: "kingdom" + - key: "phylum" + - key: "class" + - key: "order" + - key: "family" + - key: "genus" + format: "%s" + - key: "species" + format: "%s" diff --git a/hugo/layouts/halloween/species_intro.html b/hugo/layouts/halloween/species_intro.html index 416fd246..de557673 100644 --- a/hugo/layouts/halloween/species_intro.html +++ b/hugo/layouts/halloween/species_intro.html @@ -57,12 +57,10 @@

Taxonomy

- {{ with .Resources.Get "taxonomy.xml" | transform.Unmarshal }} - {{ with partial "halloween/GetTaxonomyRanks.html" . }} - {{ partial "halloween/lineage.html" . }} - {{ end }} + {{ with .Params.lineage }} + {{ partial "halloween/lineage.html" . }} {{ else }} - {{ errorf "Missing taxonomy file: %s/taxonomy.json" $.Path }} + {{ warnidf "missing-taxonomy" "Missing taxonmomy lineage for %s" $.Path }} {{ end }}
diff --git a/hugo/layouts/partials/halloween/lineage.html b/hugo/layouts/partials/halloween/lineage.html index 3423da6b..cb578a77 100644 --- a/hugo/layouts/partials/halloween/lineage.html +++ b/hugo/layouts/partials/halloween/lineage.html @@ -1,40 +1,24 @@ {{ $ena_url := "https://www.ebi.ac.uk/ena/browser/view/Taxon:" }} {{ $ncbi_url := "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=" }} - -{{ $order := slice -"superkingdom" -"kingdom" -"phylum" -"class" -"order" -"family" -"genus" -"species" -}} - -{{/* Ranks that need special labels */}} -{{ $labels := dict "superkingdom" "Domain"}} - -{{/* Ranks that need special name formatting */}} -{{ $fmt := dict "genus" "%s" "species" "%s" }} - -{{ range $order }} - {{ $rank := . }} +{{ range site.Params.taxonomy_ranks }} + {{ $rank := .key }} + {{/* Uppercased rank or custom label */}} + {{ $label := .label | default $rank | strings.FirstUpper }} + {{/* Optional formatting for the scientific name */}} + {{ $fmt := .format | default "%s" }} {{ with index $ $rank }}
- {{/* Uppercased rank or custom label */}} - {{ or (index $labels $rank) $rank | strings.FirstUpper }}: + {{ $label }}: - {{/* Scientific name with optional formatting */}} - {{ printf (or (index $fmt $rank) "%s") .scientificName | safe.HTML }} + {{ printf $fmt .scientificName | safe.HTML }}
{{ else }} - {{ warnf "Missing lineage entry %s for %s" . $.species.scientificName }} + {{ warnf "Missing lineage entry %s for %s" $rank $.species.scientificName }} {{ end }} {{ end }}
From 9fbd5205aefbd5951adf5fc70497ddf551b38135 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Tue, 19 Nov 2024 11:36:11 +0100 Subject: [PATCH 36/59] Remove taxonomy.xml --- hugo/archetypes/halloween/taxonomy.xml | 36 --------------- .../halloween/jacobus_lanternibus/_index.md | 46 +++++++++++++++++++ .../jacobus_lanternibus/taxonomy.xml | 36 --------------- 3 files changed, 46 insertions(+), 72 deletions(-) delete mode 100644 hugo/archetypes/halloween/taxonomy.xml delete mode 100644 hugo/content/halloween/jacobus_lanternibus/taxonomy.xml diff --git a/hugo/archetypes/halloween/taxonomy.xml b/hugo/archetypes/halloween/taxonomy.xml deleted file mode 100644 index 3a5d0b2f..00000000 --- a/hugo/archetypes/halloween/taxonomy.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - diff --git a/hugo/content/halloween/jacobus_lanternibus/_index.md b/hugo/content/halloween/jacobus_lanternibus/_index.md index 2ad0c6e9..da84d50f 100644 --- a/hugo/content/halloween/jacobus_lanternibus/_index.md +++ b/hugo/content/halloween/jacobus_lanternibus/_index.md @@ -15,6 +15,52 @@ layout: "species_intro" weight: 1 params: + lineage: { + "clade": { + "scientificName": "Embryophyta", + "taxId": "3193" + }, + "class": { + "scientificName": "Magnoliopsida", + "taxId": "3398" + }, + "family": { + "scientificName": "Cucurbitaceae", + "taxId": "3650" + }, + "genus": { + "scientificName": "Cucurbita", + "taxId": "3660" + }, + "kingdom": { + "scientificName": "Viridiplantae", + "taxId": "33090" + }, + "order": { + "scientificName": "Cucurbitales", + "taxId": "71239" + }, + "phylum": { + "scientificName": "Streptophyta", + "taxId": "35493" + }, + "species": { + "scientificName": "Cucurbita pepo", + "taxId": "3663" + }, + "subphylum": { + "scientificName": "Streptophytina", + "taxId": "131221" + }, + "superkingdom": { + "scientificName": "Eukaryota", + "taxId": "2759" + }, + "tribe": { + "scientificName": "Cucurbiteae", + "taxId": "1003878" + } + } banner_title: "Halloween species overview" gbif_taxon_id: 2874508 goat_webpage: "https://goat.genomehubs.org/record?recordId=213953&result=taxon&taxonomy=ncbi#Parnassius%20mnemosyne" diff --git a/hugo/content/halloween/jacobus_lanternibus/taxonomy.xml b/hugo/content/halloween/jacobus_lanternibus/taxonomy.xml deleted file mode 100644 index ed33ef9d..00000000 --- a/hugo/content/halloween/jacobus_lanternibus/taxonomy.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - \ No newline at end of file From 2a4b49b9f6ef2d1a899bd97c82cb912a6a814993 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Wed, 20 Nov 2024 10:34:27 +0100 Subject: [PATCH 37/59] Introduce helper partial to fetch remote data --- .../partials/halloween/FetchTaxId.html | 13 ++++------ .../partials/halloween/LineageConfig.html | 9 +++---- .../partials/halloween/get-remote-data.html | 25 +++++++++++++++++++ 3 files changed, 33 insertions(+), 14 deletions(-) create mode 100644 hugo/layouts/partials/halloween/get-remote-data.html diff --git a/hugo/layouts/partials/halloween/FetchTaxId.html b/hugo/layouts/partials/halloween/FetchTaxId.html index 0111ff42..f3af2240 100644 --- a/hugo/layouts/partials/halloween/FetchTaxId.html +++ b/hugo/layouts/partials/halloween/FetchTaxId.html @@ -1,12 +1,9 @@ {{ $url := replace . " " "%20" | printf "https://www.ebi.ac.uk/ena/taxonomy/rest/scientific-name/%s" }} +{{ $data := partial "halloween/get-remote-data.html" $url }} {{ $taxId := "" }} -{{ with resources.GetRemote $url }} - {{ with .Err }} - {{ errorf "Error fetch ENA taxon ID for species %s: %s" $ . }} - {{ else }} - {{ $taxId = index (transform.Unmarshal .) 0 "taxId" }} - {{ return $taxId }} - {{ end }} +{{ with index $data 0 "taxId" }} + {{ $taxId = . }} {{ else }} - {{ warnf "Could not find ENA taxon ID for species %s." $ }} + {{ warnf "Could not find ENA taxon ID for species: %s" $ }} {{ end }} +{{ return $taxId }} diff --git a/hugo/layouts/partials/halloween/LineageConfig.html b/hugo/layouts/partials/halloween/LineageConfig.html index c24f243e..5a6489bb 100644 --- a/hugo/layouts/partials/halloween/LineageConfig.html +++ b/hugo/layouts/partials/halloween/LineageConfig.html @@ -1,10 +1,7 @@ {{- $taxId := . -}} -{{- with resources.GetRemote (printf "https://www.ebi.ac.uk/ena/browser/api/xml/%s" $taxId) -}} - {{ with .Err }} - {{ errorf "Error fetching lineage of taxon %s: %s. Consider editing .Params.lineage" $taxId . }} - {{ else }} - {{- transform.Unmarshal . | partial "halloween/GetTaxonomyRanks" | jsonify (dict "prefix" " " "indent" " ") -}} - {{ end }} +{{- $url := printf "https://www.ebi.ac.uk/ena/browser/api/xml/%s" $taxId -}} +{{- with partial "halloween/get-remote-data.html" $url -}} + {{ . | partial "halloween/GetTaxonomyRanks" | jsonify (dict "prefix" " " "indent" " ") }} {{- else -}} {{ warnf "Missing lineage information. Consider editing .Params.lineage" $taxId . }} {{- end -}} diff --git a/hugo/layouts/partials/halloween/get-remote-data.html b/hugo/layouts/partials/halloween/get-remote-data.html new file mode 100644 index 00000000..6061e97c --- /dev/null +++ b/hugo/layouts/partials/halloween/get-remote-data.html @@ -0,0 +1,25 @@ +{{/* +Copied from: https://github.com/gohugoio/gohugoioTheme/layouts/partials/utilities/get-remote-data.html + +Parses the serialized data from the given URL and returns a map or an array. + +Supports CSV, JSON, TOML, YAML, and XML. + +@param {string} . The URL from which to retrieve the serialized data. +@returns {any} + +@example {{ partial "get-remote-data.html" "https://example.org/foo.json" }} +*/}} + +{{ $url := . }} +{{ $data := dict }} +{{ with resources.GetRemote $url }} + {{ with .Err }} + {{ errorf "%s" . }} + {{ else }} + {{ $data = .Content | transform.Unmarshal }} + {{ end }} +{{ else }} + {{ errorf "Unable to get remote resource %q" $url }} +{{ end }} +{{ return $data }} From 66da5a8ab60324268ce2cb632fae9040375ebeb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Wed, 20 Nov 2024 10:34:55 +0100 Subject: [PATCH 38/59] Uppercase only firts letter of scientific name --- hugo/archetypes/halloween/_index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hugo/archetypes/halloween/_index.md b/hugo/archetypes/halloween/_index.md index 7144250e..a241dcd0 100644 --- a/hugo/archetypes/halloween/_index.md +++ b/hugo/archetypes/halloween/_index.md @@ -1,4 +1,4 @@ -{{ $scientificName := replace .File.ContentBaseName `_` ` ` | title }} +{{ $scientificName := replace .File.ContentBaseName `_` ` ` | strings.FirstUpper }} --- date: {{ .Date }} title: {{ $scientificName }} From 34ad61f40c24700de9051705f6e5ffb7e104442d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Wed, 20 Nov 2024 11:16:14 +0100 Subject: [PATCH 39/59] Allow to define taxonomic ranks at species level --- hugo/archetypes/halloween/_index.md | 5 ++++- hugo/layouts/halloween/species_intro.html | 9 +++++++-- hugo/layouts/partials/halloween/LineageConfig.html | 2 +- hugo/layouts/partials/halloween/lineage.html | 13 ++++++++----- 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/hugo/archetypes/halloween/_index.md b/hugo/archetypes/halloween/_index.md index a241dcd0..93f69e6e 100644 --- a/hugo/archetypes/halloween/_index.md +++ b/hugo/archetypes/halloween/_index.md @@ -17,8 +17,11 @@ layout: "species_intro" weight: 1 {{ $taxId := partial "halloween/FetchTaxId" $scientificName }} +lineage: {{ partial "halloween/LineageConfig" $taxId }} +# Use this setting to override the default taxonomy ranks to display. +# See config/_default/params.yaml for the syntax to use. +taxonomy_ranks: params: - lineage: {{ partial "halloween/LineageConfig" $taxId }} banner_title: "Species overview" goat_webpage: "https://goat.genomehubs.org" diff --git a/hugo/layouts/halloween/species_intro.html b/hugo/layouts/halloween/species_intro.html index de557673..a77224b9 100644 --- a/hugo/layouts/halloween/species_intro.html +++ b/hugo/layouts/halloween/species_intro.html @@ -58,9 +58,14 @@

Taxonomy

{{ with .Params.lineage }} - {{ partial "halloween/lineage.html" . }} + {{ $context := dict + "path" $.Path + "lineage" . + "taxonomy_ranks" (or $.Page.Params.taxonomy_ranks $.Site.Params.taxonomy_ranks) + }} + {{ partial "halloween/lineage.html" $context }} {{ else }} - {{ warnidf "missing-taxonomy" "Missing taxonmomy lineage for %s" $.Path }} + {{ warnidf "missing-taxonomy" "Missing taxonmomy lineage for %s" .Path }} {{ end }}
diff --git a/hugo/layouts/partials/halloween/LineageConfig.html b/hugo/layouts/partials/halloween/LineageConfig.html index 5a6489bb..2f7da22a 100644 --- a/hugo/layouts/partials/halloween/LineageConfig.html +++ b/hugo/layouts/partials/halloween/LineageConfig.html @@ -1,7 +1,7 @@ {{- $taxId := . -}} {{- $url := printf "https://www.ebi.ac.uk/ena/browser/api/xml/%s" $taxId -}} {{- with partial "halloween/get-remote-data.html" $url -}} - {{ . | partial "halloween/GetTaxonomyRanks" | jsonify (dict "prefix" " " "indent" " ") }} + {{ . | partial "halloween/GetTaxonomyRanks" | jsonify (dict "prefix" " " "indent" " ") }} {{- else -}} {{ warnf "Missing lineage information. Consider editing .Params.lineage" $taxId . }} {{- end -}} diff --git a/hugo/layouts/partials/halloween/lineage.html b/hugo/layouts/partials/halloween/lineage.html index cb578a77..8d85615b 100644 --- a/hugo/layouts/partials/halloween/lineage.html +++ b/hugo/layouts/partials/halloween/lineage.html @@ -1,12 +1,15 @@ +{{ $path := .path }} +{{ $lineage := .lineage }} +{{ $ranks := .taxonomy_ranks }} {{ $ena_url := "https://www.ebi.ac.uk/ena/browser/view/Taxon:" }} {{ $ncbi_url := "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=" }} -{{ range site.Params.taxonomy_ranks }} +{{ range $ranks }} {{ $rank := .key }} {{/* Uppercased rank or custom label */}} {{ $label := .label | default $rank | strings.FirstUpper }} {{/* Optional formatting for the scientific name */}} {{ $fmt := .format | default "%s" }} - {{ with index $ $rank }} + {{ with index $lineage $rank }}
{{ $label }}: @@ -18,14 +21,14 @@
{{ else }} - {{ warnf "Missing lineage entry %s for %s" $rank $.species.scientificName }} + {{ warnf "%s: missing lineage entry %s" $path $rank }} {{ end }} {{ end }} From fb74f20f535b142a8a2009f9cab41df064c3e030 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Wed, 20 Nov 2024 11:41:16 +0100 Subject: [PATCH 40/59] GBIF usage key and Goat link support --- hugo/archetypes/halloween/_index.md | 11 +++++++---- hugo/layouts/partials/halloween/GetGbifKey.html | 9 +++++++++ .../halloween/{FetchTaxId.html => GetTaxId.html} | 0 hugo/layouts/partials/halloween/LineageConfig.html | 2 +- .../{GetTaxonomyRanks.html => TaxonomyRanks.html} | 0 5 files changed, 17 insertions(+), 5 deletions(-) create mode 100644 hugo/layouts/partials/halloween/GetGbifKey.html rename hugo/layouts/partials/halloween/{FetchTaxId.html => GetTaxId.html} (100%) rename hugo/layouts/partials/halloween/{GetTaxonomyRanks.html => TaxonomyRanks.html} (100%) diff --git a/hugo/archetypes/halloween/_index.md b/hugo/archetypes/halloween/_index.md index 93f69e6e..4b419286 100644 --- a/hugo/archetypes/halloween/_index.md +++ b/hugo/archetypes/halloween/_index.md @@ -1,4 +1,4 @@ -{{ $scientificName := replace .File.ContentBaseName `_` ` ` | strings.FirstUpper }} +{{- $scientificName := replace .File.ContentBaseName `_` ` ` | strings.FirstUpper -}} --- date: {{ .Date }} title: {{ $scientificName }} @@ -16,17 +16,20 @@ resources: layout: "species_intro" weight: 1 -{{ $taxId := partial "halloween/FetchTaxId" $scientificName }} +{{ $taxId := partial "halloween/GetTaxId" $scientificName }} lineage: {{ partial "halloween/LineageConfig" $taxId }} # Use this setting to override the default taxonomy ranks to display. # See config/_default/params.yaml for the syntax to use. taxonomy_ranks: params: banner_title: "Species overview" - goat_webpage: "https://goat.genomehubs.org" + goat_webpage: "{{ printf + "https://goat.genomehubs.org/record?recordId=%s&result=taxon&taxonomy=ncbi" + $taxId + }}" # Map - gbif_taxon_id: 2874508 + gbif_taxon_id: {{ partial "halloween/GetGbifKey.html" $scientificName }} latitude: 60 longitude: -40 initialZoom: 1.5 diff --git a/hugo/layouts/partials/halloween/GetGbifKey.html b/hugo/layouts/partials/halloween/GetGbifKey.html new file mode 100644 index 00000000..3cafd5c5 --- /dev/null +++ b/hugo/layouts/partials/halloween/GetGbifKey.html @@ -0,0 +1,9 @@ +{{ $url := replace . " " "%20" | lower | printf "https://api.gbif.org/v1/species/match?name=%s" }} +{{ $data := partial "halloween/get-remote-data.html" $url }} +{{ $key := "" }} +{{ with $data.usageKey | string }} + {{ $key = . }} +{{ else }} + {{ warnf "%s: could not find GBIF taxon key" $ }} +{{ end }} +{{ return $key }} diff --git a/hugo/layouts/partials/halloween/FetchTaxId.html b/hugo/layouts/partials/halloween/GetTaxId.html similarity index 100% rename from hugo/layouts/partials/halloween/FetchTaxId.html rename to hugo/layouts/partials/halloween/GetTaxId.html diff --git a/hugo/layouts/partials/halloween/LineageConfig.html b/hugo/layouts/partials/halloween/LineageConfig.html index 2f7da22a..cdf88d48 100644 --- a/hugo/layouts/partials/halloween/LineageConfig.html +++ b/hugo/layouts/partials/halloween/LineageConfig.html @@ -1,7 +1,7 @@ {{- $taxId := . -}} {{- $url := printf "https://www.ebi.ac.uk/ena/browser/api/xml/%s" $taxId -}} {{- with partial "halloween/get-remote-data.html" $url -}} - {{ . | partial "halloween/GetTaxonomyRanks" | jsonify (dict "prefix" " " "indent" " ") }} + {{ . | partial "halloween/TaxonomyRanks" | jsonify (dict "prefix" " " "indent" " ") }} {{- else -}} {{ warnf "Missing lineage information. Consider editing .Params.lineage" $taxId . }} {{- end -}} diff --git a/hugo/layouts/partials/halloween/GetTaxonomyRanks.html b/hugo/layouts/partials/halloween/TaxonomyRanks.html similarity index 100% rename from hugo/layouts/partials/halloween/GetTaxonomyRanks.html rename to hugo/layouts/partials/halloween/TaxonomyRanks.html From 4d0732e3b2f4b65a2f0d9764fc1abbed5bcd687b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Wed, 20 Nov 2024 11:44:25 +0100 Subject: [PATCH 41/59] Cleanup archetype content --- .../halloween/assembly/assembly.yaml | 10 ++++---- hugo/archetypes/halloween/assembly/contrib.md | 8 ------- hugo/archetypes/halloween/assembly/stats.yaml | 24 ------------------- 3 files changed, 5 insertions(+), 37 deletions(-) delete mode 100644 hugo/archetypes/halloween/assembly/stats.yaml diff --git a/hugo/archetypes/halloween/assembly/assembly.yaml b/hugo/archetypes/halloween/assembly/assembly.yaml index 27999d94..c438d3e1 100644 --- a/hugo/archetypes/halloween/assembly/assembly.yaml +++ b/hugo/archetypes/halloween/assembly/assembly.yaml @@ -1,9 +1,9 @@ description: - name: "Jaco_Lant" - type: "Spectroid" - level: "Underwordly" - repr: "Partially obscure" - accession: "GCA_666" + name: + type: + level: + repr: + accession: stats: length: gc: diff --git a/hugo/archetypes/halloween/assembly/contrib.md b/hugo/archetypes/halloween/assembly/contrib.md index 0f19ad6c..97e53c71 100644 --- a/hugo/archetypes/halloween/assembly/contrib.md +++ b/hugo/archetypes/halloween/assembly/contrib.md @@ -7,16 +7,8 @@ build: ### Contributor(s) -Restless souls. - ### Publication(s) -- [How far will a pumpkin fly -?](https://www.nbcnews.com/id/wbna21197135) -- [The great pumpkin](https://www.smithsonianmag.com/science-nature/the-great-pumpkin-74423844/?no-ist=&page=1) - ### Funding -Mephisto Pact Treasury Foundation - ### Acknowledgements diff --git a/hugo/archetypes/halloween/assembly/stats.yaml b/hugo/archetypes/halloween/assembly/stats.yaml deleted file mode 100644 index 0b6aa3d3..00000000 --- a/hugo/archetypes/halloween/assembly/stats.yaml +++ /dev/null @@ -1,24 +0,0 @@ -assembly: - - "Assembly length (Mbp)": [EDIT] - - "GC %": [EDIT] - - "Contig #": [EDIT] - - "Contig N50 (Mbp)": [EDIT] - - "Contig L50": [EDIT] - - "Contig N90 (Mbp)": [EDIT] - - "Contig L90": [EDIT] - - "Scaffold #": [EDIT] - - "Scaffold N50 (Mbp)": [EDIT] - - "Scaffold L50": [EDIT] - - "Scaffold N90 (Mbp)": [EDIT] - - "Scaffold L90": [EDIT] - - "Scaffolds >= 10 kb": [EDIT] - - "BUSCO % [EDIT]": "[EDIT]" - -annotation: - - "Gene #": [EDIT] - - "Transcript #": [EDIT] - - "Avg exons per transcript": [EDIT] - - "Avg gene length (bp)": [EDIT] - - "Avg transcript length (bp)": [EDIT] - - "Avg exon length (bp)": [EDIT] - - "Avg intron length (bp)": [EDIT] From 9a2810c0d8e0cf995258c830ba41d90c56fd1951 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Wed, 20 Nov 2024 15:04:53 +0100 Subject: [PATCH 42/59] Fix default map coordinates --- hugo/archetypes/halloween/_index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hugo/archetypes/halloween/_index.md b/hugo/archetypes/halloween/_index.md index 4b419286..40eaead7 100644 --- a/hugo/archetypes/halloween/_index.md +++ b/hugo/archetypes/halloween/_index.md @@ -30,9 +30,9 @@ params: # Map gbif_taxon_id: {{ partial "halloween/GetGbifKey.html" $scientificName }} - latitude: 60 - longitude: -40 - initialZoom: 1.5 + latitude: 0 + longitude: 0 + initialZoom: 1 # Optional iucn_category: From c1cde56d9ed75b9a15edf6c00f227ea9ee2656f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Wed, 20 Nov 2024 15:05:30 +0100 Subject: [PATCH 43/59] Use simple quotes to appease syntax highlighter --- hugo/archetypes/halloween/_index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hugo/archetypes/halloween/_index.md b/hugo/archetypes/halloween/_index.md index 40eaead7..fadccc67 100644 --- a/hugo/archetypes/halloween/_index.md +++ b/hugo/archetypes/halloween/_index.md @@ -24,7 +24,7 @@ taxonomy_ranks: params: banner_title: "Species overview" goat_webpage: "{{ printf - "https://goat.genomehubs.org/record?recordId=%s&result=taxon&taxonomy=ncbi" + 'https://goat.genomehubs.org/record?recordId=%s&result=taxon&taxonomy=ncbi' $taxId }}" From 460248924cb9dfdabbbf17146fc0043dbf9d6ebb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Wed, 20 Nov 2024 15:06:01 +0100 Subject: [PATCH 44/59] Remove unnecessary intro bundle --- hugo/archetypes/halloween/intro/index.md | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 hugo/archetypes/halloween/intro/index.md diff --git a/hugo/archetypes/halloween/intro/index.md b/hugo/archetypes/halloween/intro/index.md deleted file mode 100644 index ca03031f..00000000 --- a/hugo/archetypes/halloween/intro/index.md +++ /dev/null @@ -1,3 +0,0 @@ ---- -headless: true ---- From 53efb4371d8d35334765f90981d51800b2d91c82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Wed, 20 Nov 2024 15:09:44 +0100 Subject: [PATCH 45/59] fixup! Use simple quotes to appease syntax highlighter --- hugo/archetypes/halloween/_index.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/hugo/archetypes/halloween/_index.md b/hugo/archetypes/halloween/_index.md index fadccc67..b8655807 100644 --- a/hugo/archetypes/halloween/_index.md +++ b/hugo/archetypes/halloween/_index.md @@ -23,10 +23,10 @@ lineage: {{ partial "halloween/LineageConfig" $taxId }} taxonomy_ranks: params: banner_title: "Species overview" - goat_webpage: "{{ printf - 'https://goat.genomehubs.org/record?recordId=%s&result=taxon&taxonomy=ncbi' + goat_webpage: '{{ printf + "https://goat.genomehubs.org/record?recordId=%s&result=taxon&taxonomy=ncbi" $taxId - }}" + }}' # Map gbif_taxon_id: {{ partial "halloween/GetGbifKey.html" $scientificName }} @@ -43,12 +43,10 @@ params: ### Description -Write some content here in markdown for the introduction tab of the species page. - #### Genome reference #### References #### Changelog -- 31/10/2024 - Species first published on the Portal +- {{ .Date | time.Format "31/10/2024" }} - Species first published on the Portal From d41ab0febcde86aa2a3e87ff31b7055a7df7adda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Wed, 20 Nov 2024 15:41:15 +0100 Subject: [PATCH 46/59] Use medium date format to avoid ambiguities --- hugo/archetypes/halloween/_index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hugo/archetypes/halloween/_index.md b/hugo/archetypes/halloween/_index.md index b8655807..104fc84c 100644 --- a/hugo/archetypes/halloween/_index.md +++ b/hugo/archetypes/halloween/_index.md @@ -49,4 +49,4 @@ params: #### Changelog -- {{ .Date | time.Format "31/10/2024" }} - Species first published on the Portal +- {{ .Date | time.Format ":date_medium" }} - Species first published on the Portal From 87147eca906d570604fc259a19d6025146dfccc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Wed, 20 Nov 2024 16:03:08 +0100 Subject: [PATCH 47/59] Introduce `species_bundle` namespace (formerly `halloween`) --- .../{halloween => species}/_index.md | 8 +- .../assembly/assembly.yaml | 0 .../assembly/contrib.md | 0 .../{halloween => species}/assembly/index.md | 2 +- .../download/data_tracks.json | 0 .../{halloween => species}/download/index.md | 2 +- .../lineage.default.yaml | 0 .../{halloween => species}/placeholder.png | Bin .../halloween/jacobus_lanternibus/_index.md | 86 ------ .../assembly/assembly.yaml | 31 -- .../jacobus_lanternibus/assembly/contrib.md | 22 -- .../jacobus_lanternibus/assembly/index.md | 13 - .../jacobus_lanternibus/assembly/stats.yaml | 24 -- .../download/data_tracks.json | 268 ------------------ .../jacobus_lanternibus/download/index.md | 6 - .../jacobus_lanternibus/intro/index.md | 3 - .../halloween/jacobus_lanternibus/pumpkin.jpg | Bin 29752 -> 0 bytes .../GetGbifKey.html | 2 +- .../GetTaxId.html | 2 +- .../LineageConfig.html | 4 +- .../TaxonomyRanks.html | 0 .../assembly_description.html | 0 .../assembly_stats.html | 0 .../download_table.html | 0 .../get-remote-data.html | 0 .../lineage.html | 0 .../assembly.html | 6 +- .../{halloween => species_bundle}/baseof.html | 0 .../browser.html | 0 .../species_download.html | 4 +- .../species_intro.html | 2 +- 31 files changed, 16 insertions(+), 469 deletions(-) rename hugo/archetypes/{halloween => species}/_index.md (79%) rename hugo/archetypes/{halloween => species}/assembly/assembly.yaml (100%) rename hugo/archetypes/{halloween => species}/assembly/contrib.md (100%) rename hugo/archetypes/{halloween => species}/assembly/index.md (57%) rename hugo/archetypes/{halloween => species}/download/data_tracks.json (100%) rename hugo/archetypes/{halloween => species}/download/index.md (63%) rename hugo/archetypes/{halloween => species}/lineage.default.yaml (100%) rename hugo/archetypes/{halloween => species}/placeholder.png (100%) delete mode 100644 hugo/content/halloween/jacobus_lanternibus/_index.md delete mode 100644 hugo/content/halloween/jacobus_lanternibus/assembly/assembly.yaml delete mode 100644 hugo/content/halloween/jacobus_lanternibus/assembly/contrib.md delete mode 100644 hugo/content/halloween/jacobus_lanternibus/assembly/index.md delete mode 100644 hugo/content/halloween/jacobus_lanternibus/assembly/stats.yaml delete mode 100644 hugo/content/halloween/jacobus_lanternibus/download/data_tracks.json delete mode 100644 hugo/content/halloween/jacobus_lanternibus/download/index.md delete mode 100644 hugo/content/halloween/jacobus_lanternibus/intro/index.md delete mode 100644 hugo/content/halloween/jacobus_lanternibus/pumpkin.jpg rename hugo/layouts/partials/{halloween => species_bundle}/GetGbifKey.html (80%) rename hugo/layouts/partials/{halloween => species_bundle}/GetTaxId.html (81%) rename hugo/layouts/partials/{halloween => species_bundle}/LineageConfig.html (56%) rename hugo/layouts/partials/{halloween => species_bundle}/TaxonomyRanks.html (100%) rename hugo/layouts/partials/{halloween => species_bundle}/assembly_description.html (100%) rename hugo/layouts/partials/{halloween => species_bundle}/assembly_stats.html (100%) rename hugo/layouts/partials/{halloween => species_bundle}/download_table.html (100%) rename hugo/layouts/partials/{halloween => species_bundle}/get-remote-data.html (100%) rename hugo/layouts/partials/{halloween => species_bundle}/lineage.html (100%) rename hugo/layouts/{halloween => species_bundle}/assembly.html (91%) rename hugo/layouts/{halloween => species_bundle}/baseof.html (100%) rename hugo/layouts/{halloween => species_bundle}/browser.html (100%) rename hugo/layouts/{halloween => species_bundle}/species_download.html (90%) rename hugo/layouts/{halloween => species_bundle}/species_intro.html (98%) diff --git a/hugo/archetypes/halloween/_index.md b/hugo/archetypes/species/_index.md similarity index 79% rename from hugo/archetypes/halloween/_index.md rename to hugo/archetypes/species/_index.md index 104fc84c..2793466e 100644 --- a/hugo/archetypes/halloween/_index.md +++ b/hugo/archetypes/species/_index.md @@ -13,11 +13,11 @@ resources: attribution: CC-BY-SA link: "https://placehold.co/600x400/png" -layout: "species_intro" +layout: "species_bundle/species_intro" weight: 1 -{{ $taxId := partial "halloween/GetTaxId" $scientificName }} -lineage: {{ partial "halloween/LineageConfig" $taxId }} +{{ $taxId := partial "species_bundle/GetTaxId" $scientificName }} +lineage: {{ partial "species_bundle/LineageConfig" $taxId }} # Use this setting to override the default taxonomy ranks to display. # See config/_default/params.yaml for the syntax to use. taxonomy_ranks: @@ -29,7 +29,7 @@ params: }}' # Map - gbif_taxon_id: {{ partial "halloween/GetGbifKey.html" $scientificName }} + gbif_taxon_id: {{ partial "species_bundle/GetGbifKey.html" $scientificName }} latitude: 0 longitude: 0 initialZoom: 1 diff --git a/hugo/archetypes/halloween/assembly/assembly.yaml b/hugo/archetypes/species/assembly/assembly.yaml similarity index 100% rename from hugo/archetypes/halloween/assembly/assembly.yaml rename to hugo/archetypes/species/assembly/assembly.yaml diff --git a/hugo/archetypes/halloween/assembly/contrib.md b/hugo/archetypes/species/assembly/contrib.md similarity index 100% rename from hugo/archetypes/halloween/assembly/contrib.md rename to hugo/archetypes/species/assembly/contrib.md diff --git a/hugo/archetypes/halloween/assembly/index.md b/hugo/archetypes/species/assembly/index.md similarity index 57% rename from hugo/archetypes/halloween/assembly/index.md rename to hugo/archetypes/species/assembly/index.md index 59c22e0a..b53f4aef 100644 --- a/hugo/archetypes/halloween/assembly/index.md +++ b/hugo/archetypes/species/assembly/index.md @@ -1,6 +1,6 @@ --- title: "Genome assembly" -layout: assembly +layout: "species_bundle/assembly" --- ### Methods diff --git a/hugo/archetypes/halloween/download/data_tracks.json b/hugo/archetypes/species/download/data_tracks.json similarity index 100% rename from hugo/archetypes/halloween/download/data_tracks.json rename to hugo/archetypes/species/download/data_tracks.json diff --git a/hugo/archetypes/halloween/download/index.md b/hugo/archetypes/species/download/index.md similarity index 63% rename from hugo/archetypes/halloween/download/index.md rename to hugo/archetypes/species/download/index.md index 26e08224..1c41de67 100644 --- a/hugo/archetypes/halloween/download/index.md +++ b/hugo/archetypes/species/download/index.md @@ -1,6 +1,6 @@ --- title: "Download" -layout: "species_download" +layout: "species_bundle/species_download" url: "jacobus_lanternibus/download" weight: 3 --- diff --git a/hugo/archetypes/halloween/lineage.default.yaml b/hugo/archetypes/species/lineage.default.yaml similarity index 100% rename from hugo/archetypes/halloween/lineage.default.yaml rename to hugo/archetypes/species/lineage.default.yaml diff --git a/hugo/archetypes/halloween/placeholder.png b/hugo/archetypes/species/placeholder.png similarity index 100% rename from hugo/archetypes/halloween/placeholder.png rename to hugo/archetypes/species/placeholder.png diff --git a/hugo/content/halloween/jacobus_lanternibus/_index.md b/hugo/content/halloween/jacobus_lanternibus/_index.md deleted file mode 100644 index da84d50f..00000000 --- a/hugo/content/halloween/jacobus_lanternibus/_index.md +++ /dev/null @@ -1,86 +0,0 @@ ---- -title: Jacobus Lanternibus -subtitle: "Jack-o'-lantern" -lastmod: 2024-10-26T10:00:00+0200 - -resources: - - title: Fiery pumpkin - name: cover_image - src: pumpkin.jpg - params: - attribution: pandemonic domain, CC BY-SA-TA-N - link: https://commons.wikimedia.org/wiki/File:Pumpkin2007.jpg - -layout: "species_intro" -weight: 1 - -params: - lineage: { - "clade": { - "scientificName": "Embryophyta", - "taxId": "3193" - }, - "class": { - "scientificName": "Magnoliopsida", - "taxId": "3398" - }, - "family": { - "scientificName": "Cucurbitaceae", - "taxId": "3650" - }, - "genus": { - "scientificName": "Cucurbita", - "taxId": "3660" - }, - "kingdom": { - "scientificName": "Viridiplantae", - "taxId": "33090" - }, - "order": { - "scientificName": "Cucurbitales", - "taxId": "71239" - }, - "phylum": { - "scientificName": "Streptophyta", - "taxId": "35493" - }, - "species": { - "scientificName": "Cucurbita pepo", - "taxId": "3663" - }, - "subphylum": { - "scientificName": "Streptophytina", - "taxId": "131221" - }, - "superkingdom": { - "scientificName": "Eukaryota", - "taxId": "2759" - }, - "tribe": { - "scientificName": "Cucurbiteae", - "taxId": "1003878" - } - } - banner_title: "Halloween species overview" - gbif_taxon_id: 2874508 - goat_webpage: "https://goat.genomehubs.org/record?recordId=213953&result=taxon&taxonomy=ncbi#Parnassius%20mnemosyne" - iucn_category: "Least Concern" - iucn_link: "https://www.iucnredlist.org/species/155123/4717767" - swe_red_list: "Viable" - swe_red_list_link: "https://artfakta.se/taxa/206089/" - latitude: 60 - longitude: -40 - initialZoom: 1.5 ---- - -### Description - -Write some content here in markdown for the introduction tab of the species page. - -#### Genome reference - -#### References - -#### Changelog - -- 31/10/2024 - Species first published on the Portal diff --git a/hugo/content/halloween/jacobus_lanternibus/assembly/assembly.yaml b/hugo/content/halloween/jacobus_lanternibus/assembly/assembly.yaml deleted file mode 100644 index c113ff16..00000000 --- a/hugo/content/halloween/jacobus_lanternibus/assembly/assembly.yaml +++ /dev/null @@ -1,31 +0,0 @@ -description: - name: "Jaco_Lant" - type: "Spectroid" - level: "Underwordly" - repr: "Partially obscure" - accession: "GCA_666" - extra_1: 666 - extra_2: 999 -stats: - length: 1 - gc: 2 - contig: 3 - contig_n50: 4 - contig_l50: 5 - contig_n90: 6 - contig_l90: 7 - scaffold: 8 - scaffold_n50: 9 - scaffold_l50: 10 - scaffold_n90: 11 - scaffold_l90: 12 - scaffold_gt_10: 13 - busco: 34 -annotation: - gene_cnt: 14 - transcript_cnt: 15 - exons_avg: 16 - gene_length_avg: 17 - transcript_length_avg: 18 - exon_length_avg: 19 - intron_length_avg: 20 diff --git a/hugo/content/halloween/jacobus_lanternibus/assembly/contrib.md b/hugo/content/halloween/jacobus_lanternibus/assembly/contrib.md deleted file mode 100644 index 0f19ad6c..00000000 --- a/hugo/content/halloween/jacobus_lanternibus/assembly/contrib.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -build: - list: never - publishResources: false - render: never ---- - -### Contributor(s) - -Restless souls. - -### Publication(s) - -- [How far will a pumpkin fly -?](https://www.nbcnews.com/id/wbna21197135) -- [The great pumpkin](https://www.smithsonianmag.com/science-nature/the-great-pumpkin-74423844/?no-ist=&page=1) - -### Funding - -Mephisto Pact Treasury Foundation - -### Acknowledgements diff --git a/hugo/content/halloween/jacobus_lanternibus/assembly/index.md b/hugo/content/halloween/jacobus_lanternibus/assembly/index.md deleted file mode 100644 index af456f47..00000000 --- a/hugo/content/halloween/jacobus_lanternibus/assembly/index.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: "Genome assembly" -layout: assembly -params: - assembly_fields: - description: - - key: extra_1 - label: Additional field - - key: extra_2 - label: Another Additional field ---- - -### Methods diff --git a/hugo/content/halloween/jacobus_lanternibus/assembly/stats.yaml b/hugo/content/halloween/jacobus_lanternibus/assembly/stats.yaml deleted file mode 100644 index 0b6aa3d3..00000000 --- a/hugo/content/halloween/jacobus_lanternibus/assembly/stats.yaml +++ /dev/null @@ -1,24 +0,0 @@ -assembly: - - "Assembly length (Mbp)": [EDIT] - - "GC %": [EDIT] - - "Contig #": [EDIT] - - "Contig N50 (Mbp)": [EDIT] - - "Contig L50": [EDIT] - - "Contig N90 (Mbp)": [EDIT] - - "Contig L90": [EDIT] - - "Scaffold #": [EDIT] - - "Scaffold N50 (Mbp)": [EDIT] - - "Scaffold L50": [EDIT] - - "Scaffold N90 (Mbp)": [EDIT] - - "Scaffold L90": [EDIT] - - "Scaffolds >= 10 kb": [EDIT] - - "BUSCO % [EDIT]": "[EDIT]" - -annotation: - - "Gene #": [EDIT] - - "Transcript #": [EDIT] - - "Avg exons per transcript": [EDIT] - - "Avg gene length (bp)": [EDIT] - - "Avg transcript length (bp)": [EDIT] - - "Avg exon length (bp)": [EDIT] - - "Avg intron length (bp)": [EDIT] diff --git a/hugo/content/halloween/jacobus_lanternibus/download/data_tracks.json b/hugo/content/halloween/jacobus_lanternibus/download/data_tracks.json deleted file mode 100644 index 69d763d7..00000000 --- a/hugo/content/halloween/jacobus_lanternibus/download/data_tracks.json +++ /dev/null @@ -1,268 +0,0 @@ -[ - { - "dataTrackName": "Genome", - "description": "Reference genome sequence", - "fileName": "CAMGYJ01.fasta.gz", - "links": [ - {"Download": "https://ftp.ebi.ac.uk/pub/databases/ena/wgs/public/cam/CAMGYJ01.fasta.gz"}, - {"Website": "https://www.ebi.ac.uk/ena/browser/view/GCA_946122785.1"}, - {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} - ], - "accessionOrDOI": "GCA_946122785.1", - "principalInvestigator": "Tanja Slotte", - "principalInvestigatorAffiliation": "Stockholm University", - "firstDateOnPortal": "15 October 2024" - }, - { - "dataTrackName": "Protein-coding genes", - "description": "Functional annotation of protein-coding genes", - "links": [ - {"Download": "https://figshare.scilifelab.se/ndownloader/files/45076090"}, - {"Website": "https://doi.org/10.17044/scilifelab.24340378.v1"}, - {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} - ], - "accessionOrDOI": "10.17044/scilifelab.24340378.v1", - "fileName": "ltenue_v1_genes.gff.zip", - "principalInvestigator": "Tanja Slotte", - "principalInvestigatorAffiliation": "Stockholm University", - "firstDateOnPortal": "15 October 2024" - }, - { - "dataTrackName": "Repeats", - "description": "Annotation of the repetitive regions", - "links": [ - {"Download": "https://figshare.scilifelab.se/ndownloader/files/48879751"}, - {"Website": "https://doi.org/10.17044/scilifelab.24343000.v2"}, - {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} - ], - "accessionOrDOI": "10.17044/scilifelab.24340378.v1", - "fileName": "L_tenue_v1_rep.bed.gz", - "principalInvestigator": "Tanja Slotte", - "principalInvestigatorAffiliation": "Stockholm University", - "firstDateOnPortal": "15 October 2024" - }, - { - "dataTrackName": "Tajima's D, population 06", - "description": "Whole genome Tajima's D estimates for individuals of population 06 of L. tenue per 100 kb windows.", - "links": [ - {"Download": "https://figshare.scilifelab.se/ndownloader/files/49006876"}, - {"Website": "https://doi.org/10.17044/scilifelab.26937304.v1"}, - {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} - ], - "accessionOrDOI": "10.17044/scilifelab.26937304.v1", - "fileName": "Lten_pop06_TD.bed.zip", - "principalInvestigator": "Tanja Slotte", - "principalInvestigatorAffiliation": "Stockholm University", - "firstDateOnPortal": "15 October 2024" - }, - { - "dataTrackName": "Tajima's D, population 08", - "description": "Whole genome Tajima's D estimates for individuals of population 08 of L. tenue per 100 kb windows.", - "links": [ - {"Download": "https://figshare.scilifelab.se/ndownloader/files/49006879"}, - {"Website": "https://doi.org/10.17044/scilifelab.26937304.v1"}, - {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} - ], - "accessionOrDOI": "10.17044/scilifelab.26937304.v1", - "fileName": "Lten_pop08_TD.bed.zip", - "principalInvestigator": "Tanja Slotte", - "principalInvestigatorAffiliation": "Stockholm University", - "firstDateOnPortal": "15 October 2024" - }, - { - "dataTrackName": "Tajima's D, population 17", - "description": "Whole genome Tajima's D estimates for individuals of population 17 of L. tenue per 100 kb windows.", - "links": [ - {"Download": "https://figshare.scilifelab.se/ndownloader/files/49006882"}, - {"Website": "https://doi.org/10.17044/scilifelab.26937304.v1"}, - {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} - ], - "accessionOrDOI": "10.17044/scilifelab.26937304.v1", - "fileName": "Lten_pop17_TD.bed.zip", - "principalInvestigator": "Tanja Slotte", - "principalInvestigatorAffiliation": "Stockholm University", - "firstDateOnPortal": "15 October 2024" - }, - { - "dataTrackName": "Tajima's D, population 21", - "description": "Whole genome Tajima's D estimates for individuals of population 21 of L. tenue per 100 kb windows.", - "links": [ - {"Download": "https://figshare.scilifelab.se/ndownloader/files/49006888"}, - {"Website": "https://doi.org/10.17044/scilifelab.26937304.v1"}, - {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} - ], - "accessionOrDOI": "10.17044/scilifelab.26937304.v1", - "fileName": "Lten_pop21_TD.bed.zip", - "principalInvestigator": "Tanja Slotte", - "principalInvestigatorAffiliation": "Stockholm University", - "firstDateOnPortal": "15 October 2024" - }, - { - "dataTrackName": "Tajima's D, population 23", - "description": "Whole genome Tajima's D estimates for individuals of population 23 of L. tenue per 100 kb windows.", - "links": [ - {"Download": "https://figshare.scilifelab.se/ndownloader/files/49006891"}, - {"Website": "https://doi.org/10.17044/scilifelab.26937304.v1"}, - {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} - ], - "accessionOrDOI": "10.17044/scilifelab.26937304.v1", - "fileName": "Lten_pop23_TD.bed.zip", - "principalInvestigator": "Tanja Slotte", - "principalInvestigatorAffiliation": "Stockholm University", - "firstDateOnPortal": "15 October 2024" - }, - { - "dataTrackName": "Tajima's D, population 26", - "description": "Whole genome Tajima's D estimates for individuals of population 26 of L. tenue per 100 kb windows.", - "links": [ - {"Download": "https://figshare.scilifelab.se/ndownloader/files/49007380"}, - {"Website": "https://doi.org/10.17044/scilifelab.26937304.v1"}, - {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} - ], - "accessionOrDOI": "10.17044/scilifelab.26937304.v1", - "fileName": "Lten_pop26_TD.bed.zip", - "principalInvestigator": "Tanja Slotte", - "principalInvestigatorAffiliation": "Stockholm University", - "firstDateOnPortal": "15 October 2024" - }, - { - "dataTrackName": "Tajima's D, population 32", - "description": "Whole genome Tajima's D estimates for individuals of population 32 of L. tenue per 100 kb windows.", - "links": [ - {"Download": "https://figshare.scilifelab.se/ndownloader/files/49006918"}, - {"Website": "https://doi.org/10.17044/scilifelab.26937304.v1"}, - {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} - ], - "accessionOrDOI": "10.17044/scilifelab.26937304.v1", - "fileName": "Lten_pop32_TD.bed.zip", - "principalInvestigator": "Tanja Slotte", - "principalInvestigatorAffiliation": "Stockholm University", - "firstDateOnPortal": "15 October 2024" - }, - { - "dataTrackName": "Tajima's D, population 34", - "description": "Whole genome Tajima's D estimates for individuals of population 34 of L. tenue per 100 kb windows.", - "links": [ - {"Download": "https://figshare.scilifelab.se/ndownloader/files/49006924"}, - {"Website": "https://doi.org/10.17044/scilifelab.26937304.v1"}, - {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} - ], - "accessionOrDOI": "10.17044/scilifelab.26937304.v1", - "fileName": "Lten_pop34_TD.bed.zip", - "principalInvestigator": "Tanja Slotte", - "principalInvestigatorAffiliation": "Stockholm University", - "firstDateOnPortal": "15 October 2024" - }, - { - "dataTrackName": "Nucleotide diversity (Ï€), population 06", - "description": "Whole genome nucleotide diversity (Ï€) estimates for individuals of population 06 of L. tenue per 100 kb windows.", - "links": [ - {"Download": "https://figshare.scilifelab.se/ndownloader/files/49006264"}, - {"Website": "https://doi.org/10.17044/scilifelab.26937271.v1"}, - {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} - ], - "accessionOrDOI": "10.17044/scilifelab.26937271.v1", - "fileName": "Lten_pop06_Pi.bed.zip", - "principalInvestigator": "Tanja Slotte", - "principalInvestigatorAffiliation": "Stockholm University", - "firstDateOnPortal": "15 October 2024" - }, - { - "dataTrackName": "Nucleotide diversity (Ï€), population 08", - "description": "Whole genome nucleotide diversity (Ï€) estimates for individuals of population 08 of L. tenue per 100 kb windows.", - "links": [ - {"Download": "https://figshare.scilifelab.se/ndownloader/files/49006267"}, - {"Website": "https://doi.org/10.17044/scilifelab.26937271.v1"}, - {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} - ], - "accessionOrDOI": "10.17044/scilifelab.26937271.v1", - "fileName": "Lten_pop08_Pi.bed.zip", - "principalInvestigator": "Tanja Slotte", - "principalInvestigatorAffiliation": "Stockholm University", - "firstDateOnPortal": "15 October 2024" - }, - { - "dataTrackName": "Nucleotide diversity (Ï€), population 17", - "description": "Whole genome nucleotide diversity (Ï€) estimates for individuals of population 17 of L. tenue per 100 kb windows.", - "links": [ - {"Download": "https://figshare.scilifelab.se/ndownloader/files/49006270"}, - {"Website": "https://doi.org/10.17044/scilifelab.26937271.v1"}, - {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} - ], - "accessionOrDOI": "10.17044/scilifelab.26937271.v1", - "fileName": "Lten_pop17_Pi.bed.zip", - "principalInvestigator": "Tanja Slotte", - "principalInvestigatorAffiliation": "Stockholm University", - "firstDateOnPortal": "15 October 2024" - }, - { - "dataTrackName": "Nucleotide diversity (Ï€), population 21", - "description": "Whole genome nucleotide diversity (Ï€) estimates for individuals of population 21 of L. tenue per 100 kb windows.", - "links": [ - {"Download": "https://figshare.scilifelab.se/ndownloader/files/49006273"}, - {"Website": "https://doi.org/10.17044/scilifelab.26937271.v1"}, - {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} - ], - "accessionOrDOI": "10.17044/scilifelab.26937271.v1", - "fileName": "Lten_pop21_Pi.bed.zip", - "principalInvestigator": "Tanja Slotte", - "principalInvestigatorAffiliation": "Stockholm University", - "firstDateOnPortal": "15 October 2024" - }, - { - "dataTrackName": "Nucleotide diversity (Ï€), population 23", - "description": "Whole genome nucleotide diversity (Ï€) estimates for individuals of population 23 of L. tenue per 100 kb windows.", - "links": [ - {"Download": "https://figshare.scilifelab.se/ndownloader/files/49006282"}, - {"Website": "https://doi.org/10.17044/scilifelab.26937271.v1"}, - {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} - ], - "accessionOrDOI": "10.17044/scilifelab.26937271.v1", - "fileName": "Lten_pop23_Pi.bed.zip", - "principalInvestigator": "Tanja Slotte", - "principalInvestigatorAffiliation": "Stockholm University", - "firstDateOnPortal": "15 October 2024" - }, - { - "dataTrackName": "Nucleotide diversity (Ï€), population 26", - "description": "Whole genome nucleotide diversity (Ï€) estimates for individuals of population 26 of L. tenue per 100 kb windows.", - "links": [ - {"Download": "https://figshare.scilifelab.se/ndownloader/files/49006285"}, - {"Website": "https://doi.org/10.17044/scilifelab.26937271.v1"}, - {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} - ], - "accessionOrDOI": "10.17044/scilifelab.26937271.v1", - "fileName": "Lten_pop26_Pi.bed.zip", - "principalInvestigator": "Tanja Slotte", - "principalInvestigatorAffiliation": "Stockholm University", - "firstDateOnPortal": "15 October 2024" - }, - { - "dataTrackName": "Nucleotide diversity (Ï€), population 32", - "description": "Whole genome nucleotide diversity (Ï€) estimates for individuals of population 32 of L. tenue per 100 kb windows.", - "links": [ - {"Download": "https://figshare.scilifelab.se/ndownloader/files/49006297"}, - {"Website": "https://doi.org/10.17044/scilifelab.26937271.v1"}, - {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} - ], - "accessionOrDOI": "10.17044/scilifelab.26937271.v1", - "fileName": "Lten_pop32_Pi.bed.zip", - "principalInvestigator": "Tanja Slotte", - "principalInvestigatorAffiliation": "Stockholm University", - "firstDateOnPortal": "15 October 2024" - }, - { - "dataTrackName": "Nucleotide diversity (Ï€), population 34", - "description": "Whole genome nucleotide diversity (Ï€) estimates for individuals of population 34 of L. tenue per 100 kb windows.", - "links": [ - {"Download": "https://figshare.scilifelab.se/ndownloader/files/49006300"}, - {"Website": "https://doi.org/10.17044/scilifelab.26937271.v1"}, - {"Article": "https://doi.org/10.1016/j.cub.2022.08.042"} - ], - "accessionOrDOI": "10.17044/scilifelab.26937271.v1", - "fileName": "Lten_pop34_Pi.bed.zip", - "principalInvestigator": "Tanja Slotte", - "principalInvestigatorAffiliation": "Stockholm University", - "firstDateOnPortal": "15 October 2024" - } -] diff --git a/hugo/content/halloween/jacobus_lanternibus/download/index.md b/hugo/content/halloween/jacobus_lanternibus/download/index.md deleted file mode 100644 index 26e08224..00000000 --- a/hugo/content/halloween/jacobus_lanternibus/download/index.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: "Download" -layout: "species_download" -url: "jacobus_lanternibus/download" -weight: 3 ---- diff --git a/hugo/content/halloween/jacobus_lanternibus/intro/index.md b/hugo/content/halloween/jacobus_lanternibus/intro/index.md deleted file mode 100644 index ca03031f..00000000 --- a/hugo/content/halloween/jacobus_lanternibus/intro/index.md +++ /dev/null @@ -1,3 +0,0 @@ ---- -headless: true ---- diff --git a/hugo/content/halloween/jacobus_lanternibus/pumpkin.jpg b/hugo/content/halloween/jacobus_lanternibus/pumpkin.jpg deleted file mode 100644 index e3cbe03260589e55f507c1c2e61569faae689621..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29752 zcmbUIbyQo=9|ejgSa5esT7pB1wzz(ayBBvY6oLf`1h=MWfkKf|Tm!`^?$F|{4Gsm0 zyIp?w-gWO<@2~gXC+Dn{wa(1R>@#ORvuDrF=58&|uAR({w zMpjQ#M-1X%%j@iJ=K%5Hf58Xg@b+|abATwTC_+@U-Y7zRUI}pWKs>yy-Z^>sK_np} z!uWv4MSwg20|@-z@qY&(Mc3w#6ogb92Oz#s!+k^vuk0AK(Bi2a21 ze{lcr0AgTbVdFeC37_DpKpp8*^D!|oo*Ijdh4oZA@aZ}Liwv9m8NVzJg|-#wxd){{ zNMbH7i(GXlmCpDPRL~k0iib~4LrX``%Er#Y$t5KG>a~cdnEZcl6cm+|Rdn_A4GfLm z8r#^~**iEoIeU6}`}o5B{KLW{BBP>XVv~|Tr=+HRNzeG6mtRm=R9sT}qo%g5zM-+H zxvRUUx37O-aA;z3YIqc~|o_TM$NNGUSOI&!N!M29)iwr7-6*I#l}l+OSXuVmOVJ!%g?N9EHE*0nD{ll;maf-9Yi~U);46=W_V4JM~(yFHBgMGue2ZJp(JtEAm5Ra z4>)J979zg0ugaULnkn59?VT6vGyE4OuK%SlB1BMu3CR57teE z$4sZnNwKkFL`@|mNc$*;ZwmcEZ=~c*n%Z`ZwSL2}MfljUg0U^*X?Zqqf{~XXVXFW` zTsv(BLT|{}w;SAPYjFo5Vt-Hl+5>Ij==lUbe2-D#cMwcW=m$Mzp>rUOsKi>N1R670 zogh^NYpN(LtdojZhCfJwrB0;kFihPo|Kgj+Ac%4j043`X&BuhC7nKpid!d%6orML( zMEYGv#7>4R5(z=+MU%1&qtCzk5_|%jX6AH-7VYZTXKW*V^D$v!HW?fn-jv$b#!~_y z?F>0T5DVo`)gxkl<>yukAR$hpvJglKAk+zj4-*>;jugexNm=5b__*`}B9F`rQ5fHo z85j`leGM8L!%_t04pPnx(n-*}1O0}v;>0IYH+rPQZ7E_&-Jl!RiATgnt4{LVjKvVG zl%YoQegK9Oorybu@PlrZrW%5ahQVDg>^wi^izi-fADZGM!`wFkzygk7Deecx6lj2? zJ}-rchuMZ)zImZA#y>2yUC-H*l_!Fc@=qL3CCiD1U4*VkK|o0aOVUV!!Ub9eth^0ZpR|+q)sy!3SF$3gUqyhP zAIvmUJR_|aKciAH({M@h6$SX1f39M!3EcMX|2C`ysZDqURCqJ*sVno2H2Zn_FBNVK zD7-yE(A#k80C|)oiJaK7oVT4#BSr&@DAfxT;;>$mR!NZe)0KX*t*suvPt%!IH<=pd z&>$uTt*TTp8=;xAT$CkVyYGGeWXI(DZ27Jv$%*_;!nj!CzLVHMMC#}V%78Y(%vkjv zk4*aJcSA*xFzvcr_6T<7DXxaGw9t~dip@-KtQ)U!D1DW%|kOiH7qZm(7$*AEmlEKm75|&X0oN5(vTG3DRJfGob|J5m-@_N8%F4G|+ zee%5|wrDQ404`36+Ti$)s%Eq6$wF~Mu4P4)<(e7mW&kJGa_3qTy2w&Qlr6J#DKSA& z>T`ajeF>ASxd_Ce%}KB!RF=Kf^Voa}0{r zP=qG%xf9vTuTgZQ5KGFGjahUHd@9ET>&7}6MN!ANyDJboZ8HsGBm^{$itadpCtC&F zfEqA7+Veap+S1*BBD? z(gh-@fmbL8FfPWgT-`cJDD_vC{M;LUwJA;)-j5rVUGEx#IhTc!5z?bA!11D!{;w7 z#X==Bsd50i=V3;ln0ANqw?nQb6lZc2g`?cLe2}D^1lWJ`GZ+B2nLzzRZ=rf56&(!z z{c`FxH2a!2(j;paDl*!-LNRBB zlIn5wv9?R{IrO}-#=*MAOLM;XvW(jk!MD+jr)r|K9TJmc*qu;JZI0zMI-`UtIT^_D zUaa+SjR?RYuBmVU*3UShAmgUssWQXx)%g2z?I8_U527QcOto@JChy$@aI&8JwTGNC z)Yj`zjXV-!d-P#SCCP37Z&6$cQGt!-ZBSrOZMp0@M#jR@b~2mn1=W85SrA?R@}h*U z-gmHBiL0%dtFewK%yXaXL!kM8w3f&=w1M?Gs7?(RZx9fhKKUs$`&Gdu&u}pvs|da{ zzC}Y;FztBoMQ5o~YG=P_iC|o9CXHM+o9lA2Fxn%GJmjos*>vF=!b6+Pm^p0~hD?sN z%~jqY=j3o^H8;259~C&jro_CS)UnpUk98!t;||l%_;w+z&iF(nDjxyB;ZOmYfg%Wb zFx=F4SN+{_=T=J47D(iqE3qS;vRyak)uaj|@;#^?o5QmP1kouGWzZmLRkhhrcYa$t z#aasy$FT^iD|+w8G(eai90)IW{jD?COGaF3xR7Bl*!`v~&#`_y0r*{6?i-;D z`$U<^pX+e|<>A4u!Smo!H^i6Z(dv>9nF3)SYZzFnkq3061$-v8v6xBn9=aYaA!9n3 z2{P!6@pnoCxn%tfTj+^knruhyYQBx?i+om1dQfKWc#YsB%zbK5f!u!?@a*3+*6L|KwGB40IUb3Ff)pK6a^ zilh8p9oE2`Siq%ICai-0&lsvT{c+$YS!@!5QJ;7YfdGO5+v*Rt)$ zA^RI9TK@Df6SR+2E)ab6d&&(0nSAF|osq+i({B79z%7I;PncUya52~tFW6{hlZHdUp!?#71aqia0qgOcIXuVNVSUs)?P93s#YRjD^Ve|71y(LJJ#2CgYIyg|UKpB>iC(6yQ zsr5mZ5`9bWhn)r>_gu&TVr^9t$Td0PgzKWLrn4VWqlisY<6(K15tWoux+x6S_Tt z3Pkp4z=+uA7K^b+JbGWglP*!qFFi`okH)Co7Y0jWB)!J3yx7#+D8|V%LPA|d*b79a znuaYf*>fvNw?#ySkSZ5jWyZ^HT}nz;2EgS^7`Dsk*a?@e$9M>Pf&!6H9yuRwku9?k zy_{UA?7;VXLRYI-iBns#|0Tnr*^UDP8~Pk|Rrs_h7RH+i5KlkE`ZHLKUI7|56yF!G zLqBD@Uct8dm-EXrKghT;F%&<4n~oBjt0nvMx0Ju0>ei|N*+Q*@h$DY8*`az3rQA-d zkU>gF*9q{>Q-%ae%EvF~{VhSJqZilR?^|Q_S>^{@?F6yJUVOX+G`UAcakXThrdU6L zxX<0*SP&+hw@$pf%#@>>Q6}HZG%l!a+b6YRjn|$)2}CXeVw|1G#u>Mss9kilk}0DH zb{wv>A)-B2hT?xjo-Ez_cC|4YwK&W=_Z>%VkL`Og5xvKYQL+QI(^gzdU^@gH6C8-m z>VzmU>+SwJor_B`>`IJwOUSfpjy+>~F{Rdl#hV?*7<(5+gDlbT32R8d_YLiwD8r^t zG`^fegd=Pp0a)-^b(f8!C7$iiwG&~qUb>tUMwMEMnS0Hvc2G6GM7~xgP z+@cR7DS zf+OMli-#w!f7231pO3(*==&oI;O=;5tJ8J$Gowp2L-{6$)gt(ZUy<{xcKaYfc+Lgn zD(qX?zzz0BajP*o_>2xEJ|jip(k$L=y6am-JHiman|NdRuVTAfRWU zjl6~uhh@Azqywc)u)+Ho_v%-zx73|3PLdtf4cWLIo*er6+Jl1^eJ*PxaXDly!mHf# zUXK8hUgBI&iXW{b9nYdK3GUak&u?-_Jjw-q-!Y2*yin{sW{>=$R+!vleXN?YUs2`| zx?)^cv;RJ^`LtKgrr!Wd|C7Qo>Yup-mu=#Y9>S+?Q;ASmxA4U|D7lJ&_b*7PH{+M` z;b>?w`jn+*h%d1dPSlVOoW&mK_I=gzgKba3d)QtT*tCb4h zc%~drXYjC#a=%i1dguO3wwV5%B?)*&_lwvwRDgT4<^}(+BVYYRb?`TIz{}r%d(}@) zTC*Mj16PScB^by`;6)jq<8Rq#vID3ob%F;x1lmMt-RYg%3nkj$KS)X1u?&?95uH+Z zc<=Vxk3KC7*nnTy2Y{z$`(}?Fcs|y$uy2(IGK0I)``1g;)`GN*uMAv}SP^p#YQ%MA zc1P{{ja(&GJ{{S7QFq+ui(QX^ADR(DuVh_T_i*X_8xm;m1wI%C7Tgj3h@~BaY(~6T+Ub z6e~l*ESGiN*GKwwc}RmuBfakHJ!YYcz!2^H5oBt-^IC{B|qTp-TLe?(;t~dRH9h^ z8a!)hcx&<^*wRkZ^aK6fX^%8v*=iNSs6)>)Q1_nrf##UW0hUcOf1h~Ab+mGJy%qSgs0OnST^#eOV2TX+YPOBQL$sq_I|fby6yE&hB?+cCT^zfKTxVz*hWuHS#`y7j4%xamQtpf5}tYVEknxU;~^eJGb``uF=bj5NeDNP?Zy{^e3NRgyU-p^Wd*OsFHLqVD9zBE1E3Hk! zt|aM56JK7Z`a-9%7eUsb2ICvub#ONx55mEf?R>pcY5X+Ke>Nh3@8}dB-zVn%y>c_d z8#D%hAyR@q1})~`Duzj02jY0Rkrh_u?w(YXjislyk(4V7^r&m3?)4`Vew5%RS-D2 zWLSOG{>CYY?0XeZCaDFQPkM4$uCNI34SnRXmeCxfiNPM_7t@rzgj16Do zz)oCRI;-TZSpC2HQMvtYF6Vm}SogUB;9G?N>3UZ&RY`G+IyG}AjUiSok(G2&_%&_+ z@(78xMXblqHxLkjzkky#zN5KaM z2(Wy4#q}ow;n-N-BE8NY*8T9(+bA#VOJK6DC4Xi;zUZh%WLtl#5xMa5Kf~%JUG2QBYz1dX2X$`MdQeUsJ)Ai3(}XX~QeeO6u(1bHLFs`U#&5iR z-UWj&8mx{9j|VrSbM++a9l%+RZ{Q=P+FBU?;dH3XY(J*NNuD=KJL4m$@OdbqjlBU~ z$6qJK@D)CluGhdpiLGY5tqh-M8OU?->OZ8yt5?sDv+4Se%tPQeh^WLzyIn()cwl&ZV~j*CC^jdUZ~F3gL^1 zt4hyHb1L_69!tzVBAAr;M5U0+>qIKDQ9791g9u7{%6riS4@+lR@jc`bko|+p*8kMh zw~y|7<0McgMCIQ~%Rkx&{dxv6lWc(`C*SHFyT%fY7VFVeDTyah0?U47!Q@x)Yo(GC zRMla|@#2%}P9#Zi@S;C*RMvcR{VR5RliwGd7w%1x+`j_c_8iScrc(RF++8lDz;hv?bp zuYMJ8T{Bgp-VbY;e6lQ9iRz0#k@mq6nv4{>AA)yo$d+_JpB^ZQ$3=m&I3NIAcJ@jR zM)P`Z=gIpF3><+aeI|NLzbD=QTQW;Xyg8!lYq=V0GlX33*aVD!&^sIFwQ08$s@+^z z-o!B!q}Y&bHLa%4WwsGten*oV7%yKN{{7*fu>LkCz`L^a;vWeSJZMkX?M*l@H--q> z;qG?EA%ca*LqV?uYRM_GR@3hI^Kx7Y|L-O~w<%VHlH1QrhqK`zp4l1x@xlw3bp2lu z^vU3K)Lhu@LGDRgfw%AaADSgomHo*T6|?9K!psNLhtOtMLv+ek;&;hauJOK~Uy``9 zuWX7c9QUgM8AD52C$6@t-Q9i_BB- z2{ejU??lr!zmzvnrQ7S8Pn#746@{ri=y&Qg(e1z`U3UJ=8=tt45ae3RI4P^0h{Ybg z#D&B5di^ux$*JXFhoLgSR+rtwNPj(J?9W_XB32Ein~ho^9hdl6?%pvYFBI>-FWe;6 zpahvJy;|7Lau`1+-ha|t%9cG@o2cgV*;3`=;LlNo=Hk;_;k5dG-lqF9gDuR@sr+hf zRW4sU5lZhjx{?_-WfQS?ZMfCn`+m_x`>3FH;br*C&3ZX})8(#3rqN6NpTyS}sLZ-{ z%B4MD9Zhc!*54;dX3Oa@>`SNDvzv6jVMYPn0&fegTl-PZCm!0&%`^+vjOMy1PBeX&r=fx%3@T$?Y*65!ehCP9sFf`!}P^jL#KHs z{ooN$mDAmS{HH&VYo1b!8;7Ns1%fcXmw#gBEpYok-O^QRFixao^ZZ<~DR~p;jg`rX z@CnTwnais7F?*k2$sjGiN%H|K3LsEl`Yb0jo9t-0C8>DkobzQS4Cfbo z8si=>M>+!W>e&8;(SvvgdiN3VtKs*9%Jx~Cyn-KsU`6aT-Rn~WY3RXs-bxde&CG#s z>v3p@GZcK9H~bMmME<;|%6EMcr$t=xQ~oh)6{JR}xPS5GL|d?{aQ;!-1fDMQ>h(El z{_$lp!g9W>0yy?aijsh;udtW?(ei9f3LO> z5Mfz6WBW_87z_KY@@8J2N48z zd(=2!QS&$FX%VeaGrcut3p;sLctsJ|+o2=Qylj?aw0X8gf;3CTv_8y;E(8H3Lt=&j0M49iLwLu7ieSC^<) zSGUIo>#K-x`^H*aw?CVTR#~ln{r*>`FPQcJ_I-N&Q?f-^bSAB)sA&xTXALLjXi+n1 z&t%GV-*t-IKt3(O@`$F)u=7t{!yPqjwlj^!n7zA|N7)OgIE9i+qIT;(sZb9|TX!+eJsJ^r>x= zKfj;3kTwyPCO3koDTL`(Wx183l7C0)L(1a28xPG**6z%Nk}!e{?zp=j0q86XdWUJL zKj_81sHA7K%|D1?zd}wqMysLm&Nn3HlXwPDTbNQmXl!afllBJc%qHu*tAex2bL%5BLNFKMzuZgEk*}$7OS|E zByI0@uC)QDmxTArMR_zeT3s&UfN8>FNzw$z*`}q)K(*cgOS0a#lbam9o}I$_OB6$i zS9&w2Tvow@#`kRG)pv^q^fb$HYXAv+%4D!dtV7n8Ww4CZ%x6n?!PrU9QRnXP@Z&f| ze?0a$k$eC%v4{E`5K57O#R*+!%+R+%!Z;&kqWNcq?zVG`0Vsuudt#1!Efu7PdKsYf zi=_Mq`;@2v8%lPp4bniTo+OdZ{F$&SHb!!H-2C(m5wofw?F>BjP#|cf&Wi}w`Qmb< zo2;ASm1jpsaf!Cva8`N{ej!_Pfu@g#4u29%iA7@eX=J~tKOW9?$F*n44qIu$vw8L< za<}*W-K&}JV-mVfzORf$jGlJlcXg3Pqfr@=7jrj+p{050x~}HR9?UFYa zG#LX0O??l1k2NOy7yhMDe`Qg2aCqNXy<;}waRtB*a!J`}Y(Ef#l@ahh9K`Qdan;bZyB<9TGkNdX>9mmM`v0uH37Gm8Jz`jpGwV$y|A_ ziquB8*P`a0vr8PukG2NIBg;#AM;3BMu9-2~tfKW$jw^?C@v>LGtBWsjb_)IS<0!-J z-_iyfo<8Ug2IyX$OSNOpIqlC};Jf!~(7UzX8VVjWteLK`Hkzoyj-AFcAt3DgVHgRg zM8&O^pN=B(}-I6kAmp9{Ez`<={ z3W`olq1c{GM#C`<6Zw6}p1^GEDg;;b1TbXou zitlFfIgWg-M{JU0XBAAQ;CU{?&s2yS<4kJ0>vk0&xIezARl8Pw1jvZLFU1Jgc~1^c z>g&U@&p7dlkfDRtV1q|m?)2?ci1T*R&*qu&W_si#m)lOylOJ%O^2!6*%dnS~s**hDMbx2OnTD!0``e$?gETWDr-TC0Qj0pql&BMRlLVNbV>Iimsd)}=~ zgoG{vKWEeCMlr^+Y93mmxZlgNrio*m-eO{tlz*QqcDY>;nCp2|%8dw4Z5}*Tn;aUm zfs_{Ovs};qdIZ#1glm3m<9Do=C5Wk{VVQ%e2W8*cUO}@-?mr8)C=9TsDhnurHnlA( zJpKg|vT+kAT)-UTK~-asI4ytgTWJQti9wRJ)aE>G(c9eI)>TW`mi%F6X??2N@7M2@ ziE-aX?~ctf+x%ioP!B2!P1)(aemU^qvBoG}(?4Ueg80%gXZc3$2kH0Rz6m9)tyEE5 zXtn}(LC=wuxOf^bN=?T$4sZs#o~?Tr%&9w!McCzlOyC?hBWj8k*HY^(Q5e zA(II*kWe5BPf^O=KVGGQXdGL{@>}-#_LitQm_flPKu<51)jqrAE*`--Qik5+`po(_ zeuw=+^1ela`_=+(ybvhxPaI6T*r)!qcnafD?=zOZ-U&}U1@_Yc)?p8Gq-{m3=OA{x zOq;k?m!q6ji#{gLRn3_4^H2B>+iFuh1?0U#tmuDt`9t}VI_eQn+V=cv7kzPb7_*T@iTk3>4&csxVUGEG-5|E$gBikt|EeZw+ABA{2=#Jf z)Z;!$_yGU5GmVcvNA+jVMyZ`VyK)veNtoVdLqWrZtnqrY^Pm!xaQShR6d7Wjb>sSNC&~?%|ZCVE@ z7rzi{Z>oBd07P8VKM#9sz7nIdioD}0YlB?Y6<&~6sDv%Qd0>6LI7la2 zpg`M!WuKg*B6D}-X_0&GaC%^y^+Y!4dHC2tv?a1kpTqRaa|A45{01Ll$3?v)hDv{% zlW2J;sRVl@1n#_B4~va=;vJ-=v}g)f#3Jd00+oE?fFcDe1dL=zT^LA*^Rt37lM$IJ z9$LFLJM6T;sKZjh^Tyy)8W|eBE;5WAJg|gYn7IwH)hW07q1^BP1?gp{gs*^iXr6ME z*CnrW)H;;#+PsWSv$5Cj$A5O>l(zMNyWT*OqeVF}i>Qk4rg=Pm)?(X_fLROa9+3ux zB<(%aQc%IFf#!KjSHWBE;@-vS9KJmRk|JkvnZNpZ)3wkhm7ifW?Cyv@DNyN(eo!r61o_d!8Rci_)&%Y)& zARUCTL^nt|eSm}Plp)0NtdU9>ez!)`qQXKsEi z9A!!F-NP$3M3?+A_eJ_R)f%~pQ~B(VxNqTf7I*N9fbo3eLu)BZ4W<5Kx`&h-@29~p zb|u!pzn2Zo7O0RIf4kTqMICeM-DXF&H-8)JSi`Og`uA92OoR@)qZkXy1qPItB}HL)DM5inNXertG+n!8PA zFl}VjH{EB7)^eAw2x3Nb>Pg6gW29Y2nU#>X)U&^wvRk?-J#7BsTeoKh5Ekwo69xR& z_8Yu5It3podl>nOaC*o`9I3s>jHd}2pTTtWz|#05=brZnkVDOY7cFE}!Slc@xu)b{;UKM-+hRFb1eRrOLg~=8SN0^lgE_Gu)gYF3s^JF{K&+EXfvrfzvd;w;3>u+6I!P8Uigrdj+QWPv0RSnA-Db#t zALexrXihflw(S@q0|9g25LKG~Bgbupo%oSM$ss$Um9stmORrNsmgJ~xGFagu0D%(o z>_@=8^T{af-`qUe77j?g{~2nFhr8@az$dd<`<%0daM$S^>t4-`$~)pVy6(UDHEXm} ze-x^mp`*kE$7!=p2}wAC)1vI|%Ud+O!4&e2l`4ysN@wg9@bY3BXcEljMm+Lpr5}Ww zGa$ub^H7sHr8WOHut!(9hMjJdaxNc$8J65jYha1DJ1T_Dr3s=#<$Y|rHv8}2Kci5y zAH{%mVML|6eQ!LUZK5%E9G`}V@tZS|(td52C|1aMAtPpjY%iyd(FJ7$?(VSRvtbv! zR#glfPytJGrloy0DF=I4hI18Wickg}@%sIwN_gsqyX3L{MvD(E;kS5yqklPWxL6sJ zshd4Dv)JxWS=)4D^M_Q5k-327>mki;&0CA~2q^m2`lFFODykx4q}728J7v=x6y);v zJ+Y(bi_bsaka^n;MQp4i4S!`5Bw8I))edKxBtw`R8G{;8)ly)N`tb@I9%X$k&D9Q6 z$hz3X$56#HhfpKO7D?y$>x9Mk1f7+RC-deqN!?ug@FjQIbMSV?_1=2_{?C#tq8!~S zWw)~^=>Vcp9DnZhqUv1>n=3b5x)`{QdVf3klaIf2gx9hP-LniTel-~{OD3~GJ~+#s zMfPfAX`A6|kxIwb*=un1_8ndD$k9;hGh;K>Y4GPXgHM=%A^m2uNt|zRTx1j>XJ9&NeGSKzbX%W9}*@STCxZ`K5D%aeb3+1SV$K)5d#5T!20>RwdFI*&6z{ zbZ}A>lb0AMi$!>bnt>x?t3>OlB!ntnl$BnCf43NRe7Vagi!eHsJ$SLR&GL~@VN7t> zP$Pp7Smhb75~^yA#HGVppUA#^QC7?J?RIuTMPp@8ifO{bAP~RTy$7Jd#c5h|(0NyC zuOlD}og&WjQN_?KGG5?a)XjG80O}$c=}i*{hG}Wnq2pmYPU(1!Nn#TTxSe@e-Z-B* zp%}P0!P-BmpKOmxWj-a1!LoG4d1j56IR%byWmGva*?yF8n`K85fBZcCDV}hiu5wMQ z{I@11lV(BClVH`!*G34Akgj2iwu}1JoV|FUQ!mQP{+s0fWJntS&htJwh-T@|;A(Pp zn3~eTRqjG$WIXf5Kg|sygd8*e*z=>=ZVsykgEg5i&-4%w0BUQL@w848kC6P< zIA^Q{Gfa;!sYlgkDo71Qmf?p%`t6mtXU-$Q3?U_5+kiCb&tVGCudI15R$t-io4I{B zWbp{FzvsRzTlf8Bb7gh(zPI_T26toptnBMRjChb&^pCg?sQ?lkm+RfxO6(bw`(_N` z#*R|o1oZd6dpVEr$=rA!r++~k%K7fHVvLDQq^T2&hb#Zy{ z!EGHqJT##H`A2g6rFuZw)AT2Pbh8*hGmYBR`Ng~c#j5|PccrcBzQk3#jqr~EHz_T# z344n3RghGV0*X%M&`u0?%X3#_FOCg_Y}fe-0J;t zjwwOk^{=4NmNxx&)e^A}zXvz6@l)DUf)r0RX>{xDOzt#KpSf!QuriFsA_uW$^4Q%w z*z)ZbkgAx8NW(JE^}pOy(F}8hp^kLAgKKfVVR8H_9f=+6RLYLFQd0Ry%s4?qOOEHX zR*mPSS~&1QOsM{sC)Ym4_Zi#@rMZ-pkd3WMnfbU9r5=^JPSG;0-(7qn&PxDE{ zLGOaQ8~g(d)ot99xWnCH4A}KKro?p&)tDXt{D`^1>>dO1Px}o`tzr{VtxWXuIr4Yd z_ce70A|8M9c8^zi1yu|5^35hziI++bVCVC8$^h-^>00}?x@^&0Z**B$LmcoD70t70 zmj-IJNV8~a2=7ay;6iwt9-uz=9mP@Cy??L5_2MR{a)X&`-5vhEY+dp!HNLWa!{RCh zrHq1?UaZOWv}8I=G#OeeGu;!JwzfDerwXT+IXuoU>bF*?rwr%IU5+>@P>Uny5?iPvjyQn{rY zhwT*drTfX+&nOb@h&^ighV69JSbsh$X?^E-_y9X9o$KB3+4fY7ttLGI_~s226%s-#&|cpdjdtQoy=hqaO~D?I;#Bk3j5W~&uOC=VA}9CCL1 z{SVt6!E@42dZ$JAz}X)%6XE(IEb({VMmF-kjw|URG+{~Yt(}5($@1V2sc$c{Dm8e?nHZY z6ol7GV5e^`r@@hb>ZR`}Q2o+BUbGyP%{>AfcV3gH)J-4AOV+k35qg}60Z_El$Z06ZpZHCR*?L#;~w1tf1}5t{%}bL)ONP|4t}2+V0A=b5%{{7p6DUo zvng6o?mthGLza-b{zepknDmzWb@p$N3_!Al>v0s-sEwG6thT zzVPjWXL2}x!tWMpFca{%8&qt%Wco;`mWt+%Si_R$Dv*f_SydikD%PUwv9O*Vbb`{^ zo@VBt&aC#u@n)5H?99Zs<>!R2*=MN~CZ03FArxjWBZX#uw#SgE{^VN_L}ve~4xFyfxNuW&O5e<_eRhxFJ31)9`n|fSS8emj3_o@9xWeQlrgj0 zHt@ZD9-Nv7^}!BiITJ>MkCbxe2kv<8(`soNWB+TK@paavHVr^s3O)kfbv=0hYo1=6 z66Q|ta(xSSzp+IJ$>2XQ9Xp7@e@{5=SEda-Bo6I#WfaMYzcIV1*+gA&_xEU{rRVxh z8a{iBh z!uPhJhLzE|(JL03NHxTd3>CP^#}cFU_K_!L>WAStqPF#0Jo?koCk=^SYfbH7I7<9! zePMW|1h={1Jo+6nZNBx4pB;a=HS30Xj^zv`dtbcq-K#>?n<<;QUv}KF-B(%>92Xg`JKF2^S9Y4KLRG^qYs_nI4NKD26@JV^@hEK` z0Ck(XFSUr3B)Mo~>-rZ0pj)~BsH>uT$TE@i%1}VIrc`Y>BiYnAA5pDMfk<_&BAY1;4GzO?Zp$7x@MpXQV zb!@NfXvJ&$=_1SoVqE64QsqG`gxK5!k8@(J?OG;28lBB?3WCvo&@$qK5Z7k937zAz zod~-a?qHUT-r*W9WfQhp?7P@&;qjN*p6y5%1n>qFP`@_aG%{QOgWfAtuYSd2Izf?V z6T@D`KbZvrJmfP{ME!Hd+CXc1=Fh+Grw<0rOH=3&F?V-YDc3C#d`uEd5?v@-#A&ve zkKA8^dMO9GyOM z@NE(1y7dRp=ogGo!KE{l`PKX91zj`{zIT{=7E#AcP!zN>Xf!G`CB9OM#3_a(3X-ay zq+mBXoU!+hRT-$S^V$Px`1+`H$Mi~vT!|d}n%8+pHMl^_A(pTDrUIzXT;x{}K^9iE|wiwl?DXC#HsuT=0!93{+kH zbl)1@smjEzoy?iZh+Bxcc_R%z@R9y53OJB$`k6VIz1)?=@XKnc9`pz>Z;Ou-nH3#$ z=0rQ!Hdm}Ym@pd%0;76lyU8eL*ANmG3<%qojCU9_^rOAzOjBoRJU+j8*ayBYL+K2e zSId5%6VV;ybN!XQ@wAxu6Vt+82=A9m)|fuKFnX-DuTHR9$8{PcJcl?wQQ@w zBIf#^%j!9OBCPYL)bBg*e z16f)~q1%R0R55ya>zZR1!;RMltD$ONKTrwZ)?4JDtIs|k)#=T8jbG2aj_`o{8N1K* z|EP1YO3t`^1k4qot*)Am%euu(nm@_O z6Ma+{uiK*5B$U)_QHjZRa62y3NAkYL^m@u=rfVddsnUs8dUez@oO8A6s+Y$?y;XA; z7AWvC3XHQ(P1cQXR_>Gfw-FBmTT&WZ`)c-UGMlKaSu5>{=p#VnVmRRR_7$SjM1trT zg`P<)x=Pkp$F!KtBmL?_F4=tTtoNe|+#{+l@sQGbYZNrm{A4Y&&7p!P%T3qr{YwPR;z>I(Pn#8i}d&11ZA$)i28Xx8!_ zy*_3MXASk_a50zqAd&tXhDT?`Erw)6rF-HJ?EjWtYc6O|Jm}3|E#GQrxCQa<5qidp zgOft;POlBqhw-=*$ZzH;!n|zP~VklDWT7XXTA!4G}*UN zO9OYdXZQ%*`#Ry{cwh@J`~7nX zSH-SVpK~fMYZ`7eC~QZx5ja^829Y(JcfR-V=lwGDBP4t%IWADrWvx{^<(v~~;|#KF z@uovnJp!B&jLP5Px>|OL2?G(7nEjH9n-&a$F^ne~#3Ut`mBe`Z&N^kW72G9~PaX$a zYA}f*NoXEcronxhEEwXM^z?sSYSWShNzMsU!NGh3T8Y?OKVI_&X-X4EwmwN>4>hPQ zlH3V>iVRj~X+)w4w=z`(!jm*1_%bs7an6fr)rL5t7-MfegfP z+comKKh6j|0r~Q4=wH~&RxnL_3uG%YH|bm)QHQ<)OR@Cc7~`cJ?l*rLXV(4_CME@2 zavzt9^zQ~IXIY;Y8wgx95bUgvkpG6!1zdCsVF)71X4!pS6( zKEC~*{8{$xIV}m?>bM#F>p%9n{j79P*(c%Dn%=3l^7`?-tv% zc4f>qHlfK&Xaf+4J7>8)%NqF(4e;&fS*)js(u6f{yY2HnKa6u4d0nbY?O6RV_)+_7 z__N~Qhir8yqtmP+yg>Uc;K&4%^5uynfCf%~3iba03;bHtBuLt4ONU{CNC1A7@b~-^ z{{Y2DTlgtps@tX0C3u^^B-hm*6uK)O*BB$P>N0B{CdjauOkG+OsidOzJuI=py$ICh zzcRV+o)Ga2z9(4(k*s?cJaBr7)soz*0IJy>dWz;g5K0hAm}0D%$sG2s#@6LXCutjx zamN+;Mqy4csmm2(hZ!D9t|?fp<+Z`YxljfO7{d=kUN!Nv{t4gkqvO}wCf0m4Yh`_N z$-L6hY~}}_nCt-<`?9h3uWgd@HVii?!KXeKSxW#LM&at_BQo+@5Z>(SDaaDw8 z9$BlS^5^!8{{Vs%c!NU|-~2w-t^7w28T$qH+gp+_eo)!+-|9-_Tq`%3Y1~Y}Qn6Kf-mH8jfRgR;m zXc9X?JofTP2tHheaD5Ic)$fn>jZ;n*mlyYP+p)=wq%4kqKYIOH{h@#0jGhMgrzEHu(m z;5hfM+j374ID0jUlBlCK(n`(3bDZ; z`!1cWY8RImQC!7k5N|aIF|b(Fwg}+x4SsBX)t?*2wz{?Cv#XR=C4u84dj2)>zkD8PEOO0mdJsKo86zj<#w&L7 zOgv)%ilZf&B!auK&lR+4X>-c0fPIYk;3>%j3bEyooewo(Y;vWFpG_#dj zSzmF|!8B$hATb1$1DcRyp#Xv2tbL5Rz*2MVPD?$+1;Jza()OBMUsY>zxl9hD=}ZXD zbB=xL?3#Or3Pum6IjJGi?W`c5VuQ1vo&&kQ5LrWpp_P4&0N+ zO3=~%AL<(Y(!pzKJ`r_+~(u7X5#=6SG4U4 zTiH<&Sjt-*43YR(&|e9E;Ge!R@tnxl_Jc#Tl#I3d>?C_9Q~bEErhXXy$9@#}G$WA4 z`mUm*ndd+e4_}oB9lDzM%Fa)kT*XDIIEKX&L`o(vp^hfQvc2kDR@XCc1w!h}jnEwE5zZ4n8rGhvH zSzX_rz+?K?fP>EioMO9gj=m~BDfo+i!MDQ;c_;zM1byTA;<$#HBLtQRSBn0F$nZ}O zgMziMuik$gasF#8!#b@}`X_I=23d$8idJ2tIpV8LtU(wc$WPE@)mPWm0V^3G@snQ9 zBYLCbi|3gE9Eu$CSn_Mqmia(j`teNu(3QC)rymnD8nxBeL=+n#S{RlstpB18PYNs zNq~PG)pfWwzH}hsIa_xot$m$9&jhK!s#?Tstgb*H@lz^%$lncB(w{QwKo}VS&l$(* zUd#I<>q`fVE?_ck^J2*NAg>>-c&f3^aColI;HQWWhx}`1>c9yYsprMo^X`8R<%CYGSm&rYuSD?Pu_R3yV#QSFQp#+EH@dm#3(42;mmjp8m`hq)GKaMN)XTf@k-6gnm1jq*NI0pop`~$@t2eQnaM6{`9e&@iMhqlY9 zyX~RuUkGJr?_=CZM&S0y#d-vm;a!v#Ad`SkO7lMnYE5pj5igbj!2ooxN&7=;7Ew=Z zOQ9Hc9c%gTJE0zDD4xb;2C6EAi4;iK3cHkK?j31NXRjD;m{Kq(fkcW`w*q+QsHaOA zfl9G#4u{shdEWPDn%=f#6V9s>e6BY4!NpQA{jNi_1A)%&0I8=XzEBD0xFn9;ekQ&& z{kwnQs`^*#`nO&e@FQAko+(B#TwUNvYo|9VzyZU^Gt)R6=RFV8aPJLc^Q=s8*a+SA zeHYBC)#Hbz>P_0m*^z1H5KBs!PNSe-#;3N^WYkfmiZe7(jm*k&st0~Qr#0}u{1dmu=t$$U#)O8Dck1gHg8&NVgg;CHPo;q+iUWe}wh7jKW0K!pXg&>nlQHdZR z=2Afbf1gVAGj0r?SzdH;Gxwv|&aNSSU+Wa5eJ*moKKMuBzloMFY2r->M%HaWz+0pKY0HD{s|rMYsWLZ)|Pt5hvjZnbo2_wvNLT8 z-!K{BK>z?fN6Vc1)j4HLc4Ab3qd67iWxP+B;9S0|h?H&8?%!~&8qi8==jU(4KlmZF z%nu}<8S#CU%7c_mLfznebH?P}3F+xxFXK=6B?rZy2KkQ{hZ|UhKjp5SI?m1XKudq) zwfgXvX63>xQ@K3`I@d*_csp0rVONJm)vh8vS}Rs?eY1=T{Vyl+Pl_QGW$jn^b^Foh zV(_>MYW0+2{Mtw26|d}L;@ulpir-l9=CP;D#06WMHi?dVe85-Gejfh-f=YPrQt+Z* z$KlOK%9cMdNsn(B>(e#**Wm97OJS?p4NpqAiUA_-OPC25&wPsegG19S#)D{(K>&cl zrBP9KV;@TW(|~iFe-bK>5f?$i*U{PEYh3)hi+Ga_l};a5rm87lXQHwElze6Vne`8c z+N8FZcC*1e1gk3{1RC-kYr*oud5M`p#&MBf(%35RO12HiH z&N_zwrExA-MYmh4GD- zgDh?Ittu!i*4OWOARrCxf!FY=p8`K=jXLL1I&X-tAhKi_isn*wKTZkl^*)u$kMYMd zoeyn;!YAtA`~%sK1kr{GVxZx4<9pZjP6r#J7Ge_<-(_a`0)|cHEC?UB8-F>ZgXFwAD12?yc^kx`t7dXxzw$ zo-x|I&-RA#ta>a)$|)PnZb;|=!LQ3Pel~GtHxTGksHv{0M^*D@k(A+Kh{UWcDW$Hu z9|CG$@Jug*KMgLWiXAgk)|elbO-A&wKKP6xk?civUJUqq;h%>2*J)Gy7vj)+(c=O?{-G_$PJ8x{4eMCa=#Z@B%}2bE#4 z^ps;5rn=Zq8R%(rtvpGWUsIO)gI+`N4^p`B{fyTuGc0JVUvR)s0m-jpxz(e*(OF9n z#Ak3ncn;O_XYJAPy4%AZ1D8y;WQ$YPT*Vq7`Ia-Bu|I$xjeTzmWz{iQxKM(>c6s@Z zEn(=+vujU~npeah_)PRjZ<8pp??oL+3UQozb?4f==k|;EhQ12$CZTlF=0$|6FGIP3 z!T!I6bRH5b;ZKKJU7;u@g4r_1yA{iSB7YkBfA+=rmoBxb+vu=LS~zng{r+yt_yg14 zzh>e5nl;+I<0?xS$iJNbpqSdrA8rl67h)*;9T z*y4~v&Nnj^2aF1>a;mOEvlCysK_slYAI5bga(r0_y?CdMJa2R2-D+#g zi3>c0;d?0T1!oT$-yaQ)E$#`nRtx~^*Qe65p5V!n!~$63(-q?7`AjHIRXVfuZY1Ms zxsD!|8kUMFb9t5w%t(#4AbfIyahvK?F1Fb`XBss`d8yVE9HFnIAUPE=(~OA^cRJB zgQ(|0pKthP@rthmXM>&r_pea+eX1;Rn|Vnw$-(xo6!7N16qf4Bq=zAoJvgsH@K&k5 zbN~PkJhm(OUo*oiH2NR1V=&&r@AcQts$O0C)1v4h{+R zACaq`DbS9(*3$`g!qG0_>V5r>PsY9-{{Vub{@(Wg0JC?6X7D$Ibp}rtU&a>hc$@w~ zHswwgNabfBj!!BMM>wx9AmO}TbB~S#2^+Te=$BT{mw1dd96PIB>be;p@Kj&;DP_OH z?LPP6_klGw{@#$7bzM%`f&R~4h6s;&dBeBxjE)Hv`B|!K^JNLoTg-Jkq?9yo_?p#It=*uUz)$ip%rCWgrZXQ(xRX9l^LfhXk;=c-~q! zF0J+d0Dyi!pK&crWSnE9Q$Fnf0D?aJUXQ|FKG!sBnU*NEYh;=r-R6yl%08fz_*d)y z0KvJgZVVE_vY; zzW}^#ZLau#O4MzbJ&pCMT}H#^EUu)Eow0-Y*W{il1&2X3pfQP2|YY zG3Z9%2tTE8*YR2`B(6gNlY^7=ujU+18Pmknr4^&Tr>&M_B|0maYMqazKj5Encu!Nd z)h(xr!haN7znD^G4KLaLP^`K1Y~+rcm(*9($!@WzAysqv57RaH>2u?)N5fwbS5(sP zuC(jxIYUKp1ch2NgX!(YIr?KY^>4r*_$kh#VH`GIG1E?^67lxSAR?b0uNnCX>&le+ zSM{fb{vqV}JieA)kEa?^iukOx^JnEgA^2mPRK(9R!OPmlTJrT>(&*Qr_Vo7gu){2D zPh5=gS=x@REP9=trJN#C?nTMY7Tz$Y2kKjH2XIO4Uq5_X{{Vucd^q@9;rm@h?yhcx zj6C?=4ZFa&{w?_DIN)cmTK7MN{{RuR?~7gq(mX|^%3jA>w2JZ_#1`7>7z6GB#eVCS z=Xqu>Qu>WZ$*VtiXLIqa!ywFXRHI)TMp2BNmGsql9B0Mf*>g?!ovF{LCGFLn{NQtd z@nj4Sl>Y!iE5tl;`z&~e!0gf(4x?%Z6F@iZ9)x}6{YM>oXY65s$BYqC%NS)~*(iF9 zWLLp)hl80OdgWfyrB&bFi_zb@>W@z+<803Wl{m>x3!~`0PtV({(`tOB1%h=4imz{_ zt^AwiDhqRl^sjvVrF$Y4eio9Ttb9lKr4nLwsTxHhlcGg)g+80n}+;j zJXi347i1N39L}a$IVm_j8h5(r{JlCKw`JT#OA&>RA`o%Ee&-{nX)S3WNF5~yqK=}X z@%M@!z#bi*@?#Q85Qx<9az|gKbY3{P(|if1z4gkhL02lI5Lo+q*T|o=f5%txW#fdE zg}M!>px}K?dD(7LR=s%1pHaivWn9+0X4mf4{$~O4OUG@kYS%N#Gcl0xbCOSg*1TuO z{y2-nmUG?BAdWaxvpY66`~7=Cvrd&5Y8v*)u&3j+RuNx+{;)|axgQFY*KiBB&S1(>cWf?icwy!+n+VV8GpCLOEs$- zDJ>D1tZId1U>QOv$FZ(kTbetD54@=zx(czaYf-5xN(>Iw$oP+4j@1K5Nr>Ye!8xt4 zSVr}VwU4u_H?&NT82I)t3F$X?7gDTt_K`EOCkui90N23$Yx7Uzr^SnpieD3Mbr&aS zn-Q)~)KGW>>t6f&c>H@dR`U3A%5_=gB;B$ei_RDP`d7(b9Ej@vC$ozsgp#8DMtL>; zA>sc34J;lOSlX-Jm-!!uc!R`BrY4?WMpjo>^||#IjXog5;qM4N-Q1!m?QPYY9mqg- z{YmX#6?mJ)7d|4_Zm(_`q?+lBjh>??{0RK3(!Xe*h%$JyR!uesBGS+0kSlQ`jz2+O zTRnh6RFVkm?_Z?w-d7wYCt0m!sreU)d{pxsOmKAF;Y!K*%ef3vt952m`ctHmHXv+g z{4gn2#fsnnN7odOZt?O{iuzW5UjG0QRFU^p5FX^zQbvy;4EY0|I#Yn_@@Mg;nAwL2 z0Uq??L)>dbcVTcq^`|Ta##rFeASJL+413Z`kl5HxJ?gF?Rs`S-8g@YH38rKzQ^rjJ z%WlEPG#Xrf;pjy<9|w$+?@U!ac_M+K- z0yCNph|H8J&OjsiRI#8O{J@W1l>#xq0OZuF#C16}GCC>0dgg|ma8=chP)GBxvVY*2 z9}<7F{7HYIOvJ6!V&X1(72&@|&*5Je+Bq1{2E9-AS@C@S8u+`TNgcs}Jl;`0p|~Qx zTZ%IEi_5CheUH-oKh5QZ%&ESTcKgrS9|zqlM5wZ;5rytDYt%d=a(70{AOv6^%vaCf z4E#*Grk81Ok|RC>NHLC_XY?PPdJetue@OU4;LS_K8nnjWPtxHsN_Y(2f(-uv6BB{k zBon|j{B4+Jl_y*3^p`ZRZeH)F+<#cN2Tiu@qHliO{{XhtkL->6Jsa4hwwJ`(i@m;& zYU3;jQ<<1`Wljz{5>$T`ej9vH_>ri5LGe}gtEyekd4H%(^G`IcS>$$N%yN4YN&1uP zUGMFQ`&DZH0JPV|E8TNbl1Q!7Hue^Zd3q!H+l=^%6R9c`AG)98)O$!v5E%1JMqtAyy;d_F;2iPI5YO|R zXNvtvQ`21!%-$yM=Jttq_Ic5Rg(1iDuh}2?Bp=7)@eAOsww*l1ulzXQW7tVzW7--s z^u|E{0Cf6S;{KU%%OGGt0Q1LDUu%ECBR(}BhyMT^qS9rQEE@f}gl{-eG6KqexKcmh zRr$AwxkJU}Q}60b|^84vTt7{k4-=O-I4kq1$hiBb)^o$qWY{opHxfSsP>dPuT%Csy8&vGrylA50AF#$O>~!9)aXHHV#McydCo`Dx@|jDi@^E}y2b2* zFr)n&aoV{UCCNRM0(kBPQqw#fuc+N>a?GPgMh0gxZE$m)fORZL;Pe=;lYii)-?e+_ zz8jCjnnbHNak(PO+n%26K==FJqQ0jf%Bp7A$YAMhD_!C{{Z9v0L8nRlJ??lI@)cKF(sPdgSDhNzy#xg*k->#{{Y~dzZoy} zzuBimYb{q&v!6_oO9>ter-->m+@~P)+Td~NUyC|!s?uHV4}#|>j(XSXhx`){#c^1E z%uuUFh)$(B4Y*~#SnKw05ik+T@+x%jH;*iqt4Hf|;_y<2V=2Z_PCXWuOSO-^^uLdO zG_!~-elOO*AK$upc>2FIy2tGo;`3_pP2!DbYkzj+#83PQa7B2+{6bhE-GT_<1KzLb z9v!;z>l?eP&+OeE-asB=KY2HDBm4p8zYC8M=I%cJCTTD4OJ6O_EAYl&O7pKu2`&BD z-TG*Cx-X4l*L9<9aF=(N7ZL|%4$kr)bBwU}CcEDhd~(x18R)xYD%UE%EF+z~cR$j+ zSH%AS6ttg)@Xrs2;t;d$%K9+hgM15 zzPg@`4iAn#QJmu8No>0P-4WgVb^WETymdL0Zn2_-ryW8_ZP|= z=&PUooY%N(UMg7SAUgtm>-qbPFh1WtttH(r!5_HrtQ2x;54tyXjdcwESml^v8FJiFlFVzvBh@e(~RO1PF;V^oZ8E?XN%b6*Mm(fz6mT zQW++=kjW-VKR^$ltjIP00Qg1hXS-jT_C+zkt-wt6Z@>fikyNj*5(V7gkh~9bT;{7Z z`kl#gP6rAzz!m)+hQa%>idKr){z%O;sk)M{CwaYB%t>$NxRr}Zys_QSCm-WU_NH&V z7e3(CMuFEk7$c4iMisJf#1Zdax{6B3_^C=#la%*+ng;#UaTq^9MKtP6z=lExvBgm` zIpDT2OMp3MCXQQ~%W~kkQlyYU`sR>cqORkdo;j+4ka9^Q+JQd;o>1V7QMQjjj38{i_T}B#&WC zf=KOTY-b6ddS%FHP5}gZ)KXs_a7aG&1J3di2{c#;#sdKR9oZQ<)C+>x^o*G@7wzCNb{zH8AuZ+oU` z&1oIfvB4?%(|HPiDy=rCA8=;lum>W)Jiu^14-Jo=I#Im7&yo9PW8y^dS#&UzG?lF1 zpzFKVm=esy1HtGC?^&}*aB>LA;+AWSl0ITO)n}VLhRCnJrA;KPenpMNb4jb*dq`Ap zMty1V$@1_rO+pxx$jwNy07lca){=?E3Xhn-V<(pC4+Ayme+PVfb>Kf7X*#Ww0duEZ zrNm!00c9Y8^e2y@uQr9)kT-7pD{o1<`#4A30UZW1O?i0g3alI_s%qbP^_dPe(XASf zqd$HB0B7%vN#hR;=^C}Vu!ic|JCw=b23(J?1dph%dGVKoJPBjqX|Jb5hU)nR*O?pU zK_MLD)4hIV{{X=?{yoE~d=L8+_XJ#Mj9}ZH*^Kw^MueiTM4dcss)v1!Wc* zE}s!$61UAK9Ou=KIK_TXe0=!FH^sk*SGu&W!EPLw*PoGk1s>P~@y&Igwdd_ydGUW+ zdmAZU9U|4Xpj_s2&&=PgcuQVxZ0=k)QH&8^&>kM}L^7HmSgyZ$FUz6u++)Qw=KiCD ze&l{9-JK_gE(702j^$Cv2OJVJ&po)W+y4OgCNJ#a;N3^|G4RH}sq6O*7NBk?`z@v- z8@$Jjfyg_UY+TpjZjEr>dhHp=^w0V9{A>0{{s~p_b4iEx3%t`VZ&9u^%|_v)f<`W3 z5+btg2dB&==iJu^i&#m|D^3rp(Ba4`VyjVf@Un4jtyQmM?7s{6U*X5W1ea5c>Kgpc zp`wELL?ev*HqzP74;bmzyl>-A?E`b-jZRl-ipROUv<;O-><1?RSDNZS9UALLc!`E) zDTQWSx8^I&d_m*#WE-UnTy{KH^Qy~h;v}ObWV#=yWgImOJ|W_ii0^PkH)@c{i6Q>YdExzKTpwS z^XGAiX50u)4nVKaICq6>V&@oBR!gbw=DD^X2T9b#OO-9GcE26JX-z-j#f*^0A-dEg zQWhY<1U{$IzB2fS@gGp}*0U}3^~|$NG3t09Ks#cxd`05BpAla@#l+K1Bj+sVC#_@L zPC*1QBEO;de}=I6bu`kvyPwYdRmPQb89H!wf+d!6K>!n)j@9?d0r@~V&T1oYSR8Xp z0}@6CNw24t&DzJn#---9>V22{5o*Us_&szL%Cwhck)C)(uSVDWWGyXPR%YFd4A+VN z&Hf`#416V78IeS@$oVIM)1Reqe;t2l&$qPJ8f45_{#hp7f!`okbQPZ1q z`accCcwDn1p*qi19T2~?r|khQvvD?;r%dA9e6q5(cY1+d2YGr`i#A3$9QCK_8klxz zBx9C2135p9a~ieG_wx`NY+&RJ;MeO}K2=W*O;d`skLG?b;@RV?y459q#JY{e)x^b= zub0>w&yi=r1Z1DmkgTbUhd)D1c9g$a6n=H|aY-!?%<4_bPEFq9cFac!fH*z#PVyu? zfOGVwJ3m0|N79(?;Be#`q6xmoA>@KHNcQa-l1T&UP@~C^cd#Eyoi#ZUMFguae2NKc zQWgNI%k=i7Si|tLXFr8#-CSw%#7@~nhtYVf&6}8pAy?XhNyUtyDcTw~ILBkR9V{yl#qbuBxKbatJ6HCxjFnONCmf22672B_6*ztGfslo=kE-GQ>1DD z<1`M%VQhN!CZ+p10AyfQhC%27rsVYJ6r6&?BeyDg8k9x{QOz!WIU<0>jIbl?P}xxx z2GfuRY2%)|K&Enf3VP%L^5oDlc3@;+(c}piB!ERYZowx2Q5oWdx{W((R+=*wP7Xb3 zk+B0fAR4;GN|3-D)oJb7NGfu^f{Wa!RJhSF&N2z9V33B$2Lx4Z+Zg3eew3*;(bRoA z(s8-d3br&B_{Mi z&MLf;Z~-KJXo>Ji1azgyIoEG;*l#cl3}T+7U=HG|#~~}h=}$=yT;x=^n^US>h4#Kj zIjuWMh})1lj=W=<#)fUJ$RyS1ZVIU+f(Yqc)oH$DdiYF2THe+@@Agml=QqOJtwuTJ z5NX%Yg_9?#R^uM{ss1_s)Vhbnoz^z;wZ4@P%8{uc$?i>fExxSCr9+aZ_)B0^qf#v% z(A@RwUpYP=!%G(NPB)SIO&&bOLoND+IdaFpSLAEUsqU1qz}@-N8ss(z1ZJ`p{GJFo zsnX{l7HkUjy_TC;`InA!X|{AaZP<yGvHN9;BGLQmnl`|S=(#)U87{nGST zVa74*gI^xSs0GFeBDHic7f+$z!*y>okxK#GrA`fanbu8DABL40is#kv=MuaIA~i3k zQ}l~V_=h6LA~dB!955#%Jk}SCJ~!z;8n-fEUPOUG8vz@b`eMFB*Z%-&O-lDeh8uYr z-r>{t&ZnubH`Y9LcdJOxb3D_#9Ob0qzdyiucLzRd+9lZiQ#SEK2|_FCk>-;}xBP4U zu5bKbB-UDM8%rO$Hk>;SYr^$iW=n|)k=T|wKQ>ACtjV=jIJmTC&K26SAGUHG45(yxRjix(Jc&gIe6i^2>8M$M@I0C&@2iW;J;#Wpm z^S(|9AB`+`KmalU9cqcW87CkCQJb)*B#+LtjXSF|o><;Slj?SNpB6O};m9aMmXRO{b{Lzm=kEhOoQ!8AVwgSP<`t3u$2HQ4fs?~ z2_pmnig&nNuJ&MMzEUZws>_2I2kBNB4l#p)O)(bW5(uD&xdF2bFhD;_jjR_usn61` z1|tIpB8N~&B=x4HVGyPO;Z9F{QocF>e=3wgwFXHhk1y*kVYOgh`N0JC5 zuTl zF}Q+rP7*E&1PY`iWF0{!pB=&5hEhkhOM$AYU5Z1<9Oj-MYJd(#YKNRbByIwq71+QW zgYQz{Z5sA81i&!KH9A~?yc1cUY8!@5MLlkp0|1(dQ@b{XF4`CV)AJ5RSc>Ql2>{km zxde=4VxRVm;DeAWH%RG*IipkUeuNsCZvjFwGg%9DjB*L5E$C8mK>TSsS{uhQv98yl z0{p}9G>fQ!cqGNi9t9!MsrLN4oM72_N5M2f(SG;hl~;^ zQMQLIOhl#e4p@i;kVv4%j1opD3|Ik?lSb1Y8?Zk*b~$>8${3xeBnoN*RFZOiDnR6C z<|jVbriH-H4>eI7qkTqzM_wryZ(N#?08R)dm&rNp^r6isW=|mqUbqyhNK!x`A8b^n z6WfXw76(0OQyQi~6cNu_V2ETXlr}` z!@XM(dJLa>LkK-{pVF(G*VvTyd(q{eQ&xqrW;~84Hu>WR0*-MyB~ck1@P4$OU(9j= z6?5$T4x*2<6VRGo*2McFpp8k!Fhw=t0kQ^jSC-gk1Q2P$&>opIdt#%9Z(}>l>A|Hd zwX#7utLT~R)m&##s+tCX{S!gle8TB z;;B_jajYDSw;P5rk|`DtbC3mSojVJXbDr3v`#XYmpUSONPhk3_%+Dlbk;$g{IbaQF zoj8Gz3jUPe?DBa$0p6cE4-X{DFKz(@=M;UM5r9Ce-(w}X$ph1xQ($@FfgYlcaV$KF z0@vJ{U$X(!5Gwq7b7LSJQ`b#)&j*fq6uqF<7H^@LZPZ{AK{TS#kdg@*twqx$BoLsV zrAz&hBAgW^zMN6*;~&}zDp>p!>yqSvPgB6G<&36|s(CIY=#k9%Td)d~j(Stp1;Hgq&2^CY z1*A|^k`JXk{6AoD#Ef%QXvxzM^jF%m-| z$vo7E4tg>AR=W6MqWQMuRD(if!7Iu3r16lpfU;VhQIq9L;0>gxJX59eEn zrLwpzxju_lx02!riE)X-2 zN$N36>x|jt)?1vSS+OUl9+cr|!vuyW>0LAFaU3#$J*gW^O#G@1Kdr8-Q$Or`Yjd7h zTXzeSih9Jr@}vXkGh0VaQcge^sG86z=KxTvwl$Yqb2nz(06HGxmPHuldiNE4*^c0v zW5m4*oc$>}mJh2Xp;>K}fFJ^K%`n>Khyg`f@^*8RgU1xot(;?z)`-@3u`;0&quP}@ zBmwP7_I>)uzZK?Z_gL7=iajYUJI_ohYLXE=fG({xsurv=g)%D6ZI}%I0Gh;4#5b zN@okmUVgMuQzfZ!lMvmWK2c9MXK?vPG*M9`Z4HGtXCvhlsdRI|0*WbE+M3i)wz{@J z0G=vP?IUEKNTP}?bfyiFj&qt+JHZ44k7_8S(WS)l*EuSu@TVjqMj(a9(uyl7ww{H> zj}}OC!jHm`S*n6^I3AQyP^9~jEy#ta&m<9_N*>uk=mvc#qJ<~i6CE5%2HXM%Jk;xM zx!@@LD59H_v8_2WcwkUQRZrnpV7HD(#>E&Olu=koYI-y_FI#Exxg!cc3X$}DHGDr4IX=L8IUQAG)AXHn=x&QX8>bL~u)R#FHfpK2(owx>15i>Dvm zKZOr?_~@UN6jj)XGAVD_6CqHarB-c4*pO95Jp~k1#T+<^H1s1nqlUpyK&L*aMn87B zKJ-ytG@%zAQOnN7Gpv9TfRcS_mnDLNHh_C#iYqy*PeDpf#b=$9B!zC>D!Xb72>}!G OqKeuo`m>r(L;u-t5k(9D diff --git a/hugo/layouts/partials/halloween/GetGbifKey.html b/hugo/layouts/partials/species_bundle/GetGbifKey.html similarity index 80% rename from hugo/layouts/partials/halloween/GetGbifKey.html rename to hugo/layouts/partials/species_bundle/GetGbifKey.html index 3cafd5c5..eb3acab4 100644 --- a/hugo/layouts/partials/halloween/GetGbifKey.html +++ b/hugo/layouts/partials/species_bundle/GetGbifKey.html @@ -1,5 +1,5 @@ {{ $url := replace . " " "%20" | lower | printf "https://api.gbif.org/v1/species/match?name=%s" }} -{{ $data := partial "halloween/get-remote-data.html" $url }} +{{ $data := partial "species_bundle/get-remote-data.html" $url }} {{ $key := "" }} {{ with $data.usageKey | string }} {{ $key = . }} diff --git a/hugo/layouts/partials/halloween/GetTaxId.html b/hugo/layouts/partials/species_bundle/GetTaxId.html similarity index 81% rename from hugo/layouts/partials/halloween/GetTaxId.html rename to hugo/layouts/partials/species_bundle/GetTaxId.html index f3af2240..c72afd88 100644 --- a/hugo/layouts/partials/halloween/GetTaxId.html +++ b/hugo/layouts/partials/species_bundle/GetTaxId.html @@ -1,5 +1,5 @@ {{ $url := replace . " " "%20" | printf "https://www.ebi.ac.uk/ena/taxonomy/rest/scientific-name/%s" }} -{{ $data := partial "halloween/get-remote-data.html" $url }} +{{ $data := partial "species_bundle/get-remote-data.html" $url }} {{ $taxId := "" }} {{ with index $data 0 "taxId" }} {{ $taxId = . }} diff --git a/hugo/layouts/partials/halloween/LineageConfig.html b/hugo/layouts/partials/species_bundle/LineageConfig.html similarity index 56% rename from hugo/layouts/partials/halloween/LineageConfig.html rename to hugo/layouts/partials/species_bundle/LineageConfig.html index cdf88d48..4e70e75b 100644 --- a/hugo/layouts/partials/halloween/LineageConfig.html +++ b/hugo/layouts/partials/species_bundle/LineageConfig.html @@ -1,7 +1,7 @@ {{- $taxId := . -}} {{- $url := printf "https://www.ebi.ac.uk/ena/browser/api/xml/%s" $taxId -}} -{{- with partial "halloween/get-remote-data.html" $url -}} - {{ . | partial "halloween/TaxonomyRanks" | jsonify (dict "prefix" " " "indent" " ") }} +{{- with partial "species_bundle/get-remote-data.html" $url -}} + {{ . | partial "species_bundle/TaxonomyRanks" | jsonify (dict "prefix" " " "indent" " ") }} {{- else -}} {{ warnf "Missing lineage information. Consider editing .Params.lineage" $taxId . }} {{- end -}} diff --git a/hugo/layouts/partials/halloween/TaxonomyRanks.html b/hugo/layouts/partials/species_bundle/TaxonomyRanks.html similarity index 100% rename from hugo/layouts/partials/halloween/TaxonomyRanks.html rename to hugo/layouts/partials/species_bundle/TaxonomyRanks.html diff --git a/hugo/layouts/partials/halloween/assembly_description.html b/hugo/layouts/partials/species_bundle/assembly_description.html similarity index 100% rename from hugo/layouts/partials/halloween/assembly_description.html rename to hugo/layouts/partials/species_bundle/assembly_description.html diff --git a/hugo/layouts/partials/halloween/assembly_stats.html b/hugo/layouts/partials/species_bundle/assembly_stats.html similarity index 100% rename from hugo/layouts/partials/halloween/assembly_stats.html rename to hugo/layouts/partials/species_bundle/assembly_stats.html diff --git a/hugo/layouts/partials/halloween/download_table.html b/hugo/layouts/partials/species_bundle/download_table.html similarity index 100% rename from hugo/layouts/partials/halloween/download_table.html rename to hugo/layouts/partials/species_bundle/download_table.html diff --git a/hugo/layouts/partials/halloween/get-remote-data.html b/hugo/layouts/partials/species_bundle/get-remote-data.html similarity index 100% rename from hugo/layouts/partials/halloween/get-remote-data.html rename to hugo/layouts/partials/species_bundle/get-remote-data.html diff --git a/hugo/layouts/partials/halloween/lineage.html b/hugo/layouts/partials/species_bundle/lineage.html similarity index 100% rename from hugo/layouts/partials/halloween/lineage.html rename to hugo/layouts/partials/species_bundle/lineage.html diff --git a/hugo/layouts/halloween/assembly.html b/hugo/layouts/species_bundle/assembly.html similarity index 91% rename from hugo/layouts/halloween/assembly.html rename to hugo/layouts/species_bundle/assembly.html index a83621ca..25610166 100644 --- a/hugo/layouts/halloween/assembly.html +++ b/hugo/layouts/species_bundle/assembly.html @@ -22,7 +22,7 @@

Description

{{ $context = (merge $context (dict "section" "description")) }} - {{ partial "halloween/assembly_description.html" $context }} + {{ partial "species_bundle/assembly_description.html" $context }}
@@ -55,14 +55,14 @@

Description

Assembly Statistics

{{ $context = merge $context (dict "section" "stats") }} - {{ partial "halloween/assembly_stats.html" $context }} + {{ partial "species_bundle/assembly_stats.html" $context }}

Annotation Statistics

{{ $context = merge $context (dict "section" "annotation") }} - {{ partial "halloween/assembly_stats.html" $context }} + {{ partial "species_bundle/assembly_stats.html" $context }}
diff --git a/hugo/layouts/halloween/baseof.html b/hugo/layouts/species_bundle/baseof.html similarity index 100% rename from hugo/layouts/halloween/baseof.html rename to hugo/layouts/species_bundle/baseof.html diff --git a/hugo/layouts/halloween/browser.html b/hugo/layouts/species_bundle/browser.html similarity index 100% rename from hugo/layouts/halloween/browser.html rename to hugo/layouts/species_bundle/browser.html diff --git a/hugo/layouts/halloween/species_download.html b/hugo/layouts/species_bundle/species_download.html similarity index 90% rename from hugo/layouts/halloween/species_download.html rename to hugo/layouts/species_bundle/species_download.html index 1136f81c..5c0ce612 100644 --- a/hugo/layouts/halloween/species_download.html +++ b/hugo/layouts/species_bundle/species_download.html @@ -56,11 +56,11 @@

Data availability

- {{ partial "halloween/download_table" (dict "tableType" "long" "staticDirPath" $staticDirPath "tableData" $tableData "aliasFileURL" $aliasFileURL )}} + {{ partial "species_bundle/download_table" (dict "tableType" "long" "staticDirPath" $staticDirPath "tableData" $tableData "aliasFileURL" $aliasFileURL )}}
- {{ partial "halloween/download_table" (dict "tableType" "short" "staticDirPath" $staticDirPath "tableData" $tableData "aliasFileURL" $aliasFileURL )}} + {{ partial "species_bundle/download_table" (dict "tableType" "short" "staticDirPath" $staticDirPath "tableData" $tableData "aliasFileURL" $aliasFileURL )}}
diff --git a/hugo/layouts/halloween/species_intro.html b/hugo/layouts/species_bundle/species_intro.html similarity index 98% rename from hugo/layouts/halloween/species_intro.html rename to hugo/layouts/species_bundle/species_intro.html index a77224b9..ff3bf9e2 100644 --- a/hugo/layouts/halloween/species_intro.html +++ b/hugo/layouts/species_bundle/species_intro.html @@ -63,7 +63,7 @@

Taxonomy

"lineage" . "taxonomy_ranks" (or $.Page.Params.taxonomy_ranks $.Site.Params.taxonomy_ranks) }} - {{ partial "halloween/lineage.html" $context }} + {{ partial "species_bundle/lineage.html" $context }} {{ else }} {{ warnidf "missing-taxonomy" "Missing taxonmomy lineage for %s" .Path }} {{ end }} From 25537e93529f33f329f6a91cdf3e79bd0ae3dbb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Wed, 20 Nov 2024 16:40:14 +0100 Subject: [PATCH 48/59] Explicit content type --- hugo/archetypes/species/_index.md | 7 ++++--- hugo/archetypes/species/assembly/index.md | 4 +++- hugo/archetypes/species/download/index.md | 5 +++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/hugo/archetypes/species/_index.md b/hugo/archetypes/species/_index.md index 2793466e..97b31132 100644 --- a/hugo/archetypes/species/_index.md +++ b/hugo/archetypes/species/_index.md @@ -5,6 +5,10 @@ title: {{ $scientificName }} subtitle: lastmod: {{ .Date }} +type: species_bundle +layout: "species_intro" +weight: 1 + resources: - title: '{{ $scientificName }}' name: cover_image @@ -13,9 +17,6 @@ resources: attribution: CC-BY-SA link: "https://placehold.co/600x400/png" -layout: "species_bundle/species_intro" -weight: 1 - {{ $taxId := partial "species_bundle/GetTaxId" $scientificName }} lineage: {{ partial "species_bundle/LineageConfig" $taxId }} # Use this setting to override the default taxonomy ranks to display. diff --git a/hugo/archetypes/species/assembly/index.md b/hugo/archetypes/species/assembly/index.md index b53f4aef..cd1d1951 100644 --- a/hugo/archetypes/species/assembly/index.md +++ b/hugo/archetypes/species/assembly/index.md @@ -1,6 +1,8 @@ --- title: "Genome assembly" -layout: "species_bundle/assembly" +type: species_bundle +layout: "assembly" +lastmod: {{ .Date }} --- ### Methods diff --git a/hugo/archetypes/species/download/index.md b/hugo/archetypes/species/download/index.md index 1c41de67..fcbd11d0 100644 --- a/hugo/archetypes/species/download/index.md +++ b/hugo/archetypes/species/download/index.md @@ -1,6 +1,7 @@ --- title: "Download" -layout: "species_bundle/species_download" -url: "jacobus_lanternibus/download" +type: species_bundle +layout: "species_download" weight: 3 +lastmod: {{ .Date }} --- From c65dc670b772c9280886042244ed16c671e859d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Wed, 20 Nov 2024 16:40:32 +0100 Subject: [PATCH 49/59] Manage URL in site configuration --- hugo/config/_default/hugo.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/hugo/config/_default/hugo.yaml b/hugo/config/_default/hugo.yaml index b43718a4..0902c90b 100644 --- a/hugo/config/_default/hugo.yaml +++ b/hugo/config/_default/hugo.yaml @@ -12,6 +12,12 @@ markup: endLevel: 4 ordered: false +permalinks: + section: + species: /:sections[1:] + page: + species: /:sections[1:]/:slug + menus: main: - name: Home From 0fcaf2b57113ae5e1b62a75f062fe20aae5f639f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Wed, 20 Nov 2024 16:46:33 +0100 Subject: [PATCH 50/59] Bona fide pumpkin example --- hugo/content/species/cucurbita_pepo/_index.md | 94 ++++++++++++++++++ .../cucurbita_pepo/assembly/assembly.yaml | 29 ++++++ .../cucurbita_pepo/assembly/contrib.md | 14 +++ .../species/cucurbita_pepo/assembly/index.md | 8 ++ .../cucurbita_pepo/download/data_tracks.json | 16 +++ .../species/cucurbita_pepo/download/index.md | 7 ++ .../cucurbita_pepo/lineage.default.yaml | 35 +++++++ hugo/content/species/cucurbita_pepo/pepo.jpg | Bin 0 -> 80329 bytes 8 files changed, 203 insertions(+) create mode 100644 hugo/content/species/cucurbita_pepo/_index.md create mode 100644 hugo/content/species/cucurbita_pepo/assembly/assembly.yaml create mode 100644 hugo/content/species/cucurbita_pepo/assembly/contrib.md create mode 100644 hugo/content/species/cucurbita_pepo/assembly/index.md create mode 100644 hugo/content/species/cucurbita_pepo/download/data_tracks.json create mode 100644 hugo/content/species/cucurbita_pepo/download/index.md create mode 100644 hugo/content/species/cucurbita_pepo/lineage.default.yaml create mode 100644 hugo/content/species/cucurbita_pepo/pepo.jpg diff --git a/hugo/content/species/cucurbita_pepo/_index.md b/hugo/content/species/cucurbita_pepo/_index.md new file mode 100644 index 00000000..36b4b57a --- /dev/null +++ b/hugo/content/species/cucurbita_pepo/_index.md @@ -0,0 +1,94 @@ +--- +date: 2024-11-20T16:23:21+01:00 +title: Cucurbita pepo +subtitle: +lastmod: 2024-11-20T16:23:21+01:00 +draft: true +type: species_bundle +layout: "species_intro" +weight: 1 + +resources: +- title: 'Cucurbita pepo' + name: cover_image + src: "pepo.jpg" + params: + attribution: CC-BY-SA + link: "https://placehold.co/600x400/png" + + +lineage: { + "clade": { + "scientificName": "Embryophyta", + "taxId": "3193" + }, + "class": { + "scientificName": "Magnoliopsida", + "taxId": "3398" + }, + "family": { + "scientificName": "Cucurbitaceae", + "taxId": "3650" + }, + "genus": { + "scientificName": "Cucurbita", + "taxId": "3660" + }, + "kingdom": { + "scientificName": "Viridiplantae", + "taxId": "33090" + }, + "order": { + "scientificName": "Cucurbitales", + "taxId": "71239" + }, + "phylum": { + "scientificName": "Streptophyta", + "taxId": "35493" + }, + "species": { + "scientificName": "Cucurbita pepo", + "taxId": "3663" + }, + "subphylum": { + "scientificName": "Streptophytina", + "taxId": "131221" + }, + "superkingdom": { + "scientificName": "Eukaryota", + "taxId": "2759" + }, + "tribe": { + "scientificName": "Cucurbiteae", + "taxId": "1003878" + } + } +# Use this setting to override the default taxonomy ranks to display. +# See config/_default/params.yaml for the syntax to use. +taxonomy_ranks: +params: + banner_title: "Species overview" + goat_webpage: 'https://goat.genomehubs.org/record?recordId=3663&result=taxon&taxonomy=ncbi' + + # Map + gbif_taxon_id: 2874508 + latitude: 0 + longitude: 0 + initialZoom: 1 + + # Optional + iucn_category: + iucn_link: + swe_red_list: + swe_red_list_link: +--- + +### Description + +#### Genome reference + +#### References + +#### Changelog + +- Nov 20, 2024 - Species first published on the Portal diff --git a/hugo/content/species/cucurbita_pepo/assembly/assembly.yaml b/hugo/content/species/cucurbita_pepo/assembly/assembly.yaml new file mode 100644 index 00000000..c438d3e1 --- /dev/null +++ b/hugo/content/species/cucurbita_pepo/assembly/assembly.yaml @@ -0,0 +1,29 @@ +description: + name: + type: + level: + repr: + accession: +stats: + length: + gc: + contig: + contig_n50: + contig_l50: + contig_n90: + contig_l90: + scaffold: + scaffold_n50: + scaffold_l50: + scaffold_n90: + scaffold_l90: + scaffold_gt_10: + busco: +annotation: + gene_cnt: + transcript_cnt: + exons_avg: + gene_length_avg: + transcript_length_avg: + exon_length_avg: + intron_length_avg: diff --git a/hugo/content/species/cucurbita_pepo/assembly/contrib.md b/hugo/content/species/cucurbita_pepo/assembly/contrib.md new file mode 100644 index 00000000..97e53c71 --- /dev/null +++ b/hugo/content/species/cucurbita_pepo/assembly/contrib.md @@ -0,0 +1,14 @@ +--- +build: + list: never + publishResources: false + render: never +--- + +### Contributor(s) + +### Publication(s) + +### Funding + +### Acknowledgements diff --git a/hugo/content/species/cucurbita_pepo/assembly/index.md b/hugo/content/species/cucurbita_pepo/assembly/index.md new file mode 100644 index 00000000..730cbbf6 --- /dev/null +++ b/hugo/content/species/cucurbita_pepo/assembly/index.md @@ -0,0 +1,8 @@ +--- +title: "Genome assembly" +type: species_bundle +layout: "assembly" +lastmod: 2024-11-20T16:23:21+01:00 +--- + +### Methods diff --git a/hugo/content/species/cucurbita_pepo/download/data_tracks.json b/hugo/content/species/cucurbita_pepo/download/data_tracks.json new file mode 100644 index 00000000..1ba0765d --- /dev/null +++ b/hugo/content/species/cucurbita_pepo/download/data_tracks.json @@ -0,0 +1,16 @@ +[ + { + "dataTrackName": "Genome", + "description": "Reference genome sequence", + "fileName": "placeholder.fasta.gz", + "links": [ + {"Download": "#"}, + {"Website": "#"}, + {"Article": "#"} + ], + "accessionOrDOI": "GCA_1234", + "principalInvestigator": "Someone", + "principalInvestigatorAffiliation": "Some university", + "firstDateOnPortal": "15 October 2024" + } +] diff --git a/hugo/content/species/cucurbita_pepo/download/index.md b/hugo/content/species/cucurbita_pepo/download/index.md new file mode 100644 index 00000000..1a68a790 --- /dev/null +++ b/hugo/content/species/cucurbita_pepo/download/index.md @@ -0,0 +1,7 @@ +--- +title: "Download" +type: species_bundle +layout: "species_download" +weight: 3 +lastmod: 2024-11-20T16:23:21+01:00 +--- diff --git a/hugo/content/species/cucurbita_pepo/lineage.default.yaml b/hugo/content/species/cucurbita_pepo/lineage.default.yaml new file mode 100644 index 00000000..e70836a1 --- /dev/null +++ b/hugo/content/species/cucurbita_pepo/lineage.default.yaml @@ -0,0 +1,35 @@ +# Example lineage configuration. +# This format is expeced by the .Params.lineage front matter key in `_index.md` +clade: + scientificName: Embryophyta + taxId: "3193" +class: + scientificName: Magnoliopsida + taxId: "3398" +family: + scientificName: Cucurbitaceae + taxId: "3650" +genus: + scientificName: Cucurbita + taxId: "3660" +kingdom: + scientificName: Viridiplantae + taxId: "33090" +order: + scientificName: Cucurbitales + taxId: "71239" +phylum: + scientificName: Streptophyta + taxId: "35493" +species: + scientificName: Cucurbita pepo + taxId: "3663" +subphylum: + scientificName: Streptophytina + taxId: "131221" +superkingdom: + scientificName: Eukaryota + taxId: "2759" +tribe: + scientificName: Cucurbiteae + taxId: "1003878" diff --git a/hugo/content/species/cucurbita_pepo/pepo.jpg b/hugo/content/species/cucurbita_pepo/pepo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a6fef634dce3426b6f5f0f1dea2e83cd48034fb3 GIT binary patch literal 80329 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

a-<$4Opv{N*y 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 Date: Thu, 21 Nov 2024 11:07:30 +0100 Subject: [PATCH 51/59] Cascade draft status --- hugo/archetypes/species/_index.md | 4 ++++ hugo/content/species/cucurbita_pepo/_index.md | 3 +++ 2 files changed, 7 insertions(+) diff --git a/hugo/archetypes/species/_index.md b/hugo/archetypes/species/_index.md index 97b31132..10bdc6dd 100644 --- a/hugo/archetypes/species/_index.md +++ b/hugo/archetypes/species/_index.md @@ -5,6 +5,10 @@ title: {{ $scientificName }} subtitle: lastmod: {{ .Date }} +draft: true +cascade: + params: + draft: true type: species_bundle layout: "species_intro" weight: 1 diff --git a/hugo/content/species/cucurbita_pepo/_index.md b/hugo/content/species/cucurbita_pepo/_index.md index 36b4b57a..b60409c1 100644 --- a/hugo/content/species/cucurbita_pepo/_index.md +++ b/hugo/content/species/cucurbita_pepo/_index.md @@ -4,6 +4,9 @@ title: Cucurbita pepo subtitle: lastmod: 2024-11-20T16:23:21+01:00 draft: true +cascade: + params: + draft: true type: species_bundle layout: "species_intro" weight: 1 From fd1fe9ee5ddf67664530cc23be6f90a40d8db773 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Thu, 21 Nov 2024 11:11:30 +0100 Subject: [PATCH 52/59] Rename layouts --- hugo/archetypes/species/_index.md | 2 +- hugo/archetypes/species/assembly/index.md | 2 +- hugo/archetypes/species/download/index.md | 2 +- hugo/content/species/cucurbita_pepo/_index.md | 2 +- hugo/content/species/cucurbita_pepo/assembly/index.md | 4 ++-- hugo/content/species/cucurbita_pepo/download/index.md | 4 ++-- .../species_bundle/{species_download.html => download.html} | 0 .../layouts/species_bundle/{species_intro.html => intro.html} | 0 8 files changed, 8 insertions(+), 8 deletions(-) rename hugo/layouts/species_bundle/{species_download.html => download.html} (100%) rename hugo/layouts/species_bundle/{species_intro.html => intro.html} (100%) diff --git a/hugo/archetypes/species/_index.md b/hugo/archetypes/species/_index.md index 10bdc6dd..473e3eaa 100644 --- a/hugo/archetypes/species/_index.md +++ b/hugo/archetypes/species/_index.md @@ -10,7 +10,7 @@ cascade: params: draft: true type: species_bundle -layout: "species_intro" +layout: intro weight: 1 resources: diff --git a/hugo/archetypes/species/assembly/index.md b/hugo/archetypes/species/assembly/index.md index cd1d1951..1531b6b6 100644 --- a/hugo/archetypes/species/assembly/index.md +++ b/hugo/archetypes/species/assembly/index.md @@ -1,7 +1,7 @@ --- title: "Genome assembly" type: species_bundle -layout: "assembly" +layout: assembly lastmod: {{ .Date }} --- diff --git a/hugo/archetypes/species/download/index.md b/hugo/archetypes/species/download/index.md index fcbd11d0..d7df21ce 100644 --- a/hugo/archetypes/species/download/index.md +++ b/hugo/archetypes/species/download/index.md @@ -1,7 +1,7 @@ --- title: "Download" type: species_bundle -layout: "species_download" +layout: download weight: 3 lastmod: {{ .Date }} --- diff --git a/hugo/content/species/cucurbita_pepo/_index.md b/hugo/content/species/cucurbita_pepo/_index.md index b60409c1..2f1ef7fd 100644 --- a/hugo/content/species/cucurbita_pepo/_index.md +++ b/hugo/content/species/cucurbita_pepo/_index.md @@ -8,7 +8,7 @@ cascade: params: draft: true type: species_bundle -layout: "species_intro" +layout: "intro" weight: 1 resources: diff --git a/hugo/content/species/cucurbita_pepo/assembly/index.md b/hugo/content/species/cucurbita_pepo/assembly/index.md index 730cbbf6..a786f30d 100644 --- a/hugo/content/species/cucurbita_pepo/assembly/index.md +++ b/hugo/content/species/cucurbita_pepo/assembly/index.md @@ -1,8 +1,8 @@ --- title: "Genome assembly" type: species_bundle -layout: "assembly" -lastmod: 2024-11-20T16:23:21+01:00 +layout: assembly +lastmod: 2024-11-21T10:58:49+01:00 --- ### Methods diff --git a/hugo/content/species/cucurbita_pepo/download/index.md b/hugo/content/species/cucurbita_pepo/download/index.md index 1a68a790..60449764 100644 --- a/hugo/content/species/cucurbita_pepo/download/index.md +++ b/hugo/content/species/cucurbita_pepo/download/index.md @@ -1,7 +1,7 @@ --- title: "Download" type: species_bundle -layout: "species_download" +layout: download weight: 3 -lastmod: 2024-11-20T16:23:21+01:00 +lastmod: 2024-11-21T10:58:49+01:00 --- diff --git a/hugo/layouts/species_bundle/species_download.html b/hugo/layouts/species_bundle/download.html similarity index 100% rename from hugo/layouts/species_bundle/species_download.html rename to hugo/layouts/species_bundle/download.html diff --git a/hugo/layouts/species_bundle/species_intro.html b/hugo/layouts/species_bundle/intro.html similarity index 100% rename from hugo/layouts/species_bundle/species_intro.html rename to hugo/layouts/species_bundle/intro.html From c298ee33e11ae75e8046d7ac44138c19687d8360 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Thu, 21 Nov 2024 11:16:43 +0100 Subject: [PATCH 53/59] Remove unused layouts --- hugo/layouts/species_bundle/baseof.html | 100 ----------------------- hugo/layouts/species_bundle/browser.html | 60 -------------- 2 files changed, 160 deletions(-) delete mode 100644 hugo/layouts/species_bundle/baseof.html delete mode 100644 hugo/layouts/species_bundle/browser.html diff --git a/hugo/layouts/species_bundle/baseof.html b/hugo/layouts/species_bundle/baseof.html deleted file mode 100644 index cca47405..00000000 --- a/hugo/layouts/species_bundle/baseof.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - {{ printf "%s | %s" (or .Params.banner_title .Title) .Site.Title }} - - {{ $description := partial "create_description.html" . }} - - - - - - - - - - - {{ template "_internal/opengraph.html" . }} - {{ template "_internal/twitter_cards.html" . }} - - - - - - - - {{ block "early_connections" . }} {{ end }} - - - - - - - - - - - - {{ $cssResource := resources.Get "css/styles.css" | resources.Minify | resources.Fingerprint }} - - - - - - - {{ block "script_includes" . }} {{ end }} - - - - - - {{- partial "navbar.html" . -}} - - {{ if eq .Kind "home" }} - {{- partial "hero.html" . -}} - {{ else }} - {{- partial "banner.html" . -}} - {{ end }} - - {{ $isGenomePage := eq .RelPermalink "/genome-browser/" }} - {{ if and (not $isGenomePage) (not .IsHome) }} - {{- partial "breadcrumbs.html" . -}} - {{ end }} - - {{- block "header" . }}{{- end }} -

- - {{ if $isGenomePage }} -
- {{ else }} -
- {{ end }} - - {{ if .Params.toc }} -
-
{{- partial "toc.html" . -}}
-
{{- block "main" . }}{{- end }}
-
- {{ else }} - {{- block "main" . }}{{- end }} - {{ end }} -
-
- - {{ if not $isGenomePage }} -
- {{- partial "footer.html" . -}} - {{ end }} - {{ if hugo.IsDevelopment }} -
 {{ debug.Dump . }} 
- {{ end }} - - diff --git a/hugo/layouts/species_bundle/browser.html b/hugo/layouts/species_bundle/browser.html deleted file mode 100644 index ae2abb84..00000000 --- a/hugo/layouts/species_bundle/browser.html +++ /dev/null @@ -1,60 +0,0 @@ -{{ define "main" }} - -
-
-
-
- - - -
- -{{ if hugo.IsDevelopment }} - -{{ end }} - - - - -{{ end }} From b5f300e5e3c1bd86596c8f196bbd5fa7e293c60b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Thu, 21 Nov 2024 11:24:28 +0100 Subject: [PATCH 54/59] Revert add_new_species --- scripts/add_new_species.py | 69 +++++++++++++++++--------------------- 1 file changed, 30 insertions(+), 39 deletions(-) diff --git a/scripts/add_new_species.py b/scripts/add_new_species.py index 3989108d..bed46e2f 100644 --- a/scripts/add_new_species.py +++ b/scripts/add_new_species.py @@ -7,12 +7,8 @@ """ import argparse -import logging -import re import shutil -from collections import defaultdict from pathlib import Path -from string import Template import requests from get_taxonomy import EbiRestException, get_taxonomy @@ -77,47 +73,42 @@ def create_dirs(dir_name: str) -> tuple[Path, Path, Path]: return content_dir_path, data_dir_path, assets_dir_path -def slugify(name): - return re.sub(r"\s+", "_", name) - - -def get_template_context(species_name: str, tax_id: str | None = None) -> dict: - ctxt = defaultdict( - lambda: "[EDIT]", - species_name=species_name, - slug=slugify(species_name), - ) - try: - ctxt["gbif_taxon_key"] = get_gbif_taxon_key(species_name) - except (requests.HTTPError, KeyError): - logging.warn("Failed to get GBIF key for species: %s", species_name) - if tax_id: - ctxt["goat_link"] = make_goat_weblink(species_name=species_name, tax_id=tax_id) - return ctxt - - -def render(template_str, context): - return Template(template_str).substitute(context) - - -def load_template(template_name): - try: - return (TEMPLATE_DIR / template_name).read_text() - except IOError: - raise ValueError(f"Template not found: {template_name}") from None - - def add_content_files(species_name: str, content_dir_path: Path, tax_id: str) -> None: """ Add the species name to the template content files, then write them to disk. """ - ctxt = get_template_context(species_name, tax_id) + dir_name = species_name.replace(" ", "_").lower() for file_name in CONTENT_FILES: - template_str = load_template(file_name) - content = render(template_str, ctxt) - (out_file := content_dir_path / file_name).write_text(content) - logging.info("File created: %s", out_file.resolve()) + with open(TEMPLATE_DIR / file_name, "r") as file_in: + template = file_in.read() + + template = template.replace("SPECIES_NAME", species_name) + template = template.replace("SPECIES_FOLDER", dir_name) + + if file_name == INDEX_FILE: + try: + gbif_taxon_key = get_gbif_taxon_key(species_name=species_name) + template = template.replace("GBIF_TAXON_ID", gbif_taxon_key) + except (requests.exceptions.HTTPError, KeyError): + print( + f"""WARNING: Failed to get GBIF key for species: {args.species_name}. + Not to worry, + you can instead add it manually to the _index.md file in the species directory.""" + ) + template = template.replace("GBIF_TAXON_ID", "[EDIT]") + + if tax_id: + goat_link = make_goat_weblink(species_name=species_name, tax_id=tax_id) + template = template.replace("GOAT_WEBPAGE", goat_link) + else: + template = template.replace("GOAT_WEBPAGE", "[EDIT]") + + output_file_path = content_dir_path / file_name + + with open(output_file_path, "w") as file_out: + file_out.write(template) + print(f"File created: {output_file_path.resolve()}") def add_stats_file(data_dir_path: Path) -> None: From 46fc111deac504da30bf14e7ec3b973edeae733a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Thu, 21 Nov 2024 11:38:35 +0100 Subject: [PATCH 55/59] Revert add_new_specie templates --- scripts/templates/_index.md | 12 ++++++------ scripts/templates/assembly.md | 6 +++--- scripts/templates/download.md | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/scripts/templates/_index.md b/scripts/templates/_index.md index 2e1a9092..6d828d96 100644 --- a/scripts/templates/_index.md +++ b/scripts/templates/_index.md @@ -14,13 +14,13 @@ img_attrib_link: "[EDIT] - if there is no hyperlink available for this file, the # unless you were warned by the add-new-species.py script. layout: "species_intro" banner_title: "Species overview" -url: "${slug}" +url: "SPECIES_FOLDER" weight: 1 -science_name: "${species_name}" -lineage_data_path: "${slug}/taxonomy" +science_name: "SPECIES_NAME" +lineage_data_path: "SPECIES_FOLDER/taxonomy" -gbif_taxon_id: "${gbif_taxon_id}" -goat_webpage: "${goat_webpage}" +gbif_taxon_id: "GBIF_TAXON_ID" +goat_webpage: "GOAT_WEBPAGE" # Optional params below, @@ -53,4 +53,4 @@ If you have used the pages for this species in the Genome Portal, please refer t #### Changelog -- [TODO - Add date] - Species first published on the Portal +- [TODO - Add date] - Species first published on the Portal \ No newline at end of file diff --git a/scripts/templates/assembly.md b/scripts/templates/assembly.md index 6fef44f9..6a61cc37 100644 --- a/scripts/templates/assembly.md +++ b/scripts/templates/assembly.md @@ -11,11 +11,11 @@ key_info: # unless you were warned by the add-new-species.py script. title: "Genome assembly" layout: "species_assembly" -url: "${slug}/assembly" +url: "SPECIES_FOLDER/assembly" weight: 2 -stats_data_path: "${slug}/species_stats" -lineage_data_path: "${slug}/taxonomy" +stats_data_path: "SPECIES_FOLDER/species_stats" +lineage_data_path: "SPECIES_FOLDER/taxonomy" --- ### Contributor(s) diff --git a/scripts/templates/download.md b/scripts/templates/download.md index 35f05707..fa952a34 100644 --- a/scripts/templates/download.md +++ b/scripts/templates/download.md @@ -3,6 +3,6 @@ alias_file_url: "[EDIT]" # The below parameters were generated automatically and do not need to be changed. title: "Download" layout: "species_download" -url: "${slug}/download" +url: "SPECIES_FOLDER/download" weight: 3 --- From 85c710b55e0b0e3f4782cbdf258e7e3e4bba8b45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Thu, 21 Nov 2024 11:43:57 +0100 Subject: [PATCH 56/59] Revert out-of-topic changes --- hugo/content/species/_index.md | 4 ++-- hugo/layouts/partials/last_updated.html | 7 ++++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/hugo/content/species/_index.md b/hugo/content/species/_index.md index 7d50b2ff..ba412b29 100644 --- a/hugo/content/species/_index.md +++ b/hugo/content/species/_index.md @@ -1,7 +1,7 @@ --- # This prevents the species folder from generating a html file for the path [webaddress]/species/ -build: +_build: render: never list: never publishResources: false ---- +--- \ No newline at end of file diff --git a/hugo/layouts/partials/last_updated.html b/hugo/layouts/partials/last_updated.html index 674abf06..d74d42ed 100644 --- a/hugo/layouts/partials/last_updated.html +++ b/hugo/layouts/partials/last_updated.html @@ -1,5 +1,10 @@ +{{ $lastUpdated := .Params.last_updated }} +{{ if not (or .IsHome .IsSection) }} + {{ $lastUpdated = .Parent.Params.last_updated }} +{{ end }} +

- Page last updated: {{ .Lastmod | time.Format ":date_long"}} + Page last updated: {{ $lastUpdated }}

From aeb558ce3c6a403e846781c1a3ce1f06c6041f4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Thu, 21 Nov 2024 13:24:13 +0100 Subject: [PATCH 57/59] =?UTF-8?q?Genome=20portal=20kit=20=F0=9F=8E=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hugo/{config/_default/hugo.yaml => config.yaml} | 8 +++----- hugo/config/production/hugo.yaml | 1 - hugo/themes/genome-portal-kit/README.md | 8 ++++++++ .../genome-portal-kit}/archetypes/species/_index.md | 0 .../archetypes/species/assembly/assembly.yaml | 0 .../archetypes/species/assembly/contrib.md | 0 .../archetypes/species/assembly/index.md | 0 .../archetypes/species/download/data_tracks.json | 0 .../archetypes/species/download/index.md | 0 .../archetypes/species/lineage.default.yaml | 0 .../archetypes/species/placeholder.png | Bin .../genome-portal-kit/config/_default/hugo.yaml | 3 +++ .../genome-portal-kit}/config/_default/params.yaml | 0 .../layouts/partials/species_bundle/GetGbifKey.html | 0 .../layouts/partials/species_bundle/GetTaxId.html | 0 .../partials/species_bundle/LineageConfig.html | 0 .../partials/species_bundle/TaxonomyRanks.html | 0 .../species_bundle/assembly_description.html | 0 .../partials/species_bundle/assembly_stats.html | 0 .../partials/species_bundle/download_table.html | 0 .../partials/species_bundle/get-remote-data.html | 0 .../layouts/partials/species_bundle/lineage.html | 0 .../layouts/species_bundle/assembly.html | 0 .../layouts/species_bundle/download.html | 0 .../layouts/species_bundle/intro.html | 0 25 files changed, 14 insertions(+), 6 deletions(-) rename hugo/{config/_default/hugo.yaml => config.yaml} (92%) delete mode 100644 hugo/config/production/hugo.yaml create mode 100644 hugo/themes/genome-portal-kit/README.md rename hugo/{ => themes/genome-portal-kit}/archetypes/species/_index.md (100%) rename hugo/{ => themes/genome-portal-kit}/archetypes/species/assembly/assembly.yaml (100%) rename hugo/{ => themes/genome-portal-kit}/archetypes/species/assembly/contrib.md (100%) rename hugo/{ => themes/genome-portal-kit}/archetypes/species/assembly/index.md (100%) rename hugo/{ => themes/genome-portal-kit}/archetypes/species/download/data_tracks.json (100%) rename hugo/{ => themes/genome-portal-kit}/archetypes/species/download/index.md (100%) rename hugo/{ => themes/genome-portal-kit}/archetypes/species/lineage.default.yaml (100%) rename hugo/{ => themes/genome-portal-kit}/archetypes/species/placeholder.png (100%) create mode 100644 hugo/themes/genome-portal-kit/config/_default/hugo.yaml rename hugo/{ => themes/genome-portal-kit}/config/_default/params.yaml (100%) rename hugo/{ => themes/genome-portal-kit}/layouts/partials/species_bundle/GetGbifKey.html (100%) rename hugo/{ => themes/genome-portal-kit}/layouts/partials/species_bundle/GetTaxId.html (100%) rename hugo/{ => themes/genome-portal-kit}/layouts/partials/species_bundle/LineageConfig.html (100%) rename hugo/{ => themes/genome-portal-kit}/layouts/partials/species_bundle/TaxonomyRanks.html (100%) rename hugo/{ => themes/genome-portal-kit}/layouts/partials/species_bundle/assembly_description.html (100%) rename hugo/{ => themes/genome-portal-kit}/layouts/partials/species_bundle/assembly_stats.html (100%) rename hugo/{ => themes/genome-portal-kit}/layouts/partials/species_bundle/download_table.html (100%) rename hugo/{ => themes/genome-portal-kit}/layouts/partials/species_bundle/get-remote-data.html (100%) rename hugo/{ => themes/genome-portal-kit}/layouts/partials/species_bundle/lineage.html (100%) rename hugo/{ => themes/genome-portal-kit}/layouts/species_bundle/assembly.html (100%) rename hugo/{ => themes/genome-portal-kit}/layouts/species_bundle/download.html (100%) rename hugo/{ => themes/genome-portal-kit}/layouts/species_bundle/intro.html (100%) diff --git a/hugo/config/_default/hugo.yaml b/hugo/config.yaml similarity index 92% rename from hugo/config/_default/hugo.yaml rename to hugo/config.yaml index 277d04c8..bf7af38b 100644 --- a/hugo/config/_default/hugo.yaml +++ b/hugo/config.yaml @@ -12,11 +12,9 @@ markup: endLevel: 4 ordered: false -permalinks: - section: - species: /:sections[1:] - page: - species: /:sections[1:]/:slug +module: + imports: + - path: genome-portal-kit menus: main: diff --git a/hugo/config/production/hugo.yaml b/hugo/config/production/hugo.yaml deleted file mode 100644 index 94144a66..00000000 --- a/hugo/config/production/hugo.yaml +++ /dev/null @@ -1 +0,0 @@ -panicOnWarning: true diff --git a/hugo/themes/genome-portal-kit/README.md b/hugo/themes/genome-portal-kit/README.md new file mode 100644 index 00000000..252a4636 --- /dev/null +++ b/hugo/themes/genome-portal-kit/README.md @@ -0,0 +1,8 @@ +# Genome portal +A Hugo theme for a genome portal embedding the JBrowse2 genome browser. + +## Features + +## Installation + +## Configuration diff --git a/hugo/archetypes/species/_index.md b/hugo/themes/genome-portal-kit/archetypes/species/_index.md similarity index 100% rename from hugo/archetypes/species/_index.md rename to hugo/themes/genome-portal-kit/archetypes/species/_index.md diff --git a/hugo/archetypes/species/assembly/assembly.yaml b/hugo/themes/genome-portal-kit/archetypes/species/assembly/assembly.yaml similarity index 100% rename from hugo/archetypes/species/assembly/assembly.yaml rename to hugo/themes/genome-portal-kit/archetypes/species/assembly/assembly.yaml diff --git a/hugo/archetypes/species/assembly/contrib.md b/hugo/themes/genome-portal-kit/archetypes/species/assembly/contrib.md similarity index 100% rename from hugo/archetypes/species/assembly/contrib.md rename to hugo/themes/genome-portal-kit/archetypes/species/assembly/contrib.md diff --git a/hugo/archetypes/species/assembly/index.md b/hugo/themes/genome-portal-kit/archetypes/species/assembly/index.md similarity index 100% rename from hugo/archetypes/species/assembly/index.md rename to hugo/themes/genome-portal-kit/archetypes/species/assembly/index.md diff --git a/hugo/archetypes/species/download/data_tracks.json b/hugo/themes/genome-portal-kit/archetypes/species/download/data_tracks.json similarity index 100% rename from hugo/archetypes/species/download/data_tracks.json rename to hugo/themes/genome-portal-kit/archetypes/species/download/data_tracks.json diff --git a/hugo/archetypes/species/download/index.md b/hugo/themes/genome-portal-kit/archetypes/species/download/index.md similarity index 100% rename from hugo/archetypes/species/download/index.md rename to hugo/themes/genome-portal-kit/archetypes/species/download/index.md diff --git a/hugo/archetypes/species/lineage.default.yaml b/hugo/themes/genome-portal-kit/archetypes/species/lineage.default.yaml similarity index 100% rename from hugo/archetypes/species/lineage.default.yaml rename to hugo/themes/genome-portal-kit/archetypes/species/lineage.default.yaml diff --git a/hugo/archetypes/species/placeholder.png b/hugo/themes/genome-portal-kit/archetypes/species/placeholder.png similarity index 100% rename from hugo/archetypes/species/placeholder.png rename to hugo/themes/genome-portal-kit/archetypes/species/placeholder.png diff --git a/hugo/themes/genome-portal-kit/config/_default/hugo.yaml b/hugo/themes/genome-portal-kit/config/_default/hugo.yaml new file mode 100644 index 00000000..231d7231 --- /dev/null +++ b/hugo/themes/genome-portal-kit/config/_default/hugo.yaml @@ -0,0 +1,3 @@ +permalinks: + page: + species_bundle: /:sections[1:]/:slug diff --git a/hugo/config/_default/params.yaml b/hugo/themes/genome-portal-kit/config/_default/params.yaml similarity index 100% rename from hugo/config/_default/params.yaml rename to hugo/themes/genome-portal-kit/config/_default/params.yaml diff --git a/hugo/layouts/partials/species_bundle/GetGbifKey.html b/hugo/themes/genome-portal-kit/layouts/partials/species_bundle/GetGbifKey.html similarity index 100% rename from hugo/layouts/partials/species_bundle/GetGbifKey.html rename to hugo/themes/genome-portal-kit/layouts/partials/species_bundle/GetGbifKey.html diff --git a/hugo/layouts/partials/species_bundle/GetTaxId.html b/hugo/themes/genome-portal-kit/layouts/partials/species_bundle/GetTaxId.html similarity index 100% rename from hugo/layouts/partials/species_bundle/GetTaxId.html rename to hugo/themes/genome-portal-kit/layouts/partials/species_bundle/GetTaxId.html diff --git a/hugo/layouts/partials/species_bundle/LineageConfig.html b/hugo/themes/genome-portal-kit/layouts/partials/species_bundle/LineageConfig.html similarity index 100% rename from hugo/layouts/partials/species_bundle/LineageConfig.html rename to hugo/themes/genome-portal-kit/layouts/partials/species_bundle/LineageConfig.html diff --git a/hugo/layouts/partials/species_bundle/TaxonomyRanks.html b/hugo/themes/genome-portal-kit/layouts/partials/species_bundle/TaxonomyRanks.html similarity index 100% rename from hugo/layouts/partials/species_bundle/TaxonomyRanks.html rename to hugo/themes/genome-portal-kit/layouts/partials/species_bundle/TaxonomyRanks.html diff --git a/hugo/layouts/partials/species_bundle/assembly_description.html b/hugo/themes/genome-portal-kit/layouts/partials/species_bundle/assembly_description.html similarity index 100% rename from hugo/layouts/partials/species_bundle/assembly_description.html rename to hugo/themes/genome-portal-kit/layouts/partials/species_bundle/assembly_description.html diff --git a/hugo/layouts/partials/species_bundle/assembly_stats.html b/hugo/themes/genome-portal-kit/layouts/partials/species_bundle/assembly_stats.html similarity index 100% rename from hugo/layouts/partials/species_bundle/assembly_stats.html rename to hugo/themes/genome-portal-kit/layouts/partials/species_bundle/assembly_stats.html diff --git a/hugo/layouts/partials/species_bundle/download_table.html b/hugo/themes/genome-portal-kit/layouts/partials/species_bundle/download_table.html similarity index 100% rename from hugo/layouts/partials/species_bundle/download_table.html rename to hugo/themes/genome-portal-kit/layouts/partials/species_bundle/download_table.html diff --git a/hugo/layouts/partials/species_bundle/get-remote-data.html b/hugo/themes/genome-portal-kit/layouts/partials/species_bundle/get-remote-data.html similarity index 100% rename from hugo/layouts/partials/species_bundle/get-remote-data.html rename to hugo/themes/genome-portal-kit/layouts/partials/species_bundle/get-remote-data.html diff --git a/hugo/layouts/partials/species_bundle/lineage.html b/hugo/themes/genome-portal-kit/layouts/partials/species_bundle/lineage.html similarity index 100% rename from hugo/layouts/partials/species_bundle/lineage.html rename to hugo/themes/genome-portal-kit/layouts/partials/species_bundle/lineage.html diff --git a/hugo/layouts/species_bundle/assembly.html b/hugo/themes/genome-portal-kit/layouts/species_bundle/assembly.html similarity index 100% rename from hugo/layouts/species_bundle/assembly.html rename to hugo/themes/genome-portal-kit/layouts/species_bundle/assembly.html diff --git a/hugo/layouts/species_bundle/download.html b/hugo/themes/genome-portal-kit/layouts/species_bundle/download.html similarity index 100% rename from hugo/layouts/species_bundle/download.html rename to hugo/themes/genome-portal-kit/layouts/species_bundle/download.html diff --git a/hugo/layouts/species_bundle/intro.html b/hugo/themes/genome-portal-kit/layouts/species_bundle/intro.html similarity index 100% rename from hugo/layouts/species_bundle/intro.html rename to hugo/themes/genome-portal-kit/layouts/species_bundle/intro.html From 0c0c454bb60d998460c83a214dcf9621afd18113 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Fri, 29 Nov 2024 11:08:56 +0100 Subject: [PATCH 58/59] Restore assembly page weight Co-authored-by: Rory Crean <49672044+RMCrean@users.noreply.github.com> --- .../genome-portal-kit/archetypes/species/assembly/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/hugo/themes/genome-portal-kit/archetypes/species/assembly/index.md b/hugo/themes/genome-portal-kit/archetypes/species/assembly/index.md index 1531b6b6..7fd94418 100644 --- a/hugo/themes/genome-portal-kit/archetypes/species/assembly/index.md +++ b/hugo/themes/genome-portal-kit/archetypes/species/assembly/index.md @@ -2,6 +2,7 @@ title: "Genome assembly" type: species_bundle layout: assembly +weight: 2 lastmod: {{ .Date }} --- From eccba118926da70f3f761fe6f8c445ae95a6ba95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20=C3=85gren?= Date: Fri, 29 Nov 2024 11:40:42 +0100 Subject: [PATCH 59/59] Restore alias_file_url parameter --- .../genome-portal-kit/archetypes/species/download/index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hugo/themes/genome-portal-kit/archetypes/species/download/index.md b/hugo/themes/genome-portal-kit/archetypes/species/download/index.md index d7df21ce..ed79c888 100644 --- a/hugo/themes/genome-portal-kit/archetypes/species/download/index.md +++ b/hugo/themes/genome-portal-kit/archetypes/species/download/index.md @@ -4,4 +4,6 @@ type: species_bundle layout: download weight: 3 lastmod: {{ .Date }} +params: + alias_file_url: ---