遇见数据集

Zero Modes and Classification of Combinatorial Metamaterials

收藏
Zenodo2022-11-08 更新2026-05-25 收录
数据链接:
官方服务:

资源简介:

This dataset contains the simulation data of the combinatorial metamaterial as used for the paper 'Machine Learning of Implicit Combinatorial Rules in Mechanical Metamaterials', as published in Physical Review Letters. In this paper, the data is used to classify each \(k \times k\) unit cell design into one of two classes (C or I) based on the scaling (linear or constant) of the number of zero modes \(M_k(n)\) for metamaterials consisting of an \(n\times n\) tiling of the corresponding unit cell. Additionally, a random walk through the design space starting from class C unit cells was performed to characterize the boundary between class C and I in design space. A more detailed description of the contents of the dataset follows below. <strong>Modescaling_raw_data.zip</strong> This file contains uniformly sampled unit cell designs for metamaterial M2 and \(M_k(n)\) for \(1\leq n\leq 4\), which was used to classify the unit cell designs for the data set. There is a small subset of designs for \(k=\{3, 4, 5\}\) that do not neatly fall into the class C and I classification, and instead require additional simulation for \(4 \leq n \leq 6\) before either saturating to a constant number of zero modes (class I) or linearly increasing (class C). This file contains the simulation data of size \(3 \leq k \leq 8\) unit cells. The data is organized as follows. Simulation data for \(3 \leq k \leq 5\) and \(1 \leq n \leq 4\) is stored in numpy array format (.npy) and can be readily loaded in Python with the Numpy package using the numpy.load command. These files are named "data_new_rrQR_i_n_M_kxk_fixn4.npy", and contain a [Nsim, 1+k*k+4] sized array, where Nsim is the number of simulated unit cells. Each row corresponds to a unit cell. The columns are organized as follows: col 0: label number to keep track col 1 - k*k+1: flattened unit cell design, numpy.reshape should bring it back to its original \(k \times k\) form. col k*k+1 - k*k+5: number of zero modes \(M_k(n)\) in ascending order of \(n\), so: \(\{M_k(1), M_k(2), M_k(3), M_k(4)\}\). <strong>Note:</strong> the unit cell design uses the numbers \(\{0, 1, 2, 3\}\) to refer to each building block orientation. The building block orientations can be characterized through the orientation of the missing diagonal bar (see Fig. 2 in the paper), which can be Left Up (LU), Left Down (LD), Right Up (RU), or Right Down (RD). The numbers correspond to the building block orientation \(\{0, 1, 2, 3\} = \{\mathrm{LU, RU, RD, LD}\}\). Simulation data for \(3 \leq k \leq 5\) and \(1 \leq n \leq 6\) for unit cells that cannot be classified as class C or I for \(1 \leq n \leq 4\) is stored in numpy array format (.npy) and can be readily loaded in Python with the Numpy package using the numpy.load command. These files are named "data_new_rrQR_i_n_M_kxk_fixn4_classX_extend.npy", and contain a [Nsim, 1+k*k+6] sized array, where Nsim is the number of simulated unit cells. Each row corresponds to a unit cell. The columns are organized as follows: col 0: label number to keep track col 1 - k*k+1: flattened unit cell design, numpy.reshape should bring it back to its original \(k \times k\) form. col k*k+1 - k*k+5: number of zero modes \(M_k(n)\) in ascending order of \(n\), so: \(\{M_k(1), M_k(2), M_k(3), M_k(4), M_k(5), M_k(6)\}\). Simulation data for \(6 \leq k \leq 8\) unit cells are stored in numpy array format (.npy) and can be readily loaded in Python with the Numpy package using the numpy.load command. Note that the number of modes is now calculated for \(n_x \times n_y\) metamaterials, where we calculate \((n_x, n_y) = \{(1,1), (2, 2), (3, 2), (4,2), (2, 3), (2, 4)\}\) rather than \(n_x=n_y=n\) to save computation time. These files are named "data_new_rrQR_i_n_Mx_My_n4_kxk(_extended).npy", and contain a [Nsim, 1+k*k+8] sized array, where Nsim is the number of simulated unit cells. Each row corresponds to a unit cell. The columns are organized as follows: col 0: label number to keep track col 1 - k*k+1: flattened unit cell design, numpy.reshape should bring it back to its original \(k \times k\) form. col k*k+1 - k*k+9: number of zero modes \(M_k(n_x, n_y)\) in order: \(\{M_k(1, 1), M_k(2, 2), M_k(3, 2), M_k(4, 2), M_k(1, 1), M_k(2, 2), M_k(2, 3), M_k(2, 4)\}\). Simulation data of metamaterial M1 for \(k_x \times k_y\) metamaterials are stored in compressed numpy array format (.npz) and can be loaded in Python with the Numpy package using the numpy.load command. These files are named "smiley_cube_x_y_\(k_x\)x\(k_y\).npz", which contain all possible metamaterial designs, and "smiley_cube_uniform_sample_x_y_\(k_x\)x\(k_y\).npz", which contain uniformly sampled metamaterial designs. The configurations are accessed with the keyword argument 'configs'. The classification is accessed with the keyword argument 'compatible'. The configurations array is of shape [Nsim, \(k_x\), \(k_y\)], the classification array is of shape [Nsim]. The building blocks in the configuration are denoted by 0 or 1, which correspond to the red/green and white/dashed building blocks respectively. Classification is 0 or 1, which corresponds to I and C respectively. <strong>Modescaling_classification_results.zip</strong> This file contains the classification, slope, and offset of the scaling of the number of zero modes \(M_k(n)\) for the unit cells of metamaterial M2 in Modescaling_raw_data.zip. The data is organized as follows. The results for \(3 \leq k \leq 5\) based on the \(1 \leq n \leq 4\) mode scaling data is stored in "results_analysis_new_rrQR_i_Scen_slope_offset_M1k_kxk_fixn4.txt". The data can be loaded using ',' as delimiter. Every row corresponds to a unit cell design (see the label number to compare to the earlier data). The columns are organized as follows: col 0: label number to keep track col 1: the class, where 0 corresponds to class I, 1 to class C and 2 to class X (neither class I or C for \(1 \leq n \leq 4\)) col 2: slope from \(n \geq 2\) onward (undefined for class X) col 3: the offset is defined as \(M_k(2) - 2 \cdot \mathrm{slope}\) col 4: \(M_k(1)\) The results for \(3 \leq k \leq 5\) based on the extended \(1 \leq n \leq 6\) mode scaling data is stored in "results_analysis_new_rrQR_i_Scen_slope_offset_M1k_kxk_fixn4_classC_extend.txt". The data can be loaded using ',' as delimiter. Every row corresponds to a unit cell design (see the label number to compare to the earlier data). The columns are organized as follows: col 0: label number to keep track col 1: the class, where 0 corresponds to class I, 1 to class C and 2 to class X (neither class I or C for \(1 \leq n \leq 6\)) col 2: slope from \(n \geq 2\) onward (undefined for class X) col 3: the offset is defined as \(M_k(2) - 2 \cdot \mathrm{slope}\) col 4: \(M_k(1)\) The results for \(6 \leq k \leq 8\) based on the \(1 \leq n \leq 4\) mode scaling data is stored in "results_analysis_new_rrQR_i_Scenx_Sceny_slopex_slopey_offsetx_offsety_M1k_kxk(_extended).txt". The data can be loaded using ',' as delimiter. Every row corresponds to a unit cell design (see the label number to compare to the earlier data). The columns are organized as follows: col 0: label number to keep track col 1: the class_x based on \(M_k(n_x, 2)\), where 0 corresponds to class I, 1 to class C and 2 to class X (neither class I or C for \(1 \leq n_x \leq 4\)) col 2: the class_y based on \(M_k(2, n_y)\), where 0 corresponds to class I, 1 to class C and 2 to class X (neither class I or C for \(1 \leq n_y \leq 4\)) col 3: slope_x from \(n_x \geq 2\) onward (undefined for class X) col 4: slope_y from \(n_y \geq 2\) onward (undefined for class X) col 5: the offset_x is defined as \(M_k(2, 2) - 2 \cdot \mathrm{slope_x}\) col 6: the offset_x is defined as \(M_k(2, 2) - 2 \cdot \mathrm{slope_y}\) col 7: \(M_k(1, 1)\) Additionally, results including classification for M2.ii can be found in the "results_analysis_unimodal_vs_oligomodal_vs_plurimodal_i_Scen_slope_M_M1k_kxk.txt and "results_analysis_unimodal_vs_oligomodal_vs_plurimodal_i_Scenx_Sceny_slopex_slopey_Mx_My_M1k_kxk.txt" files. <strong>Random Walks Data</strong> This file contains the random walks for \(3 \leq k \leq 8\) unit cells of metamaterial M2. The random walk starts from a class C unit cell design (classification M2.ii), for each step \(s\) a randomly picked unit cell is changed to a random new orientation for a total of \(s=k^2\) steps. The data is organized as follows. The configurations for each step are stored in the files named "configlist_test_i.npy", where i is a number and corresponds to a different starting unit cell. The stored array has the shape [k*k+1, 2*k+2, 2*k+2]. The first dimension denotes the step \(s\), where \(s=0\) is the initial configuration. The second and third dimension denote the unit cell configuration in the pixel representation (see paper) padded with a single pixel wide layer using periodic boundary conditions. The class for each configuration are stored in "lmlist_test_i.npy", where i corresponds to the same number as for the configurations in the "configlist_test_i.npy" file. The stored array has the shape [k*k+1], where the index corresponds to the step \(s\) and displays the class for the accompanying unit cell. The stored number corresponds to the class as \(\{0, 1\} = \{\mathrm{I}, \mathrm{C}\}\).

