Giter VIP home page Giter VIP logo

bfabricshiny's Introduction

JIB codecov Downloads

bfabricShiny R package

Demonstration

Enables connecting R and bfabric using REST

bfabricPy-read-R

Command line triggered analytics

The animated gif below illustrates the interaction between an application (performing quality control on mass spectrometric measurements using rawDiag) and the B-Fabric platform on the command line level using the R console.

code_snippet_demo

The R code as used in the animated gif.

## R --no-save < code_snippet.R
## devtools::install_github("fgcz/bfabricShiny")
## devtools::install_github("fgcz/rawDiag")
stopifnot(R.Version()['major'] >= '4',
    require('rawDiag'),
    require('bfabricShiny'))

## Define B-Fabric input workunit
workunitid <- 165473

## Query metadata from B-Fabric
Q <- bfabricShiny::read(login, webservicepassword,
  endpoint = 'resource',
  query = list('workunitid' = workunitid), as_data_frame=FALSE)

## setting root directory
rawfilenames <- Q$res |>
    sapply(function(x)file.path('/srv/www/htdocs/', x$relativepath))

## Extract MS data from BLOBs using the rawDiag R package
## That requires storage access via SSH, NFS, or SAMBA
RAW <- rawfilenames |>
    parallel::mclapply(rawDiag::read.raw, mc.cores = 12) |>
    base::Reduce(f = rbind)

## Print a summary
RAW |> rawDiag::summary.rawDiag()

## Have fun with visualization https://doi.org/10.1021/acs.jproteome.8b00173
## (a)
RAW |> rawDiag::PlotPrecursorHeatmap(bins = 25)
## (b)
RAW |> rawDiag::PlotPrecursorHeatmap(bins = 25) +
  ggplot2::facet_wrap(~ filename)
## (c)
RAW |> rawDiag::PlotTicBasepeak(method = 'overlay')
## (d)
RAW |> rawDiag::PlotInjectionTime(method = 'overlay')

INSTALL

## Debian 12
apt-get install r-base libcurl4-openssl-dev lcmaps-openssl-interface -y

use source code from GitHub

if (!requireNamespace("devtools", quietly = TRUE))
    install.packages("devtools")

if (!requireNamespace("PKI", quietly = TRUE))
    install.packages('PKI')

devtools::install_github("cpanse/shinyStore")
devtools::install_github('fgcz/bfabricShiny', build_vignettes = FALSE,
  quiet = FALSE)

Use cases

Run shiny based queue generator application

pkgs <- c('devtools', 'tidyverse', 'shiny', 'affy', 'limma')
pkgs[!pkgs %in% installed.packages()] |> 
  BiocManager::install()

devtools::install_github('protViz/SRMService', build_vignettes = FALSE,
  quiet = FALSE)
system.file("shiny", "queue_generator10", package = "bfabricShiny") |>
  shiny::runApp(display.mode = "normal")

JSON - SOAP proxy using python

  • run
python3 bfabric_flask.py 

If a certified key is available, Flask will use SSL certificate and run on port 5001. Otherwise it will run using http and port 5000. Note that the port configuration can be changed in the bfabric_flask.py script.

# code snippet from bfabric_flask.py:
if exists('/etc/ssl/fgcz-host.pem') and exists('/etc/ssl/private/fgcz-host_key.pem'):    
    app.run(debug=False, host="0.0.0.0", port=5001, ssl_context=('/etc/ssl/fgcz-host.pem', '/etc/ssl/private/fgcz-host_key.pem'))
else:
   app.run(debug=False, host="127.0.0.1", port=5000)

See bfabric_flask.py on GitHub for more details.

  • simple tests
curl http://127.0.0.1:5000/sample/1
# R
rv <- httr::POST("https://host:5001/read", body = jsonlite::toJSON(list(login = "login", webservicepassword = "webservicepassword", endpoint = "user", query = list("login" = "cpanse"))), encode = "json")
httr::content(rv)

Sample Query

R> (Q <- query(login, webservicepassword, 
   endpoint = 'resource',
   query = list('filechecksum' = "65518d3ccc6b4f3c83c132dae147fc0e")))
