Skip to content

Commit

Permalink
Merge pull request #4750 from galaxyproject/gmod
Browse files Browse the repository at this point in the history
GMOD topic, small home re-org
  • Loading branch information
abretaud authored Feb 29, 2024
2 parents de66713 + a92fea9 commit 2653689
Show file tree
Hide file tree
Showing 46 changed files with 262 additions and 17 deletions.
58 changes: 58 additions & 0 deletions _layouts/home.html
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,62 @@ <h2 class="alert-heading">{{ site.announcement.title }}</h2>
<div class="row">
<div class="col-lg-7 col-md-7 col-sm-12">
<h2>Galaxy for Scientists</h2>
<p>We have separated the tutorials into several categories based on field and technology. We are exploring other ways to organise the tutorials going forward!</p>

<h3>Introduction</h3>
<table class="table table-striped">
<thead>
<tr>
<th scope="col">Topic</th>
<th scope="col">Tutorials</th>
</tr>
</thead>
<tbody>
{% for topic_name in sorted_topics %}
{% assign topic = site.data[topic_name] %}
{% if topic.name == "introduction" %}
{% if topic.draft != true or jekyll.environment != "production" %}
<tr>
{% assign tutorial_number = site | topic_filter_tutorial_count:topic.name %}
<td><a href="{{ site.baseurl }}/topics/{{ topic.name }}/">{{ topic.title }}</a>{% if topic.draft %} <div class="label label-default tutorial_tag" style="{{ 'work-in-progress' | colour_tag }}">work-in-progress</div>{% endif %}</td>
<td>{{ tutorial_number }}</td>
</tr>
{% endif %}
{% endif %}
{% endfor %}
</tbody>
</table>


<h3>Fields</h3>
<table class="table table-striped">
<thead>
<tr>
<th scope="col">Topic</th>
<th scope="col">Tutorials</th>
</tr>
</thead>
<tbody>
{% for topic_name in sorted_topics %}
{% assign topic = site.data[topic_name] %}
{% if topic.type == "use" %}
{% if topic.name != "introduction" %}
{% if topic.topic_type != "technology" %}
{% if topic.draft != true or jekyll.environment != "production" %}
<tr>
{% assign tutorial_number = site | topic_filter_tutorial_count:topic.name %}
<td><a href="{{ site.baseurl }}/topics/{{ topic.name }}/">{{ topic.title }}</a>{% if topic.draft %} <div class="label label-default tutorial_tag" style="{{ 'work-in-progress' | colour_tag }}">work-in-progress</div>{% endif %}</td>
<td>{{ tutorial_number }}</td>
</tr>
{% endif %}
{% endif %}
{% endif %}
{% endif %}
{% endfor %}
</tbody>
</table>

<h3>Technologies</h3>
<table class="table table-striped">
<thead>
<tr>
Expand All @@ -43,6 +99,7 @@ <h2>Galaxy for Scientists</h2>
{% for topic_name in sorted_topics %}
{% assign topic = site.data[topic_name] %}
{% if topic.type == "use" %}
{% if topic.topic_type == "technology" %}
{% if topic.draft != true or jekyll.environment != "production" %}
<tr>
{% assign tutorial_number = site | topic_filter_tutorial_count:topic.name %}
Expand All @@ -51,6 +108,7 @@ <h2>Galaxy for Scientists</h2>
</tr>
{% endif %}
{% endif %}
{% endif %}
{% endfor %}
</tbody>
</table>
Expand Down
33 changes: 26 additions & 7 deletions _plugins/jekyll-topic-filter.rb
Original file line number Diff line number Diff line change
Expand Up @@ -119,16 +119,33 @@ def self.list_materials_structured(site, topic_name)
'subtopic' => { 'title' => 'Other', 'description' => 'Assorted Tutorials', 'id' => 'other' },
'materials' => all_topics_for_tutorial.reject { |x| seen_ids.include?(x['id']) }
}
elsif site.data[topic_name]['tag_based'] && site.data[topic_name]['custom_ordering']
# TODO
Jekyll.logger.error 'UNIMPLEMENTED'
elsif site.data[topic_name]['tag_based'] && site.data[topic_name].key?('subtopics')
out = {}
seen_ids = []
tn = topic_name.gsub('by_tag_', '')
materials = filter_by_tag(site, tn)

