bouwsystemen als make worden vaak gebruikt om ingewikkelde werkstromen, bijv creëren in de bioinformatica & nbsp;. snakemake gericht op de complexiteit van het creëren van workflows te verminderen door middel van een schone en moderne domeinspecifieke specificatie taal (DSL) in python stijl, samen met een snelle en comfortabele uitvoering milieu.
installatie
- Op Ubuntu 12.04, kunt u het Debian-pakket python3-snakemake beschikbaar in onze Launchpad repository installeren.
- Op andere systemen, je een werkende installatie van Python> = 3.2 nodig. Afhankelijk van uw systeem, kunt u vervolgens installeren snakemake door de uitgifte van een van beide easy_install snakemake of easy_install3 snakemake in de opdrachtregel. Als u niet de beheerder privileges hebben, eens een kijkje op het argument --user van easy_install.
- Tot slot, snakemake kan handmatig worden geïnstalleerd door het downloaden van de broncode archief uit pypi.
Gebruik
Snakemake biedt een eenvoudige DSL om workflows die bestanden in verschillende opeenvolgende stappen te creëren beschrijven:
samples = ["01", "02"]
# Eventueel een directory waar het werk moet worden gedaan definiëren.
workdir: "pad / naar / workdir"
# Vergelijkbaar te maken, definiëren dummy regels die als build targets.
regeren alle:
& Nbsp; ingang: "diffexpr.tsv", ...
regel samenvatten:
& Nbsp; ingang: "{sample} .mapped.bam" .format (sample = s) voor s in monsters
& Nbsp; uitgang: "diffexpr.tsv"
& Nbsp; uit te voeren:
& Nbsp; # ... bieden enige python code om de output van de input-bestanden te produceren
& Nbsp; # bijv. toegang input-bestanden per index
& Nbsp; input [1]
& Nbsp; # toegang wildcard waarden
& Nbsp; wildcards.sample
& Nbsp; # gemakkelijk shell commando's automatisch met uw standaard shell terwijl het hebben van directe toegang draaien
& Nbsp; # om alle lokale en globale variabelen via het formaat minilanguage
& Nbsp; draden = 6
& Nbsp; shell ("eencommando --threads {discussies} {input [0]} {uitgang [0]}")
heersen map_reads:
& Nbsp; # toewijzen namen voor input en output-bestanden
& Nbsp; ingang: leest = "{voorbeeld} .fastq", hg19 = "hg19.fasta"
& Nbsp; # merk output bestanden te schrijven beveiligd na de schepping
& Nbsp; output: mapped = beschermd ("{voorbeeld} .mapped.sai")
& Nbsp; # Eventueel berichten die worden weergegeven in plaats van generieke beschrijving van de regel op de uitvoering van de regel te definiëren:
& Nbsp; bericht: "Mapping leest om {input.hg19}"
& Nbsp; onderwerpen: 8
& Nbsp; shell:
& Nbsp; # bieden rechtstreeks shell commando's (in een multi of enkele lijn string) als python syntax niet nodig is.
& Nbsp; # weer, globale en lokale variabelen kan worden geraadpleegd via het formaat minilanguage.
& Nbsp; # Verder aantal draden die worden gebruikt door de regel kan worden gespecificeerd. De snakemake planner zorgt ervoor dat de regel wordt uitgevoerd met het opgegeven aantal threads als er genoeg kernen via de -j command line optie ter beschikking worden gesteld.
& Nbsp; "" "
& Nbsp; bwa ALN -t {discussies} {input.hg19} {input.reads}> {output.mapped}
& Nbsp; sommige --ander --command
& Nbsp; "" "
Gegeven een "Snakefile" met zo'n syntax, kan de workflow worden uitgevoerd (bijvoorbeeld met behulp van maximaal 6 parallelle processen) door issueing:
& Nbsp; snakemake -j6 -s Snakefile
Voor meer details zie de handleiding
Kenmerken .
- Definieer workflows in een tekstuele manier door het schrijven van regels hoe je de uitgang te creëren bestanden van input-bestanden op een eenvoudige python gebaseerde syntax. In tegenstelling tot GNU maken (dat is in de eerste plaats een bouwsysteem), snakemake laat een regel om meerdere output-bestanden te maken.
- Snakemake berekent automatisch welke regels moeten worden uitgevoerd om de gewenste output te creëren.
- Beide shell gebaseerde regels, alsook een volledige python syntaxis in een regel wordt ondersteund. Shell commando's hebben directe toegang tot alle lokale en globale python variabelen.
- Net als GNU te maken, kan snakemake parallelle regel executies waar mogelijk te plannen. Verder kunnen onder regel parallellisatie worden gecombineerd met intra regel parallellisatie (bijv draden) en snakemake zorgt ervoor dat het aantal gebruikte cores niet hoger is dan de opgegeven waarde.
- Bestanden kunnen worden gemarkeerd als tijdelijke (dwz ze kunnen worden een keer niet meer nodig verwijderd) of beschermd (dwz ze zullen worden beveiligd tegen schrijven na de schepping).
- Input en output-bestanden kunnen meerdere benoemde wildcards bevatten.
- Input en output bestanden kunnen worden benoemd, zodat het aanpakken van hen in de regel wordt pas.
- Een kaart-verminderen achtige functionaliteit wordt bereikt door het gebruik van de gemakkelijk te python lijstcomprehensie syntax lezen.
- Als een experimentele functie, snakemake kan draaien op een cluster door het specificeren van de opdracht in te dienen (bijv qMin voor Sun Grid Engine).
Eisen
- Python
Reacties niet gevonden