$res
$res[[1]]
$res[[1]]$`_id`
[1] 1301179

$res[[1]]$created
[1] "Thu, 11 Jul 2019 07:00:11 GMT"

$res[[1]]$createdby
[1] "pfeeder"

$res[[1]]$description
[1] "```{r}\r\nR> library(bfabricShiny)\r\nR> (Q <- query(login, webservicepassword, endpoint = 'resource', query = list('filechecksum' = \"65518d3ccc6b4f3c83c132dae147fc0e\")))\r\n$res\r\n$res[[1]]\r\n$res[[1]]$`_id`\r\n[1] 1301179\r\n\r\n$res[[1]]$created\r\n[1] \"Thu, 11 Jul 2019 07:00:11 GMT\"\r\n\r\n$res[[1]]$createdby\r\n[1] \"pfeeder\"\r\n\r\n$res[[1]]$filechecksum\r\n[1] \"65518d3ccc6b4f3c83c132dae147fc0e\"\r\n\r\n$res[[1]]$junk\r\n[1] FALSE\r\n\r\n$res[[1]]$modified\r\n[1] \"Thu, 11 Jul 2019 07:00:11 GMT\"\r\n\r\n$res[[1]]$modifiedby\r\n[1] \"pfeeder\"\r\n\r\n$res[[1]]$name\r\n[1] \"20190710_005_autoQC4L.raw\"\r\n\r\n$res[[1]]$project\r\n$res[[1]]$project$`_id`\r\n[1] 3181\r\n\r\n$res[[1]]$relativepath\r\n[1] \"p3181/Proteomics/QEXACTIVEHFX_1/tobiasko_20190710/20190710_005_autoQC4L.raw\"\r\n\r\n$res[[1]]$sample\r\n$res[[1]]$sample$`_id`\r\n[1] 200295\r\n\r\n$res[[1]]$size\r\n[1] 235625610\r\n\r\n$res[[1]]$status\r\n[1] \"available\"\r\n\r\n$res[[1]]$storage\r\n$res[[1]]$storage$`_id`\r\n[1] 2\r\n\r\n$res[[1]]$uris\r\n$res[[1]]$uris[[1]]\r\n[1] \"http://fgcz-proteomics.uzh.ch/dm/p3181/Proteomics/QEXACTIVEHFX_1/tobiasko_20190710/20190710_005_autoQC4L.raw\"\r\n\r\n$res[[1]]$uris[[2]]\r\n[1] \"http://fgcz-proteomics.uzh.ch/p3181/Proteomics/QEXACTIVEHFX_1/tobiasko_20190710/20190710_005_autoQC4L.raw\"\r\n\r\n$res[[1]]$uris[[3]]\r\n[1] \"scp://fgcz-ms.uzh.ch/srv/www/htdocs/p3181/Proteomics/QEXACTIVEHFX_1/tobiasko_20190710/20190710_005_autoQC4L.raw\"\r\n\r\n$res[[1]]$uris[[4]]\r\n[1] \"scp://fgcz-r-021.uzh.ch/export/lv_iduzh01/projects/,/export/lv_iduzh02/projects/,/export/lv_iduzh03/projects/,/export/lv_iduzh04/projects/,/export/lv_iduzh05/PAS/p65/RawData_Archive/,/export/lv_iduzh06/projects/,/export/lv_iduzh07/projects/p3181/Proteomics/QEXACTIVEHFX_1/tobiasko_20190710/20190710_005_autoQC4L.raw\"\r\n\r\n$res[[1]]$url\r\n[1] \"scp://fgcz-ms.uzh.ch/srv/www/htdocs/p3181/Proteomics/QEXACTIVEHFX_1/tobiasko_20190710/20190710_005_autoQC4L.raw\"\r\n\r\n$res[[1]]$workunit\r\n$res[[1]]$workunit$`_id`\r\n[1] 200896\r\n\r\nR> \r\n\r\nR> table(sapply((Q <- query(login, webservicepassword, endpoint = 'resource', query = list('name' = \"%autoQC4L%\")))[[1]], function(x){x$project$`_id`}))\r\n\r\n  65 1000 1147 1352 1654 1687 1875 1876 1951 2059 2069 2135 2175 2192 \r\n  13   74   12    6    3    1    2   16    2    1    2    3    1    1 \r\n2193 2211 2213 2272 2310 2342 2433 2447 2479 2501 2558 2621 2631 2687 \r\n   5    1    1    2    1    2    1    1    1    1    1    4    2    2 \r\n2692 2695 2702 2748 2749 2760 2799 2830 2858 2882 2885 2889 2898 2901 \r\n   1    2    2    2    5    2    2    2    1    1    8    2    3    1 \r\n2915 2916 2928 2933 2946 2954 2960 2961 2993 2995 2997 3000 3024 3025 \r\n   4    5    7    3    1    4    2    1    8    2    1   87    1    5 \r\n3026 3036 3047 3053 3061 3067 3075 3086 3101 3106 3127 3134 3144 3146 \r\n  12    1    3    1    3    1    1    4    2    5    1    6    4    3 \r\n3147 3165 3175 3180 3181 \r\n   1    1    2    2    1 \r\nR> \r\n\r\n```"

