晶飞FLA5000光谱仪.FlaSpec格式解析批处理导出CSV文件

news2025/1/19 8:27:06

引言

首先说明下晶飞上位机软件存在的问题,实验所采用的FLA5000型号光谱仪,光谱波段从280-970nm,FWHM值为2.4nm。
1、上位机软件中的光谱数据复制功能基本是废的,最多只能到599.9nm,后面的数据全部消失。
2、上位机软件本身无法导出csv或其他格式的光谱数据文件,只能以FlaSpec格式进行保存,所以需要对该格式进行分析。
3、提供了光谱表功能,但是问题在于依然无法全部显示数据,只能到800nm左右,并且没有提供保存数据功能,只能手动复制。

PS:可能是我不会用,也可能是拿到的非最新版软件,晶飞上位机软件确实存在蛮多问题,或者说交互逻辑反直觉,但是光谱仪的一致性还不错,如下图所示,但是其动态范围较低(技术手册上的指标比USB2000要高,但是实测就是差了一大截),容易饱和,限制了实验及应用场景。
在这里插入图片描述

数据格式分析

将FlaSpec文件以文本格式打开(这里使用Notepad++),根据官方软件中所查看到的数据进行多点匹配,可以得知,其文件中记录的FWHM值为1nm,该型号物理FWHM值为2.4nm,故推测其为插值得到。

如下图1所示,line5:起始波段;line6:截止波段;line7:最大峰值;line15:第一个波段幅值在这里插入图片描述
其他数据暂时不知用途,line1-4猜测应该为波长间隔、采样次数、积分时间、滑动平均次数等。
line10-14猜测应为触发模式是否开启等参数,如下图2所示。
在这里插入图片描述
在line700:为截止波段幅值
line701,会出现一个空白行,而后的数据又开始从起始幅值开始记录数据?
在这里插入图片描述

批处理代码

运行流程:首先读取路径下所有FlaSpec文件,并且提取指定范围的数据,复制到对应名称的csv文件,然后读取所有csv文件,使用pandas工具进行合并到一个csv文件中。

import os
import pandas as pd

def extract_data(file_path):
    # 打开文件并读取内容
    with open(file_path, 'r') as f:
        lines = f.readlines()

    # 提取第15行到第700行的数据
    data_lines = lines[14:699]

    # 将数据保存到一个字符串中
    data_str = ''
    for line in data_lines:
        data_str += line

    return data_str

def main():
    # 指定要读取的文件夹路径,输入你的路径
    folder_path = 'XXX/PycharmProjects/Fla5000/folder'

    # 遍历文件夹中所有的.FlaSpec文件
    for filename in os.listdir(folder_path):
        if filename.endswith('.FlaSpec'):
            file_path = os.path.join(folder_path, filename)

            # 提取数据并保存到一个新的.csv文件中
            data_str = extract_data(file_path)
            csv_filename = os.path.splitext(filename)[0] + '.csv'
            csv_path = os.path.join(folder_path, csv_filename)
            with open(csv_path, 'w') as f:
                f.write(data_str)

    # 获取文件夹中所有csv文件的路径
    csv_files = [os.path.join(folder_path, f) for f in os.listdir(folder_path) if f.endswith('.csv')]

    # 合并csv文件
    df_list = []
    for csv_file in csv_files:
        df = pd.read_csv(csv_file, header=None)
        df_list.append(df)
    merged_df = pd.concat(df_list, axis=1)

    # 将合并后的数据保存为新的csv文件
    merged_df.to_csv(os.path.join(folder_path, 'merged_data.csv'), index=False, header=None)

if __name__ == '__main__':
    main()

路径下的各类文件。
在这里插入图片描述

需要注意的是,如果安装pandas出现错误,可以使用使用代码[1]进行安装,在此表示感谢。

py -3 -m pip install pandas -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

结语

