darabos commited on
Commit
d8ff70d
·
1 Parent(s): b2122a5

More detailed ODE-GNN mock-up.

Browse files
examples/ODE-GNN.lynxkite.json CHANGED
@@ -22,67 +22,235 @@
22
  "targetHandle": "x"
23
  },
24
  {
25
- "id": "Input: sequential 1 LSTM 1",
26
- "source": "Input: sequential 1",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  "sourceHandle": "y",
28
  "target": "LSTM 1",
29
  "targetHandle": "x"
30
  },
31
  {
32
- "id": "Neural ODE 2 MSE loss 1",
33
- "source": "Neural ODE 2",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  "sourceHandle": "x",
35
  "target": "MSE loss 1",
36
  "targetHandle": "x"
37
  },
38
  {
39
- "id": "Input: tensor 1 Graph conv 1",
40
- "source": "Input: tensor 1",
 
 
 
 
 
 
 
41
  "sourceHandle": "output",
42
- "target": "Graph conv 1",
 
 
 
 
 
 
 
43
  "targetHandle": "x"
44
  },
45
  {
46
- "id": "Input: tensor 2 MSE loss 1",
47
- "source": "Input: tensor 2",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
  "sourceHandle": "output",
49
- "target": "MSE loss 1",
50
- "targetHandle": "y"
51
  },
52
  {
53
- "id": "MSE loss 1 Optimizer 1",
54
- "source": "MSE loss 1",
55
  "sourceHandle": "output",
56
- "target": "Optimizer 1",
57
- "targetHandle": "loss"
58
  },
59
  {
60
- "id": "Activation 1 output Repeat 1 input",
61
  "source": "Activation 1",
62
  "sourceHandle": "output",
63
- "target": "Repeat 1",
64
- "targetHandle": "input"
65
  },
66
  {
67
- "id": "Activation 1 output Concatenate 1 a",
68
- "source": "Activation 1",
69
  "sourceHandle": "output",
70
- "target": "Concatenate 1",
71
- "targetHandle": "a"
72
  },
73
  {
74
- "id": "LSTM 1 output Concatenate 1 b",
75
- "source": "LSTM 1",
76
  "sourceHandle": "output",
77
- "target": "Concatenate 1",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78
  "targetHandle": "b"
79
  },
80
  {
81
- "id": "Concatenate 1 output Neural ODE 2 x",
82
- "source": "Concatenate 1",
83
  "sourceHandle": "output",
84
- "target": "Neural ODE 2",
 
 
 
 
 
 
 
85
  "targetHandle": "x"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
86
  }
87
  ],
88
  "env": "PyTorch model",
@@ -140,7 +308,7 @@
140
  "type": "basic"
141
  },
142
  "params": {
143
- "type": "SAGEConv"
144
  },
145
  "status": "done",
146
  "title": "Graph conv"
@@ -149,8 +317,8 @@
149
  "height": 200.0,
150
  "id": "Graph conv 1",
151
  "position": {
152
- "x": 353.5291731060978,
153
- "y": 191.17741587219126
154
  },
155
  "type": "basic",
156
  "width": 200.0
@@ -203,7 +371,7 @@
203
  "type": "basic"
204
  },
205
  "params": {
206
- "times": "5"
207
  },
208
  "status": "done",
209
  "title": "Repeat"
@@ -212,8 +380,8 @@
212
  "height": 200.0,
213
  "id": "Repeat 1",
214
  "position": {
215
- "x": 55.8483132278086,
216
- "y": 54.525356969883305
217
  },
218
  "type": "basic",
219
  "width": 200.0
@@ -273,13 +441,13 @@
273
  },
274
  {
275
  "data": {
276
- "__execution_delay": null,
277
- "collapsed": true,
278
  "display": null,
279
  "error": null,
280
  "input_metadata": null,
281
  "meta": {
282
- "color": "orange",
283
  "doc": null,
284
  "inputs": [],
285
  "name": "Input: graph edges",
@@ -292,22 +460,32 @@
292
  }
293
  }
294
  ],
295
- "params": [],
 
 
 
 
 
 
 
 
296
  "type": "basic"
297
  },
298
- "params": {},
 
 
299
  "status": "done",
300
  "title": "Input: graph edges"
301
  },
302
  "dragHandle": ".bg-primary",
303
- "height": 200.0,
304
  "id": "Input: graph edges 1",
305
  "position": {
306
- "x": 457.3761886867096,
307
- "y": 530.2733532051268
308
  },
309
  "type": "basic",
310
- "width": 200.0
311
  },
312
  {
313
  "data": {
@@ -362,8 +540,8 @@
362
  "height": 200.0,
363
  "id": "Activation 1",
364
  "position": {
365
- "x": 354.3731834561054,
366
- "y": -73.74768512965228
367
  },
368
  "type": "basic",
369
  "width": 200.0
@@ -434,8 +612,8 @@
434
  "height": 312.0,
435
  "id": "LSTM 1",
436
  "position": {
437
- "x": 960.0,
438
- "y": 135.0
439
  },
440
  "type": "basic",
441
  "width": 204.0
@@ -448,7 +626,7 @@
448
  "error": null,
449
  "input_metadata": null,
450
  "meta": {
451
- "color": "orange",
452
  "doc": null,
453
  "inputs": [],
454
  "name": "Input: sequential",
@@ -473,20 +651,20 @@
473
  "type": "basic"
474
  },
475
  "params": {
476
- "name": "time series"
477
  },
478
  "status": "done",
479
  "title": "Input: sequential"
480
  },
481
  "dragHandle": ".bg-primary",
482
- "height": 200.0,
483
  "id": "Input: sequential 1",
484
  "position": {
485
- "x": 961.5476403063019,
486
- "y": 511.8105149872374
487
  },
488
  "type": "basic",
489
- "width": 200.0
490
  },
