Role S4 v Bioconductoru

Úvod do Bioconductoru v R

James Chapman

Curriculum Manager, DataCamp

S3

Výhody

  • CRAN, jednoduché ale výkonné
  • Flexibilní a interaktivní
  • Používá generické funkce
  • Funkčnost závisí na prvním argumentu
  • Příklad: plot() a methods(plot)

Nevýhody

  • Slabá validace typů a pojmenování (tečka, nebo ne?)
  • Dědičnost funguje, ale závisí na vstupu
Úvod do Bioconductoru v R

S4

Výhody

  • Formální definice tříd
  • Znovupoužitelnost v Bioconductoru
  • Validace typů
  • Pojmenovávací konvence

Příklad: myDescriptor <- new("GenomeDescription")

Nevýhody

  • Složitější struktura než S3
Úvod do Bioconductoru v R

Je to S4, nebo ne?

Zjistit, zda je objekt S4

isS4(myDescriptor)
TRUE

str objektů S4 začíná s Formal class

str(myDescriptor)
Formal class 'GenomeDescription' [package "GenomeInfoDb"] with 7 slots
...
Úvod do Bioconductoru v R

Definice třídy S4

Třída popisuje reprezentaci

  • name
  • slots (metody/pole)
  • contains (definice dědičnosti)
MyEpicProject <- setClass(# Define class name with UpperCamelCase
                          "MyEpicProject",
                          # Define slots, helpful for validation
                          slots = c(ini = "Date", 
                                    end = "Date", 
                                    milestone = "character"),
                          # Define inheritance        
                          contains = "MyProject")
Úvod do Bioconductoru v R
.S4methods(class = "GenomeDescription")
 [1] coerce          commonName      organism        provider       
 [5] providerVersion releaseDate     releaseName     seqinfo        
 [9] seqnames        show            toString        bsgenomeName   
see '?methods' for accessing help and source code
showMethods(classes = "GenomeDescription", where = search())

Souhrn objektu

show(myDescriptor)
| organism:  ()
| provider: 
| provider version: 
| release date: 
| release name: 
| ---
| seqlengths:
Úvod do Bioconductoru v R

Pojďme si procvičit!

Úvod do Bioconductoru v R

Preparing Video For Download...