大概去年六七月份,那时还不懂什么是生物信息学,什么是编程,Python更是听都没听说过,稀里糊涂的就在老师的安排下跟着别的院一个师兄学习生信, 刚见面师兄就跟我讲解了什么是生物信息学,学生信的种种好处,什么不用做实验就能发文章啊,做的好的话读博能去一个不错的实验室啊之类的,当时我是处于懵逼状态,心想“这是一种怎样的操作?” 在师兄的推荐下,我掏了300大洋买了《DNA和蛋白质序列数据分析工具》《鸟哥的私房菜上下》三本书,用来了解和入门什么是生物信息学。说实话,到现在为止这三本书我都没怎么翻过,在我带入门的人里,我也不会推荐《鸟哥的私房菜》这种,这只会让他们望而却步,只要他们想学,我手里也有他们学不完的资源。好的是,师兄手把手的教了我一段时间。记得师兄说过,要想学生信,就必须学会一门编程语言,否则出门千万别说自己是搞生信的,丢人!所以我就又入了编程的坑,在师兄的强烈推荐下,我选择学习Python,师兄也帮我装上Python.2.7和编辑器,并装上Biopython包,然后扔给我一本全英的《Biopython》和一个脚本,说你要是一周之内不能把这个脚本弄懂,就不要学生信了,不适合。当时我差点就一口老血喷出来,心想“老哥,咱先不谈其他,你好歹也给个中文版本的吧,谁跟你这么强,硕士就到英国留学,毕业论文搞个全英的?”无奈,有总比没有强,还好后来我在网上搜到了这本书的中文版。
因此,在我对Python一无所知的情况下,首先学习了biopython,然后买了《python基础教程》《python核心编程》这两本书更进一步的学习。一但入了此坑就很难回头,尽管现在我主要跟着学习生信的老师和一些小伙伴都是Perl大神,也很难把我从这个坑里拉出来。可喜的是,现在python在生信上的应用越来越广,在机器学习方向,python也是处于领先地位,这更加给了我学下去的理由。当然,主学Python之余,R和Perl也是要懂一点的,用来做图和单行操作还是很必要的!
人生接触的第一个脚本:
import re
import sys, getopt
import operator
from Bio import SeqIO
from Bio.Seq import Seq
from Bio.SeqRecord import SeqRecord
from Bio.Alphabet import generic_nucleotide
import re
import sys, getopt
import operator
opts, args = getopt.getopt(sys.argv[1:], “c:i:o:”)
blast_info = “”
out_file = “”
for op, value in opts:
if op ==”-o”: #ARG_pattern_MIN_7030.fasta or ARG_pattern_MAX_7030.fasta
out_file = open(value, “w”)
filename_pro = str (value)
name_item = filename_pro.strip().split(“.”)
filename = name_item[0]
if op == “-i”: # All_ARGcontig_remove_S_nr.fasta
blast_info = open(value, “r”)
if op == “-c”: #Contig_ARG_region_abstract_info_7030.out
location_info = open(value, “r”)
for record in SeqIO.parse(blast_info,”fasta”):
Pattern_star = 1 – 80
Pattern_end = 90
pattern_seq = record.seq[Pattern_star:Pattern_end]
Seq_len = str(len(pattern_seq))
pattern_ID = filename +”:”+Seq_len
New_record = SeqRecord(pattern_seq,id = pattern_ID, description = “”)
SeqIO.write(New_record, out_file,”fasta”)
blast_info.close()
out_file.close()
这个代码现在看来是不完美的,毕竟每次手动改起止位点还是比较麻烦
Leave a Reply