491
  {
492
  "data": {
@@ -535,14 +713,16 @@
535
  "height": 200.0,
536
  "id": "MSE loss 1",
537
  "position": {
538
- "x": 627.1281170292506,
539
- "y": -957.9364795915974
540
  },
541
  "type": "basic",
542
  "width": 200.0
543
  },
544
  {
545
  "data": {
 
 
546
  "display": null,
547
  "error": null,
548
  "input_metadata": null,
@@ -577,7 +757,7 @@
577
  }
578
  },
579
  {
580
- "default": 0.001,
581
  "name": "lr",
582
  "type": {
583
  "type": "<class 'float'>"
@@ -587,8 +767,8 @@
587
  "type": "basic"
588
  },
589
  "params": {
590
- "lr": 0.001,
591
- "type": 1.0
592
  },
593
  "status": "done",
594
  "title": "Optimizer"
@@ -597,8 +777,8 @@
597
  "height": 247.0,
598
  "id": "Optimizer 1",
599
  "position": {
600
- "x": 632.9026898639854,
601
- "y": -1321.9205758725257
602
  },
603
  "type": "basic",
604
  "width": 190.0
@@ -606,26 +786,18 @@
606
  {
607
  "data": {
608
  "__execution_delay": 0.0,
609
- "collapsed": null,
610
  "display": null,
611
  "error": null,
612
  "input_metadata": null,
613
  "meta": {
614
- "color": "blue",
615
  "doc": null,
616
- "inputs": [
617
- {
618
- "name": "x",
619
- "position": "bottom",
620
- "type": {
621
- "type": "tensor"
622
- }
623
- }
624
- ],
625
- "name": "Neural ODE",
626
  "outputs": [
627
  {
628
- "name": "x",
629
  "position": "top",
630
  "type": {
631
  "type": "tensor"
@@ -635,72 +807,45 @@
635
  "params": [
636
  {
637
  "default": null,
638
- "name": "relative_tolerance",
639
- "type": {
640
- "type": "None"
641
- }
642
- },
643
- {
644
- "default": null,
645
- "name": "absolute_tolerance",
646
  "type": {
647
  "type": "None"
648
  }
649
- },
650
- {
651
- "default": "dopri8",
652
- "name": "method",
653
- "type": {
654
- "enum": [
655
- "dopri8",
656
- "dopri5",
657
- "bosh3",
658
- "fehlberg2",
659
- "adaptive_heun",
660
- "euler",
661
- "midpoint",
662
- "rk4",
663
- "explicit_adams",
664
- "implicit_adams"
665
- ]
666
- }
667
  }
668
  ],
669
  "type": "basic"
670
  },
671
  "params": {
672
- "absolute_tolerance": "",
673
- "method": 1.0,
674
- "relative_tolerance": null
675
  },
676
  "status": "done",
677
- "title": "Neural ODE"
678
  },
679
  "dragHandle": ".bg-primary",
680
- "height": 309.0,
681
- "id": "Neural ODE 2",
682
  "position": {
683
- "x": 424.3358615871781,
684
- "y": -784.0744992448747
685
  },
686
  "type": "basic",
687
- "width": 308.0
688
  },
689
  {
690
  "data": {
691
  "__execution_delay": 0.0,
692
- "collapsed": false,
693
  "display": null,
694
  "error": null,
695
  "input_metadata": null,
696
  "meta": {
697
- "color": "orange",
698
  "doc": null,
699
  "inputs": [],
700
- "name": "Input: tensor",
701
  "outputs": [
702
  {
703
- "name": "output",
704
  "position": "top",
705
  "type": {
706
  "type": "tensor"
@@ -719,65 +864,1292 @@
719
  "type": "basic"
720
  },
721
  "params": {
722
- "name": "embedding"
723
  },
724
  "status": "done",
725
- "title": "Input: tensor"
726
  },
727
  "dragHandle": ".bg-primary",
728
- "height": 200.0,
729
- "id": "Input: tensor 1",
730
  "position": {
731
- "x": 231.36175845539515,
732
- "y": 526.043774935379
733
  },
734
  "type": "basic",
735
- "width": 200.0
736
  },
737
  {
738
  "data": {
739
  "__execution_delay": 0.0,
740
- "collapsed": false,
741
  "display": null,
742
  "error": null,
743
  "input_metadata": null,
744
  "meta": {
745
- "color": "orange",
746
  "doc": null,
747
- "inputs": [],
748
- "name": "Input: tensor",
749
- "outputs": [
750
  {
751
- "name": "output",
752
- "position": "top",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
753
  "type": {
754
  "type": "tensor"
755
  }
756
  }
757
  ],
758
- "params": [
 
759
  {
760
- "default": null,
761
- "name": "name",
762
  "type": {
763
- "type": "None"
764
  }
765
  }
766
  ],
767
- "type": "basic"
768
- },
769
- "params": {
770
- "name": "label"
771
- },
772
- "status": "done",
773
- "title": "Input: tensor"
774
- },
775
- "dragHandle": ".bg-primary",
776
- "height": 200.0,
777
- "id": "Input: tensor 2",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
778
  "position": {
779
- "x": 787.538183263333,
780
- "y": -801.4448540205135
781
  },
782
  "type": "basic",
783
  "width": 200.0
 
22
  "targetHandle": "x"
23
  },
24
  {
25
+ "id": "Input: tensor 1 Graph conv 1",
26
+ "source": "Input: tensor 1",
27
+ "sourceHandle": "output",
28
+ "target": "Graph conv 1",
29
+ "targetHandle": "x"
30
+ },
31
+ {
32
+ "id": "MSE loss 1 Optimizer 1",
33
+ "source": "MSE loss 1",
34
+ "sourceHandle": "output",
35
+ "target": "Optimizer 1",
36
+ "targetHandle": "loss"
37
+ },
38
+ {
39
+ "id": "Activation 1 output Repeat 1 input",
40
+ "source": "Activation 1",
41
+ "sourceHandle": "output",
42
+ "target": "Repeat 1",
43
+ "targetHandle": "input"
44
+ },
45
+ {
46
+ "id": "LSTM 1 output Concatenate 1 b",
47
+ "source": "LSTM 1",
48
+ "sourceHandle": "output",
49
+ "target": "Concatenate 1",
50
+ "targetHandle": "b"
51
+ },
52
+ {
53
+ "id": "Concatenate 1 output Neural ODE with MLP 1 x",
54
+ "source": "Concatenate 1",
55
+ "sourceHandle": "output",
56
+ "target": "Neural ODE with MLP 1",
57
+ "targetHandle": "x"
58
+ },
59
+ {
60
+ "id": "Input: sequential 3 y LSTM 1 x",
61
+ "source": "Input: sequential 3",
62
  "sourceHandle": "y",
63
  "target": "LSTM 1",
64
  "targetHandle": "x"
65
  },
66
  {
67
+ "id": "Input: sequential 1 y MSE loss 1 y",
68
+ "source": "Input: sequential 1",
69
+ "sourceHandle": "y",
70
+ "target": "MSE loss 1",
71
+ "targetHandle": "y"
72
+ },
73
+ {
74
+ "id": "Input: sequential 2 y Neural ODE with MLP 1 t",
75
+ "source": "Input: sequential 2",
76
+ "sourceHandle": "y",
77
+ "target": "Neural ODE with MLP 1",
78
+ "targetHandle": "t"
79
+ },
80
+ {
81
+ "id": "Input: tensor 2 output Neural ODE with MLP 1 y0",
82
+ "source": "Input: tensor 2",
83
+ "sourceHandle": "output",
84
+ "target": "Neural ODE with MLP 1",
85
+ "targetHandle": "y0"
86
+ },
87
+ {
88
+ "id": "Output 1 x MSE loss 1 x",
89
+ "source": "Output 1",
90
  "sourceHandle": "x",
91
  "target": "MSE loss 1",
92
  "targetHandle": "x"
93
  },
94
  {
95
+ "id": "Neural ODE with MLP 1 y Output 1 x",
96
+ "source": "Neural ODE with MLP 1",
97
+ "sourceHandle": "y",
98
+ "target": "Output 1",
99
+ "targetHandle": "x"
100
+ },
101
+ {
102
+ "id": "Linear 1 output Concatenate 1 a",
103
+ "source": "Linear 1",
104
  "sourceHandle": "output",
105
+ "target": "Concatenate 1",
106
+ "targetHandle": "a"
107
+ },
108
+ {
109
+ "id": "Concatenate 2 output Linear 1 x",
110
+ "source": "Concatenate 2",
111
+ "sourceHandle": "output",
112
+ "target": "Linear 1",
113
  "targetHandle": "x"
114
  },
115
  {
116
+ "id": "Input: graph edges 2 edges Graph conv 2 edges",
117
+ "source": "Input: graph edges 2",
118
+ "sourceHandle": "edges",
119
+ "target": "Graph conv 2",
120
+ "targetHandle": "edges"
121
+ },
122
+ {
123
+ "id": "Graph conv 2 x Heterogeneous graph conv 1 cases",
124
+ "source": "Graph conv 2",
125
+ "sourceHandle": "x",
126
+ "target": "Heterogeneous graph conv 1",
127
+ "targetHandle": "cases"
128
+ },
129
+ {
130
+ "id": "Input: tensor 3 output Embedding 1 x",
131
+ "source": "Input: tensor 3",
132
  "sourceHandle": "output",
133
+ "target": "Embedding 1",
134
+ "targetHandle": "x"
135
  },
136
  {
137
+ "id": "Input: tensor 4 output Embedding 2 x",
138
+ "source": "Input: tensor 4",
139
  "sourceHandle": "output",
140
+ "target": "Embedding 2",
141
+ "targetHandle": "x"
142
  },
143
  {
144
+ "id": "Activation 1 output Heterogeneous graph conv 1 node_embeddings",
145
  "source": "Activation 1",
146
  "sourceHandle": "output",
147
+ "target": "Heterogeneous graph conv 1",
148
+ "targetHandle": "node_embeddings"
149
  },
150
  {
151
+ "id": "Embedding 2 output Heterogeneous graph conv 1 node_embeddings",
152
+ "source": "Embedding 2",
153
  "sourceHandle": "output",
154
+ "target": "Heterogeneous graph conv 1",
155
+ "targetHandle": "node_embeddings"
156
  },
157
  {
158
+ "id": "Embedding 1 output Heterogeneous graph conv 1 node_embeddings",
159
+ "source": "Embedding 1",
160
  "sourceHandle": "output",
161
+ "target": "Heterogeneous graph conv 1",
162
+ "targetHandle": "node_embeddings"
163
+ },
164
+ {
165
+ "id": "Input: graph edges 3 edges Graph conv 3 edges",
166
+ "source": "Input: graph edges 3",
167
+ "sourceHandle": "edges",
168
+ "target": "Graph conv 3",
169
+ "targetHandle": "edges"
170
+ },
171
+ {
172
+ "id": "Graph conv 3 x Heterogeneous graph conv 1 edge_modules",
173
+ "source": "Graph conv 3",
174
+ "sourceHandle": "x",
175
+ "target": "Heterogeneous graph conv 1",
176
+ "targetHandle": "edge_modules"
177
+ },
178
+ {
179
+ "id": "Graph conv 2 x Heterogeneous graph conv 1 edge_modules",
180
+ "source": "Graph conv 2",
181
+ "sourceHandle": "x",
182
+ "target": "Heterogeneous graph conv 1",
183
+ "targetHandle": "edge_modules"
184
+ },
185
+ {
186
+ "id": "Heterogeneous graph conv 1 x Pick element by constant 1 x",
187
+ "source": "Heterogeneous graph conv 1",
188
+ "sourceHandle": "x",
189
+ "target": "Pick element by constant 1",
190
+ "targetHandle": "x"
191
+ },
192
+ {
193
+ "id": "Heterogeneous graph conv 1 x Pick element by constant 2 x",
194
+ "source": "Heterogeneous graph conv 1",
195
+ "sourceHandle": "x",
196
+ "target": "Pick element by constant 2",
197
+ "targetHandle": "x"
198
+ },
199
+ {
200
+ "id": "Heterogeneous graph conv 1 x Pick element by constant 3 x",
201
+ "source": "Heterogeneous graph conv 1",
202
+ "sourceHandle": "x",
203
+ "target": "Pick element by constant 3",
204
+ "targetHandle": "x"
205
+ },
206
+ {
207
+ "id": "Pick element by constant 2 x_i Mean pool 3 x",
208
+ "source": "Pick element by constant 2",
209
+ "sourceHandle": "x_i",
210
+ "target": "Mean pool 3",
211
+ "targetHandle": "x"
212
+ },
213
+ {
214
+ "id": "Mean pool 3 output Concatenate 2 b",
215
+ "source": "Mean pool 3",
216
+ "sourceHandle": "output",
217
+ "target": "Concatenate 2",
218
  "targetHandle": "b"
219
  },
220
  {
221
+ "id": "Concatenate 3 output Concatenate 2 a",
222
+ "source": "Concatenate 3",
223
  "sourceHandle": "output",
224
+ "target": "Concatenate 2",
225
+ "targetHandle": "a"
226
+ },
227
+ {
228
+ "id": "Pick element by constant 3 x_i Mean pool 1 x",
229
+ "source": "Pick element by constant 3",
230
+ "sourceHandle": "x_i",
231
+ "target": "Mean pool 1",
232
  "targetHandle": "x"
233
+ },
234
+ {
235
+ "id": "Pick element by constant 1 x_i Mean pool 2 x",
236
+ "source": "Pick element by constant 1",
237
+ "sourceHandle": "x_i",
238
+ "target": "Mean pool 2",
239
+ "targetHandle": "x"
240
+ },
241
+ {
242
+ "id": "Mean pool 2 output Concatenate 3 b",
243
+ "source": "Mean pool 2",
244
+ "sourceHandle": "output",
245
+ "target": "Concatenate 3",
246
+ "targetHandle": "b"
247
+ },
248
+ {
249
+ "id": "Mean pool 1 output Concatenate 3 a",
250
+ "source": "Mean pool 1",
251
+ "sourceHandle": "output",
252
+ "target": "Concatenate 3",
253
+ "targetHandle": "a"
254
  }
255
  ],
256
  "env": "PyTorch model",
 
308
  "type": "basic"
309
  },
310
  "params": {
311
+ "type": "GCNConv"
312
  },
313
  "status": "done",
314
  "title": "Graph conv"
 
317
  "height": 200.0,
318
  "id": "Graph conv 1",
319
  "position": {
320
+ "x": -958.3664302023487,
321
+ "y": 1599.1160982851618
322
  },
323
  "type": "basic",
324
  "width": 200.0
 
371
  "type": "basic"
372
  },
373
  "params": {
374
+ "times": "2"
375
  },
376
  "status": "done",
377
  "title": "Repeat"
 
380
  "height": 200.0,
381
  "id": "Repeat 1",
382
  "position": {
383
+ "x": -1256.0472900806378,
384
+ "y": 1462.4640393828538
385
  },
386
  "type": "basic",
387
  "width": 200.0
 
441
  },
442
  {
443
  "data": {
444
+ "__execution_delay": 0.0,
445
+ "collapsed": false,
446
  "display": null,
447
  "error": null,
448
  "input_metadata": null,
449
  "meta": {
450
+ "color": "gray",
451
  "doc": null,
452
  "inputs": [],
453
  "name": "Input: graph edges",
 
460
  }
461
  }
462
  ],
463
+ "params": [
464
+ {
465
+ "default": null,
466
+ "name": "name",
467
+ "type": {
468
+ "type": "None"
469
+ }
470
+ }
471
+ ],
472
  "type": "basic"
473
  },
474
+ "params": {
475
+ "name": "gene-interacts-gene"
476
+ },
477
  "status": "done",
478
  "title": "Input: graph edges"
479
  },
480
  "dragHandle": ".bg-primary",
481
+ "height": 179.0,
482
  "id": "Input: graph edges 1",
483
  "position": {
484
+ "x": -854.519414621737,
485
+ "y": 1938.2120356180976
486
  },
487
  "type": "basic",
488
+ "width": 255.0
489
  },
490
  {
491
  "data": {
 
540
  "height": 200.0,
541
  "id": "Activation 1",
542
  "position": {
543
+ "x": -957.5224198523413,
544
+ "y": 1334.1909972833182
545
  },
546
  "type": "basic",
547
  "width": 200.0
 
612
  "height": 312.0,
613
  "id": "LSTM 1",
614
  "position": {
615
+ "x": 662.5652799873882,
616
+ "y": -47.63729698454539
617
  },
618
  "type": "basic",
619
  "width": 204.0
 
626
  "error": null,
627
  "input_metadata": null,
628
  "meta": {
629
+ "color": "gray",
630
  "doc": null,
631
  "inputs": [],
632
  "name": "Input: sequential",
 
651
  "type": "basic"
652
  },
653
  "params": {
654
+ "name": "future volumes"
655
  },
656
  "status": "done",
657
  "title": "Input: sequential"
658
  },
659
  "dragHandle": ".bg-primary",
660
+ "height": 176.0,
661
  "id": "Input: sequential 1",
662
  "position": {
663
+ "x": 1724.6836018444237,
664
+ "y": 397.2031221699466
665
  },
666
  "type": "basic",
667
+ "width": 230.0
668
  },
669
  {
670
  "data": {
 
713
  "height": 200.0,
714
  "id": "MSE loss 1",
715
  "position": {
716
+ "x": 784.6649975930936,
717
+ "y": -1425.9136836194843
718
  },
719
  "type": "basic",
720
  "width": 200.0
721
  },
722
  {
723
  "data": {
724
+ "__execution_delay": 0.0,
725
+ "collapsed": null,
726
  "display": null,
727
  "error": null,
728
  "input_metadata": null,
 
757
  }
758
  },
759
  {
760
+ "default": 0.0001,
761
  "name": "lr",
762
  "type": {
763
  "type": "<class 'float'>"
 
767
  "type": "basic"
768
  },
769
  "params": {
770
+ "lr": "0.0001",
771
+ "type": "AdamW"
772
  },
773
  "status": "done",
774
  "title": "Optimizer"
 
777
  "height": 247.0,
778
  "id": "Optimizer 1",
779
  "position": {
780
+ "x": 792.7562892596496,
781
+ "y": -1782.9476234049491
782
  },
783
  "type": "basic",
784
  "width": 190.0
 
786
  {
787
  "data": {
788
  "__execution_delay": 0.0,
789
+ "collapsed": false,
790
  "display": null,
791
  "error": null,
792
  "input_metadata": null,
793
  "meta": {
794
+ "color": "gray",
795
  "doc": null,
796
+ "inputs": [],
797
+ "name": "Input: tensor",
 
 
 
 
 
 
 
 
798
  "outputs": [
799
  {
800
+ "name": "output",
801
  "position": "top",
802
  "type": {
803
  "type": "tensor"
 
807
  "params": [
808
  {
809
  "default": null,
810
+ "name": "name",
 
 
 
 
 
 
 
811
  "type": {
812
  "type": "None"
813
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
814
  }
815
  ],
816
  "type": "basic"
817
  },
818
  "params": {
819
+ "name": "gene embedding"
 
 
820
  },
821
  "status": "done",
822
+ "title": "Input: tensor"
823
  },
824
  "dragHandle": ".bg-primary",
825
+ "height": 200.0,
826
+ "id": "Input: tensor 1",
827
  "position": {
828
+ "x": -1080.5338448530515,
829
+ "y": 1933.9824573483497
830
  },
831
  "type": "basic",
832
+ "width": 200.0
833
  },
834
  {
835
  "data": {
836
  "__execution_delay": 0.0,
837
+ "collapsed": null,
838
  "display": null,
839
  "error": null,
840
  "input_metadata": null,
841
  "meta": {
842
+ "color": "gray",
843
  "doc": null,
844
  "inputs": [],
845
+ "name": "Input: sequential",
846
  "outputs": [
847
  {
848
+ "name": "y",
849
  "position": "top",
850
  "type": {
851
  "type": "tensor"
 
864
  "type": "basic"
865
  },
866
  "params": {
867
+ "name": "future timestamps"
868
  },
869
  "status": "done",
870
+ "title": "Input: sequential"
871
  },
872
  "dragHandle": ".bg-primary",
873
+ "height": 206.0,
874
+ "id": "Input: sequential 2",
875
  "position": {
876
+ "x": 1404.6077870047632,
877
+ "y": 393.03737591778565
878
  },
879
  "type": "basic",
880
+ "width": 237.0
881
  },
882
  {
883
  "data": {
884
  "__execution_delay": 0.0,
885
+ "collapsed": null,
886
  "display": null,
887
  "error": null,
888
  "input_metadata": null,
889
  "meta": {
890
+ "color": "blue",
891
  "doc": null,
892
+ "inputs": [
 
 
893
  {
894
+ "name": "x",
895
+ "position": "bottom",
896
+ "type": {
897
+ "type": "tensor"
898
+ }
899
+ },
900
+ {
901
+ "name": "y0",
902
+ "position": "bottom",
903
+ "type": {
904
+ "type": "tensor"
905
+ }
906
+ },
907
+ {
908
+ "name": "t",
909
+ "position": "bottom",
910
  "type": {
911
  "type": "tensor"
912
  }
913
  }
914
  ],
915
+ "name": "Neural ODE with MLP",
916
+ "outputs": [
917
  {
918
+ "name": "y",
919
+ "position": "top",
920
  "type": {
921
+ "type": "tensor"
922
  }
923
  }
924
  ],
925
+ "params": [
926
+ {
927
+ "default": "dopri8",
928
+ "name": "method",
929
+ "type": {
930
+ "enum": [
931
+ "dopri8",
932
+ "dopri5",
933
+ "bosh3",
934
+ "fehlberg2",
935
+ "adaptive_heun",
936
+ "euler",
937
+ "midpoint",
938
+ "rk4",
939
+ "explicit_adams",
940
+ "implicit_adams"
941
+ ]
942
+ }
943
+ },
944
+ {
945
+ "default": null,
946
+ "name": "relative_tolerance",
947
+ "type": {
948
+ "type": "None"
949
+ }
950
+ },
951
+ {
952
+ "default": null,
953
+ "name": "absolute_tolerance",
954
+ "type": {
955
+ "type": "None"
956
+ }
957
+ },
958
+ {
959
+ "default": null,
960
+ "name": "mlp_layers",
961
+ "type": {
962
+ "type": "None"
963
+ }
964
+ },
965
+ {
966
+ "default": null,
967
+ "name": "mlp_hidden_size",
968
+ "type": {
969
+ "type": "None"
970
+ }
971
+ },
972
+ {
973
+ "default": "ReLU",
974
+ "name": "mlp_activation",
975
+ "type": {
976
+ "enum": [
977
+ "ReLU",
978
+ "Tanh",
979
+ "Sigmoid"
980
+ ]
981
+ }
982
+ }
983
+ ],
984
+ "type": "basic"
985
+ },
986
+ "params": {
987
+ "absolute_tolerance": "0.001",
988
+ "method": "dopri8",
989
+ "mlp_activation": "ReLU",
990
+ "mlp_hidden_size": "64",
991
+ "mlp_layers": "3",
992
+ "relative_tolerance": "0.001"
993
+ },
994
+ "status": "done",
995
+ "title": "Neural ODE with MLP"
996
+ },
997
+ "dragHandle": ".bg-primary",
998
+ "height": 531.0,
999
+ "id": "Neural ODE with MLP 1",
1000
+ "position": {
1001
+ "x": 592.4620140488937,
1002
+ "y": -991.7169229426221
1003
+ },
1004
+ "type": "basic",
1005
+ "width": 277.0
1006
+ },
1007
+ {
1008
+ "data": {
1009
+ "__execution_delay": 0.0,
1010
+ "collapsed": null,
1011
+ "display": null,
1012
+ "error": null,
1013
+ "input_metadata": null,
1014
+ "meta": {
1015
+ "color": "gray",
1016
+ "doc": null,
1017
+ "inputs": [],
1018
+ "name": "Input: sequential",
1019
+ "outputs": [
1020
+ {
1021
+ "name": "y",
1022
+ "position": "top",
1023
+ "type": {
1024
+ "type": "tensor"
1025
+ }
1026
+ }
1027
+ ],
1028
+ "params": [
1029
+ {
1030
+ "default": null,
1031
+ "name": "name",
1032
+ "type": {
1033
+ "type": "None"
1034
+ }
1035
+ }
1036
+ ],
1037
+ "type": "basic"
1038
+ },
1039
+ "params": {
1040
+ "name": "past volumes"
1041
+ },
1042
+ "status": "done",
1043
+ "title": "Input: sequential"
1044
+ },
1045
+ "dragHandle": ".bg-primary",
1046
+ "height": 200.0,
1047
+ "id": "Input: sequential 3",
1048
+ "position": {
1049
+ "x": 848.5881581854119,
1050
+ "y": 393.6406513741127
1051
+ },
1052
+ "type": "basic",
1053
+ "width": 200.0
1054
+ },
1055
+ {
1056
+ "data": {
1057
+ "__execution_delay": 0.0,
1058
+ "collapsed": null,
1059
+ "display": null,
1060
+ "error": null,
1061
+ "input_metadata": null,
1062
+ "meta": {
1063
+ "color": "gray",
1064
+ "doc": null,
1065
+ "inputs": [],
1066
+ "name": "Input: tensor",
1067
+ "outputs": [
1068
+ {
1069
+ "name": "output",
1070
+ "position": "top",
1071
+ "type": {
1072
+ "type": "tensor"
1073
+ }
1074
+ }
1075
+ ],
1076
+ "params": [
1077
+ {
1078
+ "default": null,
1079
+ "name": "name",
1080
+ "type": {
1081
+ "type": "None"
1082
+ }
1083
+ }
1084
+ ],
1085
+ "type": "basic"
1086
+ },
1087
+ "params": {
1088
+ "name": "current volume"
1089
+ },
1090
+ "status": "done",
1091
+ "title": "Input: tensor"
1092
+ },
1093
+ "dragHandle": ".bg-primary",
1094
+ "height": 200.0,
1095
+ "id": "Input: tensor 2",
1096
+ "position": {
1097
+ "x": 1103.4272296857464,
1098
+ "y": 383.50500648489503
1099
+ },
1100
+ "type": "basic",
1101
+ "width": 200.0
1102
+ },
1103
+ {
1104
+ "data": {
1105
+ "__execution_delay": 0.0,
1106
+ "collapsed": null,
1107
+ "display": null,
1108
+ "error": null,
1109
+ "input_metadata": null,
1110
+ "meta": {
1111
+ "color": "gray",
1112
+ "doc": null,
1113
+ "inputs": [
1114
+ {
1115
+ "name": "x",
1116
+ "position": "bottom",
1117
+ "type": {
1118
+ "type": "tensor"
1119
+ }
1120
+ }
1121
+ ],
1122
+ "name": "Output",
1123
+ "outputs": [
1124
+ {
1125
+ "name": "x",
1126
+ "position": "top",
1127
+ "type": {
1128
+ "type": "tensor"
1129
+ }
1130
+ }
1131
+ ],
1132
+ "params": [
1133
+ {
1134
+ "default": null,
1135
+ "name": "name",
1136
+ "type": {
1137
+ "type": "None"
1138
+ }
1139
+ }
1140
+ ],
1141
+ "type": "basic"
1142
+ },
1143
+ "params": {
1144
+ "name": "future volume predictions"
1145
+ },
1146
+ "status": "done",
1147
+ "title": "Output"
1148
+ },
1149
+ "dragHandle": ".bg-primary",
1150
+ "height": 155.0,
1151
+ "id": "Output 1",
1152
+ "position": {
1153
+ "x": 575.2153360305078,
1154
+ "y": -1217.3477063035696
1155
+ },
1156
+ "type": "basic",
1157
+ "width": 304.0
1158
+ },
1159
+ {
1160
+ "data": {
1161
+ "__execution_delay": 0.0,
1162
+ "collapsed": null,
1163
+ "display": null,
1164
+ "error": null,
1165
+ "input_metadata": null,
1166
+ "meta": {
1167
+ "color": "blue",
1168
+ "doc": null,
1169
+ "inputs": [
1170
+ {
1171
+ "name": "x",
1172
+ "position": "bottom",
1173
+ "type": {
1174
+ "type": "<class 'inspect._empty'>"
1175
+ }
1176
+ }
1177
+ ],
1178
+ "name": "Linear",
1179
+ "outputs": [
1180
+ {
1181
+ "name": "output",
1182
+ "position": "top",
1183
+ "type": {
1184
+ "type": "None"
1185
+ }
1186
+ }
1187
+ ],
1188
+ "params": [
1189
+ {
1190
+ "default": 1024.0,
1191
+ "name": "output_dim",
1192
+ "type": {
1193
+ "type": "<class 'int'>"
1194
+ }
1195
+ }
1196
+ ],
1197
+ "type": "basic"
1198
+ },
1199
+ "params": {
1200
+ "output_dim": "256"
1201
+ },
1202
+ "status": "done",
1203
+ "title": "Linear"
1204
+ },
1205
+ "dragHandle": ".bg-primary",
1206
+ "height": 200.0,
1207
+ "id": "Linear 1",
1208
+ "position": {
1209
+ "x": 260.1415749028216,
1210
+ "y": -225.79204628408624
1211
+ },
1212
+ "type": "basic",
1213
+ "width": 200.0
1214
+ },
1215
+ {
1216
+ "data": {
1217
+ "__execution_delay": null,
1218
+ "collapsed": true,
1219
+ "display": null,
1220
+ "error": null,
1221
+ "input_metadata": null,
1222
+ "meta": {
1223
+ "color": "orange",
1224
+ "doc": null,
1225
+ "inputs": [
1226
+ {
1227
+ "name": "a",
1228
+ "position": "bottom",
1229
+ "type": {
1230
+ "type": "<class 'inspect._empty'>"
1231
+ }
1232
+ },
1233
+ {
1234
+ "name": "b",
1235
+ "position": "bottom",
1236
+ "type": {
1237
+ "type": "<class 'inspect._empty'>"
1238
+ }
1239
+ }
1240
+ ],
1241
+ "name": "Concatenate",
1242
+ "outputs": [
1243
+ {
1244
+ "name": "output",
1245
+ "position": "top",
1246
+ "type": {
1247
+ "type": "None"
1248
+ }
1249
+ }
1250
+ ],
1251
+ "params": [],
1252
+ "type": "basic"
1253
+ },
1254
+ "params": {},
1255
+ "status": "done",
1256
+ "title": "Concatenate"
1257
+ },
1258
+ "dragHandle": ".bg-primary",
1259
+ "height": 200.0,
1260
+ "id": "Concatenate 2",
1261
+ "position": {
1262
+ "x": 199.77501256646406,
1263
+ "y": 50.6892917821922
1264
+ },
1265
+ "type": "basic",
1266
+ "width": 200.0
1267
+ },
1268
+ {
1269
+ "data": {
1270
+ "__execution_delay": null,
1271
+ "collapsed": true,
1272
+ "display": null,
1273
+ "error": null,
1274
+ "input_metadata": null,
1275
+ "meta": {
1276
+ "color": "orange",
1277
+ "doc": null,
1278
+ "inputs": [
1279
+ {
1280
+ "name": "a",
1281
+ "position": "bottom",
1282
+ "type": {
1283
+ "type": "<class 'inspect._empty'>"
1284
+ }
1285
+ },
1286
+ {
1287
+ "name": "b",
1288
+ "position": "bottom",
1289
+ "type": {
1290
+ "type": "<class 'inspect._empty'>"
1291
+ }
1292
+ }
1293
+ ],
1294
+ "name": "Concatenate",
1295
+ "outputs": [
1296
+ {
1297
+ "name": "output",
1298
+ "position": "top",
1299
+ "type": {
1300
+ "type": "None"
1301
+ }
1302
+ }
1303
+ ],
1304
+ "params": [],
1305
+ "type": "basic"
1306
+ },
1307
+ "params": {},
1308
+ "status": "done",
1309
+ "title": "Concatenate"
1310
+ },
1311
+ "dragHandle": ".bg-primary",
1312
+ "height": 200.0,
1313
+ "id": "Concatenate 3",
1314
+ "position": {
1315
+ "x": -207.83562912506517,
1316
+ "y": 177.1410132322926
1317
+ },
1318
+ "type": "basic",
1319
+ "width": 200.0
1320
+ },
1321
+ {
1322
+ "data": {
1323
+ "__execution_delay": 0.0,
1324
+ "collapsed": null,
1325
+ "display": null,
1326
+ "error": null,
1327
+ "input_metadata": null,
1328
+ "meta": {
1329
+ "color": "blue",
1330
+ "doc": null,
1331
+ "inputs": [
1332
+ {
1333
+ "name": "x",
1334
+ "position": "bottom",
1335
+ "type": {
1336
+ "type": "tensor"
1337
+ }
1338
+ },
1339
+ {
1340
+ "name": "edges",
1341
+ "position": "bottom",
1342
+ "type": {
1343
+ "type": "tensor"
1344
+ }
1345
+ }
1346
+ ],
1347
+ "name": "Graph conv",
1348
+ "outputs": [
1349
+ {
1350
+ "name": "x",
1351
+ "position": "top",
1352
+ "type": {
1353
+ "type": "tensor"
1354
+ }
1355
+ }
1356
+ ],
1357
+ "params": [
1358
+ {
1359
+ "default": "GCNConv",
1360
+ "name": "type",
1361
+ "type": {
1362
+ "enum": [
1363
+ "GCNConv",
1364
+ "GATConv",
1365
+ "GATv2Conv",
1366
+ "SAGEConv"
1367
+ ]
1368
+ }
1369
+ }
1370
+ ],
1371
+ "type": "basic"
1372
+ },
1373
+ "params": {
1374
+ "type": "GATConv"
1375
+ },
1376
+ "status": "done",
1377
+ "title": "Graph conv"
1378
+ },
1379
+ "dragHandle": ".bg-primary",
1380
+ "height": 200.0,
1381
+ "id": "Graph conv 2",
1382
+ "position": {
1383
+ "x": 568.0618872822669,
1384
+ "y": 1248.5801580938696
1385
+ },
1386
+ "type": "basic",
1387
+ "width": 200.0
1388
+ },
1389
+ {
1390
+ "data": {
1391
+ "__execution_delay": 0.0,
1392
+ "collapsed": null,
1393
+ "display": null,
1394
+ "error": null,
1395
+ "input_metadata": null,
1396
+ "meta": {
1397
+ "color": "gray",
1398
+ "doc": null,
1399
+ "inputs": [],
1400
+ "name": "Input: tensor",
1401
+ "outputs": [
1402
+ {
1403
+ "name": "output",
1404
+ "position": "top",
1405
+ "type": {
1406
+ "type": "tensor"
1407
+ }
1408
+ }
1409
+ ],
1410
+ "params": [
1411
+ {
1412
+ "default": null,
1413
+ "name": "name",
1414
+ "type": {
1415
+ "type": "None"
1416
+ }
1417
+ }
1418
+ ],
1419
+ "type": "basic"
1420
+ },
1421
+ "params": {
1422
+ "name": "drug index"
1423
+ },
1424
+ "status": "done",
1425
+ "title": "Input: tensor"
1426
+ },
1427
+ "dragHandle": ".bg-primary",
1428
+ "height": 200.0,
1429
+ "id": "Input: tensor 3",
1430
+ "position": {
1431
+ "x": -237.06197713140955,
1432
+ "y": 1913.2497721334535
1433
+ },
1434
+ "type": "basic",
1435
+ "width": 200.0
1436
+ },
1437
+ {
1438
+ "data": {
1439
+ "__execution_delay": 0.0,
1440
+ "collapsed": null,
1441
+ "display": null,
1442
+ "error": null,
1443
+ "input_metadata": null,
1444
+ "meta": {
1445
+ "color": "gray",
1446
+ "doc": null,
1447
+ "inputs": [],
1448
+ "name": "Input: graph edges",
1449
+ "outputs": [
1450
+ {
1451
+ "name": "edges",
1452
+ "position": "top",
1453
+ "type": {
1454
+ "type": "tensor"
1455
+ }
1456
+ }
1457
+ ],
1458
+ "params": [
1459
+ {
1460
+ "default": null,
1461
+ "name": "name",
1462
+ "type": {
1463
+ "type": "None"
1464
+ }
1465
+ }
1466
+ ],
1467
+ "type": "basic"
1468
+ },
1469
+ "params": {
1470
+ "name": "drug-targets-gene"
1471
+ },
1472
+ "status": "done",
1473
+ "title": "Input: graph edges"
1474
+ },
1475
+ "dragHandle": ".bg-primary",
1476
+ "height": 200.0,
1477
+ "id": "Input: graph edges 2",
1478
+ "position": {
1479
+ "x": 598.9033780663102,
1480
+ "y": 1889.9532191207059
1481
+ },
1482
+ "type": "basic",
1483
+ "width": 200.0
1484
+ },
1485
+ {
1486
+ "data": {
1487
+ "__execution_delay": 0.0,
1488
+ "collapsed": null,
1489
+ "display": null,
1490
+ "error": null,
1491
+ "input_metadata": null,
1492
+ "meta": {
1493
+ "color": "orange",
1494
+ "doc": null,
1495
+ "inputs": [
1496
+ {
1497
+ "name": "node_embeddings",
1498
+ "position": "bottom",
1499
+ "type": {
1500
+ "type": "tensor"
1501
+ }
1502
+ },
1503
+ {
1504
+ "name": "edge_modules",
1505
+ "position": "bottom",
1506
+ "type": {
1507
+ "type": "tensor"
1508
+ }
1509
+ }
1510
+ ],
1511
+ "name": "Heterogeneous graph conv",
1512
+ "outputs": [
1513
+ {
1514
+ "name": "x",
1515
+ "position": "top",
1516
+ "type": {
1517
+ "type": "tensor"
1518
+ }
1519
+ }
1520
+ ],
1521
+ "params": [
1522
+ {
1523
+ "default": null,
1524
+ "name": "node_embeddings_order",
1525
+ "type": {
1526
+ "type": "None"
1527
+ }
1528
+ },
1529
+ {
1530
+ "default": null,
1531
+ "name": "edge_modules_order",
1532
+ "type": {
1533
+ "type": "None"
1534
+ }
1535
+ }
1536
+ ],
1537
+ "type": "basic"
1538
+ },
1539
+ "params": {
1540
+ "edge_modules": "",
1541
+ "edge_modules_order": "disease-assoc-gene, drug-targets-gene",
1542
+ "node_embedding_order": "gene, disease, drug",
1543
+ "node_embeddings": "gene, disease, drug",
1544
+ "node_embeddings_order": "gene, disease, drug"
1545
+ },
1546
+ "status": "done",
1547
+ "title": "Heterogeneous graph conv"
1548
+ },
1549
+ "dragHandle": ".bg-primary",
1550
+ "height": 226.0,
1551
+ "id": "Heterogeneous graph conv 1",
1552
+ "position": {
1553
+ "x": -193.62478357663917,
1554
+ "y": 857.1221768252228
1555
+ },
1556
+ "type": "basic",
1557
+ "width": 719.0
1558
+ },
1559
+ {
1560
+ "data": {
1561
+ "__execution_delay": 0.0,
1562
+ "collapsed": null,
1563
+ "display": null,
1564
+ "error": null,
1565
+ "input_metadata": null,
1566
+ "meta": {
1567
+ "color": "blue",
1568
+ "doc": null,
1569
+ "inputs": [
1570
+ {
1571
+ "name": "x",
1572
+ "position": "bottom",
1573
+ "type": {
1574
+ "type": "tensor"
1575
+ }
1576
+ },
1577
+ {
1578
+ "name": "edges",
1579
+ "position": "bottom",
1580
+ "type": {
1581
+ "type": "tensor"
1582
+ }
1583
+ }
1584
+ ],
1585
+ "name": "Graph conv",
1586
+ "outputs": [
1587
+ {
1588
+ "name": "x",
1589
+ "position": "top",
1590
+ "type": {
1591
+ "type": "tensor"
1592
+ }
1593
+ }
1594
+ ],
1595
+ "params": [
1596
+ {
1597
+ "default": "GCNConv",
1598
+ "name": "type",
1599
+ "type": {
1600
+ "enum": [
1601
+ "GCNConv",
1602
+ "GATConv",
1603
+ "GATv2Conv",
1604
+ "SAGEConv"
1605
+ ]
1606
+ }
1607
+ }
1608
+ ],
1609
+ "type": "basic"
1610
+ },
1611
+ "params": {
1612
+ "type": "GATConv"
1613
+ },
1614
+ "status": "done",
1615
+ "title": "Graph conv"
1616
+ },
1617
+ "dragHandle": ".bg-primary",
1618
+ "height": 200.0,
1619
+ "id": "Graph conv 3",
1620
+ "position": {
1621
+ "x": 196.18050700893468,
1622
+ "y": 1250.8968769256908
1623
+ },
1624
+ "type": "basic",
1625
+ "width": 200.0
1626
+ },
1627
+ {
1628
+ "data": {
1629
+ "__execution_delay": 0.0,
1630
+ "collapsed": null,
1631
+ "display": null,
1632
+ "error": null,
1633
+ "input_metadata": null,
1634
+ "meta": {
1635
+ "color": "blue",
1636
+ "doc": null,
1637
+ "inputs": [
1638
+ {
1639
+ "name": "x",
1640
+ "position": "bottom",
1641
+ "type": {
1642
+ "type": "<class 'inspect._empty'>"
1643
+ }
1644
+ }
1645
+ ],
1646
+ "name": "Embedding",
1647
+ "outputs": [
1648
+ {
1649
+ "name": "output",
1650
+ "position": "top",
1651
+ "type": {
1652
+ "type": "None"
1653
+ }
1654
+ }
1655
+ ],
1656
+ "params": [
1657
+ {
1658
+ "default": null,
1659
+ "name": "num_embeddings",
1660
+ "type": {
1661
+ "type": "<class 'int'>"
1662
+ }
1663
+ },
1664
+ {
1665
+ "default": null,
1666
+ "name": "embedding_dim",
1667
+ "type": {
1668
+ "type": "<class 'int'>"
1669
+ }
1670
+ }
1671
+ ],
1672
+ "type": "basic"
1673
+ },
1674
+ "params": {
1675
+ "embedding_dim": "64",
1676
+ "num_embeddings": "6"
1677
+ },
1678
+ "status": "done",
1679
+ "title": "Embedding"
1680
+ },
1681
+ "dragHandle": ".bg-primary",
1682
+ "height": 227.0,
1683
+ "id": "Embedding 1",
1684
+ "position": {
1685
+ "x": -256.0885115154183,
1686
+ "y": 1322.2511456416655
1687
+ },
1688
+ "type": "basic",
1689
+ "width": 202.0
1690
+ },
1691
+ {
1692
+ "data": {
1693
+ "__execution_delay": 0.0,
1694
+ "collapsed": null,
1695
+ "display": null,
1696
+ "error": null,
1697
+ "input_metadata": null,
1698
+ "meta": {
1699
+ "color": "blue",
1700
+ "doc": null,
1701
+ "inputs": [
1702
+ {
1703
+ "name": "x",
1704
+ "position": "bottom",
1705
+ "type": {
1706
+ "type": "<class 'inspect._empty'>"
1707
+ }
1708
+ }
1709
+ ],
1710
+ "name": "Embedding",
1711
+ "outputs": [
1712
+ {
1713
+ "name": "output",
1714
+ "position": "top",
1715
+ "type": {
1716
+ "type": "None"
1717
+ }
1718
+ }
1719
+ ],
1720
+ "params": [
1721
+ {
1722
+ "default": null,
1723
+ "name": "num_embeddings",
1724
+ "type": {
1725
+ "type": "<class 'int'>"
1726
+ }
1727
+ },
1728
+ {
1729
+ "default": null,
1730
+ "name": "embedding_dim",
1731
+ "type": {
1732
+ "type": "<class 'int'>"
1733
+ }
1734
+ }
1735
+ ],
1736
+ "type": "basic"
1737
+ },
1738
+ "params": {
1739
+ "embedding_dim": "64",
1740
+ "num_embeddings": "6"
1741
+ },
1742
+ "status": "done",
1743
+ "title": "Embedding"
1744
+ },
1745
+ "dragHandle": ".bg-primary",
1746
+ "height": 237.0,
1747
+ "id": "Embedding 2",
1748
+ "position": {
1749
+ "x": -502.1534914179067,
1750
+ "y": 1325.0606482029252
1751
+ },
1752
+ "type": "basic",
1753
+ "width": 200.0
1754
+ },
1755
+ {
1756
+ "data": {
1757
+ "__execution_delay": 0.0,
1758
+ "collapsed": null,
1759
+ "display": null,
1760
+ "error": null,
1761
+ "input_metadata": null,
1762
+ "meta": {
1763
+ "color": "gray",
1764
+ "doc": null,
1765
+ "inputs": [],
1766
+ "name": "Input: tensor",
1767
+ "outputs": [
1768
+ {
1769
+ "name": "output",
1770
+ "position": "top",
1771
+ "type": {
1772
+ "type": "tensor"
1773
+ }
1774
+ }
1775
+ ],
1776
+ "params": [
1777
+ {
1778
+ "default": null,
1779
+ "name": "name",
1780
+ "type": {
1781
+ "type": "None"
1782
+ }
1783
+ }
1784
+ ],
1785
+ "type": "basic"
1786
+ },
1787
+ "params": {
1788
+ "name": "disease index"
1789
+ },
1790
+ "status": "done",
1791
+ "title": "Input: tensor"
1792
+ },
1793
+ "dragHandle": ".bg-primary",
1794
+ "height": 200.0,
1795
+ "id": "Input: tensor 4",
1796
+ "position": {
1797
+ "x": -503.55824269853656,
1798
+ "y": 1919.6283255695653
1799
+ },
1800
+ "type": "basic",
1801
+ "width": 200.0
1802
+ },
1803
+ {
1804
+ "data": {
1805
+ "__execution_delay": 0.0,
1806
+ "collapsed": null,
1807
+ "display": null,
1808
+ "error": null,
1809
+ "input_metadata": null,
1810
+ "meta": {
1811
+ "color": "gray",
1812
+ "doc": null,
1813
+ "inputs": [],
1814
+ "name": "Input: graph edges",
1815
+ "outputs": [
1816
+ {
1817
+ "name": "edges",
1818
+ "position": "top",
1819
+ "type": {
1820
+ "type": "tensor"
1821
+ }
1822
+ }
1823
+ ],
1824
+ "params": [
1825
+ {
1826
+ "default": null,
1827
+ "name": "name",
1828
+ "type": {
1829
+ "type": "None"
1830
+ }
1831
+ }
1832
+ ],
1833
+ "type": "basic"
1834
+ },
1835
+ "params": {
1836
+ "name": "disease-assoc-gene"
1837
+ },
1838
+ "status": "done",
1839
+ "title": "Input: graph edges"
1840
+ },
1841
+ "dragHandle": ".bg-primary",
1842
+ "height": 200.0,
1843
+ "id": "Input: graph edges 3",
1844
+ "position": {
1845
+ "x": 232.53287654813585,
1846
+ "y": 1903.635542809861
1847
+ },
1848
+ "type": "basic",
1849
+ "width": 200.0
1850
+ },
1851
+ {
1852
+ "data": {
1853
+ "__execution_delay": 0.0,
1854
+ "collapsed": null,
1855
+ "display": null,
1856
+ "error": null,
1857
+ "input_metadata": null,
1858
+ "meta": {
1859
+ "color": "orange",
1860
+ "doc": null,
1861
+ "inputs": [
1862
+ {
1863
+ "name": "x",
1864
+ "position": "bottom",
1865
+ "type": {
1866
+ "type": "tensor"
1867
+ }
1868
+ }
1869
+ ],
1870
+ "name": "Pick element by constant",
1871
+ "outputs": [
1872
+ {
1873
+ "name": "x_i",
1874
+ "position": "top",
1875
+ "type": {
1876
+ "type": "tensor"
1877
+ }
1878
+ }
1879
+ ],
1880
+ "params": [
1881
+ {
1882
+ "default": "0",
1883
+ "name": "index",
1884
+ "type": {
1885
+ "type": "<class 'str'>"
1886
+ }
1887
+ }
1888
+ ],
1889
+ "type": "basic"
1890
+ },
1891
+ "params": {
1892
+ "index": "disease"
1893
+ },
1894
+ "status": "done",
1895
+ "title": "Pick element by constant"
1896
+ },
1897
+ "dragHandle": ".bg-primary",
1898
+ "height": 200.0,
1899
+ "id": "Pick element by constant 1",
1900
+ "position": {
1901
+ "x": -104.82050032377765,
1902
+ "y": 443.88257532291584
1903
+ },
1904
+ "type": "basic",
1905
+ "width": 245.0
1906
+ },
1907
+ {
1908
+ "data": {
1909
+ "__execution_delay": 0.0,
1910
+ "collapsed": null,
1911
+ "display": null,
1912
+ "error": null,
1913
+ "input_metadata": null,
1914
+ "meta": {
1915
+ "color": "orange",
1916
+ "doc": null,
1917
+ "inputs": [
1918
+ {
1919
+ "name": "x",
1920
+ "position": "bottom",
1921
+ "type": {
1922
+ "type": "tensor"
1923
+ }
1924
+ }
1925
+ ],
1926
+ "name": "Pick element by constant",
1927
+ "outputs": [
1928
+ {
1929
+ "name": "x_i",
1930
+ "position": "top",
1931
+ "type": {
1932
+ "type": "tensor"
1933
+ }
1934
+ }
1935
+ ],
1936
+ "params": [
1937
+ {
1938
+ "default": "0",
1939
+ "name": "index",
1940
+ "type": {
1941
+ "type": "<class 'str'>"
1942
+ }
1943
+ }
1944
+ ],
1945
+ "type": "basic"
1946
+ },
1947
+ "params": {
1948
+ "index": "drug"
1949
+ },
1950
+ "status": "done",
1951
+ "title": "Pick element by constant"
1952
+ },
1953
+ "dragHandle": ".bg-primary",
1954
+ "height": 200.0,
1955
+ "id": "Pick element by constant 2",
1956
+ "position": {
1957
+ "x": 172.0238673738413,
1958
+ "y": 446.3361749709413
1959
+ },
1960
+ "type": "basic",
1961
+ "width": 270.0
1962
+ },
1963
+ {
1964
+ "data": {
1965
+ "__execution_delay": 0.0,
1966
+ "collapsed": null,
1967
+ "display": null,
1968
+ "error": null,
1969
+ "input_metadata": null,
1970
+ "meta": {
1971
+ "color": "orange",
1972
+ "doc": null,
1973
+ "inputs": [
1974
+ {
1975
+ "name": "x",
1976
+ "position": "bottom",
1977
+ "type": {
1978
+ "type": "tensor"
1979
+ }
1980
+ }
1981
+ ],
1982
+ "name": "Pick element by constant",
1983
+ "outputs": [
1984
+ {
1985
+ "name": "x_i",
1986
+ "position": "top",
1987
+ "type": {
1988
+ "type": "tensor"
1989
+ }
1990
+ }
1991
+ ],
1992
+ "params": [
1993
+ {
1994
+ "default": "0",
1995
+ "name": "index",
1996
+ "type": {
1997
+ "type": "<class 'str'>"
1998
+ }
1999
+ }
2000
+ ],
2001
+ "type": "basic"
2002
+ },
2003
+ "params": {
2004
+ "index": "gene"
2005
+ },
2006
+ "status": "done",
2007
+ "title": "Pick element by constant"
2008
+ },
2009
+ "dragHandle": ".bg-primary",
2010
+ "height": 197.0,
2011
+ "id": "Pick element by constant 3",
2012
+ "position": {
2013
+ "x": -385.8219023214074,
2014
+ "y": 444.2181846368153
2015
+ },
2016
+ "type": "basic",
2017
+ "width": 247.0
2018
+ },
2019
+ {
2020
+ "data": {
2021
+ "__execution_delay": null,
2022
+ "collapsed": true,
2023
+ "display": null,
2024
+ "error": null,
2025
+ "input_metadata": null,
2026
+ "meta": {
2027
+ "color": "blue",
2028
+ "doc": null,
2029
+ "inputs": [
2030
+ {
2031
+ "name": "x",
2032
+ "position": "bottom",
2033
+ "type": {
2034
+ "type": "<class 'inspect._empty'>"
2035
+ }
2036
+ }
2037
+ ],
2038
+ "name": "Mean pool",
2039
+ "outputs": [
2040
+ {
2041
+ "name": "output",
2042
+ "position": "top",
2043
+ "type": {
2044
+ "type": "None"
2045
+ }
2046
+ }
2047
+ ],
2048
+ "params": [],
2049
+ "type": "basic"
2050
+ },
2051
+ "params": {},
2052
+ "status": "done",
2053
+ "title": "Mean pool"
2054
+ },
2055
+ "dragHandle": ".bg-primary",
2056
+ "height": 200.0,
2057
+ "id": "Mean pool 1",
2058
+ "position": {
2059
+ "x": -363.34092335643146,
2060
+ "y": 338.36409073219164
2061
+ },
2062
+ "type": "basic",
2063
+ "width": 200.0
2064
+ },
2065
+ {
2066
+ "data": {
2067
+ "__execution_delay": null,
2068
+ "collapsed": true,
2069
+ "display": null,
2070
+ "error": null,
2071
+ "input_metadata": null,
2072
+ "meta": {
2073
+ "color": "blue",
2074
+ "doc": null,
2075
+ "inputs": [
2076
+ {
2077
+ "name": "x",
2078
+ "position": "bottom",
2079
+ "type": {
2080
+ "type": "<class 'inspect._empty'>"
2081
+ }
2082
+ }
2083
+ ],
2084
+ "name": "Mean pool",
2085
+ "outputs": [
2086
+ {
2087
+ "name": "output",
2088
+ "position": "top",
2089
+ "type": {
2090
+ "type": "None"
2091
+ }
2092
+ }
2093
+ ],
2094
+ "params": [],
2095
+ "type": "basic"
2096
+ },
2097
+ "params": {},
2098
+ "status": "done",
2099
+ "title": "Mean pool"
2100
+ },
2101
+ "dragHandle": ".bg-primary",
2102
+ "height": 200.0,
2103
+ "id": "Mean pool 2",
2104
+ "position": {
2105
+ "x": -82.8001236321482,
2106
+ "y": 319.6613707505728
2107
+ },
2108
+ "type": "basic",
2109
+ "width": 200.0
2110
+ },
2111
+ {
2112
+ "data": {
2113
+ "__execution_delay": null,
2114
+ "collapsed": true,
2115
+ "display": null,
2116
+ "error": null,
2117
+ "input_metadata": null,
2118
+ "meta": {
2119
+ "color": "blue",
2120
+ "doc": null,
2121
+ "inputs": [
2122
+ {
2123
+ "name": "x",
2124
+ "position": "bottom",
2125
+ "type": {
2126
+ "type": "<class 'inspect._empty'>"
2127
+ }
2128
+ }
2129
+ ],
2130
+ "name": "Mean pool",
2131
+ "outputs": [
2132
+ {
2133
+ "name": "output",
2134
+ "position": "top",
2135
+ "type": {
2136
+ "type": "None"
2137
+ }
2138
+ }
2139
+ ],
2140
+ "params": [],
2141
+ "type": "basic"
2142
+ },
2143
+ "params": {},
2144
+ "status": "done",
2145
+ "title": "Mean pool"
2146
+ },
2147
+ "dragHandle": ".bg-primary",
2148
+ "height": 200.0,
2149
+ "id": "Mean pool 3",
2150
  "position": {
2151
+ "x": 201.4812200884588,
2152
+ "y": 314.0505547560871
2153
  },
2154
  "type": "basic",
2155
  "width": 200.0
lynxkite-app/web/src/workspace/nodes/LynxKiteNode.tsx CHANGED
@@ -54,6 +54,7 @@ function getHandles(inputs: any[], outputs: any[]) {
54
  }
55
 
56
  const OP_COLORS: { [key: string]: string } = {
 
57
  pink: "oklch(75% 0.2 0)",
58
  orange: "oklch(75% 0.2 55)",
59
  green: "oklch(75% 0.2 150)",
 
54
  }
55
 
56
  const OP_COLORS: { [key: string]: string } = {
57
+ gray: "oklch(95% 0 0)",
58
  pink: "oklch(75% 0.2 0)",
59
  orange: "oklch(75% 0.2 55)",
60
  green: "oklch(75% 0.2 150)",
lynxkite-graph-analytics/src/lynxkite_graph_analytics/pytorch/pytorch_ops.py CHANGED
@@ -6,24 +6,23 @@ from lynxkite.core.ops import Parameter as P
6
  import torch
7
  from .pytorch_core import op, reg, ENV
8
 
9
- reg("Input: tensor", outputs=["output"], params=[P.basic("name")])
10
- reg("Input: graph edges", outputs=["edges"])
11
- reg("Input: sequential", outputs=["y"], params=[P.basic("name")])
12
- reg("Output", inputs=["x"], outputs=["x"], params=[P.basic("name")])
13
 
14
 
15
  @op("LSTM", weights=True)
16
  def lstm(x, *, input_size=1024, hidden_size=1024, dropout=0.0):
17
- return torch.nn.LSTM(input_size, hidden_size, dropout=0.0)
18
 
19
 
20
  reg(
21
- "Neural ODE",
22
  color="blue",
23
- inputs=["x"],
 
24
  params=[
25
- P.basic("relative_tolerance"),
26
- P.basic("absolute_tolerance"),
27
  P.options(
28
  "method",
29
  [
@@ -39,6 +38,11 @@ reg(
39
  "implicit_adams",
40
  ],
41
  ),
 
 
 
 
 
42
  ],
43
  )
44
 
@@ -66,6 +70,13 @@ def linear(x, *, output_dim=1024):
66
  return pyg_nn.Linear(-1, output_dim)
67
 
68
 
 
 
 
 
 
 
 
69
  class ActivationTypes(str, enum.Enum):
70
  ReLU = "ReLU"
71
  Leaky_ReLU = "Leaky ReLU"
@@ -93,11 +104,39 @@ def softmax(x, *, dim=1):
93
  return torch.nn.Softmax(dim=dim)
94
 
95
 
 
 
 
 
 
96
  @op("Concatenate")
97
  def concatenate(a, b):
98
  return lambda a, b: torch.concatenate(*torch.broadcast_tensors(a, b))
99
 
100
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
101
  reg(
102
  "Graph conv",
103
  color="blue",
@@ -105,6 +144,15 @@ reg(
105
  outputs=["x"],
106
  params=[P.options("type", ["GCNConv", "GATConv", "GATv2Conv", "SAGEConv"])],
107
  )
 
 
 
 
 
 
 
 
 
108
 
109
  reg("Triplet margin loss", inputs=["x", "x_pos", "x_neg"], outputs=["loss"])
110
  reg("Cross-entropy loss", inputs=["x", "y"], outputs=["loss"])
@@ -125,7 +173,7 @@ reg(
125
  "Galore AdamW",
126
  ],
127
  ),
128
- P.basic("lr", 0.001),
129
  ],
130
  color="green",
131
  )
 
6
  import torch
7
  from .pytorch_core import op, reg, ENV
8
 
9
+ reg("Input: tensor", outputs=["output"], params=[P.basic("name")], color="gray")
10
+ reg("Input: graph edges", outputs=["edges"], params=[P.basic("name")], color="gray")
11
+ reg("Input: sequential", outputs=["y"], params=[P.basic("name")], color="gray")
12
+ reg("Output", inputs=["x"], outputs=["x"], params=[P.basic("name")], color="gray")
13
 
14
 
15
  @op("LSTM", weights=True)
16
  def lstm(x, *, input_size=1024, hidden_size=1024, dropout=0.0):
17
+ return torch.nn.LSTM(input_size, hidden_size, dropout=dropout)
18
 
19
 
20
  reg(
21
+ "Neural ODE with MLP",
22
  color="blue",
23
+ inputs=["x", "y0", "t"],
24
+ outputs=["y"],
25
  params=[
 
 
26
  P.options(
27
  "method",
28
  [
 
38
  "implicit_adams",
39
  ],
40
  ),
41
+ P.basic("relative_tolerance"),
42
+ P.basic("absolute_tolerance"),
43
+ P.basic("mlp_layers"),
44
+ P.basic("mlp_hidden_size"),
45
+ P.options("mlp_activation", ["ReLU", "Tanh", "Sigmoid"]),
46
  ],
47
  )
48
 
 
70
  return pyg_nn.Linear(-1, output_dim)
71
 
72
 
73
+ @op("Mean pool")
74
+ def mean_pool(x):
75
+ import torch_geometric.nn as pyg_nn
76
+
77
+ return pyg_nn.global_mean_pool
78
+
79
+
80
  class ActivationTypes(str, enum.Enum):
81
  ReLU = "ReLU"
82
  Leaky_ReLU = "Leaky ReLU"
 
104
  return torch.nn.Softmax(dim=dim)
105
 
106
 
107
+ @op("Embedding", weights=True)
108
+ def embedding(x, *, num_embeddings: int, embedding_dim: int):
109
+ return torch.nn.Embedding(num_embeddings, embedding_dim)
110
+
111
+
112
  @op("Concatenate")
113
  def concatenate(a, b):
114
  return lambda a, b: torch.concatenate(*torch.broadcast_tensors(a, b))
115
 
116
 
117
+ reg(
118
+ "Pick element by index",
119
+ inputs=["x", "index"],
120
+ outputs=["x_i"],
121
+ )
122
+ reg(
123
+ "Pick element by constant",
124
+ inputs=["x"],
125
+ outputs=["x_i"],
126
+ params=[ops.Parameter.basic("index", "0")],
127
+ )
128
+ reg(
129
+ "Take first n",
130
+ inputs=["x"],
131
+ outputs=["x"],
132
+ params=[ops.Parameter.basic("n", 1, int)],
133
+ )
134
+ reg(
135
+ "Drop first n",
136
+ inputs=["x"],
137
+ outputs=["x"],
138
+ params=[ops.Parameter.basic("n", 1, int)],
139
+ )
140
  reg(
141
  "Graph conv",
142
  color="blue",
 
144
  outputs=["x"],
145
  params=[P.options("type", ["GCNConv", "GATConv", "GATv2Conv", "SAGEConv"])],
146
  )
147
+ reg(
148
+ "Heterogeneous graph conv",
149
+ inputs=["node_embeddings", "edge_modules"],
150
+ outputs=["x"],
151
+ params=[
152
+ ops.Parameter.basic("node_embeddings_order"),
153
+ ops.Parameter.basic("edge_modules_order"),
154
+ ],
155
+ )
156
 
157
  reg("Triplet margin loss", inputs=["x", "x_pos", "x_neg"], outputs=["loss"])
158
  reg("Cross-entropy loss", inputs=["x", "y"], outputs=["loss"])
 
173
  "Galore AdamW",
174
  ],
175
  ),
176
+ P.basic("lr", 0.0001),
177
  ],
178
  color="green",
179
  )