在将列表替换为列的同时保留参考文件的格式

时间:2018-08-07 14:46:09

标签: python python-3.x

我有一个像-0.26087587488489344,-0.5473357965371729,-0.27654025363442625,1.404881305053428,-0.018092484992362462,0.12383162178724855

这样的数组

和参考文件(如

ATOM      5  CA  ARG     1      52.310  53.420  26.030  1.00  0.00            
ATOM     37  CA  PRO     2      54.710  51.600  28.410  1.00  0.00            

我想使用以列格式转换数组,以便最终文件如下所示

ATOM      5  CA  ARG     1      -0.26087587488489344  -0.5473357965371729  -0.27654025363442625  1.00  0.00            
ATOM     37  CA  PRO     2      1.404881305053428  0.018092484992362462  0.12383162178724855  1.00  0.00            

有关如何使用Python进行操作的任何帮助。结果文件应保持与参考相同的格式。

也应该只有五个数字,例如

-0.2609 instead of -0.26087587488489344

我想像以下

a=[-0.26087587488489344,-0.5473357965371729,-0.27654025363442625,1.404881305053428,-0.018092484992362462,0.12383162178724855]
len(a)
s = pd.DataFrame(np.array(a).reshape(2,3), columns = list("abc"))
print (s)

输出类似

          a         b         c
0 -0.260876 -0.547336 -0.276540
1  1.404881 -0.018092  0.123832

请注意此处

我真的不在乎这a,b,c或0,1东西,但我设法将它们放在列中。有没有更紧凑的方法来做到这一点。

之后,我用awk的bi来修复它。

.pdb组织是

ATOM      5  CA  ARG     1      52.310  53.420  26.030  1.00  0.00            
ATOM     37  CA  PRO     2      54.710  51.600  28.410  1.00  0.00   

vectors.pdb包含

-0.260876 -0.547336 -0.276540
1.404881 -0.018092  0.123832

然后我使用pasteawk技巧生成所需的文件

paste -d " " org.pdb vectors.pdb >combine.pdb

然后我使用了awk

awk '{print $1, $2, $3, $4, $5, $11, $12, $13, $9, $10}' combine.pdb >final.pdb

最终文件看起来像

ATOM 5 CA ARG 1 -0.260876 -0.547336 -0.276540 1.00 0.00
ATOM 37 CA PRO 2 1.404881 -0.018092 0.123832 1.00 0.00

但是与final.pdb相比,org.pdb的格式已被完全破坏

是否完全可以使用Python做到这一点?

0 个答案:

没有答案