diff options
author | CoprDistGit <infra@openeuler.org> | 2023-05-29 12:52:31 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2023-05-29 12:52:31 +0000 |
commit | a08e9761471674e09c2be4f16d769a3289a63877 (patch) | |
tree | cd628f9db637d0155fbb58238f46eadef5882d46 /python-adptc-lib.spec | |
parent | 0eb14eb2ab80357d84e477a5c5e8b5ea67d0db33 (diff) |
automatic import of python-adptc-lib
Diffstat (limited to 'python-adptc-lib.spec')
-rw-r--r-- | python-adptc-lib.spec | 372 |
1 files changed, 372 insertions, 0 deletions
diff --git a/python-adptc-lib.spec b/python-adptc-lib.spec new file mode 100644 index 0000000..d0e96e5 --- /dev/null +++ b/python-adptc-lib.spec @@ -0,0 +1,372 @@ +%global _empty_manifest_terminate_build 0 +Name: python-ADPTC-LIB +Version: 0.0.7 +Release: 1 +Summary: 自适应密度峰值树聚类(Adaptive Density Peak Tree Clustering) +License: MIT License +URL: https://pypi.org/project/ADPTC-LIB/ +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/0d/20/58fd440c18463dc9bb222d4e6af39b8fd11fb91768230058407e2674e9f8/ADPTC_LIB-0.0.7.tar.gz +BuildArch: noarch + + +%description +<!-- + * @Description: + * @Author: SongJ + * @Date: 2020-12-29 13:52:28 + * @LastEditTime: 2021-04-12 10:44:01 + * @LastEditors: SongJ +--> + +## 自适应密度峰值树聚类(Adaptive Density Peak Tree Clustering) +本算法是在快速搜索与发现密度峰值聚类算法(Clustering by fast search and find of density peaks)CFSFDP的基础上进行改进的成果,主要解决的问题有: +- 手动选择聚类中心 +- 单簇多密度峰值导致类簇误分 +- 面向时空数据聚类时,无法顾及时空耦合 +### 原理: +通过CFSFDP算法的核心概念:局部密度和斥群值,构建密度峰值树,通过直达点、连通点和切割点分离子树,达到类簇划分的目的。 + +<img src="https://cdn.jsdelivr.net/gh/SuilandCoder/PicStorage//img/image-20210409210616098.png" alt="image-20210409210616098" style="zoom: 80%;" /> + + + + + +### 使用方法: +#### 1. 安装: + +```python +pip install ADPTC-LIB +``` + +#### 2. 空间数据聚类: + +```python +import numpy as np +from ADPTC_LIB.cluster import ADPTC +from ADPTC_LIB import visual +X = np.loadtxt(r"../test_data/Aggregation.txt", delimiter="\t") +X = X[:,[0,1]] +atdpc_obj = ADPTC(X) +atdpc_obj.clustering(2) +visual.show_result(atdpc_obj.labels,X,np.array(list(atdpc_obj.core_points))) +``` + + + +#### 3. 空间属性数据聚类: + +```python +from ADPTC_LIB.cluster import ADPTC +from ADPTC_LIB import visual +import xarray as xr +import os +import numpy as np +filePath = os.path.join(r'Z:\regions_daily_010deg\\05\\2013.nc') +dataset = xr.open_dataset(filePath) +pre_ds = dataset['precipitation'] +lon = pre_ds.lon +lat = pre_ds.lat +lon_range = lon[(lon>-30)&(lon<70)] +lat_range = lat[(lat>30)&(lat<90)] +var = pre_ds.sel(lon=lon_range,lat = lat_range) +var = var.resample(time='1M',skipna=True).sum() +var_t = var.sel(time=var.time[0]) +reduced = var_t.coarsen(lon=5).mean().coarsen(lat=5).mean() +data_nc = np.array(reduced) +spatial_eps=4 +attr_eps=8 +density_metric='gauss' +spre = ADPTC(data_nc) +spre.spacial_clustering_raster(spatial_eps,attr_eps,density_metric,knn_num=100,leaf_size=3000,connect_eps=0.9) +visual.show_result_2d(reduced,spre.labels) +``` + + + +#### 4.时空属性聚类: + +```python +from ADPTC_LIB.cluster import ADPTC +from ADPTC_LIB import visual +import xarray as xr +import numpy as np +temp= xr.open_dataset(r'Z:\MSWX\temp\2020.nc') +temp_2020 = temp['air_temperature'] +lon = temp_2020.lon +lat = temp_2020.lat +time = temp_2020.time +lon_range = lon[(lon>70)&(lon<140)] +lat_range = lat[(lat>15)&(lat<55)] +var = temp_2020.sel(lon=lon_range,lat = lat_range) +reduced = var.coarsen(lon=5).mean().coarsen(lat=5).mean() +data_nc = np.array(reduced) +s_eps = 5 +t_eps = 1 +attr_eps = 2.5 +density_metric='gauss' +spre = ADPTC(data_nc) +spre.st_clustering_raster(s_eps,t_eps,attr_eps,density_metric,knn_num=100,leaf_size=3000,connect_eps=0.9) +visual.show_result_3d(reduced,spre,[70, 140, 15, 50],[0,12],21) +``` + + + +%package -n python3-ADPTC-LIB +Summary: 自适应密度峰值树聚类(Adaptive Density Peak Tree Clustering) +Provides: python-ADPTC-LIB +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-ADPTC-LIB +<!-- + * @Description: + * @Author: SongJ + * @Date: 2020-12-29 13:52:28 + * @LastEditTime: 2021-04-12 10:44:01 + * @LastEditors: SongJ +--> + +## 自适应密度峰值树聚类(Adaptive Density Peak Tree Clustering) +本算法是在快速搜索与发现密度峰值聚类算法(Clustering by fast search and find of density peaks)CFSFDP的基础上进行改进的成果,主要解决的问题有: +- 手动选择聚类中心 +- 单簇多密度峰值导致类簇误分 +- 面向时空数据聚类时,无法顾及时空耦合 +### 原理: +通过CFSFDP算法的核心概念:局部密度和斥群值,构建密度峰值树,通过直达点、连通点和切割点分离子树,达到类簇划分的目的。 + +<img src="https://cdn.jsdelivr.net/gh/SuilandCoder/PicStorage//img/image-20210409210616098.png" alt="image-20210409210616098" style="zoom: 80%;" /> + + + + + +### 使用方法: +#### 1. 安装: + +```python +pip install ADPTC-LIB +``` + +#### 2. 空间数据聚类: + +```python +import numpy as np +from ADPTC_LIB.cluster import ADPTC +from ADPTC_LIB import visual +X = np.loadtxt(r"../test_data/Aggregation.txt", delimiter="\t") +X = X[:,[0,1]] +atdpc_obj = ADPTC(X) +atdpc_obj.clustering(2) +visual.show_result(atdpc_obj.labels,X,np.array(list(atdpc_obj.core_points))) +``` + + + +#### 3. 空间属性数据聚类: + +```python +from ADPTC_LIB.cluster import ADPTC +from ADPTC_LIB import visual +import xarray as xr +import os +import numpy as np +filePath = os.path.join(r'Z:\regions_daily_010deg\\05\\2013.nc') +dataset = xr.open_dataset(filePath) +pre_ds = dataset['precipitation'] +lon = pre_ds.lon +lat = pre_ds.lat +lon_range = lon[(lon>-30)&(lon<70)] +lat_range = lat[(lat>30)&(lat<90)] +var = pre_ds.sel(lon=lon_range,lat = lat_range) +var = var.resample(time='1M',skipna=True).sum() +var_t = var.sel(time=var.time[0]) +reduced = var_t.coarsen(lon=5).mean().coarsen(lat=5).mean() +data_nc = np.array(reduced) +spatial_eps=4 +attr_eps=8 +density_metric='gauss' +spre = ADPTC(data_nc) +spre.spacial_clustering_raster(spatial_eps,attr_eps,density_metric,knn_num=100,leaf_size=3000,connect_eps=0.9) +visual.show_result_2d(reduced,spre.labels) +``` + + + +#### 4.时空属性聚类: + +```python +from ADPTC_LIB.cluster import ADPTC +from ADPTC_LIB import visual +import xarray as xr +import numpy as np +temp= xr.open_dataset(r'Z:\MSWX\temp\2020.nc') +temp_2020 = temp['air_temperature'] +lon = temp_2020.lon +lat = temp_2020.lat +time = temp_2020.time +lon_range = lon[(lon>70)&(lon<140)] +lat_range = lat[(lat>15)&(lat<55)] +var = temp_2020.sel(lon=lon_range,lat = lat_range) +reduced = var.coarsen(lon=5).mean().coarsen(lat=5).mean() +data_nc = np.array(reduced) +s_eps = 5 +t_eps = 1 +attr_eps = 2.5 +density_metric='gauss' +spre = ADPTC(data_nc) +spre.st_clustering_raster(s_eps,t_eps,attr_eps,density_metric,knn_num=100,leaf_size=3000,connect_eps=0.9) +visual.show_result_3d(reduced,spre,[70, 140, 15, 50],[0,12],21) +``` + + + +%package help +Summary: Development documents and examples for ADPTC-LIB +Provides: python3-ADPTC-LIB-doc +%description help +<!-- + * @Description: + * @Author: SongJ + * @Date: 2020-12-29 13:52:28 + * @LastEditTime: 2021-04-12 10:44:01 + * @LastEditors: SongJ +--> + +## 自适应密度峰值树聚类(Adaptive Density Peak Tree Clustering) +本算法是在快速搜索与发现密度峰值聚类算法(Clustering by fast search and find of density peaks)CFSFDP的基础上进行改进的成果,主要解决的问题有: +- 手动选择聚类中心 +- 单簇多密度峰值导致类簇误分 +- 面向时空数据聚类时,无法顾及时空耦合 +### 原理: +通过CFSFDP算法的核心概念:局部密度和斥群值,构建密度峰值树,通过直达点、连通点和切割点分离子树,达到类簇划分的目的。 + +<img src="https://cdn.jsdelivr.net/gh/SuilandCoder/PicStorage//img/image-20210409210616098.png" alt="image-20210409210616098" style="zoom: 80%;" /> + + + + + +### 使用方法: +#### 1. 安装: + +```python +pip install ADPTC-LIB +``` + +#### 2. 空间数据聚类: + +```python +import numpy as np +from ADPTC_LIB.cluster import ADPTC +from ADPTC_LIB import visual +X = np.loadtxt(r"../test_data/Aggregation.txt", delimiter="\t") +X = X[:,[0,1]] +atdpc_obj = ADPTC(X) +atdpc_obj.clustering(2) +visual.show_result(atdpc_obj.labels,X,np.array(list(atdpc_obj.core_points))) +``` + + + +#### 3. 空间属性数据聚类: + +```python +from ADPTC_LIB.cluster import ADPTC +from ADPTC_LIB import visual +import xarray as xr +import os +import numpy as np +filePath = os.path.join(r'Z:\regions_daily_010deg\\05\\2013.nc') +dataset = xr.open_dataset(filePath) +pre_ds = dataset['precipitation'] +lon = pre_ds.lon +lat = pre_ds.lat +lon_range = lon[(lon>-30)&(lon<70)] +lat_range = lat[(lat>30)&(lat<90)] +var = pre_ds.sel(lon=lon_range,lat = lat_range) +var = var.resample(time='1M',skipna=True).sum() +var_t = var.sel(time=var.time[0]) +reduced = var_t.coarsen(lon=5).mean().coarsen(lat=5).mean() +data_nc = np.array(reduced) +spatial_eps=4 +attr_eps=8 +density_metric='gauss' +spre = ADPTC(data_nc) +spre.spacial_clustering_raster(spatial_eps,attr_eps,density_metric,knn_num=100,leaf_size=3000,connect_eps=0.9) +visual.show_result_2d(reduced,spre.labels) +``` + + + +#### 4.时空属性聚类: + +```python +from ADPTC_LIB.cluster import ADPTC +from ADPTC_LIB import visual +import xarray as xr +import numpy as np +temp= xr.open_dataset(r'Z:\MSWX\temp\2020.nc') +temp_2020 = temp['air_temperature'] +lon = temp_2020.lon +lat = temp_2020.lat +time = temp_2020.time +lon_range = lon[(lon>70)&(lon<140)] +lat_range = lat[(lat>15)&(lat<55)] +var = temp_2020.sel(lon=lon_range,lat = lat_range) +reduced = var.coarsen(lon=5).mean().coarsen(lat=5).mean() +data_nc = np.array(reduced) +s_eps = 5 +t_eps = 1 +attr_eps = 2.5 +density_metric='gauss' +spre = ADPTC(data_nc) +spre.st_clustering_raster(s_eps,t_eps,attr_eps,density_metric,knn_num=100,leaf_size=3000,connect_eps=0.9) +visual.show_result_3d(reduced,spre,[70, 140, 15, 50],[0,12],21) +``` + + + +%prep +%autosetup -n ADPTC-LIB-0.0.7 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-ADPTC-LIB -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Mon May 29 2023 Python_Bot <Python_Bot@openeuler.org> - 0.0.7-1 +- Package Spec generated |