Source code for domain_insulation_cell
# command time python /gale/ddn/snm3C/humanPFC/code/domain_insulation_cell.py --indir /gale/ddn/snm3C/humanPFC/smoothed_matrix/${res0}b_resolution/ --cell ${sample} --chrom ${c} --mode pad2_std1_rp0.5_sqrtvc --w 10
import h5py
import argparse
import numpy as np
from scipy.sparse import csr_matrix
[docs]
def domain_insulation_cell(indir, cell, chrom, mode, w=10):
if chrom[:3]=='chr':
c = chrom
else:
c = 'chr' + chrom
with h5py.File(f'{indir}{c}/{cell}_{c}_{mode}.hdf5', 'r') as f:
g = f['Matrix']
A = csr_matrix((g['data'][()], g['indices'][()], g['indptr'][()]), g.attrs['shape'])
score = np.ones(A.shape[0])
for i in range(1,A.shape[0]):
if i<w:
intra = (A[:i, :i].sum() + A[i:(i+w), i:(i+w)].sum()) / (i*(i+1)/2 + (w*(w+1)/2))
inter = A[:i, i:(i+w)].sum() / (i * (i+w))
else:
intra = (A[(i-w):i, (i-w):i].sum() + A[i:(i+w), i:(i+w)].sum()) / (w*(w+1))
inter = A[(i-w):i, i:(i+w)].sum() / (w*w)
score[i] = inter / (inter + intra)
np.save(f'{indir}{c}/{cell}_{c}_{mode}.w{w}.ins.npy', score)
return
'''
parser = argparse.ArgumentParser()
parser.add_argument('--indir', type=str, default=None, help='Directory of imputed matrices end with /')
parser.add_argument('--cell', type=str, default=None, help='Full path of a file containing a list of cell identifiers to be concatenate')
parser.add_argument('--chrom', type=str, default=None, help='Chromosome to impute')
parser.add_argument('--mode', type=str, default=None, help='Suffix of imputed matrix file names')
parser.add_argument('--w', type=int, default=10, help='Window size for insulation score')
opt = parser.parse_args()
domain_insulation_cell(opt.indir, opt.cell, opt.chrom, opt.mode, opt.w)
'''