Skip to content

Commit

Permalink
hyper
Browse files Browse the repository at this point in the history
  • Loading branch information
Peppasaur committed Nov 18, 2023
1 parent 23dc165 commit 3001cbe
Show file tree
Hide file tree
Showing 6 changed files with 525 additions and 0 deletions.
5 changes: 5 additions & 0 deletions easygraph/datasets/hypergraph/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
from .cat_edge_Cooking import *
from .contact_primary_school import *
from .House_Committees import *
from .load_dataset import *
from .mathoverflow_answers import *
from .senate_committees import *
from .trivago_clicks import *
from .walmart_trips import *
102 changes: 102 additions & 0 deletions easygraph/datasets/hypergraph/contact_primary_school.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
import requests

from easygraph.utils.exception import EasyGraphError


def request_text_from_url(url):
try:
r = requests.get(url)
except requests.ConnectionError:
raise EasyGraphError("Connection Error!")

if r.ok:
return r.text
else:
raise EasyGraphError(f"Error: HTTP response {r.status_code}")


class contact_primary_school:
def __init__(self, data_root=None):
self.data_root = "https://" if data_root is not None else data_root
self.hyperedges_path = "https://gitlab.com/easy-graph/easygraph-data-contact-primary-school/-/raw/main/hyperedges-contact-primary-school.txt?inline=false"
self.node_labels_path = "https://gitlab.com/easy-graph/easygraph-data-contact-primary-school/-/raw/main/node-labels-contact-primary-school.txt?ref_type=heads&inline=false"
#self.node_names_path = "https://gitlab.com/easy-graph/easygraph-data-house-committees/-/raw/main/node-names-house-committees.txt?ref_type=heads&inline=false"
self.label_names_path = "https://gitlab.com/easy-graph/easygraph-data-contact-primary-school/-/raw/main/label-names-contact-primary-school.txt?ref_type=heads&inline=false"
self._hyperedges = []
self._node_labels = []
self._label_names = []
self._node_names = []
self.generate_hypergraph(
hyperedges_path=self.hyperedges_path,
node_labels_path=self.node_labels_path,
#node_names_path=self.node_names_path,
label_names_path=self.label_names_path,
)

def process_label_txt(self, data_str, delimiter="\n", transform_fun=str):
data_str = data_str.strip()
data_lst = data_str.split(delimiter)
final_lst = []
for data in data_lst:
data = data.strip()
data = transform_fun(data)
final_lst.append(data)
return final_lst

@property
def node_labels(self):
return self._node_labels

"""
@property
def node_names(self):
return self._node_names
"""
@property
def label_names(self):
return self._label_names

@property
def hyperedges(self):
return self._hyperedges

def generate_hypergraph(
self,
hyperedges_path=None,
node_labels_path=None,
#node_names_path=None,
label_names_path=None,
):
def fun(data):
data = int(data) - 1
return data

hyperedges_info = request_text_from_url(hyperedges_path)
hyperedges_info = hyperedges_info.strip()
hyperedges_lst = hyperedges_info.split("\n")
for hyperedge in hyperedges_lst:
hyperedge = hyperedge.strip()
hyperedge = [int(i) - 1 for i in hyperedge.split(",")]
self._hyperedges.append(tuple(hyperedge))
# print(self.hyperedges)

node_labels_info = request_text_from_url(node_labels_path)

process_node_labels_info = self.process_label_txt(
node_labels_info, transform_fun=fun
)
self._node_labels = process_node_labels_info
# print("process_node_labels_info:", process_node_labels_info)
# print("process_node_names_info:", process_node_names_info)
label_names_info = request_text_from_url(label_names_path)
process_label_names_info = self.process_label_txt(label_names_info)
self._label_names = process_label_names_info
# print("process_label_names_info:", process_label_names_info)



if __name__ == "__main__":
a = contact_primary_school()
print(a.node_labels)
print(a.label_names)
# print(a.node_names)
110 changes: 110 additions & 0 deletions easygraph/datasets/hypergraph/mathoverflow_answers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
import requests

from easygraph.utils.exception import EasyGraphError


def request_text_from_url(url):
try:
r = requests.get(url)
except requests.ConnectionError:
raise EasyGraphError("Connection Error!")

if r.ok:
return r.text
else:
raise EasyGraphError(f"Error: HTTP response {r.status_code}")


class mathoverflow_answers:
def __init__(self, data_root=None):
self.data_root = "https://" if data_root is not None else data_root
self.hyperedges_path = "https://gitlab.com/easy-graph/easygraph-data-mathoverflow-answers/-/raw/main/hyperedges-mathoverflow-answers.txt?inline=false"
self.node_labels_path = "https://gitlab.com/easy-graph/easygraph-data-mathoverflow-answers/-/raw/main/node-labels-mathoverflow-answers.txt?ref_type=heads&inline=false"
#self.node_names_path = "https://gitlab.com/easy-graph/easygraph-data-house-committees/-/raw/main/node-names-house-committees.txt?ref_type=heads&inline=false"
self.label_names_path = "https://gitlab.com/easy-graph/easygraph-data-mathoverflow-answers/-/raw/main/label-names-mathoverflow-answers.txt?ref_type=heads&inline=false"
self._hyperedges = []
self._node_labels = []
self._label_names = []
self._node_names = []
self.generate_hypergraph(
hyperedges_path=self.hyperedges_path,
node_labels_path=self.node_labels_path,
#node_names_path=self.node_names_path,
label_names_path=self.label_names_path,
)

