@@ -26,16 +26,22 @@ def _pair_msas(
2626 interaction_map : Optional [Union [str , Mapping [str , Iterable [str ]]]] = None ,
2727 enforce_ref_match : bool = False
2828) -> PairedMSA :
29- return (
30- PairedMSA .from_msa (
29+ try :
30+ paired_msa = PairedMSA .from_msa (
3131 msa1 ,
3232 msa2 ,
3333 blocked = blocked ,
3434 interaction_map = interaction_map ,
3535 enforce_ref_match = enforce_ref_match ,
3636 )
37- .filter_by_gap_fraction (max_gap_fraction )
38- )
37+ except AttributeError as e : # no pairs!
38+ print_err (f"[WARN] Skipping pair," , e )
39+ return None
40+ else :
41+ return (
42+ paired_msa
43+ .filter_by_gap_fraction (max_gap_fraction )
44+ )
3945
4046
4147def _calculate_interaction_blocks (
@@ -173,6 +179,8 @@ def run(
173179 interaction_map = interaction_map ,
174180 enforce_ref_match = enforce_ref_match ,
175181 )
182+ if paired_msa is None : # failure
183+ return None , None , None
176184 print_err ("[INFO] Generated" , paired_msa )
177185 neff = paired_msa .neff ()
178186
@@ -185,7 +193,7 @@ def run(
185193 chunksize = chunksize ,
186194 use_sequences = self .use_sequences ,
187195 use_id = self .use_id ,
188- ** kwargs
196+ ** kwargs ,
189197 )
190198 result_interaction = results [:paired_msa .chain_a_length , paired_msa .chain_a_length :]
191199 scores = score_contact_map (result_interaction )
0 commit comments