diff --git a/.github/workflows/docker_base.yml b/.github/workflows/docker_base.yml
index 6aa856c..0bf10f2 100644
--- a/.github/workflows/docker_base.yml
+++ b/.github/workflows/docker_base.yml
@@ -1,4 +1,4 @@
-name: Docker Container (Base)
+name: Container build (Base)
on:
push:
@@ -8,25 +8,20 @@ on:
jobs:
push_to_registry:
- name: Push Docker image to GitHub Packages
+ name: Push to quay.io
runs-on: ubuntu-latest
steps:
- name: Check out the repo
uses: actions/checkout@v2
- - name: Push to Docker Hub
- uses: docker/build-push-action@v1
- with:
- username: ${{ secrets.DOCKER_USER }}
- password: ${{ secrets.DOCKER_PASSWORD }}
- repository: beckerlab/aradeepopsis-base
- path: containers/base
- tag_with_ref: true
- - name: Push to GitHub Packages
- uses: docker/build-push-action@v1
- with:
- username: ${{ github.actor }}
- password: ${{ secrets.GITHUB_TOKEN }}
- registry: docker.pkg.github.com
- repository: gregor-mendel-institute/aradeepopsis/aradeepopsis-base
- path: containers/base
- tag_with_ref: true
\ No newline at end of file
+
+ - name: Login to quay.io
+ env:
+ QUAY_USER: ${{ secrets.REGISTRY_USER }}
+ QUAY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }}
+ run: podman login -u ${QUAY_USER} -p ${QUAY_PASSWORD} quay.io
+
+ - name: Build container
+ run: podman build --tag beckerlab/aradeepopsis-base containers/base
+
+ - name: Push container
+ run: podman push beckerlab/aradeepopsis-base docker://quay.io/beckerlab/aradeepopsis-base:${GITHUB_REF##*/}
\ No newline at end of file
diff --git a/.github/workflows/docker_dpp.yml b/.github/workflows/docker_dpp.yml
index fb106fd..4f56524 100644
--- a/.github/workflows/docker_dpp.yml
+++ b/.github/workflows/docker_dpp.yml
@@ -1,4 +1,4 @@
-name: Docker Container (DPP)
+name: Container build (DPP)
on:
push:
@@ -8,25 +8,20 @@ on:
jobs:
push_to_registry:
- name: Push Docker image to GitHub Packages
+ name: Push to quay.io
runs-on: ubuntu-latest
steps:
- name: Check out the repo
uses: actions/checkout@v2
- - name: Push to Docker Hub
- uses: docker/build-push-action@v1
- with:
- username: ${{ secrets.DOCKER_USER }}
- password: ${{ secrets.DOCKER_PASSWORD }}
- repository: beckerlab/aradeepopsis-dpp
- path: containers/addons/dpp
- tag_with_ref: true
- - name: Push to GitHub Packages
- uses: docker/build-push-action@v1
- with:
- username: ${{ github.actor }}
- password: ${{ secrets.GITHUB_TOKEN }}
- registry: docker.pkg.github.com
- repository: gregor-mendel-institute/aradeepopsis/aradeepopsis-dpp
- path: containers/addons/dpp
- tag_with_ref: true
\ No newline at end of file
+
+ - name: Login to quay.io
+ env:
+ QUAY_USER: ${{ secrets.REGISTRY_USER }}
+ QUAY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }}
+ run: podman login -u ${QUAY_USER} -p ${QUAY_PASSWORD} quay.io
+
+ - name: Build container
+ run: podman build --tag beckerlab/aradeepopsis-dpp containers/addons/dpp
+
+ - name: Push container
+ run: podman push beckerlab/aradeepopsis-dpp docker://quay.io/beckerlab/aradeepopsis-dpp:${GITHUB_REF##*/}
\ No newline at end of file
diff --git a/.github/workflows/docker_shiny.yml b/.github/workflows/docker_shiny.yml
index 27656a3..eca5602 100644
--- a/.github/workflows/docker_shiny.yml
+++ b/.github/workflows/docker_shiny.yml
@@ -1,4 +1,4 @@
-name: Docker Container (Shiny)
+name: Container build (Shiny)
on:
push:
@@ -8,25 +8,20 @@ on:
jobs:
push_to_registry:
- name: Push Docker image to GitHub Packages
+ name: Push to quay.io
runs-on: ubuntu-latest
steps:
- name: Check out the repo
uses: actions/checkout@v2
- - name: Push to Docker Hub
- uses: docker/build-push-action@v1
- with:
- username: ${{ secrets.DOCKER_USER }}
- password: ${{ secrets.DOCKER_PASSWORD }}
- repository: beckerlab/aradeepopsis-shiny
- path: containers/shiny
- tag_with_ref: true
- - name: Push to GitHub Packages
- uses: docker/build-push-action@v1
- with:
- username: ${{ github.actor }}
- password: ${{ secrets.GITHUB_TOKEN }}
- registry: docker.pkg.github.com
- repository: gregor-mendel-institute/aradeepopsis/aradeepopsis-shiny
- path: containers/shiny
- tag_with_ref: true
\ No newline at end of file
+
+ - name: Login to quay.io
+ env:
+ QUAY_USER: ${{ secrets.REGISTRY_USER }}
+ QUAY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }}
+ run: podman login -u ${QUAY_USER} -p ${QUAY_PASSWORD} quay.io
+
+ - name: Build container
+ run: podman build --tag beckerlab/aradeepopsis-shiny containers/shiny
+
+ - name: Push container
+ run: podman push beckerlab/aradeepopsis-shiny docker://quay.io/beckerlab/aradeepopsis-shiny:${GITHUB_REF##*/}
\ No newline at end of file
diff --git a/.github/workflows/minimal_test.yml b/.github/workflows/minimal_test.yml
index 2cf72df..fc1c5fe 100644
--- a/.github/workflows/minimal_test.yml
+++ b/.github/workflows/minimal_test.yml
@@ -15,7 +15,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
- nxf_ver: ["20.01.0", ""]
+ nxf_ver: ["20.07.1", ""]
steps:
- uses: actions/checkout@v2
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c051220..5adfb0d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,19 @@
# Changelog
+## [v1.3](https://github.com/Gregor-Mendel-Institute/aradeepopsis/releases/tag/v1.3) - 2021-01-11
+
+* changed container registry from docker.io to quay.io
+* improved image visualization and plot rendering in Shiny app (see [#54](https://github.com/Gregor-Mendel-Institute/aradeepopsis/issues/54)) thanks @dschneiderch for input
+* updated `scikit-image` `0.17.2` > `0.18.1`
+* updated `imagemagick` dependency `7.0.10_23` > `7.0.10_28`
+* updated `shinycssloaders` dependency `0.3` > `1.0.0`
+* updated `slickr` dependency `0.4.9` > `0.5.0`
+* added publication doi to pipeline manifest
+* changed (back) download links in pipeline to fetch pretrained models from Dropbox instead of Zenodo ([#53](https://github.com/Gregor-Mendel-Institute/aradeepopsis/issues/53#issue-779431868))
+* added charliecloud profile (needs nextflow >= 20.12.0-edge)
+* fixed plotting of leaf states over time in Shiny app (when appropriate metadata are provided)
+* added config for LRZ coolmuc2
+
## [v1.2.1](https://github.com/Gregor-Mendel-Institute/aradeepopsis/releases/tag/v1.2.1) - 2020-07-23
* updated pipeline to fetch trained models from the deposited [Zenodo record](https://doi.org/10.5281/zenodo.3946321) instead of Dropbox
@@ -30,4 +44,4 @@
## [v1.0](https://github.com/Gregor-Mendel-Institute/aradeepopsis/releases/tag/v1.0) - 2020-04-02
-Initial pipeline release
\ No newline at end of file
+Initial pipeline release
diff --git a/Jenkinsfile b/Jenkinsfile
deleted file mode 100644
index 408d8c5..0000000
--- a/Jenkinsfile
+++ /dev/null
@@ -1,3 +0,0 @@
-buildDockerImage([imageName: "aradeepopsis",
- pushRegistryNamespace: "becker",
- pushBranches:["master","dev","next"]])
diff --git a/README.md b/README.md
index cd53180..cd6975b 100644
--- a/README.md
+++ b/README.md
@@ -4,16 +4,9 @@
![Latest Release](https://img.shields.io/github/v/release/Gregor-Mendel-Institute/aradeepopsis?sort=semver)
![License](https://img.shields.io/github/license/Gregor-Mendel-Institute/aradeepopsis)
[![DOI](https://zenodo.org/badge/240287274.svg)](https://zenodo.org/badge/latestdoi/240287274)
-[![Nextflow](https://img.shields.io/badge/nextflow-%E2%89%A520.01.0-important.svg)](https://www.nextflow.io/)
+[![Nextflow](https://img.shields.io/badge/nextflow-%E2%89%A520.07.1-important.svg)](https://www.nextflow.io/)
[![conda](https://img.shields.io/badge/install%20with-conda-brightgreen.svg)](https://conda.io/)
-| Container | Image size | Pulls | Latest version |
-| :---: | :---: | :---: | :---: |
-| ![Docker Container (Base)](https://github.com/Gregor-Mendel-Institute/aradeepopsis/workflows/Docker%20Container%20(Base)/badge.svg?branch=master) | ![Docker Size (Base)](https://img.shields.io/docker/image-size/beckerlab/aradeepopsis-base?sort=semver) | ![Pulls](https://img.shields.io/docker/pulls/beckerlab/aradeepopsis-base) | ![Image Tag](https://img.shields.io/docker/v/beckerlab/aradeepopsis-base?sort=semver) |
-| ![Docker Container (Shiny)](https://github.com/Gregor-Mendel-Institute/aradeepopsis/workflows/Docker%20Container%20(Shiny)/badge.svg?branch=master) | ![Docker Size (Shiny)](https://img.shields.io/docker/image-size/beckerlab/aradeepopsis-shiny?sort=semver) | ![Pulls](https://img.shields.io/docker/pulls/beckerlab/aradeepopsis-shiny) | ![Image Tag](https://img.shields.io/docker/v/beckerlab/aradeepopsis-shiny?sort=semver) |
-| ![Docker Docker (DPP)](https://github.com/Gregor-Mendel-Institute/aradeepopsis/workflows/Docker%20Container%20(DPP)/badge.svg?branch=master) | ![Docker Size (DPP)](https://img.shields.io/docker/image-size/beckerlab/aradeepopsis-dpp?sort=semver) | ![Pulls](https://img.shields.io/docker/pulls/beckerlab/aradeepopsis-dpp) | ![Image Tag](https://img.shields.io/docker/v/beckerlab/aradeepopsis-base?sort=semver) |
-
-
# Introduction
`ARADEEPOPSIS` is a software tool that enables plant researchers to non-invasively score plant growth, biomass accumulation and senescence from image data in a highly parallelized, high throughput, yet easy to use manner.
diff --git a/assets/shiny/app.R b/assets/shiny/app.R
index c500ed4..828f171 100755
--- a/assets/shiny/app.R
+++ b/assets/shiny/app.R
@@ -1,18 +1,18 @@
-# Copyright (C) 2019-2020 Patrick Hüther
+# Copyright (C) 2019-2021 Patrick Hüther
#
-# This file is part of araDeepopsis.
-# araDeepopsis free software: you can redistribute it and/or modify
+# This file is part of ARADEEPOPSIS.
+# ARADEEPOPSIS is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
-# araDeepopsis is distributed in the hope that it will be useful,
+# ARADEEPOPSIS is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with araDeepopsis. If not, see .
+# along with ARADEEPOPSIS. If not, see .
library(shiny)
library(slickR)
@@ -42,10 +42,10 @@ traitcount <- ncol(data) - 2 # exclude filename and suffix
imagecount <- nrow(data)
# Define UI
-ui <- navbarPage(title="aradeepopsis", id="nav", theme = shinytheme("flatly"),
+ui <- navbarPage(title=a("aradeepopsis", href="https://github.com/Gregor-Mendel-Institute/aradeepopsis", target="_blank"), windowTitle = "ARADEEPOPSIS", id="nav", theme = shinytheme("flatly"), collapsible=TRUE,
tabPanel("Rosette Carousel",
sliderInput("chunk", label = "Select chunk:", min = 1, max = ceiling(imagecount/60), value = 1, width = '100%', step = 1),
- slickROutput("slickr",width='100%',height='400px') %>% withSpinner()
+ slickROutput("slickr", width='auto', height='auto') %>% withSpinner()
),
tabPanel("Rosette Explorer",
sidebarPanel(
@@ -92,7 +92,7 @@ ui <- navbarPage(title="aradeepopsis", id="nav", theme = shinytheme("flatly"),
div(style = "overflow-x:scroll;", tableOutput("meta")),
varSelectizeInput("file","Select column containing the filename", data = NULL),
varSelectizeInput("date","Select column containing the timestamp", data = NULL),
- textInput("date_format","Enter timestamp format",value="%y-%m-%d"),
+ textInput("date_format",HTML('Enter timestamp format'),value="%y-%m-%d"),
varSelectizeInput("groupvar","Select column to group by", data = NULL),
actionButton("merge_data", "Analyze!"),
conditionalPanel(
@@ -129,18 +129,18 @@ server <- function(input, output, session) {
updateSelectizeInput(session, "explorer_files", choices = c(imagenames), server = TRUE)
output$mask <- renderImage(deleteFile=FALSE,{
- list(src = glue::glue("diagnostics/mask/mask_{input$explorer_files}.png"),width=400,height=400)
+ list(src = glue::glue("diagnostics/mask/mask_{input$explorer_files}.png"),width=600,height="auto")
})
output$hull <- renderImage(deleteFile=FALSE,{
- list(src = glue::glue("diagnostics/convex_hull/hull_{input$explorer_files}.png"),width=400,height=400)
+ list(src = glue::glue("diagnostics/convex_hull/hull_{input$explorer_files}.png"),width=600,height="auto")
})
output$rosette <- renderImage(deleteFile=FALSE,{
- list(src = glue::glue("diagnostics/crop/crop_{input$explorer_files}.jpeg"),width=400,height=400)
+ list(src = glue::glue("diagnostics/crop/crop_{input$explorer_files}.jpeg"),width=600,height="auto")
})
output$overlay <- renderImage(deleteFile=FALSE,{
- list(src = glue::glue("diagnostics/overlay/overlay_{input$explorer_files}.jpeg"),width=400,height=400)
+ list(src = glue::glue("diagnostics/overlay/overlay_{input$explorer_files}.jpeg"),width=600,height="auto")
})
- output$color <- renderPlot({
+ output$color <- renderPlot(width=600,height=600,{
img <- readJPEG(glue::glue("diagnostics/crop/crop_{input$explorer_files}.jpeg"))
r <- img[,,1] %>% as_tibble() %>% pivot_longer(everything()) %>% mutate(name=1)
@@ -214,26 +214,27 @@ server <- function(input, output, session) {
joined() %>%
select(dateVar,groupVar,trait := !!input$exp_traits) %>%
ggplot(aes(x=dateVar,y=trait,colour=groupVar)) +
- stat_summary(geom="line") +
+ stat_summary(geom="line", size=1.5) +
stat_summary(geom="pointrange") +
- scale_color_viridis_d(option="A") +
+ scale_color_viridis_d(option="A", end=0.9) +
labs(x="time",y="trait value",colour=element_blank()) +
theme_bw()
})
output$leafstates <- renderPlot({
joined() %>%
- select(file_name,groupVar,dateVar,matches("norm_area|antho_area|senesc_area")) %>%
+ select(file,groupVar,dateVar,matches("norm_area|antho_area|senesc_area")) %>%
pivot_longer(starts_with("class_"),names_to = "state") %>%
- group_by(groupVar,dateVar,file_name) %>%
+ group_by(groupVar,dateVar,file) %>%
mutate(relativeFrac=value/sum(value)) %>%
ggplot(aes(x = dateVar, y = relativeFrac, colour=state)) +
- stat_summary(geom="line") +
+ stat_summary(geom="line", size=1.5) +
stat_summary(geom="pointrange") +
scale_color_manual(values = c("class_norm_area" = rgb(31,158,137, maxColorValue = 255),
"class_antho_area" = rgb(72,40,120, maxColorValue = 255),
"class_senesc_area" = rgb(253,231,37, maxColorValue = 255))) +
scale_y_continuous(labels = scales::percent) +
labs(x="time",y="% of plant area",colour=element_blank()) +
+ facet_wrap(~groupVar) +
theme_bw()
})
# show a description if Rosette Experiment is selected
@@ -243,12 +244,14 @@ server <- function(input, output, session) {
modalDialog(
title="Experimental feature!",
HTML("This feature is meant to add metadata to the pipeline result, allowing to visualize traits over time.
- It requires a table with metadata in csv format.
- Such metadata has to contain one row per input image and columns with the following information:
- - filename of the original image
- - timestamp when the image was recorded
- - format of the timestamp
- - variable by which the result should be grouped (such as a genotype ID)")
+ It requires a csv table with metadata that is then joined with the pipeline result.
+
+ Such metadata has to contain one row per input image and the following columns:
+ - Filenames of the original images
+ - Timestamps when the images were recorded
+ - Variable(s) by which the result should be grouped (such as genotype or accession ID)
+
+ Note: If the 'file' column of aradeepopsis_traits.csv is used to extract such metadata, trait columns should be removed before uploading")
)
)
}
@@ -262,7 +265,7 @@ server <- function(input, output, session) {
# this drastically improves page loading time
chunks <- if (imagecount > 60) split(imagenames$file, ceiling(seq_along(imagenames$file)/60)) else split(imagenames$file, 1)
- opts <- settings(slidesToShow = 6, slidesToScroll = 6)
+ opts <- settings(slidesToShow=6, slidesToScroll=6, responsive=htmlwidgets::JS("[{breakpoint: 1440,settings: {slidesToShow: 3,slidesToScroll: 3}},{breakpoint: 680,settings: {slidesToShow: 1,slidesToScroll: 1}}]"))
overlay <- slickR(glue::glue("diagnostics/overlay/overlay_{chunks[[input$chunk]]}.jpeg"), height = 200) + opts
mask <- slickR(glue::glue("diagnostics/mask/mask_{chunks[[input$chunk]]}.png"), height = 200) + opts + settings(arrows = F)
diff --git a/bin/data_record.py b/bin/data_record.py
index e50d0b2..a151b01 100644
--- a/bin/data_record.py
+++ b/bin/data_record.py
@@ -2,19 +2,19 @@
# Copyright (C) 2019-2020 Patrick Hüther
#
-# This file is part of araDeepopsis.
-# araDeepopsis free software: you can redistribute it and/or modify
+# This file is part of ARADEEPOPSIS.
+# ARADEEPOPSIS is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
-# araDeepopsis is distributed in the hope that it will be useful,
+# ARADEEPOPSIS is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with araDeepopsis. If not, see .
+# along with ARADEEPOPSIS. If not, see .
import tensorflow as tf
diff --git a/bin/frozen_graph.py b/bin/frozen_graph.py
index a8a266d..ed36e31 100644
--- a/bin/frozen_graph.py
+++ b/bin/frozen_graph.py
@@ -2,19 +2,19 @@
# Copyright (C) 2019-2020 Patrick Hüther
#
-# This file is part of araDeepopsis.
-# araDeepopsis free software: you can redistribute it and/or modify
+# This file is part of ARADEEPOPSIS.
+# ARADEEPOPSIS is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
-# araDeepopsis is distributed in the hope that it will be useful,
+# ARADEEPOPSIS is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with araDeepopsis. If not, see .
+# along with ARADEEPOPSIS. If not, see .
# ======================================================================
# Portions of this code are modifications based on work created and
# shared by Google and used according to terms described in the
diff --git a/bin/traits.py b/bin/traits.py
index 356b485..6bd4ec6 100644
--- a/bin/traits.py
+++ b/bin/traits.py
@@ -2,19 +2,19 @@
# Copyright (C) 2019-2020 Patrick Hüther
#
-# This file is part of araDeepopsis.
-# araDeepopsis free software: you can redistribute it and/or modify
+# This file is part of ARADEEPOPSIS.
+# ARADEEPOPSIS is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
-# araDeepopsis is distributed in the hope that it will be useful,
+# ARADEEPOPSIS is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with araDeepopsis. If not, see .
+# along with ARADEEPOPSIS. If not, see .
import csv
import os
diff --git a/conf/base.config b/conf/base.config
index 3ddaf0a..eca612d 100644
--- a/conf/base.config
+++ b/conf/base.config
@@ -1,23 +1,23 @@
/*
Copyright (C) 2019-2020 Patrick Hüther
-This file is part of araDeepopsis.
-araDeepopsis free software: you can redistribute it and/or modify
+This file is part of ARADEEPOPSIS.
+ARADEEPOPSIS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
-araDeepopsis is distributed in the hope that it will be useful,
+ARADEEPOPSIS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
-along with araDeepopsis. If not, see .
+along with ARADEEPOPSIS. If not, see .
*/
/* -------------------------------------------------
- * Nextflow config file for araDeepopsis
+ * Nextflow config file for ARADEEPOPSIS
* -------------------------------------------------
*/
@@ -28,36 +28,36 @@ env {
process {
withName: build_records {
- container = 'beckerlab/aradeepopsis-base:1.2.1'
+ container = 'quay.io/beckerlab/aradeepopsis-base:1.3'
cpus = 1
memory = 2.GB
time = 1.h
}
withName: run_predictions {
- container = 'beckerlab/aradeepopsis-base:1.2.1'
+ container = 'quay.io/beckerlab/aradeepopsis-base:1.3'
cpus = 2
memory = params.multiscale ? 12.GB : 6.GB
time = 4.h
}
withName: run_predictions_DPP {
- container = 'beckerlab/aradeepopsis-dpp:1.2.1'
+ container = 'quay.io/beckerlab/aradeepopsis-dpp:1.3'
cpus = 2
memory = 2.GB
time = 4.h
}
withName: extract_traits {
- container = 'beckerlab/aradeepopsis-base:1.2.1'
+ container = 'quay.io/beckerlab/aradeepopsis-base:1.3'
cpus = 1
memory = 2.GB
time = 1.h
}
withName: draw_diagnostics {
- container = 'beckerlab/aradeepopsis-base:1.2.1'
+ container = 'quay.io/beckerlab/aradeepopsis-base:1.3'
cpus = 1
memory = 2.GB
time = 1.h
}
withName: launch_shiny {
- container = 'beckerlab/aradeepopsis-shiny:1.2.1'
+ container = 'quay.io/beckerlab/aradeepopsis-shiny:1.3'
}
}
diff --git a/conf/cbe.config b/conf/cbe.config
index 0eb739e..1a75520 100644
--- a/conf/cbe.config
+++ b/conf/cbe.config
@@ -1,19 +1,19 @@
/*
Copyright (C) 2019-2020 Patrick Hüther
-This file is part of araDeepopsis.
-araDeepopsis free software: you can redistribute it and/or modify
+This file is part of ARADEEPOPSIS.
+ARADEEPOPSIS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
-araDeepopsis is distributed in the hope that it will be useful,
+ARADEEPOPSIS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
-along with araDeepopsis. If not, see .
+along with ARADEEPOPSIS. If not, see .
*/
/* -------------------------------------------------
diff --git a/conf/charliecloud.config b/conf/charliecloud.config
new file mode 100644
index 0000000..2f9af09
--- /dev/null
+++ b/conf/charliecloud.config
@@ -0,0 +1,35 @@
+/*
+Copyright (C) 2019-2021 Patrick Hüther
+
+This file is part of ARADEEPOPSIS.
+ARADEEPOPSIS is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+ARADEEPOPSIS is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with ARADEEPOPSIS. If not, see .
+*/
+
+/* -------------------------------------------------
+ * Nextflow config file for ARADEEPOPSIS
+ * -------------------------------------------------
+ */
+
+env {
+ //for charliecloud, the PATH environment within the Docker image needs to be passed explicitly
+ PATH = "/opt/conda/envs/aradeepopsis-dpp-v1.3/bin:/opt/conda/envs/aradeepopsis-shiny-v1.3/bin:/opt/conda/envs/aradeepopsis-base-v1.3/bin:$PATH"
+}
+
+charliecloud {
+ enabled = true
+}
+
+manifest {
+ nextflowVersion = '>=20.12.0-edge'
+}
\ No newline at end of file
diff --git a/conf/conda.config b/conf/conda.config
index 3335b5d..6b828b8 100644
--- a/conf/conda.config
+++ b/conf/conda.config
@@ -1,23 +1,23 @@
/*
Copyright (C) 2019-2020 Patrick Hüther
-This file is part of araDeepopsis.
-araDeepopsis free software: you can redistribute it and/or modify
+This file is part of ARADEEPOPSIS.
+ARADEEPOPSIS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
-araDeepopsis is distributed in the hope that it will be useful,
+ARADEEPOPSIS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
-along with araDeepopsis. If not, see .
+along with ARADEEPOPSIS. If not, see .
*/
/* -------------------------------------------------
- * Nextflow config file for araDeepopsis
+ * Nextflow config file for ARADEEPOPSIS
* -------------------------------------------------
*/
diff --git a/conf/lrz.config b/conf/lrz.config
new file mode 100644
index 0000000..56dfd4c
--- /dev/null
+++ b/conf/lrz.config
@@ -0,0 +1,57 @@
+/*
+Copyright (C) 2019-2020 Patrick Hüther, Niklas Schandry
+
+This file is part of ARADEEPOPSIS.
+ARADEEPOPSIS is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+ARADEEPOPSIS is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with ARADEEPOPSIS. If not, see .
+*/
+
+/* -------------------------------------------------
+ * Nextflow config file for LRZ Linux Cluster (CM2)
+ * -------------------------------------------------
+ */
+
+process {
+ executor = 'slurm'
+ queue = 'cm2_std'
+ queueSize = 50
+ clusterOptions = "--clusters cm2 --qos cm2_std"
+ errorStrategy = { task.exitStatus in [104,134,135,137,139,140,143] ? 'retry' : 'finish' }
+ maxRetries = 3
+
+ withName: build_records {
+ cpus = { 1 * task.attempt }
+ memory = { 1.GB * task.attempt }
+ time = { 1.h * task.attempt }
+ }
+ withName: run_predictions {
+ cpus = { 4 * task.attempt }
+ memory = { 12.GB * task.attempt }
+ time = { 4.h * task.attempt }
+ }
+ withName: run_predictions_DPP {
+ cpus = { 4 * task.attempt }
+ memory = { 16.GB * task.attempt }
+ time = { 2.h * task.attempt }
+ }
+ withName: extract_traits {
+ cpus = { 1 * task.attempt }
+ memory = { 1.GB * task.attempt }
+ time = { 1.h * task.attempt }
+ }
+ withName: draw_diagnostics {
+ cpus = { 1 * task.attempt }
+ memory = { 2.GB * task.attempt }
+ time = { 1.h * task.attempt }
+ }
+}
diff --git a/conf/test.config b/conf/test.config
index 5933a7e..785c4a6 100644
--- a/conf/test.config
+++ b/conf/test.config
@@ -1,19 +1,19 @@
/*
Copyright (C) 2019-2020 Patrick Hüther
-This file is part of araDeepopsis.
-araDeepopsis free software: you can redistribute it and/or modify
+This file is part of ARADEEPOPSIS.
+ARADEEPOPSIS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
-araDeepopsis is distributed in the hope that it will be useful,
+ARADEEPOPSIS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
-along with araDeepopsis. If not, see .
+along with ARADEEPOPSIS. If not, see .
*/
/* -------------------------------------------------
diff --git a/containers/addons/dpp/Dockerfile b/containers/addons/dpp/Dockerfile
index c0f51c9..0bb85cc 100644
--- a/containers/addons/dpp/Dockerfile
+++ b/containers/addons/dpp/Dockerfile
@@ -1,9 +1,8 @@
FROM continuumio/miniconda3
-MAINTAINER Patrick Hüther
LABEL authors="patrick.huether@gmi.oeaw.ac.at" \
- description="Container image containing DPP dependencies for araDeepopsis"
+ description="Container image containing DPP dependencies for ARADEEPOPSIS"
COPY environment.yml /
RUN apt-get update && apt-get install -y procps graphviz && apt-get clean -y
RUN conda env create -f /environment.yml && conda clean -afy
-ENV PATH /opt/conda/envs/aradeepopsis-dpp-v1.2.1/bin:$PATH
+ENV PATH /opt/conda/envs/aradeepopsis-dpp-v1.3/bin:$PATH
diff --git a/containers/addons/dpp/environment.yml b/containers/addons/dpp/environment.yml
index 2022c67..71b1279 100644
--- a/containers/addons/dpp/environment.yml
+++ b/containers/addons/dpp/environment.yml
@@ -1,4 +1,4 @@
-name: aradeepopsis-dpp-v1.2.1
+name: aradeepopsis-dpp-v1.3
channels:
- conda-forge
- defaults
diff --git a/containers/base/Dockerfile b/containers/base/Dockerfile
index 30ae3d4..496ba4f 100644
--- a/containers/base/Dockerfile
+++ b/containers/base/Dockerfile
@@ -1,9 +1,8 @@
FROM continuumio/miniconda3
-MAINTAINER Patrick Hüther
LABEL authors="patrick.huether@gmi.oeaw.ac.at" \
- description="Container image containing base dependencies for araDeepopsis"
+ description="Container image containing base dependencies for ARADEEPOPSIS"
COPY environment.yml /
RUN apt-get update && apt-get install -y procps graphviz && apt-get clean -y
RUN conda env create -f /environment.yml && conda clean -afy
-ENV PATH /opt/conda/envs/aradeepopsis-base-v1.2.1/bin:$PATH
\ No newline at end of file
+ENV PATH /opt/conda/envs/aradeepopsis-base-v1.3/bin:$PATH
diff --git a/containers/base/environment.yml b/containers/base/environment.yml
index 66414fa..ee0d468 100644
--- a/containers/base/environment.yml
+++ b/containers/base/environment.yml
@@ -1,9 +1,9 @@
-name: aradeepopsis-base-v1.2.1
+name: aradeepopsis-base-v1.3
channels:
- conda-forge
- defaults
dependencies:
- anaconda::tensorflow-base=2.0.0
- anaconda::tensorflow-estimator=2.0.0
- - conda-forge::scikit-image=0.17.2
- - conda-forge::imagemagick=7.0.10_23
+ - conda-forge::scikit-image=0.18.1
+ - conda-forge::imagemagick=7.0.10_28
diff --git a/containers/shiny/Dockerfile b/containers/shiny/Dockerfile
index 2dbd0e1..d1e14fc 100644
--- a/containers/shiny/Dockerfile
+++ b/containers/shiny/Dockerfile
@@ -1,11 +1,10 @@
FROM continuumio/miniconda3
-MAINTAINER Patrick Hüther
LABEL authors="patrick.huether@gmi.oeaw.ac.at" \
- description="Container image containing shiny dependencies for araDeepopsis"
+ description="Container image containing shiny dependencies for ARADEEPOPSIS"
COPY environment.yml /
RUN apt-get update && apt-get install -y procps graphviz && apt-get clean -y
RUN conda env create -f /environment.yml && conda clean -afy
-ENV PATH /opt/conda/envs/aradeepopsis-shiny-v1.2.1/bin:$PATH
+ENV PATH /opt/conda/envs/aradeepopsis-shiny-v1.3/bin:$PATH
EXPOSE 44333
\ No newline at end of file
diff --git a/containers/shiny/environment.yml b/containers/shiny/environment.yml
index ea30a9c..fc0e5fe 100644
--- a/containers/shiny/environment.yml
+++ b/containers/shiny/environment.yml
@@ -1,4 +1,4 @@
-name: aradeepopsis-shiny-v1.2.1
+name: aradeepopsis-shiny-v1.3
channels:
- conda-forge
- r
@@ -7,8 +7,8 @@ dependencies:
- conda-forge::r-tidyverse=1.3.0
- conda-forge::r-shiny=1.5.0
- conda-forge::r-shinythemes=1.1.2
- - conda-forge::r-shinycssloaders=0.3
- - conda-forge::r-slickr=0.4.9
+ - conda-forge::r-shinycssloaders=1.0.0
+ - conda-forge::r-slickr=0.5.0
- conda-forge::r-corrplot=0.84
- conda-forge::r-jpeg=0.1_8.1
- r::r-radarchart=0.3.1
diff --git a/docs/parameters.md b/docs/parameters.md
index 8cdf697..037d425 100644
--- a/docs/parameters.md
+++ b/docs/parameters.md
@@ -132,6 +132,6 @@ Launch a [Shiny](https://shiny.rstudio.com/) app as the last step of the pipelin
> R -e "shiny::runApp('app.R', port=44333)"
>
> # if using the container image
-> {docker|podman} run -v $(pwd):/mnt/shiny -p 44333:44333 beckerlab/aradeepopsis-shiny:1.2.1 R -e "shiny::runApp('/mnt/shiny/app.R', port=44333, host='0.0.0.0')"
+> {docker|podman} run -v $(pwd):/mnt/shiny -p 44333:44333 quay.io/beckerlab/aradeepopsis-shiny:1.3 R -e "shiny::runApp('/mnt/shiny/app.R', port=44333, host='0.0.0.0')"
> ```
> The shiny app can then be opened in a browser by typing localhost:44333 in the address bar. It will terminate when the browser window is closed.
diff --git a/lib/ParameterChecks.groovy b/lib/ParameterChecks.groovy
index 1572646..2a26730 100644
--- a/lib/ParameterChecks.groovy
+++ b/lib/ParameterChecks.groovy
@@ -1,19 +1,19 @@
/*
Copyright (C) 2019-2020 Patrick Hüther
-This file is part of araDeepopsis.
-araDeepopsis free software: you can redistribute it and/or modify
+This file is part of ARADEEPOPSIS.
+ARADEEPOPSIS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
-araDeepopsis is distributed in the hope that it will be useful,
+ARADEEPOPSIS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
-along with araDeepopsis. If not, see .
+along with ARADEEPOPSIS. If not, see .
*/
class ParameterChecks {
diff --git a/main.nf b/main.nf
index 3ac7211..18848c9 100644
--- a/main.nf
+++ b/main.nf
@@ -1,21 +1,21 @@
#!/usr/bin/env nextflow
/*
-Copyright (C) 2019-2020 Patrick Hüther
+Copyright (C) 2019-2021 Patrick Hüther
-This file is part of araDeepopsis.
-araDeepopsis free software: you can redistribute it and/or modify
+This file is part of ARADEEPOPSIS.
+ARADEEPOPSIS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
-araDeepopsis is distributed in the hope that it will be useful,
+ARADEEPOPSIS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
-along with araDeepopsis. If not, see .
+along with ARADEEPOPSIS. If not, see .
*/
/*
@@ -110,19 +110,19 @@ Pipeline parameters
switch(params.model) {
case 'A':
- model = "https://zenodo.org/record/3946618/files/1_class_${params.multiscale ? 'multiscale' : 'singlescale'}.pb"
+ model = params.multiscale ? 'https://www.dropbox.com/s/19eeq3yog975otz/1_class_multiscale.pb?dl=1' : 'https://www.dropbox.com/s/ejpkgnvsv9p9s5d/1_class_singlescale.pb?dl=1'
labels = "class_background=0,class_norm=1"
ignore_label = "None"
max_dimension = 602
break
case 'B':
- model = "https://zenodo.org/record/3946618/files/2_class_${params.multiscale ? 'multiscale' : 'singlescale'}.pb"
+ model = params.multiscale ? 'https://www.dropbox.com/s/9m4wy990ajv7cmg/2_class_multiscale.pb?dl=1' : 'https://www.dropbox.com/s/s808kcq9jgiyko9/2_class_singlescale.pb?dl=1'
labels = "class_background=0,class_norm=1,class_senesc=2"
ignore_label = params.ignore_senescence ? "2" : "None"
max_dimension = 602
break
case 'C':
- model = "https://zenodo.org/record/3946618/files/3_class_${params.multiscale ? 'multiscale' : 'singlescale'}.pb"
+ model = params.multiscale ? 'https://www.dropbox.com/s/xwnqytcf6xzdumq/3_class_multiscale.pb?dl=1' : 'https://www.dropbox.com/s/1axmww7cqor6i7x/3_class_singlescale.pb?dl=1'
labels = "class_background=0,class_norm=1,class_senesc=2,class_antho=3"
ignore_label = params.ignore_senescence ? "2" : "None"
max_dimension = 602
@@ -457,7 +457,7 @@ ch_results
.set {ch_resultfile}
process launch_shiny {
- containerOptions { workflow.profile.contains('singularity') ? '' : '-p 44333:44333' }
+ containerOptions { workflow.profile.contains('singularity') || workflow.profile.contains('charliecloud') ? '' : '-p 44333:44333' }
executor 'local'
cache false
@@ -487,4 +487,4 @@ workflow.onError {
The current pipeline configuration requires at least ${params.multiscale ? '12GB' : '6GB'} of RAM.
""".stripIndent()
}
-}
\ No newline at end of file
+}
diff --git a/nextflow.config b/nextflow.config
index b27056e..fb2b69e 100644
--- a/nextflow.config
+++ b/nextflow.config
@@ -1,24 +1,24 @@
/*
-Copyright (C) 2019-2020 Patrick Hüther
+Copyright (C) 2019-2021 Patrick Hüther
-This file is part of araDeepopsis.
-araDeepopsis free software: you can redistribute it and/or modify
+This file is part of ARADEEPOPSIS.
+ARADEEPOPSIS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
-araDeepopsis is distributed in the hope that it will be useful,
+ARADEEPOPSIS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
-along with araDeepopsis. If not, see .
+along with ARADEEPOPSIS. If not, see .
*/
/*
* -------------------------------------------------
- * araDeepopsis Nextflow config file
+ * ARADEEPOPSIS Nextflow config file
* -------------------------------------------------
* Default config options for all environments.
*/
@@ -67,19 +67,22 @@ profiles {
docker { docker.enabled = true }
podman { podman.enabled = true }
singularity { singularity.enabled = true }
+ charliecloud { includeConfig 'conf/charliecloud.config' }
conda { includeConfig 'conf/conda.config' }
test { includeConfig 'conf/test.config' }
// cluster specific profiles
cbe { includeConfig 'conf/cbe.config' }
+ lrzcm2 { includeConfig 'conf/lrz.config' }
}
manifest {
homePage = 'https://github.com/Gregor-Mendel-Institute/aradeepopsis'
description = "Nextflow pipeline to run semantic segmentation on plant rosette images with DeepLab V3+"
name = 'aradeepopsis'
- version = '1.2.1'
+ version = '1.3'
mainScript = 'main.nf'
- nextflowVersion = '>=20.01.0'
+ nextflowVersion = '>=20.07.1'
+ doi = '10.1105/tpc.20.00318'
}
timeline {