2019-07-24 04:54:02 -07:00
|
|
|
import numpy as np
|
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
|
|
|
|
|
from access_data_rest import update_rest
|
|
|
|
|
|
2019-07-24 04:54:02 -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-07-24 04:54:02 -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-07-24 04:54:02 -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-07-24 04:54:02 -07:00
|
|
|
return smg, sml, indexes
|
|
|
|
|
|
2019-07-24 03:27:54 -07:00
|
|
|
|
|
|
|
|
def load_neighbor_genes():
|
2019-07-24 04:54:02 -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
|
|
|
|
|
|
2019-07-24 04:54:02 -07:00
|
|
|
|
2019-07-24 03:27:54 -07:00
|
|
|
def read_data_homology(dirname):
|
2019-07-24 04:54:02 -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-07-24 04:54:02 -07:00
|
|
|
a_h = []
|
|
|
|
|
d_h = []
|
2019-07-24 03:27:54 -07:00
|
|
|
for x in lf:
|
2019-07-24 04:54:02 -07:00
|
|
|
df, n = read_db_homology(dirname, x)
|
|
|
|
|
n = n.split()[0]
|
2019-07-24 03:27:54 -07:00
|
|
|
try:
|
2019-07-24 04:54:02 -07:00
|
|
|
indexes = np.load("processed/" + n + "_selected_indexes.npy")
|
|
|
|
|
except BaseException:
|
|
|
|
|
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-07-24 04:54:02 -07:00
|
|
|
return a_h, d_h
|
|
|
|
|
|
2019-07-24 03:27:54 -07:00
|
|
|
|
|
|
|
|
def main():
|
2019-07-24 04:54:02 -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-07-24 04:54:02 -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-07-24 04:54:02 -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-07-24 04:54:02 -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-07-24 04:54:02 -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)
|
2019-07-24 03:27:54 -07:00
|
|
|
print("Synteny Matrices Created Successfully :)")
|
|
|
|
|
|
2019-07-24 04:54:02 -07:00
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
2019-07-24 03:27:54 -07:00
|
|
|
main()
|