zoukankan      html  css  js  c++  java
  • FASTA文件分割

    FASTA格式是一种用于记录序列的文本格式,在生信分析中经常会用到.fasta文件中往往储存成千上万条序列,而在某些时候,需要对文件进行分割,如分割成每个序列一个文件,或分割成较小的fasta文件
    假如有如下数据:
    Tricas1.fasta
    $ head Tricas1.fasta

    CM000276.2
    tgatttttaggttagaaattgttttttaaacacgtgttcgcgccattttttttatttatt
    tgccaattaagtgcacgtgtccgcgccatttaaaattttgttaccgatttagtgcgattt
    tttaggttggcattactttttaaacacgtaactgcgccatttttttaatttagttacctg
    tttagcgtgatttttaggttagaaattgttttttaaacacgtgttcgcgccatttttttt
    atttatttgccaattaagtgcacgtgtccgcgccatttaaaattttgttaccgatttagt
    gcgattttttaggttggcattactttttaaacacgtaactgcgccatttttttaatttag
    ttacctgtttagcgtgatttttaggttagaaattgttttttaaacacgtgttcgcgccat
    tttttttttatttatttaccgaataagtgcacgtgtccgctccatttaaaattttattag
    cgatttagtgcgattttttaggttggcattactttttaaacacgtaactgcgccattttt

    这里介绍几种方法对fasta文件进行分割。
    方法一:awk
    这个方法将文件分割为每条序列一个文件

    awk '/^>/{s=++num}{print > "Tricas1_"s".fa"}' Tricas1.fasta

    awk 依次对文件的每一行进行处理,当遇到 > 开头的行时,执行 ++num(即 num = num + 1),并将结果赋值给 s,然后将结果重定向给 example_s.fa(其中,在第一条序列时,s 为 1);当处理的行为序列时,语句 /^>/{s=++num} 不执行,直接执行 {print > "example_"s".fa"}(和 {print $0 > "example_"s".fa"} 一样)。

    基于以上原理,实现了 fasta 文件的分割。
    方法二:perl
    该程序可以通过参数 --n-parts num 设定需要将文件设定为 num份,如下面的示例将文件分为两份(使得序列数目尽量相同);当将num 设置成序列的总数时,其效果与方法一

    $ perl fasta-splitter.pl --n-parts 2 Tricas1.fasta
    程序下载地址:http://kirill-kryukov.com/study/tools/fasta-splitter/files/fasta-splitter-0.2.6.zip

    解压即可使用:unzip fasta-splitter-0.2.6.zip

    生物学学渣,转行中,目前在研究生物信息及数据挖掘。如有问题或建议,请多多赐教。
  • 相关阅读:
    一些文件的扩展名
    关于git,从svn转到git
    trousers--------dpkg: 处理软件包 trousers (--configure)时报错
    Ubuntu下运行DrClient以上网
    Ubuntu下的终端命令--复制文件从一个文件夹到另一个文件夹下
    VSCode放大字体的快捷键
    opessl版本过低造成的函数使用错误
    python的基本语法
    ubuntu和windows的解码方式
    ubuntu下强制删除文件夹
  • 原文地址:https://www.cnblogs.com/huangyinger/p/10418661.html
Copyright © 2011-2022 走看看