# For each subtopics
site.data[topic_name]['subtopics'].each do |subtopic|
# Find matching tag-based tutorials in our filtered-by-tag materials
specific_resources = materials.select { |x| (x['tags'] || []).include?(subtopic['id']) }
out[subtopic['id']] = {
'subtopic' => subtopic,
'materials' => specific_resources
}
seen_ids += specific_resources.map { |x| x['id'] }
end

filter_by_tag(site, tn)
out['__OTHER__'] = {
'subtopic' => { 'title' => 'Other', 'description' => 'Assorted Tutorials', 'id' => 'other' },
'materials' => materials.reject { |x| seen_ids.include?(x['id']) }
}
elsif site.data[topic_name]['tag_based'] # Tag based Topic
# We'll construct a new hash of subtopic(parent topic) => tutorials
out = {}
seen_ids = []
tn = topic_name.gsub('by_tag_', '')

materials = filter_by_tag(site, tn)

# Which topics are represented in those materials?
Expand Down Expand Up @@ -211,8 +228,6 @@ def self.extract_workflow_tool_list(data)
# Returns:
# +Hash+:: The annotation
#
# This is a bit of a hack, but it works for now.
#
# Example:
# /topics/assembly/tutorials/velvet-assembly/tutorial.md
# => {
Expand Down Expand Up @@ -245,6 +260,9 @@ def self.annotate_path(path, layout)

return nil if parts[-1] =~ /data[_-]library.yaml/ || parts[-1] =~ /data[_-]manager.yaml/

# Check if it's a symlink
material['symlink'] = true if File.symlink?(material['dir'])

if parts[4] =~ /tutorial.*\.md/ || layout == 'tutorial_hands_on'
material['type'] = 'tutorial'
elsif parts[4] =~ /slides.*\.html/ || %w[tutorial_slides base_slides introduction_slides].include?(layout)
Expand Down Expand Up @@ -357,6 +375,7 @@ def self.collate_materials(site, pages)
page.data['tutorial_name'] = material_meta['tutorial_name']
page.data['dir'] = material_meta['dir']
page.data['short_id'] = shortlinks_reversed[page.data['url']]
page.data['symlink'] = material_meta['symlink']

