如何检查给定文件是否为FASTA?

时间:2017-05-31 19:40:03

标签: python user-input

我正在设计一个代码,需要在其中一个早期阶段输入.fasta文件。现在,我正在使用此函数验证输入:

def file_validation(fasta):
    while True:
        try:
            file_name= str(raw_input(fasta))
        except IOError:
            print("Please give the name of the fasta file that exists in the folder!")
            continue

        if not(file_name.endswith(".fasta")):
            print("Please give the name of the file with the .fasta extension!")
        else:
            break
    return file_name

现在,虽然这个函数工作正常,但是在某种意义上仍然存在一些错误的空间,即用户可能输入的文件虽然文件名以.fasta结尾,但可能有一些非.fasta里面的内容。我该怎么做才能防止这种情况并让用户知道他/她的.fasta文件已损坏?

1 个答案:

答案 0 :(得分:5)

为什么不将文件解析为FASTA并查看它是否中断?

使用biopython,通过在非FASTA文件上返回空生成器而无声地失败:

from Bio import SeqIO

my_file = "example.csv"  # Obviously not FASTA

def is_fasta(filename):
    with open(filename, "r") as handle:
        fasta = SeqIO.parse(handle, "fasta")
        return any(fasta)  # False when `fasta` is empty, i.e. wasn't a FASTA file

is_fasta(my_file)
# False