def process(): """ process는 아래와 같이 3개의 tuple를 반환한다 (pro, d_list, dnum_list) 이들은 각각 아래와 같은 의미를 가진다 pro : 순서별로 몇개의 아미노산 종류가 있는지, 그것이 어느 것에는 어떤 것이 있는지 확인 ([[["M", "K"], {각각에 대한 딕셔너리}].. ]) + 또한 대상은 중복되지 않는다 (set과 같은 list라 생각하자) d_list : 하나의 위치에 2개 이상의 아미노산을 가지는 대상들의 번호 dnum_list : d_list에서 가장 적은 개수를 가지는 아미노산의 개수 (몇개의 대상에서 mutaion이 일어났는지 확인) """ from datas import data_list data = data_list() data = list(map(lambda t: t[0], data)) # 단순 단백질 서열 list로 변경 len_data = len(data[0]) # data의 모든 길이는 같다 pro = list() for q in range(len_data): data_set = list() data_dict = dict() for ind, val in enumerate(data): tar = str(val[q]) if tar not in data_set: data_dict[tar] = [] data_set.append(tar) data_dict[tar].append(ind) pro.append([data_set, data_dict]) dt_list = list() dtnum_list = list() for ind, val in enumerate(pro): if len(val[0]) != 1: dt_list.append(ind) dtnum_list.append( len(data) - max(map(lambda t: len(t), val[1].values()))) # 5/12 수정 (최소가 아닌 최대의 나머지 개수) return pro, dt_list, dtnum_list
import pickle from datas import data_list from compro import process with open("data/saved/data_list.pickle", "wb") as f: pickle.dump(data_list(), f) with open("data/saved/process.pickle", "wb") as f: pickle.dump(process(), f)
from tensorflow.keras import models from tensorflow.keras import layers from compro import process from datas import blosum62 as blo62 from datas import data_list from datas import nums import matplotlib.pyplot as plt import numpy as np from random import shuffle pros = process() data = data_list() pro = pros[0] # pros 구조 # (pro, d_list, dnum_list) # pro : 순서별로 몇개의 아미노산 종류가 있는지, 그것이 어느 것에는 어떤 것이 있는지 확인 ([[["M", "K"], {각각에 대한 딕셔너리}].. ]) # d_list : 하나의 위치에 2개 이상의 아미노산을 가지는 대상들의 번호 # dnum_list : d_list에서 가장 적은 개수를 가지는 아미노산의 개수 (몇개의 대상에서 mutaion이 일어났는지 확인) # data_list는 아래와 같이 반환한다. # [[Seq 단백질 서열, [종 이름, kcat, Kc, Sc/o, Eff., type (A or B), EMBL code], index].. ] # 원하는 값에 대해서 최대 최소 찾기 tar = 4 # 1 : kcat, 2 : Kc, 3 : Sc/o, 4 : Eff. data.sort(key=lambda t: -t[1][tar]) # data = data[1:] shuffle(data) loc_list = [ 9, 14, 31, 86, 95, 97, 99, 142, 145, 149, 183, 189, 251, 255, 256, 262, 281, 328, 439, 449