成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

應(yīng)用Python腳本制作獲取基因組測序指定位置編碼序列

89542767 / 498人閱讀

     此篇文章關(guān)鍵給大家介紹了應(yīng)用Python腳本制作獲取基因組測序指定位置編碼序列的實(shí)例詳細(xì)說明,感興趣的小伙伴值得借鑒參考一下,也希望能有一定的幫助,祝愿大家多多的發(fā)展,盡早漲薪


  前言


  在基因組分析中,大家常常會有這樣一個(gè)要求,便是在一個(gè)fasta文件中獲取某些編碼序列出去。有時(shí)候這種編碼序列注定是完備的編碼序列,而有時(shí)候只是為原fasta文件中某一段編碼序列中的一部分。尤其是當(dāng)信息量許多時(shí),應(yīng)用人眼來挑選編碼序列會很費(fèi)勁,因此這個(gè)時(shí)候大家就可以用編程邏輯去完成了。


  比如這里在百度云盤配件中給出了某種群全基因組序列(0-refer/Bacillus_subtilis.str168.fasta),及其基因組測序gff注解文件(0-refer/Bacillus_subtilis.str168.gff)。


  假定在這兒對于該種群進(jìn)行分析,根據(jù)gff注解文檔中的基因功能敘述字段名,再加上對相關(guān)信息的查閱等,精準(zhǔn)定位到了一部分特定的基因。


  下面我們期待基于gff文件中對這種遺傳基因部位的描寫,在這一基因組序列fasta文件里將這種遺傳基因?qū)ふ也⒎蛛x出來,獲得了一個(gè)新的fasta文件,新文件上只包括目地基因序列。


  請使用python3撰寫1個(gè)能夠?qū)崿F(xiàn)這個(gè)功能的腳本制作。


  示例


  一個(gè)示例腳本如下(可參見網(wǎng)盤附件“seq_select1.py”)。

01.png

  為了實(shí)現(xiàn)以上目的,我們首先需要準(zhǔn)備一個(gè)txt文件(以下稱其為list文件,示例list.txt可參見網(wǎng)盤附件),基于gff文件中所記錄的基因位置信息,填入類似以下的內(nèi)容(列與列之間以tab分隔)。


  #下列內(nèi)容保存到list.txt


  gene46 NC_000964.3 42917 43660+
  NP_387934.1 NC_000964.3 59504 60070+
  yfmC NC_000964.3 825787 826734-
  cds821 NC_000964.3 885844 886173-


  第1列,給所要獲取的新序列命個(gè)名稱;


  第2列,所要獲取的序列所在原序列ID;


  第3列,所要獲取的序列在原序列中的起始位置;


  第4列,所要獲取的序列在原序列中的終止位置;


  第5列,所要獲取的序列位于原序列的正鏈(+)或負(fù)鏈(-)。


  之后根據(jù)輸入文件,即輸入fasta文件及記錄所要獲取序列位置的list文件中的內(nèi)容,編輯py腳本。


  打開fasta文件“Bacillus_subtilis.scaffolds.fasta”,使用循環(huán)逐行讀取其中的序列id及堿基序列,并將每條序列的所有堿基合并為一個(gè)字符串;將序列id及該序列合并后的堿基序列以字典的形式存儲(字典樣式{'id':'base'})。


  打開list文件“l(fā)ist.txt”,讀取其中的內(nèi)容,存儲到字典中。字典的鍵為list文件中的第1列內(nèi)容;字典的值為list文件中第2-5列的內(nèi)容,并按tab分割得到一個(gè)列表,包含4個(gè)字符分別代表list文件中第2-5列的信息)。


  最后根據(jù)讀取的list文件中序列位置信息,在讀取的基因組中截取目的基因序列。由于某些基因序列可能位于基因組負(fù)鏈中,需取其反向互補(bǔ)序列,故首先定義一個(gè)函數(shù)rev(),用于在后續(xù)調(diào)用得到反向互補(bǔ)序列。在輸出序列名稱時(shí),還可選是否將該序列的位置信息一并輸出(name_detail=True/False)。


  <pre class="r"style="overflow-wrap:break-word;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;text-decoration-style:initial;text-decoration-color:initial;margin-top:0px;margin-bottom:10px;padding:9.5px;border-radius:4px;background-color:rgb(245,245,245);box-sizing:border-box;overflow:auto;font-size:13px;line-height:1.42857;color:rgb(51,51,51);word-break:break-all;border:1px solid rgb(204,204,204);font-family:"Times New Roman";">#!/usr/bin/env python3


  #-*-coding:utf-8-*-
  #初始傳遞命令
  input_file='Bacillus_subtilis.str168.fasta'
  list_file='list.txt'
  output_file='gene.fasta'
  name_detail=True
  ##讀取文件
  #讀取基因組序列
  seq_file={}
  with open(input_file,'r')as input_fasta:
  for line in input_fasta:
  line=line.strip()
  if line[0]=='>':
  seq_id=line.split()[0]
  seq_file[seq_id]=''
  else:
  seq_file[seq_id]+=line
  input_fasta.close()
  #讀取列表文件
  list_dict={}
  with open(list_file,'r')as list_table:
  for line in list_table:
  if line.strip():
  line=line.strip().split('t')
  list_dict[line[0]]=[line[1],int(line[2])-1,int(line[3]),line[4]]
  list_table.close()
  ##截取序列并輸出
  #定義函數(shù),用于截取反向互補(bǔ)
  def rev(seq):
  base_trans={'A':'T','C':'G','T':'A','G':'C','N':'N','a':'t','c':'g','t':'a','g':'c','n':'n'}
  rev_seq=list(reversed(seq))
  rev_seq_list=[base_trans[k]for k in rev_seq]
  rev_seq=''.join(rev_seq_list)
  return(rev_seq)
  #截取序列并輸出
  output_fasta=open(output_file,'w')
  for key,value in list_dict.items():
  if name_detail:
  print('>'+key,'['+value[0],value[1]+1,value[2],value[3]+']',file=output_fasta)
  else:
  print('>'+key,file=output_fasta)
  seq=seq_file['>'+value[0]][value[1]:value[2]]
  if value[3]=='+':
  print(seq,file=output_fasta)
  elif value[3]=='-':
  seq=rev(seq)
  print(seq,file=output_fasta)
  output_fasta.close()</pre>


  編輯該腳本后運(yùn)行,輸出新的fasta文件“gene.fasta”,其中的序列即為我們所想要得到的目的基因序列。

