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

相关推荐
誰能久伴不乏3 小时前
Linux `epoll` 学习笔记:从原理到正确写法(含 ET 经典坑总结)
linux·服务器·网络·c++·ubuntu
是阿威啊3 小时前
【第一站】本地虚拟机部署Hadoop分布式集群
大数据·linux·hadoop·分布式
wdfk_prog3 小时前
[Linux]学习笔记系列 -- [fs]filesystems
linux·笔记·学习
fengyehongWorld3 小时前
Linux tree命令
linux
像名字一样难取的昵称3 小时前
Linux学习笔记:十八、Linux文件的压缩,解压缩一站式学习
linux·运维·笔记·学习·ubuntu·ssh
少年、潜行4 小时前
F1C100/200S学习笔记(2)-- 初次FLASH启动(裸机)和SD卡启动(Linux)
linux·笔记·f1c200s
小白勇闯网安圈4 小时前
极简版Linux发行内核
linux
管理大亨4 小时前
Linux vs Windows:五大维度深度对决
linux·arm开发·windows
乘凉~4 小时前
【Linux作业】Limux下的python多线程爬虫程序设计
linux·爬虫·python