👍🎉 First off, thanks for taking the time to contribute! 🎉👍
The following is a set of guidelines for contributing to this training material on GitHub.
If you have any questions, you can reach us using the Gitter chat.
- What should I know before I get started?
- How can I contribute?
- How is the training material structured?
- How do I add new content?
- How is the training material maintained?
This repository is a project of unification of the Galaxy training material. You can find more information about this project in this small presentation
By contributing, you agree that we may redistribute your work under our license.
We will address your issues and/or assess your change proposal as promptly as we can, and help you become a member of our community.
The easiest way to start contributing is to file an issue to tell us about a spelling mistake or a factual error. You can then introduce yourself and meet some of our community members.
Once you are feeling more comfortable, you can propose changes to this training material.
In issues and project management system, you will find lists of issues to fix and features to change (with the "newcomer-friendly" label for example). Feel free to solve them.
We strongly recommend you read and follow Software Carpentry's recommendations on lesson design and lesson writing if you plan to add or change some training materials, and also to check the structure of the training material.
To manage changes, we use GitHub flow based on Pull Requests:
- Create a fork of this repository on GitHub
- Clone your fork of this repository to create a local copy on your computer and init needed submodules (
git submodule init
andgit submodule update
) - Create a new branch in your local copy for each significant change
- Commit the changes in that branch
- Push that branch to your fork on GitHub
- Submit a pull request from that branch to the master repository
- If you receive feedback, make changes in your local clone and push them to your branch on GitHub: the pull request will update automatically
For beginners, the GitHub interface will help you in the process of editing a file. It will automatically create a fork of this repository where you can safely work and then submit the changes as a pull request without having to touch the command line.
Each training material is related to a topic. All training materials (slides, tutorials, ...) related to a topic are found in a dedicated directory (e.g. Exome-seq
directory contains the material related to exome sequencing analysis). These repositories have to have the following structures (as in Exome-seq
directory):
├── docker
│ ├── Dockerfile
│ ├── README.md
│ ├── tools.yaml
├── images
├── README.md
├── slides
├── tutorials
Want to add a new topic? Check out how to add new topic.
The images
directory collects all images/pictures needed for the training materials related to the topic, i.e pictures for the slides or the tutorials.
Images shared between several topics are in the shared/images
directory at the root.
All images for the slides must be in images
directory. The images must be in good quality. The sources (svg
or other) of the images must also be added to the images
directory. We encourage you to use yEd to easily generate diagrams and Inkscape for any other images.
This directory collects the tutorials related to the topic. The tutorials are hands-on built for workshop and self training.
The template for the tutorials are different from the other pages to help users to focus on the content of the tutorial. To improve the output of the tutorial, several metadata are mandatory for every tutorials such as the requirements or the objectives of the tutorials. Boxes are also used to highlight some key points as the hands-on or the tips.
The content of tutorial is generated with Jekyll from a markdown files and some metadata (e.g. the requirements, the Zenodo link, the questions) defined with the metadata of the related topic
Want to contribute to a tutorial?
Sometimes, an hands-on tutorial is not the most appropriate format for a tutorial and slides are better. The content must be then added in the slides
directory.
A slide deck is expected for every topic: the one with a general introduction of the topic. The slides are rendered using remark.js
but written in markdown to facilate any contribution. Check out how to fill introduction slides or how to fill tutorial slides.
For each topic, a flavored Docker image must integrate the tools needed for
the tutorials. The corresponding image must be based on official Galaxy Docker
images. We recommend to use the content of templates/docker
as a template.
The docker
image must also integrate a Galaxy tour from the galaxy-tours
repository
Most of the content is written in markdown with some metadata (or variables) stored in YAML. To generate the website, we are using Jekyll and its templating system.
So if you want to visualise locally how the website will look like, you need to run a local Jekyll server. So, Jekyll must be installed using RubyGems:
$ make install
To run a local Jekyll server and visualize the changes, launch using the Makefile:
$ make serve
You can then visualize locally (http://localhost:4000/) the website before pushing your changes.
-
Add a
yml
file into themetadata
directory similar to the one forRNA-Seq
and fill it with meta information on the topic-
name
: name of the topic (same name as theyml
file and the directory) -
title
: title of the topic -
type
: targeted users ("use"
or""
) -
summary
: summary of the content of the topic -
docker_image
: name of the Docker image with the tools for this topic -
requirements
: list of requirements general for this topic, with atitle
, alink
(relative for internal (inside training material) requirement or full for external requirement) and the type of link (internal
orexternal
) -
material
: list of material available for this topicFor each material, you need to fill at least:
-
title
-
type
: two possible typesintroduction
ortutorial
For introduction material, how to fill introduction slides
For tutorial material, check out how to add a new tutorial
-
slides
("yes"
or"no"
): tell if slides are available for this material
-
-
maintainers
: the two maintainers of the topic with theirname
,github_username
,email
-
contributors
: list of people who contributed to the topic withname
,github_username
,email
-
references
: list of references for this topic withauthors
,title
,link
,summary
This information is used with Jekyll to generate the webpage related to the topic
-
-
Copy the template directory, rename it (with the same name as the
yml
file one) and fill it-
Change the
topic_name
in theindex.md
to fit the name of the directory and the name inyml
file -
Add introduction slides
Check out how to fill introduction slides
-
Add tutorials
Check out how to add a new tutorial
-
-
Add the metadata about the tutorial in
material
section in theyml
file of the related topic that is inmetadata
directorytitle
: title of the tutorialtype: "tutorial"
name
: name of the tutorial (name of the subdirectory where the files related to the tutorial will be stored)zenodo_link
: link on Zenodo to the input data for the tutorial (not ideal but it can be empty)galaxy_tour
: name of the galaxy tourhands_on
("yes"
or"no"
): tell if an hands on is available for this materialslides
("yes"
or"no"
): tell if slides are available for this materialquestions
: list of questions that are adressed in the tutorialobjectives
: list of objectives of the tutorialrequirements
: list of requirements specific to this tutorial (in addition to the one of the topic), with atitle
, alink
(relative for internal (inside training material) requirement or full for external requirement) and the type of link (internal
orexternal
)time_estimation
: estimation of the time needed to complete the hands-onkey_points
: take home messages
This information will appear in the top and bottom of the online hands-on generated using Jekyll
-
Fill the hands-on file
Check out how to fill it
-
Add yourself as contributor for the topic in the
yml
file of the related topic that is inmetadata
directory
-
Check that the metadata about the tutorial in the
yml
file inmetadata
directory are filled and correctThey are used to generate the header and the footer of the tutorials.
-
Fill the markdown file with the tutorial (after changing the
topic_name
andtutorial_name
)
The content of a tutorial hands-on is written in markdown
. They are rendered by Jekyll into the webpage for the tutorial.
To improve the learning experience, we strongly recommend you to:
-
Add boxes to highlight:
-
Hands-on parts
> ### :pencil2: Hands-on: > > 1. **Sort BAM dataset** :wrench:: Sort the paired-end BAM file by "Read names" with **Sort BAM dataset** {: .hands_on}
-
Questions (to make the learners think about what they are doing) and the collapsing and expanding answers
> ### :question: Questions > > 1. Why are some tests filtered? > 2. Does it improve the *p*-value distribution? > > <details> > <summary>Click to view answers</summary> > Content goes here. > </details> {: .question}
-
Tips
> ### :bulb: Tip: Importing data via links > > * Copy the link location > * Open the Galaxy Upload Manager > * Select **Paste/Fetch Data** > * Paste the link into the text field > * Press **Start** {: .tip}
-
Comments
> ### :nut_and_bolt: Comments > - Edit the "Database/Build" to select "dm3" > - Rename the datasets according to the samples {: .comment}
To render the boxes correctly, the previous syntaxes have to be followed. The boxes can be nested, .e.g. for having tips inside hands-on.
-
-
Add an agenda at the end of the introduction to indicate the plan of the tutorial
> ### Agenda > > In this tutorial, we will analyze the data with: > > 1. [Pretreatments](#pretreatments) > 2. [Mapping](#mapping) > 3. [Analysis of the differential expression](#analysis-of-the-differential-expression) > {: .agenda}
-
Add pictures of the expected results
-
Add at least one scheme or diagram to sum up the pipeline used at the end.
The input data required for the tutorials must be upload on Zenodo to obtain a dedicated DOI (in the Galaxy training network community).
You can also add yourself as contributor for the topic in the yml
file of the related topic that is in metadata
directory.
Sometimes, an hands-on tutorial is not the most appropriate format for a tutorial and slides are better. Check out how to fill tutorial slides?.
Before starting filling the slides, you have to add the metadata about the tutorial in material
section in the yml
file of the related topic that is in metadata
directory:
title
type: "introduction"
slides
("yes"
or"no"
): tell if slides are available for this material
The introduction slides must be in the index.html
file in slides
directory for each topic. Even if the extension is html
, slides are written in markdown. ---
is used to separate the slides.
---
layout: introduction_slides
topic_name: RNA-Seq
logo: "GTN"
---
# What is RNA sequencing?
---
### Where my data comes from?
![](../images/ecker_2012.jpg)
<!-- add a resized image in percentage: 10%, 25%, 50%, or 75% -->
.image-25[![](../images/ecker_2012.jpg)]
<small>[*Ecker et al, Nature, 2012*](http://www.nature.com/nature/journal/v489/n7414/full/489052a.html)</small>
???
Slide notes
-> Pressing **P** will toggle presenter mode.
---
The first slides (with the title, the requirements,...) are automatically generated using the metadata of the topic. Then the content to fill starts with the introduction.
They are then rendered with Remark
. Template for the html
files can be found in
templates/slides/
. Once the slides are on the master
branch, they will be available at http://bgruening.github.io/training-material/<topic>/slides/<slide_name>.html
You can also add yourself as contributor for the topic in the yml
file of the related topic that is in metadata
directory
Filling tutorial slides are similar a combination of filling introduction slides and filling an hands-on tutorial:
-
Filling the metadata file with useful information about the tutorial and its format (
slides: "yes"
) -
Filling an
html
file in theslides
directoryThe name of the file must be the same as the name of the tutorial
The header of the file must be something like:
--- layout: tutorial_slides topic_name: "Dev-Corner" tutorial_name: tool_integration logo: "GTN" ---
Filling the content is then similar to filling the content of introduction slides. The first slides (with the title, the requirements, the questions, the objectives) are automatically generated using the metadata of the topic and the tutorial.
Each training topic has one or two maintainers who act as editors. They are responsible for making sure issues and change requests are looked at. They have the final say over what is included in the training material related to the topic. But they are not responsible for writing training material content or deciding what lessons ought to exist, both will be coming from the community.
This repository is using the following labels for issues, pull requests and project management:
- Type
bug
: errors to be fixedimprovement
: enhancement to an existing functionalityfeature
: new functionalitydiscussion
: discussion threadsquestion
: often turn into discussion threads
- Status
help-wanted
: requests for assistancenewcomer-friendly
: suitable for people who want to start contributingwork-in-progress
: someone is working on thisreview-needed
: requests for review
- Topic: each topic has its own label to easily relate the issue or pull request to the topic, but the label
template-and-tools
is used for questions/issues/pull requests related to the templates and tools rather than the lessons themselves.