Как разбить и записать в файл для объекта S4 в R - PullRequest
1 голос
/ 11 ноября 2011

У меня есть объект класса S4, как показано ниже:

> gadem
   Object of class 'gadem' 
   This object has the following slots: 
   motifs,pwm,consensus,align,name,seq,chr,start,end,strand,seqID,pos,pval,fastaHeader
> gadem[[1]]
An object of class "motif"
Slot "pwm":
       1 2      3      4      5      6 7      8      9 10     11
A 0.3404 0 0.0000 0.6375 0.2723 0.3173 0 0.0002 0.3126  0 0.4969
C 0.4281 0 0.8708 0.1474 0.0767 0.1122 0 0.0000 0.0981  1 0.2558
G 0.1414 0 0.0000 0.0361 0.4153 0.5088 0 0.1134 0.0532  0 0.0000
T 0.0901 1 0.1292 0.1790 0.2357 0.0617 1 0.8864 0.5361  0 0.2473

Slot "consensus":
[1] "mTCAnrTTwCm"

Slot "alignList":
[[1]]
An object of class "align"
Slot "seq":
[1] "CTCAGGTTTCA"

Slot "chr":
[1] "chr12"

Slot "start":
[1] 29470324

Slot "end":
[1] 29470423

Slot "strand":
[1] "+"

Slot "seqID":
[1] 5239

Slot "pos":
[1] 67

Slot "pval":
[1] 1.862121e-09

Slot "fastaHeader":
[1] 5239


    [[2]]
An object of class "align"
Slot "seq":
[1] "CTCAGGTTTCA"

Slot "chr":
[1] "chr18"

Slot "start":
[1] 4862453

Slot "end":
[1] 4862571

Slot "strand":
[1] "+"

Slot "seqID":
[1] 12645

Slot "pos":
[1] 68

Slot "pval":
[1] 1.862121e-09

Slot "fastaHeader":
[1] 12645

Из этого объекта я хотел бы создать файл со столбцами Slot Seq | Слот chr | Слот начало | Слот конец | Слот стренги | Слот seqID | Слот пос | Слот pval | Слот fastaHeader.

Как я могу сгенерировать и записать такой файл .txt сверху объекта S4?

1 Ответ

1 голос
/ 13 ноября 2011

Элементы в gadem-объекте с этими слотами находятся в слоте alignList. Похоже, что в пакете rGADEM не так много описанных функций экстрактора, поэтому комментарии @Martin Morgans верны, но не совсем полезны. Я не получил большой помощи от showMethods( classes="gadem"). Если вы хотите отобразить первый объект класса выравнивания в слоте alignList «gadem», введите:

gadem[[1]]@alignList[[1]]

Количество таких объектов можно получить с помощью:

length(gadem[[1]]@alignList)

Если вы хотите сохранить их в двоичном файле R, чтобы они могли быть load позднее, вы должны использовать что-то вроде:

algns <- gadem[[1]]@alignList
save(algns, file="testgadem.rdta")

Используя пример из статьи «Обнаружение и анализ мотивов последовательности ДНК: пакет rGADEM». Арно Дройт и Рафаэль Готтардо могли бы извлечь элементы alignList в обычный фрейм данных с помощью этого цикла:

dfrm <- data.frame( Seq=rep(NA, 54), chr=NA, start =NA, end =NA, strand=NA, 
                    seqID=NA, pos=NA, pval =NA, fastaHeader=NA)  

for (i in 1:54) {  dfrm[i, "Seq"] <- gadem[[1]]@alignList[[i]]@seq
               dfrm[i, "chr"] <- gadem[[1]]@alignList[[i]]@chr
              dfrm[i, "start"] <- gadem[[1]]@alignList[[i]]@start
              dfrm[i, "end"] <- gadem[[1]]@alignList[[i]]@end
              dfrm[i, "start"] <- gadem[[1]]@alignList[[i]]@start
              dfrm[i, "strand"] <- gadem[[1]]@alignList[[i]]@strand
              dfrm[i, "seqID"] <- gadem[[1]]@alignList[[i]]@seqID
              dfrm[i, "pos"] <- gadem[[1]]@alignList[[i]]@pos
              dfrm[i, "pval"] <- gadem[[1]]@alignList[[i]]@pval
              dfrm[i, "fastaHeader"] <- gadem[[1]]@alignList[[i]]@fastaHeader}
 str(dfrm)
#--------------------
'data.frame':   54 obs. of  9 variables:
 $ Seq        : chr  "CTGTGTCAACAG" "CTGTGTAAACAC" "CTGAGTCAACAC" "GTGAGTCAACAG" ...
 $ chr        : chr  "chr1" "chr1" "chr1" "chr1" ...
 $ start      : int  202320096 21451068 22547577 117197889 188010599 36725231 144254018 35024860 35024860 43552181 ...
 $ end        : int  202320297 21451269 22547778 117198090 188010800 36725432 144254219 35025061 35025061 43552382 ...
 $ strand     : chr  "+" "-" "-" "-" ...
 $ seqID      : int  23 26 9 8 45 15 30 50 50 38 ...
 $ pos        : int  93 98 121 82 183 160 142 21 117 104 ...
 $ pval       : num  2.48e-07 4.44e-07 5.68e-07 6.85e-07 1.31e-06 ...
 $ fastaHeader: int  23 26 9 8 45 15 30 50 50 38 ...
...