def process_label_txt(self, data_str, delimiter="\n", transform_fun=str):
data_str = data_str.strip()
data_lst = data_str.split(delimiter)
final_lst = []
for data in data_lst:
data = data.strip()
data = transform_fun(data)
final_lst.append(data)
return final_lst

@property
def node_labels(self):
return self._node_labels

"""
@property
def node_names(self):
return self._node_names
"""
@property
def label_names(self):
return self._label_names

@property
def hyperedges(self):
return self._hyperedges

def generate_hypergraph(
self,
hyperedges_path=None,
node_labels_path=None,
#node_names_path=None,
label_names_path=None,
):
def fun(data):
data = int(data) - 1
return data

hyperedges_info = request_text_from_url(hyperedges_path)
hyperedges_info = hyperedges_info.strip()
hyperedges_lst = hyperedges_info.split("\n")
for hyperedge in hyperedges_lst:
hyperedge = hyperedge.strip()
hyperedge = [int(i) - 1 for i in hyperedge.split(",")]
self._hyperedges.append(tuple(hyperedge))
# print(self.hyperedges)
'''
node_labels_info = request_text_from_url(node_labels_path)
process_node_labels_info = self.process_label_txt(
node_labels_info, transform_fun=fun
)
self._node_labels = process_node_labels_info
'''
node_labels_info = request_text_from_url(hyperedges_path)
node_labels_info = node_labels_info.strip()
node_labels_lst = hyperedges_info.split("\n")
for node_label in node_labels_lst:
node_label = node_label.strip()
node_label = [int(i) - 1 for i in node_label.split(",")]
self._node_labels.append(tuple(node_label))
# print("process_node_labels_info:", process_node_labels_info)
# print("process_node_names_info:", process_node_names_info)
label_names_info = request_text_from_url(label_names_path)
process_label_names_info = self.process_label_txt(label_names_info)
self._label_names = process_label_names_info
# print("process_label_names_info:", process_label_names_info)



if __name__ == "__main__":
a = mathoverflow_answers()
print(a.node_labels)
print(a.label_names)
print(a.hyperedges)
104 changes: 104 additions & 0 deletions easygraph/datasets/hypergraph/senate_committees.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
import requests

from easygraph.utils.exception import EasyGraphError


def request_text_from_url(url):
try:
r = requests.get(url)
except requests.ConnectionError:
raise EasyGraphError("Connection Error!")

if r.ok:
return r.text
else:
raise EasyGraphError(f"Error: HTTP response {r.status_code}")


class senate_committees:
def __init__(self, data_root=None):
self.data_root = "https://" if data_root is not None else data_root
self.hyperedges_path = "https://gitlab.com/easy-graph/easygraph-data-senate-committees/-/raw/main/hyperedges-senate-committees.txt?inline=false"
self.node_labels_path = "https://gitlab.com/easy-graph/easygraph-data-senate-committees/-/raw/main/node-labels-senate-committees.txt?ref_type=heads&inline=false"
self.node_names_path = "https://gitlab.com/easy-graph/easygraph-data-senate-committees/-/raw/main/node-names-senate-committees.txt?ref_type=heads&inline=false"
self.label_names_path = "https://gitlab.com/easy-graph/easygraph-data-senate-committees/-/raw/main/label-names-senate-committees.txt?ref_type=heads&inline=false"
self._hyperedges = []
self._node_labels = []
self._label_names = []
self._node_names = []
self.generate_hypergraph(
hyperedges_path=self.hyperedges_path,
node_labels_path=self.node_labels_path,
node_names_path=self.node_names_path,
label_names_path=self.label_names_path,
)

def process_label_txt(self, data_str, delimiter="\n", transform_fun=str):
data_str = data_str.strip()
data_lst = data_str.split(delimiter)
final_lst = []
for data in data_lst:
data = data.strip()
data = transform_fun(data)
final_lst.append(data)
return final_lst

@property
def node_labels(self):
return self._node_labels

@property
def node_names(self):
return self._node_names

@property
def label_names(self):
return self._label_names

@property
def hyperedges(self):
return self._hyperedges

def generate_hypergraph(
self,
hyperedges_path=None,
node_labels_path=None,
node_names_path=None,
label_names_path=None,
):
def fun(data):
data = int(data) - 1
return data

hyperedges_info = request_text_from_url(hyperedges_path)
hyperedges_info = hyperedges_info.strip()
hyperedges_lst = hyperedges_info.split("\n")
for hyperedge in hyperedges_lst:
hyperedge = hyperedge.strip()
hyperedge = [int(i) - 1 for i in hyperedge.split(",")]
self._hyperedges.append(tuple(hyperedge))
# print(self.hyperedges)

node_labels_info = request_text_from_url(node_labels_path)

process_node_labels_info = self.process_label_txt(
node_labels_info, transform_fun=fun
)
self._node_labels = process_node_labels_info
# print("process_node_labels_info:", process_node_labels_info)
node_names_info = request_text_from_url(node_names_path)
process_node_names_info = self.process_label_txt(node_names_info)
self._node_names = process_node_names_info
# print("process_node_names_info:", process_node_names_info)
label_names_info = request_text_from_url(label_names_path)
process_label_names_info = self.process_label_txt(label_names_info)
self._label_names = process_label_names_info
# print("process_label_names_info:", process_label_names_info)


#
if __name__ == "__main__":
a = senate_committees()
print(a.node_labels)
print(a.label_names)
print(a.node_names)
Loading

0 comments on commit 3001cbe

Please sign in to comment.