$res[[1]]$filechecksum
[1] "65518d3ccc6b4f3c83c132dae147fc0e"

$res[[1]]$junk
[1] FALSE

$res[[1]]$modified
[1] "Tue, 23 Jul 2019 14:27:57 GMT"

$res[[1]]$modifiedby
[1] "cpanse"

$res[[1]]$name
[1] "20190710_005_autoQC4L.raw"

$res[[1]]$project
$res[[1]]$project$`_id`
[1] 3181


$res[[1]]$relativepath
[1] "p3181/Proteomics/QEXACTIVEHFX_1/tobiasko_20190710/20190710_005_autoQC4L.raw"

$res[[1]]$sample
$res[[1]]$sample$`_id`
[1] 200295


$res[[1]]$size
[1] 235625610

$res[[1]]$status
[1] "available"

$res[[1]]$storage
$res[[1]]$storage$`_id`
[1] 2


$res[[1]]$uris
$res[[1]]$uris[[1]]
[1] "http://fgcz-proteomics.uzh.ch/dm/p3181/Proteomics/QEXACTIVEHFX_1/tobiasko_20190710/20190710_005_autoQC4L.raw"

$res[[1]]$uris[[2]]
[1] "http://fgcz-proteomics.uzh.ch/p3181/Proteomics/QEXACTIVEHFX_1/tobiasko_20190710/20190710_005_autoQC4L.raw"

$res[[1]]$uris[[3]]
[1] "scp://fgcz-ms.uzh.ch/srv/www/htdocs/p3181/Proteomics/QEXACTIVEHFX_1/tobiasko_20190710/20190710_005_autoQC4L.raw"

$res[[1]]$uris[[4]]
[1] "scp://fgcz-r-021.uzh.ch/export/lv_iduzh01/projects/,/export/lv_iduzh02/projects/,/export/lv_iduzh03/projects/,/export/lv_iduzh04/projects/,/export/lv_iduzh05/PAS/p65/RawData_Archive/,/export/lv_iduzh06/projects/,/export/lv_iduzh07/projects/p3181/Proteomics/QEXACTIVEHFX_1/tobiasko_20190710/20190710_005_autoQC4L.raw"


$res[[1]]$url
[1] "scp://fgcz-ms.uzh.ch/srv/www/htdocs/p3181/Proteomics/QEXACTIVEHFX_1/tobiasko_20190710/20190710_005_autoQC4L.raw"

$res[[1]]$workunit
$res[[1]]$workunit$`_id`
[1] 200896




R> 

R> table(sapply((Q <- query(login, webservicepassword,
   endpoint = 'resource',
   query = list('name' = "%autoQC4L%")))[[1]], function(x){x$project$`_id`}))

  65 1000 1147 1352 1654 1687 1875 1876 1951 2059 2069 2135 2175 2192 
  13   74   12    6    3    1    2   16    2    1    2    3    1    1 
