龙空技术网

对新冠病毒基因序列并进行python的读取、列表、字典、作图(1)

易三一世 188

前言:

眼前咱们对“数据字典怎么画图”都比较注意,大家都想要分析一些“数据字典怎么画图”的相关内容。那么小编同时在网络上网罗了一些关于“数据字典怎么画图””的相关文章,希望看官们能喜欢,你们快快来了解一下吧!

1.病毒基因序列下载网址:

图1



2. 新冠病毒的命令:

2.1 2019-nCoV

即:2019 novel Coronavirus

被WHO命名为2019新型冠状病毒。

因为2019年12月在武汉首先发现的冠状病毒是一种先前尚未在人类中发现的病毒株系。

2.2 SARS-CoV-2

即:Severe Acute Respiratory Syndrome Coronavirus 2

2020年2月11日,该病毒被国际病毒分类委员会(the International Committee on Taxonomy of Viruses)

冠状病毒研究小组(Coronavirus Study Group,CSG)命名为。

同时,由该病毒感染引起的疾病被WHO命名为“COVID-19”(Corona Virus Disease 2019)。


3.基因组序列发布动态:

图2



4.下载所有基因序列

图3



达到文件:all.fasta

里面包括很多已发表的新冠病毒研究的基因序列

有人可能打不开,没关系,将后缀改为txt即可

all.txt


5.利用python的知识来整理和分析all里面的数据

取一组基因序列来分析

比如:取第一组基因序列:>Wuhan-Hu-1 | MN908947

图4 就是里面很多人上传的许多基因序列,我取第一条


图5



6.为了更好的操作,将>Wuhan-Hu-1 | MN908947这个txt的基因序列命令为2020新冠1.txt便于操作。


7.转换字符串,依次存入列表中,并计算

7.1 代码:

import sys#如何删除列表中的空格和'\n'#price = [x.strip() for x in pricelist if x.strip() != '']ftext='' #先定义一个空的字符串,然后读取txt里面的所有字符串=就是基因序列的碱基l=[]  #先定义一个空的列表l#打开所在文件的路径和目录with open("/home/xgj/Desktop/2019新冠病毒/all(新冠病毒基因序列)/2020新冠1.txt","r") as f:    ftext = f.read()  # 一次性读全部成一个字符串    #ftextlist = f.readlines() # 也是一次性读全部,但每一行作为一个子句存入一个列表    for i in range(len(ftext)):        l.append(ftext[i])        i+=1l = [x.strip() for x in l if x.strip() != ''] #去掉空格和'\n',存入列表l中,格式['A','B','C','D']#print(l) #打印这个整理过的基因列表print('本组基因序列测长度:')print(len(l)) #计算该列表的长度,即总共有多少个碱基c1=l.count('A')  #计算l列表里面碱基A有多少个print('A的碱基总共有:')print(c1)c2=l.count('C')  #计算里面碱基C有多少个print('C的碱基总共有:')print(c2)c3=l.count('T')  #计算里面碱基T有多少个print('T的碱基总共有:')print(c3)c4=l.count('G')  #计算里面碱基G有多少个print('G的碱基总共有:')print(c4)ca=c1+c2+c3+c4  #累计加法看看是不是一样的,等同于len(l)print('本组基因总共有碱基:')print(ca)

7.2 得到相关值

本组基因序列测长度:

29903

A的碱基总共有:

8954

C的碱基总共有:

5492

T的碱基总共有:

9594

G的碱基总共有:

5863

本组基因总共有碱基:

29903


8.matplotlib可视化饼图

8.1 饼状图代码:

from matplotlib import pyplot as plt #导出模块from matplotlib import font_manager # 本机需要中文设置:第一步,导出通用字体设置#本机需要:第二步,引出字体模块和位置my_font = font_manager.FontProperties(fname="/usr/share/fonts/truetype/noto/simsun.ttf")lab = ['A','C', 'T','G'] #labels的缩写sizes = [8954, 5492, 9594, 5863] #设置四大指标的数值explode = (0, 0, 0.1, 0) #设置最大值的突出位置0.1fig1, ax1 = plt.subplots()ax1.pie(sizes,explode=explode,autopct='%1.1f%%',shadow=True,startangle=90) ax1.axis('equal')  #一个axes就相当于一个画图区域 分布在大画布fig上#第三步,增加u和fontproperties=my_fontplt.title(u"2020新冠病毒1基因序列分析之饼状图",fontproperties=my_font) #显示标题#第四步,在括号内增加如legend(prop=my_font) plt.legend(lab,prop=my_font) #修改后,中文显示plt.show() #显示图片

8.2 效果图:

图6



8.3 柱状图代码:

