Rosalind 039 Expected Number of Restriction Sites

这个问题结合了分子生物学中的限制性酶(restriction enzymes)的概念和概率统计学的应用。

生物背景:

  • 限制性酶:细菌使用这些酶来切割病毒DNA的双链,从而使病毒失去功能。这些酶在病毒DNA上切割的位置被称为限制位点。
  • 识别序列:每种限制性酶都预设了一个反向回文的DNA间隔作为其结合并切割的识别序列。这些间隔通常是偶数长度,一般是4或6个碱基对长,尽管也存在更长的识别序列。

计算问题:

  • 问题提出了一个简单的问题:细菌如何“知道”它在病毒DNA中找到限制位点的可能性很高?答案是识别序列的短长度保证了大量的随机匹配发生。
  • 例如,一个长度为6的识别序列平均每4096个碱基对出现一次,但这并不意味着相关的限制性酶每4096个碱基对就切割一次病毒DNA;它可能在相邻的地方找到两个限制位点,然后在许多千个核苷酸中都不找到限制位点。
  1. 计算单个碱基出现的概率: 根据GC含量,我们可以计算每种碱基的出现概率。例如,如果GC含量为0.5,则G和C的出现概率各为0.25(因为GC含量是G和C的总和),而A和T的出现概率也各为0.25。

  2. 计算子串出现的概率: 对于特定的DNA子串,其出现的概率是其所有碱基出现概率的乘积。例如,对于子串"AG",如果A和G的出现概率分别为0.25和0.25,则"AG"出现的概率是0.25 × 0.25 = 0.0625。

  3. 计算整个序列中子串出现的预期次数: 在长度为n的DNA序列中,有n−∣s∣+1个可能的起始位置来放置长度为∣s∣的子串s(其中∣s∣是子串的长度)。因此,子串s出现的预期次数是每个位置出现子串的概率之和,即(n−∣s∣+1)×子串出现的概率。

  4. 应用于数组A中的每个GC含量: 对于数组A中的每个GC含量值,重复上述步骤来计算子串在相应GC含量下出现的预期次数,并将结果存储在数组B中。

举个例子,对于样本数据集:

  • DNA字符串长度 n=10。
  • DNA字符串 s="AG"。
  • GC含量数组 A=[0.25,0.5,0.75]。

我们需要分别对每个GC含量值计算"AG"出现的预期次数。假设在GC含量为0.25时,A和T的概率为0.375,G和C的概率为0.125,那么"AG"出现的概率为0.375 × 0.125 = 0.046875。因此,在长度为10的序列中,"AG"出现的预期次数为(10−2+1)×0.046875=9×0.046875=0.422(10−2+1)×0.046875=9×0.046875=0.422。同样的方法应用于其他GC含量值。

代码:

data = []
with open('', 'r') as f:for line in f:data.append(line.strip('\n'))
n = int(data[0])
s = data[1]
A = [float(x) for x in data[2].split()]AT, GC = 0, 0
for nt in s:if nt == 'A' or nt == 'T':AT += 1elif nt == 'G' or nt == 'C':GC += 1B = [0]*len(A)
for i, j in enumerate(A):P = (((1 - j)/2)**AT)*((j/2)**GC)*(n - len(s)+1)B[i] = '%0.3f' % P
print(*B, sep=' ')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/597499.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

适合 C++ 新手学习的开源项目——在 GitHub 学编程

作者:HelloGitHub-小鱼干 俗话说:万事开头难,学习编程也是一样。在 HelloGitHub 的群里,经常遇到有小伙伴询问编程语言如何入门方面的问题,如: 我要学习某一门编程语言,有什么开源项目可以推荐…

nginx下upstream模块详解

目录 一:介绍 二:特性介绍 一:介绍 Nginx的upstream模块用于定义后端服务器组,以及与这些服务器进行通信的方式。它是Nginx负载均衡功能的核心部分,允许将请求转发到多个后端服务器,并平衡负载。 在upst…

RA8900CE汽车用c总线接口实时时钟模块

汽车用c总线接口实时时钟模块内置调频32.768 kHz晶体单元和DTCXO,高稳定性和电源切换。 接口类型我 2C-Bus接口(400kHz)界面电压范围2.5V ~ 5.5V温度补偿电压范围2.0V至5.5V计时电压范围1.6V ~ 5.5V可选时钟输出(32.768 kHz, 1024 Hz, 1 Hz)各种功能齐全的日历、报…

如何配置Zabbix告警邮件通知并基于GPT提供解决方案?

一、概述 时间来到2023年末,距离Open AI发布GPT-3.5,首次向公众推出ChatGPT已经整整过去了一年。如今,以ChatGPT为代表的人工智能模型已然被应用众多领域,当然也包括IT运维。在IT运维中,通过对接运维监控平台&#xff…

windows机器上安装mysql

0、mysql下载地址 1、参考文章 2、把Data数据目录迁移到其他盘 2.0 首先停止mysql(任务管理器-详细信息-随便找个进程右击进入转入服务,找到MySQL服务,点击停止) 2.1 windows的 mysql默认的data目录在C:\ProgramData\MySQL\MySQ…

深度神经网络中的混合精度训练

