glam4cm 0.1.1__py3-none-any.whl → 1.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. glam4cm/__init__.py +2 -1
  2. glam4cm/data_loading/data.py +90 -146
  3. glam4cm/data_loading/encoding.py +17 -6
  4. glam4cm/data_loading/graph_dataset.py +192 -57
  5. glam4cm/data_loading/metadata.py +1 -1
  6. glam4cm/data_loading/models_dataset.py +42 -18
  7. glam4cm/downstream_tasks/bert_edge_classification.py +49 -22
  8. glam4cm/downstream_tasks/bert_graph_classification.py +44 -14
  9. glam4cm/downstream_tasks/bert_graph_classification_comp.py +47 -24
  10. glam4cm/downstream_tasks/bert_link_prediction.py +46 -26
  11. glam4cm/downstream_tasks/bert_node_classification.py +127 -89
  12. glam4cm/downstream_tasks/cm_gpt_node_classification.py +61 -15
  13. glam4cm/downstream_tasks/common_args.py +32 -4
  14. glam4cm/downstream_tasks/gnn_edge_classification.py +24 -7
  15. glam4cm/downstream_tasks/gnn_graph_cls.py +19 -6
  16. glam4cm/downstream_tasks/gnn_link_prediction.py +25 -13
  17. glam4cm/downstream_tasks/gnn_node_classification.py +19 -7
  18. glam4cm/downstream_tasks/utils.py +16 -2
  19. glam4cm/embeddings/bert.py +1 -1
  20. glam4cm/embeddings/common.py +7 -4
  21. glam4cm/encoding/encoders.py +1 -1
  22. glam4cm/lang2graph/archimate.py +0 -5
  23. glam4cm/lang2graph/common.py +99 -41
  24. glam4cm/lang2graph/ecore.py +1 -2
  25. glam4cm/lang2graph/ontouml.py +8 -7
  26. glam4cm/models/gnn_layers.py +20 -6
  27. glam4cm/models/hf.py +2 -2
  28. glam4cm/run.py +12 -7
  29. glam4cm/run_conf_v2.py +405 -0
  30. glam4cm/run_configs.py +70 -106
  31. glam4cm/run_confs.py +41 -0
  32. glam4cm/settings.py +15 -2
  33. glam4cm/tokenization/special_tokens.py +23 -1
  34. glam4cm/tokenization/utils.py +23 -4
  35. glam4cm/trainers/cm_gpt_trainer.py +1 -1
  36. glam4cm/trainers/gnn_edge_classifier.py +12 -1
  37. glam4cm/trainers/gnn_graph_classifier.py +12 -5
  38. glam4cm/trainers/gnn_link_predictor.py +18 -3
  39. glam4cm/trainers/gnn_link_predictor_v2.py +146 -0
  40. glam4cm/trainers/gnn_trainer.py +8 -0
  41. glam4cm/trainers/metrics.py +1 -1
  42. glam4cm/utils.py +265 -2
  43. {glam4cm-0.1.1.dist-info → glam4cm-1.0.0.dist-info}/METADATA +3 -2
  44. glam4cm-1.0.0.dist-info/RECORD +75 -0
  45. {glam4cm-0.1.1.dist-info → glam4cm-1.0.0.dist-info}/WHEEL +1 -1
  46. glam4cm-0.1.1.dist-info/RECORD +0 -72
  47. {glam4cm-0.1.1.dist-info → glam4cm-1.0.0.dist-info}/entry_points.txt +0 -0
  48. {glam4cm-0.1.1.dist-info → glam4cm-1.0.0.dist-info/licenses}/LICENSE +0 -0
  49. {glam4cm-0.1.1.dist-info → glam4cm-1.0.0.dist-info}/top_level.txt +0 -0
glam4cm/utils.py CHANGED
@@ -1,16 +1,23 @@
1
1
  from argparse import ArgumentParser
2
+ from ast import Dict
2
3
  import random
3
4
  import numpy as np
4
5
  import torch
5
6
  import os
6
7
  import fnmatch
7
8
  import json
8
- from typing import List
9
9
  import xmltodict
10
10
  from torch_geometric.data import Data
11
11
  import hashlib
12
12
  import networkx as nx
13
13
  from collections import deque
14
+ import struct
15
+ from tensorboardX.proto import event_pb2
16
+ from collections import deque
17
+ from typing import Any, List, Tuple, Optional, Set
18
+ import networkx as nx
19
+
20
+
14
21
 
15
22
 
16
23
 
@@ -191,4 +198,260 @@ def count_total_lines_of_code(directory):
191
198
 
192
199
 
193
200
  def snake_to_title(snake_str: str):
