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

    生物学学渣,转行中,目前在研究生物信息及数据挖掘。如有问题或建议,请多多赐教。
  • 相关阅读:
    python爬虫headers设置后无效解决方案
    idea建立web项目servlet映射的地址/jsp访问不到
    bootstrap栅格系统错位问题
    python2 python3共存解决方案
    Springboot+Thymeleaf框架的button错误
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
  • 原文地址:https://www.cnblogs.com/huangyinger/p/10418661.html
Copyright © 2011-2022 走看看