PyQt5+sklearn实现微生物光谱的PCA和HCA分析(含界面与报告生成)

背景:

       每种微生物都具有一定的光谱特征,即在不同波长上对光的吸收程度不同。在实验室我们可以获得大量已知品种的光谱数据,构成光谱库。当获得某未知光谱时,可以通过比对的方式对其分类,判断是否属于光谱库中的已知品种。

       但是,光谱的宽度和精度决定了单个样本的数据量(>1500),必须通过降维(PCA)筛选出最重要的特征(<5),才方便比对和分类。同时,使用聚类(HCA)可以在无监督情况下,对样本库进行初步分类,并判断是否混入了杂菌的数据。

 

开发思路:

    qtDesigner+pyqt5:开发界面,包括首页,文件增删页,光谱库分析页,未知样本分析页和报告页。

    sklearn+numpy+scipy+mpl:数据处理,PCA分析,HCA分析,绘图

    bs4:生成html格式的分析报告

 

主要界面:

PyQt5+sklearn实现微生物光谱的PCA和HCA分析(含界面与报告生成)_第1张图片

 

PyQt5+sklearn实现微生物光谱的PCA和HCA分析(含界面与报告生成)_第2张图片

PyQt5+sklearn实现微生物光谱的PCA和HCA分析(含界面与报告生成)_第3张图片

PyQt5+sklearn实现微生物光谱的PCA和HCA分析(含界面与报告生成)_第4张图片

PyQt5+sklearn实现微生物光谱的PCA和HCA分析(含界面与报告生成)_第5张图片

PyQt5+sklearn实现微生物光谱的PCA和HCA分析(含界面与报告生成)_第6张图片

文件的结构树:

PyQt5+sklearn实现微生物光谱的PCA和HCA分析(含界面与报告生成)_第7张图片

 

值得注意的问题:

1.主界面通常可以使用qmainwindow或qwidget,这取决于是否需要菜单栏。而子界面通常选择qdialog,否则从主界面唤出子界面时会有麻烦。

2.显示子界面或子子界面时,需要self作为自变量。

 如果希望子界面传输信号到主界面,应在主界面设定connect关联,在子界面声明signal信号以及发射emit

PyQt5+sklearn实现微生物光谱的PCA和HCA分析(含界面与报告生成)_第8张图片

3.在界面间传递数据、图片时,可以先把这些保存为txt,jpg等,仅传递保存路径和flag。

4.PCA分析时,要注意运算对象的形式,矩阵,数列,元组还是ndarray。

5.绘制散点图时,要单独绘制每个点并标注图例,为了避免重复图例,可采用以下方法压缩图例。

6.生成报告我采用的办法是写一个本地html模板,通过bs4打开并编辑其中的内容,最后显示在qwebengine上,酱紫可以在qt界面上浏览带文字、图片、表格的报告。

需要交流,可以留言或发送邮件 [email protected]  

你可能感兴趣的:(智能交互)