compara-deep-learning/prepare_synteny_matrix.py

91 lines
3 KiB
Python
Raw Normal View History

2019-08-11 22:56:13 -07:00
import numpy as np
import pandas as pd
2019-07-24 03:27:54 -07:00
import json
import os
import sys
import pickle
from select_data import read_db_homology
from threads import Procerssrunner
from read_get_gene_seq import read_gene_sequences
2019-08-11 22:56:13 -07:00
from access_data_rest import update_rest,update_rest_protein
from process_negative import write_fasta
2019-07-24 03:27:54 -07:00
2019-08-11 22:56:13 -07:00
def read_data_synteny(nop,name):
smg=[]
sml=[]
indexes=[]
2019-07-24 03:27:54 -07:00
for i in range(nop):
try:
2019-08-11 22:56:13 -07:00
with open("temp_"+name+"/thread_"+str(i+1)+"_smg.temp","rb") as file:
smg=smg+pickle.load(file)
with open("temp_"+name+"/thread_"+str(i+1)+"_sml.temp","rb") as file:
sml=sml+pickle.load(file)
with open("temp_"+name+"/thread_"+str(i+1)+"_indexes.temp","rb") as file:
indexes=indexes+pickle.load(file)
2019-07-24 03:27:54 -07:00
except Exception as e:
2019-08-11 22:56:13 -07:00
print("Problem with thread",i+1,"detected for",name,e)
2019-07-24 03:27:54 -07:00
continue
print(len(indexes))
2019-08-11 22:56:13 -07:00
return smg,sml,indexes
2019-07-24 03:27:54 -07:00
def load_neighbor_genes():
2019-08-11 22:56:13 -07:00
with open("processed/neighbor_genes.json","r") as file:
lsy=dict(json.load(file))
2019-07-24 03:27:54 -07:00
print(len(lsy))
print("Neighbor Genes Loaded")
return lsy
def read_data_homology(dirname):
2019-08-11 22:56:13 -07:00
lf=os.listdir(dirname)
if len(lf)==0:
2019-07-24 03:27:54 -07:00
print("No Files in the Directory!!!!!!!")
sys.exit(1)
2019-08-11 22:56:13 -07:00
a_h=[]
d_h=[]
2019-07-24 03:27:54 -07:00
for x in lf:
2019-08-11 22:56:13 -07:00
df,n=read_db_homology(dirname,x)
n=n.split()[0]
2019-07-24 03:27:54 -07:00
try:
2019-08-11 22:56:13 -07:00
indexes=np.load("processed/"+n+"_selected_indexes.npy")
except:
print("Incomplete data for:",n)
df=df.loc[indexes]
2019-07-24 03:27:54 -07:00
a_h.append(df)
d_h.append(n)
2019-08-11 22:56:13 -07:00
return a_h,d_h
2019-07-24 03:27:54 -07:00
def main():
2019-08-11 22:56:13 -07:00
arg=sys.argv
nop=int(arg[-1])
n=3
a_h,d_h=read_data_homology("data_homology")
2019-07-24 03:27:54 -07:00
print("Data Read")
2019-08-11 22:56:13 -07:00
lsy=load_neighbor_genes()
gene_sequences=read_gene_sequences(a_h,lsy,"geneseq","gene_seq_positive")
gene_sequences=update_rest(gene_sequences,"gene_seq_positive")
2019-07-24 03:27:54 -07:00
print("Gene Sequences Loaded.")
if not os.path.isdir("processed/synteny_matrices"):
os.mkdir("processed/synteny_matrices")
2019-08-11 22:56:13 -07:00
ndir="processed/synteny_matrices/"
nf1="synteny_matrices_global"
nf2="synteny_matrices_local"
nf3="indexes"
2019-07-24 03:27:54 -07:00
for i in range(len(a_h)):
2019-08-11 22:56:13 -07:00
df=a_h[i]
part=len(df)//nop
pr=Procerssrunner()
pr.start_processes(nop,df,gene_sequences,lsy,part,n,d_h[i])
smg,sml,indexes=read_data_synteny(nop,d_h[i])
2019-07-24 03:27:54 -07:00
print(len(indexes))
2019-08-11 22:56:13 -07:00
np.save(ndir+str(d_h[i])+"_"+nf1,smg)
np.save(ndir+str(d_h[i])+"_"+nf2,sml)
np.save(ndir+str(d_h[i])+"_"+nf3,indexes)
a_h[i]=df.loc[indexes]
print("Synteny Matrices Created Successfully :)")
protein_sequences=read_gene_sequences(a_h,lsy,"pro_seq","pro_seq_positive")
protein_sequences=update_rest_protein(protein_sequences,"pro_seq_positive")
write_fasta(protein_sequences,"protein_seq_positive")
print("Protein Sequences Loaded.")
if __name__=="__main__":
2019-07-24 03:27:54 -07:00
main()