Difference between revisions of "2018 Hakyung July Lab note"
From Crop Genomics Lab.
(→원하는 리스트 뽑기) |
|||
Line 98: | Line 98: | ||
else : pass | else : pass | ||
else : pass | else : pass | ||
+ | |||
+ | == 리스트 비교하기(차집합,교집합) === |
Revision as of 01:58, 24 July 2018
HT-seq, edgeR 처리 후 한 파일에 리스트 형태로 저장
file = open ("/data2/haggui/RNA/edgeR/raw_edgeR/control.counts.edgeR","r") lines = file.readlines() list = [] for line in lines : gene_name = line.split('"')[1] #"gene name" 으로 되어 있는 것 가져오기 dic = [0,0,0,0,0] dic[0] = (gene_name) #dic = [genename,0,0,0,0] Cfile = open("/data2/haggui/RNA/edgeR/DEG_edgeR/DEG_control.txt","r") #control 상태에서의 DEG 정보 Clines = Cfile.readlines() for Cline in Clines : Cgene_name = Cline.split('"')[1] ClogFC = float(Cline.split(' ')[1]) #logFC value if Cgene_name == gene_name : if ClogFC < -1 : dic[1] = dic[1]+1 # SS2-2 > TG 이면 1 elif ClogFC > 1 : dic[1] = dic[1]+2 # TG < SS2-2 이면 2, dic = [genename,2,0,0,0] else : pass else : pass Cfile.close() Sfile = open("/data2/haggui/RNA/edgeR/DEG_edgeR/DEG_SS2-2.txt","r") #SS2-2가 drought 때 어떻게 변하는지 Slines = Sfile.readlines() for Sline in Slines : Sgene_name = Sline.split('"')[1] SlogFC = float(Sline.split(' ')[1]) if Sgene_name == gene_name : if SlogFC > 1 : dic[2] = dic[2]+1 #up-regulation이면 1 elif SlogFC < -1 : dic[2] = dic[2]+2 #down-regulation이면 2, dic = [genename,2,2,0,0] else : pass else : pass Sfile.close() Tfile = open("/data2/haggui/RNA/edgeR/DEG_edgeR/DEG_TG.txt","r") #태광의 변화 Tlines = Tfile.readlines() for Tline in Tlines : Tgene_name = Tline.split('"')[1] TlogFC = float(Tline.split(' ')[1]) if Tgene_name == gene_name : if TlogFC > 1 : #up-regulation이면 1 dic[3] = dic[3]+1 elif TlogFC < -1 : #down-regulation이면 2, dic = [genename,2,2,2,0] dic[3] = dic[3]+2 else : pass else : pass Tfile.close() Dfile = open("/data2/haggui/RNA/edgeR/DEG_edgeR/DEG_drought.txt","r") #drought상태에서의 expression level Dlines = Dfile.readlines() for Dline in Dlines : Dgene_name = Dline.split('"')[1] DlogFC = float(Dline.split(' ')[1]) if Dgene_name == gene_name : if DlogFC < -1 : #SS2-2 > TG 이면 1 dic[4] = dic[4]+1 elif DlogFC > 1: #TG > SS2-2 이면 2, dic = [genename,2,2,2,2] dic[4] = dic[4]+2 else : pass else : pass Dfile.close() list.append(dic) #list =[[genename,0,0,1,0],[genename2,0,1,1,0] ...] f = open('exp_list.txt','w') import pickle # 어떤 형태로든 저장해줌, 원래는 새 파일에 쓰면 무조건 string 형태, (리스트 모양의 스트링), 하지만 피클을 사용하면 리스트를 리스트로 저장할 수 있다. pickle.dump(list,f) #리스트를 f변수로 저장된 파일에 써라 f.close()
원하는 리스트 뽑기
file = open('exp_list.txt','r') import pickle #파일 사용할 때도 pickle 모듈 불러와줘야함 list = pickle.load(file) import sys # python에서 argument 사용할 때. (command 라인으로 input 바로 받아줌) a = int(sys.argv[1]) #첫번째 argument b = int(sys.argv[2]) c = int(sys.argv[3]) d = int(sys.argv[4]) for gene in list : #gene = [genename,0,1,0,1] if a == gene[1] or a == 9: #control 상에서 exp level 상태가 첫번째 argument와 같거나, 무시하라는 input을 받았을 때(9) if b == gene[2] or b == 9 : #SS2-2의 변화가 두번째 argument와 같거나, 무시하라는 input을 받았을 때 if c == gene[3] or c == 9: if d == gene[4] or d == 9: print (gene[0]) #genename을 print하라 elif c == 3 and (gene[3] == 1 or gene[3] == 2) : if d == gene[4] or d == 9: print (gene[0]) else : pass else : pass elif b == 3 and (gene[2] == 1 or gene[2] == 2) : if c == gene[3] or c == 9: if d == gene[4] or d == 9: print (gene[0]) elif c == 3 and ( gene[3] == 1 or gene[3] == 2) : if d == gene[4] or d == 9: print (gene[0]) else : pass else : pass else : pass else : pass