本数据集包含用于发表于《物理评论快报》(Physical Review Letters)的论文《机械超材料中隐式组合规则的机器学习》(Machine Learning of Implicit Combinatorial Rules in Mechanical Metamaterials)所使用的组合超材料(combinatorial metamaterial)仿真数据。 在该论文中,本数据集被用于将每个$k imes k$单元胞(unit cell)设计划分为两类(C类或I类)之一,划分依据是由对应单元胞铺成的$n imes n$超材料的零模(zero mode)数量$M_k(n)$的缩放形式(线性缩放或常数缩放)。此外,本数据集还包含从C类单元胞出发在设计空间中进行的随机游走(random walk)数据,用于表征设计空间中C类与I类之间的边界。下文将对数据集的具体内容进行详细说明。 <strong>Modescaling_raw_data.zip</strong> 该文件包含超材料M2的均匀采样单元胞设计,以及$1leq nleq4$时的$M_k(n)$数据,用于对本数据集的单元胞设计进行分类。存在少量$k={3,4,5}$的设计无法明确归为C类或I类,这类设计需要补充$4leq nleq6$范围的仿真数据,才能确定其最终属于零模数量趋于常数(I类)还是随$n$线性增长(C类)。本文件包含$3leq kleq8$单元胞的仿真数据,数据组织形式如下: 1. 针对$3leq kleq5$且$1leq nleq4$的仿真数据,以NumPy数组(numpy array)格式(.npy)存储,可通过Python的NumPy库使用`numpy.load()`命令直接加载。此类文件命名为"data_new_rrQR_i_n_M_kxk_fixn4.npy",其内部为形状为`[Nsim, 1+k*k+4]`的数组,其中`Nsim`为仿真单元胞的总数。每一行对应一个单元胞,各列的组织形式如下: - 第0列:用于追踪的标签编号 - 第1至$k*k+1$列:扁平化的单元胞设计,可通过`numpy.reshape()`还原为原始的$k imes k$形式 - 第$k*k+1$至$k*k+5$列:按$n$升序排列的零模数量$M_k(n)$,即${M_k(1), M_k(2), M_k(3), M_k(4)}$。 <strong>注:</strong>单元胞设计使用数字${0,1,2,3}$指代不同的构建块取向。构建块取向可通过缺失的对角杆的取向来表征(详见论文中图2),分别为左上(Left Up, LU)、左下(Left Down, LD)、右上(Right Up, RU)、右下(Right Down, RD)。上述数字与构建块取向的对应关系为:${0,1,2,3} = { ext{LU, RU, RD, LD}}$。 2. 针对$3leq kleq5$且在$1leq nleq4$时无法明确归为C类或I类的单元胞,其$1leq nleq6$范围的仿真数据以NumPy数组格式(.npy)存储,可通过Python的NumPy库使用`numpy.load()`命令直接加载。此类文件命名为"data_new_rrQR_i_n_M_kxk_fixn4_classX_extend.npy",其内部为形状为`[Nsim, 1+k*k+6]`的数组,其中`Nsim`为仿真单元胞的总数。每一行对应一个单元胞,各列的组织形式如下: - 第0列:用于追踪的标签编号 - 第1至$k*k+1$列:扁平化的单元胞设计,可通过`numpy.reshape()`还原为原始的$k imes k$形式 - 第$k*k+1$至$k*k+7$列:按$n$升序排列的零模数量$M_k(n)$,即${M_k(1), M_k(2), M_k(3), M_k(4), M_k(5), M_k(6)}$。 3. 针对$6leq kleq8$的单元胞,其仿真数据以NumPy数组格式(.npy)存储,可通过Python的NumPy库使用`numpy.load()`命令直接加载。需注意,本次计算零模数量时采用了$n_x imes n_y$形式的超材料,其中$(n_x, n_y) = {(1,1), (2,2), (3,2), (4,2), (2,3), (2,4)}$,而非统一的$n_x=n_y=n$,以节省计算成本。此类文件命名为"data_new_rrQR_i_n_Mx_My_n4_kxk(_extended).npy",其内部为形状为`[Nsim, 1+k*k+8]`的数组,其中`Nsim`为仿真单元胞的总数。每一行对应一个单元胞,各列的组织形式如下: - 第0列:用于追踪的标签编号 - 第1至$k*k+1$列:扁平化的单元胞设计,可通过`numpy.reshape()`还原为原始的$k imes k$形式 - 第$k*k+1$至$k*k+9$列:按顺序排列的零模数量$M_k(n_x, n_y)$,即${M_k(1,1), M_k(2,2), M_k(3,2), M_k(4,2), M_k(1,1), M_k(2,2), M_k(2,3), M_k(2,4)}$。 针对$k_x imes k_y$形式的超材料M1,其仿真数据以压缩NumPy数组格式(.npz)存储,可通过Python的NumPy库使用`numpy.load()`命令直接加载。此类文件包括包含所有可能超材料设计的"smiley_cube_x_y_$k_x$x$k_y$.npz",以及包含均匀采样超材料设计的"smiley_cube_uniform_sample_x_y_$k_x$x$k_y$.npz"。可通过关键字参数`configs`访问配置数据,通过关键字参数`compatible`访问分类结果。配置数组的形状为`[Nsim, k_x, k_y]`,分类数组的形状为`[Nsim]`。配置中的构建块以0或1表示,分别对应红/绿构建块与白/虚线构建块。分类结果以0或1表示,分别对应I类与C类。 <strong>Modescaling_classification_results.zip</strong> 该文件包含Modescaling_raw_data.zip中超材料M2的单元胞的零模数量$M_k(n)$缩放形式的分类结果、斜率与截距项,数据组织形式如下: 1. 基于$1leq nleq4$的零模缩放数据得到的$3leq kleq5$单元胞的分类结果,存储于"results_analysis_new_rrQR_i_Scen_slope_offset_M1k_kxk_fixn4.txt"。数据以`,`作为分隔符加载,每一行对应一个单元胞设计(可通过标签编号与前文的数据进行比对)。各列的组织形式如下: - 第0列:用于追踪的标签编号 - 第1列:分类结果,其中0对应I类,1对应C类,2对应X类(在$1leq nleq4$范围内无法归为I类或C类的设计) - 第2列:$ngeq2$时的斜率(X类无定义) - 第3列:截距项,定义为$M_k(2) - 2cdot ext{slope}$ - 第4列:$M_k(1)$ 2. 基于扩展的$1leq nleq6$范围的零模缩放数据得到的$3leq kleq5$单元胞的分类结果,存储于"results_analysis_new_rrQR_i_Scen_slope_offset_M1k_kxk_fixn4_classC_extend.txt"。数据以`,`作为分隔符加载,每一行对应一个单元胞设计(可通过标签编号与前文的数据进行比对)。各列的组织形式如下: - 第0列:用于追踪的标签编号 - 第1列:分类结果,其中0对应I类,1对应C类,2对应X类(在$1leq nleq6$范围内无法归为I类或C类的设计) - 第2列:$ngeq2$时的斜率(X类无定义) - 第3列:截距项,定义为$M_k(2) - 2cdot ext{slope}$ - 第4列:$M_k(1)$ 3. 基于$1leq nleq4$的零模缩放数据得到的$6leq kleq8$单元胞的分类结果,存储于"results_analysis_new_rrQR_i_Scenx_Sceny_slopex_slopey_offsetx_offsety_M1k_kxk(_extended).txt"。数据以`,`作为分隔符加载,每一行对应一个单元胞设计(可通过标签编号与前文的数据进行比对)。各列的组织形式如下: - 第0列:用于追踪的标签编号 - 第1列:基于$M_k(n_x, 2)$得到的class_x,其中0对应I类,1对应C类,2对应X类(在$1leq n_xleq4$范围内无法归为I类或C类的设计) - 第2列:基于$M_k(2, n_y)$得到的class_y,其中0对应I类,1对应C类,2对应X类(在$1leq n_yleq4$范围内无法归为I类或C类的设计) - 第3列:$n_xgeq2$时的slope_x(X类无定义) - 第4列:$n_ygeq2$时的slope_y(X类无定义) - 第5列:截距项offset_x,定义为$M_k(2,2) - 2cdot ext{slope_x}$ - 第6列:截距项offset_y,定义为$M_k(2,2) - 2cdot ext{slope_y}$ - 第7列:$M_k(1,1)$ 此外,包含M2.ii分类结果的相关内容可在"results_analysis_unimodal_vs_oligomodal_vs_plurimodal_i_Scen_slope_M_M1k_kxk.txt"与"results_analysis_unimodal_vs_oligomodal_vs_plurimodal_i_Scenx_Sceny_slopex_slopey_Mx_My_M1k_kxk.txt"文件中找到。 <strong>Random Walks Data</strong> 该文件包含超材料M2的$3leq kleq8$单元胞的随机游走数据。随机游走从一个C类单元胞设计(分类为M2.ii)开始,每一步$s$随机选取一个单元胞并将其改为随机新取向,总步数为$s=k^2$。数据组织形式如下: 每个步数的配置数据存储于名为"configlist_test_i.npy"的文件中,其中$i$为编号,对应不同的初始单元胞。存储数组的形状为`[k*k+1, 2*k+2, 2*k+2]`,第一维度代表步数$s$,其中$s=0$为初始配置;第二与第三维度代表像素化表示的单元胞配置(详见论文),并通过周期性边界条件(periodic boundary conditions)填充了1像素宽的边界层。每个配置的分类结果存储于"lmlist_test_i.npy"文件中,其中$i$与"configlist_test_i.npy"中的编号一致。存储数组的形状为`[k*k+1]`,其索引对应步数$s$,存储的数值为对应单元胞的分类结果,其中${0,1} = { ext{I类, C类}}$。

提供机构:
Zenodo
创建时间:
2022-02-07
二维码
社区交流群
二维码
科研交流群
商业服务