INNER CODE UNIT · Python
ordered_common_names
MariaNattestad/assemblytics · assemblytics/dotplot.py:28
ordered_common_names = [str(i) for i in range(1, 101)] + \
[f"chr{i}" for i in range(1, 101)] + \
[f"Chr{i}" for i in range(1, 101)] + \
["X", "Y", "M", "MT", "Chr0", "chr0", "0"]
unique_refs = coords['ref'].unique()
all_refs_ordered = [r for r in ordered_common_names if r in unique_refs] + \
[r for r in unique_refs if r not in ordered_common_names]
coords['ref'] = pd.Categorical(coords['ref'], categories=all_refs_ordered, ordered=True)
coords = coords.sort_values('ref')
# Get chromosome lengths and calculate offsets
chr_lengths = coords.groupby('ref', observed=False)['ref_length'].max().reindex(all_refs_ordered).fillna(0)
chr_offsets = chr_lengths.cumsum().shift(1).fillna(0)
def get_ref_loc(chrom, pos):
return chr_offsets[chrom] + pos