Thursday, February 27, 2014

终于有少许突破了。。。加油!

进入科研队伍也是有两三年了,现在终于。。。终于对数据有了稍许感觉,出了什么bug大概也有判断的方向了,之前一直觉得没有怎么前进,估计是努力和灵活性都同时缺乏的结果,因为灵活性不够,就卡在那里,不继续努力。
大师兄,终于有你说的那种感觉了!

Friday, February 21, 2014

[Linux] Install R and Rpy on Linux

Updated on 02/04/2014

Check the Rhome
open Rstudio
>> R.home(component = “home”)

Install rpy2 with Anaconda

I am not sure how other people work on this.
I tried to install rpy2 by this command:
pip install rpy2
but it failed because the error like headline, gcc status, etc..
I also tried to install some dependencies like python-devel, but still, in vain.

Finally, I tried conda install. This magic command always works. That's why I always save it as the last back-up option.

Here you go:



After one year, I found I've spent a lot of useless time in doing this. Lesson learned: never install standalone python package on your own. That's a lot of pain.





Install Rpy on Linux

Written on 02/21/2014
  1. 下载R的压缩包R-x.y.z.tar.gz并保存到本地:the R archive Web Page
  2. 在命令行输入 tar xzvf R-x.y.z.tar.gz 解压缩到该文件夹
  3. 命令行输入 cd R-x.y.z 进入该文件夹
  4. 命令行输入./configure 
  5. 命令行输入make ,将近 10分钟的编译过程
  6. 命令行输入make check 保证程序正常安装
  7. 如果有root的权限,以管理员身份登陆,命令行输入make install 这样主机上所有用户都能使用
  8. 命令行输入make dvimake info;make pdf
  9. 安装完毕

Tuesday, February 18, 2014

重拾线性代数·2

强烈推荐原博客:孟岩:理解矩阵(一)

容纳运动是空间的本质特征。事实上,不管是什么空间,都必须容纳和支持在其中发生的符合规则的运动(变换)。

1. 线性空间是什么样的对象的集合?

线性空间中的任何一个对象,通过选取基和坐标的办法,都可以表达为向量的形式。

2. 线性空间中的运动如何表述的?也就是,线性变换是如何表示的?

从线性空间中的一个点运动到任意的另外一个点,都可以通过一个线性变化来完成。在线性空间中,当你选定一组基之后,不仅可以用一个向量来描述空间中的任何一个对象,而且可以用矩阵来描述该空间中的任何一个运动(变换)。而使某个对象发生对应运动的方法,就是用代表那个运动的矩阵,乘以代表那个对象的向量。

在线性空间中选定基之后,向量刻画对象,矩阵刻画对象的运动,用矩阵与向量的乘法施加运动。

矩阵的本质是运动的描述。== 矩阵是线性空间里的变换的描述。


矩阵是线性空间中的线性变换的一个描述。在一个线性空间中,只要我们选定一组基,那么对于任何一个线性变换,都能够用一个确定的矩阵来加以描述。对于一个线性变换,只要你选定一组基,那么就可以找到一个矩阵来描述这个线性变换。换一组基,就得到一个不同的矩阵。所有这些矩阵都是这同一个线性变换的描述,但又都不是线性变换本身。

什么是基呢?这里只要把基看成是线性空间里的坐标系就可以了。
若矩阵A与B是同一个线性变换的两个不同的描述(之所以会不同,是因为选定了不同的基,也就是选定了不同的坐标系),则一定能找到一个非奇异矩阵P,使得A、B之间满足这样的关系:

A = P-1BP

所谓相似矩阵,就是同一个线性变换的不同的描述矩阵。
什么相似标准型,对角化之类的内容,都要求变换以后得到的那个矩阵与先前的那个矩阵式相似的,为什么这么要求?因为只有这样要求,才能保证变换前后的两个矩阵是描述同一个线性变换的。

重拾线性代数·1

一. 学习动机(exciting questions)

强烈推荐原博客:孟岩:理解矩阵(一)

