计算化学公社

 找回密码 Forget password
 注册 Register
Views: 5909|回复 Reply: 4
打印 Print 上一主题 Last thread 下一主题 Next thread

[Multiwfn资源与经验] 发一个利用orca扫描得到的gbw文件和multiwfn批量计算输出分子体积的脚本

[复制链接 Copy URL]

56

帖子

0

威望

1232

eV
积分
1288

Level 4 (黑子)

跳转到指定楼层 Go to specific reply
楼主
本帖最后由 catenarygong 于 2019-1-27 16:48 编辑

Orca的scan扫描结合ri加速那是非常快,但是输出文件是一如既往的多,尤其是带有波函数信息的gbw文件,每个限制性优化之后就有一个
如果要扫描100个点,之后的gbw就有100个加最后一个点的一个,转成wfn导入multiwfn 做体积分析就很麻烦
所以写了一个Bash脚本,批量的把当前目录下所有的gbw文件转成wfn,然后导入multiwfn做分子体积的分析
脚本很简单,看看就明白,理论上稍加修改利用multiwfn 做别的分析也可以

用的时候把里面的目录改成自己的orca和multiwfn的目录



VDWVcalc.sh (502 Bytes, 下载次数 Times of downloads: 58)


直接运行会输出到console
./VDWVcalc.sh >> volume.txt可以输出到当前目录下的volume.txt文件

评分 Rate

参与人数
Participants 3
eV +18 收起 理由
Reason
pika02 + 5 谢谢
sobereva + 8
ChrisZheng + 5 好物!

查看全部评分 View all ratings

80

帖子

2

威望

596

eV
积分
716

Level 4 (黑子)

2#
发表于 Post on 2022-9-12 02:09:30 | 只看该作者 Only view this author
非常感谢楼主的脚本
为了批量计算MPI和满足自己强迫症,我把脚本改得优雅了一些
  1. #!/bin/bash
  2. echo "Script for mapping molecular polarity index (MPI) from multiple xyz and gbw files."
  3. # ulimit -s unlimited
  4. tmp=$(mktemp)
  5. list=$(mktemp)
  6. cat << EOF > $tmp
  7. 12
  8. 0
  9. -1
  10. -1
  11. q
  12. EOF
  13. # for gbws in *.gbw
  14. #     do
  15. #     echo "Convert from ${gbws} to wfn..."
  16. #     $HOME/apps/orca4/orca_2aim ${gbws%.gbw}
  17. #     rm -f *.wfx
  18. #     echo "done"
  19. #     done
  20. echo 'file,MPI(eV),MPI(kcal/mol)' > "$list"
  21. for wfns in *.wfn
  22.     do
  23.     echo "Calculating MPI from $wfns ..."
  24.     mpi=$(multiwfn $wfns < $tmp |\
  25.         grep --colour=auto -m 1 'Molecular polarity index')
  26.     mpi_eV=$(echo "$mpi" | tr -cd "[0-9]. "| awk '{print $1}')
  27.     mpi_kcal_mol=$(echo "$mpi" | tr -cd "[0-9]. "| awk '{print $2}')
  28.     echo "$mpi"
  29.     echo "$wfns","$mpi_eV","$mpi_kcal_mol" >> "$list"
  30.     done
  31. rm $tmp
  32. mv $list MPIlist.csv

  33. echo "Finished"
复制代码


145

帖子

0

威望

3119

eV
积分
3264

Level 5 (御坂)

3#
发表于 Post on 2022-9-12 10:47:06 | 只看该作者 Only view this author
本帖最后由 neocc 于 2022-9-12 10:49 编辑
pika02 发表于 2022-9-12 02:09
非常感谢楼主的脚本
为了批量计算MPI和满足自己强迫症,我把脚本改得优雅了一些

稍微歪个楼,请问如何读取计算静电势时multiwfn输出信息里面的极大值和极小值,然后对极大值向上取整,对极小值向下取整呢?
我的代码如下,但是运行后没有结果输出
  1. #!/bin/bash

  2. function ceil(){
  3.   floor=`echo "scale=0;$1/1"|bc -l ` # 向下取整
  4.   add=`awk -v num1=$floor -v num2=$1 'BEGIN{print(num1<num2)?"1":"0"}'`
  5.   echo `expr $floor  + $add`
  6. }

  7. max= grep "^\*" log-ESP-$1|tail -1|awk '{print $5}'
  8. min= grep "^\*" log-ESP-$1|head -1|awk '{print $5}'
  9. $UP=   echo `ceil ${max}`        ;echo $UP
  10. $DOWN= echo `ceil ${min}` - 1|bc ;echo $DOWN
  11. #read -p "max + 1 " up
  12. #read -p "min - 1 " down
  13. #echo `ceil $1`


  14. cat << EOFB > ESPbar-$1.sh
  15. cat << EOF > ESPbar.txt
  16. 12
  17. 0
  18. 9
  19. all
  20. ${DOWN}, ${UP}
  21. 20
  22. 3
  23. q

  24. EOF
复制代码

80

帖子

2

威望

596

eV
积分
716

Level 4 (黑子)

4#
发表于 Post on 2022-9-14 02:02:47 | 只看该作者 Only view this author
本帖最后由 pika02 于 2022-9-14 05:37 编辑
neocc 发表于 2022-9-12 10:47
稍微歪个楼,请问如何读取计算静电势时multiwfn输出信息里面的极大值和极小值,然后对极大值向上取整,对 ...

玩儿shell脚本出毛病了,首先应该用 bash -x 你的脚本 自己检查检查
你这还自己造轮子,也太麻烦了,你干脆就用shell输出两串带小数的,然后接一个python脚本之类,np.ceil()和np.floor()不香嘛!
用excel也不是不行

145

帖子

0

威望

3119

eV
积分
3264

Level 5 (御坂)

5#
发表于 Post on 2022-9-14 20:14:42 | 只看该作者 Only view this author
pika02 发表于 2022-9-14 02:02
玩儿shell脚本出毛病了,首先应该用 bash -x 你的脚本 自己检查检查
你这还自己造轮子,也太麻烦了,你 ...

说的也是,还是用python写个脚本更香,还能跨平台

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2024-11-27 21:39 , Processed in 0.499554 second(s), 25 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list