当前位置:   article > 正文

Python 筛选 替换 排序 提取(单个染色体SNP从全基因组提取)_python寻找snp教程

python寻找snp教程
# -*- coding: utf-8 -*-
"""
Created on Wed Nov 28 18:06:39 2018

@author: windows10
"""
import pandas as pd
#from pandas import DataFrame as df

#对ped碱基形式替换为数字形式
f = open('C:\\Users\\windows10\\Desktop\\Python练习\\文本流\\all.ped')
data1 = pd.read_table(f,header = None) #header 默认为第一行
data1.shape  #展示数据框的  行数和列数,如果数据为1,则对sep重新设置进行调节
data1.head()
data11 = data1.iloc[:, 6:]
data11[data11.isnull().values == True]
data11 = data11.replace('A', 1)
data11 = data11.replace('T', 2)
data11 = data11.replace('C', 3)
data11 = data11.replace('G', 4)
print(data11)
data12 = pd.concat([data1.iloc[:, :6],data11],axis = 1)
print(data12)
data12.shape
data12.head(20)


#抽取map第一条染色体多行的SNP位点,并按照位置顺序进行排列
f = open('C:\\Users\\windows10\\Desktop\\Python练习\\文本流\\all.map')
data2 = pd.read_table(f,names=['1', '2', '3', '4']) #header 默认为第一行
data2.shape  #展示数据框的  行数和列数,如果数据为1,则对sep重新设置进行调节
data2.head()
data2.iloc[:,1]  #map文件的首列
data2.iloc[:,1].shape
print(type(data2))
data2.iloc[5,1]  
type(data2.iloc[5,1])   #确定元素类型


data2 = data2.astype('object')   #转化元素类型为object类
print(data2['1'])
data21 = data2[data2['1'] == '8']  #‘1’为字符串,加‘’,选取map文件里的所有2号染色体上的位点
data21.head()
data21.values
data21['1']
data21.index    #查看行索引
data21.columns    #查看列索引
data21.values    #查看数据框的值
data21.dtypes    #查看每列的数据类型
data21['4'].astype('int64')     #转化第四列为数值型,才能排序
data22 = data21.sort_values(by = '4')   #by 后直接跟index
data22.shape
data22.head(500)
list = data22['2']
list = list.tolist()   #将第二列数据(第N条染色体上的SNP name)传递到列表
list

#为ped文件创建col.name
li = []
for j in range(0,68516):    #把SNP位点列表转化为ped的column名
    li.append(data2.iloc[j,1])
    li.append(data2.iloc[j,1])
print(li)
st = ['FMID', 'INID', 'FAID', 'MOID', 'SEX', 'H']  #为ped文件创建前6列 表头
st
lis = st + li  #前6列表头和ped7::个表头合并,创建完整的ped表头
lis[:10]
len(lis)
#修改data12的列名
data12.columns = lis     #为ped文件创建表头
data12.head(20)
data12.shape



#对1号染色体多行的位点从ped 文件中提取
#按照map文件中1号染色体,排好序的SNP,逐个对list中SNP进行提取

data12['WUR10000127']
type(data12['WUR10000127'])
newdf = data12.iloc[:, :6]   #提取ped文件表头
newdf   

for k in list:            #从ped文件里提取第N条染色体上的SNP位点,并组成新的数据框
    newdf = pd.concat([newdf,data12[k]],axis = 1)   #Axis = 1代表逐列合并(按列合并)
newdf.columns
newdf.to_excel("C:\\Users\\windows10\\Desktop\\Python练习\\文本流\\chrom8_ped.xlsx", index = False, header = True)
data22.to_excel("C:\\Users\\windows10\\Desktop\\Python练习\\文本流\\chrom8_map.xlsx", index = False, header = True)



#      流程化操作需要修改的地方,如下:
###   42:  data2['1'] == 
###   87:  newdf.to_exce
###   88:  data22.to_excel
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/202174?site
推荐阅读
相关标签
  

闽ICP备14008679号