精华内容
下载资源
问答
  • JFASTA是用于处理FASTA文件的轻量级框架。 它支持读取,写入和解析单个或多个FASTA文件。 文件可以一次读取/写入,也可以基于流读取(内存效率高)。 它稳定,非常直观,并且可以与Java 1.5 SDK及更高版本很好地集成...
  • PDB到Fasta 一个简单的库,可将pdb(蛋白质数据库)文件转换为遵循常规fasta格式的fasta文件
  • 文件脚本可将大的fasta文件中的序列,按照个数均分,分割成多个fasta文件,便于对各个小文件中的序列进行后续操作
  • 快速分析肽 此类可用于轻松消化FASTA蛋白质数据库中的蛋白质。
  • 一个在 FASTA 文件中查找主题位置的小程序。 用法 要编译,您应该只需要键入“make”即可。 用法如下: ./motiflocation -file1 <fasta> -startstr <motif> -out 参数 -file1 :指定输入的 fasta 文件。 -...
  • FASTApple用Applescript编写,是针对普通计算生物学家的一套实用程序,可快速轻松地处理FASTA文件。 基本而直接的GUI使选择文件变得轻而易举。 当前包括三个实用程序:FASTA Concatenater将多个FASTA文件组合到一个...
  • 使用Python对fasta格式的序列进行基本信息统计预期设计输出文件中包括fasta文件名,序列长度,GC含量以及ATCG各自的含量。Python脚本编辑使用的文件test.fastastat.py输入 sys模块#!/usr/bin/env pythonimport sys从...

    使用Python对fasta格式的序列进行基本信息统计

    预期设计输出文件中包括fasta文件名,序列长度,GC含量以及ATCG各自的含量。

    Python脚本编辑

    使用的文件

    test.fasta

    stat.py

    输入 sys模块

    #!/usr/bin/env python

    import sys

    从命令行获得文件名称

    file_fasta = sys.argv[1]

    #获得文件名

    file_name = file_fasta.split('.')

    name = file_name[0]

    sys.argv[1]模块是从程序外部获取参数的桥梁,可以将命令行的参数输入到py程序内。

    sys.argv[0]是程序本身,sys.argv[1]是程序后跟着第一个参数。

    我们将文件名作为输入参数,这一步在最后运行有展示。

    在结束输出时会输出一个包含统计信息的txt文件,我们将用fasta文件名作为txt文件的前缀,所以我们需要获取fasta文件的名字。

    .split('.')是将file_fasta以.为分隔符分开会生成'test','txt',赋值给file_name则file_name会包含着两个字符。

    file_name[0]则是取第一个值'test',python中默认第一个数字是0,所以不能输入1。

    进行序列信息统计的函数

    序列的长度很好统计使用len函数即可,但是GC含量和ACTG的百分比计算需要费点事情。

    使用def制作一个函数

    Python 使用def 开始函数定义,紧接着是函数名,括号内部为函数的参数,内部为函数的 具体功能实现代码

    def get_info(chr):

    chr = chr.upper()

    count_g = chr.count('G')

    count_c = chr.count('C')

    count_a = chr.count('A')

    count_t = chr.count('T')

    命名这个函数为get_info,内部参数为chr

    在咱们会将fasta中ATCG的碱基内容赋值给chr,碱基可能有大写有小写,所以我们使用.upper将所以字符变成大写。

    再使用.count('G')统计ATCG各自的数量并赋值给对应count_g,我们用ATCG各自的统计数可以在后面计算中免疫N值干扰。

    gc = (count_g + count_c) / (count_a + count_t + count_c + count_g)

    A = (count_a) / (count_a + count_t + count_c + count_g)

    T = (count_t) / (count_a + count_t + count_c + count_g)

    C = (count_c) / (count_a + count_t + count_c + count_g)

    G = (count_g) / (count_a + count_t + count_c + count_g)

    gc_con = '{:.2%}'.format(gc)

    A_content = '{:.2%}'.format(A)

    T_content = '{:.2%}'.format(T)

    C_content = '{:.2%}'.format(C)

    G_content = '{:.2%}'.format(G)

    return (gc_con,A_content,T_content,C_content,G_content)

    gc含量计算其等于(G的数量+C的数量)/(A的数量+T的数量+C的数量+G的数量)

    A的含量等于(A的数量)/(A的数量+T的数量+C的数量+G的数量),其他值的计算以此类推。

    .format使用:

    "{1} {0} {1}".format("hello", "world")设置指定位置。

    'world hello world'

    {:.2f} 保留小数点后两位

    最后,使用return返回函数结果(gc_con,A_content,T_content,C_content,G_content)

    进行函数计算

    #进行函数计算

    with open(file_fasta,'r') as read_fa:

    读取文件内容赋值给read_fa

    python中有两个方式打开文件一种是直接使用open("test.fasta","r"),执行完以后f.close()关闭。

    注释:"r"只读模式打开文件;"w"以只写模式打开文件,这种模式下输入内容会覆盖原有内容;"a"以追加模式打开一个文件,这个模式会把新内容追加到原有内容的末尾,不会覆盖。

    这里使用的是第二方式with内置函数,它可以将文件自动关闭。

    for val in read_fa:

    val = val.strip()

    if not val.startswith(">"):

    seq_info = get_info(val)

    len_fasta = len(val)

    将read_fa内容赋值给val。

    strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符),这里使用默认。

    然后使用startswith() 方法用于检查字符串是否是以指定子字符串开头,在当不是>开头的行时候,才对核酸序列才进行信息统计。

    len() 方法返回字符长度获得片段长度

    结果屏幕展示

    #结果屏幕展示

    print('******\n{0}\nlength:{1}\ngc content :{2}\nA content :{3}\nT content :{4}\nC content :{5}\nG content :{6}\n******'.format(name,len_fasta,seq_info[0],seq_info[1],seq_info[2],seq_info[3],seq_info[4]))

    使用\n进行换行,用.format指定值输出位置。

    结果输出文件

    os.write(fd, str)

    write() 方法用于写入字符串到文件描述符 fd

    #结果输出文件

    file_output = open("{}sum.txt".format(name),'a')

    file_output.write('******\n')

    file_output.write('{}\n'.format(name))

    file_output.write('length:{:d}\n'.format(len_fasta))

    file_output.write('gc content :{}\n'.format(seq_info[0]))

    file_output.write('A content :{}\n'.format(seq_info[1]))

    file_output.write('T content :{}\n'.format(seq_info[2]))

    file_output.write('C content :{}\n'.format(seq_info[3]))

    file_output.write('G content :{}\n'.format(seq_info[4]))

    file_output.write('******')

    file_output.close()

    脚本运行

    执行脚本(linux系统)

    12.png

    使用ls命令可以看到当前目录下有已经写好的py文件以及数据test.fasta。

    运行时注意我们编写时设置从命令行获得文件名称,所以要在后面跟上fasta文件,这样才能成功运行。

    运行结束后可以看见屏幕上有结果的打印,同时也生成了testsum.txt。

    使用cat命令查看可以看到结果。

    如果有问题欢迎大家咨询

    展开全文
  • 使用python读取和分析fasta文件

    千次阅读 2019-12-05 20:28:49
    分享一些处理fasta文件的python函数

    fasta文件格式

    在生物信息学中,FASTA格式(又称为Pearson格式)是一种基于文本的、用于表示核苷酸序列或氨基酸序列的格式。FASTA文件以序列标识和序列作为一个基本单元,每个基本单元分为两部分:序列标记和序列本身。第一行以‘>’开头,后面紧跟序列标记;从第二行开始,直到下一个标记行(‘>’开头行)出现,或文件末尾,这部分为序列本身。 值得注意的是,序列中的换行符应该被忽略。

    fasta文件格式详细介绍请参见: 传送门1 传送门2

    例如:

    >seq1
    ATCGATCG
    >seq2
    AAATTTCC
    CGGG
    >seq3
    TAGCTAGCTAGC
    

    上面就是一个fasta文件的基本格式,描述了3条DNA序列seq1、seq2和seq3。值得注意的是fasta文件允许在序列中存在换行,这给我们的分析工作造成了麻烦。

    perl读取fasta文件

    编写perl脚本读取fasta比较简单,我们可以更改perl的特殊变量$/,让"行"的概念由换行符分割改为由fasta文件中序列标记开头标识">"分割。请参考以下代码

    open IN,"<",$fa or die $!;
    #$/ 默认为换行符'\n',我们将其改为'>'
    $/ = ">";<IN>;
    while(<IN>){
            my @lines = split "\n",$_;
            my $seqName = shift @lines;
            my $seq = join '',@lines;
            $seq =~s/>\z//;
            #==============
            #这里拿到了$seqName和$seq分别为序列名和序列本身
            #请在这里编写对序列的分析代码
            #==============
            }
    #为了避免对之后代码的影响,及时把$/改回来
    $/ = "\n";
    close IN;        
    

    python处理fasta文件

    我封装了一些处理fasta文件的函数,涉及到读取序列、滑窗操作等,在这里分享给大家。

    
    def readFa(fa):
        '''
        @msg: 读取一个fasta文件
        @param fa {str}  fasta 文件路径
        @return: {generator} 返回一个生成器,能迭代得到fasta文件的每一个序列名和序列
        '''
        with open(fa,'r') as FA:
            seqName,seq='',''
            while 1:
                line=FA.readline()
                line=line.strip('\n')
                if (line.startswith('>') or not line) and seqName:
                    yield((seqName,seq))
                if line.startswith('>'):
                    seqName = line[1:]
                    seq=''
                else:
                    seq+=line
                if not line:break
    
    
    def getSeq(fa,querySeqName,start=1,end=0):
        '''
        @msg: 获取fasta文件的某一条序列
        @param fa {str}  fasta 文件路径
        @param querySeqName {str}  序列名
        @param start {int}  截取该序列时,起始位置,可省略,默认为1
        @param end {int}  fasta 截取该序列时,最后位置,可省略,默认为该序列全长
        @return: {str} 返回找到(截取到)的序列
        '''
        if start<0: start=start+1
        for seqName,seq in readFa(fa):
            if querySeqName==seqName:
                if end!=0: returnSeq = seq[start-1:end];print(start-1)
                else: returnSeq = seq[start-1:]
                return returnSeq
    
    
    def getReverseComplement(sequence):
        '''
        @msg: 获取反向互补序列
        @param sequence {str}  一段DNA序列
        @return: {str} 返回反向互补序列
        '''
            sequence = sequence.upper()
            sequence = sequence.replace('A', 't')
            sequence = sequence.replace('T', 'a')
            sequence = sequence.replace('C', 'g')
            sequence = sequence.replace('G', 'c')
            return sequence.upper()[::-1]
    
    def getGC(sequence):
        '''
        @msg: 获取某一条序列的GC含量
        @param sequence {str}  一段DNA序列
        @return: {float} 返回GC含量
        '''
        sequence=sequence.upper()
        return (sequence.count("G")+sequence.count("C"))/len(sequence)
    
    
    def readSeqByWindow(sequence,winSize,stepSize):
        '''
        @msg: 滑窗读取某一条序列
        @param sequence {str}  一段DNA序列
        @param winSize {int}  窗口大小
        @param stepSize {int}  步长
        @return: {generator}  返回一个生成器,可迭代得到该序列的每一个窗口序列
        '''
        if stepSize<=0: return False
        now = 0
        seqLen = len(sequence)
        while(now+winSize-stepSize<seqLen):
            yield sequence[now:now+winSize]
            now+=stepSize
    
    def getGapPos(sequence):
        '''
        @msg: 获取某条序列中gap的位置
        @param sequence {str}  一段DNA序列
        @return: {list}  返回一个列表,列表中每个元素为每个gap的起始和结束位置
        '''
        Ns = {'N', 'n'}
        result = []
        i = 0
        for base in sequence:
            i += 1
            if not base in Ns: continue
            if len(result) == 0 : result.append([i,i])
            elif i - result[-1][1] == 1: result[-1][1] = i
            else: result.append([i,i])
        return result
    
    
    

    以下是两个小例子:

    fa="./sequence.fasta"
    #读取一个fasta文件,并输出其中的每一条序列名,序列长度和GC含量
    for seqName,seq in readFa(fa):
        seqLen = len(seq)
        GC = getGC(seq)
        print(seqName,seqLen,GC)
    
    #读取一个fasta文件,并以1000bp为窗口、100bp为步长读取每条序列,
    #计算每个窗口的GC含量,并记录在字典中
    GCLst = {}
    for seqName,seq in readFa(fa):
        GCLst.setdefault(seqName,[])
        for winSeq in readSeqByWindow(seq,1000,100):
            GCLst[seqName].append(getGC(winSeq))
    
    
    展开全文
  • FASTA文件主要用于存储生物的序列文件,例如基因组,基因的核酸序列以及氨基酸等,是最常见的生物序列格式,一般以扩展名fa,fasta,fna等。fasta文件中,第一行是由大于号">"开头的任意文字说明,用于序列标记,...

    FASTA文件主要用于存储生物的序列文件,例如基因组,基因的核酸序列以及氨基酸等,是最常见的生物序列格式,一般以扩展名fa,fasta,fna等。fasta文件中,第一行是由大于号">"开头的任意文字说明,用于序列标记,为了保证后续分析软件能够区分每条序列,单个序列的标识必须是唯一的,序列ID部分可以包含注释信息。从第二行开始为序列本身,只允许使用既定的核苷酸或氨基酸编码符号。序列部分可以在一行,也可以分成多行。

    CSV文件是最通用的一种文件格式,它可以非常容易地被导入各种PC表格及数据库中。 此文件,一行即为数据表的一行。生成数据表字段用半角逗号隔开。
    CSV是文本文件,用记事本就能打开,CSV (*.csv) 文件格式只能保存活动工作表中的单元格所显示的文本和数值。工作表中所有的数据行和字符都将保存。数据列以逗号分隔,每一行数据都以回车符结束。如果单元格中包含逗号,则该单元格中的内容以双引号引起。

    原始fasta数据:
    在这里插入图片描述

    from Bio import SeqIO
    import pandas as pd
    meta = []
    sequence = []
    label=[]
    i=0
    seq = ('data.fasta')  #转换的文件
    for seq_record in SeqIO.parse(seq, "fasta"):
        meta.append(str(seq_record.id))
        sequence.append(str(seq_record.seq))
        i=1+i
        label.append(int(i))
        # print(sequence)
        df = pd.DataFrame(data={'Meta': meta, 'SequenceID': sequence,'Label':label}) #转换后的文件的表头
        print(df)
        
        # 数据存入csv
        df.to_csv("data.csv", sep=',', index=False)  #转换后的文件
    

    转换后csv数据:
    在这里插入图片描述

    展开全文
  • 我想使用以下脚本从大的fasta文件中提取特定的fasta序列,但输出为空。从大的fasta文件中提取特定的fasta序列transcripts.txt文件包含我想从assembly.fasta到selected_transcripts.fasta导出的列表转录本ID(ID和序列...

    我想使用以下脚本从大的fasta文件中提取特定的fasta序列,但输出为空。从大的fasta文件中提取特定的fasta序列

    transcripts.txt文件包含我想从assembly.fasta到selected_transcripts.fasta导出的列表转录本ID(ID和序列)。 例如:

    transcripts.txt: Transcript_00004|5601

    Transcript_00005|5352

    assembly.fasta:>Transcript_00004|5601

    GATCTGGCGCTGAGCTGGGTGCTGATCGACCCGGCGTCCGGCCGCTCCGTGAACGCCTCGAGTCGGCGCCCGGTGTGCGTTGACCGGAGATCGCGATCTGGGGAGACCGTCGTGCGGTT

    >Transcript_00004|5360

    CGATCTGGCGCTGAGCTGGGTGCTGATCGACCCGGCGTCCGGCCGCTCCGTGAACGCCTCGAGTCGGCGCCCGGTGTGCGTTGACCGGAGATCGCGATCTGGGGAGACCGTCGTGCGGTT

    的ID由>符号开头:>Transcripts_00004|5601。

    我要读的assembly.fasta文件,如果在assembly.fasta成绩单ID是transcripts.txt相同的写的,我必须写这份成绩单ID及其selected_transcripts.fasta序列。所以,在上面的例子中,我只需要写第一个成绩单。

    有什么建议吗? 谢谢。

    from Bio import SeqIO

    my_list = [line.split(',') for line in open("/home/universita/transcripts.txt")]

    fin = open('/home/universita/assembly.fasta', 'r')

    fout = open('/home/universita/selected_transcripts.fasta', 'w')

    for record in SeqIO.parse(fin,'fasta'):

    for item in my_list:

    if item == record.id:

    fout.write(">" + record.id + "\n")

    fout.write(record.seq + "\n")

    fin.close()

    fout.close()

    2016-05-13

    Chiara E

    +1

    请参阅https://www.biostars.org/p/68718/ –

    +0

    您可以[编辑]您的问题,并包括一些'transcripts.txt'以及'assembly.fasta'的一部分,所以我们有一些数据可以使用? –

    +0

    你在每个冒号后分开你的成绩单行,但它是空格分开的。这是故意的吗? –

    展开全文
  • fastq与fasta文件格式解析一、fasta格式二、fastq格式2.1 格式说明2.2 碱基质量计算2.3 Quality Score简化三、二代测序的fastq文件格式介绍四、补充说明4.1 illumina测序仪4.2 illumina测序方法4.3 测序流程参考文章...
  • Python读取fasta文件

    千次阅读 2019-04-23 22:13:27
    AMPs.fasta文件格式: >AP00001 |antibacterial |anticancer/tumor |antifungal GLWSKIKEVGKEAAKAAAKAAGKAALGAVSEAV >AP00004 |antibacterial |antifungal ...
  • 分割 fasta 文件

    2020-12-23 17:11:39
    文章目录 一、分割 fasta 文件 一、分割 fasta 文件 效果:对 fasta 文件进行分割,每个 > 的序列作为一个文件保存,并以 > 后的字符作为文件名。 # -*- coding: utf-8 -*- """ Created on Fri Jul 17 09:00:59 2020...
  • cat *.fa合并fasta文件的坑平常我们在合并fasta文件的时候,常常会使用到一句命令cat *.fa > total.facat *.fasta > total.fasta其实原理就是将所有的.fa或者.fasta文件按顺序输出到标准输出之中,之后使用>...
  • FASTA文件分割

    千次阅读 2019-10-04 20:48:56
    FASTA格式是一种用于记录序列的文本格式,在生信分析中经常会用到.fasta文件中往往储存成千上万条序列,而在某些时候,需要对文件进行分割,如分割成每个序列一个文件,或分割成较小的fasta文件 假如有如下数据: ...
  • 利用Python读取fasta文件并进行一系列操作(上) 概述 语言:python3.8 模块:pysam collections 可选:jupyter 整体思路:将fasta格式的基因原始数据处理为方便读写的txt格式并进行操作 步骤: 获取自己的fasta...
  • 将多个fasta文件置于D:\PyCharm\py_code\test\RC和D:\PyCharm\py_code\test\KS路径中 以下代码保存于D:\PyCharm\py_code\test\MergeFasta.py,运行即可得到AllFasta.fasta 备注:原本fasta的基因名称为NCBI上的...
  • Python分割fasta文件

    2020-11-24 12:04:22
    prefix = value elif op == "-x": X = int(value) elif op == "-h": print("Usage: python3 split_fasta.py -i input.fasta -o prefix -x split_number") print("default prefix = split_") print("default split_...
  • test.fasta> >SOX2> ACGAGGGACGCATCGGACGACTGCAGGACTGTC> ACGAGGGACGCATCGGACGACTGCAGGACTGTC> ACGAGGGACGCATCGGACGACTGCAGGAC> >POU5F1> CGGAAGGTAGTCGTCAGTGCAGCGAGTCCGT> C...
  • 于是决定只挑基因组前十条染色体拿来练习(所以需要从基因组文件里选取序列,尝试自己用python写脚本处理)。python之前因为实在不聪明也就刚学到字典部分,借鉴了网上的一些内容整理了一下,写了几种情况关于利用...
  • fastq格式如下: @HWI-...4 == 1: line_new = line[1:] output_fasta.write('>'+line_new) elif i % 4 == 2: output_fasta.write(line) output_fasta.close() end = time.time() print("used %s s" % str(end - start))
  • I am trying to parse a large fasta file and I am encountering out of memory errors. Some suggestions to improve the data handling would be appreciated. Currently the program correctly prints out the n...
  • 利用Python读取fasta文件并进行一系列操作(二) 概览: 本节目标:通过上一节所输出的txt输出ABO蛋白以及ABO基因的外显子fasta文件 语言: python3.8 模块:biopython ssl 可选:jupyter 整体思路:通过ncbi获取...
  • 我有一个fasta文件(第一个序列在下面提到)与长描述。我需要选择特定的描述字段。当我使用下面的代码时;整个描述进入字符串。from Bio import SeqIOfor record in SeqIO.parse("geneTemp.fasta", "fasta") :id=record...
  • 我们可能想对fasta文件进行计算的一些基本统计数据开始。 到目前为止,已实现了GC%,GC偏斜和滑动(以及可选地重叠)窗口中的唯一kmer计数。 如果人们可以看一下代码并找到使它更快的方法,那可能会很酷。 希望很快...
  • 多行fasta文件分解成单个文件

    千次阅读 2019-11-28 02:14:55
    如果所有样本的fasta文件均在一个多行fasta文件里,如果把每一条序列提取出来? 有两种方法,第一种方法先把序列id提取出来,然后采用grp + for循环的方法: #获得序列的ID grep ">" multiline.fa|sed 's/>//'...
  • M "$mysql_db_name:$mysql_server_name" -p "$user:$password" -g genome_sample.fasta 运行结果: trainingSetCandidates.cds,加入选项ALT_SPLICE,fasta文件是单独运行得到的assembly.fasta文件和Trinity.fasta...
  • 最近用Bio.SeqIO模块进行读取fasta文件到字典中的时候发现一个问题,如果你的fasta文件>开头的那一行header中含有空格的话,该行内容以键存到字典里,这个header会被从第一个空格的地方截断,比如原本的文件是...
  • 我有10个fasta文件(每个文件包含10个样本中每个样本的20个基因序列) . 我想创建20个文件,特定于10个样本的每个基因 . 我按照以下步骤提取 Headers 中带有file_name的基因:pyfasta extract --header --fasta test....
  • 1、需要将下面的fasta文件进行一个整理,将序列单行输出 方法一 f1 = open('test1.fa','r').readlines()#需要整理的文件 f2 = open('2.fasta','w')#整理之后的文件 for i in f1: if i.startswith('>'): ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,110
精华内容 1,644
关键字:

fasta文件