初冬的草地

前一阵子,研究院的伙伴将试剂都归了类、标了号放在不同的试剂柜里边。因为试剂很多,如果是查找常用的试剂,那还是很好的,但是如果查找不常用的试剂,其实还是非常麻烦。正好我前两天突然想到之前看到的MongoDB,感觉结合python做一个查询应该非常简单。因此,就着手做了一个,确实蛮方便的。现在查询试剂,只需要右键打开批处理窗口,然后类似如下命令即可返回结果。

mater -q query_words

查询结果

这里边打印表格,首先直接将查询结果转换成pandas,然后打印pandas,其中pandas的设置和打印代码如下

# 表格打印选项
pd.set_option('display.max_columns', 1000)
pd.set_option('display.width', 1000)
pd.set_option('display.max_colwidth', 1000)
pd.set_option('display.unicode.ambiguous_as_wide', True)
pd.set_option('display.unicode.east_asian_width', True)

# 打印结果
df = pd.DataFrame(list(cursors))
rn_dict = {'cabinet': u'货架名称', 'layer': u'层', 'no': u'编号', 'cn': u'中文名称', 'en': u'英文名称'}
print(df.rename(rn_dict, axis=1).to_string(index=False))

后面给该程序增加了一个自动获取mw的功能,如以下命令所示

mater -wq query_words

增加了w选项,即如果数据库中没有当前实际的mw字段,则自动根据cas从网上加载,然后存储下来。这样方便下次配试剂。

@ECHO OFF

if "%1"=="" (
    pushd %1
)


::get the object line
::http://www.bathome.net/thread-9512-1-1.html
for /f "tokens=*" %%i in ('ipconfig ^|findstr IPv4') do (
    SET IPLine=%%i
)

::split by ":" and obtain the second element
for /f "tokens=2 delims=:" %%j in ("%IPLine%") do (
    SET IPv4Line=%%j
)

::get the substring
SET IPv4=%IPv4Line:~1%

::copy host to clipboard
echo http://%IPv4%/ | clip

python -m http.server --bind %IPv4% 80


::参考
::https://www.cnblogs.com/accumulater/p/10647497.html
::https://stackoverflow.com/questions/6359820/how-to-set-commands-output-as-a-variable-in-a-batch-file

安装

pip install pyftpdlib

编写ftp.server.bat文件

@ECHO OFF

if "%1"=="" (
    pushd %1
)

::get the object line
::http://www.bathome.net/thread-9512-1-1.html
for /f "tokens=*" %%i in ('ipconfig ^|findstr IPv4') do (
    SET IPLine=%%i
)

::split by ":" and obtain the second element
for /f "tokens=2 delims=:" %%j in ("%IPLine%") do (
    SET IPv4Line=%%j
)

::get the substring
SET IPv4=%IPv4Line:~1%

::copy host to clipboard
echo ftp://%IPv4%/ | clip

python -m pyftpdlib -i %IPv4% -p 21 -w

解决中文字符乱码的问题

pyftpdlib内部使用utf8,而windows使用gbk,可以将pyftpdlib进行修改:

  • filesystems.py
yield line.encode('utf8', self.cmd_channel.unicode_errors)

utf8改成gbk

  • handlers.py
return bytes.decode('utf8', self.unicode_errors)

utf8改成gbk

参考

电镜图片通常都有一个标尺,可以用来对照颗粒的尺寸。但是用于发表的电镜图片通常只是原始图片的一部分,而且是经过裁剪以及分辨率等等修改过的,那正确给修改过的电镜图片添加标尺呢?

这里我们使用ImageJ工具来处理这个操作,该工具的下载地址:https://imagej.nih.gov/ij/download.html

  • 首先使用ImageJ打开原始图片
  • 选择直线工具,然后先标注标尺,并按M添加结果,Length为L1
  • 标注一个原始图片以及修改后的图片均包含的颗粒,按M添加结果,Length为L2
  • 打开裁剪后的图片,标注原始图片标注过的颗粒结果,按M添加结果,Length为L3

这样根据计算,裁剪后的图片,其标尺的像素数应该为:

\[L4 = \frac{L1\times L3}{L2}\]

然后,在Photoshop中绘制一个长度为L4的线段,将数值设置为原始图片的标尺值即可。

龙湾的夜色

昨天立冬,转眼我工作已经近两年了。除了刚来时的几个月因为没有办法实验,真真切切的下班即回家,后面就很难有这么轻松了。以前以为当个大学老师轻松,所以一把梭哈读完了博士,可现在觉得真是天真了。如今稍微好点的学校也要对老师考核科研,当老师再不似以前那么悠闲自在了,整不好都可能被辞退。其实我实在是没有做什么,然而心底的压力也是在的。

今年的论文还没有投出去,之前主要卡在SERS基底表面的配体对于目标检测物的干扰,现在想到解决的办法了,因此,这阵子我正在努力将这篇文章的数据补充完整。

今年在收入上的亮点是在基金市场上赚了一辆小车钱,但是收益的跌宕起伏现在想来还是心有余悸,只能说,学会止损是非常重要的。

现在夜色已经降下来了,龙湾的灯火越来越亮了,老婆之前问我,什么时候准备在这个城市可以有一套我们自己的房子,我说迟早会有的。