一、学完Python可以做些什么
Python的特点是优雅简单,易学易用(虽然我感觉还是有一些概念不容易理解),Python的哲学是尽量用最少的,最简单易懂的代码实现需要的功能。Python适宜于开发网络应用,脚本写作,日常简单小工具等等。Python的缺点是效率较低,但是在大量的场合效率却不是那么重要或者说Python不是其性能瓶颈,所以不要太在意。其次是2.x-3.x的过渡使得许多3.x还缺少很多2.x下的模块,不过也在完善中。其次就是源代码无法加密,发布Python程序其实就是发布源代码。
二、学习Python,怎么越来越没有感觉了
是不是没有刚开始学习的认真劲了,觉得越来越没意思了,这说明,你学习Python一方面是缺乏动力了,另一方面是学的不深入了,一方面原因可能是你遇到困难退缩了,另一方面原因可能是你缺乏实践,眼高手低造成的,无论哪一种原因,归根结底都是因为自控能力弱,懒惰造成的,所以你需要有人监督学习,如果你还想学习Python的话,想要摆脱这种困境,最好的办法是报班学习!
三、软件开发如何开始学习
可以先学习计算机基础、网络基础,这些先基本了解一下,然后选择一个编程技术方向,现在热门的编程岗位就是Web前端、Java,如果是为了就业可以考虑这两个技术方向,如果是对编程感兴趣,可以学Python,语法简单,可以迅速做一些小项目。
编程就是我们为了完成某项任务, 将解决问题的步骤, 用计算机能够理解的语言写成指令, 这就是编程. 而后, 计算机会根据这些指令一步步执行, 最后完成任务.
编程语言有很多种,只需要精通一门编程语言或者说一个技术方向就可以了,可以结合自身,选择一门自己喜欢并合适自己的。
HTML5+JS(web前端开发)
什么是前端?在网站上看到的一切图片、文字、视频、都是前端写的。
目前web前端开发还是热门编程方向,这门语言对于零基础的学员来说学起来难度不大。
Java
java仍然是市场上最流行和最火爆的编程语言,常常跟企业联系在一起, 因为具备一些很好的语言特性, 以及丰富的框架, 在企业应用中最被青睐。
Python
Python是动态形的灵活的解释性语言,从软件开发到Web开发,Python都有在被使用,因为他的解释性,适合轻量级开发,Python是很多新手会选择的编程语言。
C语言
C语言,语法较多,时间相对还是比较多的,所以也可以考虑从C语言入手,因为打好编程基础,以后再学其他语言会很快上手。如果是快速就业,不太适合C语言
四、如何用Python绘制Circos图
用Python实现Circos图的绘制在线绘制的Circos有一定局限性,如对数据的要求、个性化的局限和处理速度等的问题,但如果你是一个Pythoneer或者喜欢用更加Pythonic的方式来个性化地绘制Circos图,那么今天就跟随我一起用代码实现这一目标吧!
安装Circos包
首先,登录Python的包索引网站Python Package Index(PyPI,正确读音是:Pie Pee Ai),找到Circos包的下载页:
该包/模块的作者是我的好友Eric Ma。你可以选择下载wheeler文件,然后本地安装。也可以在shell下直接通过pip进行安装:
pipinstallcircos
注意,所支持的Python版本必须是3.x,对2不支持。
选择数据
当安装了circos包后,我们就可以直接应用这个包来写代码了。为了演示方便,我需要应用一些数据。作为内科医师,就让我来展示一下老本行:处理药物与肝酶细胞色素P450的相互关系的可视化。由于是为了抛砖引玉,所以绘制出的Circos图相对简单。
我们先从美国FDA官网下载不同细胞色素相关的各种口服药物表。共202种常用的口服药物,涵盖内科学、肿瘤学、神经科和心理学等学科。数据文件如下:
可以看到这个数据的结构:是按肝细胞色素酶进行分类,共分8个列。这8个细胞色素酶分别是:CYP1A2,CYP2B6, CYP2C8, CYP2C9, CYP2C19, CYP2D6, CYP2E1和CYP3A4。我们将要建立各个口服药与这些肝酶之间关系的Circos图,从而了解通过相同肝酶代谢或转化的药物之间是否存在相互作用。
导入各个模块和读入数据
导入各个模块:
fromcircosimportCircosPlot
importxlrd
importpandasaspd
importnumpyasnp
读入文件:
filename='.\\MedicationInteraction.xlsx'
book=xlrd.open_workbook(filename)
print('File loaded!')
提取数据:
nrows=book.sheet_by_name('Sheet1').nrows
header=book.sheet_by_name('Sheet1').row_values(0)
data=[book.sheet_by_name('Sheet1').row_values(i) fori inrange(1, nrows)]
df=pd.DataFrame(data, columns =header)
df[df==''] = np.nan
读取后,药物和酶的数据为pandas的DataFrame数据结构,细胞色素P450酶的名字为columns的名字。我们可以检查一下数据:
修数据,尤其是处理NA数据
df_dict={}
foriinrange(len(df.columns)):
df_dict[df.icol(i).name] =list(df.icol(i).dropna())
节点和连线
创建节点(nodes)数据,在我这个例子里就是各个药物和肝酶:
nodes=[]
forkeyindf_dict.keys():
nodes.extend(df_dict[key])
nodes=list(nodes)
headers=list(df.columns)
enzymes=['0'] * 5
forheaderinheaders:
enzymes.append(header)
enzymes.extend(['0']*5)
nodes.extend(enzymes)
创建连线(edges)数据,我们应用tuple(元组)这个数据结构来表示药物与特定肝酶之间的关系:
edges_origin=[]
forkeyindf_dict.keys():
forvalue indf_dict[key]:
edges_origin.append((key, value))
绘图
绘制Circos图:
c=CircosPlot(nodes, edges_origin, radius =10,
nodecolor=blue,
edgecolor=red,
)
c.draw()
得到了下面这张所有药物与肝酶之间的图:
左上方是8个肝脏细胞色素P450酶(CYP1A2、CYP2B6、CYP2C8、CYP2C9、CYP2C19、CYP2D6、CYP2E1和CYP3A4)。其它点即为202种口服药物。每种药物都与参与代谢和转化它的P450酶相连。与相同酶连接的不同药物,理论上应该都存在相互作用,但具体如何还要看与酶的作用机理。
个性化绘图
如果我们打算分别可视化出不同肝酶的关系图形,我们只需改变连线信息,即edges信息:
edges=[]
forvalueindf_dict['CYP2B6']:
edges.append(('CYP2B6', value))
c=CircosPlot(nodes, edges, radius =10,
nodecolor=orange,
edgecolor=orange,
)
c.draw()
从而我们得到了各种肝酶所代谢和转化药物的图形
用PS将它们合并:
相同肝酶所代谢和转化的药物用相同颜色的edges表示。
显示特定药物
最后,我们可以挑选其中一些感兴趣的药物来进行观察,例如,我从这202个药物中指定几个我感兴趣的药物:
propafenone(心律平), acetaminophen(对乙酰氨基酚), paclitaxel(紫杉醇), ibuprofen(布洛芬), losartan(洛沙坦), omeprazole(奥美拉唑), carvediolo(卡维地洛), codeine(可待因), theophylline(茶碱), quinidine(奎尼丁), verapamil(异搏定), lovastatin(洛伐他汀), nitrendipine(尼群地平)
然后重新建立edges:
medications=['propafenone', 'acetaminophen', 'paclitaxel', 'ibuprofen', 'losartan', 'omeprazole', 'carvedilol', 'codeine', 'theophylline', 'quinidine', 'verapamil', 'lovastatin', 'nitrendipine']
edges_candidate=set()
formedicationinmedications:
foredge inedges_origin:
if medication==edge[1]:
edges_candidate.add(edge)
edges_candidate=list(edges_candidate)
然后再绘图:
c=CircosPlot(nodes, edges_candidate, radius =10,
nodecolor=black,
edgecolor=black,
)
c.draw()
从而得到这张图。