首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从文件中的数据中生成数组并减去它们

从文件中的数据中生成数组并减去它们
EN

Stack Overflow用户
提问于 2014-10-06 14:44:42
回答 1查看 56关注 0票数 0

我试图从蛋白质数据库文件(PDB)中查找3D中的对象之间的距离。PDB文件看起来像这样。

示例:

代码语言:javascript
复制
ATOM      1  N   GLU    1     -19.992  -2.816  36.359  0.00  0.00      PROT
ATOM      2  HT1 GLU    1     -19.781  -1.880  35.958  0.00  0.00      PROT
ATOM      3  HT2 GLU    1     -19.713  -2.740  37.358  0.00  0.00      PROT
ATOM      4  HT3 GLU    1     -21.027  -2.910  36.393  0.00  0.00      PROT
ATOM      5  CA  GLU    1     -19.344  -3.944  35.652  0.00  0.00      PROT
ATOM      6  HA  GLU    1     -19.817  -4.852  35.998  0.00  0.00      PROT
ATOM      7  CB  GLU    1     -19.501  -3.795  34.119  0.00  0.00      PROT

我试图把第一行5位数字,x坐标,并使他们成为一个数组。表示PROT的最后一列将更改为PDB文件中稍后的MEM1。我试图将所有MEM1 x坐标从Prot x坐标中减去,方法是将它们放入两个数组中。

我目前有:

代码语言:javascript
复制
#!/usr/bin/perl

use warnings;

my $inputfile = '8ns_emb_alt_101.pdb';

open( INPUTFILE, "<", $inputfile ) or die $!;

my @array = <INPUTFILE>;

$protein = 'PROT';

for ( $line = 0; $line <= $#array; ++$line ) {
    if ( $array[$line] =~ m/\s+$protein\s+/ ) {
        chomp $array[$line];
        @splitline = ( split /\s+/, $array[$line] );
        @protx = $splitline[5];
    }    #if 1
}    # for 1

print "@protx \n";
print "$splitline[5] \n";

@protx$splitline[5]打印的唯一东西是PDB的PROT部分的最后x坐标。我要把它们都印出来。我的总体目标是通过使用PROT来找出蛋白质MEM的每个原子与膜MEM的每个原子之间的距离。然后,当d < 5时,它将打印resID,在本例中为1,对应于GLU

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-06 14:50:29

而不是将值赋值给数组(实际上数组将其赋值给第一个元素,而是覆盖先前赋值的值)

代码语言:javascript
复制
@protx = $splitline[5];

将价值推入其中:

代码语言:javascript
复制
push @protx, $splitline[5];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26218748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档