如何从多个文件剪切一些文本,并用名称等替换它们?

如何从多个文件剪切一些文本,并用名称等替换它们?

这可能是一个很大的忙,因为我希望你帮助我编写一个完整的脚本,但我感谢任何帮助我的人,并向你保证你的答案有助于科学进步:)

如果您没有时间,请只列出我需要学习其手册的命令(但我仍然需要知道如何将每个命令与其他命令关联)

我正在研究一些蛋白质,它们每个都有一个独特的名称(如 2DMS)。这些蛋白质有一个文本文件描述它们的属性。我需要剪切每个蛋白质的文本,从以“ATOM”开头的第一行剪切到以“TER”开头的行末,并在末尾输入“ ' ”。然后将输出文件重命名为蛋白质 ID(2DMS)。您可以在此处看到一个示例:(通常文件名只是蛋白质 ID,在本例中为 2DMS。)

http://www.rcsb.org/pdb/download/downloadFile.do?fileFormat=pdb&compression=NO&structureId=2DMS

您可以将其作为文本文件打开。

然后脚本需要修改以下内容,并将其重命名为CURL_2DMS(2DMS替换为每个蛋白质ID):

curl LINK/idock/jobs -d '&description=2DMS&[email protected]&center_x=150&center_y=109&center_z=22&size_x=18&size_y=17&size_z=15&mwt_lb=390&mwt_ub=420&lgp_lb=1&lgp_ub=3&nrb_lb=4&nrb_ub=6&hbd_lb=2&hbd_ub=4&hba_lb=4&hba_ub=6&chg_lb=0&chg_ub=0&ads_lb=0&ads_ub=10&pds_lb=-40&pds_ub=0&psa_lb=60&psa_ub=80&receptor=ATOM      1  N   PRO A  19     148.930 114.148   5.178  1.00138.31           N  
ATOM      2  CA  PRO A  19     149.869 115.263   5.360  1.00138.99           C  
ATOM      3  C   PRO A  19     151.021 115.224   4.348  1.00144.31           C  
ATOM      4  O   PRO A  19     150.914 114.542   3.320  1.00144.78           O  
ATOM      5  CB  PRO A  19     150.357 115.076   6.800  1.00138.04           C  
ATOM      6  CG  PRO A  19     149.222 114.376   7.496  1.00140.40           C  
ATOM      7  CD  PRO A  19     148.354 113.704   6.460  1.00137.06           C  
TER    2743      GLN A 313                                                      
'

如你所见,curl 中有 5 个字符串需要针对每个蛋白质进行修改:

description= “protein ID”
center_x= “column 1”
center_y= “column 2”
center_z= “column 3”
receptor= “the protein_ID.txt which was produced in the first step”

列 1,2,3 存在于名为coordinates.csv

然后我需要脚本来运行每个CURL_proten_ID文件(假设网站中的每个作业都需要 3 个小时才能完成,我需要脚本在 3 小时内运行每个 curl)。然后脚本应该转到 [此链接][1] 并搜索protein_ID(如2DMS)并复制字符串_id(在此示例中为:567048e420d3a8813691c534)。然后它应该使用此链接下载一个 CSV 文件wget(或替代方案)并替换_id

websitelink/567048e420d3a8813691c534 (_id) /log.csv.gz

例子:

{"0":244,"1":1656,"2":1072,"3":2039,"4":2642,"5":2750,"6":83,"7":286,"8":371,"9":487,"_id":"567048e420d3a8813691c534","description":"2DMS","ligands":11630,"scheduled":10,"submitted":"2015-12-15T17:07:48.729Z","done":"2015-12-15T17:20:53.143Z"},

然后我需要脚本将下载的文件重命名为2DMS( ID)_log.csv.gz

那么我很感激您在这个项目上投入的时间:)

**这是该作业的算法:

  1. 打开蛋白质文件(PDB)

  2. 删除第一行以上包含“ATOM”的所有行

  3. 删除最后一行以下所有包含“TER”的行

  4. 将文件重命名为 PDB.txt

  5. 创建新的 CURL.txt 文件

  6. 将其重命名为 PDB_curl.txt

  7. 将以下内容复制到 PDB_curl.txt 中:

    curl LINK/idock/jobs -d '&description=PDB&[email protected]&center_x=xcenter&center_y=ycenter&center_z=zcenter&size_x=18&size_y=17&size_z=15&mwt_lb=390&mwt_ub=420&lgp_lb=1&lgp_ub=3&nrb_lb=4&nrb_ub=6&hbd_lb=2&hbd_ub=4&hba_lb=4&hba_ub=6&chg_lb=0&chg_ub=0&ads_lb=0&ads_ub=10&pds_lb=-40&pds_ub=0&psa_lb=60&psa_ub=80&receptor=RECEPTOR_DISCRIPTION'
    
  8. 将“PDB”更改为蛋白质ID(PDB)

  9. 复制 PDB.txt 并替换“RECEPTOR_DISCRIPTION”

  10. 打开坐标.csv

  11. 对于每个 PDB,复制 coulmn1 并用它替换“xcenter”

  12. 对于每个 PDB,复制 coulmn2 并用它替换“ycenter”

  13. 对于每个 PDB,复制 coulmn3 并用它替换“zcenter”

  14. 关闭并保存 PDB_CURL.txt

  15. 运行 PDB_CURL

  16. 等待3小时

  17. 通过此链接搜索:{link/idock/jobs} 以查找 PDB

  18. 复制该行中“_id”后面的下一个字符串

  19. 用复制的文本替换此链接中的“_id”:link/idock/jobs/_id /log.csv.gz

  20. 通过 wget 下载链接

  21. 将下载的文件重命名为 PDB_log.csv.gz

  22. 重复上述命令,直到下载所有 PDB_log.csv.gz

  23. 如果出现错误,则完全跳过该作业并将该 PDB 复制到“errors.log”**

答案1

#!/bin/bash
tail -n $(($(wc -l pdb2dms.ent|cut -d' ' -f 1)-1)) pdb2dms.ent|head -n $(($(wc -l pdb2dms.ent|cut -d' ' -f 1)-1)) pdb2dms.ent | grep -v "ATOM" | grep -v "TER" #2 and 3
mv pdb2dms.ent PDB.txt # 4
touch curl.txt #5
mv curl.txt PDB_curl.txt #6

for i in coordinates.csv
do
  curl LINK/idock/jobs -d "&description=PDB&[email protected]&center_x=`cat $i|cut -d',' -f 1`&center_y=`cat $i|cut -d',' -f 2`&center_z=`cat $i|cut -d',' -f 3`&size_x=18&size_y=17&size_z=15&mwt_lb=390&mwt_ub=420&lgp_lb=1&lgp_ub=3&nrb_lb=4&nrb_ub=6&hbd_lb=2&hbd_ub=4&hba_lb=4&hba_ub=6&chg_lb=0&chg_ub=0&ads_lb=0&ads_ub=10&pds_lb=-40&pds_ub=0&psa_lb=60&psa_ub=80&receptor=`cat ./*_curl.txt`" > PDB_curl.txt
done #11,12,13,15
sleep 3h #16
wget -O PDB_log.csv.gz $(wget -O - link/idock/jobs|grep 'PDB'|sed \_id\`wget -O - link/idock/jobs/_id /log.csv.gz|echo`\) #17,18,19,20,21

不确定#22 和#23
请检查命令是否按预期执行,因为我在理解目标方面有些困难。man <command>可以使用,或者谷歌搜索。

相关内容