crafly的个人博客分享 http://blog.sciencenet.cn/u/crafly

博文

转移到linux上来(8)- 一切都要自动化

已有 3886 次阅读 2009-11-18 11:05 |个人分类:未分类|系统分类:生活其它

记得本科时学习计算机课,当时有一门课程叫做自动机。这个就是计算机最原始的数学基础,可能数学系的觉得这个东西很简单。但是这个东西的确是计算机的精髓,我认为使用计算机就是要减少我们的重复工作,也就是说,但凡要干3次以上的事情,就一定要自动化。 当然这只是我的观点。 但是自动化给我们带来的东西的确太方便了。然而,生活中又太多的不如意,并不是任何东西都能够自动化的。事物之间总是存在这各种联系,但是这些联系又不是显性的。而且在我们平时所作的事情中,通常一件事情接着另一间事情,其中有些可以同时进行,有些需要序列化,也就是一件接一件的去做。事情之间衔接通常不顺利。计算机也是如此,你的机器上又数不清的程序,各个程序的输入输出又很大的不同。他们并不是同一个人设计出来的。各种风格各不相同。当然你可以接受软件厂商的一体化方案,比如MS office套件,但是你发现没有,你总是能遇到一些事情无法找到这些套件的。难道以后的软件发展趋势就是一套软件解决所有问题么?这样的软件需要怎样的硬件环境才能流畅运行?如果一但改了版本,你找不到所需功能怎么办?

我们需要的是一种工具,让这一切都能自己掌控的工具,一套自动化的工具。而且在需要的时候可以洞悉内部的事情。这一定是很多科研人员梦寐以求的,因为科学实验很少能够自动化完成的,那些都是工业化以后若干年的事情了。但是科学实验通常都是要进行若干便的,爱迪生的灯泡不就是这样么? 如果没有自动化工具,可以想象,实验多么的可怕。尤其是几百次的重复。当然编程可以解决这个问题,但是我们有现成的工具,就最好不要自己写代码。因为,代码总是有bug的。好了,计算机之外的不谈,我们只谈计算机之内的。

先假定一下:计算机就是数据的存储,处理和表达。那么好,在这个前提下,我们来讨论自动化的问题。如果你想自动烤面包煮咖啡,那么你一定要又硬件支持,千万别问我怎样拿CPU来煮咖啡。我不推荐,成本太高了。

数据是我们的实验对象,使用计算机,就是要对你采集的数据进行处理。目前我就将我作的一件简单的事情说下吧。

我又一些数据,需要先使用粗糙集做处理,然后将生成的规则在地图上标出来。似乎没有软件能做到这一点。而且,可能这个实验要重复好多次。

我先做一个简单的流程:
数据-->粗糙集(rosetta)->GIS(Grass)

为了描述简单,尽量不接触细节,我只说下这些东西是通过什么技术联系在一起的。

首先我选择bash作为链接工具。这个在ubuntu中是默认安装的。也就是一个自动化批处理工具,如果你想简单了解下的话。
Rosetta很好,又linux版本,编译好的,而且它还支持script,同时可以用clrosetta运行命令行。所以自动从数据生成规则,可以使用这个来完成。我导出的规则是一个文本文件。中间过程是保留的。rosetta接受的导入格式是支持csv的,我就不再说怎样能够得到csv的文件格式了,因为太长见了。
第二步:从规则到sql语句。
       规则有了,我现在需要将其转换为grass能够接受的形式,为了方便描述,假定规则,并且都是前件的条件属性数相同,并不重复。然后我们可以使用很多命令行的组合,把规则转换为sql语句。
        我用了一个shell脚本完成了这一过程。综合使用了sed,awk,cut,paste等等语句。
第三步:显示。
       Grass里面你可以将满足某一规则的语句通过上面一部生成的sql语句得到起决策的值,并且保存在grass的表中。然后通过ps.map就可以自动出图。

整个3大步骤都可以使用shell来联系起来。

好了,这样就完成了所有步骤。的确我花了一个下午来写这些脚本。但是如果我都是手工去做这些事情,恐怕10次实验,就化的时间不止是一两天能完成的了。而现在,我只需要几秒钟,一次实验就完成了。通过调整不同的参数。而且如果相比较的话,可以指定不同的离散化,约简方法,生成不同的地图,这样就能够大大的节约我们的时间。

前段时间我还帮一个师妹写采样的脚本(用于采样方法的比较),当然里面用到了R,但是这样1000次采样只需要很短的时间就能完成。如果是手工运行软件呢?这些都是自动化可以帮助你完成的。

其实上面的工作也可以在windows下面用shell完成,但是windows的cmd或者command.exe功能太弱。编译好的bash工作时总会遇到问题。如果使用cygwin,还不如在linux下来完成。

科研中大部分数据都是文本的描述。linux的命令中又太多的文本处理命令了。都很方便。如果是图形的话,linux中也有很多免费的库可以使用。而且图像处理的最佳语言,C/C++在linux中的要比windows中的好用太多。

再说写论文,是不是很多人都为不同杂志的格式而不停的调整word文档?还有永远都似乎很难解决的文献排版自动应用。其实在linux可以使用latex解决这个问题。latex中使用不同的格式,只是一句指令的问题(很多国际期刊都有latex的模板可以下载)。office不知道能不能做到。似乎不可能。而且latex里面的公式编辑只能说太好用了。而且,这个东西也没有你想象中的难学。如果你用shell,是不是可以想想,自动把出的图更换到latex源文件,并且自动更换文章中的图片和描述呢?是不是很诱人?

在linux中一切皆有可能。

https://blog.sciencenet.cn/blog-290274-271872.html

上一篇:转移到linux上来(7)- 怎样上网?怎样发邮件?怎样看word.....
下一篇:转移到linux上来(9)- 无题
收藏 IP: .*| 热度|

0

发表评论 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-28 20:08

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部