Developer center

Add a new analysis using base function

It’s easy to add new analysis in Dr. Bio Right! Simply type in :add_pipelines. All available base function listed above will pop out.

Base Function Select
Survival GO
Correlation GO
Differential GO
Lollipop GO

Click GO button, and follow each step to select your samples and molecular data by setting sample filters and molecular data filters.

The selected data will be shown to you using a data summary table. Each line presents a sample, each column is a feature.

sample_id age gender tissue mrnaseq.TP53
TCGA-AB-01 78 female liver 13.9
TCGA-AB-02 87 male liver 14.6
TCGA-AB-03 35 male liver 4.5
TCGA-AB-04 41 female liver 24.2

For example you would like to preform Correlation analysis between sample age and TP53 gene expression. Our interface will present you the configuration file of Correlation based function, and let you select any numeric columns for your analysis. In this example, you will select age and mrnaseq.TP53 as two input varibale.

var description column
variable1 first varibale of correlation analysis, must be numeric age
variable2 second varibale of correlation analysis, must be numeric mrnaseq.TP53

After defining the required variables, click submit, and you will see the final results, and confirm if it is the analysis you would like to perform. If yes, it will be stored in our database, and you and other general users will be able to use it through human language chatting.

Submit a new base function

To incorporate new base function, two compenents are needed.

  • base function source code (python, R, Perl)
  • base function parameter mapping file (json)

Use dr.survival.uni as an example

json mapping file:

{
        "module" : "dr.survival.uni",
        "keywords" : [
                "survival",
                "tissue",
                "gene expression"
        ],
        "params" : [
                {
                        "var_name" : "time",
                        "desc" : "survival time",
                        "var_field" : "__req_var",
                        "var_type" : "num"
                },
                {
                        "var_name" : "status",
                        "desc" : "survival status",
                        "var_field" : "__req_var",
                        "var_type" : "bool"
                },
                {
                        "var_name" : "var",
                        "desc" : "variable",
                        "var_field" : "__req_var",
                        "var_type" : [
                                "num",
                                "string"
                        ]
                }
        ]
}
# base function

drsurvival <- function(job_dir, infile, analytics_mapper) {
    # job_dir: working directory
    # infile: query data from database
    # analytics_mapper: mapping file

    print("survival analysis")
    fileSep <- .Platform$file.sep
    query_data = read.csv(paste(job_dir, infile, sep=fileSep), sep=",", header=T,
                  check.names=F, stringsAsFactors=F)
    mapper =  fromJSON(paste(job_dir, analytics_mapper, sep=fileSep), flatten=TRUE)

    data = query_data[, mapper$var, drop=F]
    time = query_data[, mapper$time]
    status = query_data[, mapper$status]
    status <- ifelse(status==1, 1, 0)

    Result <- matrix(NA, dim(data)[2], 7, byrow=TRUE)
    rownames(Result) <- colnames(data)
    colnames(Result) <- c("N", "coef", "Exp(coef)", "Coxp", "CoxpFDR")

    foreach( i1 = c(1:ncol(data)) ) %dopar% {
        test.data1 <- list(time     = Time.survival,
                           status   = cen.status,
                           group    = dataused)
        ## Cox regression
        tempresult <- try( model1 <- coxph(Surv(time, status) ~ group,
                                               data=test.data1, na.action = na.exclude), silent=TRUE)
        Result[i1, c("coef", "Exp(coef)", "Coxp")] <-
                    summary(model1)$coefficients[1,c("coef", "exp(coef)", "Pr(>|z|)" )]
    }
}

Request a new module

You can also request new base function by clicking request a module at the top right corner. By filling out the Module Name and Description fields, this request will be published at our developer forum, and solved by Dr. Bio Right administrators or active developers. A message will be sent to your once your request has been implemented. Bravo!