矩阵究竟是什么东西?
向量可以被认为是具有n个相互独立的性质(维度)的对象的表示,矩阵又是什么呢?
我们如果认为矩阵是一组列(行)向量组成的新的复合向量的展开式,那么为什么这种展开式具有如此广泛的应用?特别是,为什么偏偏二维的展开式如此有用?如果矩阵中每一个元素又是一个向量,那么我们再展开一次,变成三维的立方阵,是不是更有用?

矩阵的乘法规则究竟为什么这样规定?
为什么这样一种怪异的乘法规则却能够在实践中发挥如此巨大的功效?很多看上去似乎是完全不相关的问题,最后竟然都归结到矩阵的乘法,这难道不是很奇妙的事情?难道在矩阵乘法那看上去莫名其妙的规则下面,包含着世界的某些本质规律?

行列式究竟是一个什么东西?
为什么会有如此怪异的计算规则?行列式与其对应方阵本质上是什么关系?为什么只有方阵才有对应的行列式,而一般矩阵就没有。而且,行列式的计算规则,看上去跟矩阵的任何计算规则都没有直观的联系,为什么又在很多方面决定了矩阵的性质?难道这一切仅是巧合?

矩阵为什么可以分块计算?
分块计算这件事情看上去是那么随意,为什么竟是可行的?

对于矩阵转置运算AT,有(AB)T = BTAT,对于矩阵求逆运算A-1,有(AB)-1 = B-1A-1。两个看上去完全没有什么关系的运算,为什么有着类似的性质?这仅仅是巧合吗?

为什么说P-1AP得到的矩阵与A矩阵“相似”?

特征值和特征向量的本质是什么?
它们定义就让人很惊讶,因为Ax =λx,一个诺大的矩阵的效应,竟然不过相当于一个小小的数λ,确实有点奇妙。但何至于用“特征”甚至“本征”来界定?它们刻划的究竟是什么?

说话模棱两可表现出岌岌可危的人生态度

        1.要知道“我”真正需要的是什么;

  2.先扬后抑的方法并不是对他人的礼貌和尊重,而是让沟通更费周折的画蛇添足;

  3.说话含混不清,表现出一个人困惑于他人能否接受自己的观点。       

======================================================================

        模棱两可地表态,是故作从容地防御
  有的人在讲一件事情的时候,总是习惯先绕个弯子,对于真正的需求,他们没有办法直言不讳地明说,因为他们不知道对方会做出什么样的反应,他们会为此而惴惴不安,这便是他们保持高度防御意识的表现。

  人们为什么会有这种防御意识?
  其中最主要的原因就是人们担心坦率地表达自己的需求后,对方能否接受。出于此顾虑,给自己“留一条后路”就成了一个更好的办法。

        防御意识有什么消极影响?

  防御意识让人和人之间的沟通变得更加复杂。警惕性和怀疑的心理,让交流中的当事人局促不安。而且不自然、难以敞开心扉的交流也很耗费我们的精力,很容易让我们陷入疲惫的精神状态。所以我们不喜欢防御的状况,和防御的人相处,自然也会让我们产生自我防御的顾虑。

  这样的交流手段使人和人之间的沟通变得效率低下,当事者对彼此之间的真正所需缺乏清楚的认识。如此乏善可陈的僵持关系终究是无法获得进展的,他们不会询问自己的困惑,多数时候都在自行揣测,而这样的行为又促使了误会的产生。

  经常摆出一副防御姿态的人,对自己的需求也变得愈发迟钝,他们对自己生活的主导没有足够的信心,生机盎然的生活与他们渐渐无缘。我们要知道,自己在言行上的诚恳与否,决定了对方与自己交流的态度。

  
