INNER CODE UNIT · Python
chain_cut
hillerlab/TOGA · CESAR_wrapper.py:589
def chain_cut(chain_str, gene_range, gene_flank, extra_flank=0):
"""Call chain_cut binary.
Project reference gene coordinates to query through a chain.
Also add flanks if shift is > 0.
"""
# need to get genomic region for the gene
# also need to translate python data types to C
# to call the shared library; I do it 2 times here
# for shift = 0 and shifts = 2 (add flanks around gene)
c_chain = ctypes.c_char_p(chain_str.encode())
c_shift_2 = ctypes.c_int(2)
c_shift_0 = ctypes.c_int(0)
granges_num = 1
c_granges_num = ctypes.c_int(granges_num) # we need only one grange to analyze
granges_arr = (ctypes.c_char_p * (granges_num + 1))() # granges_num + 1
granges_bytes = [gene_range.encode("utf-8")]
# need to do this tricks to pass strings array to C