IgFold / model /utils /fasta.py
wuxing0105's picture
Upload folder using huggingface_hub
1fdc49a verified
Raw
History Blame Contribute Delete
934 Bytes
from Bio import SeqIO, pairwise2
def get_fasta_chain_seq(
fasta_file,
chain_id,
):
for chain in SeqIO.parse(fasta_file, 'fasta'):
if ":{}".format(chain_id) in chain.id:
return str(chain.seq)
def get_fasta_chain_dict(fasta_file):
seq_dict = {}
for chain in SeqIO.parse(fasta_file, 'fasta'):
seq_dict[chain.id] = str(chain.seq)
return seq_dict
def pairwise_align(
seq1,
seq2,
):
###
# Aligns two sequences using the Needleman-Wunsch algorithm
# Returns alignment of seq2 into seq1
###
ali = pairwise2.align.globalxx(
seq1,
seq2,
)[0]
ali_list = []
seq1_i, seq2_i = 0, 0
for ali_seq in ali.seqB.split("-"):
if len(ali_seq) == 0:
seq1_i += 1
else:
l = len(ali_seq)
ali_list.append((seq1_i, seq1_i + l, seq2_i, seq2_i + l))
seq1_i += l
return ali_list