》》》谁在用模糊的口头禅?——防御性沟通的语言模式

  仔细观察人的语言模式,我们会发现,怀有较高防御意识的人经常会使用以下话语。把这些话作为参照和自己比对,考虑一下经常使用这些话会对你的人际交往产生何种影响。

  1.“好的,但是……”

  当人们在交流过程中出现意见上的分歧时,其中一方的本意原为“不行,绝对不可以!”但为了不伤和气,他先肯定了对方,当对方以为自己的要求得到许可时,他又费劲脑汁地将自己拒绝的本意含糊地表达出来。

  但由于已经表现出了肯定,再反驳便导致了说服力的缺乏,而且迟来的拒绝也很容易使对方心生埋怨。即使你觉得“不行”很难说出口,但是不及时表达出拒绝的态度,你会更加受困于对方所提的要求。

  平时经常使用这类语言模式的人要记住,对于你想要拒绝的请求,及早拒绝绝对优于你的模棱两可。并且先扬后抑的方法并不是对他人的礼貌和尊重,而是让沟通更费周折的画蛇添足。

  2. 语言末尾的表达含混不清

  有些人在沟通时语言含混不清,语序错乱无序,话题没有主次之分。这样含混不清的表达无法给别人留下深刻的印象,并且他们对自己的需求也没有确切的认识。在对个人看法侃侃而谈的人面前,他们表现得怯懦、卑微,正因如此,阻碍了他们对人际关系的把握。

  说话含混不清,表现出一个人困惑于他人是否能接受自己的观点。而这种表现很可能成为人际关系的绊脚石。所以先把自己要讲的内容整理好,然后再经口传达出去,最后再静观对方的反应。从这几个环节中总结出经验,从而渐渐让自己的语言更符合逻辑,表达的内容更容易让人接受和理解。

  3.“就那么回事……”

  在别人提问的时候,有些人经常用“就那么回事……”作为回答。以前来我这里咨询的人当中就有一位经常使用这句话。记得在我和他交谈的10分钟内,我用“正”字来记录从他口中说出的“就那么回事……”。

  结果,当我把记录拿给他看的时候,他自己也十分惊讶。在无意识下频繁地说出这种话,很能说明问题,那便是其无聊乏味的精神状态。虽然他表面上看似若无其事,内心却充满了对生活绝望的情绪。

  语言的表达可以展现一个人对生活的态度,经常使用这类语言,会让一个人对生活的态度变得更加消极。所以要认清自己常用的表达方式,有意识地积极更改,这也是调节生活状态的一种良好手段。

  4.“某某人说……”

  不论谈论什么样的事情,有些人总是习惯举别人的例子,或者引用他人的话,就像一个犯了错误的孩子,将过错推卸给其他的小朋友一样。经常使用这句话的原因在于他们的判断和行为基准都依赖于其他人。

  因自信的缺乏,当坦白说出自己的想法和需求时,他们担心无法得到接受。无法表达的自身需求,又促使他们借用他人的话作为防御工具。

  但是这种语言模式对人际关系并非有利。要想让关系得到进展,首先要将自己的需求明确地表达出来,这样才能使对方进一步了解自己,提高关系的亲密度。如果你总是习惯借别人的话开口,以别人的论调为中心,那么你就有必要对此好好思考一番了。

  心理TIPS:说清自己的需求才能提高自信
  警惕和防备就像是乌龟的壳,它们的作用都是对脆弱部位进行保护。但你是否打算永远背负着这沉重的外壳呢?

  我们时常会羡慕那些可以坦率表露自身欲求的人,他们不会把这些欲求缩小或夸大,经他们侃侃而谈,似乎多数问题都可以迎刃而解。这些人可以如此从容不迫的原因,在于他们清楚地认识到了自己的欲求,并且有明确的人生方向和价值观。

  为了确切地表达自己的想法,我们必须知道“我”真正需要的是什么,不要以任何借口使自己的表达显得模棱两可。也许我们本身的欲求并非通过合理的表达就能实现,但是通过耐心、融洽的沟通,在双方之间达成一种共同受益的默契,即使不以防御的心态作为交际的基础,也能让自己从容自若地表达。

Thursday, February 13, 2014

Learn more study less-笔记(更新内容置顶)

技术:
快速阅读

   1)指读法(声读法,数字游戏法): 调整手指移动速度控制阅读速度,降低速度揣摩重点,掠过不重要的内容。

   2)练习阅读 :
速度提高:3分钟读的单词数,用稍微快于自己能理解的速度。
理解力提高:3分钟,记下知识点,再读材料,边读边记下,对比两个知识点的数目。

可以考虑用以下方法练习四种技能:
快速阅读(指读法)+ 笔记流 + 费曼技巧复述内容对照:练习阅读理解力+口语。
   3)积极阅读:

a)要点是什么?完整获取信息 b)怎样才能记住要点:联系,视觉化,比喻法 c)怎么扩展主要点以及应用,明白,扩展和应用。

