SISSO

github页面:
https://github.com/rouyang2017/SISSO

在这个github项目下包含模块:

  • var_global.f90 ! 声明全局变量
  • libsisso.f90 ! 数学运算的子程序和函数
  • DI.f90!模型稀疏化(描述符识别)
  • FC.f90!使用存储在内存中的数值数据特征进行特征构建
  • FCse.f90!使用存储在内存中的表达式树特征进行特征构建
  • SISSO.f90!主程序

安装

git clone https://github.com/rouyang2017/SISSO.git

cd SISSO

---编译 SISSO 并行程序需要 Fortran MPI 编译器。推荐使用 Intel 编译器。

确定编译器与 MPI wrapper 是否可用:

which ifx

which mpiifx || true

which mpiifort || true

which mpifort || true

在"src"文件夹中,执行以下操作:

mkdir ~/bin/

  • mpiifx -fp-model precise var_global.f90 libsisso.f90 DI.f90 FC.f90 FCse.f90 SISSO.f90 -o ~/bin/SISSO

或者

  • mpiifx -O2 var_global.f90 libsisso.f90 DI.f90 FC.f90 FCse.f90 SISSO.f90 -o ~/bin/SISSO

区别是:

第一个命令安装的能够提高浮点计算的 准确性 和运行间 可重复性

第二个命令安装的 约 2 倍

(可选,保持环境整洁)然后

sudo mkdir /opt/SISSO

sudo mv ~/bin /opt/SISSO

加入环境变量:

nano ~/.bashrc

在文件中添加行:

#SISSO

export PATH=/opt/SISSO/bin/:$PATH

然后

source ~/.bashrc

which SISSO

解除内存限制

ulimit -s unlimited

计算模板

计算模板位于克隆的SISSO项目目录下:

input_templates

包含

--SISSO.in(输入文件)

--train.dat_regression(回归示例数据)

--train.dat_regression_multitask(多任务回归示例数据)

--train.dat_classification(分类示例数据)

--train.dat_classification_multitask(多任务分类示例数据)

计算测试

回归计算测试

在系统其他位置建立一个测试文件夹,然后拷贝 输入文件 和 训练数据

cp /media/waler/4TB/installer/SISSO/SISSO/input_templates/SISSO.in .

cp /media/waler/4TB/installer/SISSO/SISSO/input_templates/train.dat_regression ./train.dat

串行运行SISSO

SISSO |tee out

并行运行SISSO

mpirun -np 4 SISSO |tee out

运算流程:
  1. FC(Feature Construction) :从初始特征空间 Phi00 生成更高阶组合特征 Phi01Phi02
  2. SIS(Sure Independence Screening) :筛选子空间(你这里从 Phi02 选出 141 个进入子空间)
  3. SIS(Sure Independence Screening) :筛选子空间(你这里从 Phi02 选出 141 个进入子空间)

计算完成后生成如下文件:
Models/(模型结果文件)
SIS_subspaces/(SIS 选出的子空间)
SISSO.out(主输出汇总)

SISSO.out

可以从输出文件 SISSO.out 看总体结果与最优模型:

grep -n -E "Best|best|descriptor|RMSE|MAE|MaxAE|coeff" SISSO.out | head -n 50

我们接下来解释一下这些信息:

28:Metric for model selection: RMSE

53: 2D descriptor/model(y=sum(ci*di)+c0) :

58: coeff.(ci): 0.3119522717E+01 -0.2615952335E-03

60: RMSE and MaxAE: 0.6898298038E-03 0.9482663871E-03

第一行说明,SISSO 是用 RMSE(均方根误差) 作为模型优劣的判据

第二行说明,找到的最优模型是一个 2 维描述符, 模型形式是线性回归模型。

第三行就是两个拟合系数。对目标性质的贡献**主导;**是一个较弱但必要的修正项

第四行给出了 RMSE 和 MaxAE 判断误差大小,数字越小说明拟合效果越好

Models文件夹

这个文件夹下包含了训练产生的模型的文件

例如 data_top1 表示排名第 1 的模型的数据

使用

报错

1:funit报错

(base) waler@7B12:/media/waler/4TB/Calculation/ML/SISSO/test$ SISSO | tee out.log

Error: Cannot read the parameter "funit"

Error while reading the parameter "funit" from SISSO.in

SISSO v3.5 遇到过同样现象:只要把 funit=(1:2)(3:3) 注释掉就能跑,但一旦保留就报 "Cannot read the parameter funit"。

原因:

发现是由于 编译时,使用了 mpiifx 替换了 mpiifort 引起的

但是ifort功能在最新版本intel中被移除,这意味着ifx必须使用。

解决方法:

在SISSO/src路径下,找到SISSO.f90

修改

do ll=1,nunit

do ll=1,nunit-1

然后重新编译即可。

mkdir ~/bin/

mpiifx -fp-model precise var_global.f90 libsisso.f90 DI.f90 FC.f90 FCse.f90 SISSO.f90 -o ~/bin/SISSO

sudo rm -r /opt/SISSO/bin

sudo mv ~/bin /opt/SISSO

source ~/.bashrc

which SISSO

相关推荐
Jay Chou why did15 分钟前
程序启动地址0x80000000
linux
落笔映浮华丶1 小时前
c程序的翻译过程 linux版
linux·c语言
阮松云1 小时前
code-server 配置maven
java·linux·maven
Pomelo_刘金1 小时前
Linux I/O 方式进化史(内核/性能视角):从“睡死”到“就绪队列”再到“完成队列”
linux
提伯斯6461 小时前
解决 PX4 + ROS px4ctrl 「No odom!」自动起飞失败问题
linux·ros·px4·fastlio·mid360·egoplanner
牛奶咖啡132 小时前
shell脚本编程(八)
linux·shell脚本编程·while循环语句·计数器控制的while循环·标志控制的while循环·until循环·select循环菜单
Q16849645152 小时前
知识点-创建、查看和编辑文本文件
linux·运维
小宇的天下2 小时前
Calibre 3Dstack --每日一个命令days11【dangling_ports】(3-11)
linux·运维·服务器
HIT_Weston2 小时前
97、【Ubuntu】【Hugo】搭建私人博客:搜索功能(二)
linux·运维·ubuntu
chen_mangoo2 小时前
HDMI简介
android·linux·驱动开发·单片机·嵌入式硬件