added list of useful features
							parent
							
								
									ce5cdc9871
								
							
						
					
					
						commit
						7832746e90
					
				|  | @ -65,8 +65,22 @@ rule sort_group_names: | |||
|         "only_users.txt",    # only contains the user names | ||||
|     shell: | ||||
|         "sort < {input[0]} | tee {output[0]} | cut -d ' ' -f 2 > {output[1]}" | ||||
| 
 | ||||
| rule filter_by_letter: | ||||
|     input: | ||||
|         rules.list_groups_with_users.output[0] | ||||
|     output: | ||||
|         "start_with_letter_{letter}.txt", # only groups starting with a letter | ||||
|     shell: | ||||
|         "grep '^{wildcards.letter}' < {input} > {output}" | ||||
| ``` | ||||
| 
 | ||||
| > This example filters the file /etc/group (which contains all groups on a linux | ||||
| > system) and writes to three files. The first has the group name and users | ||||
| > (created by the first rule). Then the second rule creates a sorted file and a | ||||
| > file with the user names only. This rather pointless application shows that it | ||||
| > is possible to chain rule inputs and outputs, and to have multiple outputs. | ||||
| 
 | ||||
| Executing the workflow with the command `snakemake only_users.txt` (to tell it | ||||
| to generate the `only_users.txt` file) should execute both rules, with an output | ||||
| similar to: | ||||
|  | @ -122,13 +136,38 @@ outputs (which are numbered from `0` to `N` by default, and can be named). The | |||
| `shell` directive specifies that we want to run a shell command. This is the | ||||
| most flexible option. Alternatively one can use the `run` directive and write | ||||
| inline python code directly in the `Snakefile`, the `script` directive, which | ||||
| specifies the name of a Python (or another language) script to be run (Snakemake | ||||
| creates a context for this script which allows it to access the input and output | ||||
| objects), or finally the `notebook` directive, similar to the `script` | ||||
| directive, for which Snakemake allows interactive execution (useful for | ||||
| postprocessing/data exploration). | ||||
| specifies the name of a Python (or another language) | ||||
| [script](https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#external-scripts) | ||||
| to be run (Snakemake creates a context for this script which allows it to access | ||||
| the input and output objects), or finally the [`notebook` | ||||
| directive](https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#jupyter-notebook-integration), | ||||
| similar to the `script` directive, for which Snakemake allows interactive | ||||
| execution (useful for postprocessing/data exploration). | ||||
| 
 | ||||
| Reading the | ||||
| [documentation](https://snakemake.readthedocs.io/en/stable/index.html) is highly | ||||
| recommended. Although the examples are often biology oriented, the features they | ||||
| demonstrate are easily transposed to a mechanics environment. | ||||
| 
 | ||||
| Here is a list of useful features: | ||||
| 
 | ||||
| - [Wildcards](https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#wildcards) | ||||
|   allow to specify parameter values from file names. In the example above, | ||||
|   running `snakemake start_with_letter_m.txt` will replace the | ||||
|   `{wildcards.letter}` in the `shell` directive by `m`. This is very useful to | ||||
|   distinguish output files based on parameter values. Multiple wildcards can be | ||||
|   used in the same rule. | ||||
| - [Expansion](https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#the-expand-function) | ||||
|   allows to specify a range of values for a wildcard. This is useful to explore | ||||
|   a parametric space, or | ||||
|   [aggregate](https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#defining-scatter-gather-processes) | ||||
|   the data of several values for one wildcard. | ||||
| - [Rule | ||||
|   parameters](https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules) | ||||
|   allow one to specify additional parameters (i.e. non-file inputs) to rules. | ||||
| - [Rule | ||||
|   dependencies](https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#rule-dependencies) | ||||
|   allow using the output of a rule as input to another without having to specify | ||||
|   the name. | ||||
| - [Parameter space | ||||
|   exploration](https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#parameter-space-exploration). | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Lucas Frérot
						Lucas Frérot