首页 > 编程知识 正文

kmer的python程序,km算法 python

时间:2023-12-26 22:40:29 阅读:322761 作者:GFBM

本文目录一览:

python如何运行程序

安装并配置完成之后,我们就可以编写第一个python程序。学过其他语言的兄弟姐妹们,都知道语言的入门程序就是hello world。那么,我们这里也以hello world来抛砖引玉,打开python学习的大门。

python运行有两种方式,一种是在python交互式命令行下运行;另一种是使用文本编辑器,在命令行中直接运行。

注意:以上两种运行方式,都是以CPython解释器来编译运行的。当然也可以将python代码写入到eclipse中,使用JPython解释器运行,需要自己配置环境。(推荐学习:Python视频教程)

一、命令行与交互式命令行

首先要搞清楚这个命令行的概念。

1.命令行

定义:出现类似“C:”,则是在Windows提供的命令行模式

进入模式的方式:Windows中,直接win+r键进入

2.交互式命令行

定义:出现“”,则是python的交互式命令行

进入模式的方式:Windows命令行中输入python即可

二、交互式命令行中运行python代码

cmd窗口中,输入python后,进入python交互式命令行。直接输入代码:

print ‘hello world!’

python-23.png

可以看到界面上运行结果,表示运行成功!

在Python的交互式命令行写程序,好处是一下就能得到结果,坏处是没法保存,下次还想运行的时候,还得再敲一遍。

所以,实际开发的时候,我们总是使用一个文本编辑器来写代码,写完了,保存为一个文件,这样,程序就可以反复运行了。

三、命令行运行python代码

1.python代码编写及保存

我们将“hello world!”程序用文本编辑器写出来,保存下来,并命名,这里我们命名为hello.py,保存到F:workspace。

命名时,要注意:

1)文件要以.py结尾,其他都不可以

2)文件名只能是英文字母、数字和下划线的组合。

文本编辑器推荐:Notepad++、Sublime Text

2.python代码运行

在命令行模式中,输入python F:workspacehello.py,即可运行成功。

运行时,要注意:

1)python文件存储路径是相对路径,运行时,一定要说明python文件的存储路径,

当然,用Python开发程序,完全可以一边在文本编辑器里写代码,一边开一个交互式命令窗口,在写代码的过程中,把部分代码粘到命令行去验证,事半功倍!

Python|运行程序的4种方式

第一种:第一种就是最直观的方式了。将python或pycharm应用程序打开编程即可。

第二种:用windows徽标+R再输入cmd打开命令行,然后键入python进入python环境,即可在命令行下编程。

第三种:点击windows徽标,再输入IDLE即可打开python进行编程。

第四种:选择任意编辑器比如记事本用编程语法写程序,再将文件保存并将文件格式改为后缀为.py,然后在文件所在位置处用shift+鼠标右键打开此位置的命令行,最后输入python再空格一下而后输入处理好的文件名即可运行里面的程序。

关于Python|运行程序的4种方式,青藤小编就和您分享到这里了。如果您对python编程有浓厚的兴趣,希望这篇文章可以为您提供帮助。如果您还想了解更多关于python编程的技巧及素材等内容,可以点击本站的其他文章进行学习。

以上是小编为大家分享的关于Python|运行程序的4种方式的相关内容,更多信息可以关注环球青藤分享更多干货

python-第二课-用IDLE编写程序

1.使用IDLE运行python程序

IDLE全称“Integrated Development and Learning Environment”,是python的集成开发和学习环境。它被打包为python包装的可选部分,当安装好python以后,IDLE就自动安装好了,不需要另外去安装。使用IDLE运行python程序方法如下:

2.实例:用IDLE编写第一个python程序

(1)运行IDLE开发环境。

python如何将给的碱基序列切成长度为4的kmer

# 定义方法

def get_list(seq,n):

    """

    Parameters:

    ---------

        seq: string

        n : integer

    """

    result = []

    for i in range(len(seq)-n+1):

        result.append(seq[i:i+n])

    return result

# 示例

seq = "ATCGCGTAAAGC"

get_list(seq,4)

# ['ATCG', 'TCGC', 'CGCG', 'GCGT', 'CGTA', 'GTAA', 'TAAA', 'AAAG', 'AAGC']

get_list(seq,3)

# ['ATC', 'TCG', 'CGC', 'GCG', 'CGT', 'GTA', 'TAA', 'AAA', 'AAG', 'AGC']

如何用Python构造hash表解决DNA k-mer问题

思路:

1、首先采用命A=0,C=1,G=2,T=3. 就相当于4进制数字,然后采用karp-Rabin算法转换成唯一十进制数字。由于用此算法的哈希函数为:hash(value)=value*(4^(k-q-1));

value是该字符对应的值,k是kmer长度,q是此字符在字符串的位置范围在[0-(q-1)]。然后把一个kmer里面所有字符的hash值求和就行了。

2、那么很容易看出来,对于连续的下害常愤端莅得缝全俯户一个Kmer,就有推理公式了 hashNew=addValue+(hashOld-deleteValue*(4^(k-1)))*4; hashNew就是往右平移一个字符的kmer hash值,hashOld就是平移之前的值,addValue就是平移后右边多的一个字符,deleteValue就是平移后左边少的一个字符。这样整个hash表建立的时间复杂度约为O(m+k),m是整个文本长度。

3、由于kmer长度如果过长,其hash值过大,会造成内存不够溢出的现象,所以kmer内部定死为10 。那么问题就来了,如何应对不同的kmer值。分三种情况。

第一种:q10

这种可以将kmer以10为单位,将hash表中对应值取出,然后对结果进行分析,这边分析方法为建立两个数组一个二维数组unionName储存位置关系,一个一维数组unionScore,计数用。 思路就是首先第一轮初始化unionName[Name][Pos]全部赋值Pos 并初始化unionScore,然后再第二轮匹配如果unionName[Name][Pos-cycle]=Pos-1则将其赋值为当前Pos,cycle为当前循环次数。并将当前循环数存入unionScore[NAME]中。最后当unionScore[NAME]值也就是循环数为k-1,即我们需要的交集了。

第二种:q=10

直接求出hash值,取出相应的值即可。

第三种:q10

可以用前缀种子+后缀种子交集产生。

前缀种子:在字符串后面补字符直到长度等于K,这个很容易看出来 最小是全补A,最大是全补T,然后将最小值到最大值之间的hash值即为所求。

后缀种子:后缀种子和前缀种子不同就是在字符串左边补齐字符。所以此时需要进行变换。只要对前置种子产生的值变化下就行了。(preValue-minValue)*(4^(K-q))+hash(p) 。其中preValue就是对应的前置种子的hash值,minValue就是前置种子中最小值也就是全补A的情况,hash(p)就是字符串长度为p时候的hash值。

交集就是先求后缀种子所有的值,再加上 前缀种子中起始位置在[0-(k-1)]中的值。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。