Skip to content

Commit ebda113

Browse files
authored
Merge pull request #11 from LouisCarrelB/patch
fix: bug (>)
2 parents 3b0db29 + f649491 commit ebda113

1 file changed

Lines changed: 25 additions & 20 deletions

File tree

thoraxe/subexons/alignment.py

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1124,26 +1124,31 @@ def cluster_subexon_blocks(blocks, margin=2):
11241124

11251125

11261126
def _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

11491154
def problematic_block_clusters(

0 commit comments

Comments
 (0)