Difference between revisions of "2018 Hakyung July Lab note"
From Crop Genomics Lab.
(→리스트 비교하기(차집합,교집합) =) |
|||
Line 99: | Line 99: | ||
else : pass | else : pass | ||
− | == 리스트 비교하기(차집합,교집합) === | + | == 리스트 비교하기(차집합,교집합) == |
+ | import sys | ||
+ | file1 = open(sys.argv[1]).readlines() '''#첫번째 argument는 비교하고자 하는 input file1'' | ||
+ | file2 = open(sys.argv[2]).readlines() '''#두번째 argument는 비교하고자 하는 input file2''' | ||
+ | s1 = set(file1) '''#리스트를 집합으로 만들라''' | ||
+ | s2 = set(file2) | ||
+ | file3 = list(s1&s2) '''#교집합''' | ||
+ | file3.sort() | ||
+ | file4 = list(s1-s2) '''#차집합''' | ||
+ | file4.sort() | ||
+ | file5 = list(s2-s1) | ||
+ | file5.sort() '''#집합으로 교집합, 차집합 등을 사용할 경우 순서가 없기 때문에 엉망이 됨. 다시 sort 해주기''' | ||
+ | if sys.argv[3] == '1' : '''#세번째 argument option이 1일 경우 교집합 print''' | ||
+ | for line in file3: print line, | ||
+ | elif sys.argv[3] == '2' : | ||
+ | for line in file4: print line, | ||
+ | elif sys.argv[3] == '3' : | ||
+ | for line in file5 : print line, |
Revision as of 02:00, 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
리스트 비교하기(차집합,교집합)
import sys file1 = open(sys.argv[1]).readlines() '#첫번째 argument는 비교하고자 하는 input file1 file2 = open(sys.argv[2]).readlines() #두번째 argument는 비교하고자 하는 input file2 s1 = set(file1) #리스트를 집합으로 만들라 s2 = set(file2) file3 = list(s1&s2) #교집합 file3.sort() file4 = list(s1-s2) #차집합 file4.sort() file5 = list(s2-s1) file5.sort() #집합으로 교집합, 차집합 등을 사용할 경우 순서가 없기 때문에 엉망이 됨. 다시 sort 해주기 if sys.argv[3] == '1' : #세번째 argument option이 1일 경우 교집합 print for line in file3: print line, elif sys.argv[3] == '2' : for line in file4: print line, elif sys.argv[3] == '3' : for line in file5 : print line,