24小时热门版块排行榜    

查看: 3264  |  回复: 24

asaka

银虫 (初入文坛)

★ ★ ★ ★ ★
zhou2009(金币+5): 2011-12-11 20:11:34
shell版实在是太慢,既然要用到python,那就纯python吧,速度快多了。
CODE:
#!/usr/bin/env python
import sys
block='Population'
eigen='eigenvalues'
occst='occ'
virst='vir'
sepst='--'
for filename in sys.argv[1:] :
  f=open(filename,'r')
  txt=f.read().splitlines()
  f.close()
  for line in txt :
    if line.find(block) > -1 or line.find(eigen) > -1 :
      if line.find(block) > -1 :
        eocc=[]
        evir=[]
      elif line.find(occst) > -1 :
        data=line.split(sepst)[1]
        eocc=eocc+[float(i) for i in data.split()]
      elif line.find(virst) > -1 :
        data=line.split(sepst)[1]
        evir=evir+[float(i) for i in data.split()]
  print "File :",filename
  if len(eocc) > 0 : print "  HOMO :",max(eocc)
  if len(evir) > 0 : print "  LUMO :",min(evir)

11楼2011-12-09 17:40:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

秋雨子

金虫 (小有名气)

送鲜花一朵
引用回帖:
9楼: Originally posted by asaka at 2011-12-09 04:13:39:
说一下我的想法啊:

首先用grep把有用的输出信息过滤一下:
一个是分割各个计算结果,免得把好几个计算的信息混在一起,
另外也是楼主要求的,只输出最后的结果,
另一个就是各个轨道能的数据。

然后把占 ...

非常感谢您的不吝赐教!思路很清晰 ,不过我还有一点小问题,麻烦您再解答一下,我只会用一点shell,python不知道怎么用,我把您的命令粘帖到text里面,运行了一下 没有输出文件,我把后面的python写的那两行删了,让程序输出到一个文件a里面,里面什么也没有,实在是初学加自学,希望高手可以耐心解释下!
To the time to life, rather than to life in time
12楼2011-12-09 21:38:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

秋雨子

金虫 (小有名气)

引用回帖:
12楼: Originally posted by 秋雨子 at 2011-12-09 21:38:52:
非常感谢您的不吝赐教!思路很清晰 ,不过我还有一点小问题,麻烦您再解答一下,我只会用一点shell,python不知道怎么用,我把您的命令粘帖到text里面,运行了一下 没有输出文件,我把后面的python写的那两行删了 ...

补充一下,我的文件全是以row001.log,row002.log这种格式命名的,一共一两万个,分子都是opt+freq,所以输出文件没有什么太大的不同,只是优化的圈数不同,文件内容如原来上传的row1.log。
To the time to life, rather than to life in time
13楼2011-12-09 21:43:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

秋雨子

金虫 (小有名气)

引用回帖:
11楼: Originally posted by asaka at 2011-12-09 17:40:15:
shell版实在是太慢,既然要用到python,那就纯python吧,速度快多了。
[code]
#!/usr/bin/env python
import sys
block='Population'
eigen='eigenvalues'
occst='occ'
virst='vir'
sepst='--'
for file ...

刚痛苦的自学了半年的shell,不会还得再自学python吧!能不能写个单纯的shell的程序啊?将非常感谢,并奉上金币!
To the time to life, rather than to life in time
14楼2011-12-09 21:52:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mchen10

金虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★
zhou2009(金币+5): 2011-12-11 20:12:00
秋雨子(金币+10): 非常感谢!谢谢交流!我试了下输出的只有文件名字,没有homo,lumo能量,还是我太笨,再仔细研究下!仍然感谢! 2011-12-11 20:32:30
我来段bash吧 献拙了
CODE:
#!/bin/bash
# print homo lumo energy of gaussian output
# usage: print_homo_lumo filename(s)
for file in "$@"
do
echo $file
tac $file | tr "\n" "@" | egrep -o "@ Alpha virt\. eigenvalues.{0,75}@ Alpha  occ\. eigenvalues.{0,75}@ Alpha  occ\. eigenvalues" tio2.rev| tr "@" "\n" | head -n3 | awk '{if ($2 == "virt.") print $1" LUMO "$5; if($2 == "occ."){i=NF; print $1" HOMO "$i} }'
done