194
- return snake_str.replace("_", " ").title()
201
+ return snake_str.replace("_", " ").title()
202
+
203
+
204
+ def parse_event_file(filepath):
205
+ """
206
+ Generator that yields `Event` protocol buffer messages
207
+ from a single TensorBoard event file, using TFRecord-like
208
+ parsing without TensorFlow.
209
+ """
210
+ with open(filepath, 'rb') as f:
211
+ while True:
212
+ # 1) Read the length of the next record (8 bytes, little-endian).
213
+ header = f.read(8)
214
+ if len(header) < 8:
215
+ break # no more data
216
+
217
+ record_length = struct.unpack('Q', header)[0]
218
+
219
+ # 2) Skip the 4-byte length CRC (unused here).
220
+ _ = f.read(4)
221
+
222
+ # 3) Read the actual record data.
223
+ record_data = f.read(record_length)
224
+
225
+ # 4) Skip the 4-byte data CRC.
226
+ _ = f.read(4)
227
+
228
+ if len(record_data) < record_length:
229
+ # Incomplete record at end of file
230
+ break
231
+
232
+ # Parse the record into an Event proto.
233
+ event = event_pb2.Event()
234
+ event.ParseFromString(record_data)
235
+ yield event
236
+
237
+
238
+ def get_max_scalars_with_step_epoch(logdir, epoch_tag="eval/epoch"):
239
+ """
240
+ Scans all `events.out.tfevents.*` files in `logdir` and returns a dict:
241
+ {
242
+ scalar_tag: {
243
+ "max_value": float,
244
+ "step": int or None,
245
+ "epoch": int or float or None
246
+ },
247
+ ...
248
+ }
249
+ By default, it looks for an 'eval/epoch' scalar to determine the epoch.
250
+ If that scalar isn't found, epoch will be None.
251
+ """
252
+ max_scalars = {}
253
+
254
+ # Gather all event files in the directory
255
+ event_files = [
256
+ os.path.join(logdir, f)
257
+ for f in os.listdir(logdir)
258
+ if f.startswith("events.out.tfevents")
259
+ ]
260
+
261
+ for filepath in event_files:
262
+ for event in parse_event_file(filepath):
263
+ # In proto3, "step" is always present as an int64.
264
+ # If it's not explicitly set, it'll be 0.
265
+ step = event.step
266
+ if step == 0:
267
+ step = None # treat zero as "no step logged"
268
+
269
+ # Try to find an epoch value in the same event (if you're logging it).
270
+ epoch_val = None
271
+ if event.summary and event.summary.value:
272
+ # First pass: see if there's a dedicated epoch tag in this event
273
+ for v in event.summary.value:
274
+ if v.tag == epoch_tag and v.HasField("simple_value"):
275
+ epoch_val = v.simple_value
276
+ break
277
+
278
+ # Second pass: for each scalar, update the max if we see a bigger value
279
+ for v in event.summary.value:
280
+ if v.HasField('simple_value'):
281
+ tag = v.tag
282
+ val = v.simple_value
283
+
284
+ # Ignore the epoch tag itself; we only want other scalar tags
285
+ if tag == epoch_tag:
286
+ continue
287
+
288
+ # Update if this tag is new or if we found a bigger value
289
+ if (tag not in max_scalars) or (val > max_scalars[tag]["max_value"]):
290
+ max_scalars[tag] = {
291
+ "max_value": val,
292
+ "step": step,
293
+ "epoch": epoch_val
294
+ }
295
+
296
+ return max_scalars
297
+
298
+
299
+ def update_config_results(logs_dir='logs'):
300
+
301
+ logs_dir = "logs"
302
+
303
+ def is_tf_dir(dir_path):
304
+ return any([f.startswith("events.out.tfevents") for f in os.listdir(dir_path)])
305
+
306
+ graph_data_dir = "datasets/graph_data"
307
+ dataset_config = dict()
308
+
309
+ for dataset_dir in os.listdir(graph_data_dir):
310
+ if dataset_dir not in ['ecore_555', 'eamodelset', 'modelset', 'ontouml']:
311
+ continue
312
+ with open(os.path.join(graph_data_dir, dataset_dir, 'configs.json')) as f:
313
+ dataset_config[dataset_dir] = json.load(f)
314
+
315
+
316
+ for dataset_dir in os.listdir(logs_dir):
317
+ if dataset_dir not in ['ecore_555', 'eamodelset', 'modelset', 'ontouml']:
318
+ continue
319
+ for task in os.listdir(os.path.join(logs_dir, dataset_dir)):
320
+ task_dir = os.path.join(logs_dir, dataset_dir, task)
321
+ if not os.path.isdir(task_dir) or "_comp_" in task:
322
+ continue
323
+
324
+ for root, dirs, _ in os.walk(task_dir):
325
+ for dir_name in dirs:
326
+ dir_path = os.path.join(root, dir_name)
327
+ if is_tf_dir(dir_path):
328
+
329
+ config_id = dir_name.split(os.sep)[-1]
330
+
331
+ if "_" in config_id:
332
+ config_id = config_id.split("_")[0]
333
+
334
+
335
+ assert config_id in dataset_config[dataset_dir], f"Config {config_id} not found in {dataset_dir}"
336
+ config = dataset_config[dataset_dir][config_id]
337
+ config_results = get_max_scalars_with_step_epoch(dir_path)
338
+
339
+ if 'results' not in config:
340
+ config['results'] = list()
341
+
342
+ config['results'].append(config_results)
343
+ config['task'] = task
344
+
345
+
346
+ for dataset_dir in os.listdir(graph_data_dir):
347
+ if dataset_dir not in ['ecore_555', 'eamodelset', 'modelset', 'ontouml']:
348
+ continue
349
+ with open(os.path.join(graph_data_dir, dataset_dir, 'configs.json'), 'w') as f:
350
+ json.dump(dataset_config[dataset_dir], f)
351
+
352
+
353
+
354
+ def set_encoded_labels(train_ds, test_ds):
355
+ train_labels = train_ds.inputs['labels']
356
+ test_labels = test_ds.inputs['labels']
357
+ all_labels = torch.cat([train_labels, test_labels])
358
+ unique_labels = torch.unique(all_labels)
359
+ label_to_encoded = dict()
360
+ encoded_to_label = dict()
361
+ for i, label in enumerate(unique_labels):
362
+ label_to_encoded[label.item()] = i
363
+ encoded_to_label[i] = label.item()
364
+
365
+ train_ds.inputs['labels'] = torch.tensor([label_to_encoded[label.item()] for label in train_labels])
366
+ test_ds.inputs['labels'] = torch.tensor([label_to_encoded[label.item()] for label in test_labels])
367
+
368
+
369
+ def set_torch_encoding_labels(dataset: list, cls_label, exclude_labels: List[str] = None):
370
+ print(f"Setting encoding labels for {cls_label}")
371
+ labels = [getattr(data, cls_label) for data in dataset]
372
+ all_labels = torch.cat(labels)
373
+ unique_labels = [label for label in torch.unique(all_labels) if label not in exclude_labels]
374
+ label_to_encoded = dict()
375
+ encoded_to_label = dict()
376
+ for i, label in enumerate(unique_labels):
377
+ label_to_encoded[label.item()] = i
378
+ encoded_to_label[i] = label.item()
379
+
380
+ for i, data in enumerate(dataset):
381
+ setattr(
382
+ data,
383
+ cls_label,
384
+ torch.tensor([label_to_encoded.get(label.item(), -1) for label in getattr(data, cls_label)])
385
+ )
386
+
387
+ print(f"Set encoding labels for {cls_label}")
388
+
389
+
390
+ def find_nodes_within_distance(
391
+ graph: nx.DiGraph,
392
+ start_node: Any,
393
+ distance: int,
394
+ exclude_edges: Optional[List[Tuple[Any, Any]]] = None
395
+ ) -> List[Tuple[Any, int]]:
396
+ """
397
+ Find all nodes reachable from start_node within a given distance,
398
+ optionally excluding specified edges.
399
+
400
+ Parameters
401
+ ----------
402
+ graph : nx.DiGraph
403
+ Directed graph to traverse.
404
+ start_node : Any
405
+ Node from which to start the search.
406
+ distance : int
407
+ Maximum graph distance (number of edges) to traverse.
408
+ exclude_edges : Optional[List[Tuple[Any, Any]]]
409
+ List of directed edges to exclude, each as a (u, v) tuple.
410
+
411
+ Returns
412
+ -------
413
+ List[Tuple[Any, int]]
414
+ Sorted list of (node, distance) pairs.
415
+ """
416
+ # Normalize exclude_edges to a set for fast lookups
417
+ excluded: Set[Tuple[Any, Any]] = set(exclude_edges or [])
418
+
419
+ # BFS initialization
420
+ queue = deque([(start_node, 0)])
421
+ visited: Dict[Any, int] = {}
422
+
423
+ while queue:
424
+ node, dist = queue.popleft()
425
+ # Only process within the allowed distance
426
+ if dist > distance:
427
+ continue
428
+
429
+ # Record the shortest distance to this node
430
+ if node not in visited or dist < visited[node]:
431
+ visited[node] = dist
432
+
433
+ # Explore neighbors if we haven't reached max distance yet
434
+ if dist < distance:
435
+ for nbr in graph.neighbors(node):
436
+ # Skip self-loops
437
+ if nbr == node:
438
+ continue
439
+ # Skip if edge is excluded
440
+ if (node, nbr) in excluded:
441
+ continue
442
+ # Skip already-visited nodes at shorter or equal distance
443
+ if nbr in visited and visited[nbr] <= dist + 1:
444
+ continue
445
+ queue.append((nbr, dist + 1))
446
+
447
+ # Return nodes sorted by distance
448
+ return sorted(visited.items(), key=lambda x: x[1])
449
+
450
+
451
+
452
+
453
+ def get_node_neighbours(graph, start_node, distance, exclude_edges: List[str] = None):
454
+ neighbours = find_nodes_within_distance(graph, start_node, distance, exclude_edges)
455
+ max_distance = max(distance for _, distance in neighbours)
456
+ distance = min(distance, max_distance)
457
+ return [node for node, d in neighbours if d == distance]
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: glam4cm
3
- Version: 0.1.1
3
+ Version: 1.0.0
4
4
  Summary: Graph Neural Networks and Language Models Trainer (Separate or combined) for conceptual models
