Bioconductor 中 S4 的角色

R 中的 Bioconductor 入門

James Chapman

Curriculum Manager, DataCamp

S3

優點

  • CRAN,簡單但強大
  • 彈性高、可互動
  • 使用泛型函式
  • 功能取決於第一個引數
  • 例:plot()methods(plot)

缺點

  • 型別與命名規則驗證不佳(dot 還是 not dot?)
  • 繼承可行,但依賴輸入
R 中的 Bioconductor 入門

S4

優點

  • 類別的正式定義
  • Bioconductor 可重用性
  • 具型別驗證
  • 命名規範

範例:myDescriptor <- new("GenomeDescription")

缺點

  • 結構較 S3 複雜
R 中的 Bioconductor 入門

是 S4 還是不是?

判斷物件是否為 S4

isS4(myDescriptor)
TRUE

S4 物件的 str 會以 Formal class 開頭

str(myDescriptor)
Formal class 'GenomeDescription' [package "GenomeInfoDb"] with 7 slots
...
R 中的 Bioconductor 入門

S4 類別定義

類別描述一種表徵:

  • name
  • slots(方法/欄位)
  • contains(繼承定義)
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")
R 中的 Bioconductor 入門
.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())

物件摘要

show(myDescriptor)
| organism:  ()
| provider: 
| provider version: 
| release date: 
| release name: 
| ---
| seqlengths:
R 中的 Bioconductor 入門

一起來練習吧!

R 中的 Bioconductor 入門

Preparing Video For Download...