2193 2211 2213 2272 2310 2342 2433 2447 2479 2501 2558 2621 2631 2687 
   5    1    1    2    1    2    1    1    1    1    1    4    2    2 
2692 2695 2702 2748 2749 2760 2799 2830 2858 2882 2885 2889 2898 2901 
   1    2    2    2    5    2    2    2    1    1    8    2    3    1 
2915 2916 2928 2933 2946 2954 2960 2961 2993 2995 2997 3000 3024 3025 
   4    5    7    3    1    4    2    1    8    2    1   87    1    5 
3026 3036 3047 3053 3061 3067 3075 3086 3101 3106 3127 3134 3144 3146 
  12    1    3    1    3    1    1    4    2    5    1    6    4    3 
3147 3165 3175 3180 3181 
   1    1    2    2    1 
R> 

restart the shiny server

service shiny-server stop && service shiny-server start

Shiny

queue generator application

qgs <- system.file("shiny", "queue_generator", package = "bfabricShiny")
shiny::runApp(qgs, display.mode = "normal")

bfabric authentification

bfabricauth <- system.file("shiny", "simple_auth", package = "bfabricShiny")
shiny::runApp(bfabricauth, display.mode = "normal", port=8080)

On howto generate keys?

cd bfabricShiny/inst/keys &&  ssh-keygen -f $PWD/bfabricShiny.key -t rsa

## generate public pem key file
ssh-keygen -f $PWD/bfabricShiny.key.pub -e -m PEM > bfabricShiny.key.pub.pem

## test
R -q -e "PKI::PKI.load.key(file = 'bfabricShiny.key.pub.pem')"

PTM-MarkerFinder

ptmmf <- system.file("shiny", "PTM_MarkerFinder", package = "bfabricShiny")
shiny::runApp(ptmmf, display.mode = "normal", port=8080)

SOP create your own application

The idea is to fetch a RData file stored in bfabric.