笔记流 (精美复制老师的笔记并无必要,与其浪费时间不如联想老师内容的关系)
   1)不要呆板、僵硬、貌似层次分明的笔记
   2)在写下来的观点之间建立联系

内在化
   1)为你正在学习的东西创造脑海中的图像
   2)在这幅图像上加上其他的感官和情感
   3)寻找图像不适用或不足的地方、防止产生错误的联系

六步骤及目标:

  1)获取:每个人处理各种形式信息的能力直接造成了学习能力的高低。在获取阶段丢失的信息在后面的环节无法补偿,没有任何其他整体性学习技术可以弥补这一损失。
目标:简化找出真正需要的信息,容量获取尽量多的信息、速度

  2)明白:只是理解了信息的表面意思。只有明白了基本信息才能深入,破除理解障碍
目标:分解问题、缩小范围

  3)拓展:
   a、深度:探究知识的背景
   b、横向:探究知识的关系;建立模型,在模型与原知识之间建立联系
   c、纵向:与其他结构联系后,从其他结构的角度探究知识;
简图法&比喻法 &内在化
  4)纠错:剔除错误关系;实践!!!(如阅读与你观点相反的书籍,把结论放入现实世界看)
  5)应用
  6)测试:确定达到了哪一层次


五种信息类型:

  1)随意信息:无规律、死记硬背;逻辑、联想法、挂钩法、压缩法
  2)观点信息:难点在于获取阶段;速度技巧、图示法
  3)过程信息:依赖于拥有正确模型;内在化、比喻法、图示法、模型纠错、要大量练习
  4)具体信息
  5)抽象信息:降低接收速度,深入研究


策略基础: 

  1)结构--关于某个学科的知识之间联系的总和,它是你大脑中的城市。
  2)模型--将知识压缩成基本的单元,模型是结构的种子,形成模型的方法包括比喻法、内在化和简图法,它是你的知识道路中主要的几个十字路口。
  3)高速公路--不同结构之间的联系,有助于创造性的思考。“跳出盒子之外思考”很好的描述了这种跳出原有结构之外,从其他结构来观察原有结构的思考方式。


核心是比喻法,通过纵向比较,将不同学科之间用共同点联系起来。

如何读写希腊字母?


Sunday, February 9, 2014

关键不在于压制情绪,而是在于唤醒理智

近期看到柏拉图人性三分法在生活中的应用,很是欣喜!欲望、激情和理性这三个层次,并非抽象不可及。理性是对激情的记录描摹和分析。我们可以真切体会到写作、口头表达对思维组织的重要性。说清楚了,写清楚了,才表明想清楚了。当然,理性若占据了全部,激情退出舞台,这时候就进入了有点无聊的纯分析、纯学术阶段。

转自笑来博文:
情绪是很难控制的──因为它本身就处于“更底层”(相对于理智来说)。并不像大家想象得那样,把情绪压制下去就没事儿了──更可能的结果是,那情绪越是压制越是强烈。
事实上,更为有效的建议是:关键不在于压制情绪,而是在于唤醒理智。按照脑科学家的研究结果来看,由于能量是有限的,所以,一旦唤醒理智,情绪将自然而然地被削弱,甚至只能休眠。
第一种手段是,先了解以上的道理之后,将来感受到强烈情绪的时候,对自己用语言描述自己正在经历的感受──或者在心里对自己说,或者用笔写下来,或者向别人说这种方式并不推荐,但它是基督教吸引人的重要原因之一,因为有什么事都可以跟神父说……)。这种手段看似平常,但有着神奇的功效。原理是当我们使用语言的时候,必须启动负责理智的第三层,否则我们没办法使用语言去描述任何事情。一旦第三层开始启动了,它就会渐渐占用更多能量。
第二种手段是,启用即时感受。这是个新的概念。当我们感知周遭事物的时候,实际上我们有两种方式:模式认知,即时感受。使用模式认知的时候,信息交由第二层处理,然后再返回第三层;使用即时感受的时候,信息直接由第三层处理。什么事即时感受呢?就是你能听到身边的声音,看到眼前的景象,体会到风吹过皮肤的感觉……(这个有点像冥想,旁观自己的思想。冥想盆则是旁观别人和自己的行为和语言)
一旦负责理智的第三层重新被启动,并且能够正常运转之时,你对第二层所能够体会到的情绪将有“被更新”的描述,即,所谓的“理智地对待情绪”。
很多人由于不懂这样的道理,所以,他们是被反方向牵引的。当他们突然被强大的情绪所影响之时,第三层休眠掉,而后又受不了第二层过于活跃,于是他们下意识地启动负责反射的第一层──吃和睡就由这一层管理)。日常生活中经常看到女生失恋之后就变胖了,大抵上就是为了使第二层休眠所以不顾一切地启动第一层才造成的。