综上所述,FlaSpec文件格式较为简单,容易使用python等语言进行批量处理,在进行数据采集及后续的数据分析过程中,使用该格式文件只能说是曲线救国了,后续如果继续使用该光谱仪,会将批处理代码实现后放出。
初步构想为自动读取文件夹下所有flaspec文件,并根据数据格式进行解析,后写入到一个同csv文件中。

参考资料

[1] python安装pandas报错,version问题看这里!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/532473.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023系统分析师---软件工程、系统规划高频错题

系统规划---成本效益分析 评价信息系统经济效益常用的方法主要有成本效益分析法,投入产出分析法和价值工程方法。盈亏平衡法常用于销售定价; 可行性分析 系统规划是信息系统生命周期的第一个阶段,其任务是对企业的环境、目标以及现有系统的状况进行初步调查,根据企业目标…

示波器的数据处理怎么记录?

示波器的使用 - 记录和保存示波器测试结果 安泰测试为您分享如何记录示波器的数据。 "从您把示波器探头连接到器件的那一刻起,信号就开启了一次瞬间即可完成的重大旅程。它必须 跨过五个不同的“模块”,才能完成从器件到示波器,最后返回…

Vue电商项目--开发floor模块

获取floor组件mock数据 开发floor组件 在开发之前,说一下之前存在的一些小毛病 那就是在开发vue中还需要通过dom这种方式来操作元素吗? 我们用ref来做这个 我们先写api 然后去找仓库 getFloorList这个action在哪里触发,是需要在Home路由组件…

计算机组成原理硬件实验 - 计算机组成实验FAQ作业

一、 Quartus II 9.0 (32-Bit) 使用问题: Q1【示例】: 显示【未授权】或者【编译成功不能生成SOF文件】 A1: 在quartus中点击【TOOLS】→【license setup】,在license.DAT中修改“HOSTID”后的字段,设置为“你的电脑最新显卡ID” Q2【示例】…

怎么学习网络安全?这篇文带你从入门级开始学习网络安全

随着网络安全被列为国家安全战略的一部分,这个曾经细分的领域发展提速了不少,除了一些传统安全厂商以外,一些互联网大厂也都纷纷加码了在这一块的投入,随之而来的吸引了越来越多的新鲜血液不断涌入。 不同于Java、C/C等后端开发岗…

网络安全学什么

由于我之前写了不少网络安全技术相关的故事文章,不少读者朋友知道我是从事网络安全相关的工作,于是经常有人在微信里问我: 我刚入门网络安全,该怎么学?要学哪些东西?有哪些方向?怎么选&#xff…

卷麻了,可别再为难软件测试人了

前言 有不少技术友在测试群里讨论,近期的面试越来越难了,要背的八股文越来越多了,考察得越来越细,越来越底层,明摆着就是想让我们徒手造航母嘛!实在是太为难我们这些测试工程师了。 这不,为了帮大家节约时…

最“拼爹妈”的美国大学TOP10,什么是Legacy 录取?

Legacy的直译是遗产的意思,父母和大学的关系,就像家庭的遗产一样,可以传递给孩子一代(有时候,亲哥哥,亲姐姐也会被算作是 legacy)。有的大学祖父母如果是校友,也会算作 legacy。再远…

Docker部署配置Gitlab

Docker部署配置Gitlab 1 参考文档2 Gitlab相关介绍2.1 Gitlab2.2 Git和SVN的区别2.3 Git、Gitlab、GitHub的简单区别 3 搭建Gitlab仓库3.1 拉取镜像3.2 启动容器 4 修改配置文件并配置邮箱4.1 开放linux端口4.2 设置IP、端口4.3 配置邮箱4.4 让配置生效 5 管理员登录Gitlab6 创…

【输变电线路 JL-8C/12反时限电流继电器 报警信号、切除故障 JOSEF约瑟】

系列型号 JL-8C/11反时限电流继电器; JL-8C/12反时限电流继电器; JL-8C/12X反时限电流继电器; JL-8C/21-1反时限电流继电器; JL-8C/21-2反时限电流继电器; JL-8C/21-3反时限电流继电器; JL-8C/21-4反…

