Tuesday, April 17, 2018

[GrADS] ctl文件报错提醒


  1. empty grid --> 往往是time step出错,比如时间没有算对,或者time step不足。
  2. 经度上,网格与grads自带的mask不符合 --> 说明control file的longitude起始点写错了,不符合数据文件的起始点顺序,这时候需要修改control file的XDEF这一项的起始点。
  3. 1st column 不能读 --> 主要是因为数据文件是思维的,还有z level这一维度,var (t,z,y,x),所以在VAR这一项,不能写成 varname 0 99 varname这种三维的模式了。要写成varname=>varname 0 t,z,y,x longname,0表示虽然是z的函数,但z只有一个level,就是surface level,所以是0。
  4. 阅读netcdf 文件的时候,建议使用ctl file去读,option这一项写着netcdf。阅读binary 文件的时候,如果option这一项还写着netcdf,则会报错。
  5. const(var, value, -u)这个函数,每次使用时要注意value这个值,要和undef相匹配。
  6. 通过cdo生成netcdf文件的control file,基于它再进行修改,相对自己从头开始写control file比,不容易出错。

没有什么做不到

转眼间韩国大哥生了第三个孩子,意大利大哥也有了他的第一个孩子,体奥博士答辩了,师兄们都纷纷找到了教职,而我还尝试在一堆散沙中寻找一丝规律,看到我的未来。

我不要害怕过去,要从过去的经验中吸取教训,避免错误的发生。只要真正意识到了自己的错误和问题,认真对待,没有什么做不到。

借用文章里的几句话,给自己提个醒:
人生的幸福,我的感觉来自独立思考的能力自律(控制住自己的欲望)保持对新事物的敏感度和参与度
  • 比选择未来方向更重要的是一个人独立思考的能力,自己纠错、自己拯救自己的能力,自己找方向的能力。我直到今天一直在自己做决策,都是自己研究琢磨,我也有问人的时候,但是我从来不问人生该怎么选择,我只问具体的技术性问题。
  • 保持对物欲的控制,管理好自己,培养良好的习惯,我们可以摆脱很多不必要的的麻烦。
  • 保持年轻的状态是对新生技术的敏感,这才是真正保持年轻的秘诀。 

如何找、读文献?

关于找文献(from GKY)

1,泛读:比如,和我的研究相关的有二十几种杂志(这些也是我自己可能会投的杂志
),我在这些杂志的网站上都注册,叫杂志每发一新期时都自动给我发个email,里面有
这一期所有文章的 links. 我几乎每天都会收到这样的 emails.不管多忙,我都会花几
分钟把所有文章的 title and abstract看一遍。这些文章多数跟我做的是没关系的,
但有助于我了解整个领域的发展动态。有个别是我感兴趣和相关的,那我就得仔细读了。

2,精读:你做的topic,要时不时在 pubmed上搜索一下(当然,通过上面的泛读,也能
找到这些文章,但有时会有漏掉的)。这其中你认为重要的,要仔细读,反复读。

3,根据综述读:如果你要了解一个你不太熟悉的领域,最好的办法就是找一篇好的最
近的相关综述,并从中展开去读。

4,上面三种都是很常用的读文献的方法,下面这种是我认为很重要,但不太常用的,
就是根据作者读:比如我在刚做博后时,集中把我博后导师过去所有的文章读了一篇。
我事业上的idol, role models的历年的所有文章(或至少是主要文章)我都要集中读
。这样的好处是可以非常系统地学习这些人是怎么做science的,从中领悟別人是怎么
成功的。这就好比刚入行时,李克勤会去买谭咏麟的所有唱片,科比会去观摩乔丹的所
有比赛录像,他们仔细揣摩并模仿自己的偶像是怎么唱歌和打球的,并结合自已的特点
,最终形成自己的风格。

5,如果你有朝一日能作上PI,你可以适当减少精读,并把这一部分转给手下,让他们
去管理这些细节部分,而着重去培养自己的 vision和big picture, (高瞻远瞩的能力
)这对你怎么引领自己实验室发展至关重要。我经常会把一些宗师们写的最经典的最好
的textbooks从头到尾读一篇(而不是只读自已熟悉或有兴趣的章节。这些书和平时所
说的综述或网上的Wiki不一样,字里行间透露着大师们思考科学问题的方式。你要仔细

琢磨这些人是怎么思考问题的。还有就是读些哲理方面的书,有空多思考些哲学问题。


过去我总是在google scholar上找关键词,效果非常不好。
不要问我为什么在上完数据库检索这门课之后居然只会这一招。我也很悔恨。
现在发现,读一篇review,然后跟着里头的参考文献顺藤摸瓜,效果更好。

快读paper的秘诀是,不要全读。
这个感觉很简单,但是境界就在于你知道哪些东西不需要读。

其实我脑子里掌握了一个很好的记笔记的方法,那就是note flow 笔记流,但就是从来没有用过。
我建议在草稿本上画笔记流。


关于做笔记(from Xu,  我认为这一技巧利于引用):
我intensive reading的时候就会用两三句话总结一下每篇paper。包括这篇paper和其他paper的联系,还有我为什么觉得这篇paper有意思,还有我觉得我可能会因为什么而cite这篇paper。

[Linux] Files permission

A command to change the permissions of a directory so that others can not see it.
$ Chmod -R 700 /directory

Friday, April 13, 2018

[Python] read bil.zip file in python

The bil file is a widely-used GIS format, which can be read through gdal library in python.

GDAL installation
Although I have installed gdal in python before, recently I have a problem running gdal library in anaconda python. The error is gdal.so.20 does not exist. The work-around is as below from a stack exchange GIS forum:
In anaconda, uninstall the previous gdal library by
$ conda uninstall gdal
And then reinstall the libgdal before installing gdal
$ conda install libgdal
$ conda install gdal

Test if you can import the gdal library in python:
>> import gdal, gdalconst

Read zip file
Before reading the bil file, we need to use a package "vsizip" to unzip the zip-file. First, change the directory to the data folder, and then modify the filename with vsizip
>> os.chdir('path/to/file')
>> filename = '/vsizip/the_name_of_the_file.zip/the_name_of_the_file.bil'

This used to work but now it returns the error as:
Recode from CP437 to UTF-8 failed with the error: "Invalid argument"

The work-around is as below from github:
set the environmental variable
export CPL_ZIP_ENCODING=UTF-8

Read bil file
After successfully decode the zip file, one can read the file using the modified filename.

>> gdal.GetDriverByName('EHdr').Register()
>> img = gdal.Open(filename, gdalconst.GA_ReadOnly)
>> band = img.GetRasterBand(1)
>> data = band.ReadAsArray()


Saturday, April 7, 2018

4月文献速读


  • Two distinct influences of Arctic warming on cold winters over North America and East Asia (2015)
    • 北极的升温对中纬度地区的气候有着深远影响:北极的升温促进了异常反气旋和中温度西风槽的发展,带来极寒的冷空气。
  • Reduced North American terrestrial primary productivity linked to anomalous Arctic warming (2017)
    • 北极的升温导致了北美和东亚的极端寒潮事件,而这些北方的低温和南方的少雨使得美国的GPP下降
  • Rainforest-initiated wet season onset over the southern Amazon (2017)
    • 干季的蒸发能够产生一些云的条件。