Setup

  • install the python package https://github.com/cpanse/bfabricPy
  • install install_github("https://github.com/cpanse/bfabricShiny")
  • run the SOAP-REST proxy python3 bfabric_flask.py
  • manage the key thing for housing the bfabric login/webpassword
  • run RStudio - create a new shiny app
  • in the shiny ui.R change
   mainPanel(
      tabsetPanel(
        tabPanel("bfabric", bfabricInput("bfabric8")),
        tabPanel("plot", plotOutput("distPlot"))
      )
  • on the shiny server.R

    • library(bfabricShiny)
    • add to shiny server function bf <- callModule(bfabric, "bfabric8", applicationid = c(155))
  • run the shiny application; check input$relativepath

Data staging

  • on the shiny server.R - define the way you are going to ``stage'' the data
.ssh_load_RData <- function(host = 'fgcz-r-021.uzh.ch', user = 'cpanse', file = NULL){
  e <- new.env()

  cmd <- paste('cat ',  file)

  ssh_cmd <- paste("ssh ", user, "@", host, " '", cmd, "'", sep="")
  message(ssh_cmd)

  S <- load(pipe(ssh_cmd))

  for (x in S){
    assign(x, get(x), e)
  }
  e
}

.load_RData <- function(file = NULL){
  e <- new.env()

  S <- load(file)

  for (x in S){
    assign(x, get(x), e)
  }
  e
}
  # returns an env
  getRDataEnv <- eventReactive(input$load, {
    # this is the ``output'' of the bfabric shiny module
    message(input$relativepath)

    filename <- file.path('/srv/www/htdocs/', input$relativepath)

    if (file.exists(filename)){
      .load_RData(file=filename)
    }else{
      .ssh_load_RData(file = filename, host = 'fgcz-r-021.uzh.ch')
    }
  })

bfabricshiny's People

Contributors

cpanse avatar ctrachse avatar leoschwarz avatar mariaderrico avatar wolski avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

mariaderrico

bfabricshiny's Issues

queue generator wish list [in German]

  • Ob die Condition/das Grouping im Namen vorkommt oder nicht sollte waehlbar sein…. – es macht keinen Sinn wenn da keine Conditions sind bzw NA im Feld steht, weils kein LFQ sondern ein reines Protein ID Experiment ist dass da bei jedem Sample Namen hinten noch ***_N_A angehaengt wird. Muss das dann jedes mal manuell raushauen weils mir sonst nur den Namen kuenstlich verlaengert.

  • Darf im Namen ein ‚-‚ drin sein? Dachte die muessten auch durch ‚_‘ ersetzt werden?

  • Queue Reihenfolge zusaetzlich zu ‚default‘, ,random‘ etc sollte auch noch manuell machbar sein.

  • So das Samples in der Reihenfolge in der Queue erscheinen in welcher ich sie anwaehle und nicht in der Reihenfolge der Sample ID’s... manchmal brauche ich eine spezielle Reihenfolge welche weder Random ist noch der Sample ID’s Reihenfolge entspricht. Wenn ich dann manuell in Excel alles wieder von Hand umstellen muss machts nicht viel Sinn.

sample group var

try catch for merged projects. older projects don't have a grouping var.

Check language for csv encoding

Laura/claudia will check if all instrument have an import problem caused by the language setting of the instrument control computer. If yes csv format needs to be changed from sep ="," to sep =";"

[2Grp] add disclaimer for 2Gr

content:

  • optimized for Mozilla firefox
  • designed for internal (FGCZ) usage
  • free to use no warranty on whatsoever
  • if you are not sure what you are doing consult wew

[QG] specify starting position in plate.

Zusätzlich dazu wärs in einem weiteren Schritt gut, wenn man wie bei der
Nummerierung angeben kann an welcher Position die Queue anfangen soll.
Gerade beim PAG kommt es oft vor das wir am Morgen eine Queue machen für
die Samples welche schon da sind um das Massspek am laufen zu halten und
dann am Nachmittag eine Queue für Samples die im Laufe des Nachmittags
reinkommen. und auch da wieder sollten wir sagen können ab welcher
Position wir die im Autosampler reinstellen.

install from Git repo fails

> install_github("cpanse/bfabricShiny", build_vignettes = FALSE, quiet = FALSE)
Downloading GitHub repo cpanse/bfabricShiny@HEAD
These packages have more recent versions available.
It is recommended to update all of them.
Which would you like to update?

1: All                             
2: CRAN packages only              
3: None                            
4: rlang  (0.4.7  -> 0.4.8 ) [CRAN]
5: R6     (2.4.1  -> 2.5.0 ) [CRAN]
6: digest (0.6.25 -> 0.6.27) [CRAN]

Enter one or more numbers, or an empty line to skip updates:
Installing 1 packages: PKI
trying URL 'https://cran.rstudio.com/bin/macosx/contrib/4.0/PKI_0.1-7.tgz'
Content type 'application/x-gzip' length 1644753 bytes (1.6 MB)
==================================================
downloaded 1.6 MB


The downloaded binary packages are in
	/var/folders/j_/4fgphvp14tlf9ms5jgs503qh0000gn/T//RtmpgVKwgm/downloaded_packages
✓  checking for file ‘/private/var/folders/j_/4fgphvp14tlf9ms5jgs503qh0000gn/T/RtmpgVKwgm/remotes165fe60ba4222/fgcz-bfabricShiny-2db98f3/DESCRIPTION’ ...
─  preparing ‘bfabricShiny’:
✓  checking DESCRIPTION meta-information ...
─  checking for LF line-endings in source and make files and shell scripts
─  checking for empty or unneeded directories
─  building ‘bfabricShiny_0.10.14.tar.gz’
   
* installing *source* package ‘bfabricShiny’ ...
** using staged installation
** R
Error in parse(outFile) : 
  /private/var/folders/j_/4fgphvp14tlf9ms5jgs503qh0000gn/T/Rtmp430YOV/R.INSTALL1736b54d9b835/bfabricShiny/R/ms_queue.R:992:17: unexpected symbol
991:                 host = ipadress #"130.60.81.134",
992:                 port
                     ^
ERROR: unable to collate and parse R files for package ‘bfabricShiny’
* removing ‘/Library/Frameworks/R.framework/Versions/4.0/Resources/library/bfabricShiny’
Error: Failed to install 'bfabricShiny' from GitHub:
  (converted from warning) installation of package ‘/var/folders/j_/4fgphvp14tlf9ms5jgs503qh0000gn/T//RtmpgVKwgm/file165fe71b56554/bfabricShiny_0.10.14.tar.gz’ had non-zero exit status
>

Is there a bf10 release available that works on MacOS? Do I need additional libs?

session info

> sessionInfo()
R version 4.0.2 (2020-06-22)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS Catalina 10.15.6

Matrix products: default
BLAS:   /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRlapack.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] devtools_2.3.2 usethis_1.6.3  sloop_1.0.1    rawR_0.0.1    

