# -*- coding: utf-8 -*-
# @Time : 2021/5/17
# @Author : Henrette_L
import os
import pandas as pd
path = input("请输入文件所在路径:")
# path = '/Users/数据分析/Henriette/data/'
file_list = os.listdir(path)
file_list.remove('.DS_Store')
for i in file_list:
df = pd.read_table(path + i, compression='gzip', header=0, sep="\t")
col_list = df.columns.to_list()
res_df = pd.DataFrame(columns=col_list)
for i in file_list:
file_name = i
print(file_name)
df = pd.read_table(path + file_name, compression='gzip', header=0, sep="\t")
main = df.loc[:, 'REF':"L9"] # 需要计算区域
index_list = df.index.to_list() # 行索引列表
col_list = df.columns.to_list()
# print(col_list)
"""计算四列数据"""
ref_number_list = []
alt_number_list = []
# 低频位点比例
res1 = []
# 正常位点比例
res2 = []
for i in index_list[:]:
REF = df.loc[i]['REF']
ALT = df.loc[i]['ALT']
col_data = df.loc[i]["REF":"L9"].values.tolist()
num = pd.value_counts(col_data)
try:
ref_number = num[REF * 2]
except:
ref_number = 0
try:
alt_number = num[ALT * 2]
except:
alt_number = 0
ref_number_list.append(ref_number)
alt_number_list.append(alt_number)
# print(ref_number, alt_number)
# 低频位点
num1 = min(ref_number, alt_number) / (ref_number + alt_number)
res1.append(num1)
# 正常位点
num2 = (ref_number + alt_number) / (len(col_data) - 2)
res2.append(num2)
df['ref_number'] = ref_number_list
df['alt_number'] = alt_number_list
df['低频位点比例'] = res1
df['正常位点比例'] = res2
# 筛选低频位点比例 >0.05 的
res = df[df['低频位点比例'] > 0.05]
# print(res)
res_df = pd.merge(res_df, res, how='outer')
res_df.to_csv('result.csv', index=None, encoding='utf_8_sig')
频率计算及筛选.py
最新推荐文章于 2022-03-25 13:35:44 发布