| 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 |