loaded via a namespace (and not attached):
 [1] rstudioapi_0.11   magrittr_1.5      knitr_1.30        pkgload_1.1.0     R6_2.4.1         
 [6] rlang_0.4.7       fansi_0.4.1       tools_4.0.2       pkgbuild_1.1.0    xfun_0.18        
[11] sessioninfo_1.1.1 cli_2.0.2         withr_2.3.0       remotes_2.2.0     htmltools_0.5.0  
[16] ellipsis_0.3.1    rprojroot_1.3-2   yaml_2.2.1        assertthat_0.2.1  digest_0.6.25    
[21] crayon_1.3.4      processx_3.4.4    callr_3.4.4       fs_1.5.0          ps_1.3.4         
[26] curl_4.3          testthat_2.3.2    memoise_1.1.0     glue_1.4.2        evaluate_0.14    
[31] rmarkdown_2.4     compiler_4.0.2    backports_1.1.10  desc_1.2.0        prettyunits_1.1.1
>

register fasta file creation results with bfabric.

After creating database upload it to storage i.e. /var/www/http/fasta
and register b-fabric.

To upload use.

library(ssh)
connection <- ssh_connect("wolski@fgcz", keyfile = NULL, passwd = "", verbose = FALSE)
scp_download(connection, "/home/wolski/temp.zip", to = ".", verbose = TRUE)

@cpanse To register with b-fabric use?

bfabricShiny::saveResource
bfabricShiny::createWorkunit
  • Should I first register the resource?
  • How would I do it if the resource is just an uri pointing to the storage location?
  • The create workunit code in Bfabric shiny has an parameter input-resource which isn't used.

https://github.com/cpanse/bfabricShiny/blob/bfabric10/R/fgcz.R

(line 490) #'inputresource' = list(inputresource),

enable syslog

https://github.com/cpanse/bfabricShiny/blob/c9ad987b66504e7218ed163b75e70e7095f536ed/exec/bfabric9_flask_sample.py#L19

def create_logger(name="fcc", address=("fgcz-ms.uzh.ch", 514)):
    """
    create a logger object
    """
    syslog_handler = logging.handlers.SysLogHandler(address=address)
    formatter = logging.Formatter('%(name)s %(message)s')
    syslog_handler.setFormatter(formatter)

    logger = logging.getLogger(name)
    logger.setLevel(20)
    logger.addHandler(syslog_handler)


    return logger

logger = create_logger()

Shortening of displayed relative path in shiny GUI

I was wondering if it would be possible to shorten the display of the relative path shown in the shiny GUI. The function renderUI() uses the resource relative path as-it-is. What about using basename(), see to shorten the relative path to its basename? At least I can not imagine that the upstream path components are useful during the selection process. Here is an example:

Screenshot 2020-11-02 at 10 29 07

Best,
Tobi

package install from GitHub fails

> devtools::install_github('fgcz/bfabricShiny', build_vignettes = FALSE, quiet = FALSE)
Downloading GitHub repo fgcz/bfabricShiny@HEAD
These packages have more recent versions available.
It is recommended to update all of them.
Which would you like to update?

1: All                            
2: CRAN packages only             
3: None                           
4: tibble  (3.1.5 -> 3.1.6) [CRAN]
5: openssl (1.4.5 -> 1.4.6) [CRAN]

