Nature:交互笔记 共享你的思想

2014-11-13 佚名 生物360

我可以通过浏览学生的笔记本,确切地了解他们做了哪些工作,然后进行修改,寻找不同的参数,提出不同的观点。在世界任何一个地方,我都可以进行这些操作。Titus Brown一边飞行在太平洋上空,一边深潜到学生的研究代码中。从美国东兰辛市密歇根州立大学到澳大利亚墨尔本参加会议的这次长途旅行,给这位生物信息学家详细检查实验室的新运算法则以及去除RNA序列中的错误提供了一次良机。3年前,Brown必须要等



我可以通过浏览学生的笔记本,确切地了解他们做了哪些工作,然后进行修改,寻找不同的参数,提出不同的观点。在世界任何一个地方,我都可以进行这些操作。

Titus Brown一边飞行在太平洋上空,一边深潜到学生的研究代码中。从美国东兰辛市密歇根州立大学到澳大利亚墨尔本参加会议的这次长途旅行,给这位生物信息学家详细检查实验室的新运算法则以及去除RNA序列中的错误提供了一次良机。

3年前,Brown必须要等回到办公室后才能这样做,因为如果不经过其他研究人员的解释,他很难潜入到他们的代码中,并对这些代码进行修改以生成新的研究结果。但现在Brown可以用一个免费的开放性软件包在很远的地方与实验室的人一起工作,这个软件包就是IPython,它可以帮助研究人员保存一份详细的实验室运算笔记。

Brown的学生写出说明文本后,附上他们研究生成的原始代码、图标以及数据。然后,坐在飞机上的Brown就可以用电脑里下载的IPython笔记本应用程序零距离接触到学生的研究成果。他重新运行代码后,该程序就会直接执行命令并呈现出他正在阅读的这份材料,让他随时看到他的修改是否有助于提高运算法则。“我可以通过浏览学生的笔记本,确切地了解他们做了哪些工作,然后进行修改,寻找不同的参数,提出不同的观点。”他说,“在世界任何一个地方,我都可以进行这些操作。”

IPython 笔记本的设计目的是让数据分析更容易分享和再生,目前用它来给科研做详细记录、设计教学模型以及与他人合作,其科学家用户已越来越多。一些研究人员甚至会出版这些笔记本,来支持他们的研究论文。Brown就是其中之一,他也在推动着让这个程序成为互动科学出版的新模式。

更好的笔记本

IPython笔记本应用程序是2011年由美国加州大学伯克利分校数据科学家Fernando Pérez和加州州立综合科技大学计算物理学家Brian Granger带领的研究团队共同开发的。“开发这个程序是为了解决我们和其他研究人员以及教育工作者共同面临的问题。” Pérez说。

Pérez 和Granger发现,数据科学家面临一个棘手的问题:他们很难详细地分享自己的原始代码,或对其进行便于理解的描述,让其他人在他们研究的基础上有所拓展。其原因部分是由于很多涉及到大量计算的研究领域的科研人员都是以重复和零碎的方式写代码,因为每次分析都会出现新发现,丢弃掉研究中的多重思路。

记录产生各种数据的每个不同版本的代码并把那些文件和注释笔记相结合,是个令人头疼的问题。而发表后的成果对于跟进该研究的读者来说往往不够详细。“在我从事的计算物理学工作中”,Granger说,“对论文中的运算法则作出高质量的描述与原代码中所描述的详细程度之间的差距通常要以光年来计。没有那些细节,别人想要在一定时间内复制这个过程简直没门儿。”

IPython笔记本通过帮助科学家记录他们的工作,使这些资料更容易分享,并让其他人了解其代码解决了上述哪些问题。应用程序名称IPython中的“I”代表帮助用户运行代码、访问变量,总结数据分析包裹以及了解研究过程的“交互性”命令窗口,而“Python”则指的是作为笔记本程序基础的通用计算机程序语言。(Pérez,Granger及其同事现正在帮助用户把笔记本程序转移到另一项叫作Jupyter的项目中,该项目旨在让IPython与包括 Julia和R在内的其他语言相兼容。)

