Download model/utils/fasta.py from OneScience-Group/IgFold: direct link, hf CLI and curl.
- Browser
- Download file 934 Bytes
-
https://huggingface.co/OneScience-Group/IgFold/resolve/main/model/utils/fasta.py
- Command line
-
hf download hf://OneScience-Group/IgFold/model/utils/fasta.py
-
curl -L -o fasta.py https://huggingface.co/OneScience-Group/IgFold/resolve/main/model/utils/fasta.py
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 |