def auto_file(self): pairs = [] p = pd.read_csv(self.pairs_file, sep='\n', header=None, nrows=30) p = '\n'.join(p[0]) if 'path length' in p or 'MAXIMUM GAP' in p: collinearity = base.read_colinearscan(self.pairs_file) pairs = [[v[0], v[2]] for k in collinearity for v in k[1]] elif 'MATCH_SIZE' in p or '## Alignment' in p: collinearity = base.read_mcscanx(self.pairs_file) pairs = [[v[0], v[2]] for k in collinearity for v in k[1]] elif '# Alignment' in p: collinearity = base.read_coliearity(self.pairs_file) pairs = [[v[0], v[2]] for k in collinearity for v in k[1]] elif '###' in p: collinearity = base.read_jcvi(self.pairs_file) pairs = [[v[0], v[2]] for k in collinearity for v in k[1]] elif ',' in p: collinearity = pd.read_csv(self.pairs_file, header=None) pairs = collinearity.values.tolist() else: collinearity = pd.read_csv(self.pairs_file, header=None, sep='\t') pairs = collinearity.values.tolist() df = pd.DataFrame(pairs) df = df.drop_duplicates() df[0] = df[0].astype(str) df[1] = df[1].astype(str) df.index = df[0]+','+df[1] return df
def auto_file(self, gff1, gff2): f=open(self.collinearity) p=' '.join(f.readlines()[0:30]) if 'path length' in p or 'MAXIMUM GAP' in p: collinearity = base.read_colinearscan(self.collinearity) elif 'MATCH_SIZE' in p or '## Alignment' in p: col = base.read_mcscanx(self.collinearity) collinearity = [] for block in col: newblock = [] for k in block[1]: if k[0] not in gff1.index or k[2] not in gff2.index: continue k[1], k[3] = gff1.loc[k[0], 'order'], gff2.loc[k[2], 'order'] newblock.append(k) if len(newblock) == 0: continue collinearity.append([block[0], newblock, block[2]]) elif '# Alignment' in p: collinearity = base.read_collinearity(self.collinearity) elif '###' in p: col = base.read_jcvi(self.collinearity) collinearity = [] for block in col: newblock = [] for k in block[1]: if k[0] not in gff1.index or k[2] not in gff2.index: continue k[1], k[3] = gff1.loc[k[0], 'order'], gff2.loc[k[2], 'order'] newblock.append(k) if len(newblock) == 0: continue collinearity.append([block[0], newblock, block[2]]) return collinearity
def auto_file(self, gff1, gff2): p = pd.read_csv(self.collinearity, sep='\n', header=None, nrows=30) p = '\n'.join(p[0]) if 'path length' in p or 'MAXIMUM GAP' in p: collinearity = base.read_colinearscan(self.collinearity) elif 'MATCH_SIZE' in p or '## Alignment' in p: col = base.read_mcscanx(self.collinearity) collinearity = [] for block in col: newblock = [] for k in block[1]: if k[0] not in gff1.index or k[2] not in gff2.index: continue k[1], k[3] = gff1.loc[k[0], 'order'], gff2.loc[k[2], 'order'] newblock.append(k) if len(newblock) == 0: continue collinearity.append([block[0], newblock, block[2]]) elif '# Alignment' in p: collinearity = base.read_coliearity(self.collinearity) return collinearity