代码应用

在得克萨斯大学奥斯汀分校,Tal Yarkoni利用IPython笔记本在大脑图像研究中进行自动化元信息分析,以发现参与语言过程、情绪变化以及其他大脑神经活动过程的模式。这位心理信息专家计划把他的笔记和未来的论文一起发表。“分析越复杂,用一份完整的记录来涵盖和传递这个过程就越重要。”他说。

事实上,已经存在与IPython笔记本相似的各种代码语言应用程序。比如在数学家中很受欢迎的商业分析软件包裹Mathematica 和Maple就包含笔记本或类似笔记本的应用程序。 在信号处理、工程以及医疗图像研究等领域使用量极多的商业分析包裹MATLAB也支持笔记本应用。而每种笔记本都有其相应的专业代码语言。

在开放性资源领域,有很多笔记本和类似笔记本的程序。如knitr 使用的是R代码语言,具有强大的数字分析能力;Sage数学软件系统同样基于Python语言,还支持其自带的笔记本;Dexy是一个类似笔记本的程序,专门帮助用户合并短文、代码、数据和其他媒介中的信息,生成论文和讲稿。

但Dexy创始人Ana Nelson却表示,IPython笔记本是其中应用最广的程序。“很多没有听说过其他应用程序的人都知道Ipython。”她说。不过,Granger 和Pérez并不知道有多少人在使用他们的软件,他们仅表示主动使用该程序的用户访问其网站的次数大约在50万~150万人之间。Nelson表示,这是至今为止设计得最好的数字笔记本,其免费性及开放性吸引了很多用户。该应用程序还因Python代码语言受大众欢迎而获益,因为该编程语言在科学界拥有广大的使用群体,他们会每年就此举行国际会议,而且该语言对于入门程序员来说相对简单易学。

尽管随论文一起发表研究笔记的研究人员越来越多,但是让科学期刊把这些资料作为完整的期刊文章的一部分来发表,还需要很长的过程。而目前一些IPython笔记已经作为书籍出版,很多教授还用这个软件开展互动课堂。但到目前为止,这些笔记仍仅作为论文的附属品来发表,经常被用来提供分析代码和附加解释的选择手段。
“出版商仍然不认为他们需要整个研究过程。”Granger说。这些数据的版式可能过新,很难让期刊把笔记本作为正式的文档版本,如html或pdf版本。但是IPython已经开始和一些出版商就此对话。

从新手开始

很多IPython笔记本用户都是技术丰富的程序员,但是专家正在帮助新手使用该软件。大约3个月前,加州大学圣地亚哥分校博士后Yan Song在电脑程序使用方面还没有任何经验。她在分子医学实验室进行细胞研究,包括设计实验、收集数据,而另一位计算机科学家则帮助她挖掘数据。

当他们区分各种神经元时,Song的任务是找出老鼠和人类干细胞中RNA表达发生的变化。以前,她使用Excel对比不同阶段的细胞组织的表达模式。今年早些时候,她开始要检测单个细胞以及细胞大小与复杂的RNA序列数据。她的研究不再像以前一样仅仅分析几组细胞数据,而是一次性对上千个细胞进行对比,每次要检测大约1500个和神经发展相关联的基因。

该实验室生物信息学专业研究生Olga Botvinnik于是在IPython笔记本中生成研究结果,这样Song可以对这些代码进行分析。出于好奇,Song说:“它看起来是一个非常容易操作的界面,你可以给一行信息进行编码,然后立刻检验它是否正确。”

