R科研作图学习小组

http://group.keyangou.com/RGraph
组长: 管理员:
  • 访问次数:22643
  • 小组等级:9
  • 话题:593
  • 回答:39
  • 签到:408
  • 小组排名:
  • 第二期二阶段任务1——R语言读取Pubmed接口获得初步数据

    真·科研狗 发布于:2018.01.09

    第二期二阶段正式开始,初步计划是2个星期一次作业,任务发布一个星期后发布原始的代码。

    第二阶段的的任务之间都是关联的,后面的任务是以前面的任务为基础,所以每一个任务都要熟悉一步一步做。


    本期任务:熟悉pubmed接口,获得基本的数据。

    用到的包: httr、xml2

    pubmed接口学习页面:https://www.ncbi.nlm.nih.gov/books/NBK25500/

    搜索APIhttps://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi

    获取APIhttps://eutils.ncbi.nlm.nih.gov/entrez/eutils/fetch.fcgi


    任务1. 获得CELL杂志2017年发表文章总数。

    任务2. 用CELL杂志2017年中任意发表的文章Pubmedid,得到该文章的title和abstract

    pubmedid='29275861,29275860'
    ...你的代码
    title=...
    abstract=...
    print(title)
    print(abstract)

    输出如下,得到了标题和abstract.这些数据是我们下一期中用于分词并存入数据库的基础。

    11.png


     

     

     
    3条评论 331浏览 邀请回答

    fenglashoubuli 回答于:2018年01月10日 08:01:221楼

    北京 北大国际医院 细胞生物 

    cool,发现R真是牛啊。

    真·科研狗 回答于:2018年01月10日 21:45:322楼

     北京大学 医学部基础医学院 细胞生物学 博士 

    程序编写思路:

    1 弄清楚pubmed的API。

    2 发送参数到API获得数据。

    3 解析数据

    下面稍微详细描述下:

      打开上面的pubmed接口学习页面,你可以看到如下的红框部分链接:

    打开上面链接,你会看到如下的内容:

    其中Count中的数据6就是搜索结果的总数!

    仔细观察上面链接.fcgi?后面的数据:db=pubmed&term=....

    要想获得cell杂志2017年发表文章总数,那么只要在“term=”后面加入搜索CELL2017年的关键词既可以,那么如何才能得到term= 后面的字符串,这个发挥大家聪明才智(也可以在API里面找到)。

    在搜索的API中有如下的参数:

     db='pubmed' #db还有其他选项,我们搜索pubmed

      retstart=0, #起始位置

      retmax=20, #每次取的数量

      usehistory='Y',#是否使用历史搜索

      querykey='', 

      webenv='',

      term='发挥你的聪明才智得到的搜索字符串',

    上面的参数中,userhistory, querykey, webenv对于搜索结果筛选是非常有必要的,如果不筛选结果,可以不用理会。

    接下来我们就需要将上面的参数post(发送)到搜索API:https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi 这个网址上,利用 httr包的POST函数,可以查看httr的POST说明。

    POST之后返回的数据就是xml格式的数据,你可以先print打印看下情况。

    之后就是利用xml2包读取数据,就可以解析数据了。xml2包的使用可以查看xml2包的帮助文档。


    任务2的思路和上面一样,即发送数据到 获取数据API,然后返回的也是xml格式的结果,之后也是解析获得数据。


    CISO 回答于:2018年01月10日 22:11:073楼

    西安 第四军医大学 BME博士 

    表示一下激动的心情,然后去做作业


    小组告示

    科研狗 2012-2016 京ICP备16006621 科研好助手,专业的科研社交共享平台