Friday, February 7, 2014

[Pygrads] Basic functions

Python-grads interface is exactly what I want.
Hopefully, I will discuss time module operations in next blog. Here we go!

First things first: install pygrads version: 1.1.8
First step: import libraries
#Libraries
import grads
import matplotlib.pyplot as plt
import numpy as np

# start grads
ga = grads.GrADS()
# or
#ga = grads.GrADS(Bin='grads',Window=False,Echo=False)

Second step: open files in GrADS thru python
# open control file
ctl_file = 'home/computer/usr/filename.nc'
ga('sdfopen' + ctl_file)

# display data
ga.imshow('variable.1(t=400)', interpolation = 'nearest')
plt.show()

Third step: import data into python
# import data
data = ga.exp('variable.1(t=1)')
# extract grid information
ga('set t 1 last')
info = ga.coords()
nt = len(info.time)
nlat = len(info.lat)
nlon = len(info.lon)
print info
print nt, nlat, nlon


Basic operations:
asum = np.sum(data)
amean = np.mean(data)
astd = np.std(data)
print(asum,amean,astd)

# extract data for a single point in the domain
ga('set x 100')
ga('set y 100')
ga('set t 1 last')
data = ga.eval('dataname.1')

# calculate areal mean over multiple time series
ga('set t 1')
mean_vals = []
for t in xrange(0,nt):
     data = ga.exp('dataname.1(t=' + str(t+1) + ')') # python和grads里面的index初始值不一样
     mean_vals.append(np.mean(data))

# plot the data
plt.plot(data)
plt.show()





justify yourself in your phd life

今天听brown bag我再次觉得自己需要在“present自己的work”上面多下功夫。
justify 自己的工作,需要两手准备,
第一是心态的转变,摒弃替老板搬砖的心态,为自己的命题找意义,这也是Keita一开始就说的。只有seriously尊重自己的工作,也就逐渐有热情去跟大家将自己的工作意义。
        心态的转变的更深层含义,是寻找motivation。只有自己对科研有了动力和目标,其他东西都能够顺利地逐渐得到解决,Jonghun说的。反之,如果被老板,或者被组里其他同僚牵着鼻子走,是不会走得远的。自己要主动的思考科学问题,思考要不要发文章,思考和谁联系能够让自己的工作更好!
        当然,不是说闭门造车!跟着各位大牛的脚步非常重要,要更加开放交流!

第二是练习,练习,还是练习。并非说没有技巧,但技巧本身也是需要通过尝试、筛选出来,并且不断地练习才能化为己有。不要天真的以为馅饼会从天而降,不要天真的以为别人似乎都是靠天赋一下就得到了它。


周一学习批判性思维,受到的启发是要集中火力解决一个心理素质。
坚持,专注!


目前这两周还处于一个技术摸索阶段,等我找到了自己的工具节奏,也许我的科研成果出来就会比较快了。
技术问题不是问题,是指可以通过努力来解决。目前的办法就是,吊死在python上面,然后所有的工具都用python。好在我早就开始放弃matlab和bash,matlab是因为和组内环境不兼容,而且缺少python的连接性;bash是因为需要大量的linux知识,语法太旧了,用得不爽利。
代码学习,一定要擅长读别人的代码,学习别人的代码。不要以为可以省点时间,跳过各种tutorial,系统性的学习能够让自己以后更加顺利。



Tuesday, February 4, 2014

技术学习期末小结

programming...这个词有点被用的过于泛滥。
过去的一个学期,在这上面没有太用功,但多多少少更加了解了各种语言和环境。
回首看来,Justin说的东西都非常正确,我以后一定要认真听老板的话!

