Hello BioC-dev group,

           We are working on a new R package right now and plan to submit it to 
Bioconductor soon.  It's a unified R client for the collection of BioThings 
APIs (http://biothings.io). Using R6 class, it makes a lot sense to me as I'm 
coming from Python's OOP experience. It will be used like this:


library(biothings)

gene_client <- BioThingsR6$new("gene")
gene_client$query("CDK2")


variant_client <- BioThingsR6$new("variant")
gene_client$query("dbsnp.rsid:rs1000")

Each "client" above is corresponding to a specific BioThings API, e.g. one for 
gene, and one for variant. And we will have more "clients" as we are expanding 
the number of BioThings API. The same R code should work with the future APIs.

But if we use the traditional S4 class, it will be awkward as all 
functions/methods are not "namespaced", we will need to define new functions 
for each additional API. Something like this:

library(biothings)
geneQuery("CDK2")
variantQuery("dbsnp.rsid:rs1000")

I also want to mention that "query" is not the only method for each API client, 
there will be several other methods for each client. It will quickly make the 
function names messy if we go with the S4 option.

Anyway, we think we like R6 class better, but just want to get some feedback 
here if the usage pattern using R6 class has been well-accepted in the R 
community. Will the users feel cumbersome if they have to instantiate the class 
first and then make the function calls? The majority of the existing BioC 
package are indeed S4 class based, which makes us feel hesitated.

Thanks,

Chunlei







        [[alternative HTML version deleted]]

_______________________________________________
Bioc-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/bioc-devel

Reply via email to