通过在线课程和信息专栏的帮助,仅用了数周时间,Song就学会了一些基本的IPython编程技术,Botvinnik还列了一些菜单,让Song用不同的聚类算法研究她的数据。尽管目前Song还要依赖Botvinnik的帮助进行大量运算和分析,但她表示自己已经开始动手分析数据,并用掌握的生物学知识检验一些特别的细胞或基因子集,在未来分析中她也在教Botvinnik这种方法。“以前我们俩用两种不同的语言交流,我用生物学语言,而她用编程语言。现在,我们有了共同的基础,可以更好地进行交流。这将加速我们的研究。”她说。

原始出处:

Helen Shen. Interactive notebooks: Sharing the code. Nature, 06 November 2014; 

版权声明:
本网站所有内容来源注明为“梅斯医学”或“MedSci原创”的文字、图片和音视频资料,版权均属于梅斯医学所有。非经授权,任何媒体、网站或个人不得转载,授权转载时须注明来源为“梅斯医学”。其它来源的文章系转载文章,或“梅斯号”自媒体发布的文章,仅系出于传递更多信息之目的,本站仅负责审核内容合规,其内容不代表本站立场,本站不负责内容的准确性和版权。如果存在侵权、或不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
在此留言
评论区 (2)
#插入话题
  1. [GetPortalCommentsPageByObjectIdResponse(id=1880365, encodeId=83161880365a8, content=<a href='/topic/show?id=3b2112532d8' target=_blank style='color:#2F92EE;'>#Nat#</a>, beContent=null, objectType=article, channel=null, level=null, likeNumber=28, replyNumber=0, topicName=null, topicId=null, topicList=[TopicDto(id=12532, encryptionId=3b2112532d8, topicName=Nat)], attachment=null, authenticateStatus=null, createdAvatar=, createdBy=2e6f107, createdName=liye789132251, createdTime=Sun Nov 30 22:24:00 CST 2014, time=2014-11-30, status=1, ipAttribution=), GetPortalCommentsPageByObjectIdResponse(id=1591247, encodeId=2471159124ea8, content=<a href='/topic/show?id=436d299e33d' target=_blank style='color:#2F92EE;'>#共享#</a>, beContent=null, objectType=article, channel=null, level=null, likeNumber=33, replyNumber=0, topicName=null, topicId=null, topicList=[TopicDto(id=29973, encryptionId=436d299e33d, topicName=共享)], attachment=null, authenticateStatus=null, createdAvatar=null, createdBy=ec1e17938205, createdName=chendoc248, createdTime=Sat Nov 15 06:24:00 CST 2014, time=2014-11-15, status=1, ipAttribution=)]
    2014-11-30 liye789132251
  2. [GetPortalCommentsPageByObjectIdResponse(id=1880365, encodeId=83161880365a8, content=<a href='/topic/show?id=3b2112532d8' target=_blank style='color:#2F92EE;'>#Nat#</a>, beContent=null, objectType=article, channel=null, level=null, likeNumber=28, replyNumber=0, topicName=null, topicId=null, topicList=[TopicDto(id=12532, encryptionId=3b2112532d8, topicName=Nat)], attachment=null, authenticateStatus=null, createdAvatar=, createdBy=2e6f107, createdName=liye789132251, createdTime=Sun Nov 30 22:24:00 CST 2014, time=2014-11-30, status=1, ipAttribution=), GetPortalCommentsPageByObjectIdResponse(id=1591247, encodeId=2471159124ea8, content=<a href='/topic/show?id=436d299e33d' target=_blank style='color:#2F92EE;'>#共享#</a>, beContent=null, objectType=article, channel=null, level=null, likeNumber=33, replyNumber=0, topicName=null, topicId=null, topicList=[TopicDto(id=29973, encryptionId=436d299e33d, topicName=共享)], attachment=null, authenticateStatus=null, createdAvatar=null, createdBy=ec1e17938205, createdName=chendoc248, createdTime=Sat Nov 15 06:24:00 CST 2014, time=2014-11-15, status=1, ipAttribution=)]
    2014-11-15 chendoc248