aboutsummaryrefslogtreecommitdiff
import gzip
import tempfile
import magic
import io
import sys

path_fasta = sys.argv[1]
format_to_check = sys.argv[2]
path_valid_formats = sys.argv[3]

with tempfile.NamedTemporaryFile() as tmp:
    with open(path_valid_formats, 'rb') as f:
        tmp.write(f.read())
    tmp.flush()

    check_format = magic.Magic(magic_file=tmp.name, uncompress=False, mime=True)

with open(path_fasta, "rb") as f:
    gz = ""
    if path_fasta.endswith(".gz"):
        gz = ".gz"
        f = gzip.GzipFile(fileobj=f, mode='rb')

    f = io.TextIOWrapper(f)

    buffer = f.read(4096)
    seq_type = check_format.from_buffer(buffer).lower()
    f.detach()

    if seq_type != format_to_check:
        raise ValueError(f"Input file ({path_fasta}) does not look like a {format_to_check}")