首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >列表中的humpy.genfromtxt输入fname参数

列表中的humpy.genfromtxt输入fname参数
EN

Stack Overflow用户
提问于 2019-10-11 18:31:23
回答 2查看 25关注 0票数 0

我有许多文本文件作为计算的输出,我希望从中提取数据:

(注意:因为有些文件已经损坏,所以我已经在我的Dropbox中放置了副本。网址为https://www.dropbox.com/sh/h774f8jzjb5l0wx/AAAqhvHsmPAhK_svdQG2Ou9Ha?dl=0)

代码语言:javascript
复制
=======================================================================
PSOVina version 2.0                                                    
Giotto H. K. Tai & Shirley W. I. Siu                                   

Computational Biology and Bioinformatics Lab                           
University of Macau                                                    

Visit http://cbbio.cis.umac.mo for more information.                   

PSOVina was developed based on the framework of AutoDock Vina.         

For more information about Vina, please visit http://vina.scripps.edu. 

=======================================================================

Output will be 14-7_out.pdbqt
Reading input ... done.
Setting up the scoring function ... done.
Analyzing the binding site ... done.
Using random seed: 768314908
Performing search ... done.

Refining results ... done.

mode |   affinity | dist from best mode
     | (kcal/mol) | rmsd l.b.| rmsd u.b.
-----+------------+----------+----------
   1    -9.960902669      0.000      0.000
   2    -8.979504781      1.651      2.137
   3    -8.942611364      3.051      6.898
   4    -8.915523010      2.146      2.875
   5    -8.736508831      2.908      7.449
   6    -8.663387139      2.188      2.863
   7    -8.410739711      5.118      7.281
   8    -8.389146347      2.728      3.873
   9    -8.296798909      2.416      3.846
  10    -8.168454106      3.809      8.143
  11    -8.127990818      3.712      8.109
  12    -8.127103774      3.084      4.097
  13    -7.979090739      3.798      4.959
  14    -7.941872682      4.590      8.294
  15    -7.900766215      3.300      8.204
  16    -7.881485228      2.953      4.224
  17    -7.837826485      3.005      4.125
  18    -7.815909505      4.390      8.782
  19    -7.722540286      5.695      9.851
  20    -7.720346742      3.362      4.593
Writing output ... done.

这是可行的:

代码语言:javascript
复制
 import numpy as np

    print('${d}')

    data = np.genfromtxt("14-7.log", usecols=(1), skip_header=27, 
    skip_footer=1, encoding=None)

    print(data)

    np.savetxt('14-7.dG', data, fmt='%12.9f', header='14-7')
    print(data)

这会产生:

代码语言:javascript
复制
runfile('/home/comp/Apps/Python/PsoVina/DeltaGTable_V_s.py', 
 wdir='/home/comp/Apps/Python/PsoVina', current_namespace=True)
 ${d}
 [-9.96090267 -8.97950478 -8.94261136 -8.91552301 -8.73650883 -8.66338714
  -8.41073971 -8.38914635 -8.29679891 -8.16845411 -8.12799082 -8.12710377
  -7.97909074 -7.94187268 -7.90076621 -7.88148523 -7.83782648 -7.8159095
  -7.72254029 -7.72034674]
 [-9.96090267 -8.97950478 -8.94261136 -8.91552301 -8.73650883 -8.66338714
  -8.41073971 -8.38914635 -8.29679891 -8.16845411 -8.12799082 -8.12710377
  -7.97909074 -7.94187268 -7.90076621 -7.88148523 -7.83782648 -7.8159095
  -7.72254029 -7.72034674]

注意: print语句用于快速检查输出,即:

代码语言:javascript
复制
# 14-7
 -9.960902669
 -8.979504781
 -8.942611364
 -8.915523010
 -8.736508831
 -8.663387139
 -8.410739711
 -8.389146347
 -8.296798909
 -8.168454106
 -8.127990818
 -8.127103774
 -7.979090739
 -7.941872682
 -7.900766215
 -7.881485228
 -7.837826485
 -7.815909505
 -7.722540286
 -7.720346742

此外,此bash脚本可以工作:

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

    # Run.dG.list_1

    while IFS= read -r d
    do
        echo "${d}.log"

   done <ligand.list

这将返回三个日志文件名:

代码语言:javascript
复制
 14-7.log
 15-7.log
 18-7.log

但是,如果我运行这个bash脚本:

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

 # Run.dG.list_1

 while IFS= read -r d
 do
     echo "${d}.log"
     python3 DeltaGTable_V_sl.py
 done <ligand.list

其中,DeltaGTable_V_sl.py是:

代码语言:javascript
复制
 import numpy as np

    print('${d}')

    data = np.genfromtxt('${d}.log', usecols=(1), skip_header=27, 
    skip_footer=1, encoding=None)
    print(data)

    np.savetxt('${d}.dG', data, fmt='%12.9f', header='${d}')
    print(data.dG)

我得到了:

代码语言:javascript
复制
 (base) comp@AbNormal:~/Apps/Python/PsoVina$ sh ./Run.dG.list_1.sh
     14-7.log
     python3: can't open file 'DeltaGTable_V_sl.py': [Errno 2] No such file 
     or directory
     15-7.log
     python3: can't open file 'DeltaGTable_V_sl.py': [Errno 2] No such file 
     or directory
     18-7.log
     python3: can't open file 'DeltaGTable_V_sl.py': [Errno 2] No such file 
     or directory
     C-VX3.log
     python3: can't open file 'DeltaGTable_V_sl.py': [Errno 2] No such file 
     or directory

因此,看起来日志文件标签在工作区中,但是genfromtxt没有将'${d}.log‘识别为fname。尽管我已经用谷歌搜索了我能想到的所有术语组合,但我显然遗漏了一些东西。

由于我可能有数百个文件要处理,我希望能为这个问题提供解决方案。

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2019-10-11 20:21:07

Python现在不知道外壳脚本中使用的${d}

如果希望使用传递给Python脚本的命令行参数,可以使用argparsesys模块。argparse的功能更强大,所以你可以先试试sys

代码语言:javascript
复制
sys.argv[0] # name of the Python script.
sys.argv[1] # command line arguments 1
sys.argv[n] # command line arguments n

参见here

票数 0
EN

Stack Overflow用户

发布于 2019-10-12 00:12:09

我可以用以下命令创建您的错误消息:

代码语言:javascript
复制
0029:~/mypy$ python3 foobar
python3: can't open file 'foobar': [Errno 2] No such file or directory

foobar是一个随机名称,显然不存在于Python路径中。

所以你甚至还没有启动DeltaGTable_V_sl.py,更不用说遇到genfromtxt的问题了。所以你的大部分问题都是不相关的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58339372

复制
相关文章

相似问题

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