02.png

  擴(kuò)展:


  網(wǎng)盤附件“seq_select.py”為添加了命令傳遞行的python3腳本,可在shell中直接進(jìn)行目標(biāo)文件的I/O處理。該腳本可指定輸入fasta序列文件以及記錄有所需提取序列位置的列表文件,輸出的新fasta文件即為提取出的序列。


  #!/usr/bin/env python3
  #-*-coding:utf-8-*-
  #導(dǎo)入模塊,初始傳遞命令、變量等
  import argparse
  parser=argparse.ArgumentParser(description='n該腳本用于在基因組特定位置截取序列,需額外輸入記錄有截取序列信息的列表文件',add_help=False,usage='npython3 seq_select.py-i[input.fasta]-o[output.fasta]-l<ul>npython3 seq_select.py--input[input.fasta]--output[output.fasta]--list<ul>')
  required=parser.add_argument_group('必選項(xiàng)')
  optional=parser.add_argument_group('可選項(xiàng)')
  required.add_argument('-i','--input',metavar='[input.fasta]',help='輸入文件,fasta格式',required=True)
  required.add_argument('-o','--output',metavar='[output.fasta]',help='輸出文件,fasta格式',required=True)
  required.add_argument('-l','--list',metavar='<ul>',help='記錄“新序列名稱/序列所在原序列ID/序列起始位置/序列終止位置/正鏈(+)或負(fù)鏈(-)”的文件,以tab作為分隔',required=True)
  optional.add_argument('--detail',action='store_true',help='若該參數(shù)存在,則在輸出fasta的每條序列id中展示序列在原fasta中的位置信息',required=False)
  optional.add_argument('-h','--help',action='help',help='幫助信息')
  args=parser.parse_args()
  ##讀取文件
  #讀取基因組序列
  seq_file={}
  with open(args.input,'r')as input_fasta:
  for line in input_fasta:
  line=line.strip()
  if line[0]=='>':
  seq_id=line.split()[0]
  seq_file[seq_id]=''
  else:
  seq_file[seq_id]+=line
  input_fasta.close()
  #讀取列表文件
  list_dict={}
  with open(args.list,'r')as list_file:
  for line in list_file:
  if line.strip():
  line=line.strip().split('t')
  list_dict[line[0]]=[line[1],int(line[2])-1,int(line[3]),line[4]]
  list_file.close()
  ##截取序列并輸出
  #定義函數(shù),用于截取反向互補(bǔ)
  def rev(seq):
  base_trans={'A':'T','C':'G','T':'A','G':'C','a':'t','c':'g','t':'a','g':'c'}
  rev_seq=list(reversed(seq))
  rev_seq_list=[base_trans[k]for k in rev_seq]
  rev_seq=''.join(rev_seq_list)
  return(rev_seq)
  #截取序列并輸出
  output_fasta=open(args.output,'w')
  for key,value in list_dict.items():
  if args.detail:
  print('>'+key,'['+value[0],value[1]+1,value[2],value[3]+']',file=output_fasta)
  else:
  print('>'+key,file=output_fasta)
  seq=seq_file['>'+value[0]][value[1]:value[2]]
  if value[3]=='+':
  print(seq,file=output_fasta)
  elif value[3]=='-':
  seq=rev(seq)
  print(seq,file=output_fasta)
  output_fasta.close()


  適用上述示例中的測試文件,運(yùn)行該腳本的方式如下。


  #python3 seq_select.py-h
  python3 seq_select.py-i Bacillus_subtilis.str168.fasta-l list.txt-o gene.fasta--detail
  源碼提取鏈接:https://pan.baidu.com/s/1kUhBTmpDonCskwmpNIJPkA?pwd=ih9n

