@@ -1124,26 +1124,31 @@ def cluster_subexon_blocks(blocks, margin=2):
11241124
11251125
11261126def _merge_block_clusters (clusters , columns ):
1127- """
1128- Merge cluster sharing columns, return the list of clusters.
1129- """
1130- n_clusters = len (clusters )
1131- to_delete = set ([])
1132- for actual_cluster in range (1 , n_clusters ):
1133- cols = set (columns [actual_cluster ])
1134- for previous_cluster in range (actual_cluster ):
1135- prev_cols = columns [previous_cluster ]
1136- if previous_cluster not in to_delete :
1137- if cols .intersection (prev_cols ):
1138- clusters [previous_cluster ].extend (clusters [actual_cluster ])
1139- columns [previous_cluster ] = range (
1140- max (0 , min (cols , prev_cols .start )),
1141- max (cols , prev_cols .stop ))
1142- to_delete .update ([actual_cluster ])
1143- break
1144- return [
1145- clus for (index , clus ) in enumerate (clusters ) if index not in to_delete
1146- ]
1127+ """
1128+ Merge cluster sharing columns, return the list of clusters.
1129+ """
1130+ n_clusters = len (clusters )
1131+ to_delete = set ([])
1132+ for actual_cluster in range (1 , n_clusters ):
1133+ cols = set (columns [actual_cluster ])
1134+ for previous_cluster in range (actual_cluster ):
1135+ prev_cols = columns [previous_cluster ]
1136+ prev_start = min (prev_cols .start ) if isinstance (prev_cols .start , set ) else prev_cols .start
1137+ prev_stop = max (prev_cols .stop ) if isinstance (prev_cols .stop , set ) else prev_cols .stop
1138+ if previous_cluster not in to_delete :
1139+ if cols .intersection (prev_cols ):
1140+ clusters [previous_cluster ].extend (clusters [actual_cluster ])
1141+ min_col = min (cols )
1142+ max_col = max (cols )
1143+ columns [previous_cluster ] = range (
1144+ max (0 , min (min_col , prev_start )),
1145+ max (max_col , prev_stop )
1146+ )
1147+ to_delete .update ([actual_cluster ])
1148+ break
1149+ return [
1150+ clus for (index , clus ) in enumerate (clusters ) if index not in to_delete
1151+ ]
11471152
11481153
11491154def problematic_block_clusters (
0 commit comments