C语言数组相似度比对,C语言实验报告:碱基相似度比较
C 语言实验报告:碱基序列相似度比较 ByLegstrong Cannon 一.实验背景: 生物的基因是由碱基对排列而成的,庞大的遗传信息蕴含在碱基 A,T,C,G 的的排列顺序之中。然而现代人类科技的发展水平尚且 不能根据生物的碱基序列预测生物的遗传性状,我们的能力仅限于在 多个具有相同形状的个体中寻找近似度最高的一段基因序列。所以, 基因序列的比较工作在重多科研与医疗领域有重大作用。 二.实验目的: 通过 C 语言的程序设计,模拟基因链之间相似度的比较。 三.实验原理: 1.通过 1~4 随机正整数的生成,和 1-A、2-T、3-C、4-G 的数字与 碱基的对应关系,生成给定长度的碱基序列。 2.当两条链的位置暂定时,通过循环结构可以实现两条相似度的 比较。 四.实验步骤: 实验Ⅰ: 1.在 main 函数之外定义代表总基因链的全局字符数组 whole[N](define N100000)、和代表基因单链的全局字符数组 single[M](defineM100)、 以及代表基因单链某次与总基因链对比后相同碱基的个数的全集整 数数组 similarity[M-N+1],明显比较的次数是 M-N+1。 2.利用循环结构生成 N 个 1~4 内的随机整数,并按照 1-A、2-T、3-C、 4-G 的对应关系,将这一串字母写入名为 whole_gene_string.txt 的文 件夹,代表总基因链的生成;长度为 M 的基因单链的生成方法同理, 写入名为 single_gene_string.txt 的文件夹。 3.利用循环结构把 whole_gene_string.txt 里的碱基顺序读入字符数组 whole[N],把 single_gene_string.txt 里的碱基顺序读入字符数组。 4.定义计数变量 count=0,利用上述两字符数组各位包含的碱基的对 比开始单链与总链的对比工作: 1)利用循环结构,单链的第一位首先与总链第一位进行比较,之 后依次是单链的第二位和总链的第二位......直到单链的第 M 位与总链 的第 M 位完成比较.。比较过程中若两碱基相同则计数变量加一,完 2)利用循环结构,单链的第一位与总链的第二位进行比较,之后 依次是单链的第二位和总链的第三位......直到单链的第 M 位与总链的 第 M+1 位完成比较。比较过程中若两碱基相同则计数变量加一,完 成比较后计数变量的值赋予 similarity[1],计数变量清零; 3)利用循环结构重复上述步骤,直到单基因链的最后一位与总基因链 最后一位完成比较。 5.定义 max 的初始值为 0,利用循环结构依次比较 similarity[N-M+1] 的每一项与 max 的大小关系,当 similarity[i]的值大于 max 时,把 similarity[i]的值赋予 max。如此可找到 similarity[i]的最大值,即在步骤 4 的比较中相同次数最多的一次比较的相同次数。 6.实现步骤 5 之后 max 的值即是数组 similarity[]的最大值,利用循环 结构再次比较每一位与 max 值的大小关系,当 similarity[k]的值与 max 的值相等时 k+1 的值即是单链开始与总链上相同长度的基因片段有 最大相似度时总链上该片段的第一个碱基的位置。 7.输出最大相似度 a=max/M*100%. 从总链的第 k+1 位开始有最大相 似度 。 某次实验的实验结果: 实验ⅠⅠ: 通过分析不难发现,如果我们按顺序从 A 链抽取长度为 100 的子 链,然后去 B 链中分别比较,那么实验二便可以参照实验一的方法进 行。 具体步骤如下: 1.在 main 函数之外定义代表 A 链的全局字符数组 str_a[A](define A 10000)、和代表 B 链的全局字符数组 str_b[B](defineB100)、代表从 A 链中抽取的子链 str_temp[N] (defineN 100)以及代表某个子链某次与 总 基 因 链 对 比 后 相 同 碱 基 的 个 数 的 全 集 整 数 数 组 simi[(A-N+1)][(A-N+1)];,明显比较的次数是(M-N+1)^2。 2.利用循环结构生成 N 个 1~4 内的随机整数,并按照 1-A、2-T、3-C、 4-G 的对应关系,将这一串字母写入名为 gene_string_a.txt 的文件夹, 代表 A 链的生成;长度为 B 的 B 链的生成方法同理,写入名为 gene_string_a.txt 的文件夹。 3.利用循环结构把 gene_string_a.txt 里的碱基顺序读入字符数组 str_a[A],把 gene_string_a.tx 里的碱基顺序读入字符数组 str_b[B]。 4.利用循环结构从 A 链中提取(A-N+1)个子链:方法为分别以序号 为 1 至 N-A 的碱基作为起始点,将起始点后 N 位的字符存入数组 str_temp 中,其中每一个起始点对应一个 str_temp,共有(A-N+1) 个。 5.定义计数变量 count=0,利用上述两字符数组各位包含的碱基的对 比开始子链与 B 链的对比工作: 1)利用循环结构,按照顺序取出一个子链。 2)利用循环结构,子链的第一位首先与 B 链第一位进行比较,之 后依次是单链的第二位和总链的第二位......直到单链的第 M 位与总链 的第 M 位完成比较.。比较过程中若两碱基相同则计数变量加一,完 3)利用循环结构,子链的第一位与 B 链的第二位进行比较,之后 依次是单链的第二位和总链的第三位......直到单链的第 M 位与总链的 第 M+1 位完成比较。比较过程中若两碱基相同则计数变量加一,完 成比较后计数变量的值赋予 simi[(A-N+1)][(A-N+1)],其中二维数组前一 项代表所取子链序号,后一项代表所匹配的碱基序号。计数变量清零; 4)利用循环结构重复上述步骤,直到单基因链的最后一位与总基 因链最后一位完成比较。 6 定义 max 的初始值为 0, 利用循环结构依次比较 simi[(A-N+1)][(A-N+1)] 的每一项与 max 的大小关系,当 simi[(A-N+1)][(A-N+1)]的值大于 max 时,把 simi[(A-N+1)][(A-N+1)]的值赋予 max。如此可找到 similarity[i] 的最大值,即在步骤 5 的比较中相同次数最多的一次比较的相同次数。 7.实现步骤 6 之后 max 的值即是数组 simi[(A-N+1)][(A-N+1)]的最大值, 利用循环结构再次比较每一位与 max 值的大小关系, simi[(j)][(k)]的值 与 max 的值相等时 j+1 即是子链的起始碱基亦即 A 链匹配开始的位置。 k+1 的值即是子链开始与 B 链上相同长度的基因片段有最大相似度时 总链上该片段的第一个碱基的位置。 8.输出最大相似度 a=max/M*100%. 从 A 链的第 j+1 位从, B 链的第 k+1 位开始有最大相似度。 五.分析总结 实验Ⅱ中设立了全局的二维整数数组来记录每次比较的相似度, 然而 C 语言允许设立的二维数组不能超过 1000*1000.所以 A,B 链的 长度并不能达到一百万。 用 C 语言编写的的 BLAST 算法同样用到二维整数数组,所以同样会存在可比较 的序列长度不够的问题。了解到真正投入应用的 BLAST 算法程序是用 java 语言 编写的,或许这一问题会在不同的语言结构中有所改善。
展开阅读全文
C语言数组相似度比对,C语言实验报告:碱基相似度比较相关推荐
- 北京电大c语言实验作业二,大学大一c语言程序设计实验室上机题全部代码答案(实验报告).doc...
大学大一c语言程序设计实验室上机题全部代码答案(实验报告).doc C语言实验报告实验1-1:helloworld程序:源代码:#includemain(){printf("hellowor ...
- 沈航C语言上机实验题答案,大学大一c语言程序设计实验室上机题全部代码答案(实验报告).doc...
大学大一c语言程序设计实验室上机题全部代码答案(实验报告) C语言实验报告 实验1-1: hello world程序: 源代码: #include main() { printf("hell ...
- C语言数组测试函数,(完整word版)C语言数组与函数阶段测试题答案---(20200807070313)(8页)-原创力文档...
} } C语言数组与函数阶段测试题答案 一.选择题( 18*2=36 分) 1. 在定义" int a[5][6]; "后,第 11个元素是 [ C ] A.a[2][5] B . ...
- c语言数组数据用指针查找,c语言数组与指针_指针篇_2011.ppt
c语言数组与指针_指针篇_2011 指 针 6.2 指针的概念6.3 指针与数组6.4 字符串的指针6.5 指针数组和指向指针的指针;6.2.1 地址与指针的概念 ;指针的概念;内存地址;2.数组与地 ...
- c语言数组相同字符主元素,C语言数组考点归纳
C语言数组考点归纳 下面是百分网小编为大家收集的C语言数组考点归纳,欢迎借鉴学习! 9.1 一维数组的定义.初始化和引用 1.一维数组的定义方式为: 类型说明符 数组名[常量表达式] (1)数组名的命 ...
- c语言数组的作用是什么,C语言数组是什么
C语言数组是什么 C语言数组是什么呢?大家是否清楚呢?下面是小编分享的C语言数组的概念,欢迎大家参考! 例子:输出一个 4×4 的整数矩阵,代码如下: #include #include int ma ...
- 华理c语言设计网上作业,华理c程序实验报告(共9篇).doc
华理c程序实验报告(共9篇) 华理c程序实验报告(共9篇) 2011华理<C语言实验报告> C程序设计课程 实验报告册 所在学院 班 级 学 号 姓 名 任(来自:www.XIelw.Co ...
- 工程热力学c语言 朗肯循环第二题,软件工程上机实验报告_相关文章专题_写写帮文库...
时间:2019-05-12 14:56:17 作者:admin <数据库与软件工程>上机实验答案 实验三 SQL语言的DDL 3.CREATE TABLE aa( Bb1 VARCHAR( ...
- a星算法实现8数码问题c语言,A星算法求八数码问题实验报告.doc
A星算法求八数码问题实验报告.doc 人工智能实验报告实验名称八数码问题姓名xx学号2012210 xx xx计算机学院 2014年1月14日1 实验目的 掌握A*的思想,启发式搜索,来求解在代价最小 ...
- c语言数组的一维编程,【C语言】转换一维数组
#include #define MAX_SIZE 20 /* 最大数组个数 */ void TransposeArray(int *arr,int size); int main() { int s ...
最新文章
- STM32 基础系列教程 18 – IWDG
- Oracle checkpoint详解
- case when else 默认随机_SQL高级知识——CASE的用法
- 「分布式系统理论」系列专题
- linux常用操作符,Shell常用操作符总结
- 用汇编的眼光看C++ (之x86汇编)
- python安卓下载-python手册中文版apk下载
- 来自汽车行业的20个优秀的汽车推广网站
- Hexo+Github博客搭建教程
- VirtualBox上安装WindowsXP的完整教程
- 直播礼物特效新格式-Pag格式
- 首开先河 | 脑机接口让这位ALS患者可读可写
- Python爬虫实训案例之爬取豆瓣电影Top250并保存至excel
- When I’m old and dying
- 闲鱼,越分享才越有价值
- 邮箱,手机号的正则表达式
- 迪厅装修后地板清洁与保养
- Eigen实现克罗内克内积
- TypeError Cannot instantiate abstract class xxx with abstract method
- Spring框架中的单例Beans是线程安全的么
热门文章
- 用计算机专业术语写寄语,教师给计算机专业学生寄语
- 麦克劳林公式求sin(x)
- mysql hint 驱动_MySQL HINT:Straight_JOIN
- 软件测试oracle怎么学,怎么自学软件测试?
- PS CS6 打不开RAW格式文件
- [渝粤教育] 西南科技大学 计算机网络应用基础 在线考试复习资料2021版
- python爬虫:爬取链家深圳全部二手房的详细信息
- 【论文解读】(2019-EMNLP)Tackling Long-Tailed Relations and Uncommon Entities in Knowledge Graph Completi
- 渗透测试-业务逻辑与非常规漏洞原理与利用
- win10 蓝牙耳机已连接但是耳机仍没有声音,音频仍是扬声器输出问题的出现条件及解决方案