<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Workflow-Tools on Living Systems_</title>
    <link>https://livesys.se/tags/workflow-tools/</link>
    <description>Recent content in Workflow-Tools on Living Systems_</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Fri, 16 May 2025 22:31:42 +0200</lastBuildDate>
    <atom:link href="https://livesys.se/tags/workflow-tools/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Setting up the Nextflow Language Server (LSP) with NeoVim</title>
      <link>https://livesys.se/posts/nextflow-lsp-with-neovim/</link>
      <pubDate>Fri, 16 May 2025 22:31:42 +0200</pubDate>
      <guid>https://livesys.se/posts/nextflow-lsp-with-neovim/</guid>
      <description>&lt;p&gt;&lt;p class=&#34;image&#34;&gt;&#xA;    &lt;img src=&#34;screenshot.png&#34; alt=&#34;Screenshot of Nextflow LSP in NeoVim in action showing a context menu&#34;  /&gt;&#xA;&lt;/p&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;It turns out it is super easy to get Nextflow code intelligence to work in&#xA;NeoVim now! This is thanks to the newly released &lt;a href=&#34;https://github.com/nextflow-io/language-server&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Nextflow language server&lt;/a&gt;&#xA;&#xA;following the increasingly popular Language Server Protocol (LSP).&lt;/p&gt;&#xA;&lt;p&gt;See &lt;a href=&#34;https://seqera.io/podcasts/episode-47-nextflow-language-server/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;this episode of the Nextflow podcast&lt;/a&gt;&#xA; for a&#xA;more in-depth discussion on this new functionality.&lt;/p&gt;&#xA;&lt;p&gt;The focus has initially been on making this to work in the very popular Visual&#xA;Studio Code editor, but through some recent developments by the community,&#xA;setting it up in NeoVim is also pretty smooth.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Troubleshooting Nextflow pipelines</title>
      <link>https://livesys.se/posts/troubleshooting-nextflow-pipelines/</link>
      <pubDate>Wed, 01 Nov 2023 11:47:00 +0100</pubDate>
      <guid>https://livesys.se/posts/troubleshooting-nextflow-pipelines/</guid>
      <description>&lt;!-- raw HTML omitted --&gt;&#xA;&lt;p&gt;We have been evaluating Nextflow before in my work at&#xA;&lt;a href=&#34;https://pharmb.io&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;pharmb.io&lt;/a&gt;&#xA;, but that was before&#xA;&lt;a href=&#34;https://www.nextflow.io/docs/latest/dsl1.html&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;DSL2&lt;/a&gt;&#xA; and the support&#xA;for re-usable modules (which was one reason we needed to develop our own&#xA;tools to support our challenges, as explained &lt;a href=&#34;https://doi.org/10.1093/gigascience/giz044&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;in the&#xA;paper&lt;/a&gt;&#xA;). Thus, there&amp;rsquo;s&#xA;definitely some stuff to get into.&lt;/p&gt;&#xA;&lt;p&gt;Based on my years in bioinformatics and data science, I&amp;rsquo;ve seen that&#xA;the number one skill that you need to develop is to be able to&#xA;effectively troubleshoot things, because things will invariably fail in&#xA;all kinds of ways. And in the process, you will probably learn a lot&#xA;about the technology stack you are using.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Make your commandline tool workflow friendly</title>
      <link>https://livesys.se/posts/make-your-commandline-tool-workflow-friendly/</link>
      <pubDate>Fri, 25 May 2018 23:59:00 +0200</pubDate>
      <guid>https://livesys.se/posts/make-your-commandline-tool-workflow-friendly/</guid>
      <description>&lt;p&gt;&lt;em&gt;Update (May 2019):&lt;/em&gt; A paper incorporating the below considerations is published:&lt;/p&gt;&#xA;&lt;p&gt;Björn A Grüning, Samuel Lampa, Marc Vaudel, Daniel Blankenberg, &amp;ldquo;&lt;a href=&#34;https://doi.org/10.1093/gigascience/giz054&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Software&#xA;engineering for scientific big data&#xA;analysis&lt;/a&gt;&#xA;&amp;rdquo; GigaScience, Volume 8,&#xA;Issue 5, May 2019, giz054, &lt;a href=&#34;https://doi.org/10.1093/gigascience/giz054&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://doi.org/10.1093/gigascience/giz054&lt;/a&gt;&#xA;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;There are a number of pitfalls that can make a commandline program&#xA;really hard to integrate into a workflow (or &amp;ldquo;pipeline&amp;rdquo;) framework.&#xA;The reason is that many workflow tools use output file paths to keep&#xA;track of the state of the tasks producing these files. This is done for&#xA;example to know which tasks are finished and can be skipped upon a&#xA;re-run, and which are not.&lt;/p&gt;</description>
    </item>
    <item>
      <title>What is a scientific (batch) workflow?</title>
      <link>https://livesys.se/posts/what-is-a-scientific-batch-workflow/</link>
      <pubDate>Thu, 07 Dec 2017 00:57:00 +0100</pubDate>
      <guid>https://livesys.se/posts/what-is-a-scientific-batch-workflow/</guid>
      <description>&lt;h2 id=&#34;dependency-graph-in-luigi---a-dag-representing-tasks-not-processes-or-workflow-stepsdependencygraphnew_without_shadow-1pngdependencygraphnew_without_shadow-1png&#34;&gt;&lt;a href=&#34;dependencygraphnew_without_shadow-1.png&#34;&gt;&lt;p class=&#34;image&#34;&gt;&#xA;    &lt;img src=&#34;dependencygraphnew_without_shadow-1.png&#34; alt=&#34;Dependency graph in Luigi - A DAG representing tasks (not processes or workflow steps)&#34;  /&gt;&#xA;&lt;/p&gt;&#xA;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;h2 id=&#34;workflows-and-dags---confusion-about-the-concepts&#34;&gt;Workflows and DAGs - Confusion about the concepts&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://twitter.com/joergenbr&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Jörgen Brandt&lt;/a&gt;&#xA; &lt;a href=&#34;https://twitter.com/joergenbr/status/907626987333746688&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;tweeted a&#xA;comment&lt;/a&gt;&#xA; that&#xA;got me thinking again on something I&amp;rsquo;ve pondered a lot lately:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&amp;ldquo;A workflow is a DAG.&amp;rdquo; is really a weak definition. That&amp;rsquo;s like&#xA;saying &amp;ldquo;A love letter is a sequence of characters.&amp;rdquo; representation ≠&#xA;meaning&lt;/p&gt;&#xA;&lt;p&gt;&amp;ndash; &lt;a href=&#34;https://twitter.com/joergenbr/status/907626987333746688&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;@joergenbr&lt;/a&gt;&#xA;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Jörgen makes a good point. A &lt;a href=&#34;https://en.wikipedia.org/wiki/Directed_acyclic_graph&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Directed Acyclic Graph&#xA;(DAG)&lt;/a&gt;&#xA; does not by&#xA;any means capture the full semantic content included in a computational&#xA;workflow. I think &lt;a href=&#34;http://www.worldscientific.com/doi/pdf/10.1142/9789814508728_0001&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Werner Gitt&amp;rsquo;s &lt;em&gt;universal information&lt;/em&gt;&#xA;model&lt;/a&gt;&#xA;&#xA;is highly relevant here, suggesting that information comes in at least&#xA;five abstraction layers: statistics (signals, number of symbols), syntax&#xA;(set of symbols, grammar), semantics (meaning), pragmatics (action),&#xA;apobetics (purpose, result). A DAG seems to cover the syntax and&#xA;semantics layers, leaving out three layers out of five.&lt;/p&gt;</description>
    </item>
    <item>
      <title>First production run with SciPipe - A Go-based scientific workflow tool</title>
      <link>https://livesys.se/posts/first-production-workflow-run-with-scipipe/</link>
      <pubDate>Thu, 28 Sep 2017 19:32:00 +0200</pubDate>
      <guid>https://livesys.se/posts/first-production-workflow-run-with-scipipe/</guid>
      <description>&lt;p&gt;Today marked the day when we ran the very first production workflow with&#xA;&lt;a href=&#34;http://scipipe.org&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;SciPipe&lt;/a&gt;&#xA;, the &lt;a href=&#34;https://golang.org/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Go&lt;/a&gt;&#xA;-based&#xA;&lt;a href=&#34;https://en.wikipedia.org/wiki/Scientific_workflow_system&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;scientific workflow&#xA;tool&lt;/a&gt;&#xA; we&amp;rsquo;ve&#xA;been working on over the last couple of years. Yay! :)&lt;/p&gt;&#xA;&lt;p&gt;This is how it looked (no fancy GUI or such yet, sorry):&lt;/p&gt;&#xA;&lt;p&gt;&lt;p class=&#34;image&#34;&gt;&#xA;    &lt;img src=&#34;terminal_411.png&#34; alt=&#34;&#34;  /&gt;&#xA;&lt;/p&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;The first result we got in this very very first job was a list of counts&#xA;of ligands (chemical compounds) in the &lt;a href=&#34;https://jcheminf.springeropen.com/articles/10.1186/s13321-017-0203-5&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;ExcapeDB&#xA;dataset&lt;/a&gt;&#xA;&#xA;(&lt;a href=&#34;https://zenodo.org/record/173258&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;download here&lt;/a&gt;&#xA;) interacting with the&#xA;44 protein/gene targets &lt;a href=&#34;http://dx.doi.org/10.1038/nrd3845&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;identified by Bowes et&#xA;al&lt;/a&gt;&#xA; as a good baseline set for&#xA;identifying hazardous side-effects effects in the body (that is, any&#xA;chemical compounds binding these proteins, will never become an approved&#xA;drug).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tutorial: Luigi for Scientific Workflows</title>
      <link>https://livesys.se/posts/luigi-tutorial/</link>
      <pubDate>Tue, 21 Jun 2016 13:49:00 +0200</pubDate>
      <guid>https://livesys.se/posts/luigi-tutorial/</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a Luigi tutorial I held at the &lt;a href=&#34;http://uppnex.se/events/eInfraMPS2015/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;e-Infrastructures for Massively&#xA;parallel sequencing&lt;/a&gt;&#xA; workshop&#xA;(&lt;a href=&#34;https://www.youtube.com/channel/UCfLDx5VYn25QIZLmtybvdeQ/videos&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Video&#xA;archive&lt;/a&gt;&#xA;)&#xA;at &lt;a href=&#34;http://scilifelab.se/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;SciLifeLab&lt;/a&gt;&#xA; Uppsala in January 2015, moved&#xA;here for future reference.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;luigi_screenshotpng&#34;&gt;&lt;p class=&#34;image&#34;&gt;&#xA;    &lt;img src=&#34;luigi_screenshot.png&#34; alt=&#34;&#34;  /&gt;&#xA;&lt;/p&gt;&#xA;&lt;/h2&gt;&#xA;&lt;h2 id=&#34;what-is-luigi&#34;&gt;What is Luigi?&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/spotify/luigi&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Luigi&lt;/a&gt;&#xA; is a batch workflow system&#xA;written in Python and developed by &lt;a href=&#34;https://erikbern.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Erik&#xA;Bernhardson&lt;/a&gt;&#xA; and others at&#xA;&lt;a href=&#34;http://spotify.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Spotify&lt;/a&gt;&#xA;, where it is used to compute&#xA;machine-learning powered music recommendation lists, top lists etc.&lt;/p&gt;&#xA;&lt;p&gt;Luigi is one of not-too-many batch workflow systems that supports&#xA;running both normal command line jobs and&#xA;&lt;a href=&#34;http://hadoop.apache.org/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Hadoop&lt;/a&gt;&#xA; jobs in the same (in this tutorial,&#xA;we will focus only on the command line part).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Wanted: Dynamic workflow scheduling</title>
      <link>https://livesys.se/posts/dynamic-workflow-scheduling/</link>
      <pubDate>Mon, 26 Oct 2015 21:23:00 +0100</pubDate>
      <guid>https://livesys.se/posts/dynamic-workflow-scheduling/</guid>
      <description>&lt;p&gt;&lt;p class=&#34;image&#34;&gt;&#xA;    &lt;img src=&#34;scheduling_unsplash-1.jpg&#34; alt=&#34;&#34;  /&gt;&#xA;&lt;/p&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;Photo credits: &lt;a href=&#34;https://unsplash.com/whale&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Matthew Smith&lt;/a&gt;&#xA; /&#xA;&lt;a href=&#34;https://unsplash.com/photos/OiiThC8Wf68&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Unsplash&lt;/a&gt;&#xA;&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;In &lt;a href=&#34;https://jcheminf.springeropen.com/articles/10.1186/s13321-016-0179-6&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;our work on automating machine learning computations in&#xA;cheminformatics with scientific workflow&#xA;tools&lt;/a&gt;&#xA;,&#xA;we have came to realize something; &lt;em&gt;Dynamic scheduling in scientific&#xA;workflow tools is very important and sometimes badly needed.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;What I mean is that &lt;em&gt;new tasks should be able to be scheduled during the&#xA;execution of a workflow, not just in its scheduling phase.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;What is striking is that far from all workflow tools allow this. Many&#xA;tools completely separate the execution into two stages:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Workflow tool makers: Allow defining data flow, not just task dependencies</title>
      <link>https://livesys.se/posts/workflows-dataflow-not-task-deps/</link>
      <pubDate>Wed, 10 Jun 2015 12:03:00 +0200</pubDate>
      <guid>https://livesys.se/posts/workflows-dataflow-not-task-deps/</guid>
      <description>&lt;h3 id=&#34;upsurge-in-workflow-tools&#34;&gt;Upsurge in workflow tools&lt;/h3&gt;&#xA;&lt;p&gt;&lt;p class=&#34;image&#34;&gt;&#xA;    &lt;img src=&#34;selection_201.png&#34; alt=&#34;Workflow tool&#xA;logos&#34;  class=&#34;align_right&#34; /&gt;&#xA;&lt;/p&gt;&#xA;There&#xA;seem to be a little upsurge in light-weight - often python-based -&#xA;workflow tools for data pipelines in the last couple of years:&#xA;Spotify&amp;rsquo;s &lt;a href=&#34;https://github.com/spotify/luigi&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Luigi&lt;/a&gt;&#xA;, OpenStack&amp;rsquo;s&#xA;&lt;a href=&#34;https://wiki.openstack.org/wiki/Mistral&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Mistral&lt;/a&gt;&#xA;, Pinterest&amp;rsquo;s&#xA;&lt;a href=&#34;https://github.com/pinterest/pinball&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Pinball&lt;/a&gt;&#xA;, and recently AirBnb&amp;rsquo;s&#xA;&lt;a href=&#34;https://github.com/airbnb/airflow&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Airflow&lt;/a&gt;&#xA;, to name a few. These are&#xA;all interesting tools, and it is an interesting trend for us at&#xA;&lt;a href=&#34;http://www.farmbio.uu.se/research/researchgroups/pb/?languageId=1&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;pharmbio&lt;/a&gt;&#xA;,&#xA;who try to see how we can use workflow tools to automate bio- and&#xA;cheminformatics tasks on compute clusters.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The problem with make for scientific workflows</title>
      <link>https://livesys.se/posts/the-problem-with-make-for-scientific-workflows/</link>
      <pubDate>Sat, 14 Mar 2015 20:46:00 +0100</pubDate>
      <guid>https://livesys.se/posts/the-problem-with-make-for-scientific-workflows/</guid>
      <description>&lt;h2 id=&#34;selection_131png&#34;&gt;&lt;p class=&#34;image&#34;&gt;&#xA;    &lt;img src=&#34;selection_131.png&#34; alt=&#34;&#34;  /&gt;&#xA;&lt;/p&gt;&#xA;&lt;/h2&gt;&#xA;&lt;h2 id=&#34;the-workflow-problem-solved-once-and-for-all-in-1979&#34;&gt;The workflow problem solved once and for all in 1979?&lt;/h2&gt;&#xA;&lt;p&gt;As soon as the topic of scientific workflows is brought up, there are&#xA;always a few make fans fervently insisting that the problem of workflows&#xA;is solved once and for all with &lt;a href=&#34;http://www.gnu.org/software/make/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;GNU&#xA;make&lt;/a&gt;&#xA;, written first in the 70&amp;rsquo;s :)&lt;/p&gt;&#xA;&lt;p&gt;Personally I haven&amp;rsquo;t been so sure. On the one hand, I know the tool&#xA;solves a lot of problems for many people. Also, there is something very&#xA;attractive about buildling on a tool that you can be sure will be&#xA;available on more or less every unix-like operating system, for decades&#xA;to come.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Links: Our experiences using Spotify&#39;s Luigi for Bioinformatics Workflows</title>
      <link>https://livesys.se/posts/our-experiences-using-spotifys-luigi-for-bioinformatics-workflows/</link>
      <pubDate>Thu, 12 Feb 2015 20:45:00 +0100</pubDate>
      <guid>https://livesys.se/posts/our-experiences-using-spotifys-luigi-for-bioinformatics-workflows/</guid>
      <description>&lt;p&gt;&lt;p class=&#34;image&#34;&gt;&#xA;    &lt;img src=&#34;selection_047_luigi.png&#34; alt=&#34;Luigi Screenshot&#34;  /&gt;&#xA;&lt;/p&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;Fig 1: A screenshot of Luigi&amp;rsquo;s web UI, of a real-world (although&#xA;rather simple) workflow implemented in Luigi:&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;&lt;strong&gt;Update May 5, 2016:&lt;/strong&gt; Most of the below material is more or less&#xA;outdated. Our latest work has resulted in the &lt;a href=&#34;https://github.com/pharmbio/sciluigi&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;SciLuigi helper&#xA;library&lt;/a&gt;&#xA;, which we have used in&#xA;production and will be focus of further developments.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;In the &lt;a href=&#34;http://bioclipse.net/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Bioclipse&lt;/a&gt;&#xA; / &lt;a href=&#34;http://www.farmbio.uu.se/forskning/researchgroups/pb/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Pharmaceutical&#xA;Bioinformatics&#xA;group&lt;/a&gt;&#xA; at Dept of&#xA;Pharm. Biosciences att UU, we are quite heavy users of Spotify&amp;rsquo;s &lt;a href=&#34;https://github.com/spotify/luigi&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Luigi&#xA;workflow library&lt;/a&gt;&#xA;, to automate&#xA;workflows, mainly doing Machine Learning heavy lifting.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