interesting[mk]['resources'].push([material_meta['type'], page])
end
Expand Down Expand Up @@ -538,7 +557,7 @@ def self.resolve_material(site, material)
domain = if !site.config.nil? && site.config.key?('url')
"#{site.config['url']}#{site.config['baseurl']}"
else
'http://localhost:4000//training-material/'
'http://localhost:4000/training-material/'
end
# Similar as above.
workflows = Dir.glob("#{folder}/workflows/*.ga") # TODO: support gxformat2
Expand Down
Binary file added assets/images/GMOD-cogs.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 9 additions & 1 deletion bin/schema-topic.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,14 @@ mapping:
`instructors`
: Specific to topics related to instruction of Galaxy
topic_type:
type: str
required: false
enum:
- technology
- field
description: |
These are used to organise the home page tutorials only, not used anywhere else.
title:
type: str
required: true
Expand Down Expand Up @@ -184,7 +192,7 @@ mapping:
type: bool
required: false
description: |
If this is a synthetic tag based topic (no tutorials of it's own)
If this is a tag based topic (no tutorials of it's own)
then you must set this flag to indicate it as such, otherwise you
will find yourself with an empty topic page.
og_image:
Expand Down
4 changes: 3 additions & 1 deletion learning-pathways/clinical-metaproteomics.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ description: |
This learning path aims to teach you the basics of how to perform metaproteomics analysis of the clinical data within the Galaxy platform. You will learn how to use Galaxy for analysis, and will be guided through the most common first steps of any metaproteomics database generation to searching the database, verifying the proteins/peptides, and data analysis.
priority: 3
editorial_board:
- subinamehta

pathway:
- section: "Module 1: Database generation"
Expand Down Expand Up @@ -53,5 +55,5 @@ pathway:
topic: proteomics
---

New to Galaxy and/or the field of genomics? Follow this learning path to get familiar with the basics!
New to Galaxy and/or the field of metaproteomics? Follow this learning path to get familiar with the basics!

1 change: 1 addition & 0 deletions metadata/covid19.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
name: "covid19"
type: "use"
topic_type: field
title: "SARS-CoV-2"
summary: "Tutorials covering analysis of SARS-CoV-2 (COVID 19)"
tag_based: true
Expand Down
35 changes: 35 additions & 0 deletions metadata/gmod.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
---
name: gmod
type: use
topic_type: technology
title: GMOD
summary: |
Tutorials from the world of the Generic Model Organism Database (GMOD)
GMOD is a collection of open source software tools for managing, visualising, storing, and disseminating genetic and genomic data, many of which are directly interoperable.
edam_ontology: ["topic_0362"]

tag_based: true

gitter: galaxy-genome-annotation/Lobby
og_image: /assets/images/GMOD-cogs.png
logo: /training-material/assets/images/GMOD-cogs.png
logo_alt: "The GMOD logo where the O is three interlocking gears"

editorial_board:
- hexylena
- abretaud

subtopics:
- id: jbrowse1
title: "JBrowse 1"
description: Learn to use JBrowse v1 here.
- id: maker
title: MAKER
description: Genome Annotation with MAKER.
- id: intermine
title: InterMine
description: InterMine is a data warehouse you can query for interesting features and data.
- id: apollo2
title: Apollo v2
description: Apollo is a collaborative, real time genome annotation editor.
1 change: 1 addition & 0 deletions metadata/one-health.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
name: "one-health"
type: "use"
topic_type: field
title: "One Health"
summary: |
One Health is unified approach that aims to sustainably balance the health of humans, animals, and ecosystems, as all of the health of each of these groups is closely interlinked.
Expand Down
28 changes: 28 additions & 0 deletions news/_posts/2024-02-29-new-gmod-topic.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
---
title: "GTN ❤️ GMOD"
tags: [new topic, new feature, genome annotation]
contributions:
authorship: [hexylena, abretaud]
infrastructure: [hexylena]
layout: news
tutorial: topics/gmod/index.html
---

Building upon the work previously done for the [SARS-Cov-2 Topic](/training-material/news/2023/01/23/new-covid19-topic.html) we have further expanded the 'tag based topics' to support a new GMOD topic.

# Generic Model Organism Database

> the Generic Model Organism Database (GMOD) project, a collection of open source software tools for managing, visualising, storing, and disseminating genetic and genomic data.
{: .quote cite="http://gmod.org/wiki/Main_Page"}

Galaxy Project itself has long been a GMOD component, but you'll recognise some other familiar faces there as well, if you are interested in Genome Annotation. JBrowse, used throughout the GTN in a number of tutorials to render genomic data, and Apollo are both members that you'll find tutorials for within the GTN.

## Current State

As such we've created a new topic to help aggregate all of the GMOD related material together. This currently includes tutorials on the use of [JBrowse](/training-material/topics/gmod/#st-jbrowse1), [Apollo](/training-material/topics/gmod/#st-apollo2), [InterMine](/training-material/topics/gmod/#st-intermine), and [MAKER](/training-material/topics/gmod/#st-maker)!

For teachers, tag based topics now support a second level of organisation, in 'subtopics'. We've used that to add a new topic, using subtopics to organise each GMOD component.

## Future

For now the topic includes all GTN tutorials which use a GMOD component (that isn't galaxy), all of these tutorials generally also include Galaxy based steps. In the future we may expand this to include tutorials for other GMOD components which don't necessary interface with Galaxy. @gtn:hexylena has some ideas about a Chado tutorial using the new [`pglite`](https://github.com/electric-sql/pglite) project, and perhaps @gtn:abretaud will contribute a Tripal tutorial!
1 change: 1 addition & 0 deletions topics/ai4life/metadata.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
name: ai4life
type: use
topic_type: technology
draft: true
title: Image analysis using Deep Learning
summary: |
Expand Down
1 change: 1 addition & 0 deletions topics/assembly/metadata.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
name: "assembly"
type: "use"
topic_type: technology
title: "Assembly"
summary: "DNA sequence data has become an indispensable tool for Molecular Biology & Evolutionary Biology. Study in these fields now require a genome sequence to work from. We call this a 'Reference Sequence.' We need to build a reference for each species. We do this by Genome Assembly. De novo Genome Assembly is the process of reconstructing the original DNA sequence from the fragment reads alone."
docker_image: "quay.io/galaxy/assembly-training"
Expand Down
3 changes: 2 additions & 1 deletion topics/assembly/tutorials/chloroplast-assembly/tutorial.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ zenodo_link: "http://doi.org/10.5281/zenodo.3567224"
tags:
- plants
- nanopore
- jbrowse1
questions:
- "How can we assemble a chloroplast genome?"
objectives:
Expand Down Expand Up @@ -89,7 +90,7 @@ We will look at the quality of the nanopore reads.
> > <solution-title></solution-title>
> > This will depend on the aim of your analysis, but usually:
> > * **Sequencing depth** (the number of reads covering each base position; also called "coverage"). Higher depth is usually better, but at very high depths it may be better to subsample the reads, as errors can swamp the assembly graph.
> > * **Sequencing quality** (the quality score indicates probability of base call being correct). You may trim or filter reads on quality. Phred quality scores are logarithmic: phred quality 10 = 90% chance of base call being correct; phred quality 20 = 99% chance of base call being correct. More detail [here](https://en.wikipedia.org/wiki/Phred_quality_score).
> > * **Sequencing quality** (the quality score indicates probability of base call being correct). You may trim or filter reads on quality. Phred quality scores are logarithmic: phred quality 10 = 90% chance of base call being correct; phred quality 20 = 99% chance of base call being correct. More detail [on Wikipedia](https://en.wikipedia.org/wiki/Phred_quality_score).
> > * **Read lengths** (read lengths histogram, and reads lengths vs. quality plots). Your analysis or assembly may need reads of a certain length.
> {: .solution}
{: .question}
Expand Down
2 changes: 2 additions & 0 deletions topics/assembly/tutorials/ecoli_comparison/tutorial.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@ requirements:
tutorials:
- unicycler-assembly
tags:
- gmod
- prokaryote
- microgalaxy
- jbrowse1
questions:
- "I just assembled a genome. How does it compare with already sequenced genomes?"
- "How do I find rearranged, inserted, or deleted regions?"
Expand Down
2 changes: 2 additions & 0 deletions topics/assembly/tutorials/mrsa-nanopore/tutorial.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ tags:
- nanopore
- assembly
- amr
- gmod
- jbrowse1

contributions:
authorship:
Expand Down
1 change: 1 addition & 0 deletions topics/climate/metadata.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
name: climate
type: use
topic_type: field
title: Climate
summary: Learn to analyze climate data through Galaxy.
requirements:
Expand Down
1 change: 1 addition & 0 deletions topics/computational-chemistry/metadata.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
name: computational-chemistry
type: use
topic_type: field
title: Computational chemistry
summary: Modelling, simulation and analysis of biomolecular systems
docker_image: "quay.io/galaxy/computational-chemistry-training"
Expand Down
27 changes: 26 additions & 1 deletion topics/contributing/tutorials/create-new-topic/tutorial.md
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ For tag based topics, first ensure that all of the relevant tutorials share a si

Compare with other topic level metadata files in the `metadata/` directory of the training material. Then create a file of your own naming the topic and providing editorial board members and so on. We will use the Covid-19 synthetic topic as an example:

```
```yaml
---
name: "covid19"
type: "use"
Expand All @@ -229,6 +229,31 @@ As you can see it is very short, and there are only a handful of important point

With this done, all materials tagged `covid19` will be aggregated and available under this synthetic topic. They are organised by the "parent" topic, so e.g. assembly tutorials are collected together and transcriptomics tutorials are also in a section together, similar to how other tutorials define subtopics.

## More manual tag based topics

If you wish to more manually curate the tutorials listed in your tag-based topic, you can provide subtopics. These must have IDs that match tags that are expected to be found within your tag-based topic.

```yaml
---
name: gmod
type: use
topic_type: technology
title: GMOD
edam_ontology: ["topic_0362"]
tag_based: true
subtopics:
- id: jbrowse1
title: "JBrowse 1"
description: Learn to use JBrowse v1 here.
- id: apollo2
title: Apollo v2
description: Apollo is a collaborative, real time genome annotation editor.
```

Here anything with a tag `jbrowse1` will appear under the JBrowse section, same for `apollo2` and the Apollo section. Tutorials may appear multiple times, but this is still useful as it gives you a way to provide additional organisation within your topic.


# Conclusion

Expand Down
1 change: 1 addition & 0 deletions topics/ecology/metadata.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
name: "ecology"
type: "use"
topic_type: field
title: "Ecology"
summary: "Learn to analyse Ecological data through Galaxy."
docker_image: "quay.io/galaxy/ecology-training"
Expand Down
1 change: 1 addition & 0 deletions topics/epigenetics/metadata.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
name: "epigenetics"
type: "use"
topic_type: technology
title: "Epigenetics"
summary: "DNA methylation is an epigenetic mechanism used by higher eukaryotes and involved in e.g. gene expression, X-Chromosome inactivating, imprinting, and gene silencing of germline specific gene and repetitive elements."
docker_image: "quay.io/galaxy/epigenetics-training"
Expand Down
Loading

0 comments on commit 2653689

Please sign in to comment.