From bd9f5a65060ade1b90d94007f43070ec6725226c Mon Sep 17 00:00:00 2001 From: Junxiang Wang Date: Thu, 4 Apr 2024 19:03:44 -0400 Subject: [PATCH] update directory --- GraphSL.egg-info/PKG-INFO | 16 +++---- GraphSL.egg-info/top_level.txt | 5 +- Evaluation.py => GraphSL/Evaluation.py | 0 {GNN => GraphSL/GNN}/GCNSI/__init__.py | 0 {GNN => GraphSL/GNN}/GCNSI/main.py | 6 +-- {GNN => GraphSL/GNN}/GCNSI/model.py | 0 {GNN => GraphSL/GNN}/IVGD/__init__.py | 0 {GNN => GraphSL/GNN}/IVGD/correction.py | 0 {GNN => GraphSL/GNN}/IVGD/earlystopping.py | 0 {GNN => GraphSL/GNN}/IVGD/i_deepis.py | 0 {GNN => GraphSL/GNN}/IVGD/main.py | 12 ++--- {GNN => GraphSL/GNN}/IVGD/model/MLP.py | 0 {GNN => GraphSL/GNN}/IVGD/model/__init__.py | 0 {GNN => GraphSL/GNN}/IVGD/preprocessing.py | 0 {GNN => GraphSL/GNN}/IVGD/training.py | 0 {GNN => GraphSL/GNN}/IVGD/validity_net.py | 0 {GNN => GraphSL/GNN}/SLVAE/__init__.py | 0 {GNN => GraphSL/GNN}/SLVAE/main.py | 4 +- {GNN => GraphSL/GNN}/SLVAE/model.py | 0 {GNN => GraphSL/GNN}/__init__.py | 0 Prescribed.py => GraphSL/Prescribed.py | 2 +- {data => GraphSL/data}/cora_ml | Bin {data => GraphSL/data}/digg16000 | Bin {data => GraphSL/data}/dolphins | Bin {data => GraphSL/data}/jazz | Bin {data => GraphSL/data}/karate | Bin {data => GraphSL/data}/meme8000 | Bin {data => GraphSL/data}/netscience | Bin {data => GraphSL/data}/power_grid | Bin {data => GraphSL/data}/utils.py | 2 +- all.py | 49 -------------------- dist/GraphSL-0.6.tar.gz | Bin 5573 -> 0 bytes dist/GraphSL-0.7.tar.gz | Bin 0 -> 5608 bytes setup.py | 9 ++-- 34 files changed, 26 insertions(+), 79 deletions(-) rename Evaluation.py => GraphSL/Evaluation.py (100%) rename {GNN => GraphSL/GNN}/GCNSI/__init__.py (100%) rename {GNN => GraphSL/GNN}/GCNSI/main.py (98%) rename {GNN => GraphSL/GNN}/GCNSI/model.py (100%) rename {GNN => GraphSL/GNN}/IVGD/__init__.py (100%) rename {GNN => GraphSL/GNN}/IVGD/correction.py (100%) rename {GNN => GraphSL/GNN}/IVGD/earlystopping.py (100%) rename {GNN => GraphSL/GNN}/IVGD/i_deepis.py (100%) rename {GNN => GraphSL/GNN}/IVGD/main.py (97%) rename {GNN => GraphSL/GNN}/IVGD/model/MLP.py (100%) rename {GNN => GraphSL/GNN}/IVGD/model/__init__.py (100%) rename {GNN => GraphSL/GNN}/IVGD/preprocessing.py (100%) rename {GNN => GraphSL/GNN}/IVGD/training.py (100%) rename {GNN => GraphSL/GNN}/IVGD/validity_net.py (100%) rename {GNN => GraphSL/GNN}/SLVAE/__init__.py (100%) rename {GNN => GraphSL/GNN}/SLVAE/main.py (99%) rename {GNN => GraphSL/GNN}/SLVAE/model.py (100%) rename {GNN => GraphSL/GNN}/__init__.py (100%) rename Prescribed.py => GraphSL/Prescribed.py (99%) rename {data => GraphSL/data}/cora_ml (100%) rename {data => GraphSL/data}/digg16000 (100%) rename {data => GraphSL/data}/dolphins (100%) rename {data => GraphSL/data}/jazz (100%) rename {data => GraphSL/data}/karate (100%) rename {data => GraphSL/data}/meme8000 (100%) rename {data => GraphSL/data}/netscience (100%) rename {data => GraphSL/data}/power_grid (100%) rename {data => GraphSL/data}/utils.py (99%) delete mode 100644 all.py delete mode 100644 dist/GraphSL-0.6.tar.gz create mode 100644 dist/GraphSL-0.7.tar.gz diff --git a/GraphSL.egg-info/PKG-INFO b/GraphSL.egg-info/PKG-INFO index 8206e35..c758e56 100644 --- a/GraphSL.egg-info/PKG-INFO +++ b/GraphSL.egg-info/PKG-INFO @@ -1,22 +1,20 @@ Metadata-Version: 2.1 Name: GraphSL -Version: 0.6 +Version: 0.7 Summary: Graph Source Localization Approaches and Benchmark Datasets Home-page: https://xianggebenben.github.io/Junxiang_Wang.github.io/ -Download-URL: https://github.com/xianggebenben/GraphSL/archive/refs/tags/v.0.6.tar.gz Author: Junxiang Wang Author-email: junxiang.wang@alumni.emory.edu License: MIT +Download-URL: https://github.com/xianggebenben/GraphSL/archive/refs/tags/v.0.6.tar.gz Keywords: Graph Diffusion,Graph Source Localization,Prescribed Methods,GNN Methods,Benchmark +Platform: UNKNOWN Classifier: Development Status :: 3 - Alpha Classifier: License :: OSI Approved :: MIT License Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.10 +Requires-Python: >=3.9 License-File: LICENSE -Requires-Dist: numpy -Requires-Dist: networkx -Requires-Dist: ndlib -Requires-Dist: torch -Requires-Dist: scikit-learn -Requires-Dist: scipy -Requires-Dist: torch_geometric + +UNKNOWN + diff --git a/GraphSL.egg-info/top_level.txt b/GraphSL.egg-info/top_level.txt index 71e43f3..8b13789 100644 --- a/GraphSL.egg-info/top_level.txt +++ b/GraphSL.egg-info/top_level.txt @@ -1,4 +1 @@ -Evaluation -GNN -Prescribed -data + diff --git a/Evaluation.py b/GraphSL/Evaluation.py similarity index 100% rename from Evaluation.py rename to GraphSL/Evaluation.py diff --git a/GNN/GCNSI/__init__.py b/GraphSL/GNN/GCNSI/__init__.py similarity index 100% rename from GNN/GCNSI/__init__.py rename to GraphSL/GNN/GCNSI/__init__.py diff --git a/GNN/GCNSI/main.py b/GraphSL/GNN/GCNSI/main.py similarity index 98% rename from GNN/GCNSI/main.py rename to GraphSL/GNN/GCNSI/main.py index e985238..c874fdc 100644 --- a/GNN/GCNSI/main.py +++ b/GraphSL/GNN/GCNSI/main.py @@ -2,10 +2,10 @@ from scipy.sparse import csgraph,coo_matrix import copy import numpy as np -from GNN.GCNSI.model import GCNSI_model -from Prescribed import LPSI +from GraphSL.GNN.GCNSI.model import GCNSI_model +from GraphSL.Prescribed import LPSI from sklearn.metrics import roc_auc_score,f1_score,accuracy_score,precision_score,recall_score -from Evaluation import Metric +from GraphSL.Evaluation import Metric class GCNSI: """ Implement the Graph Convolutional Networks based Source Identification (GCNSI). diff --git a/GNN/GCNSI/model.py b/GraphSL/GNN/GCNSI/model.py similarity index 100% rename from GNN/GCNSI/model.py rename to GraphSL/GNN/GCNSI/model.py diff --git a/GNN/IVGD/__init__.py b/GraphSL/GNN/IVGD/__init__.py similarity index 100% rename from GNN/IVGD/__init__.py rename to GraphSL/GNN/IVGD/__init__.py diff --git a/GNN/IVGD/correction.py b/GraphSL/GNN/IVGD/correction.py similarity index 100% rename from GNN/IVGD/correction.py rename to GraphSL/GNN/IVGD/correction.py diff --git a/GNN/IVGD/earlystopping.py b/GraphSL/GNN/IVGD/earlystopping.py similarity index 100% rename from GNN/IVGD/earlystopping.py rename to GraphSL/GNN/IVGD/earlystopping.py diff --git a/GNN/IVGD/i_deepis.py b/GraphSL/GNN/IVGD/i_deepis.py similarity index 100% rename from GNN/IVGD/i_deepis.py rename to GraphSL/GNN/IVGD/i_deepis.py diff --git a/GNN/IVGD/main.py b/GraphSL/GNN/IVGD/main.py similarity index 97% rename from GNN/IVGD/main.py rename to GraphSL/GNN/IVGD/main.py index 02ad91a..3e6c126 100644 --- a/GNN/IVGD/main.py +++ b/GraphSL/GNN/IVGD/main.py @@ -2,13 +2,13 @@ import numpy as np import torch import torch.nn as nn -from GNN.IVGD.correction import correction -from GNN.IVGD.i_deepis import i_DeepIS, DiffusionPropagate -from GNN.IVGD.training import FeatureCons, get_idx_new_seeds -from GNN.IVGD.model.MLP import MLPTransform -from GNN.IVGD.training import train_model +from GraphSL.GNN.IVGD.correction import correction +from GraphSL.GNN.IVGD.i_deepis import i_DeepIS, DiffusionPropagate +from GraphSL.GNN.IVGD.training import FeatureCons, get_idx_new_seeds +from GraphSL.GNN.IVGD.model.MLP import MLPTransform +from GraphSL.GNN.IVGD.training import train_model from sklearn.metrics import roc_auc_score,f1_score,accuracy_score,precision_score,recall_score -from Evaluation import Metric +from GraphSL.Evaluation import Metric import torch.optim as optim import warnings warnings.filterwarnings("ignore") diff --git a/GNN/IVGD/model/MLP.py b/GraphSL/GNN/IVGD/model/MLP.py similarity index 100% rename from GNN/IVGD/model/MLP.py rename to GraphSL/GNN/IVGD/model/MLP.py diff --git a/GNN/IVGD/model/__init__.py b/GraphSL/GNN/IVGD/model/__init__.py similarity index 100% rename from GNN/IVGD/model/__init__.py rename to GraphSL/GNN/IVGD/model/__init__.py diff --git a/GNN/IVGD/preprocessing.py b/GraphSL/GNN/IVGD/preprocessing.py similarity index 100% rename from GNN/IVGD/preprocessing.py rename to GraphSL/GNN/IVGD/preprocessing.py diff --git a/GNN/IVGD/training.py b/GraphSL/GNN/IVGD/training.py similarity index 100% rename from GNN/IVGD/training.py rename to GraphSL/GNN/IVGD/training.py diff --git a/GNN/IVGD/validity_net.py b/GraphSL/GNN/IVGD/validity_net.py similarity index 100% rename from GNN/IVGD/validity_net.py rename to GraphSL/GNN/IVGD/validity_net.py diff --git a/GNN/SLVAE/__init__.py b/GraphSL/GNN/SLVAE/__init__.py similarity index 100% rename from GNN/SLVAE/__init__.py rename to GraphSL/GNN/SLVAE/__init__.py diff --git a/GNN/SLVAE/main.py b/GraphSL/GNN/SLVAE/main.py similarity index 99% rename from GNN/SLVAE/main.py rename to GraphSL/GNN/SLVAE/main.py index f84b1ac..78781bf 100644 --- a/GNN/SLVAE/main.py +++ b/GraphSL/GNN/SLVAE/main.py @@ -2,10 +2,10 @@ import torch import torch.nn.functional as F import numpy as np -from GNN.SLVAE.model import VAE,GNN,DiffusionPropagate +from GraphSL.GNN.SLVAE.model import VAE,GNN,DiffusionPropagate from torch.optim import Adam from sklearn.metrics import roc_auc_score,f1_score,accuracy_score,precision_score,recall_score -from Evaluation import Metric +from GraphSL.Evaluation import Metric class SLVAE_model(nn.Module): """ Source Localization Variational Autoencoder (SLVAE) model combining VAE, GNN, and propagation modules. diff --git a/GNN/SLVAE/model.py b/GraphSL/GNN/SLVAE/model.py similarity index 100% rename from GNN/SLVAE/model.py rename to GraphSL/GNN/SLVAE/model.py diff --git a/GNN/__init__.py b/GraphSL/GNN/__init__.py similarity index 100% rename from GNN/__init__.py rename to GraphSL/GNN/__init__.py diff --git a/Prescribed.py b/GraphSL/Prescribed.py similarity index 99% rename from Prescribed.py rename to GraphSL/Prescribed.py index e4e7981..69ebe4d 100644 --- a/Prescribed.py +++ b/GraphSL/Prescribed.py @@ -4,7 +4,7 @@ import torch from sklearn.metrics import roc_auc_score,f1_score,accuracy_score,precision_score,recall_score from scipy.sparse import csgraph,coo_matrix -from Evaluation import Metric +from GraphSL.Evaluation import Metric class LPSI: """ diff --git a/data/cora_ml b/GraphSL/data/cora_ml similarity index 100% rename from data/cora_ml rename to GraphSL/data/cora_ml diff --git a/data/digg16000 b/GraphSL/data/digg16000 similarity index 100% rename from data/digg16000 rename to GraphSL/data/digg16000 diff --git a/data/dolphins b/GraphSL/data/dolphins similarity index 100% rename from data/dolphins rename to GraphSL/data/dolphins diff --git a/data/jazz b/GraphSL/data/jazz similarity index 100% rename from data/jazz rename to GraphSL/data/jazz diff --git a/data/karate b/GraphSL/data/karate similarity index 100% rename from data/karate rename to GraphSL/data/karate diff --git a/data/meme8000 b/GraphSL/data/meme8000 similarity index 100% rename from data/meme8000 rename to GraphSL/data/meme8000 diff --git a/data/netscience b/GraphSL/data/netscience similarity index 100% rename from data/netscience rename to GraphSL/data/netscience diff --git a/data/power_grid b/GraphSL/data/power_grid similarity index 100% rename from data/power_grid rename to GraphSL/data/power_grid diff --git a/data/utils.py b/GraphSL/data/utils.py similarity index 99% rename from data/utils.py rename to GraphSL/data/utils.py index fc95f45..70592a6 100644 --- a/data/utils.py +++ b/GraphSL/data/utils.py @@ -7,7 +7,7 @@ import copy -def load_dataset(dataset, data_dir='data'): +def load_dataset(dataset, data_dir='GraphSL\data'): """ Load a dataset from a pickle file. diff --git a/all.py b/all.py deleted file mode 100644 index e4edf82..0000000 --- a/all.py +++ /dev/null @@ -1,49 +0,0 @@ -from data.utils import load_dataset, diffusion_generation, split_dataset -from Prescribed import LPSI, NetSleuth, OJC -from GNN.GCNSI.main import GCNSI -from GNN.IVGD.main import IVGD -from GNN.SLVAE.main import SLVAE -data_name = 'karate' # 'karate', 'dolphins', 'jazz', 'netscience', 'cora_ml', 'power_grid', , 'meme8000', 'digg16000' -graph = load_dataset(data_name) -if data_name not in ['meme8000', 'digg16000']: - dataset = diffusion_generation(graph=graph, infect_prob=0.3, diff_type='IC', sim_num=100, seed_ratio=0.3) -else: - dataset = graph -adj, train_dataset, test_dataset =split_dataset(dataset) -lpsi = LPSI() -alpha, thres, auc, f1, pred =lpsi.train(adj, train_dataset) -print("LPSI:") -print(f"train auc: {auc:.3f}, train f1: {f1:.3f}") -metric=lpsi.test(adj, test_dataset, alpha, thres) -print(f"test acc: {metric.acc:.3f}, test pr: {metric.pr:.3f}, test re: {metric.re:.3f}, test f1: {metric.f1:.3f}, test auc: {metric.auc:.3f}") -netSleuth = NetSleuth() -k, auc, f1=netSleuth.train(adj, train_dataset) -print("NetSleuth:") -print(f"train auc: {auc:.3f}, train f1: {f1:.3f}") -metric = netSleuth.test(adj, test_dataset, k) -print(f"test acc: {metric.acc:.3f}, test pr: {metric.pr:.3f}, test re: {metric.re:.3f}, test f1: {metric.f1:.3f}, test auc: {metric.auc:.3f}") -ojc = OJC() -Y, auc, f1 =ojc.train(adj, train_dataset) -print("OJC:") -print(f"train auc: {auc:.3f}, train f1: {f1:.3f}") -metric=ojc.test(adj, test_dataset, Y) -print(f"test acc: {metric.acc:.3f}, test pr: {metric.pr:.3f}, test re: {metric.re:.3f}, test f1: {metric.f1:.3f}, test auc: {metric.auc:.3f}") -gcnsi = GCNSI() -gcnsi_model, thres, auc, f1, pred =gcnsi.train(adj, train_dataset) -print("GCNSI:") -print(f"train auc: {auc:.3f}, train f1: {f1:.3f}") -metric = gcnsi.test(adj, test_dataset, gcnsi_model, thres) -print(f"test acc: {metric.acc:.3f}, test pr: {metric.pr:.3f}, test re: {metric.re:.3f}, test f1: {metric.f1:.3f}, test auc: {metric.auc:.3f}") -ivgd = IVGD() -diffusion_model = ivgd.train_diffusion(adj, train_dataset) -ivgd_model, thres, auc, f1, pred =ivgd.train(adj, train_dataset, diffusion_model) -print("IVGD:") -print(f"train auc: {auc:.3f}, train f1: {f1:.3f}") -metric = ivgd.test(test_dataset, diffusion_model, ivgd_model, thres) -print(f"test acc: {metric.acc:.3f}, test pr: {metric.pr:.3f}, test re: {metric.re:.3f}, test f1: {metric.f1:.3f}, test auc: {metric.auc:.3f}") -slave = SLVAE() -slvae_model, seed_vae_train, thres, auc, f1, pred = slave.train(adj, train_dataset) -print("SLVAE:") -print(f"train auc: {auc:.3f}, train f1: {f1:.3f}") -metric = slave.infer(test_dataset, slvae_model, seed_vae_train, thres) -print(f"test acc: {metric.acc:.3f}, test pr: {metric.pr:.3f}, test re: {metric.re:.3f}, test f1: {metric.f1:.3f}, test auc: {metric.auc:.3f}") diff --git a/dist/GraphSL-0.6.tar.gz b/dist/GraphSL-0.6.tar.gz deleted file mode 100644 index d60c9899907b74eac19f0a586a2f7c74d00839c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5573 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 Ty40mE50(D~)B)_}0H6Q>1|2cx diff --git a/dist/GraphSL-0.7.tar.gz b/dist/GraphSL-0.7.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..2f35289d20c47a25a09799334ec06202b7b88859 GIT binary patch literal 5608 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 CLlN`< literal 0 HcmV?d00001 diff --git a/setup.py b/setup.py index bc7be99..2914239 100644 --- a/setup.py +++ b/setup.py @@ -1,15 +1,15 @@ -from distutils.core import setup +from setuptools import setup, find_packages setup( name = 'GraphSL', # How you named your package folder (MyLib) - packages = ['GraphSL','GraphSL.data','GraphSL.Evaluation','GraphSL.GNN','GraphSL.Prescribed'], # Chose the same as "name" - version = '0.6', # Start with a small number and increase it with every change you make + packages = find_packages(), # Chose the same as "name" + version = '0.7', # Start with a small number and increase it with every change you make license='MIT', # Chose a license from here: https://help.github.com/articles/licensing-a-repository description = 'Graph Source Localization Approaches and Benchmark Datasets', # Give a short description about your library author = 'Junxiang Wang', # Type in your name author_email = 'junxiang.wang@alumni.emory.edu', # Type in your E-Mail url = 'https://xianggebenben.github.io/Junxiang_Wang.github.io/', # Provide either the link to your github or to your website - download_url = 'https://github.com/xianggebenben/GraphSL/archive/refs/tags/v.0.6.tar.gz', # I explain this later on + download_url = 'https://github.com/xianggebenben/GraphSL/archive/refs/tags/v.0.7.tar.gz', # I explain this later on keywords = ['Graph Diffusion', 'Graph Source Localization', 'Prescribed Methods', 'GNN Methods','Benchmark'], # Keywords that define your package best install_requires=[ # I get to this in a second 'numpy', @@ -26,4 +26,5 @@ 'Programming Language :: Python :: 3', #Specify which pyhton versions that you want to support 'Programming Language :: Python :: 3.10' ], +python_requires=">=3.9", ) \ No newline at end of file