mirror of
https://github.com/Priyatham-sai-chand/compara-deep-learning.git
synced 2026-10-05 08:11:34 -07:00
99 lines
4.1 KiB
Python
99 lines
4.1 KiB
Python
|
|
import pandas as pd
|
||
|
|
import numpy as np
|
||
|
|
def create_branch_length_padding(bl):
|
||
|
|
maxlen=0
|
||
|
|
for x in bl:
|
||
|
|
if len(x)>maxlen:
|
||
|
|
maxlen=len(x)
|
||
|
|
|
||
|
|
for x in bl:
|
||
|
|
for i in range(len(x),maxlen):
|
||
|
|
x.append(0)
|
||
|
|
|
||
|
|
def train_data(indexes,synteny_matrices_global,synteny_matrices_local,df,branch_length_species,branch_length_homology_species,distance,dist_p_s,dist_p_hs,gene_sequences):
|
||
|
|
"""
|
||
|
|
homology_type_counts=dict(df.homology_type.value_counts())
|
||
|
|
homology_species_counts=dict(df.homology_species.value_counts())
|
||
|
|
|
||
|
|
#limits for each species and homology type in the trainig data so that the dataset is balanced
|
||
|
|
max_species_count=10000
|
||
|
|
max_homology_type_count=25000
|
||
|
|
for species in homology_species_counts:
|
||
|
|
homology_species_counts[species]=0
|
||
|
|
|
||
|
|
for homology_type in homology_type_counts:
|
||
|
|
homology_type_counts[homology_type]=0
|
||
|
|
"""
|
||
|
|
labels=dict(ortholog_one2one=0,other_paralog=1,ortholog_one2many=2,ortholog_many2many=3,within_species_paralog=4)
|
||
|
|
|
||
|
|
train_data_dataframe=pd.DataFrame()
|
||
|
|
train_labels=[]
|
||
|
|
train_indexes=[]
|
||
|
|
train_mean_gene_length=[]
|
||
|
|
for i in range(len(indexes)):
|
||
|
|
row=df.loc[indexes[i]]
|
||
|
|
if row["homology_type"]=="within_species_paralog":
|
||
|
|
continue
|
||
|
|
train_data_dataframe=train_data_dataframe.append(row)
|
||
|
|
train_indexes.append(i)
|
||
|
|
train_labels.append(labels[row["homology_type"]])
|
||
|
|
train_mean_gene_length.append((len(gene_sequences[row["gene_stable_id"]])+len(gene_sequences[row["homology_gene_stable_id"]]))/2)
|
||
|
|
|
||
|
|
train_synteny_matrices_global=synteny_matrices_global[train_indexes]
|
||
|
|
train_synteny_matrices_local=synteny_matrices_local[train_indexes]
|
||
|
|
train_distance=distance[train_indexes]
|
||
|
|
train_dist_p_s=dist_p_s[train_indexes]
|
||
|
|
train_dist_p_hs=dist_p_hs[train_indexes]
|
||
|
|
train_branch_length_species=branch_length_species[train_indexes]
|
||
|
|
train_branch_length_homology_species=branch_length_homology_species[train_indexes]
|
||
|
|
|
||
|
|
create_branch_length_padding(train_branch_length_species)
|
||
|
|
train_branch_length_species=np.array(train_branch_length_species)
|
||
|
|
create_branch_length_padding(train_branch_length_homology_species)
|
||
|
|
train_branch_length_homology_species=np.array(train_branch_length_homology_species)
|
||
|
|
|
||
|
|
#renormalize the train_mean_gene_length by (x-mean)/std
|
||
|
|
train_mean_gene_length=(train_mean_gene_length-np.mean(train_mean_gene_length))/np.std(train_mean_gene_length)
|
||
|
|
|
||
|
|
#create a random array of permutations to shuffle the indices
|
||
|
|
shi=np.random.permutation(len(train_labels))
|
||
|
|
|
||
|
|
train_branch_length_species=train_branch_length_species[shi]
|
||
|
|
print(train_branch_length_species.shape)
|
||
|
|
|
||
|
|
train_branch_length_homology_species=train_branch_length_homology_species[shi]
|
||
|
|
print(train_branch_length_homology_species.shape)
|
||
|
|
|
||
|
|
train_dist_p_s=np.array(train_dist_p_s)
|
||
|
|
train_dist_p_s=train_dist_p_s[shi]
|
||
|
|
print(train_dist_p_s.shape)
|
||
|
|
|
||
|
|
train_dist_p_hs=np.array(train_dist_p_hs)
|
||
|
|
train_dist_p_hs=train_dist_p_hs[shi]
|
||
|
|
print(train_dist_p_hs.shape)
|
||
|
|
|
||
|
|
train_synteny_matrices_global=train_synteny_matrices_global[shi]
|
||
|
|
print(train_synteny_matrices_global.shape)
|
||
|
|
|
||
|
|
train_synteny_matrices_local=train_synteny_matrices_local[shi]
|
||
|
|
print(train_synteny_matrices_local.shape)
|
||
|
|
|
||
|
|
train_indexes=np.array(train_indexes)
|
||
|
|
train_indexes=train_indexes[shi]
|
||
|
|
print(train_indexes.shape)
|
||
|
|
|
||
|
|
train_labels=np.array(train_labels)
|
||
|
|
train_labels=train_labels[shi]
|
||
|
|
print(train_labels.shape)
|
||
|
|
|
||
|
|
train_mean_gene_length=np.array(train_mean_gene_length)
|
||
|
|
train_mean_gene_length=train_mean_gene_length[shi]
|
||
|
|
print(train_mean_gene_length.shape)
|
||
|
|
|
||
|
|
train_distance=np.array(train_distance)
|
||
|
|
train_distance=train_distance[shi]
|
||
|
|
train_distance=(train_distance-np.mean(train_distance))/np.std(train_distance)
|
||
|
|
train_distance.shape
|
||
|
|
|
||
|
|
return train_synteny_matrices_global,train_synteny_matrices_local,train_branch_length_species,train_branch_length_homology_species,train_mean_gene_length,train_dist_p_s,train_dist_p_hs,train_distance,train_labels
|