Enter one or more numbers, or an empty line to skip updates: 1
tibble  (3.1.5 -> 3.1.6   ) [CRAN]
openssl (1.4.5 -> 1.4.6   ) [CRAN]
XML     (NA    -> 3.99-0.8) [CRAN]
tidyr   (NA    -> 1.1.4   ) [CRAN]
Installing 4 packages: tibble, openssl, XML, tidyr
trying URL 'https://cran.rstudio.com/bin/macosx/contrib/4.1/tibble_3.1.6.tgz'
Content type 'application/x-gzip' length 846646 bytes (826 KB)
==================================================
downloaded 826 KB

trying URL 'https://cran.rstudio.com/bin/macosx/contrib/4.1/openssl_1.4.6.tgz'
Content type 'application/x-gzip' length 2860431 bytes (2.7 MB)
==================================================
downloaded 2.7 MB

trying URL 'https://cran.rstudio.com/bin/macosx/contrib/4.1/XML_3.99-0.8.tgz'
Content type 'application/x-gzip' length 3742478 bytes (3.6 MB)
==================================================
downloaded 3.6 MB

trying URL 'https://cran.rstudio.com/bin/macosx/contrib/4.1/tidyr_1.1.4.tgz'
Content type 'application/x-gzip' length 964401 bytes (941 KB)
==================================================
downloaded 941 KB


The downloaded binary packages are in
	/var/folders/j_/4fgphvp14tlf9ms5jgs503qh0000gn/T//RtmpTbtxqz/downloaded_packages
✓  checking for file ‘/private/var/folders/j_/4fgphvp14tlf9ms5jgs503qh0000gn/T/RtmpTbtxqz/remotes32352193d32/fgcz-bfabric-964efca/DESCRIPTION’ ...
─  preparing ‘bfabric’:
✓  checking DESCRIPTION meta-information ...
─  checking for LF line-endings in source and make files and shell scripts
─  checking for empty or unneeded directories
   Omitted ‘LazyData’ from DESCRIPTION
─  building ‘bfabric_0.10.28.tar.gz’
   
* installing *source* package ‘bfabric’ ...
** using staged installation
** R
Error in .install_package_code_files(".", instdir) : 
files in '/private/var/folders/j_/4fgphvp14tlf9ms5jgs503qh0000gn/T/RtmpCP5FpH/R.INSTALL27ad47b8c21e/bfabric/R' missing from 'Collate' field:
  randomize.R
ERROR: unable to collate and parse R files for package ‘bfabric’
* removing ‘/Library/Frameworks/R.framework/Versions/4.1/Resources/library/bfabric’
Warning message:
In i.p(...) :
  installation of package ‘/var/folders/j_/4fgphvp14tlf9ms5jgs503qh0000gn/T//RtmpTbtxqz/file32365df1d43/bfabric_0.10.28.tar.gz’ had non-zero exit status
> 

[QG] Support for different instrument Vendors and HPLC systems

The queue generator generates queues for MS control software. These are either comma or tab separated tables specifying the order in which the samples are being acquired.

A minimal queue files would consist of the following columns:

Filename - name of the raw file to be written
path - folder to which the file needs to be written
Plate - plate
Plate-position - position in the sampling plate
Method - mass spectrometric method

Instrument Control Software dependent queue formats.

There are various Instrument vendors each having a different instrument control software, and therefore a different queue file format.

Instrument Control Software currently supported at the FGCZ are :

  • Thermo - Xcalibru,
  • Evosep,
  • Bruker Hystar,
  • Waters MassLynx.

The queue generator currently the only support Thermo Xcalibur format
The Thermore Xcalibur queue file format is txt file with a header line:

Bracket Type=4 ?

and a comma separated table with the following columns:

  • File Name : "20201023_C23047_001_autoQC01" "20201023_C23047_002_S270071_A_170_Control_Control" ...
  • Path: "D:\Data2San\orders\Proteomics\QEXACTIVE_1\analytic_20201023" ....
  • Position : "1:F,8" "1:A,1" "1:F,6" "1:A,2" ...
  • Inj Vol : 2 2 2 2 2 2 2 2 2 2
  • L3 Laboratory: "FGCZ" "FGCZ" "FGCZ" "FGCZ"
  • Sample ID: NA 270071 NA 270072 NA 270073
  • Sample Name: "autoQC01" "A_170_Control" "clean" "B_95_Control"
  • Instrument Method: "C:\Xcalibur\methods\__autoQC\trap\autoQC01" "" "" ""

