2022 장윤성_학부하계연구생.pdf

Topic


What is mutclust?


Find mutation


프로젝트를 시작할때 받아온 데이터가 전처리가 어느정도 되어 있어서 fastq나 fasta parsing을 하지 않아도 됐다.

아래 데이터 처럼 변이가 있는 경우에는 position 오른쪽에 어떤 변이가 일어났는지에 대한 정보가 나와있었기 때문에 전처리 하는 과정이 오래걸리지는 않았다.

그리고 B.1.620처럼 covid 변이 종류를 나타내는 정보도 있었기 때문에 변이 별로 데이터를 정리 할 수도 있었다.

Cusomer ID,,COV_SCO_074
LINEAGE,,B.1.620
REF_base,REF_position,CR_21_01129_CV_CV
A,1,
T,2,
T,3,
...
A,22,
G,23,
G,24,T
...

아래 코드를 통해서 위에 있는 데이터를 mutclust를 돌리기 위해 입력파일 format으로 수정하는 코드를 작성했다. 종종 변이가 들어가있는 column에 None이 들어가있는 경우가 있었기 때문에 isna함수를 사용해서 예외처리를 진행해주었다.

header = 'Position' + '\\t' + 'Frequency' + '\\t' + 'Percentages'+ '\\t' + 'Entropy'+'\\n'
for file in path:
    index = file.split('.')
    name = index[0].replace('-','_')
    data = pd.read_csv(init+file)
    filename = data[name][0]
    table[filename] = table.get(filename, 0) + 1
    for i in range(2,len(data)):
        if pd.isna(data[name][i]) is False: # and filename == kind[10]
            if file not in scoreTable.keys():
                print(file)
                pass
            else:
                frequency[scoreTable[file]][int(data['Unnamed: 1'][i])]+=1

    f = open("/data3/projects/2020_MUTCLUST/data/covid/newsscore/score_type"+str(i+1)+".txt", "w")
    f.write(header)
    for k in range(1,len(frequency[i])):
        insert = str(k)+'\\t'+str(frequency[i][k])+'\\t'+str(frequency[i][k]/(len(data)-2)*100) + '\\t'+str(0)+'\\n'
        f.write(insert)
    f.close()