首先,接触两个全新的操作系统。
(11月上旬)MacOS:需要适应的主要是触摸盘,文件管理系统,多任务管理,系统整理,移动硬盘读取。
Mac让我感觉最爽的除了和Linux内核相通,任务管理的高效,还有和ipad iphone的同步。
不太适应的是,两个平台上软件不太一样,需要寻找更适合的替代工具。(这种情况下,于是发现过去大部分软件其实都是多余的…… )

(11-1月)Linux:一开始并没有当一个系统用,现在逐渐有这个概念了。。。逐渐接触terminal, bash, shell, vi...
逻辑大概是:
》vim这种text editor就是写各种script的工具,写适用于各种软件的script/source code源代码,如R(.R),GrADS(.gs),matlab(.m), C(.c), Python(.py), Shell(.sh)。
》对于C和Fortran,是需要compile编译成计算机可识别的语言来执行的,所以需要make file;
》对于其他scripting language,是直译式的(比编译要慢),不需要make file,但需要通过chmod +x来使之可以执行。
》用相应的软件或者环境来运行源代码。
因此,Python有着空前绝后的优越性!!
我觉得此前最错误的就是,不理解基本概念,把各种工具混为一谈,导致自己没有选择正确的方向下手!

然后,开始上手画图工具GrADS。GrADS其实可以说是一个数据可视化的快捷工具,附有非常简便的数据读取、分析功能,可以做简单的分析。

接着,开始学R。R其实就是统计版的Matlab,界面好像,语法好像。

如今,正式开始学习Python。

短短几个月,接触的范围还是挺广的呵呵。

Monday, February 3, 2014

批判性思维-笔记

一、绪论
思维就像其他技巧一样,需要学习和训练。
对自己的思维能力有所发现:思维不可见,所以只有自己清楚意识到自己在怎样进行思考,并且努力认识这种思考所包含的优势和弱点时才能逐渐成长为思考者。
理解概念的重要性:基本原理的应用和重复。
建立全新的思维习惯

二、公正思考

态度谦逊—妄自尊大:浅尝辄止,草率判断,毫不批判,拿来主义
勇敢无畏—胆小怯懦:对和自己不一致观点的恐惧,生活在他人的看法中
设身处地—自我中心:注意力放在自身,只关注自己的痛苦、欲望、希望,不愿意改变自己的看法
理智健全—理智伪善:说一套,做一套,双重标准
坚持不懈—头脑懒惰:面对挑战性难题轻言放弃,对脑力劳动的痛苦和挫折容忍度低。对于高层次思维的所有领域,坚持不懈是至关重要的,大部分人在初期阶段就选择放弃,尽管他们避免了短期的头脑挫折,但却获得了面对日常生活中复杂问题日易滋生的挫败感。
笃信推理—怀疑推理:坚信自己体系中的事实,盲目崇拜,信任直觉,经验和本能冲动,相信命运。
意识自由—依赖被动:固守己见,呆板迟钝,盲从

三、策略
集中力量在基本点上进行突破,不要一次挑选过多,采取一种途径来试验所有的办法
1、利用浪费的时间,不要忧心忡忡,充满忧虑
自问:
今天何时进行的思考最为糟糕,何时最为高明
解决掉了什么事情
是否听任消极思考来让自己无谓的灰心丧气
如果重复昨天的工作,有什么能让自己有所改进
今天的行为是否为长期的目标付出努力
2、一天解决一个特定问题(11章)
问题在哪里?如何解决?
3、消化吸收头脑标准(5章)
4、保持记录头脑日记
记录情势,反应,透过表面挖掘实质
5、实践头脑战略(17章)
记录观测结果,自我发现自我提高
6、重塑你的个性
何时承认错误,何时拒绝承认
何时在别人指责自己缺陷时变得防御自卫
何时自大无知妨碍学习
7、应对自我
自我反思:
是否为鸡毛蒜皮大发雷霆
是否为一己私利做非理性的事
是否强加自我意志于他人
是否没有直说想法而在背后心怀怨恨
8、重新定义看待事物的角度
9、和情绪取得联系
10、分析群体对你生活的影响