admin 管理员组

文章数量: 1184232


2024年3月9日发(作者:程序员的专业术语)

生物信息编程训练题目

编程语言要求:C/C++, perl, python, java.

共十个题目。前五道,属较低难度等级,新手;后五道,属较高难度等级,高手。

1. 编写一个模拟基因DNA序列或者protein序列的程序。要求能够产生指定长度和条数的随机序列,输出到fasta格式文件中。无论DNA还是protein序列,均需尽可能符合真实的基因序列特征。

2.编写一个测序数据统计程序,读取测序原始reads文件(fq格式),统计数据量、碱基比例以及质量值分布。要求尽可能全面的反应数量和质量信息。

3.编写一个翻译程序,将coding sequence (cds)翻译成amino acid (aa)序列。输入输出文件分别为fasta格式。采用真核物种最通用密码子表,可在NCBI网站上查得。

4.编写一个画图程序,绘制基因的结构。Exon用方块表示,intron用直线表示。数据可从gff格式坐标位置文件中读取。

5. 编写一个统计基因组覆盖程度的程序。读取reads比对到基因组后得到的sam/bam文件,统计每一个基因组碱基位置的覆盖深度情况。

6.编写一个快速排序法函数,用以实现大数据量的高效排序。要求给出测试结果,包含内存占用和耗时情况。

7.编写一个找overlap的程序,找到两种块座标系列之间的交集。材料为由两种不同的方法所得到的同一物种的两个基因集,请找到它们之间的重叠区域,并计算出这两种预测方法之间的相似程度。

8.编写一个动态规划比对程序,实现两条DNA序列之间的全局比对和局部比对。要求阐明所用算法的时间和空间好用与数据量之间的关系。

9.编写一个画图程序,绘制物种或者基因的进化树(phylogeny tree)。树枝用蓝色线表示,节点用绿色方块表示,同时在叶子结点末端显出出物种名或者基因的ID。

10.编写一个kmer频率统计的程序。K-mer就是指定长度的一段序列,在生物信息领域具有广泛的用途。要求读取测序的reads文件(fq格式),统计其中全部k-mer种类的出现频率,最后画一张k-mer频率的分布图。

附. 编程的规范与要求:

1. 注释文档:

每个程序头部要有简略的说明文档,程序段落和关键语句要有必要的注释,在命令行运行时能显示帮助信息;大型软件应按功能模块将代码划分到不同的文件中,还要同时有独立的INSTALL、Makefile和readme等说明文件,侧重于算法的程序则一定要把算法阐述清楚。

2. 测试数据:

提供与该程序配套的测试数据,并说明运行方法和参数搭配情况。注意测试数据应具有代表性,为节省存储空间,测试数据不能过大,否则只提供大型机地址即可。

3. 程序质量:

要求功能明确,算法优化,结构合理,代码简洁清晰,具有良好的运行效率。好的结构设计要求模块化或者对象化,要着重从算法上改进。

4. 维护更新:

要注明作者、版本、日期以及维护更新的信息,作者对使用该程序产生的后果不负直接责任,但是有义务根据用户的合理反馈意见不断地完善程序,以及对使用者提供帮助。

附. 测试数据

1.在biopic计算机集群上准备好了一些数据:

/gpfsdata/Analysis/fanwei/Testing_data_for_training/

2.自己获得,可从公共数据库如Genbank等下载,或向搞生物信息的同事/学索取。


本文标签: 程序 要求 信息 序列 文件