在线域名批量查询工具-在什么网站可以挖到老域名

怎么能挖掘到好域名 挖掘到好域名对于网站的建设和SEO排名是非常重要的,因为好的域名可以提高网站的置信度,增加自然引荐的数量,并且可以在搜索引擎排名中获得优势。下面介绍一些优秀的老域名挖掘方法,以及一种常用、免费的老域名…

verflow属性的常用值详解

什么是overflow 在CSS中,overflow是“溢出”的意思,该属性规定当内容溢出元素框时发生的事情,设置内容是否会被修剪,溢出部分是否会被隐藏;例如当属性值设置为“visible”则内容不会被修剪,为“hidden”则内…

PVT(Pyramid Vision Transformer)学习记录

引言与启发 自从ViT之后,关于vision transformer的研究呈井喷式爆发,从思路上分主要沿着两大个方向,一是提升ViT在图像分类的效果;二就是将ViT应用在其它图像任务中,比如分割和检测任务上,这里介绍的PVT&a…

【云原生】k8s 如何运行 Container?

文章目录 引语1、什么是 Pod1.1 简介1.2 Pod 怎样管理多个容器?1.3 如何使用 Pod? 2、Pod 基本操作2.1 查看 Pod2.2 创建 Pod2.3 删除 pod2.4 进入 Pod 中容器2.5 查看 Pod 日志2.6 查看 Pod 的描述信息 3、Pod 运行多个容器3.1 创建 Pod3.2 查看指定容器…

浅谈编译器对构造函数和拷贝构造的优化

一、前言 ①我们先看一段程序&#xff0c;传值传参和传引用传参 #include <iostream> using namespace std;class D { public:D(int a0)//构造:_a(a){cout << "D(int a0)" << endl;}D(const D& d)//拷贝{_a d._a;cout << "D(con…

域名到期时间查询网站-免费版的翼龙老域名挖掘

批量域名过期查询软件 随着互联网的不断发展&#xff0c;域名越来越重要&#xff0c;特别是对于那些热爱SEO优化的网站管理员来说&#xff0c;域名的重要性无法忽视。而对于那些热衷于SEO优化的用户来说&#xff0c;域名过期查询可能是一个必不可少的工具&#xff0c;它可以用…

数据结构初阶--链表OJⅡ

目录 前言相交链表思路分析代码实现 环形链表思路分析代码实现 环形链表Ⅱ思路分析代码实现 复制带随机指针的链表思路分析代码实现 前言 本篇文章承接上篇博客&#xff0c;继续对部分经典链表OJ题进行讲解 相交链表 先来看题目描述 思路分析 这道题我们还是首先来判断一…

蓝牙耳机怎么挑选?小编分享2023畅销蓝牙耳机排行榜

蓝牙耳机怎么挑选&#xff1f;蓝牙、音质、续航、佩戴是蓝牙耳机选购时最重要的四大维度&#xff0c;这几年随着技术的成熟体验有了很大改善&#xff0c;但挑选的时候仍然要仔细对比&#xff0c;不然容易踩雷。小编根据销量整理了蓝牙耳机排行榜&#xff0c;一起看看最受消费者…

水务行业数智化招标采购系统建设解决方案

水务行业数智化采购解决方案 国家“十四五”规划和2035年远景目标纲要&#xff1a;提升产业链供应链现代化水平。加快数字化发展&#xff0c;推动产业数字化&#xff0c;数字产业化&#xff0c;以数字化转型整体驱动生产方式、生活方式和治理方式变革。利用数字技术重构价值链…

kafka-Producer Sender 源码分析

说明 本文基于 kafka 2.7 编写。author blog.jellyfishmix.com / JellyfishMIX - githubLICENSE GPL-2.0 Sender 类属性 public class Sender implements Runnable {private final Logger log;/*** Sender 具体用的是 KafkaClient 接口的实现类 NetworkClient, 为 Sender 提…