2014-05-23 1 views
0

을 사용하여 XML 파일에서 데이터 추출 R을 사용하여 몇 가지 정보를 추출해야하는 XML 파일의 대용량 데이터베이스 데이터베이스가 있습니다. 데이터베이스는 필요한 특정 단백질에 대한 정보가 들어있는 항목별로 구성되어 있습니다 추출하고 형식화합니다.문제점 R

https://www.dropbox.com/s/dq8ir9f22cnfwrz/Sample.xml

나는 이름을 추출하기 위해 모든 유형 "EC"있는 dbReferences, 각 항목의 순서를 싶습니다. 지금까지 나는이 : 내가 생각 명시 적으로 이동 태그를 선택하거나 xmlToDataFrame 함수에 xpathSApply 기능을 사용하고 있었다

library("XML") 
doc <- xmlParse("Sample.xml") 

. 나는 R에 익숙하지 않아서 어디서부터 시작해야할지 혼란 스럽습니다.

+0

스타터로 : dbRef를 추출하는 3 가지 방법 예를 들어 unlist (doc [ '* * [local-name() = "dbReference"및 @ type = "EC"]/@ id']); xpathSApply (doc, '// * [local-name() = "dbReference"및 @ type = "EC"]/@ id'); xpathSApply (doc, '* * [local-name() = "dbReference"및 @ type = "EC"]', 함수 (x) xmlAttrs (x) [ 'id'])'. – lukeA

+0

은 모든 EC 번호를 추출하는 데 사용되지만 항목이 속한 항목을 구성하는 방법이 있습니까? – bforcer

+0

첫 번째 항목에 대한 "항목"은 무엇입니까? 예를 들어 저자 및 제목. 더 좋은 방법이 있지만, 그것들을 추출하는 1 가지 방법은'nd lukeA

답변

0

그냥 당신이

x <- readLines("Sample.xml") 
x[2] <- "<uniprot>" 
doc <- xmlParse(x) 
nd <- getNodeSet(doc, "//entry") 

nd <- getNodeSet(doc, "//ns:entry", namespaces=c(ns=getDefaultNamespace(doc)[[1]]$uri)) 
y <- data.frame(id = sapply(nd, xpathSApply, './*[local-name()="name"]', xmlValue), 
     ec = sapply(nd, function(y) paste(xpathSApply(y, './/*[local-name()="dbReference" and @type="EC"]/@id'), collapse="; ")), 
sequence = gsub("\n", "", sapply(nd, xpathSApply, './*[local-name()="sequence"]', xmlValue))) 

head(y, 3) 
      id                  ec           sequence 
1 AK1C3_HUMAN 1.-.-.-; 1.1.1.357; 1.1.1.112; 1.1.1.188; 1.1.1.239; 1.1.1.64; 1.3.1.20 MDSKHQCVKLNDGHFMPVLGFGTYAPPEVPRSKALEVTKLAIEA... 
2 CP3A4_HUMAN    1.14.13.-; 1.14.13.157; 1.14.13.32; 1.14.13.67; 1.14.13.97 MALIPDLAMETWLLLAVSLVLLYLYGTHSHGLFKKLGIPGPTPL... 
3 AK1C1_HUMAN         1.1.1.-; 1.1.1.149; 1.1.1.112; 1.3.1.20 MDSKYQCVKLNDGHFMPVLGFGTYAPAEVPKSKALEATKLAIEA... 
또한 네임 스페이스를 삭제하고 이러한 쿼리를 단순화 할 수

...

getNodeSet

에서 필요한 요소를 선택 또는

대신 Uniprot에서 휴식 서비스를 사용

http://www.uniprot.org/uniprot/?query=AK1C3_HUMAN+OR+CP3A4_HUMAN+OR+AK1C1_HUMAN&format=tab&columns=entry%20name,ec,sequence