03.png

  提取碼:ih9n

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/128450.html

相關(guān)文章

  • 第三代基因測序技術(shù)革新 云計(jì)算的應(yīng)用

    摘要:第三代基因測序技術(shù)革新云計(jì)算的應(yīng)用一位準(zhǔn)媽媽,在懷孕周時(shí),需要做唐氏兒的篩查,傳統(tǒng)唐篩的方式準(zhǔn)確率低,如果結(jié)果顯示危險(xiǎn)性高,那么準(zhǔn)媽媽還需要做羊膜穿刺等進(jìn)一步檢查。未來組目前已經(jīng)擁有兩臺第三代基因測序儀,而未來這一數(shù)字將增長至五臺。 第三代基因測序技術(shù)革新 云計(jì)算的應(yīng)用一位準(zhǔn)媽媽,在懷孕12-24周時(shí),需要做唐氏兒的篩查,傳統(tǒng)唐篩的方式準(zhǔn)確率低,如果結(jié)果顯示危險(xiǎn)性高,那么準(zhǔn)媽媽還需要做...

    RaoMeng 評論0 收藏0
  • 谷歌推出開源工具DeepVariant,用深度學(xué)習(xí)識別基因變異

    摘要:今天推出了一個(gè)名叫的開源工具,用深度神經(jīng)網(wǎng)絡(luò)來從測序數(shù)據(jù)中快速較精確識別堿基變異位點(diǎn)。今天,團(tuán)隊(duì),聯(lián)合同屬于旗下的生命科學(xué)兄弟公司,用了兩年多時(shí)間,研發(fā)出了一個(gè)名叫的開源工具,專門用深度神經(jīng)網(wǎng)絡(luò)來識別結(jié)果中測序數(shù)據(jù)里這些堿基變異位點(diǎn)。 Google今天推出了一個(gè)名叫DeepVariant的開源工具,用深度神經(jīng)網(wǎng)絡(luò)來從DNA測序數(shù)據(jù)中快速較精確識別堿基變異位點(diǎn)。學(xué)科研究的革命性進(jìn)展,特別是基因...

    raledong 評論0 收藏0
  • 【F3使用場景】F3經(jīng)典使用場景

    摘要:通過選用云主機(jī),基因企業(yè)在基因計(jì)算環(huán)節(jié)可以大幅提升產(chǎn)能而普通大眾,也能享受成本降低帶來的普惠。而客戶選用云主機(jī),避免了維護(hù)復(fù)雜板卡的大量人力物力的投入,縮減了驗(yàn)證平臺的維護(hù)成本。 摘要: 概括F3經(jīng)典使用場景 人工智能深度學(xué)習(xí)客戶,推理應(yīng)用 最近兩年,人工智能在全球掀起了巨大的應(yīng)用熱潮,除了互聯(lián)網(wǎng)巨頭,如Google,F(xiàn)acebook,Alibaba之外,涌現(xiàn)出眾多的Start up公...

    baiy 評論0 收藏0
  • 云計(jì)算和大數(shù)據(jù)延伸至生命信息領(lǐng)域:生物云計(jì)算

    摘要:華為生科云解決方案,由工作流彈性計(jì)算云對象云存儲線下數(shù)據(jù)寄送服務(wù)四部分組成,為客戶提供端到端的解決方案,助力中國科研數(shù)據(jù)分析,演繹了生物與計(jì)算的完美結(jié)合。 隨著互聯(lián)網(wǎng)的普及和技術(shù)的發(fā)展,大數(shù)據(jù)和云計(jì)算已經(jīng)滲透在人們的生活的各個(gè)方面,在金融,零售,能源,交通等領(lǐng)域已經(jīng)得到廣泛應(yīng)用。而對于生物信息來說,生物的DNA、基因序列、生物芯片等無時(shí)無刻不產(chǎn)生新的數(shù)據(jù);比如說,DNA測序每年能夠產(chǎn)生大約1...

    ethernet 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<