5
5
  Author-email: Syed Juned Ali <syed.juned.ali@tuwien.ac.at>
6
6
  License: MIT License
@@ -47,6 +47,7 @@ Requires-Dist: fasttext
47
47
  Provides-Extra: dev
48
48
  Requires-Dist: pytest; extra == "dev"
49
49
  Requires-Dist: black; extra == "dev"
50
+ Dynamic: license-file
50
51
 
51
52
  # glam4cm
52
53
 
@@ -0,0 +1,75 @@
1
+ glam4cm/__init__.py,sha256=tiiFpZvXNLMFGNr3Abo3SuW0Gfj2Wc7wBsf37zeMVbQ,180
2
+ glam4cm/run.py,sha256=vtOIbGWkUVzpZkeWzjW7N4ioCr1J_grjdNUZzQIhS0I,4259
3
+ glam4cm/run_conf_v2.py,sha256=ixs7xzoly4MGugYbs-HNY_Mizs3_Ejq8W-CXC6PTtAc,14779
4
+ glam4cm/run_configs.py,sha256=lGTrrk_3enri6geSRwMdwO7G7fIA2HNyD86Cl4BM92Y,2873
5
+ glam4cm/run_confs.py,sha256=EOI6JcJbqocpd8wkUpsvUJgPUpSrEv6C3txfprrFuW8,1327
6
+ glam4cm/settings.py,sha256=6G28EiL3S7mVdZ8ptQX5V0Oov6Ee2slbDfQZlbJEPmo,1364
7
+ glam4cm/utils.py,sha256=pciZSCsO0ae-73bLTXvIP0sfY_vOKzHZm-nus0NA7PA,15464
8
+ glam4cm/data_loading/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
+ glam4cm/data_loading/data.py,sha256=vYvALQMozAljrANdDTPutjN2C_augk8yhYVilEOv9bQ,20101
10
+ glam4cm/data_loading/encoding.py,sha256=wawEIy5e6iPPMad6t13fnE6xL7IfJE5rqEMJgGoOxRU,2798
11
+ glam4cm/data_loading/graph_dataset.py,sha256=V1Xk98LyZW-4K2ddFIWE0TozGlxJ-9YPFHMdqek1O5c,40510
12
+ glam4cm/data_loading/metadata.py,sha256=EihqDhu7pJjw8jwn7pZwTD5SVWw9Ete7XihsH8b2HIA,1793
13
+ glam4cm/data_loading/models_dataset.py,sha256=HEsMdsgp-YI15ZvNQYXYbT-G2xGmVUb-_l3IgBFeT3g,13636
14
+ glam4cm/data_loading/utils.py,sha256=GM8DRHxjeAXAZWX1ITq1QfWWVY7jwdXGhbPx8L8V_IQ,907
15
+ glam4cm/downstream_tasks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
+ glam4cm/downstream_tasks/bert_edge_classification.py,sha256=kv6eft9kY2cb0mnvZook8uyMWXEtfhJFmiWjQqQTNEU,4926
17
+ glam4cm/downstream_tasks/bert_graph_classification.py,sha256=q7Lz0eAmlVg6fNme9kNxqaWnJb_CVrwFrzTKGjfaz_A,5019
18
+ glam4cm/downstream_tasks/bert_graph_classification_comp.py,sha256=8pAM5OqHpEovh2kO6j6hGu3tScoWeUAXE9JGI_KmoW8,5956
19
+ glam4cm/downstream_tasks/bert_link_prediction.py,sha256=G5YxR41DG6VqJEM_M18u58T33VJpb-QiWdXJXF9dgpk,4554
20
+ glam4cm/downstream_tasks/bert_node_classification.py,sha256=x_MfirCakbXuhI5_KxzgOQtatL2xhb2W38FOR1G4EkQ,6214
21
+ glam4cm/downstream_tasks/cm_gpt_edge_classification.py,sha256=9VGjcFlsetndHoYrm03I1TDcw9PJin41oOBTwma6E5Y,2258
22
+ glam4cm/downstream_tasks/cm_gpt_node_classification.py,sha256=KuW92x5gVkfmYl6FnFzdO9-cKBdqm6YcHnyOf4l9oqQ,3780
23
+ glam4cm/downstream_tasks/cm_gpt_pretraining.py,sha256=qtsrvrE8t7HG9cbyiKI8bKRzzoWn-j-7Iq1UxzIf--Q,1685
24
+ glam4cm/downstream_tasks/common_args.py,sha256=3hzgzNim5cc2AdvTrcyXyQuZPYeX0h44D6y4EKa0ycY,6510
25
+ glam4cm/downstream_tasks/create_dataset.py,sha256=9ykTvvqX7f6j2zlhkU96fMrDgfLKvHQ5R9mH9pHxZ4c,1640
26
+ glam4cm/downstream_tasks/gnn_edge_classification.py,sha256=q_dwKv3KiT6NDlndNzc189hRZapH9J_46gILY6wgh58,3952
27
+ glam4cm/downstream_tasks/gnn_graph_cls.py,sha256=2hC6w2TXP_IOCNmFmljC0oq4I9ukIkn3nGMZah6XkC0,3988
28
+ glam4cm/downstream_tasks/gnn_link_prediction.py,sha256=E_MIhgJmwY0pUIhPNON25xMBQcMdMEZXJ6PNSLcrWGc,3686
29
+ glam4cm/downstream_tasks/gnn_node_classification.py,sha256=egg8Ngs9_C_p7WaTDZsMsBitrr4OWSYiSLIdc84eJuo,3658
30
+ glam4cm/downstream_tasks/tf_idf_text_classification.py,sha256=_GUYIw86YM4q417IAazMaxZDOwDI2CrZAbQp7k0MAMg,691
31
+ glam4cm/downstream_tasks/utils.py,sha256=b5L7UoGbuGu6HdpS72xp-FipXa07yjuhFdbeNszoSTA,1444
32
+ glam4cm/downstream_tasks/word2vec_text_classification.py,sha256=tQMaSo9PVJlpqEnRBG7OEikUtOHckzA8FilnGk1N0zY,3531
33
+ glam4cm/embeddings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
+ glam4cm/embeddings/bert.py,sha256=4injUWPZO6DH_OSoSblSGO9q4FyEOoKF-KMPVvbdRck,2788
35
+ glam4cm/embeddings/common.py,sha256=C-4aW1ynZUHOxvkAZFjV9klKkbbHao2hSFvNqr_lTvo,1226
36
+ glam4cm/embeddings/fasttext.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
+ glam4cm/embeddings/tfidf.py,sha256=-R10-053tm9mjgXSNgIzRGIDeL0AJKgVx7UtoHoaGgw,737
38
+ glam4cm/embeddings/w2v.py,sha256=acQX9wvtNRF8ghkniR2xikQj_KLBOYRYqQgvg3qD8l4,1384
39
+ glam4cm/encoding/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
+ glam4cm/encoding/common.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
+ glam4cm/encoding/encoders.py,sha256=wBAhlgcXpIBhdYPH_WNDe7pD3kaaODGOSMIhpUmkRiE,2743
42
+ glam4cm/graph2str/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
+ glam4cm/graph2str/common.py,sha256=vYNkLUM3rfmj0c-BsYfBQnUJGXyIC7B68HlYZrz8auY,1121
44
+ glam4cm/graph2str/constants.py,sha256=LwWXWTwlS_Q4Blbi9vHgqNh8OjWM5X_z-prEkPtnOJI,239
45
+ glam4cm/graph2str/ontouml.py,sha256=ZGDFTxSMTf2p4q0QbVXmY8jMSzZSpkvREt9VBuN--eg,5499
46
+ glam4cm/graph2str/uml.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
+ glam4cm/lang2graph/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
+ glam4cm/lang2graph/archimate.py,sha256=jRA8zXOMb3gO5WvfNvP_R8-CYiQsdo9FmDyf8fDIcn4,678
49
+ glam4cm/lang2graph/bpmn.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
+ glam4cm/lang2graph/common.py,sha256=2vE9dUmdnQ79YlFQXQV91rCWmF254yRQYnNsiyMuRTo,15232
51
+ glam4cm/lang2graph/ecore.py,sha256=Mcy3muODODCRtM5Q-8F2f4-CZcGE2a33qzlwMjWq3Ws,8071
52
+ glam4cm/lang2graph/ontouml.py,sha256=TiLHyFHj6aVsYJsItAD_n5IPWw7FM5X2ZtcZAbBq0Y4,7517
53
+ glam4cm/lang2graph/utils.py,sha256=d0b6k4MNwnA9GWewaIwr9uS7YzgRuhSAWaXu-GE-JMg,2089
54
+ glam4cm/models/cmgpt.py,sha256=2vnsYO73XZCKwHm0XTKgK8bQiVssF5tRIFr67E2NrCE,13038
55
+ glam4cm/models/gnn_layers.py,sha256=3-ZLqoWSaTabmSIOKCqhQvyrpgPuv3TsHQRrKMnQ_kY,8664
56
+ glam4cm/models/hf.py,sha256=1r0y9wYvIj0XOkNnwAD6XLgWQ90SICLyTAwAZaDDTMo,570
57
+ glam4cm/tokenization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
+ glam4cm/tokenization/special_tokens.py,sha256=63FJAKOw2nTmFu_VypFOiylZ1U2cItsdgXxpPIFrp-Q,445
59
+ glam4cm/tokenization/utils.py,sha256=NTNPlJT7wHYdn3hFIFqqcs23N8bhzEhOpugRMR1mya0,1732
60
+ glam4cm/trainers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
+ glam4cm/trainers/bert_classifier.py,sha256=4yGMX1bkYsvBaTwyP3CV7U05uIYqQdDeUa84N8_uc3I,3599
62
+ glam4cm/trainers/cm_gpt_trainer.py,sha256=6OpKyO7nTnUlTKnWR62JL-LOebdSuBpe8QwZ8SKaw80,5586
63
+ glam4cm/trainers/gnn_edge_classifier.py,sha256=s7P_8CpuqOwU9ZbeC7P7wGQ_4uoc7XubsuiiDDz-oA8,4754
64
+ glam4cm/trainers/gnn_graph_classifier.py,sha256=5Xb8GPkJSZInNMZs3tLFJyY-dcr_h3L8x89zOJnlw-c,4030
65
+ glam4cm/trainers/gnn_link_predictor.py,sha256=1HguE_JZGyxOKu3_jrkyYkDqEqxMDBvgsBtr4sJZBSU,5821
66
+ glam4cm/trainers/gnn_link_predictor_v2.py,sha256=9NZKVq66FxiMSSdfFOySRnHFYU3TqOywPZG9ViFTIYE,4930
67
+ glam4cm/trainers/gnn_node_classifier.py,sha256=I4Rrx7m8oxevtBgelXuJbWUx33TBp1k12Y1to7oq3G8,4508
68
+ glam4cm/trainers/gnn_trainer.py,sha256=Xdmk2yniIP2HYF59fjEDiy8hvJrvs1mqHM_R-cy8cZg,4259
69
+ glam4cm/trainers/metrics.py,sha256=eSQdaJB-K-C4ipNsK18Jgf-9WTQmQBlSQL4c0sk8S0M,1859
70
+ glam4cm-1.0.0.dist-info/licenses/LICENSE,sha256=NzIgfG9Z6TaC4HlY6ownebjdGY0DKUXSgF5sM7bmxZI,1071
71
+ glam4cm-1.0.0.dist-info/METADATA,sha256=pxKwXMLuouZE_0J_LEHtvsKKHJJjEE-v--q2i_06gi0,3282
72
+ glam4cm-1.0.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
73
+ glam4cm-1.0.0.dist-info/entry_points.txt,sha256=sZ-zOIJOyDP-vpTyVTTbdDyNando8uRVQmaFuAo_nuM,45
74
+ glam4cm-1.0.0.dist-info/top_level.txt,sha256=6V4mFMBo1sE2bowD9n2sxYv_ao8IsS8rR1ArAhfpQ4w,8
75
+ glam4cm-1.0.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.8.0)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,72 +0,0 @@
1
- glam4cm/__init__.py,sha256=7D0ayfMYZjOum3A9g2zP2FGabJTO4JUPQifMg9ALcWY,178
2
- glam4cm/run.py,sha256=fSd5oBpHxWLwskMfT6mohiROX9BdIGwmUT8BGxGV2fc,4188
3
- glam4cm/run_configs.py,sha256=100hGJm7tx2enEhSckNE-nxBdDtm8kZyu498WEnqhAU,10122
4
- glam4cm/settings.py,sha256=9PG4ZAqxCNg2Rt3JZ3ghl1_mzAw6vIVswC4JGY2Z2YE,1115
5
- glam4cm/utils.py,sha256=1qUTS2r0QB38y4UdcScAEMYEpyUohDqpgwoHJvCGbZY,5918
6
- glam4cm/data_loading/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
- glam4cm/data_loading/data.py,sha256=rsH5vewA47km3I_pDS-MZoChK5Y7RSD7zQgtP8QhKhY,22088
8
- glam4cm/data_loading/encoding.py,sha256=3duFeOShibiG9WL2JGLMKTkBS9nvrAQV9dhk0GWbdaE,2396
9
- glam4cm/data_loading/graph_dataset.py,sha256=dSCCG8QXexpsVfpseLGxMEbs5qcYFYfVCsjnPTsUlYA,35061
10
- glam4cm/data_loading/metadata.py,sha256=LpWp7JU7NEIUbwHJ_-OIjJN8il3MvDT66gjJN7EQJXY,1799
11
- glam4cm/data_loading/models_dataset.py,sha256=mDfE15gDcEACD-rDIMM2Eltw5-xLXD55nvQ4Gws-9pM,12477
12
- glam4cm/data_loading/utils.py,sha256=GM8DRHxjeAXAZWX1ITq1QfWWVY7jwdXGhbPx8L8V_IQ,907
13
- glam4cm/downstream_tasks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
- glam4cm/downstream_tasks/bert_edge_classification.py,sha256=xV0lgUcdyVVe82MMkESH8iYATwcvktK3uH7TNJZOY70,4280
15
- glam4cm/downstream_tasks/bert_graph_classification.py,sha256=FfWwRQAXKDPkKsMNaJUcvcpO4D4IjuXE-3byjycwLRc,4177
16
- glam4cm/downstream_tasks/bert_graph_classification_comp.py,sha256=JUyi9zjbyo6we7mFKLg1DVXKW-W95JPwaONcNOjZ-aA,4613
17
- glam4cm/downstream_tasks/bert_link_prediction.py,sha256=QogzTERQFNjhYJaB1JT2_0817fWyYJUiodvszXFOGPI,3976
18
- glam4cm/downstream_tasks/bert_node_classification.py,sha256=706fRltkgn7ucu7Xft1HSksGZY5vQuMqmXWthRLE8tc,4754
19
- glam4cm/downstream_tasks/cm_gpt_edge_classification.py,sha256=9VGjcFlsetndHoYrm03I1TDcw9PJin41oOBTwma6E5Y,2258
20
- glam4cm/downstream_tasks/cm_gpt_node_classification.py,sha256=JS0ntdro_WsIAxpL_nR71W8_IAG4enLeFH2Ak7kKQkA,2358
21
- glam4cm/downstream_tasks/cm_gpt_pretraining.py,sha256=qtsrvrE8t7HG9cbyiKI8bKRzzoWn-j-7Iq1UxzIf--Q,1685
22
- glam4cm/downstream_tasks/common_args.py,sha256=zj-rxPprn_V3R7nxqNFTw-vIiIqD5FNKixNdkhj-Y2s,5667
23
- glam4cm/downstream_tasks/create_dataset.py,sha256=9ykTvvqX7f6j2zlhkU96fMrDgfLKvHQ5R9mH9pHxZ4c,1640
24
- glam4cm/downstream_tasks/gnn_edge_classification.py,sha256=hnncLte0fGIWyyxCvWMEPKguVikqseyIGfd-4eQMYCc,3280
25
- glam4cm/downstream_tasks/gnn_graph_cls.py,sha256=Fv5tyt0sK_FaHDaB_l5D6FBXdl5v5pbL2fuHB9yX7ns,3179
26
- glam4cm/downstream_tasks/gnn_link_prediction.py,sha256=zbflVSQSck41XAbUkLRDANFvRTrbUE9E3Kl47mATTGY,3196
27
- glam4cm/downstream_tasks/gnn_node_classification.py,sha256=qsz-ed26GY5MHbscu6UVnRBX-KeQcGmU76sMUfOf2Ps,3191
28
- glam4cm/downstream_tasks/tf_idf_text_classification.py,sha256=_GUYIw86YM4q417IAazMaxZDOwDI2CrZAbQp7k0MAMg,691
29
- glam4cm/downstream_tasks/utils.py,sha256=Hk-M_REZwwc4s0S2agj81hIFXOVqwEKBVcSkUM8ZLbw,989
30
- glam4cm/downstream_tasks/word2vec_text_classification.py,sha256=tQMaSo9PVJlpqEnRBG7OEikUtOHckzA8FilnGk1N0zY,3531
31
- glam4cm/embeddings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
- glam4cm/embeddings/bert.py,sha256=hKitE9zwuUJdpC_VjyI1Ub3SWzV1TI24MQOkhaFlyAM,2789
33
- glam4cm/embeddings/common.py,sha256=7NVe8Jlyg3jaBrM3pKxHUh8IBlLaXKl0SLebsHTUMY8,1126
34
- glam4cm/embeddings/fasttext.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
- glam4cm/embeddings/tfidf.py,sha256=-R10-053tm9mjgXSNgIzRGIDeL0AJKgVx7UtoHoaGgw,737
36
- glam4cm/embeddings/w2v.py,sha256=acQX9wvtNRF8ghkniR2xikQj_KLBOYRYqQgvg3qD8l4,1384
37
- glam4cm/encoding/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
- glam4cm/encoding/common.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
- glam4cm/encoding/encoders.py,sha256=-qIMGiyljB8hukyVJf3D89gpkKkQNgHlluSeESmzzog,2735
40
- glam4cm/graph2str/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
- glam4cm/graph2str/common.py,sha256=vYNkLUM3rfmj0c-BsYfBQnUJGXyIC7B68HlYZrz8auY,1121
42
- glam4cm/graph2str/constants.py,sha256=LwWXWTwlS_Q4Blbi9vHgqNh8OjWM5X_z-prEkPtnOJI,239
43
- glam4cm/graph2str/ontouml.py,sha256=ZGDFTxSMTf2p4q0QbVXmY8jMSzZSpkvREt9VBuN--eg,5499
44
- glam4cm/graph2str/uml.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
45
- glam4cm/lang2graph/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
46
- glam4cm/lang2graph/archimate.py,sha256=mg63U9OQB8LgDobW4ChRti8ya4UzfBVUbm-d8ljBhMw,839
47
- glam4cm/lang2graph/bpmn.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
- glam4cm/lang2graph/common.py,sha256=snea2JOIt5xvy1wvn6rSCOMCefNTmjO0Ni3hf4-2d50,13148
49
- glam4cm/lang2graph/ecore.py,sha256=xzms1Bi3Wj6qsz960w_IK0X2dsNhRDBMPkDsaKEnT1M,8145
50
- glam4cm/lang2graph/ontouml.py,sha256=DAODrTZnEWTWWR_CB2j_KfRk4G0Sw6lovpAd1jInbRk,7485
51
- glam4cm/lang2graph/utils.py,sha256=d0b6k4MNwnA9GWewaIwr9uS7YzgRuhSAWaXu-GE-JMg,2089
52
- glam4cm/models/cmgpt.py,sha256=2vnsYO73XZCKwHm0XTKgK8bQiVssF5tRIFr67E2NrCE,13038
53
- glam4cm/models/gnn_layers.py,sha256=4hKiJTTartoXjS29hZEQxRWTFZ96FtDijUKT6dwe9lU,8127
54
- glam4cm/models/hf.py,sha256=BE5cnCdSnpUzq_3ww43AqkZCjG67r1ckPDPdF8yfOoQ,508
55
- glam4cm/tokenization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
- glam4cm/tokenization/special_tokens.py,sha256=tM2WJDSheURKXm7-5QDczMdHuomPEx6HLTW8BFO0EWs,107
57
- glam4cm/tokenization/utils.py,sha256=rrM2Owd2IQZAmErOHL5vTVDyVQoPZ-j8ztGt5VXK1fE,1206
58
- glam4cm/trainers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
59
- glam4cm/trainers/bert_classifier.py,sha256=4yGMX1bkYsvBaTwyP3CV7U05uIYqQdDeUa84N8_uc3I,3599
60
- glam4cm/trainers/cm_gpt_trainer.py,sha256=au3hXa9F8uEe-QBA139-Aw7IJ6GQEcjcfNcRgPF2TE8,5547
61
- glam4cm/trainers/gnn_edge_classifier.py,sha256=81SE7dzKeJG60fuOQMn7A4ydpDCVXwdEp-qgfpE40Ok,4249
62
- glam4cm/trainers/gnn_graph_classifier.py,sha256=vDfGzaklYrM-pXrj-9QrAJtuZWu3_xcKd0aQlwz7qRs,3873
63
- glam4cm/trainers/gnn_link_predictor.py,sha256=WMomOdmk7H2aBwDBugPPN5yLcjzgdlade0OKlNvYxEo,5093
64
- glam4cm/trainers/gnn_node_classifier.py,sha256=I4Rrx7m8oxevtBgelXuJbWUx33TBp1k12Y1to7oq3G8,4508
65
- glam4cm/trainers/gnn_trainer.py,sha256=r06rR1bsmuiIZhzVcuAx3X_R5u0lZKt1B3shgSdLbxA,3871
66
- glam4cm/trainers/metrics.py,sha256=LPFyRSAT50bPhQtI8yLK3VHuubxiIw6fTXkLUGTL3Ns,1823
67
- glam4cm-0.1.1.dist-info/LICENSE,sha256=NzIgfG9Z6TaC4HlY6ownebjdGY0DKUXSgF5sM7bmxZI,1071
68
- glam4cm-0.1.1.dist-info/METADATA,sha256=v9BrBomTVyTejdhYXvijkLpDjew2YgaHsTFf3tWdeZE,3260
69
- glam4cm-0.1.1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
70
- glam4cm-0.1.1.dist-info/entry_points.txt,sha256=sZ-zOIJOyDP-vpTyVTTbdDyNando8uRVQmaFuAo_nuM,45
71
- glam4cm-0.1.1.dist-info/top_level.txt,sha256=6V4mFMBo1sE2bowD9n2sxYv_ao8IsS8rR1ArAhfpQ4w,8
72
- glam4cm-0.1.1.dist-info/RECORD,,