Py学习  »  Python

手把手带你学 Python3 |如何判断序列是否跨过剪切位点

生信菜鸟团 • 4 年前 • 685 次点击  

这里是python学习的第六篇,布尔值与条件判断

热点推荐

如果还没有安装入门环境首选 pycharm ,可以参见 三剑客 PyCharm 小试

学习编程语言的起点绕不过语法基础,快速掌握规范代码可以参见 手把手带你学 Python3 | 编程基础与规范代码


上一期我们罗列了列表的几种用法,切片及截取都是非常常规的用法,在后面的使用中会经常碰到,建议经常查看哟。

手把手带你学 Python3 | 列表使用一文就够了


元组拆包其实有很多能应用的场景,且元组的不可以变性本身就具有安全的属性,欲简单连接可以查看:

手把手带你学 Python3 | 元组拆包是个啥?

FASTA序列快速提取可以查看:

手把手带你学 Python3 | 字典与FASTA文件序列抽提


python3中还有一类常用类型:布尔。不同于python2,python3将作为定义词,Ture (T) False (F)

运算

规则

python中,把0、空字符串和None看成False,其他情况为Ture。

和其他的逻辑运算一样,python3也包含与或非运算,只是表示有些许不同,在python中,

与运算使用and 连接,或运算使用or连接,非运算使用not Ture

还有一个要注意的是None,None是一个一个特殊空值,并不是0,因为0是有意义的。

计算

在python2中,False对应数值为0,Ture可以代表1。遵循四则运算规则。例如:

a = True
b = False
print(a+1)
print(b-1)

2
-1

条件判断

这里先看一个例子:

假设我们定义数值为0~99的区段,0~32为小,33~65为中,66~99为大,那么我们随机给一个数,判断其归属:

import random
input = random.randint(0101)
print(input)
if input 33:
    print('small')
elif input > 65:
    print('large')
else:
    print('middle')    
---------------------------------
88
large
31
small

其中的else:指代上两个条件下都不满足的情况。也可以使用elif input > 33 and input < 65来表示。

进阶版:

还是上面的两个点三个区段,我们再加一个区段为0~49、50~99;然后我们有一段长度,判断该线段是不是过两个区段,如下图描述:即我要判断橙色线段的区域是否跨过节点1或者2:

这里就不再使用随机数了,直接用字母代替数值,位置节点为一个列表:

input_start = a
input_end = b
length = b-a

if a 0] and b > spot[0]:
    print('跨1节点'+'start:'+a+'\t'+'end'+b+'\n')
if a 1] and b > spot[1]:
    print('跨2节点'+'start:'+a+'\t' +'end'+b+'\n')

在上述运算过程中,其实还有同时跨1、2节点的线段存在,但是已经包含在我们的条件判断框里了。这里唯一没有做区分的究竟是跨了哪几个区。也就是是否跨过剪切位点。

应用场景比如判断翻译的多肽链是否过某几个片段,序列是否包含某些特定位置的SNP,或者circRNA的过度翻译。

番外

短路运算

多个与、或运算连接时存在的可能:

  1. and and and若出现一个False则返回False,如果全为True则返回右边;

  2. or or or若左边出现一个True则返回True,全False返回False。

  3. and or and or or or 第一个判断为True,则True。

上述几个例子在于在某些情况下,只要判断条件一就能完成全判断,那么在编码过程中可以将容易判断的放在前面做判断,节省时间,或先计算好各表达式的结果,然后再判断,可以获得准确结果。


猜你喜欢:

热҈手把手带你学 Python3 | 字典与FASTA文件序列抽提

【热点】三剑客 PyCharm 小试

热点编程基础与规范代码

热҈列表使用一文就够了

元组拆包是个啥?

Shell文本处理三剑客使用小技巧 |awk grep sed +正则表达式

青蒿素科普贴

2019年五篇Cell文献阅读集锦

circRNA实验新更 - circRNA实验设计优化方案笔记

植物杂志 PP & PJ 都在用的研究思路

▼ 如果你生信基本技能已经入门,需要提高自己,请关注下面的生信技能树,看我们是如何完善生信技能,成为一个生信全栈工程师。

▼ 如果你是初学者,请关注下面的生信菜鸟团,了解生信基础名词,概念,扎实的打好基础,争取早日入门。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/37303
 
685 次点击