|||
最近一段时间抽空学习python编程语言,前段时间还有博客纪录心得(参考《一定要不懂装懂才能成功》)。上个周末,在湖边休假,用了两天时间完成了下面的程序:
It worked!!
这个简单的程序做了如下的工作:
(1)产生一个任意大小的随机序列;
(2)从一个文件中读入一连串引物序列(高多聚酶亲和指数的引物);
(3)查出所有引物在靶序列中的结合位点(包括正向和反向);
(4)算出扩增产物的平均片段长度(设定一定条件);
(5)测算出靶序列有百分之多少被扩增子覆盖了;
(6)测算出被覆盖部分平均被几个扩增子覆盖了。
我写这个程序的目的是为了研发一个新产品:一组可以用来随机扩增基因组的高效引物。这些引物的组合可以根据所用的酶和靶基因序列的不同而不同。
为什么要做这个产品?因为现有的随机扩增大都用随机六聚体核酸引物。可是,我们的研究显示多聚酶在扩增DNA的时候是有很强的偏好的,有些引物多聚酶很喜欢,而绝大多数引物多聚酶是不喜欢的。所以,与其加入4096个随机引物,还不如就用那些有用的引物(几十个),这样扩增效率会提高很多。因为随机引物有4096个排列组合,每一轮扩增反应,每个引物都要对号入座找到他们特异性的靶序列,效率就很低。如果淘汰掉那些本来就没用的引物,效率和覆盖率就会提高。
python教科书看了不到三分之一就忍不住动手写程序了,这看来是“不踏实”的表现,不过实际是一个非常好的尝试。我得到了很多心得:
(1)带着问题学,比枯燥的书本好玩多了。就是觉得书本离应用差得太远,变得越来越没有耐心,才动手写“有用的”软件的。
(2)许多“语句”和功能都是抄来的,只要会Google,编程就会了一半了。开始还觉得很内疚,以为这不是真的“掌握”了编程。其实不然,这和学习所有语言一样,能实际用上的,才是真正掌握了的。能应付考试的,不一定就是你掌握了的知识。
(3)我想学习编程很久了,买了不少C语言的书,后来没有坚持下来。现在开始学很吃力,有人质疑“怎么还亲自操刀学习编程?雇一个程序员就行啦!” 我的回答是:“我二十年前就想学。我不想过二十年后还说:我四十年前就想学!”。学新东西,总有开始的一天,为什么今天不是那一天?
但愿我能一直学下去,用下去。有了这个好开端,我大概不会轻易放弃了。我已经尝到了编程的乐趣,而且也找到了一些窍门。更何况,我有太多太多的实际应用等着我去做,所以,这个“程序猿”,我是要做下去了。是进化还是返祖?
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-22 21:50
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社