编译自:Programming: Pick up Python
作者:Jeffrey M. Perkel

上个月,Adina Howe得到了爱荷华州立大学的一个教职。从职务上看,她是农业与生物工程的助理教授。然而,她的工作并不在温室里,而是在键盘上。从工作性质上看,Howe更像是一个程序员。她的部分工作是做一名“数据教授”,开发编程课程体系,教给学生们科学编程的技巧。

Howe并没有计算机专业学位,也没有经过正规计算机培训。她的博士学位是环境工程,当她加入密歇根州立大学Titus Brown实验室的时候,最拿手的工作是进行酶活性测定。可是Titus Brown专门从事生物信息学的研究,用电脑从基因组数据中提取信息。Howe只好随着Titus Brown的方向,尽力转向了计算。而Brown给她的建议是,学会Python。

对科学家来说,Python是所有可选编程语言中越来越值得推荐的语言。它是由荷兰程序员Guido van Rossum于1991年首次发布的,始终免费,语法简单,在线资源丰富,有大量科学相关的工具包,重视社区生态系统。

Hello, world

随着“大数据”概念的爆炸性增长,在如生物信息学、神经科学、天文学等许多学科中,编程技能变得越来越重要。会用Python写代码的研究人员,无论在整理数据、分析数据方面,还是最后的数据可视化方面,工作效率都更高。而其他的一些科学领域常用的编程语言,例如MATLAB和R,更注重数学和统计运算。相比之下,Python是一种更通用的语言,更类似C语言和C++这一类在商业软件和操作系统中被广泛运用的语言。因此,它也许更复杂,但能力也更强大。它可以自动化一些小的指令集,可以建网站,也可以构建成熟的科学或商业应用。加州大学伯克利分校的心理学博士生Jessica Hamrick介绍说,她从2008年开始使用Python,如今在研究的所有阶段都会用到。例如,在她探索人们如何操纵脑内几何形状的研究中,她创建了很多不同的几何形状出来,呈现给被试者,并记录他们的选择,然后分析数据。在这些步骤里她都用到了Python。

Python的通用性很高,新手学习Python的痛苦也更少。容易入门这个特性来自于Python语言本身的功能,也来自于围绕Python建立的众多资源。例如,Python中的执行命令是交互式的,输入一个命令就能获得响应。而在C语言中,还需要一个编译的步骤,将代码转为可执行文件,对初学者来说这样的过程实在是太复杂了。Python代码写起来也更容易,用户没有必要先定义一个变量是数字还是文字。例如,要想把经典的“Hello, world!”打印出来,在Python里不能更简单了,只需要在命令行中输入print(“Hello, world!”),轻敲回车就搞定了。Brown谈到为什么要选择Python时说,教新人做事的时候,Python比C语言或者C++简单得多。因此Python成为了编程入门的热门选择。

社区因素对Python的普及也发挥了很大作用。只有用户在各种环境下使用某种编程语言,这种编程语言才能流行起来。大规模的使用创造了一种良性循环,新用户把Python扩展到新的领域,Python又吸引了这个领域内更多的人。

Python社区也特别鼓励女性尝试Python,有很多以女性为中心的可用资源,例如旧金山的Hackbright Academy,加拿大的非营利组织Ladies Learning Code,以及全球性的指导小组PyLadies,都有很多针对女性的Python教学。Emily Irvine是加拿大麦吉尔大学的硕士生,她选择用Python来分析她的神经电生理数据。她说被Python吸引是因为“语法简单”和“网上资源多”,而Python社区的氛围也同样重要。例如蒙特利尔PyCon会议的氛围就非常温馨,尤其对女性和科学家非常友善。

Python的教育资源也比比皆是。基金会Software Carpentry Foundation在很多地方开了为期两天、主题为科学编程(scientific programming)的研讨会,它的教育资源同样可以在网上找到。在线教育平台Coursera和edX也有很多Python相关的课程。此外,Codecademy等在线平台也有一些简单的初学者动手教程。Irvine是在网络课程中自学的Python,遇到问题了就去编程问答网站stackoverflow.com里请教别人。她说,如今她的水平介于新手和中级程序员之间,用Python专业主语来说是“pythonista”,一个会用Python的人。

完整体验

当然,如果用户不能用一种编程语言实现自己想要的功能,那么这种编程语言再容易学、再友好也没有意义。这时就能看出Python的包(package)的巨大优势了,它们扩展了Python的功能。Python的开发哲学里有一条,有点像买回新电子产品里“内含电池”一样,它的内置功能很容易上手使用。但它同样有非常成熟的生态系统,任何你想要写代码来解决的问题,可能都有人想到了而且写了库(libraries),让你直接就可以使用,不用自己再去写代码。

科学领域的程序员,无论是什么学科,都有一些经常要用到的核心工具包。例如NumPy(数学阵列),SciPy(线性代数,微分方程,信号处理等),SymPy(符号数学),matplotlib(绘图),Pandas(数据分析)。另一种流行工具Cython,解决了Python执行速度相对较慢的问题。Cython优化了Python的一部分代码,如出了名慢的'for'循环(用来指定一部分代码反复运行)。韩国首尔大学的理论物理学家Paul Nation说,用Cython后速度快了1000倍。

