CTD 取数软件设计

Posted by YU Xiaoyan on August 29, 2018

一直有一个想法是通过软件编程的方法,能把自己从繁重的出证书的工作中解放出来。目前飞飞已经研究出来一个软件就是可以将“取出来的被校准仪器的指示数”输入进去,直接就可以进行拟合,出具证书,并可以打印出来。这里是终端的解决方案。但是对于出证书来说,最多是时间是被“取数”占据了,所以说,编制出“取数”的软件就可以省出大量的时间。由于待取数的仪器种类很多,结果的文件格式有很多,最终的表达形式也有很多。抓大放小吧,逐步迭代吧。先做起来再说,那么,我们开始吧。

处理对象分析

对于 CTD 的一台仪器来说,需要处理的原始数据通常是存在两大数据包A 和 B里的。

对于数据包 A,存了35~0的8个温度点的被校仪器数据。通常是8个独立的文件(txt cnv cap csv hex 等扩展名)。对于每一个文件来说,其中有用的列是“温度(T)-温度原始值(TN)-电导率(C)-电导率原始值(CN)——有的时候还要:盐度(S)-盐度原始值(SN)”。大部分情况是这样的,但是也存在特殊情况,比如 RBR 等仪器,他们最后取出来的8个温度点的数据是存在于一个文件中的。对于 RBR 类仪器的取值,据说高主任以前编写过一个软件,我可以找他或者自己琢磨一下原理,从而能得到这种连续数据取数的软件的编程思想,从而实现【立个 flag】,后续迭代版本增加这个功能。

对于数据包 B,里面往往存在了3个压力组的数据(通常是0-1-2,这三个txt文件)。其中1.txt 是初始0点的一系列仪器数值(第1组),2.txt 是结束零点的一系列仪器数值(第13组),1.txt 里是升压到降压的到降压的另外11组数据(12345654321)。对于第1和13组数据好说,可以直接取某一列的平均值,但是对于第2到第12组这11组数据来说,就存在和 RBR 类似的问题,怎样取出这些参考点的数据,就是个问题【立个 flag】,这里的编程思想完全相类似。

好了,分析到这里,我们可以发现:其实对于这些数据的处理主要分为两类。

  • 第一类,在N 个独立的文件中,取某一列的数据,取平均值,并把这一些列的数据按照一定的顺序放到 excel 里按照顺序排好。
  • 第二类,是在1个独立的文件里,有不同大小分段的数据,需要以一些列的参考点(8个温度参考点(一般不变),或者11个压力参考点(根据量程、标准器的不同会发生一定的变化,但是也是一个有限的集合))。

第一类处理方法

对于第一类处理方法,我结合了技术中心张挺的代码,写了一个小程序,基本可以解决快速取数的问题。这个程序我姑且叫它 DataRetrieveCTD1.0版本(点开可以看源代码)

第二类处理方法

这里只有一个初步的想法。

  • 如果是温度的话,取固定的8个温度参考点(或者输入8个温度标准值也行,当然是有默认值的)。压力和温度比的话,特点是,点多了些,每个点数少了些。。另外,温度还涉及到一个问题,就是说,通常情况是该温度点的有效时间段(通常是3min)记录取样的时间。

  • 如果是压力的话,先让用户输入本次做的这个实际量程是多少(例如5000m),选择压力标准器是哪一个,根据这两个选项,然后展现给用户8个压力参考点——然后询问用户是否需要修改?如果需要修改则重新输入第几个?如果全部重新输入的话,则按一个按钮。最后是从用户这里获取了确切的压力参考值11个点。

  • 对于每个参考点来说,举个例子25℃这个点,或者说117.44m 这个点,怎么来判断是否达到或者可以取值了呢?

  • 我认为,首先系统当然是挨个的读取每一行和每一列到内存里,到达计算参考温度点的时候,系统以某个函数来判断,参考点正负10%,为取样区间。

  • 实现上面这些功能,目前脑子里没有思路。我想有相关的库是可以支持的,例如NumPy库等或者其他库等内容。

参考资料

LOG

  • 20180829 念起建立本文件。
  • 20180831 增补了 第二类处理方法和参考资料部分,但是并没有解决“第二类处理方法”的方法。

Creative Commons License
This work is licensed under a CC A-S 4.0 International License.