LC Systems

The Insturment Control Software can support various LC Systems. These LC systems include autosamplers.
The number of plates and the plate formats in the autosamplers differ:

  • evosep 4 plates with 96 samples
  • Water m-class 2 plates with 48 samples
  • easylc and exigent 1 plate with 48 samples

Because of this the format of the queue file will differ:
For instance for Thermo XCalibur the Postion column changes depending on the LC-MS system:

  • Waters : 1:F,8 Plate:Row,Column with Plate in 1:2, row-names names ranging from A:F and column-names from 1:8.
  • EasyLC: F8 with and row-names names ranging from A:F and column-names from 1:8
  • eksigent: 2F08 <?RowColumn> with row-names names ranging from A:F and column-names from 1:8

** QC Samples and blanks **

Some of the LC systems can access the same plate position several times.
In this case, special samples - clean, or QC samples have a fixed position in the plate 1:

  • clean : 1:F,6
  • autoQC01 : 1:F,7
  • autoQC4L : 1:F,8

The Evosep accesses each plate postition only once.

Conclusion.

We need to collect and document the queue file formats we need to support. Hence, we will need examples of queue files but also a brief description of every column (similarly as I did for the Thermo queue file above).
Furhter, important information we need is:

  • path of the instrument methods
  • path
  • Thermo XCalibur (available)
  • Bruker Hystar (TK)
  • Evosep (JG)
  • Waters MassLynx (?)

The QG currently implements only the support for a single instrument control software / queue file format (Thermo Xcalibur), and was not developed more then one queue file format in mind. Therefore adding support for multiple control software is needed.

relative path by project area

Hi Christian,

there is a new ticket in "Proteomics::Protinf"!

Please help your colleagues and prevent simultaneous work on this topic.
Answer the ticket from the OTRS web interface!

http://fgcz-support.uzh.ch/otrs/index.pl?Action=AgentZoom&TicketID=226382

Bernd Roschitzki [email protected] wrote:
Subject: web apps

Hallo Jungs,

would it be possible to reduce the relative path by project area and
instrument - that is all given before - maybe just start the line from the
right like [........\20180405_01_S128842_MV_sys_HILIC_03_rep1.raw] - - at
least you would see the name of the raw file - or just present the raw
files??
What do you think?

Thanks,

Your OTRS Notification Master

add Q generator ``Instrument Method''

Bracket Type=4,,,,,,,,
File Name,Path,Position,Inj Vol,L3 Laboratory,Sample ID,Sample Name,L1 Study,Instrument Method
20181204_001_autoQC01,D:\Data2San\p1000\Proteomics\QEXACTIVE_2\roschi_20181204,"1:F,8",2,FGCZ,NA,autoQC01,1000,C:\Xcalibur\methods\__autoQC\trap\autoQC01
20181204_004_autoQC02,D:\Data2San\p1000\Proteomics\QEXACTIVE_2\roschi_20181204,"1:F,7",2,FGCZ,NA,autoQC02,1000,C:\Xcalibur\methods\__autoQC\trap\autoQC02
20181204_005_autoQC4L,D:\Data2San\p1000\Proteomics\QEXACTIVE_2\roschi_20181204,"1:F,7",2,FGCZ,NA,autoQC4L,1000,C:\Xcalibur\methods\__autoQC\trap\autoQC4L

queueGenerator - Plate position problem when using multi order

Beim Anhängen der Orders aneinander, fängt die Positionsnummer der Vials
für jede Order wieder mit 1:A,1 an. Nun ist es aber nicht so, dass wir
die Vials aufeinander stellen, die Positionsnummern müssen
aufeinanderfolgend sein innerhalb eines CSV-Files. Gerade weil wir auch
zwischen den Samples Blanks haben können wir das nicht mit einem klick
manuell anpassen.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.