IPython Notebook是另一个流行的包。Howe认为这是一个程序员的实验室笔记本,允许用户把数据、代码和说明文字或笔记在一个浏览器页面中同时呈现出来,而不用把它们分开放在不同的文件里。

除了这些核心软件包,几乎所有科学领域都有可以用的软件包,例如机器学习的scikit-Learn,生物信息学的Biopython,心理学和神经科学的PsychoPy,天文学的Astropy。Thomas Robitaille是Astropy项目的协调员,也是德国马普天文研究所的研究员。他说,Astropy建立的目的是为了减少研究组的重复劳动。它为用户提供了一组核心功能,例如把一个坐标系从一个天文数字测绘系统转到另一个,为不同格式的文件提供统一的读写接口,处理图像并进行计算。另一个Python软件包QuTip能让量子力学的研究者定义一个系统,并模拟它的运行。该项目是2010年日本理化研究所启动的,目的是将他们原先使用的MATLAB软件包改编为Python。

类似这样的软件包正是良性循环的推动者。研究人员其实可以在工作中使用任何编程语言,只要他们肯花时间去学习(实际上很多语言都可以使用其他语言写的算法,包括Python,这样就可以使用旧代码)。Brown介绍说,学习编程的困难之处在于基础,一旦研究者入了门、搞定了基础,适应新的语言不过是重新学一点语法的问题。在学习早期,最重要的事情之一是有好的支持网络。Brown建议不用拘泥于Python,研究者可以选择一个身边人用的最多的编程语言开始入门。但是,选Python来入门的趋势越来越明显了。

Python工具箱
安装Python:通过Anaconda或者Enthought Canopy安装,在Python软件基金会可以找到说明文档。
初学者课程:Software Carpentry; Learn Python the Hard Way; Codecademy; Think Python
其他在线资源:MIT的Python课程; 马普研究所的课堂笔记; 广泛推荐的教程essay from Google's head of research
科学领域开源软件包可以在SciPy.org找到。
编程指导、遇到问题:Ladies Learning Code; Stack Overflow; PyCon.org列出了世界各地关于Python的会议。

弓形虫是一种很常见的寄生虫,城市里最常见的地方往往是家猫身上,并且通过猫的粪便进行传播。如果人吃了一些没有煮熟的肉、没有洗干净的菜或者喝了污染的水,就有可能感染弓形虫。弓形虫可以在大脑内潜伏,虽然大多无害,但也有研究显示它会造成流产、婴儿缺陷等等,也有可能对免疫系统较弱的人带来一些额外危害。在情绪方面,弓形虫病感染可能与精神分裂症有一定的相关性,感染了弓形虫的老鼠也消除了对猫的恐惧。

上周来自芝加哥大学的一篇研究显示,人的愤怒障碍可能与感染了弓形虫病有关。

这篇报道发表在Journal of Clinical Psychiatry上,研究的主要对象是患有间歇性狂暴症(intermittent explosive disorder,IED)的患者,这类患者会对一些很小的刺激就表现出巨大的愤怒和暴力倾向。在三组研究对象中,一组为没有任何精神疾病的正常人,一组为IED患者,一组为其他精神问题如抑郁或焦虑。所有人通过血液检测是否感染过弓形虫。

结果发现感染过弓形虫的人侵略性明显比其他人要高。而IED患者中22%感染过弓形虫,其他精神疾病中只有16.7%,而正常人中只有9%感染过弓形虫。

这篇文章同样显示了弓形虫感染可能会影响人的精神状况。不过,该研究只证明了IED与弓形虫感染的相关性,并没有说明两者的因果联系。也许是弓形虫感染带来愤怒障碍,也许是愤怒障碍的人更容易感染弓形虫,目前还找不到更多的证据。


学术研究、临床试验里的受试者招募一直是没有效率的事情,目前大多数做法还是校园里贴小广告,或者朋友圈里、社交平台上宣传。招募之后的实验说明和付费等事情,都很琐碎但又不得不做。虽然不是很大众的需求,但如果有一个能够快速找到受试者,并标准化整个流程的程序,对科研人员还是有不少帮助的。

Xperii就是在这个想法下诞生的。Xperii是一个网络平台,通过自动化和简化的程序来招募受试对象。整个平台包含了一系列人体实验需要用到的流程,例如实验前的预筛选,时间安排,付费,受试者的条件评估,受试者数据的跟踪收集,受试者监测,数据安全存储和分析等等。

目前,Xperii的目标受试者人群暂定在美国的新英格兰地区。在校学生是对参加临床试验和学术研究最有兴趣的一批人。Xperii通过鼓励这些学生创建账户并说明自己的兴趣,来匹配需要受试者的研究和有意向的受试者。当匹配成功并实验后,研究项目向Xperii付一部分费用。付费可以减少人力投入并加快实验进程,很多项目都会愿意这么做。

这个服务是由布朗大学和MIT的神经科学学生共同创立的。CEO Evan Ehrenberg是MIT脑与认知科学系有史以来最年轻的博士生,16岁就开始了博士生涯,如今22岁,正准备答辩。

对大多数人来说,能用这种简单的想法来创业真是再好不过了。

网站地址: Xperii


© 2014-2015 NeuroTimes