This is a test version of Biostars. For the public version, visit https://www.biostars.org.
Parse NCBI XML sample information into a data frame in R

There are packages out there that manipulate XML in R. But I've spent two full days and have largely given up. There must be an existing tool to simply take a downloaded sample metadata file (for all samples in an NCBI project) from NCBI (xml format) and convert it into a data frame in R. No search or modifications needed. I would greatly appreciate help on this.

r ncbi xml

1 answer

Have you tried R libraries XML and xml2 or rentrez? They provide methods for converting XML to data.frame or other R structures. They can require some time investment depending on the complexity of your XML but they can work.

What NCBI xml format are you parsing? Given this XML output for 8 Biosamples:

https://www.ncbi.nlm.nih.gov/biosample?LinkName=bioproject_biosample_all&from_uid=356160

XML::xmlToDataFrame() gives this:

> df <- xmlToDataFrame("biosample_result.xml")
> str(df)
'data.frame':   8 obs. of  8 variables:
 $ Ids        : Factor w/ 8 levels "SAMD00020611DRS036183",..: 8 7 6 5 4 3 2 1
 $ Description: Factor w/ 4 levels "Human diploid fibroblasts TIG-3 expressing hTert/SV40/c-MycHomo sapiens",..: 3 3 2 2 1 1 4 4
 $ Owner      : Factor w/ 1 level "Kyushu University Medical Institute of Bioregulation, Kyushu University Nakayama Lab.": 1 1 1 1 1 1 1 1
 $ Models     : Factor w/ 1 level "Generic": 1 1 1 1 1 1 1 1
 $ Package    : Factor w/ 1 level "Generic.1.0": 1 1 1 1 1 1 1 1
 $ Attributes : Factor w/ 8 levels "TIG-3 Parental_A2012-08-10TIG-3Fibroblast",..: 4 3 8 7 6 5 2 1
 $ Links      : Factor w/ 1 level "356160": 1 1 1 1 1 1 1 1
 $ Status     : Factor w/ 1 level "": 1 1 1 1 1 1 1 1

Lower level attributes like 'Attributes' are aggregated in this approach, you'd want to descend into those attributes if you need to decompose them.

Log in to answer this question.