pycurl多进程下载数据
在我为组里写的海雾反演工具包中,有一个葵花卫星数据下载的函数。因为葵花卫星数据是通过FTP方式下载的,而Python的requests库又不支持FTP协议,所以只好借助了pycurl来下载数据。
最近葵花数据的下载异常的慢,而pycurl似乎没有多线程下载的功能(我在撰写这篇发现pycurl中有一个CurlMulti
对象,似乎可以通过该对象实现在一个Python进程中同时下载多个数据片段),pycurl对多线程的支持也不好,无奈只能自己想办法实现多进程下载的功能了。
使用meson构建打包Python包
最近在重构组里的代码上遇到一件稍微棘手的事情。导师的旧代码是使用Fortran编写的,其对一些Python无法方便读取的二进制数据做了非常精细的操作,导致将代码完全Python化的难度直线上升。折衷的方案是通过使用numpy.f2py
工具,将Fortran代码转换成Python扩展,这样就引入了新的问题,如何将扩展的编译融合进Python包的打包和安装过程中。
meson构建系统是我在几个月前无意中了解到的新工具,其包含了能够帮助编译和打包的Python模块,并且现有的一些项目都已完全将meson作为后端,例如scipy,numpy。因此我决定将这作为一个练手的机会,使用meson来帮助构建这个Python包。
使用cfgrib将数据保存为GRIB文件
最近想要将导师的WRF工具包里的一些功能使用Python重写,因为想要使用优雅的方式实现,所以不可避免的涉及到了GRIB文件的读写。花了两天时间摸清楚了如何将数据写入GRIB文件,期间还遇到一些比较奇怪的问题。
PyQt中的国际化问题
最近自己搞的海雾识别可视化界面已经基本完善可用了,唯一的不足就是没有弄国际化。因为网上有关 PyQt 国际化的示例实在是太不全了,方法五花八门,甚至连 Stack Overflow 上都没有很好的解决方法。经过自己的不断搜索,以及阅读 PyQt 上的手册,终于搞明白了 PyQt5 和 PyQt6 两个版本 PyQt 国际化的方法。

matplotlib中非对称的Colormap
女朋友说想画一个非对称的Colormap的图出来(也即0还是对应于白色,但是两侧的数值范围是不一样的),于是就研究了一下,最后的效果如下

如何在Keras中使用数据生成器(翻译)
翻译自斯坦福大学网站上的一篇文章,A detailed example of how to use data generators with Keras。主要介绍了在面对大量数据时,如何通过编写数据生成器(DataGenerator)来实现动态加载数据的功能。
matplotlib和Cartopy的点击取值
最近在研究如何从卫星数据中获取雾区数据的问题,有一个大难点就是双通道法反演时如何设置阈值的问题。最直接的方法就是先画一张不设置阈值的图,然后根据坐标打印一下数值,再设置一下阈值。但是这样来来回回要重复跑很多遍代码,为了简化工作量,便研究了一下如何通过鼠标点击图片即可打印出对应点的值。
xarray中合并nc文件导致数据的数值改变/出现nan
今天下了ERA5的再分析数据准备做REOF,结果却发现报错说我的数据有缺测值。搜索了一番发现原来是ERA5的scale
和offset
导致的。
水博客+1
pyart中关于线性规划部分代码的疑问
我画大饼说这个周末就要改完本科论文的,结果 pyart
的线性规划部分的函数越看越迷惑,写一篇帮自己梳理一下。