更痛苦的是梦没醒路已经不能走了
15楼2011-12-10 02:54:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ZDBWHZ

金虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★
zhou2009(金币+5): 2011-12-11 20:12:18
秋雨子(金币+40): 没有错误,不用修改可以直接搞定!也不用再学习新的语言,非常感谢! 2011-12-11 20:26:28
直接shell:
#!/bin/sh
# ZDB, HNU, 2011/11/15.
# ZDB, HNU, 2011/11/23 modified to be more pratical.
`ls -l *.log | awk '{print $9}' | sed 's/.log//g' > file_list`
cat file_list | while read each_file
do
    file1=./$each_file".log"
    HOMO=`grep 'Alpha  occ.' $file1 | tail -n 1 | awk '{print $NF}'`
    `grep '^.Alpha virt.' $file1 > tmp`
    total_line=`awk '{print $1}' tmp | wc -l`
    blockflag=`grep 'Population analysis' $file1 | wc -l`
    if [ $blockflag == "1" ]
    then
        start_n=`expr ${total_line} \* 1 / 2 + 1`
    elif [ $blockflag == "2" ]
    then
        start_n=`expr ${total_line} \* 1 / 2 + 1`
    else
        start_n=`expr ${total_line} \* 2 / 3 + 1`
    fi
    LUMO=`sed -n ''$start_n'p' tmp | awk '{print $5}'`
    echo $each_file $HOMO $LUMO >> extract.txt
done

» 本帖已获得的红花(最新10朵)

16楼2011-12-10 13:31:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ZDBWHZ

金虫 (正式写手)

【答案】应助回帖

★ ★
zhou2009(金币+2): 2011-12-11 20:13:03
这样最后的txt文档数据可以导入到origin等软件,再转到Excel进行后续的DFRT指数计算。
17楼2011-12-10 13:32:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

asaka

银虫 (初入文坛)

★ ★ ★
zhou2009(金币+3): 2011-12-11 20:13:17
以上作者只考虑闭壳层计算的情况,你有开壳层的计算吗?那时候你需要总的HOMO,LUMO还是分别alpha以及beta的HOMO和LUMO?
他们的程序都只有一点小问题,相信LZ可以搞定。
mchen10 的程序少了一个 |,多了一个奇怪的tio2.rev
ZDBWHZ 的程序用ls -l *.log可能会碰到兼容性问题,还不如直接ls *.log | sed .
18楼2011-12-10 16:33:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mchen10

金虫 (正式写手)

【答案】应助回帖

引用回帖:
18楼: Originally posted by asaka at 2011-12-09 20:33:17:
以上作者只考虑闭壳层计算的情况,你有开壳层的计算吗?那时候你需要总的HOMO,LUMO还是分别alpha以及beta的HOMO和LUMO?
他们的程序都只有一点小问题,相信LZ可以搞定。
mchen10 的程序少了一个 |,多了一个奇怪 ...

CODE:
#!/bin/bash
# print homo lumo energy of gaussian output
# usage: print_homo_lumo filename(s)
for file in "$@"
do
echo $file
tac $file | tr "\n" "@" | egrep -o "@ Alpha virt\. eigenvalues.{0,75}@ Alpha  occ\. eigenvalues.{0,75}@ Alpha  occ\. eigenvalues" | tr "@" "\n" | head -n3 | awk '{if ($2 == "virt.") print $1" LUMO "$5; if($2 == "occ."){i=NF; print $1" HOMO "$i} }'
done

抱歉,tio2.rev是测试产物 去掉就好了(留着也不影响)
至于开壳闭壳的问题,我们给个思路 楼主如果什么都让别人来搞定 就算程序可以用 真正的收益也就那么一点点

» 本帖已获得的红花(最新10朵)