Mixed-Precision Training of Deep Neural Networks | NVIDIA Technical Blog 目录 混合精度成功训练的技术 FP32 累加 损失缩放 loss scaling FP32 Master Copy of Weights 混合精度训练迭代过程 AMP混合精度训练介绍 FP16和FP32的区别 FP16的优势 FP16的问题 解决P…

多线程基础入门【Linux之旅】——上篇【线程控制,线程互斥,线程安全】

目录 前文 回望页表 一,什么是线程 二,使用 pthread_create (线程创建) 三,线程控制 1 ,线程共享进程数据,但也拥有自己的一部分数据: 2, 线程 VS 进程优点 3,…

在前端利用Broadcast Channel实现浏览器跨 Tab 窗口通信的方法

Broadcast Channel 在前端,我们经常会用postMessage来实现页面间的通信,但这种方式更像是点对点的通信。对于一些需要广播(让所有页面知道)的消息,用postMessage不是非常自然。Broadcast Channel 就是用来弥补这个缺陷…

DVenom:一款功能强大的Shellcode加密封装和加载工具

关于DVenom DVenom是一款功能强大的Shellcode加密封装和加载工具,该工具专为红队研究人员设计,可以帮助红队成员通过对Shellcode执行加密封装和加载实现反病毒产品的安全检测绕过。 功能介绍 1、支持绕过某些热门反病毒产品; 2、提供了多种…

vue中的$nextTick的作用及使用场景

文章目录 一、$nextTick的作用二、特点和用途三、使用场景:1、在 Vue 组件内部使用:2、在普通 JavaScript 代码中使用: 三、注意事项 一、$nextTick的作用 $nextTick() 是 Vue 提供的一个异步方法,用于在 DOM 更新之后执行回调函…

【React系列】react-router

本文来自#React系列教程:https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5MDAzNzkwNA&actiongetalbum&album_id1566025152667107329) 一. 认识react-router 1.2. 前端路由原理 前端路由是如何做到URL和内容进行映射呢?监听URL的改变。 UR…

新视野英语课本复盘1

the triumpth of years of hard work 多年的辛勤付出的胜利 get by on very little sleep 靠很少的睡眠勉强维持生活或工作 pursue new passions 追求新的热爱之事 reap the benefits of this opportunity 收获这个机会带来的益处 you will not only emerge as a more broadly …

目标检测YOLO实战应用案例100讲-基于红外图像处理的无人机光伏组件故障检测(续)

目录 3.2 自适应温度阈值故障检测算法设计 3.3 基于拟合灰度曲线的故障检测方案设计

自动生成表结构screw

采用的组件 screw 操作流程&#xff1a; 1、新建springboot 项目 2、引入相关的依赖 <!-- screw核心 --><dependency><groupId>cn.smallbun.screw</groupId><artifactId>screw-core</artifactId><version>1.0.4</version><…

数据库知识汇总之NoSQL

目录 数据库常见分类关系型数据库NoSQL数据库NoSQL数据库5大类型NoSQL数据库在 大数据时代的优势 数据库常见分类 数据库可以根据不同的标准进行分类&#xff0c;以下是一些常见的数据库分类方式&#xff1a; 关系型数据库&#xff08;RDBMS&#xff09;&#xff1a;这是最常…

SwiftUI之深入解析如何使用visualEffect视图修饰符

一、visualEffect 简介 在 WWDC 23 中&#xff0c;SwiftUI 引入了一个名为 visualEffect 的新视图修饰符&#xff0c;此修饰符允许通过访问特定视图的布局信息来附加一组可动画化的视觉效果。那么&#xff0c;如何在 SwiftUI 中使用新的 visualEffect 视图修饰符呢&#xff1f…

超简单|配图详细| 双系统Ubuntu22.04 系统磁盘扩容

文章目录 1. 打开磁盘工具2. 格式化空闲分区3. 挂载该分区4. 数据迁移与备份5. 卸载原分区6. 挂载新的/home分区7. 重启系统8. 删除原来的数据8.1 直接格式化分区8.2 没有单独的/home分区1. 查看设备名2. 重新挂载该分区3. 删除原始分区/home目录中的内容4. 卸载原分区5. 重启 …

关于无人机上层控制的PID算法的思考

一、前言 背景介绍&#xff1a;PID虽然出现了很多年&#xff0c;但是目前工业界还是把PID作为主流的控制算法&#xff08;尽管学术界有很多非常时尚的控制算法&#xff0c;包括鲁邦控制&#xff0c;神经网络控制等等&#xff09;&#xff0c;PID的算法在于其不需要对系统进行复…

使用 PHP-FFMpeg 操作视频/音频文件

做音频合成的时候找到的一个php操作ffmpeg 的类库。GitHub地址&#xff1a;https://github.com/PHP-FFMpeg/PHP-FFMpeg/。本文的例子大部分都是上面的 在使用之前请安装好 FFMpeg 。如何安装&#xff1f;请看 FFmpeg 安装教程。 使用composer快速安装 > composer require …

netty使用http和webSocket

1&#xff1a;pom.xml配置 <dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>4.1.73.Final</version></dependency>2&#xff1a;Netty作为HTTP服务器 import io.netty.bootstrap.Server…