import matplotlib.pyplot as pltfrom matplotlib import font_manager # 本机需要中文设置:第一步,导出通用字体设置#本机需要:第二步,引出字体模块和位置my_font = font_manager.FontProperties(fname="/usr/share/fonts/truetype/noto/simsun.ttf")dic = {'A': 8594, 'C': 5492, 'T': 9594, 'G': 5863}# 对dict 按照value排序 True表示翻转 ,转为了列表形式s = sorted(dic.items(), key=lambda x: x[1], reverse=False)  x_x = []y_y = []for i in s:    x_x.append(i[0])    y_y.append(i[1])x = x_xy = y_yfig, ax = plt.subplots()#条状的颜色设置#ax.barh(x, y, color="deepskyblue")  #单一的柱条的颜色就是deepskyblue#color=['b','r','g','y','c','m','y','k','c','g','b']  #假如有11组数据,依次给予指定颜色#b=blue,r=red,g=green,y=yellow.ax.barh(x, y, color=['c','m','g','y'])for a, b in zip(x, y):    plt.text(b+1, a, b, ha='center', va='center')#第三步,增加u和fontproperties=my_fontplt.ylabel(u'碱基',fontproperties=my_font)plt.xlabel(u'数量',fontproperties=my_font)plt.rcParams['figure.figsize'] = (15.0, 8.0)  # 尺寸plt.title(u"2020新冠1全组基因序列的碱基分析之柱状图",fontproperties=my_font)#plt.savefig('result.png') #图片保存和路径目录是默认,名字可自定义plt.show()

8.4 效果图

图7



9.一步到位法:

python的相关操作:

包括:从txt中读取字符串,存入列表中,统计计算个数,依次存入字典中,并matplotlib作图

总代码:

import sysimport matplotlib.pyplot as pltfrom matplotlib import font_manager # 本机需要中文设置:第一步,导出通用字体设置#本机需要:第二步,引出字体模块和位置my_font = font_manager.FontProperties(fname="/usr/share/fonts/truetype/noto/simsun.ttf")ftext='' #先定义一个空的字符串,然后读取txt里面的所有字符串=就是基因序列的碱基l=[]  #先定义一个空的列表l#打开所在文件的路径和目录with open("/home/xgj/Desktop/2019新冠病毒/all(新冠病毒基因序列)/2020新冠1.txt","r") as f:    ftext = f.read()  # 一次性读全部成一个字符串    #ftextlist = f.readlines() # 也是一次性读全部,但每一行作为一个子句存入一个列表    for i in range(len(ftext)):        l.append(ftext[i])        i+=1l = [x.strip() for x in l if x.strip() != ''] #去掉空格和'\n',存入列表l中,格式['A','B','C','D']#print(l) #打印这个整理过的基因列表#print(len(l)) #计算该列表的长度,即总共有多少个碱基c1=l.count('A')  #计算l列表里面碱基A有多少个c2=l.count('C')  #计算里面碱基C有多少个c3=l.count('T')  #计算里面碱基T有多少个c4=l.count('G')  #计算里面碱基G有多少个ca=c1+c2+c3+c4  #累计加法看看是不是一样的,等同于len(l)#print('本组基因总共有碱基:')#print(ca)#定义一个dic的空字典dic={}#依次将数据存入字典中dic.update(A=c1)dic.update(C=c2)dic.update(T=c3)dic.update(G=c4)print(dic)    #dic = {'A': 8594, 'C': 5492, 'T': 9594, 'G': 5863}  #这个是手工录入的# 对dict 按照value排序 True表示翻转 ,转为了列表形式s = sorted(dic.items(), key=lambda x: x[1], reverse=False)  x_x = []y_y = []for i in s:    x_x.append(i[0])    y_y.append(i[1])x = x_xy = y_yfig, ax = plt.subplots()#条状的颜色设置#ax.barh(x, y, color="deepskyblue")  #单一的柱条的颜色就是deepskyblue#color=['b','r','g','y','c','m','y','k','c','g','b']  #假如有11组数据,依次给予指定颜色#b=blue,r=red,g=green,y=yellow.ax.barh(x, y, color=['c','m','g','y'])for a, b in zip(x, y):    plt.text(b+1, a, b, ha='center', va='center')#第三步,增加u和fontproperties=my_fontplt.ylabel(u'碱基',fontproperties=my_font)plt.xlabel(u'数量',fontproperties=my_font)plt.rcParams['figure.figsize'] = (15.0, 8.0)  # 尺寸plt.title(u"2020新冠1全组基因序列的碱基分析之柱状图",fontproperties=my_font)#plt.savefig('result.png') #图片保存和路径目录是默认,名字可自定义plt.show()

注意中文字体的设置,路径和目录,个人定义。

注意txt文件的存放位置,个人定义。

当然,对于那么多的基因数据,还可以进行其他的很多分析和可视化作图,甚至更高级别的,暂时不说了。

从基因序列的数据实例中,复习python的相关知识,很有意义。

标签: #数据字典怎么画图