昨晚深夜检查了一下计算任务的结果,然后想做两件事:
1、画出对数坐标的彩图,如此页中上图所示http://matplotlib.org/examples/pylab_examples/pcolor_log.html?highlight=lognorm
2、换不同的K点设置检查透射系数和电导。
结果快气死我了:
1、matplotlib的一些模板我这边的电脑上貌似没有,例如Times New Roman字体竟然没有,这也算了,能忍。最不能忍的是我把LogNorm和ticker.LogLocator都试了,结果画出来的图的colorbar变成一格一格的,例如说原来的colormap是60个颜色,用了对数坐标后只有6个颜色,画出来的图就变成一块一块的。像http://matplotlib.org/examples/pylab_examples/contourf_log.html?highlight=lognorm
而且colorbar上的标签没了。折腾了很久。最后感觉应该是在contourf的levels设计的问题。但是试了半天色块变得更少更大了。似乎可以用numpy.logspace,但是看它的说明半天进不了脑子。不过最不爽的是人家用的也是默认参数来画图,为什么色块过渡就这么自然。
而且即使解决了分块的问题,colorbar仍然不显示标签。
花了几小时在这种无聊毙了的问题上,搞得整个人都烦躁了。不用内置的log属性,自己写一个脚本来转换画图的值,倒也可以,但是我对matplotlib的语法不熟,主要是不知怎么把colorbar上对数化后的值换回原值,又得查半天。
只好用回线性坐标了。浪费了四小时左右在上面,什么都没做出来。
这时看到lx师兄N年前的文章里画图用的就是对数坐标。。唉,要是师兄还在就好了。不过就算他在我估计也不想or不敢问他。
(现在头脑清醒时再去看了一下logspace,一下子就看懂了。。真是得好好休息才行了。)
2、写了个批量处理的脚本来运行atk,结果一提交等一会就失败,说license版本对不上。我很奇怪,因为这个脚本我不大可能对之改动,既然是沿用的,为什么以前行,现在不行呢。因为坚信这个脚本和能成功运行的脚本是一样的,我竟然没去看关键的版本号。检查半天不知问题在哪。当时也实在太困了,坐在电脑前都快要睡着了,来回看着同几行脚本一个字都没看进去。最后受不了,只好降低脚本的自动化程度,手动处理了一下,让服务器先跑一部分,然后就去睡了。
今天睡了一觉脑袋清醒点再看,检查了一下,发现版本号竟然真的改动过。。。。。。。我死活想不通是什么时候改的。我为什么会把一个不能用的脚本放到backup下。。。。。。。。完全一头雾水。
另外还有个bug很annoying。mendeley的merge citation失效率高达90%。选中想merge的citation后,这个merge citation按钮基本不会出现,你只能手动一篇一篇修改。如果那位置引用的文献只有三四篇还好,如果是十篇以上,就呵呵了。事实上,用了mendeley两个月,我只在一星期前的某天成功见到过merge按钮的出现。去他们的论坛看,好多人反映merge功能的bug,管理员说已经修改好了,但实际上根本没有。我也留了个帖子,没人鸟我。
想想人家毕竟是免费软件,人家就是不鸟你你能如何。
这个bug真是非常让人沮丧,因为merge citation是一个非常基础的功能,连这都做不到,就相当于一台手机的短信功能出了问题一样。如果三个月后仍然是这样,我应该会转去用别的软件了,虽然我还是挺喜欢它的。
顺便吐槽一下,现在貌似还是比较流行用tex写科技论文的吧。现在被迫一直用word,感觉有点不大好。虽然我也不见得多喜欢tex,这货也是老有bug。
总之就是基本上罕有“一切顺利发展”的体验。老是不是这里坏了就是那里坏了,这种生活很讨厌。
前几天花了不少精力,终于画出美好的图了,挑几张展示一下:
诶?这才发现美丽的图全是ud的majority。
由于脚本改了又改,我都忘记关键改动是什么了。目前最终的脚本的关键部分是这样的:
levels = numpy.logspace(math.log10(min_dd), math.log10(max_dd), 40)
levels_bar = numpy.logspace(math.log10(min_dd), math.log10(max_dd), 5)
CF = pylab.contourf(K_A, K_B, T_dd,
interpolation = 'bilinear',
levels = levels,
cmap = pylab.cm.Spectral,
norm = LogNorm(clip=True))
pylab.colorbar(CF,
ticks = levels_bar,
format = '%5.1e')
不过有一点很关键的是,用atk算透射系数时最好不要用KrylovSelfEnergy算法,之前用它,得出一堆为负的透射系数,害我浪费不少时间去想它的物理意义,然后查了一下才知道只是算法的问题。然后换了RecursionSelfEnergy,速度也不见得比前者慢,但是数据就准确很多。
另外,Mendeley两天后联系我了,让我发出问题的文档过去。我做了个test文件发了过去,现在还没回。