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

相关推荐
fengyehongWorld1 天前
TeraTerm ttl脚本登录wsl
linux·teraterm
乌托邦的逃亡者1 天前
Linux中如何检测IP冲突
linux·运维·tcp/ip
一曦的后花园1 天前
linux搭建promethes并对接node-exporter指标
linux·运维·服务器
乌托邦的逃亡者1 天前
CentOS/Openeuler主机中,为一个网卡设置多个IP地址
linux·运维·网络·tcp/ip·centos
念恒123061 天前
进程控制---自定义Shell
linux·c语言
风曦Kisaki1 天前
# Linux Shell 编程入门 Day02:条件测试、if 判断、循环与随机数
linux·运维·chrome
李日灐1 天前
< 6 > Linux 自动化构建工具:makefile 详解 + 进度条实战小项目
linux·运维·服务器·后端·自动化·进度条·makefile
嵌入式×边缘AI:打怪升级日志1 天前
嵌入式Linux开发:开源组件、第三方库与许可证详解
linux
计算机安禾1 天前
【Linux从入门到精通】第34篇:搭建FTP与Samba——跨平台文件共享解决方案
linux·运维·服务器
日取其半万世不竭1 天前
用 Netdata 实时监控服务器,比 Prometheus + Grafana 轻量得多
linux·服务器·网络·系统架构·负载均衡·zabbix·grafana