我是一个介绍Perl课程的学生,正在寻找建议和反馈我的方法来编写一个小的(但棘手的)程序来分析有关原子的数据.我的教授鼓励论坛.我没有使用Perl subs或模块(包括Bioperl),因此请将响应限制在适当的"初学者级别",以便我能够理解并从您的建议和/或代码中学习(也请限制"魔术").
该计划的要求如下:
从命令行读取一个文件(包含有关Atoms的数据)并创建一个原子记录数组(每个换行符一个记录/原子).对于程序需要存储的每条记录:
•原子的序列号(第7 - 11栏)
•它所属的氨基酸的三个字母的名称(第18 - 20栏)
•原子的三个坐标(x,y,z)(第31-54栏)
•原子的单字母或双字母元素名称(例如C,O,N,Na)(cols 77-78)提示三个命令之一:freq,length,density d(d是某个数字):
•freq - 文件中每种原子的数量(例如氮,钠等)将显示如下:N:918 S:23
•长度 - 坐标之间的距离
•密度d(其中d是数字) - 程序将提示输入文件的名称以保存计算,并将包含该原子与每个其他原子之间的距离.如果该距离小于或等于数字d,则增加原子数的计数在该距离内,除非该计数为零到文件.输出将看起来像:
1:5
2:3
3:6
...(非常大的文件),并将在它完成时关闭.
我正在寻找下面代码中我写的(并且需要写)的反馈.我特别感谢有关如何编写我的潜艇的任何反馈.我在底部包含了示例输入数据.
我看到的程序结构和功能描述:
$^W = 1; # turn on warnings
use strict; # behave!
my @fields;
my @recs;
while ( <DATA> ) {
chomp;
@fields = split(/\s+/);
push @recs, makeRecord(@fields);
}
for (my $i = 0; $i < @recs; $i++) {
printRec( $recs[$i] );
}
my %command_table = (
freq => \&freq, …Run Code Online (Sandbox Code Playgroud) 寻找关于如何处理我的Perl编程家庭作业编写RNA合成程序的建议.我总结并概述了下面的程序.具体来说,我正在寻找下面的块的反馈(我将编号以便于参考).我读过安德鲁约翰逊的"Perl编程元素"第6章(好书).我还阅读了perlfunc和perlop pod-pages,没有任何内容可以从哪里开始.
程序描述:程序应该从命令行读取输入文件,将其翻译成RNA,然后将RNA转录成一系列大写的单字母氨基酸名称.
接受命令行上指定的文件
在这里我将使用<>运算符
检查以确保该文件仅包含acgt或die
if ( <> ne [acgt] ) { die "usage: file must only contain nucleotides \n"; }
Run Code Online (Sandbox Code Playgroud)将DNA转录为RNA(每个A替换为U,T替换为A,C替换为G,G替换为C)
不知道该怎么做
从第一次出现的"AUG"开始,把它转录成3个字符的"密码子".
不确定,但我认为这是我将开始%哈希变量的地方?
取3个字符"密码子"并给它们一个字母符号(一个大写的单字母氨基酸名称)
使用键赋值(这里有70种可能性,所以我不确定存储位置或访问方式)
如果遇到间隙,则启动新行并重复处理
不确定,但我们可以假设差距是三倍的倍数.
我是以正确的方式接近这个吗?是否有我可以忽略的Perl功能可以简化主程序?
必须是自包含程序(密码子名称和符号的存储值).
每当程序读取没有符号的密码子时,这是RNA中的缺口,它应该开始一个新的输出系列并从下一次出现的"AUG"开始.为简单起见,我们可以假设间隙总是三倍的倍数.
在我花费任何额外时间进行研究之前,我希望得到确认,我正在采取正确的方法.感谢您花时间阅读并分享您的专业知识!