Rola S4 w Bioconductor

Wprowadzenie do Bioconductor w R

James Chapman

Curriculum Manager, DataCamp

S3

Zalety

  • CRAN, proste lecz wydajne
  • Elastyczne i interaktywne
  • Używa funkcji generycznej
  • Funkcjonalność zależy od pierwszego argumentu
  • Przykład: plot() i methods(plot)

Wady

  • Słaba walidacja typów i konwencji nazewnictwa (kropka tak czy nie?)
  • Dziedziczenie działa, ale zależy od danych wejściowych
Wprowadzenie do Bioconductor w R

S4

Zalety

  • Formalna definicja klas
  • Możliwość ponownego użycia w Bioconductor
  • Walidacja typów
  • Konwencje nazewnictwa

Przykład: myDescriptor <- new("GenomeDescription")

Wady

  • Złożona struktura w porównaniu z S3
Wprowadzenie do Bioconductor w R

S4 czy nie?

Sprawdzenie, czy obiekt jest S4

isS4(myDescriptor)
TRUE

str obiektów S4 zaczyna się od Formal class

str(myDescriptor)
Formal class 'GenomeDescription' [package "GenomeInfoDb"] with 7 slots
...
Wprowadzenie do Bioconductor w R

Definicja klasy S4

Klasa opisuje reprezentację

  • name
  • slots (metody/pola)
  • contains (definicja dziedziczenia)
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")
Wprowadzenie do Bioconductor w 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())

Podsumowanie obiektu

show(myDescriptor)
| organism:  ()
| provider: 
| provider version: 
| release date: 
| release name: 
| ---
| seqlengths:
Wprowadzenie do Bioconductor w R

Czas na ćwiczenia!

Wprowadzenie do Bioconductor w R

Preparing Video For Download...