更痛苦的是梦没醒路已经不能走了
19楼2011-12-11 04:06:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

秋雨子

金虫 (小有名气)

送鲜花一朵
引用回帖:
16楼: Originally posted by ZDBWHZ at 2011-12-10 13:31:18:
直接shell:
#!/bin/sh
# ZDB, HNU, 2011/11/15.
# ZDB, HNU, 2011/11/23 modified to be more pratical.
`ls -l *.log | awk '{print $9}' | sed 's/.log//g' > file_list`
cat file_list | while read  ...

非常感谢!完美的解决了我的问题!不胜感激!话不多说了,通知版主奉上金币,也非常谢谢您能分享这个脚本,让菜鸟可以多学习学习!
To the time to life, rather than to life in time
20楼2011-12-11 20:04:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 秋雨子 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 什么时候开奖? +4 CrisMessi 2026-08-18 4/200 2026-08-19 00:53 by gatelove
[教师之家] 为什么余额宝的年化利率越来越低?主要原因有哪些? +3 瞬息宇宙 2026-08-15 3/150 2026-08-18 21:40 by xiaohuixin
[基金申请] 2027广东省杰青 +3 奶牛小黑 2026-08-15 9/450 2026-08-18 20:09 by 奶牛小黑
[基金申请] 朋友圈看到的 +4 wangzilk 2026-08-18 5/250 2026-08-18 19:25 by wangzilk
[基金申请] 欢迎发来filecode的Mz6后的代码验证其规律 +51 医学老男孩 2026-08-13 110/5500 2026-08-18 19:07 by icerianxia
[基金申请] 明天放榜? +5 Shxjjxjkx 2026-08-18 5/250 2026-08-18 18:14 by -大大大大大-
[基金申请] 时间戳变了,能看出什么问题? +8 基诺咪客 2026-08-17 11/550 2026-08-18 17:13 by 悠然熊猫
[基金申请] 重要消息,中午系统在维护 +9 yuleib84 2026-08-18 10/500 2026-08-18 16:52 by archvillain
[基金申请] 时间戳又变了8-15 +14 archvillain 2026-08-15 26/1300 2026-08-18 13:37 by phantomgost
[基金申请] 今天维护系统维护 祝所有人 高中 +8 gjjjzhong 2026-08-18 9/450 2026-08-18 13:01 by 家与远方
[基金申请] 哪位老哥知道今年的国自然具体哪一天放榜? +13 Ldrop2023 2026-08-13 16/800 2026-08-18 12:25 by 淀粉搬运工
[基金申请] 快农历七夕节了,轻松一下,男人悄悄话,女施主请不要进来。 +4 Tide man 2026-08-14 5/250 2026-08-18 11:35 by Tide man
[基金申请] 感觉是下周放榜了 +6 angus9576 2026-08-17 11/550 2026-08-17 23:57 by angus9576
[基金申请] filecode=后面第一个是大写字母 +8 wangze12014 2026-08-14 10/500 2026-08-17 17:05 by xter9665
[基金申请] 今天系统多次维护,明天很可能放榜! +8 zju2000 2026-08-16 9/450 2026-08-17 12:20 by lmz0216
[精细化工] 招聘 金属平磨液,抛光液研发工程师 +3 小天0311 2026-08-14 3/150 2026-08-16 07:31 by H9PLUS
[基金申请] 各位道友,我要去昆明玩几天,回来见。 +7 Tide man 2026-08-14 8/400 2026-08-15 01:11 by arzu_hma
[基金申请] 重要来源:本周末出结果 +10 瞬息宇宙 2026-08-12 10/500 2026-08-13 15:46 by likettle
[基金申请] Filecode 又变了,巨变 +3 WH3796 2026-08-12 4/200 2026-08-13 14:13 by 小木虫6752397
[基金申请] 结合人工智能,周易传统文化,filecode打分制来了,3分以上希望很大。 +3 Tide man 2026-08-12 4/200 2026-08-13 08:35 by ZJTJZ
信息提示
请填处理意见