darabos commited on
Commit
4fd790b
·
unverified ·
2 Parent(s): 311bfd2 4114106

Merge pull request #148 from biggraph/darabos-colors

Browse files
Files changed (45) hide show
  1. biome.json +1 -0
  2. examples/AIMO.lynxkite.json +97 -635
  3. examples/Airlines demo.lynxkite.json +0 -0
  4. examples/Bio Cypher demo.lynxkite.json +607 -345
  5. examples/BioNeMo demo.lynxkite.json +106 -106
  6. examples/Generative drug screening.lynxkite.json +95 -95
  7. examples/Graph RAG.lynxkite.json +426 -426
  8. examples/Image processing.lynxkite.json +40 -40
  9. examples/LynxScribe Data Cleaning.lynxkite.json +48 -48
  10. examples/LynxScribe FAQ Chatbot Builder.lynxkite.json +77 -77
  11. examples/LynxScribe Image Search.lynxkite.json +56 -56
  12. examples/LynxScribe RAG Chatbot.lynxkite.json +97 -97
  13. examples/Model definition.lynxkite.json +132 -122
  14. examples/Model use.lynxkite.json +711 -703
  15. examples/NetworkX demo.lynxkite.json +105 -105
  16. examples/ODE-GNN experiment.lynxkite.json +65 -65
  17. examples/ODE-GNN.lynxkite.json +104 -104
  18. examples/RAG chatbot app.lynxkite.json +388 -388
  19. examples/Word2vec.lynxkite.json +54 -54
  20. examples/sql.lynxkite.json +0 -0
  21. lynxkite-app/src/lynxkite_app/crdt.py +11 -12
  22. lynxkite-app/src/lynxkite_app/main.py +5 -4
  23. lynxkite-app/tests/test_crdt.py +1 -1
  24. lynxkite-app/web/playwright.config.ts +1 -1
  25. lynxkite-app/web/src/index.css +14 -20
  26. lynxkite-app/web/src/workspace/Workspace.tsx +5 -1
  27. lynxkite-app/web/src/workspace/nodes/LynxKiteNode.tsx +20 -7
  28. lynxkite-app/web/src/workspace/nodes/NodeGroupParameter.tsx +17 -35
  29. lynxkite-app/web/src/workspace/nodes/NodeParameter.tsx +71 -68
  30. lynxkite-app/web/src/workspace/nodes/NodeWithParams.tsx +13 -41
  31. lynxkite-core/src/lynxkite/core/executors/one_by_one.py +7 -9
  32. lynxkite-core/src/lynxkite/core/executors/simple.py +3 -3
  33. lynxkite-core/src/lynxkite/core/ops.py +64 -32
  34. lynxkite-core/src/lynxkite/core/workspace.py +77 -70
  35. lynxkite-core/tests/test_ops.py +26 -32
  36. lynxkite-core/tests/test_workspace.py +9 -9
  37. lynxkite-graph-analytics/pyproject.toml +1 -0
  38. lynxkite-graph-analytics/src/lynxkite_graph_analytics/core.py +2 -2
  39. lynxkite-graph-analytics/src/lynxkite_graph_analytics/lynxkite_ops.py +9 -9
  40. lynxkite-graph-analytics/src/lynxkite_graph_analytics/ml_ops.py +10 -7
  41. lynxkite-graph-analytics/src/lynxkite_graph_analytics/networkx_ops.py +5 -4
  42. lynxkite-graph-analytics/src/lynxkite_graph_analytics/pytorch/pytorch_core.py +13 -9
  43. lynxkite-graph-analytics/src/lynxkite_graph_analytics/pytorch/pytorch_ops.py +10 -8
  44. lynxkite-lynxscribe/src/lynxkite_lynxscribe/llm_ops.py +1 -1
  45. lynxkite-lynxscribe/src/lynxkite_lynxscribe/lynxscribe_ops.py +5 -5
biome.json CHANGED
@@ -25,6 +25,7 @@
25
  "useValidAnchor": "off",
26
  "useButtonType": "off",
27
  "noAutofocus": "off",
 
28
  "noNoninteractiveTabindex": "off"
29
  }
30
  }
 
25
  "useValidAnchor": "off",
26
  "useButtonType": "off",
27
  "noAutofocus": "off",
28
+ "noLabelWithoutControl": "off",
29
  "noNoninteractiveTabindex": "off"
30
  }
31
  }
examples/AIMO.lynxkite.json CHANGED
@@ -149,321 +149,6 @@
149
  "Please give a correct solution for this: Let $ABCD$ be a unit square. Let $P$ be the point on $AB$ such that $|AP| = 1/{20}$ and let $Q$ be the point on $AD$ such that $|AQ| = 1/{24}$. The lines $DP$ and $BQ$ divide the square into four regions. Find the ratio between the areas of the largest region and the smallest region.",
150
  "To solve the problem, we first establish the coordinates of the points in the unit square \\(ABCD\\). \n\nLet the square \\(ABCD\\) have the following coordinates:\n- \\(A(0, 1)\\)\n- \\(B(1, 1)\\)\n- \\(C(1, 0)\\)\n- \\(D(0, 0)\\)\n\nNext, we define point \\(P\\) on segment \\(AB\\) such that \\(AP = \\frac{1"
151
  ],
152
- [
153
- "d7e9c9",
154
- "A function $f: \\mathbb N \\to \\mathbb N$ satisfies the following two conditions for all positive integers $n$:$f(f(f(n)))=8n-7$ and $f(2n)=2f(n)+1$. Calculate $f(100)$.",
155
- 199,
156
- "Please give a correct solution for this: A function $f: \\mathbb N \\to \\mathbb N$ satisfies the following two conditions for all positive integers $n$:$f(f(f(n)))=8n-7$ and $f(2n)=2f(n)+1$. Calculate $f(100)$.",
157
- "To find the function \\( f \\) satisfying the conditions \\( f(f(f(n))) = 8n - 7 \\) and \\( f(2n) = 2f(n) + 1 \\), let's start investigating each condition.\n\nFrom the first condition, we can substitute \\( n = 1 \\):\n\\[\nf(f(f(1))) = 8 \\cdot 1 - 7 = 1.\n\\]\nLet \\( a = f(1) \\)."
158
- ],
159
- [
160
- "246d26",
161
- "Each of the three-digits numbers $111$ to $999$ is coloured blue or yellow in such a way that the sum of any two (not necessarily different) yellow numbers is equal to a blue number. What is the maximum possible number of yellow numbers there can be?",
162
- 250,
163
- "Please give a correct solution for this: Each of the three-digits numbers $111$ to $999$ is coloured blue or yellow in such a way that the sum of any two (not necessarily different) yellow numbers is equal to a blue number. What is the maximum possible number of yellow numbers there can be?",
164
- "To solve this problem, we start by letting \\( Y \\) denote the set of yellow numbers and \\( B \\) denote the set of blue numbers. The condition provided states that for any two yellow numbers \\( y_1, y_2 \\in Y \\), their sum \\( y_1 + y_2 \\) must equal some blue number \\( b \\in B \\). \n\nGiven that we are working with three-digit numbers, we note that any number \\( y \\) in \\("
165
- ],
166
- [
167
- "2fc4ad",
168
- "Let the `sparkle' operation on positive integer $n$ consist of calculating the sum of the digits of $n$ and taking its factorial, e.g. the sparkle of 13 is $4! = 24$. A robot starts with a positive integer on a blackboard, then after each second for the rest of eternity, replaces the number on the board with its sparkle. For some `special' numbers, if they're the first number, then eventually every number that appears will be less than 6. How many such special numbers are there with at most 36 digits?",
169
- 702,
170
- "Please give a correct solution for this: Let the `sparkle' operation on positive integer $n$ consist of calculating the sum of the digits of $n$ and taking its factorial, e.g. the sparkle of 13 is $4! = 24$. A robot starts with a positive integer on a blackboard, then after each second for the rest of eternity, replaces the number on the board with its sparkle. For some `special' numbers, if they're the first number, then eventually every number that appears will be less than 6. How many such special numbers are there with at most 36 digits?",
171
- "To solve the problem, we first need to understand the sparkle operation performed on a positive integer \\( n \\). The sparkle of \\( n \\), denoted as \\( S(n) \\), is defined as the sum of its digits, denoted \\( s(n) \\), followed by taking the factorial of that sum, i.e., \n\n\\[\nS(n) = s(n)!\n\\]\n\nWe are tasked with finding \"special\" numbers \u2014 those numbers such that starting from them, all subsequent values"
172
- ],
173
- [
174
- "430b63",
175
- "What is the minimum value of $5x^2+5y^2-8xy$ when $x$ and $y$ range over all real numbers such that $|x-2y| + |y-2x| = 40$?",
176
- 800,
177
- "Please give a correct solution for this: What is the minimum value of $5x^2+5y^2-8xy$ when $x$ and $y$ range over all real numbers such that $|x-2y| + |y-2x| = 40$?",
178
- "We need to minimize the expression \\( f(x, y) = 5x^2 + 5y^2 - 8xy \\) under the constraint given by the equation \\( |x - 2y| + |y - 2x| = 40 \\).\n\nFirst, we analyze the constraint \\( |x - 2y| + |y - 2x| = 40 \\). This absolute value constraint suggests there are multiple cases to consider. Let's define the"
179
- ],
180
- [
181
- "5277ed",
182
- "There exists a unique increasing geometric sequence of five 2-digit positive integers. What is their sum?",
183
- 211,
184
- "Please give a correct solution for this: There exists a unique increasing geometric sequence of five 2-digit positive integers. What is their sum?",
185
- "To find a unique increasing geometric sequence of five 2-digit integers, we can denote the integers in the sequence as follows:\n\n\\[\na, ar, ar^2, ar^3, ar^4\n\\]\n\nwhere \\(a\\) is the first term and \\(r\\) is the common ratio.\n\nSince we want each term to be a two-digit integer, we have the following constraints:\n\n\\[\n10 \\leq a < 100\n\\]\n\\[\n10 \\le"
186
- ],
187
- [
188
- "739bc9",
189
- "For how many positive integers $m$ does the equation $\\vert \\vert x-1 \\vert -2 \\vert=\\frac{m}{100}$ have $4$ distinct solutions?",
190
- 199,
191
- "Please give a correct solution for this: For how many positive integers $m$ does the equation $\\vert \\vert x-1 \\vert -2 \\vert=\\frac{m}{100}$ have $4$ distinct solutions?",
192
- "To solve the equation \\( \\vert \\vert x-1 \\vert -2 \\vert = \\frac{m}{100} \\) for the number of positive integers \\( m \\) that yield \\( 4 \\) distinct solutions, we first analyze the expression \\( \\vert \\vert x-1 \\vert -2 \\vert \\).\n\n1. **Break down the expression:**\n Let \\( y = \\vert x - 1 \\vert \\). Then, we rewrite the equation as"
193
- ],
194
- [
195
- "82e2a0",
196
- "Suppose that we roll four 6-sided fair dice with faces numbered 1 to~6. Let $a/b$ be the probability that the highest roll is a 5, where $a$ and $b$ are relatively prime positive integers. Find $a + b$.",
197
- 185,
198
- "Please give a correct solution for this: Suppose that we roll four 6-sided fair dice with faces numbered 1 to~6. Let $a/b$ be the probability that the highest roll is a 5, where $a$ and $b$ are relatively prime positive integers. Find $a + b$.",
199
- "Given that we want the probability that the highest roll of four 6-sided dice is exactly 5, we need to consider two things: that at least one die shows a 5 and no die shows a 6.\n\n### Step 1: Calculate the total number of outcomes when rolling four dice.\nEach die has 6 faces, so when we roll four dice, the total number of possible outcomes is:\n\n\\[\n6^4 = 1296.\n\\]\n\n### Step 2:"
200
- ],
201
- [
202
- "8ee6f3",
203
- "The points $\\left(x, y\\right)$ satisfying $((\\vert x + y \\vert - 10)^2 + ( \\vert x - y \\vert - 10)^2)((\\vert x \\vert - 8)^2 + ( \\vert y \\vert - 8)^2) = 0$ enclose a convex polygon. What is the area of this convex polygon?",
204
- 320,
205
- "Please give a correct solution for this: The points $\\left(x, y\\right)$ satisfying $((\\vert x + y \\vert - 10)^2 + ( \\vert x - y \\vert - 10)^2)((\\vert x \\vert - 8)^2 + ( \\vert y \\vert - 8)^2) = 0$ enclose a convex polygon. What is the area of this convex polygon?",
206
- "To solve the equation \n\n\\[\n((|x + y| - 10)^2 + (|x - y| - 10)^2)((|x| - 8)^2 + (|y| - 8)^2) = 0,\n\\]\n\nwe need to analyze the two factors separately and determine the resultant sets of points.\n\n### Step 1: Analyze the first factor\n\nThe expression \\((|x + y| - 10)^2 + (|x"
207
- ],
208
- [
209
- "bedda4",
210
- "Let $ABCD$ be a unit square. Let $P$ be the point on $AB$ such that $|AP| = 1/{20}$ and let $Q$ be the point on $AD$ such that $|AQ| = 1/{24}$. The lines $DP$ and $BQ$ divide the square into four regions. Find the ratio between the areas of the largest region and the smallest region.",
211
- 480,
212
- "Please give a correct solution for this: Let $ABCD$ be a unit square. Let $P$ be the point on $AB$ such that $|AP| = 1/{20}$ and let $Q$ be the point on $AD$ such that $|AQ| = 1/{24}$. The lines $DP$ and $BQ$ divide the square into four regions. Find the ratio between the areas of the largest region and the smallest region.",
213
- "To solve the problem, we first establish the coordinates of the points in the unit square \\(ABCD\\). \n\nLet the square \\(ABCD\\) have the following coordinates:\n- \\(A(0, 1)\\)\n- \\(B(1, 1)\\)\n- \\(C(1, 0)\\)\n- \\(D(0, 0)\\)\n\nNext, we define point \\(P\\) on segment \\(AB\\) such that \\(AP = \\frac{1"
214
- ],
215
- [
216
- "d7e9c9",
217
- "A function $f: \\mathbb N \\to \\mathbb N$ satisfies the following two conditions for all positive integers $n$:$f(f(f(n)))=8n-7$ and $f(2n)=2f(n)+1$. Calculate $f(100)$.",
218
- 199,
219
- "Please give a correct solution for this: A function $f: \\mathbb N \\to \\mathbb N$ satisfies the following two conditions for all positive integers $n$:$f(f(f(n)))=8n-7$ and $f(2n)=2f(n)+1$. Calculate $f(100)$.",
220
- "To find the function \\( f \\) satisfying the conditions \\( f(f(f(n))) = 8n - 7 \\) and \\( f(2n) = 2f(n) + 1 \\), let's start investigating each condition.\n\nFrom the first condition, we can substitute \\( n = 1 \\):\n\\[\nf(f(f(1))) = 8 \\cdot 1 - 7 = 1.\n\\]\nLet \\( a = f(1) \\)."
221
- ],
222
- [
223
- "246d26",
224
- "Each of the three-digits numbers $111$ to $999$ is coloured blue or yellow in such a way that the sum of any two (not necessarily different) yellow numbers is equal to a blue number. What is the maximum possible number of yellow numbers there can be?",
225
- 250,
226
- "Please give a correct solution for this: Each of the three-digits numbers $111$ to $999$ is coloured blue or yellow in such a way that the sum of any two (not necessarily different) yellow numbers is equal to a blue number. What is the maximum possible number of yellow numbers there can be?",
227
- "To solve this problem, we start by letting \\( Y \\) denote the set of yellow numbers and \\( B \\) denote the set of blue numbers. The condition provided states that for any two yellow numbers \\( y_1, y_2 \\in Y \\), their sum \\( y_1 + y_2 \\) must equal some blue number \\( b \\in B \\). \n\nGiven that we are working with three-digit numbers, we note that any number \\( y \\) in \\("
228
- ],
229
- [
230
- "2fc4ad",
231
- "Let the `sparkle' operation on positive integer $n$ consist of calculating the sum of the digits of $n$ and taking its factorial, e.g. the sparkle of 13 is $4! = 24$. A robot starts with a positive integer on a blackboard, then after each second for the rest of eternity, replaces the number on the board with its sparkle. For some `special' numbers, if they're the first number, then eventually every number that appears will be less than 6. How many such special numbers are there with at most 36 digits?",
232
- 702,
233
- "Please give a correct solution for this: Let the `sparkle' operation on positive integer $n$ consist of calculating the sum of the digits of $n$ and taking its factorial, e.g. the sparkle of 13 is $4! = 24$. A robot starts with a positive integer on a blackboard, then after each second for the rest of eternity, replaces the number on the board with its sparkle. For some `special' numbers, if they're the first number, then eventually every number that appears will be less than 6. How many such special numbers are there with at most 36 digits?",
234
- "To solve the problem, we first need to understand the sparkle operation performed on a positive integer \\( n \\). The sparkle of \\( n \\), denoted as \\( S(n) \\), is defined as the sum of its digits, denoted \\( s(n) \\), followed by taking the factorial of that sum, i.e., \n\n\\[\nS(n) = s(n)!\n\\]\n\nWe are tasked with finding \"special\" numbers \u2014 those numbers such that starting from them, all subsequent values"
235
- ],
236
- [
237
- "430b63",
238
- "What is the minimum value of $5x^2+5y^2-8xy$ when $x$ and $y$ range over all real numbers such that $|x-2y| + |y-2x| = 40$?",
239
- 800,
240
- "Please give a correct solution for this: What is the minimum value of $5x^2+5y^2-8xy$ when $x$ and $y$ range over all real numbers such that $|x-2y| + |y-2x| = 40$?",
241
- "We need to minimize the expression \\( f(x, y) = 5x^2 + 5y^2 - 8xy \\) under the constraint given by the equation \\( |x - 2y| + |y - 2x| = 40 \\).\n\nFirst, we analyze the constraint \\( |x - 2y| + |y - 2x| = 40 \\). This absolute value constraint suggests there are multiple cases to consider. Let's define the"
242
- ],
243
- [
244
- "5277ed",
245
- "There exists a unique increasing geometric sequence of five 2-digit positive integers. What is their sum?",
246
- 211,
247
- "Please give a correct solution for this: There exists a unique increasing geometric sequence of five 2-digit positive integers. What is their sum?",
248
- "To find a unique increasing geometric sequence of five 2-digit integers, we can denote the integers in the sequence as follows:\n\n\\[\na, ar, ar^2, ar^3, ar^4\n\\]\n\nwhere \\(a\\) is the first term and \\(r\\) is the common ratio.\n\nSince we want each term to be a two-digit integer, we have the following constraints:\n\n\\[\n10 \\leq a < 100\n\\]\n\\[\n10 \\le"
249
- ],
250
- [
251
- "739bc9",
252
- "For how many positive integers $m$ does the equation $\\vert \\vert x-1 \\vert -2 \\vert=\\frac{m}{100}$ have $4$ distinct solutions?",
253
- 199,
254
- "Please give a correct solution for this: For how many positive integers $m$ does the equation $\\vert \\vert x-1 \\vert -2 \\vert=\\frac{m}{100}$ have $4$ distinct solutions?",
255
- "To solve the equation \\( \\vert \\vert x-1 \\vert -2 \\vert = \\frac{m}{100} \\) for the number of positive integers \\( m \\) that yield \\( 4 \\) distinct solutions, we first analyze the expression \\( \\vert \\vert x-1 \\vert -2 \\vert \\).\n\n1. **Break down the expression:**\n Let \\( y = \\vert x - 1 \\vert \\). Then, we rewrite the equation as"
256
- ],
257
- [
258
- "82e2a0",
259
- "Suppose that we roll four 6-sided fair dice with faces numbered 1 to~6. Let $a/b$ be the probability that the highest roll is a 5, where $a$ and $b$ are relatively prime positive integers. Find $a + b$.",
260
- 185,
261
- "Please give a correct solution for this: Suppose that we roll four 6-sided fair dice with faces numbered 1 to~6. Let $a/b$ be the probability that the highest roll is a 5, where $a$ and $b$ are relatively prime positive integers. Find $a + b$.",
262
- "Given that we want the probability that the highest roll of four 6-sided dice is exactly 5, we need to consider two things: that at least one die shows a 5 and no die shows a 6.\n\n### Step 1: Calculate the total number of outcomes when rolling four dice.\nEach die has 6 faces, so when we roll four dice, the total number of possible outcomes is:\n\n\\[\n6^4 = 1296.\n\\]\n\n### Step 2:"
263
- ],
264
- [
265
- "8ee6f3",
266
- "The points $\\left(x, y\\right)$ satisfying $((\\vert x + y \\vert - 10)^2 + ( \\vert x - y \\vert - 10)^2)((\\vert x \\vert - 8)^2 + ( \\vert y \\vert - 8)^2) = 0$ enclose a convex polygon. What is the area of this convex polygon?",
267
- 320,
268
- "Please give a correct solution for this: The points $\\left(x, y\\right)$ satisfying $((\\vert x + y \\vert - 10)^2 + ( \\vert x - y \\vert - 10)^2)((\\vert x \\vert - 8)^2 + ( \\vert y \\vert - 8)^2) = 0$ enclose a convex polygon. What is the area of this convex polygon?",
269
- "To solve the equation \n\n\\[\n((|x + y| - 10)^2 + (|x - y| - 10)^2)((|x| - 8)^2 + (|y| - 8)^2) = 0,\n\\]\n\nwe need to analyze the two factors separately and determine the resultant sets of points.\n\n### Step 1: Analyze the first factor\n\nThe expression \\((|x + y| - 10)^2 + (|x"
270
- ],
271
- [
272
- "bedda4",
273
- "Let $ABCD$ be a unit square. Let $P$ be the point on $AB$ such that $|AP| = 1/{20}$ and let $Q$ be the point on $AD$ such that $|AQ| = 1/{24}$. The lines $DP$ and $BQ$ divide the square into four regions. Find the ratio between the areas of the largest region and the smallest region.",
274
- 480,
275
- "Please give a correct solution for this: Let $ABCD$ be a unit square. Let $P$ be the point on $AB$ such that $|AP| = 1/{20}$ and let $Q$ be the point on $AD$ such that $|AQ| = 1/{24}$. The lines $DP$ and $BQ$ divide the square into four regions. Find the ratio between the areas of the largest region and the smallest region.",
276
- "To solve the problem, we first establish the coordinates of the points in the unit square \\(ABCD\\). \n\nLet the square \\(ABCD\\) have the following coordinates:\n- \\(A(0, 1)\\)\n- \\(B(1, 1)\\)\n- \\(C(1, 0)\\)\n- \\(D(0, 0)\\)\n\nNext, we define point \\(P\\) on segment \\(AB\\) such that \\(AP = \\frac{1"
277
- ],
278
- [
279
- "d7e9c9",
280
- "A function $f: \\mathbb N \\to \\mathbb N$ satisfies the following two conditions for all positive integers $n$:$f(f(f(n)))=8n-7$ and $f(2n)=2f(n)+1$. Calculate $f(100)$.",
281
- 199,
282
- "Please give a correct solution for this: A function $f: \\mathbb N \\to \\mathbb N$ satisfies the following two conditions for all positive integers $n$:$f(f(f(n)))=8n-7$ and $f(2n)=2f(n)+1$. Calculate $f(100)$.",
283
- "To find the function \\( f \\) satisfying the conditions \\( f(f(f(n))) = 8n - 7 \\) and \\( f(2n) = 2f(n) + 1 \\), let's start investigating each condition.\n\nFrom the first condition, we can substitute \\( n = 1 \\):\n\\[\nf(f(f(1))) = 8 \\cdot 1 - 7 = 1.\n\\]\nLet \\( a = f(1) \\)."
284
- ],
285
- [
286
- "246d26",
287
- "Each of the three-digits numbers $111$ to $999$ is coloured blue or yellow in such a way that the sum of any two (not necessarily different) yellow numbers is equal to a blue number. What is the maximum possible number of yellow numbers there can be?",
288
- 250,
289
- "Please give a correct solution for this: Each of the three-digits numbers $111$ to $999$ is coloured blue or yellow in such a way that the sum of any two (not necessarily different) yellow numbers is equal to a blue number. What is the maximum possible number of yellow numbers there can be?",
290
- "To solve this problem, we start by letting \\( Y \\) denote the set of yellow numbers and \\( B \\) denote the set of blue numbers. The condition provided states that for any two yellow numbers \\( y_1, y_2 \\in Y \\), their sum \\( y_1 + y_2 \\) must equal some blue number \\( b \\in B \\). \n\nGiven that we are working with three-digit numbers, we note that any number \\( y \\) in \\("
291
- ],
292
- [
293
- "2fc4ad",
294
- "Let the `sparkle' operation on positive integer $n$ consist of calculating the sum of the digits of $n$ and taking its factorial, e.g. the sparkle of 13 is $4! = 24$. A robot starts with a positive integer on a blackboard, then after each second for the rest of eternity, replaces the number on the board with its sparkle. For some `special' numbers, if they're the first number, then eventually every number that appears will be less than 6. How many such special numbers are there with at most 36 digits?",
295
- 702,
296
- "Please give a correct solution for this: Let the `sparkle' operation on positive integer $n$ consist of calculating the sum of the digits of $n$ and taking its factorial, e.g. the sparkle of 13 is $4! = 24$. A robot starts with a positive integer on a blackboard, then after each second for the rest of eternity, replaces the number on the board with its sparkle. For some `special' numbers, if they're the first number, then eventually every number that appears will be less than 6. How many such special numbers are there with at most 36 digits?",
297
- "To solve the problem, we first need to understand the sparkle operation performed on a positive integer \\( n \\). The sparkle of \\( n \\), denoted as \\( S(n) \\), is defined as the sum of its digits, denoted \\( s(n) \\), followed by taking the factorial of that sum, i.e., \n\n\\[\nS(n) = s(n)!\n\\]\n\nWe are tasked with finding \"special\" numbers \u2014 those numbers such that starting from them, all subsequent values"
298
- ],
299
- [
300
- "430b63",
301
- "What is the minimum value of $5x^2+5y^2-8xy$ when $x$ and $y$ range over all real numbers such that $|x-2y| + |y-2x| = 40$?",
302
- 800,
303
- "Please give a correct solution for this: What is the minimum value of $5x^2+5y^2-8xy$ when $x$ and $y$ range over all real numbers such that $|x-2y| + |y-2x| = 40$?",
304
- "We need to minimize the expression \\( f(x, y) = 5x^2 + 5y^2 - 8xy \\) under the constraint given by the equation \\( |x - 2y| + |y - 2x| = 40 \\).\n\nFirst, we analyze the constraint \\( |x - 2y| + |y - 2x| = 40 \\). This absolute value constraint suggests there are multiple cases to consider. Let's define the"
305
- ],
306
- [
307
- "5277ed",
308
- "There exists a unique increasing geometric sequence of five 2-digit positive integers. What is their sum?",
309
- 211,
310
- "Please give a correct solution for this: There exists a unique increasing geometric sequence of five 2-digit positive integers. What is their sum?",
311
- "To find a unique increasing geometric sequence of five 2-digit integers, we can denote the integers in the sequence as follows:\n\n\\[\na, ar, ar^2, ar^3, ar^4\n\\]\n\nwhere \\(a\\) is the first term and \\(r\\) is the common ratio.\n\nSince we want each term to be a two-digit integer, we have the following constraints:\n\n\\[\n10 \\leq a < 100\n\\]\n\\[\n10 \\le"
312
- ],
313
- [
314
- "739bc9",
315
- "For how many positive integers $m$ does the equation $\\vert \\vert x-1 \\vert -2 \\vert=\\frac{m}{100}$ have $4$ distinct solutions?",
316
- 199,
317
- "Please give a correct solution for this: For how many positive integers $m$ does the equation $\\vert \\vert x-1 \\vert -2 \\vert=\\frac{m}{100}$ have $4$ distinct solutions?",
318
- "To solve the equation \\( \\vert \\vert x-1 \\vert -2 \\vert = \\frac{m}{100} \\) for the number of positive integers \\( m \\) that yield \\( 4 \\) distinct solutions, we first analyze the expression \\( \\vert \\vert x-1 \\vert -2 \\vert \\).\n\n1. **Break down the expression:**\n Let \\( y = \\vert x - 1 \\vert \\). Then, we rewrite the equation as"
319
- ],
320
- [
321
- "82e2a0",
322
- "Suppose that we roll four 6-sided fair dice with faces numbered 1 to~6. Let $a/b$ be the probability that the highest roll is a 5, where $a$ and $b$ are relatively prime positive integers. Find $a + b$.",
323
- 185,
324
- "Please give a correct solution for this: Suppose that we roll four 6-sided fair dice with faces numbered 1 to~6. Let $a/b$ be the probability that the highest roll is a 5, where $a$ and $b$ are relatively prime positive integers. Find $a + b$.",
325
- "Given that we want the probability that the highest roll of four 6-sided dice is exactly 5, we need to consider two things: that at least one die shows a 5 and no die shows a 6.\n\n### Step 1: Calculate the total number of outcomes when rolling four dice.\nEach die has 6 faces, so when we roll four dice, the total number of possible outcomes is:\n\n\\[\n6^4 = 1296.\n\\]\n\n### Step 2:"
326
- ],
327
- [
328
- "8ee6f3",
329
- "The points $\\left(x, y\\right)$ satisfying $((\\vert x + y \\vert - 10)^2 + ( \\vert x - y \\vert - 10)^2)((\\vert x \\vert - 8)^2 + ( \\vert y \\vert - 8)^2) = 0$ enclose a convex polygon. What is the area of this convex polygon?",
330
- 320,
331
- "Please give a correct solution for this: The points $\\left(x, y\\right)$ satisfying $((\\vert x + y \\vert - 10)^2 + ( \\vert x - y \\vert - 10)^2)((\\vert x \\vert - 8)^2 + ( \\vert y \\vert - 8)^2) = 0$ enclose a convex polygon. What is the area of this convex polygon?",
332
- "To solve the equation \n\n\\[\n((|x + y| - 10)^2 + (|x - y| - 10)^2)((|x| - 8)^2 + (|y| - 8)^2) = 0,\n\\]\n\nwe need to analyze the two factors separately and determine the resultant sets of points.\n\n### Step 1: Analyze the first factor\n\nThe expression \\((|x + y| - 10)^2 + (|x"
333
- ],
334
- [
335
- "bedda4",
336
- "Let $ABCD$ be a unit square. Let $P$ be the point on $AB$ such that $|AP| = 1/{20}$ and let $Q$ be the point on $AD$ such that $|AQ| = 1/{24}$. The lines $DP$ and $BQ$ divide the square into four regions. Find the ratio between the areas of the largest region and the smallest region.",
337
- 480,
338
- "Please give a correct solution for this: Let $ABCD$ be a unit square. Let $P$ be the point on $AB$ such that $|AP| = 1/{20}$ and let $Q$ be the point on $AD$ such that $|AQ| = 1/{24}$. The lines $DP$ and $BQ$ divide the square into four regions. Find the ratio between the areas of the largest region and the smallest region.",
339
- "To solve the problem, we first establish the coordinates of the points in the unit square \\(ABCD\\). \n\nLet the square \\(ABCD\\) have the following coordinates:\n- \\(A(0, 1)\\)\n- \\(B(1, 1)\\)\n- \\(C(1, 0)\\)\n- \\(D(0, 0)\\)\n\nNext, we define point \\(P\\) on segment \\(AB\\) such that \\(AP = \\frac{1"
340
- ],
341
- [
342
- "d7e9c9",
343
- "A function $f: \\mathbb N \\to \\mathbb N$ satisfies the following two conditions for all positive integers $n$:$f(f(f(n)))=8n-7$ and $f(2n)=2f(n)+1$. Calculate $f(100)$.",
344
- 199,
345
- "Please give a correct solution for this: A function $f: \\mathbb N \\to \\mathbb N$ satisfies the following two conditions for all positive integers $n$:$f(f(f(n)))=8n-7$ and $f(2n)=2f(n)+1$. Calculate $f(100)$.",
346
- "To find the function \\( f \\) satisfying the conditions \\( f(f(f(n))) = 8n - 7 \\) and \\( f(2n) = 2f(n) + 1 \\), let's start investigating each condition.\n\nFrom the first condition, we can substitute \\( n = 1 \\):\n\\[\nf(f(f(1))) = 8 \\cdot 1 - 7 = 1.\n\\]\nLet \\( a = f(1) \\)."
347
- ],
348
- [
349
- "246d26",
350
- "Each of the three-digits numbers $111$ to $999$ is coloured blue or yellow in such a way that the sum of any two (not necessarily different) yellow numbers is equal to a blue number. What is the maximum possible number of yellow numbers there can be?",
351
- 250,
352
- "Please give a correct solution for this: Each of the three-digits numbers $111$ to $999$ is coloured blue or yellow in such a way that the sum of any two (not necessarily different) yellow numbers is equal to a blue number. What is the maximum possible number of yellow numbers there can be?",
353
- "To solve this problem, we start by letting \\( Y \\) denote the set of yellow numbers and \\( B \\) denote the set of blue numbers. The condition provided states that for any two yellow numbers \\( y_1, y_2 \\in Y \\), their sum \\( y_1 + y_2 \\) must equal some blue number \\( b \\in B \\). \n\nGiven that we are working with three-digit numbers, we note that any number \\( y \\) in \\("
354
- ],
355
- [
356
- "2fc4ad",
357
- "Let the `sparkle' operation on positive integer $n$ consist of calculating the sum of the digits of $n$ and taking its factorial, e.g. the sparkle of 13 is $4! = 24$. A robot starts with a positive integer on a blackboard, then after each second for the rest of eternity, replaces the number on the board with its sparkle. For some `special' numbers, if they're the first number, then eventually every number that appears will be less than 6. How many such special numbers are there with at most 36 digits?",
358
- 702,
359
- "Please give a correct solution for this: Let the `sparkle' operation on positive integer $n$ consist of calculating the sum of the digits of $n$ and taking its factorial, e.g. the sparkle of 13 is $4! = 24$. A robot starts with a positive integer on a blackboard, then after each second for the rest of eternity, replaces the number on the board with its sparkle. For some `special' numbers, if they're the first number, then eventually every number that appears will be less than 6. How many such special numbers are there with at most 36 digits?",
360
- "To solve the problem, we first need to understand the sparkle operation performed on a positive integer \\( n \\). The sparkle of \\( n \\), denoted as \\( S(n) \\), is defined as the sum of its digits, denoted \\( s(n) \\), followed by taking the factorial of that sum, i.e., \n\n\\[\nS(n) = s(n)!\n\\]\n\nWe are tasked with finding \"special\" numbers \u2014 those numbers such that starting from them, all subsequent values"
361
- ],
362
- [
363
- "430b63",
364
- "What is the minimum value of $5x^2+5y^2-8xy$ when $x$ and $y$ range over all real numbers such that $|x-2y| + |y-2x| = 40$?",
365
- 800,
366
- "Please give a correct solution for this: What is the minimum value of $5x^2+5y^2-8xy$ when $x$ and $y$ range over all real numbers such that $|x-2y| + |y-2x| = 40$?",
367
- "We need to minimize the expression \\( f(x, y) = 5x^2 + 5y^2 - 8xy \\) under the constraint given by the equation \\( |x - 2y| + |y - 2x| = 40 \\).\n\nFirst, we analyze the constraint \\( |x - 2y| + |y - 2x| = 40 \\). This absolute value constraint suggests there are multiple cases to consider. Let's define the"
368
- ],
369
- [
370
- "5277ed",
371
- "There exists a unique increasing geometric sequence of five 2-digit positive integers. What is their sum?",
372
- 211,
373
- "Please give a correct solution for this: There exists a unique increasing geometric sequence of five 2-digit positive integers. What is their sum?",
374
- "To find a unique increasing geometric sequence of five 2-digit integers, we can denote the integers in the sequence as follows:\n\n\\[\na, ar, ar^2, ar^3, ar^4\n\\]\n\nwhere \\(a\\) is the first term and \\(r\\) is the common ratio.\n\nSince we want each term to be a two-digit integer, we have the following constraints:\n\n\\[\n10 \\leq a < 100\n\\]\n\\[\n10 \\le"
375
- ],
376
- [
377
- "739bc9",
378
- "For how many positive integers $m$ does the equation $\\vert \\vert x-1 \\vert -2 \\vert=\\frac{m}{100}$ have $4$ distinct solutions?",
379
- 199,
380
- "Please give a correct solution for this: For how many positive integers $m$ does the equation $\\vert \\vert x-1 \\vert -2 \\vert=\\frac{m}{100}$ have $4$ distinct solutions?",
381
- "To solve the equation \\( \\vert \\vert x-1 \\vert -2 \\vert = \\frac{m}{100} \\) for the number of positive integers \\( m \\) that yield \\( 4 \\) distinct solutions, we first analyze the expression \\( \\vert \\vert x-1 \\vert -2 \\vert \\).\n\n1. **Break down the expression:**\n Let \\( y = \\vert x - 1 \\vert \\). Then, we rewrite the equation as"
382
- ],
383
- [
384
- "82e2a0",
385
- "Suppose that we roll four 6-sided fair dice with faces numbered 1 to~6. Let $a/b$ be the probability that the highest roll is a 5, where $a$ and $b$ are relatively prime positive integers. Find $a + b$.",
386
- 185,
387
- "Please give a correct solution for this: Suppose that we roll four 6-sided fair dice with faces numbered 1 to~6. Let $a/b$ be the probability that the highest roll is a 5, where $a$ and $b$ are relatively prime positive integers. Find $a + b$.",
388
- "Given that we want the probability that the highest roll of four 6-sided dice is exactly 5, we need to consider two things: that at least one die shows a 5 and no die shows a 6.\n\n### Step 1: Calculate the total number of outcomes when rolling four dice.\nEach die has 6 faces, so when we roll four dice, the total number of possible outcomes is:\n\n\\[\n6^4 = 1296.\n\\]\n\n### Step 2:"
389
- ],
390
- [
391
- "8ee6f3",
392
- "The points $\\left(x, y\\right)$ satisfying $((\\vert x + y \\vert - 10)^2 + ( \\vert x - y \\vert - 10)^2)((\\vert x \\vert - 8)^2 + ( \\vert y \\vert - 8)^2) = 0$ enclose a convex polygon. What is the area of this convex polygon?",
393
- 320,
394
- "Please give a correct solution for this: The points $\\left(x, y\\right)$ satisfying $((\\vert x + y \\vert - 10)^2 + ( \\vert x - y \\vert - 10)^2)((\\vert x \\vert - 8)^2 + ( \\vert y \\vert - 8)^2) = 0$ enclose a convex polygon. What is the area of this convex polygon?",
395
- "To solve the equation \n\n\\[\n((|x + y| - 10)^2 + (|x - y| - 10)^2)((|x| - 8)^2 + (|y| - 8)^2) = 0,\n\\]\n\nwe need to analyze the two factors separately and determine the resultant sets of points.\n\n### Step 1: Analyze the first factor\n\nThe expression \\((|x + y| - 10)^2 + (|x"
396
- ],
397
- [
398
- "bedda4",
399
- "Let $ABCD$ be a unit square. Let $P$ be the point on $AB$ such that $|AP| = 1/{20}$ and let $Q$ be the point on $AD$ such that $|AQ| = 1/{24}$. The lines $DP$ and $BQ$ divide the square into four regions. Find the ratio between the areas of the largest region and the smallest region.",
400
- 480,
401
- "Please give a correct solution for this: Let $ABCD$ be a unit square. Let $P$ be the point on $AB$ such that $|AP| = 1/{20}$ and let $Q$ be the point on $AD$ such that $|AQ| = 1/{24}$. The lines $DP$ and $BQ$ divide the square into four regions. Find the ratio between the areas of the largest region and the smallest region.",
402
- "To solve the problem, we first establish the coordinates of the points in the unit square \\(ABCD\\). \n\nLet the square \\(ABCD\\) have the following coordinates:\n- \\(A(0, 1)\\)\n- \\(B(1, 1)\\)\n- \\(C(1, 0)\\)\n- \\(D(0, 0)\\)\n\nNext, we define point \\(P\\) on segment \\(AB\\) such that \\(AP = \\frac{1"
403
- ],
404
- [
405
- "d7e9c9",
406
- "A function $f: \\mathbb N \\to \\mathbb N$ satisfies the following two conditions for all positive integers $n$:$f(f(f(n)))=8n-7$ and $f(2n)=2f(n)+1$. Calculate $f(100)$.",
407
- 199,
408
- "Please give a correct solution for this: A function $f: \\mathbb N \\to \\mathbb N$ satisfies the following two conditions for all positive integers $n$:$f(f(f(n)))=8n-7$ and $f(2n)=2f(n)+1$. Calculate $f(100)$.",
409
- "To find the function \\( f \\) satisfying the conditions \\( f(f(f(n))) = 8n - 7 \\) and \\( f(2n) = 2f(n) + 1 \\), let's start investigating each condition.\n\nFrom the first condition, we can substitute \\( n = 1 \\):\n\\[\nf(f(f(1))) = 8 \\cdot 1 - 7 = 1.\n\\]\nLet \\( a = f(1) \\)."
410
- ],
411
- [
412
- "246d26",
413
- "Each of the three-digits numbers $111$ to $999$ is coloured blue or yellow in such a way that the sum of any two (not necessarily different) yellow numbers is equal to a blue number. What is the maximum possible number of yellow numbers there can be?",
414
- 250,
415
- "Please give a correct solution for this: Each of the three-digits numbers $111$ to $999$ is coloured blue or yellow in such a way that the sum of any two (not necessarily different) yellow numbers is equal to a blue number. What is the maximum possible number of yellow numbers there can be?",
416
- "To solve this problem, we start by letting \\( Y \\) denote the set of yellow numbers and \\( B \\) denote the set of blue numbers. The condition provided states that for any two yellow numbers \\( y_1, y_2 \\in Y \\), their sum \\( y_1 + y_2 \\) must equal some blue number \\( b \\in B \\). \n\nGiven that we are working with three-digit numbers, we note that any number \\( y \\) in \\("
417
- ],
418
- [
419
- "2fc4ad",
420
- "Let the `sparkle' operation on positive integer $n$ consist of calculating the sum of the digits of $n$ and taking its factorial, e.g. the sparkle of 13 is $4! = 24$. A robot starts with a positive integer on a blackboard, then after each second for the rest of eternity, replaces the number on the board with its sparkle. For some `special' numbers, if they're the first number, then eventually every number that appears will be less than 6. How many such special numbers are there with at most 36 digits?",
421
- 702,
422
- "Please give a correct solution for this: Let the `sparkle' operation on positive integer $n$ consist of calculating the sum of the digits of $n$ and taking its factorial, e.g. the sparkle of 13 is $4! = 24$. A robot starts with a positive integer on a blackboard, then after each second for the rest of eternity, replaces the number on the board with its sparkle. For some `special' numbers, if they're the first number, then eventually every number that appears will be less than 6. How many such special numbers are there with at most 36 digits?",
423
- "To solve the problem, we first need to understand the sparkle operation performed on a positive integer \\( n \\). The sparkle of \\( n \\), denoted as \\( S(n) \\), is defined as the sum of its digits, denoted \\( s(n) \\), followed by taking the factorial of that sum, i.e., \n\n\\[\nS(n) = s(n)!\n\\]\n\nWe are tasked with finding \"special\" numbers \u2014 those numbers such that starting from them, all subsequent values"
424
- ],
425
- [
426
- "430b63",
427
- "What is the minimum value of $5x^2+5y^2-8xy$ when $x$ and $y$ range over all real numbers such that $|x-2y| + |y-2x| = 40$?",
428
- 800,
429
- "Please give a correct solution for this: What is the minimum value of $5x^2+5y^2-8xy$ when $x$ and $y$ range over all real numbers such that $|x-2y| + |y-2x| = 40$?",
430
- "We need to minimize the expression \\( f(x, y) = 5x^2 + 5y^2 - 8xy \\) under the constraint given by the equation \\( |x - 2y| + |y - 2x| = 40 \\).\n\nFirst, we analyze the constraint \\( |x - 2y| + |y - 2x| = 40 \\). This absolute value constraint suggests there are multiple cases to consider. Let's define the"
431
- ],
432
- [
433
- "5277ed",
434
- "There exists a unique increasing geometric sequence of five 2-digit positive integers. What is their sum?",
435
- 211,
436
- "Please give a correct solution for this: There exists a unique increasing geometric sequence of five 2-digit positive integers. What is their sum?",
437
- "To find a unique increasing geometric sequence of five 2-digit integers, we can denote the integers in the sequence as follows:\n\n\\[\na, ar, ar^2, ar^3, ar^4\n\\]\n\nwhere \\(a\\) is the first term and \\(r\\) is the common ratio.\n\nSince we want each term to be a two-digit integer, we have the following constraints:\n\n\\[\n10 \\leq a < 100\n\\]\n\\[\n10 \\le"
438
- ],
439
- [
440
- "739bc9",
441
- "For how many positive integers $m$ does the equation $\\vert \\vert x-1 \\vert -2 \\vert=\\frac{m}{100}$ have $4$ distinct solutions?",
442
- 199,
443
- "Please give a correct solution for this: For how many positive integers $m$ does the equation $\\vert \\vert x-1 \\vert -2 \\vert=\\frac{m}{100}$ have $4$ distinct solutions?",
444
- "To solve the equation \\( \\vert \\vert x-1 \\vert -2 \\vert = \\frac{m}{100} \\) for the number of positive integers \\( m \\) that yield \\( 4 \\) distinct solutions, we first analyze the expression \\( \\vert \\vert x-1 \\vert -2 \\vert \\).\n\n1. **Break down the expression:**\n Let \\( y = \\vert x - 1 \\vert \\). Then, we rewrite the equation as"
445
- ],
446
- [
447
- "82e2a0",
448
- "Suppose that we roll four 6-sided fair dice with faces numbered 1 to~6. Let $a/b$ be the probability that the highest roll is a 5, where $a$ and $b$ are relatively prime positive integers. Find $a + b$.",
449
- 185,
450
- "Please give a correct solution for this: Suppose that we roll four 6-sided fair dice with faces numbered 1 to~6. Let $a/b$ be the probability that the highest roll is a 5, where $a$ and $b$ are relatively prime positive integers. Find $a + b$.",
451
- "Given that we want the probability that the highest roll of four 6-sided dice is exactly 5, we need to consider two things: that at least one die shows a 5 and no die shows a 6.\n\n### Step 1: Calculate the total number of outcomes when rolling four dice.\nEach die has 6 faces, so when we roll four dice, the total number of possible outcomes is:\n\n\\[\n6^4 = 1296.\n\\]\n\n### Step 2:"
452
- ],
453
- [
454
- "8ee6f3",
455
- "The points $\\left(x, y\\right)$ satisfying $((\\vert x + y \\vert - 10)^2 + ( \\vert x - y \\vert - 10)^2)((\\vert x \\vert - 8)^2 + ( \\vert y \\vert - 8)^2) = 0$ enclose a convex polygon. What is the area of this convex polygon?",
456
- 320,
457
- "Please give a correct solution for this: The points $\\left(x, y\\right)$ satisfying $((\\vert x + y \\vert - 10)^2 + ( \\vert x - y \\vert - 10)^2)((\\vert x \\vert - 8)^2 + ( \\vert y \\vert - 8)^2) = 0$ enclose a convex polygon. What is the area of this convex polygon?",
458
- "To solve the equation \n\n\\[\n((|x + y| - 10)^2 + (|x - y| - 10)^2)((|x| - 8)^2 + (|y| - 8)^2) = 0,\n\\]\n\nwe need to analyze the two factors separately and determine the resultant sets of points.\n\n### Step 1: Analyze the first factor\n\nThe expression \\((|x + y| - 10)^2 + (|x"
459
- ],
460
- [
461
- "bedda4",
462
- "Let $ABCD$ be a unit square. Let $P$ be the point on $AB$ such that $|AP| = 1/{20}$ and let $Q$ be the point on $AD$ such that $|AQ| = 1/{24}$. The lines $DP$ and $BQ$ divide the square into four regions. Find the ratio between the areas of the largest region and the smallest region.",
463
- 480,
464
- "Please give a correct solution for this: Let $ABCD$ be a unit square. Let $P$ be the point on $AB$ such that $|AP| = 1/{20}$ and let $Q$ be the point on $AD$ such that $|AQ| = 1/{24}$. The lines $DP$ and $BQ$ divide the square into four regions. Find the ratio between the areas of the largest region and the smallest region.",
465
- "To solve the problem, we first establish the coordinates of the points in the unit square \\(ABCD\\). \n\nLet the square \\(ABCD\\) have the following coordinates:\n- \\(A(0, 1)\\)\n- \\(B(1, 1)\\)\n- \\(C(1, 0)\\)\n- \\(D(0, 0)\\)\n\nNext, we define point \\(P\\) on segment \\(AB\\) such that \\(AP = \\frac{1"
466
- ],
467
  [
468
  "d7e9c9",
469
  "A function $f: \\mathbb N \\to \\mathbb N$ satisfies the following two conditions for all positive integers $n$:$f(f(f(n)))=8n-7$ and $f(2n)=2f(n)+1$. Calculate $f(100)$.",
@@ -478,18 +163,19 @@
478
  "error": null,
479
  "input_metadata": null,
480
  "meta": {
481
- "inputs": {
482
- "input": {
 
483
  "name": "input",
484
  "position": "left",
485
  "type": {
486
  "type": "<class 'inspect._empty'>"
487
  }
488
  }
489
- },
490
  "name": "View",
491
- "outputs": {},
492
- "params": {},
493
  "type": "table_view"
494
  },
495
  "params": {},
@@ -653,231 +339,6 @@
653
  "Let $ABCD$ be a unit square. Let $P$ be the point on $AB$ such that $|AP| = 1/{20}$ and let $Q$ be the point on $AD$ such that $|AQ| = 1/{24}$. The lines $DP$ and $BQ$ divide the square into four regions. Find the ratio between the areas of the largest region and the smallest region.",
654
  480
655
  ],
656
- [
657
- "d7e9c9",
658
- "A function $f: \\mathbb N \\to \\mathbb N$ satisfies the following two conditions for all positive integers $n$:$f(f(f(n)))=8n-7$ and $f(2n)=2f(n)+1$. Calculate $f(100)$.",
659
- 199
660
- ],
661
- [
662
- "246d26",
663
- "Each of the three-digits numbers $111$ to $999$ is coloured blue or yellow in such a way that the sum of any two (not necessarily different) yellow numbers is equal to a blue number. What is the maximum possible number of yellow numbers there can be?",
664
- 250
665
- ],
666
- [
667
- "2fc4ad",
668
- "Let the `sparkle' operation on positive integer $n$ consist of calculating the sum of the digits of $n$ and taking its factorial, e.g. the sparkle of 13 is $4! = 24$. A robot starts with a positive integer on a blackboard, then after each second for the rest of eternity, replaces the number on the board with its sparkle. For some `special' numbers, if they're the first number, then eventually every number that appears will be less than 6. How many such special numbers are there with at most 36 digits?",
669
- 702
670
- ],
671
- [
672
- "430b63",
673
- "What is the minimum value of $5x^2+5y^2-8xy$ when $x$ and $y$ range over all real numbers such that $|x-2y| + |y-2x| = 40$?",
674
- 800
675
- ],
676
- [
677
- "5277ed",
678
- "There exists a unique increasing geometric sequence of five 2-digit positive integers. What is their sum?",
679
- 211
680
- ],
681
- [
682
- "739bc9",
683
- "For how many positive integers $m$ does the equation $\\vert \\vert x-1 \\vert -2 \\vert=\\frac{m}{100}$ have $4$ distinct solutions?",
684
- 199
685
- ],
686
- [
687
- "82e2a0",
688
- "Suppose that we roll four 6-sided fair dice with faces numbered 1 to~6. Let $a/b$ be the probability that the highest roll is a 5, where $a$ and $b$ are relatively prime positive integers. Find $a + b$.",
689
- 185
690
- ],
691
- [
692
- "8ee6f3",
693
- "The points $\\left(x, y\\right)$ satisfying $((\\vert x + y \\vert - 10)^2 + ( \\vert x - y \\vert - 10)^2)((\\vert x \\vert - 8)^2 + ( \\vert y \\vert - 8)^2) = 0$ enclose a convex polygon. What is the area of this convex polygon?",
694
- 320
695
- ],
696
- [
697
- "bedda4",
698
- "Let $ABCD$ be a unit square. Let $P$ be the point on $AB$ such that $|AP| = 1/{20}$ and let $Q$ be the point on $AD$ such that $|AQ| = 1/{24}$. The lines $DP$ and $BQ$ divide the square into four regions. Find the ratio between the areas of the largest region and the smallest region.",
699
- 480
700
- ],
701
- [
702
- "d7e9c9",
703
- "A function $f: \\mathbb N \\to \\mathbb N$ satisfies the following two conditions for all positive integers $n$:$f(f(f(n)))=8n-7$ and $f(2n)=2f(n)+1$. Calculate $f(100)$.",
704
- 199
705
- ],
706
- [
707
- "246d26",
708
- "Each of the three-digits numbers $111$ to $999$ is coloured blue or yellow in such a way that the sum of any two (not necessarily different) yellow numbers is equal to a blue number. What is the maximum possible number of yellow numbers there can be?",
709
- 250
710
- ],
711
- [
712
- "2fc4ad",
713
- "Let the `sparkle' operation on positive integer $n$ consist of calculating the sum of the digits of $n$ and taking its factorial, e.g. the sparkle of 13 is $4! = 24$. A robot starts with a positive integer on a blackboard, then after each second for the rest of eternity, replaces the number on the board with its sparkle. For some `special' numbers, if they're the first number, then eventually every number that appears will be less than 6. How many such special numbers are there with at most 36 digits?",
714
- 702
715
- ],
716
- [
717
- "430b63",
718
- "What is the minimum value of $5x^2+5y^2-8xy$ when $x$ and $y$ range over all real numbers such that $|x-2y| + |y-2x| = 40$?",
719
- 800
720
- ],
721
- [
722
- "5277ed",
723
- "There exists a unique increasing geometric sequence of five 2-digit positive integers. What is their sum?",
724
- 211
725
- ],
726
- [
727
- "739bc9",
728
- "For how many positive integers $m$ does the equation $\\vert \\vert x-1 \\vert -2 \\vert=\\frac{m}{100}$ have $4$ distinct solutions?",
729
- 199
730
- ],
731
- [
732
- "82e2a0",
733
- "Suppose that we roll four 6-sided fair dice with faces numbered 1 to~6. Let $a/b$ be the probability that the highest roll is a 5, where $a$ and $b$ are relatively prime positive integers. Find $a + b$.",
734
- 185
735
- ],
736
- [
737
- "8ee6f3",
738
- "The points $\\left(x, y\\right)$ satisfying $((\\vert x + y \\vert - 10)^2 + ( \\vert x - y \\vert - 10)^2)((\\vert x \\vert - 8)^2 + ( \\vert y \\vert - 8)^2) = 0$ enclose a convex polygon. What is the area of this convex polygon?",
739
- 320
740
- ],
741
- [
742
- "bedda4",
743
- "Let $ABCD$ be a unit square. Let $P$ be the point on $AB$ such that $|AP| = 1/{20}$ and let $Q$ be the point on $AD$ such that $|AQ| = 1/{24}$. The lines $DP$ and $BQ$ divide the square into four regions. Find the ratio between the areas of the largest region and the smallest region.",
744
- 480
745
- ],
746
- [
747
- "d7e9c9",
748
- "A function $f: \\mathbb N \\to \\mathbb N$ satisfies the following two conditions for all positive integers $n$:$f(f(f(n)))=8n-7$ and $f(2n)=2f(n)+1$. Calculate $f(100)$.",
749
- 199
750
- ],
751
- [
752
- "246d26",
753
- "Each of the three-digits numbers $111$ to $999$ is coloured blue or yellow in such a way that the sum of any two (not necessarily different) yellow numbers is equal to a blue number. What is the maximum possible number of yellow numbers there can be?",
754
- 250
755
- ],
756
- [
757
- "2fc4ad",
758
- "Let the `sparkle' operation on positive integer $n$ consist of calculating the sum of the digits of $n$ and taking its factorial, e.g. the sparkle of 13 is $4! = 24$. A robot starts with a positive integer on a blackboard, then after each second for the rest of eternity, replaces the number on the board with its sparkle. For some `special' numbers, if they're the first number, then eventually every number that appears will be less than 6. How many such special numbers are there with at most 36 digits?",
759
- 702
760
- ],
761
- [
762
- "430b63",
763
- "What is the minimum value of $5x^2+5y^2-8xy$ when $x$ and $y$ range over all real numbers such that $|x-2y| + |y-2x| = 40$?",
764
- 800
765
- ],
766
- [
767
- "5277ed",
768
- "There exists a unique increasing geometric sequence of five 2-digit positive integers. What is their sum?",
769
- 211
770
- ],
771
- [
772
- "739bc9",
773
- "For how many positive integers $m$ does the equation $\\vert \\vert x-1 \\vert -2 \\vert=\\frac{m}{100}$ have $4$ distinct solutions?",
774
- 199
775
- ],
776
- [
777
- "82e2a0",
778
- "Suppose that we roll four 6-sided fair dice with faces numbered 1 to~6. Let $a/b$ be the probability that the highest roll is a 5, where $a$ and $b$ are relatively prime positive integers. Find $a + b$.",
779
- 185
780
- ],
781
- [
782
- "8ee6f3",
783
- "The points $\\left(x, y\\right)$ satisfying $((\\vert x + y \\vert - 10)^2 + ( \\vert x - y \\vert - 10)^2)((\\vert x \\vert - 8)^2 + ( \\vert y \\vert - 8)^2) = 0$ enclose a convex polygon. What is the area of this convex polygon?",
784
- 320
785
- ],
786
- [
787
- "bedda4",
788
- "Let $ABCD$ be a unit square. Let $P$ be the point on $AB$ such that $|AP| = 1/{20}$ and let $Q$ be the point on $AD$ such that $|AQ| = 1/{24}$. The lines $DP$ and $BQ$ divide the square into four regions. Find the ratio between the areas of the largest region and the smallest region.",
789
- 480
790
- ],
791
- [
792
- "d7e9c9",
793
- "A function $f: \\mathbb N \\to \\mathbb N$ satisfies the following two conditions for all positive integers $n$:$f(f(f(n)))=8n-7$ and $f(2n)=2f(n)+1$. Calculate $f(100)$.",
794
- 199
795
- ],
796
- [
797
- "246d26",
798
- "Each of the three-digits numbers $111$ to $999$ is coloured blue or yellow in such a way that the sum of any two (not necessarily different) yellow numbers is equal to a blue number. What is the maximum possible number of yellow numbers there can be?",
799
- 250
800
- ],
801
- [
802
- "2fc4ad",
803
- "Let the `sparkle' operation on positive integer $n$ consist of calculating the sum of the digits of $n$ and taking its factorial, e.g. the sparkle of 13 is $4! = 24$. A robot starts with a positive integer on a blackboard, then after each second for the rest of eternity, replaces the number on the board with its sparkle. For some `special' numbers, if they're the first number, then eventually every number that appears will be less than 6. How many such special numbers are there with at most 36 digits?",
804
- 702
805
- ],
806
- [
807
- "430b63",
808
- "What is the minimum value of $5x^2+5y^2-8xy$ when $x$ and $y$ range over all real numbers such that $|x-2y| + |y-2x| = 40$?",
809
- 800
810
- ],
811
- [
812
- "5277ed",
813
- "There exists a unique increasing geometric sequence of five 2-digit positive integers. What is their sum?",
814
- 211
815
- ],
816
- [
817
- "739bc9",
818
- "For how many positive integers $m$ does the equation $\\vert \\vert x-1 \\vert -2 \\vert=\\frac{m}{100}$ have $4$ distinct solutions?",
819
- 199
820
- ],
821
- [
822
- "82e2a0",
823
- "Suppose that we roll four 6-sided fair dice with faces numbered 1 to~6. Let $a/b$ be the probability that the highest roll is a 5, where $a$ and $b$ are relatively prime positive integers. Find $a + b$.",
824
- 185
825
- ],
826
- [
827
- "8ee6f3",
828
- "The points $\\left(x, y\\right)$ satisfying $((\\vert x + y \\vert - 10)^2 + ( \\vert x - y \\vert - 10)^2)((\\vert x \\vert - 8)^2 + ( \\vert y \\vert - 8)^2) = 0$ enclose a convex polygon. What is the area of this convex polygon?",
829
- 320
830
- ],
831
- [
832
- "bedda4",
833
- "Let $ABCD$ be a unit square. Let $P$ be the point on $AB$ such that $|AP| = 1/{20}$ and let $Q$ be the point on $AD$ such that $|AQ| = 1/{24}$. The lines $DP$ and $BQ$ divide the square into four regions. Find the ratio between the areas of the largest region and the smallest region.",
834
- 480
835
- ],
836
- [
837
- "d7e9c9",
838
- "A function $f: \\mathbb N \\to \\mathbb N$ satisfies the following two conditions for all positive integers $n$:$f(f(f(n)))=8n-7$ and $f(2n)=2f(n)+1$. Calculate $f(100)$.",
839
- 199
840
- ],
841
- [
842
- "246d26",
843
- "Each of the three-digits numbers $111$ to $999$ is coloured blue or yellow in such a way that the sum of any two (not necessarily different) yellow numbers is equal to a blue number. What is the maximum possible number of yellow numbers there can be?",
844
- 250
845
- ],
846
- [
847
- "2fc4ad",
848
- "Let the `sparkle' operation on positive integer $n$ consist of calculating the sum of the digits of $n$ and taking its factorial, e.g. the sparkle of 13 is $4! = 24$. A robot starts with a positive integer on a blackboard, then after each second for the rest of eternity, replaces the number on the board with its sparkle. For some `special' numbers, if they're the first number, then eventually every number that appears will be less than 6. How many such special numbers are there with at most 36 digits?",
849
- 702
850
- ],
851
- [
852
- "430b63",
853
- "What is the minimum value of $5x^2+5y^2-8xy$ when $x$ and $y$ range over all real numbers such that $|x-2y| + |y-2x| = 40$?",
854
- 800
855
- ],
856
- [
857
- "5277ed",
858
- "There exists a unique increasing geometric sequence of five 2-digit positive integers. What is their sum?",
859
- 211
860
- ],
861
- [
862
- "739bc9",
863
- "For how many positive integers $m$ does the equation $\\vert \\vert x-1 \\vert -2 \\vert=\\frac{m}{100}$ have $4$ distinct solutions?",
864
- 199
865
- ],
866
- [
867
- "82e2a0",
868
- "Suppose that we roll four 6-sided fair dice with faces numbered 1 to~6. Let $a/b$ be the probability that the highest roll is a 5, where $a$ and $b$ are relatively prime positive integers. Find $a + b$.",
869
- 185
870
- ],
871
- [
872
- "8ee6f3",
873
- "The points $\\left(x, y\\right)$ satisfying $((\\vert x + y \\vert - 10)^2 + ( \\vert x - y \\vert - 10)^2)((\\vert x \\vert - 8)^2 + ( \\vert y \\vert - 8)^2) = 0$ enclose a convex polygon. What is the area of this convex polygon?",
874
- 320
875
- ],
876
- [
877
- "bedda4",
878
- "Let $ABCD$ be a unit square. Let $P$ be the point on $AB$ such that $|AP| = 1/{20}$ and let $Q$ be the point on $AD$ such that $|AQ| = 1/{24}$. The lines $DP$ and $BQ$ divide the square into four regions. Find the ratio between the areas of the largest region and the smallest region.",
879
- 480
880
- ],
881
  [
882
  "d7e9c9",
883
  "A function $f: \\mathbb N \\to \\mathbb N$ satisfies the following two conditions for all positive integers $n$:$f(f(f(n)))=8n-7$ and $f(2n)=2f(n)+1$. Calculate $f(100)$.",
@@ -890,18 +351,19 @@
890
  "error": null,
891
  "input_metadata": null,
892
  "meta": {
893
- "inputs": {
894
- "input": {
 
895
  "name": "input",
896
  "position": "left",
897
  "type": {
898
  "type": "<class 'inspect._empty'>"
899
  }
900
  }
901
- },
902
  "name": "View",
903
- "outputs": {},
904
- "params": {},
905
  "type": "table_view"
906
  },
907
  "params": {},
@@ -995,41 +457,42 @@
995
  "error": null,
996
  "input_metadata": null,
997
  "meta": {
998
- "inputs": {
999
- "input": {
 
1000
  "name": "input",
1001
  "position": "left",
1002
  "type": {
1003
  "type": "<class 'inspect._empty'>"
1004
  }
1005
  }
1006
- },
1007
  "name": "Create prompt",
1008
- "outputs": {
1009
- "output": {
1010
  "name": "output",
1011
  "position": "right",
1012
  "type": {
1013
  "type": "None"
1014
  }
1015
  }
1016
- },
1017
- "params": {
1018
- "save_as": {
1019
  "default": "prompt",
1020
  "name": "save_as",
1021
  "type": {
1022
  "type": "<class 'str'>"
1023
  }
1024
  },
1025
- "template": {
1026
  "default": null,
1027
  "name": "template",
1028
  "type": {
1029
  "format": "textarea"
1030
  }
1031
  }
1032
- },
1033
  "type": "basic"
1034
  },
1035
  "params": {
@@ -1062,41 +525,42 @@
1062
  "error": null,
1063
  "input_metadata": null,
1064
  "meta": {
1065
- "inputs": {
1066
- "input": {
 
1067
  "name": "input",
1068
  "position": "left",
1069
  "type": {
1070
  "type": "<class 'inspect._empty'>"
1071
  }
1072
  }
1073
- },
1074
  "name": "Create prompt",
1075
- "outputs": {
1076
- "output": {
1077
  "name": "output",
1078
  "position": "right",
1079
  "type": {
1080
  "type": "None"
1081
  }
1082
  }
1083
- },
1084
- "params": {
1085
- "save_as": {
1086
  "default": "prompt",
1087
  "name": "save_as",
1088
  "type": {
1089
  "type": "<class 'str'>"
1090
  }
1091
  },
1092
- "template": {
1093
  "default": null,
1094
  "name": "template",
1095
  "type": {
1096
  "format": "textarea"
1097
  }
1098
  }
1099
- },
1100
  "type": "basic"
1101
  },
1102
  "params": {
@@ -1127,18 +591,19 @@
1127
  "error": null,
1128
  "input_metadata": null,
1129
  "meta": {
1130
- "inputs": {
1131
- "input": {
 
1132
  "name": "input",
1133
  "position": "left",
1134
  "type": {
1135
  "type": "<class 'inspect._empty'>"
1136
  }
1137
  }
1138
- },
1139
  "name": "View",
1140
- "outputs": {},
1141
- "params": {},
1142
  "type": "table_view"
1143
  },
1144
  "params": {},
@@ -1252,34 +717,35 @@
1252
  "error": null,
1253
  "input_metadata": null,
1254
  "meta": {
1255
- "inputs": {
1256
- "input": {
 
1257
  "name": "input",
1258
  "position": "right",
1259
  "type": {
1260
  "type": "<class 'inspect._empty'>"
1261
  }
1262
  }
1263
- },
1264
  "name": "Loop",
1265
- "outputs": {
1266
- "output": {
1267
  "name": "output",
1268
  "position": "left",
1269
  "type": {
1270
  "type": "None"
1271
  }
1272
  }
1273
- },
1274
- "params": {
1275
- "max_iterations": {
1276
- "default": 3.0,
1277
  "name": "max_iterations",
1278
  "type": {
1279
  "type": "<class 'int'>"
1280
  }
1281
  }
1282
- },
1283
  "type": "basic"
1284
  },
1285
  "params": {
@@ -1312,33 +778,34 @@
1312
  "error": null,
1313
  "input_metadata": null,
1314
  "meta": {
1315
- "inputs": {},
 
1316
  "name": "Input CSV",
1317
- "outputs": {
1318
- "output": {
1319
  "name": "output",
1320
  "position": "right",
1321
  "type": {
1322
  "type": "None"
1323
  }
1324
  }
1325
- },
1326
- "params": {
1327
- "filename": {
1328
  "default": null,
1329
  "name": "filename",
1330
  "type": {
1331
  "format": "path"
1332
  }
1333
  },
1334
- "key": {
1335
  "default": null,
1336
  "name": "key",
1337
  "type": {
1338
  "type": "<class 'str'>"
1339
  }
1340
  }
1341
- },
1342
  "type": "basic"
1343
  },
1344
  "params": {
@@ -1366,41 +833,42 @@
1366
  "error": null,
1367
  "input_metadata": null,
1368
  "meta": {
1369
- "inputs": {
1370
- "input": {
 
1371
  "name": "input",
1372
  "position": "left",
1373
  "type": {
1374
  "type": "<class 'inspect._empty'>"
1375
  }
1376
  }
1377
- },
1378
  "name": "Branch",
1379
- "outputs": {
1380
- "false": {
1381
- "name": "false",
1382
  "position": "right",
1383
  "type": {
1384
  "type": "None"
1385
  }
1386
  },
1387
- "true": {
1388
- "name": "true",
1389
  "position": "right",
1390
  "type": {
1391
  "type": "None"
1392
  }
1393
  }
1394
- },
1395
- "params": {
1396
- "expression": {
1397
  "default": null,
1398
  "name": "expression",
1399
  "type": {
1400
  "type": "<class 'str'>"
1401
  }
1402
  }
1403
- },
1404
  "type": "basic"
1405
  },
1406
  "params": {
@@ -1425,45 +893,42 @@
1425
  "error": null,
1426
  "input_metadata": null,
1427
  "meta": {
1428
- "inputs": {
1429
- "input": {
 
1430
  "name": "input",
1431
  "position": "left",
1432
  "type": {
1433
  "type": "<class 'inspect._empty'>"
1434
  }
1435
  }
1436
- },
1437
  "name": "Ask LLM",
1438
- "outputs": {
1439
- "output": {
1440
  "name": "output",
1441
  "position": "right",
1442
  "type": {
1443
  "type": "None"
1444
  }
1445
  }
1446
- },
1447
- "params": {
1448
- "accepted_regex": {
1449
  "default": null,
1450
  "name": "accepted_regex",
1451
  "type": {
1452
  "type": "<class 'str'>"
1453
  }
1454
  },
1455
- "max_tokens": {
1456
- "default": 100.0,
1457
  "name": "max_tokens",
1458
  "type": {
1459
  "type": "<class 'int'>"
1460
  }
1461
  }
1462
- },
1463
- "position": {
1464
- "x": 485.0,
1465
- "y": 196.0
1466
- },
1467
  "type": "basic"
1468
  },
1469
  "params": {
@@ -1491,45 +956,42 @@
1491
  "error": "Error code: 400 - {'error': {'message': 'Unrecognized request argument supplied: regex', 'type': 'invalid_request_error', 'param': None, 'code': None}}",
1492
  "input_metadata": null,
1493
  "meta": {
1494
- "inputs": {
1495
- "input": {
 
1496
  "name": "input",
1497
  "position": "left",
1498
  "type": {
1499
  "type": "<class 'inspect._empty'>"
1500
  }
1501
  }
1502
- },
1503
  "name": "Ask LLM",
1504
- "outputs": {
1505
- "output": {
1506
  "name": "output",
1507
  "position": "right",
1508
  "type": {
1509
  "type": "None"
1510
  }
1511
  }
1512
- },
1513
- "params": {
1514
- "accepted_regex": {
1515
  "default": null,
1516
  "name": "accepted_regex",
1517
  "type": {
1518
  "type": "<class 'str'>"
1519
  }
1520
  },
1521
- "max_tokens": {
1522
- "default": 100.0,
1523
  "name": "max_tokens",
1524
  "type": {
1525
  "type": "<class 'int'>"
1526
  }
1527
  }
1528
- },
1529
- "position": {
1530
- "x": 759.0,
1531
- "y": 223.0
1532
- },
1533
  "type": "basic"
1534
  },
1535
  "params": {
 
149
  "Please give a correct solution for this: Let $ABCD$ be a unit square. Let $P$ be the point on $AB$ such that $|AP| = 1/{20}$ and let $Q$ be the point on $AD$ such that $|AQ| = 1/{24}$. The lines $DP$ and $BQ$ divide the square into four regions. Find the ratio between the areas of the largest region and the smallest region.",
150
  "To solve the problem, we first establish the coordinates of the points in the unit square \\(ABCD\\). \n\nLet the square \\(ABCD\\) have the following coordinates:\n- \\(A(0, 1)\\)\n- \\(B(1, 1)\\)\n- \\(C(1, 0)\\)\n- \\(D(0, 0)\\)\n\nNext, we define point \\(P\\) on segment \\(AB\\) such that \\(AP = \\frac{1"
151
  ],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
152
  [
153
  "d7e9c9",
154
  "A function $f: \\mathbb N \\to \\mathbb N$ satisfies the following two conditions for all positive integers $n$:$f(f(f(n)))=8n-7$ and $f(2n)=2f(n)+1$. Calculate $f(100)$.",
 
163
  "error": null,
164
  "input_metadata": null,
165
  "meta": {
166
+ "color": "orange",
167
+ "inputs": [
168
+ {
169
  "name": "input",
170
  "position": "left",
171
  "type": {
172
  "type": "<class 'inspect._empty'>"
173
  }
174
  }
175
+ ],
176
  "name": "View",
177
+ "outputs": [],
178
+ "params": [],
179
  "type": "table_view"
180
  },
181
  "params": {},
 
339
  "Let $ABCD$ be a unit square. Let $P$ be the point on $AB$ such that $|AP| = 1/{20}$ and let $Q$ be the point on $AD$ such that $|AQ| = 1/{24}$. The lines $DP$ and $BQ$ divide the square into four regions. Find the ratio between the areas of the largest region and the smallest region.",
340
  480
341
  ],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
342
  [
343
  "d7e9c9",
344
  "A function $f: \\mathbb N \\to \\mathbb N$ satisfies the following two conditions for all positive integers $n$:$f(f(f(n)))=8n-7$ and $f(2n)=2f(n)+1$. Calculate $f(100)$.",
 
351
  "error": null,
352
  "input_metadata": null,
353
  "meta": {
354
+ "color": "orange",
355
+ "inputs": [
356
+ {
357
  "name": "input",
358
  "position": "left",
359
  "type": {
360
  "type": "<class 'inspect._empty'>"
361
  }
362
  }
363
+ ],
364
  "name": "View",
365
+ "outputs": [],
366
+ "params": [],
367
  "type": "table_view"
368
  },
369
  "params": {},
 
457
  "error": null,
458
  "input_metadata": null,
459
  "meta": {
460
+ "color": "orange",
461
+ "inputs": [
462
+ {
463
  "name": "input",
464
  "position": "left",
465
  "type": {
466
  "type": "<class 'inspect._empty'>"
467
  }
468
  }
469
+ ],
470
  "name": "Create prompt",
471
+ "outputs": [
472
+ {
473
  "name": "output",
474
  "position": "right",
475
  "type": {
476
  "type": "None"
477
  }
478
  }
479
+ ],
480
+ "params": [
481
+ {
482
  "default": "prompt",
483
  "name": "save_as",
484
  "type": {
485
  "type": "<class 'str'>"
486
  }
487
  },
488
+ {
489
  "default": null,
490
  "name": "template",
491
  "type": {
492
  "format": "textarea"
493
  }
494
  }
495
+ ],
496
  "type": "basic"
497
  },
498
  "params": {
 
525
  "error": null,
526
  "input_metadata": null,
527
  "meta": {
528
+ "color": "orange",
529
+ "inputs": [
530
+ {
531
  "name": "input",
532
  "position": "left",
533
  "type": {
534
  "type": "<class 'inspect._empty'>"
535
  }
536
  }
537
+ ],
538
  "name": "Create prompt",
539
+ "outputs": [
540
+ {
541
  "name": "output",
542
  "position": "right",
543
  "type": {
544
  "type": "None"
545
  }
546
  }
547
+ ],
548
+ "params": [
549
+ {
550
  "default": "prompt",
551
  "name": "save_as",
552
  "type": {
553
  "type": "<class 'str'>"
554
  }
555
  },
556
+ {
557
  "default": null,
558
  "name": "template",
559
  "type": {
560
  "format": "textarea"
561
  }
562
  }
563
+ ],
564
  "type": "basic"
565
  },
566
  "params": {
 
591
  "error": null,
592
  "input_metadata": null,
593
  "meta": {
594
+ "color": "orange",
595
+ "inputs": [
596
+ {
597
  "name": "input",
598
  "position": "left",
599
  "type": {
600
  "type": "<class 'inspect._empty'>"
601
  }
602
  }
603
+ ],
604
  "name": "View",
605
+ "outputs": [],
606
+ "params": [],
607
  "type": "table_view"
608
  },
609
  "params": {},
 
717
  "error": null,
718
  "input_metadata": null,
719
  "meta": {
720
+ "color": "orange",
721
+ "inputs": [
722
+ {
723
  "name": "input",
724
  "position": "right",
725
  "type": {
726
  "type": "<class 'inspect._empty'>"
727
  }
728
  }
729
+ ],
730
  "name": "Loop",
731
+ "outputs": [
732
+ {
733
  "name": "output",
734
  "position": "left",
735
  "type": {
736
  "type": "None"
737
  }
738
  }
739
+ ],
740
+ "params": [
741
+ {
742
+ "default": 3,
743
  "name": "max_iterations",
744
  "type": {
745
  "type": "<class 'int'>"
746
  }
747
  }
748
+ ],
749
  "type": "basic"
750
  },
751
  "params": {
 
778
  "error": null,
779
  "input_metadata": null,
780
  "meta": {
781
+ "color": "orange",
782
+ "inputs": [],
783
  "name": "Input CSV",
784
+ "outputs": [
785
+ {
786
  "name": "output",
787
  "position": "right",
788
  "type": {
789
  "type": "None"
790
  }
791
  }
792
+ ],
793
+ "params": [
794
+ {
795
  "default": null,
796
  "name": "filename",
797
  "type": {
798
  "format": "path"
799
  }
800
  },
801
+ {
802
  "default": null,
803
  "name": "key",
804
  "type": {
805
  "type": "<class 'str'>"
806
  }
807
  }
808
+ ],
809
  "type": "basic"
810
  },
811
  "params": {
 
833
  "error": null,
834
  "input_metadata": null,
835
  "meta": {
836
+ "color": "orange",
837
+ "inputs": [
838
+ {
839
  "name": "input",
840
  "position": "left",
841
  "type": {
842
  "type": "<class 'inspect._empty'>"
843
  }
844
  }
845
+ ],
846
  "name": "Branch",
847
+ "outputs": [
848
+ {
849
+ "name": "true",
850
  "position": "right",
851
  "type": {
852
  "type": "None"
853
  }
854
  },
855
+ {
856
+ "name": "false",
857
  "position": "right",
858
  "type": {
859
  "type": "None"
860
  }
861
  }
862
+ ],
863
+ "params": [
864
+ {
865
  "default": null,
866
  "name": "expression",
867
  "type": {
868
  "type": "<class 'str'>"
869
  }
870
  }
871
+ ],
872
  "type": "basic"
873
  },
874
  "params": {
 
893
  "error": null,
894
  "input_metadata": null,
895
  "meta": {
896
+ "color": "orange",
897
+ "inputs": [
898
+ {
899
  "name": "input",
900
  "position": "left",
901
  "type": {
902
  "type": "<class 'inspect._empty'>"
903
  }
904
  }
905
+ ],
906
  "name": "Ask LLM",
907
+ "outputs": [
908
+ {
909
  "name": "output",
910
  "position": "right",
911
  "type": {
912
  "type": "None"
913
  }
914
  }
915
+ ],
916
+ "params": [
917
+ {
918
  "default": null,
919
  "name": "accepted_regex",
920
  "type": {
921
  "type": "<class 'str'>"
922
  }
923
  },
924
+ {
925
+ "default": 100,
926
  "name": "max_tokens",
927
  "type": {
928
  "type": "<class 'int'>"
929
  }
930
  }
931
+ ],
 
 
 
 
932
  "type": "basic"
933
  },
934
  "params": {
 
956
  "error": "Error code: 400 - {'error': {'message': 'Unrecognized request argument supplied: regex', 'type': 'invalid_request_error', 'param': None, 'code': None}}",
957
  "input_metadata": null,
958
  "meta": {
959
+ "color": "orange",
960
+ "inputs": [
961
+ {
962
  "name": "input",
963
  "position": "left",
964
  "type": {
965
  "type": "<class 'inspect._empty'>"
966
  }
967
  }
968
+ ],
969
  "name": "Ask LLM",
970
+ "outputs": [
971
+ {
972
  "name": "output",
973
  "position": "right",
974
  "type": {
975
  "type": "None"
976
  }
977
  }
978
+ ],
979
+ "params": [
980
+ {
981
  "default": null,
982
  "name": "accepted_regex",
983
  "type": {
984
  "type": "<class 'str'>"
985
  }
986
  },
987
+ {
988
+ "default": 100,
989
  "name": "max_tokens",
990
  "type": {
991
  "type": "<class 'int'>"
992
  }
993
  }
994
+ ],
 
 
 
 
995
  "type": "basic"
996
  },
997
  "params": {
examples/Airlines demo.lynxkite.json CHANGED
The diff for this file is too large to render. See raw diff
 
examples/Bio Cypher demo.lynxkite.json CHANGED
@@ -1,236 +1,331 @@
1
  {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  "env": "LynxKite Graph Analytics",
3
  "nodes": [
4
  {
5
- "id": "Import CSV 1",
6
- "type": "basic",
7
  "data": {
8
- "title": "Import CSV",
9
- "params": {
10
- "filename": "uploads/drug_target_data_sample.csv",
11
- "separator": "<auto>",
12
- "columns": "<from file>"
13
- },
14
- "display": null,
15
- "error": null,
16
  "__execution_delay": 0.0,
17
  "collapsed": null,
 
 
 
18
  "meta": {
19
- "params": {
20
- "separator": {
21
- "default": "<auto>",
 
 
 
 
22
  "type": {
23
- "type": "<class 'str'>"
24
- },
25
- "name": "separator"
26
- },
27
- "filename": {
 
28
  "default": null,
 
29
  "type": {
30
  "type": "<class 'str'>"
31
- },
32
- "name": "filename"
33
  },
34
- "columns": {
35
- "name": "columns",
36
  "default": "<from file>",
 
37
  "type": {
38
  "type": "<class 'str'>"
39
  }
40
- }
41
- },
42
- "outputs": {
43
- "output": {
44
- "position": "right",
45
- "name": "output",
46
  "type": {
47
- "type": "None"
48
  }
49
  }
50
- },
51
- "type": "basic",
52
- "inputs": {},
53
- "name": "Import CSV"
54
- }
 
 
 
 
 
55
  },
 
 
 
56
  "position": {
57
  "x": 300.92214591096035,
58
  "y": 1018.8292637889027
59
  },
60
- "width": 200.0,
61
- "height": 200.0
62
  },
63
  {
64
- "id": "Parse SMILES 1",
65
- "type": "basic",
66
  "data": {
67
- "title": "Parse SMILES",
68
- "params": {
69
- "smiles_column": "SMILES",
70
- "table": "df",
71
- "save_as": "mols"
72
- },
73
  "display": null,
74
  "error": null,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
75
  "meta": {
 
 
 
 
 
 
 
 
 
 
76
  "name": "Parse SMILES",
77
- "type": "basic",
78
- "params": {
79
- "table": {
 
 
 
 
 
 
 
 
80
  "default": "df",
81
  "name": "table",
82
  "type": {
83
  "type": "<class 'str'>"
84
  }
85
  },
86
- "smiles_column": {
87
- "name": "smiles_column",
88
  "default": "SMILES",
 
89
  "type": {
90
  "type": "<class 'str'>"
91
  }
92
  },
93
- "save_as": {
 
94
  "name": "save_as",
95
  "type": {
96
  "type": "<class 'str'>"
97
- },
98
- "default": "mols"
99
- }
100
- },
101
- "inputs": {
102
- "bundle": {
103
- "name": "bundle",
104
- "type": {
105
- "type": "<class 'lynxkite_graph_analytics.lynxkite_ops.Bundle'>"
106
- },
107
- "position": "left"
108
- }
109
- },
110
- "outputs": {
111
- "output": {
112
- "position": "right",
113
- "type": {
114
- "type": "None"
115
- },
116
- "name": "output"
117
  }
118
- }
119
- }
 
 
 
 
 
 
 
 
120
  },
 
 
 
121
  "position": {
122
  "x": 580.5892989328847,
123
  "y": 1012.8823965480503
124
  },
125
- "width": 200.0,
126
- "height": 200.0
127
  },
128
  {
129
- "id": "Graph from molecule similarity 1",
130
- "type": "basic",
131
  "data": {
132
- "title": "Graph from molecule similarity",
133
- "params": {
134
- "table": "df",
135
- "average_degree": "3",
136
- "mols_column": "mols"
137
- },
138
  "display": null,
139
  "error": null,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
140
  "meta": {
141
- "inputs": {
142
- "bundle": {
143
- "position": "left",
144
  "name": "bundle",
 
145
  "type": {
146
- "type": "<class 'lynxkite_graph_analytics.lynxkite_ops.Bundle'>"
147
  }
148
  }
149
- },
150
- "outputs": {
151
- "output": {
 
 
 
152
  "type": {
153
  "type": "None"
154
- },
155
- "position": "right",
156
- "name": "output"
157
  }
158
- },
159
- "type": "basic",
160
- "name": "Graph from molecule similarity",
161
- "params": {
162
- "average_degree": {
163
- "default": 10.0,
164
- "type": {
165
- "type": "<class 'int'>"
166
- },
167
- "name": "average_degree"
168
- },
169
- "table": {
170
  "default": "df",
171
  "name": "table",
172
  "type": {
173
  "type": "<class 'str'>"
174
  }
175
  },
176
- "mols_column": {
177
  "default": "mols",
178
  "name": "mols_column",
179
  "type": {
180
  "type": "<class 'str'>"
181
  }
 
 
 
 
 
 
 
182
  }
183
- }
 
184
  },
185
- "collapsed": null,
186
- "__execution_delay": 0.0
 
 
 
 
 
187
  },
 
 
 
188
  "position": {
189
  "x": 926.4337192214458,
190
  "y": 1014.4451876264845
191
  },
192
- "height": 200.0,
193
  "width": 200.0
194
  },
195
  {
196
- "id": "Visualize graph 1",
197
- "type": "visualization",
198
  "data": {
199
- "title": "Visualize graph",
200
- "params": {
201
- "color_nodes_by": "ORGANISM",
202
- "label_by": "DRUG_NAME",
203
- "color_edges_by": "similarity"
204
- },
205
  "display": {
206
  "animationDuration": 500,
207
  "animationEasingUpdate": "quinticInOut",
208
- "tooltip": {
209
- "show": true
210
- },
211
  "series": [
212
  {
213
- "type": "graph",
214
- "lineStyle": {
215
- "color": "gray",
216
- "curveness": 0.3
217
- },
218
- "emphasis": {
219
- "focus": "adjacency",
220
- "lineStyle": {
221
- "width": 10
222
- }
223
- },
224
- "label": {
225
- "position": "top",
226
- "formatter": "{b}"
227
- },
228
  "data": [
229
  {
230
  "id": "0",
231
- "x": -0.13734854736037372,
232
- "y": 0.0003840689616843064,
233
- "symbolSize": 22.360679774997894,
234
  "itemStyle": {
235
  "color": "#a6cee3"
236
  },
@@ -238,13 +333,13 @@
238
  "show": true
239
  },
240
  "name": "phencyclidine",
241
- "value": "Torpedo californica"
 
 
 
242
  },
243
  {
244
  "id": "1",
245
- "x": 0.4859426303201164,
246
- "y": -0.09785193844993345,
247
- "symbolSize": 22.360679774997894,
248
  "itemStyle": {
249
  "color": "#1f78b4"
250
  },
@@ -252,13 +347,13 @@
252
  "show": true
253
  },
254
  "name": "triazolam",
255
- "value": "Homo sapiens"
 
 
 
256
  },
257
  {
258
  "id": "2",
259
- "x": -0.36490537596845657,
260
- "y": 0.655747709585604,
261
- "symbolSize": 22.360679774997894,
262
  "itemStyle": {
263
  "color": "#1f78b4"
264
  },
@@ -266,13 +361,13 @@
266
  "show": true
267
  },
268
  "name": "gentian violet",
269
- "value": "Homo sapiens"
 
 
 
270
  },
271
  {
272
  "id": "3",
273
- "x": 0.8039553347691868,
274
- "y": 0.44172015990267444,
275
- "symbolSize": 22.360679774997894,
276
  "itemStyle": {
277
  "color": "#1f78b4"
278
  },
@@ -280,13 +375,13 @@
280
  "show": true
281
  },
282
  "name": "ipratropium",
283
- "value": "Homo sapiens"
 
 
 
284
  },
285
  {
286
  "id": "4",
287
- "x": -0.7876440417604583,
288
- "y": -1.0,
289
- "symbolSize": 22.360679774997894,
290
  "itemStyle": {
291
  "color": "#1f78b4"
292
  },
@@ -294,217 +389,350 @@
294
  "show": true
295
  },
296
  "name": "deoxycholic acid",
297
- "value": "Homo sapiens"
 
 
 
298
  }
299
  ],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
300
  "links": [
301
  {
302
- "source": "3",
303
- "target": "4",
304
  "lineStyle": {
305
  "color": "#440154"
306
  },
307
- "value": 0.8481012658227848
 
 
308
  },
309
  {
310
- "source": "0",
311
- "target": "1",
312
  "lineStyle": {
313
  "color": "#3a538b"
314
  },
315
- "value": 0.8813559322033898
 
 
316
  },
317
  {
318
- "source": "0",
319
- "target": "4",
320
  "lineStyle": {
321
  "color": "#3a538b"
322
  },
323
- "value": 0.8813559322033898
 
 
324
  },
325
  {
326
- "source": "0",
327
- "target": "3",
328
  "lineStyle": {
329
  "color": "#26818e"
330
  },
331
- "value": 0.9047619047619048
 
 
332
  },
333
  {
334
- "source": "1",
335
- "target": "2",
336
  "lineStyle": {
337
  "color": "#23898d"
338
  },
339
- "value": 0.9090909090909091
 
 
340
  },
341
  {
342
- "source": "1",
343
- "target": "3",
344
  "lineStyle": {
345
  "color": "#1ea087"
346
  },
347
- "value": 0.921875
 
 
348
  },
349
  {
350
- "source": "0",
351
- "target": "2",
352
  "lineStyle": {
353
  "color": "#3ebc73"
354
  },
355
- "value": 0.9375
 
 
356
  },
357
  {
358
- "source": "1",
359
- "target": "4",
360
  "lineStyle": {
361
  "color": "#4fc369"
362
  },
363
- "value": 0.9420289855072463
 
 
364
  },
365
  {
366
- "source": "2",
367
- "target": "4",
368
  "lineStyle": {
369
  "color": "#9fd938"
370
  },
371
- "value": 0.9589041095890412
 
 
372
  },
373
  {
374
- "source": "2",
375
- "target": "3",
376
  "lineStyle": {
377
  "color": "#fde724"
378
  },
379
- "value": 0.9775280898876404
 
 
380
  }
381
- ]
 
382
  }
383
- ]
 
 
 
384
  },
385
  "error": null,
386
- "__execution_delay": 0.0,
387
- "collapsed": null,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
388
  "meta": {
389
- "params": {
390
- "label_by": {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
391
  "type": {
392
  "format": "node attribute"
393
- },
394
- "name": "label_by",
395
- "default": null
396
  },
397
- "color_nodes_by": {
 
 
398
  "type": {
399
  "format": "node attribute"
400
- },
401
- "name": "color_nodes_by",
402
- "default": null
403
  },
404
- "color_edges_by": {
 
405
  "name": "color_edges_by",
406
  "type": {
407
  "format": "edge attribute"
408
- },
409
- "default": null
410
- }
411
- },
412
- "inputs": {
413
- "graph": {
414
- "type": {
415
- "type": "<class 'lynxkite_graph_analytics.lynxkite_ops.Bundle'>"
416
- },
417
- "name": "graph",
418
- "position": "left"
419
  }
420
- },
421
- "outputs": {},
422
- "position": {
423
- "y": 167.0,
424
- "x": 883.0
425
- },
426
- "type": "visualization",
427
- "name": "Visualize graph"
428
- }
 
429
  },
 
 
 
430
  "position": {
431
  "x": 1254.2277640235457,
432
  "y": 931.9705991370125
433
  },
434
- "height": 314.0,
435
  "width": 407.0
436
  },
437
  {
438
- "id": "Cypher 1",
439
- "type": "basic",
440
  "data": {
441
- "title": "Cypher",
442
- "params": {
443
- "save_as": "result",
444
- "query": "MATCH\n (a {ORGANISM: \"Homo sapiens\"})\n -[r]->\n (b {ORGANISM: \"Homo sapiens\"})\nWHERE\n r.similarity > 0.9\nRETURN a.DRUG_NAME, b.DRUG_NAME"
445
- },
446
  "display": null,
447
  "error": null,
448
- "meta": {
449
- "outputs": {
450
- "output": {
451
- "type": {
452
- "type": "None"
 
 
 
 
453
  },
454
- "name": "output",
455
- "position": "right"
456
- }
457
- },
458
- "inputs": {
459
- "bundle": {
460
- "position": "left",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
461
  "name": "bundle",
 
462
  "type": {
463
- "type": "<class 'lynxkite_graph_analytics.lynxkite_ops.Bundle'>"
464
  }
465
  }
466
- },
467
  "name": "Cypher",
468
- "params": {
469
- "query": {
 
 
 
 
 
 
 
 
 
470
  "default": null,
471
  "name": "query",
472
  "type": {
473
  "format": "textarea"
474
  }
475
  },
476
- "save_as": {
 
 
477
  "type": {
478
  "type": "<class 'str'>"
479
- },
480
- "default": "result",
481
- "name": "save_as"
482
  }
483
- },
484
- "type": "basic",
485
- "position": {
486
- "x": 638.0,
487
- "y": 577.0
488
- }
489
  },
490
- "collapsed": null,
491
- "__execution_delay": 0.0
 
 
 
 
492
  },
 
 
 
493
  "position": {
494
  "x": 1209.2024653849007,
495
  "y": 1567.9825632648467
496
  },
497
- "height": 267.0,
498
  "width": 434.0
499
  },
500
  {
501
- "id": "View tables 1",
502
- "type": "table_view",
503
  "data": {
504
- "title": "View tables",
505
- "params": {
506
- "limit": 100.0
507
- },
508
  "display": {
509
  "dataframes": {
510
  "edges": {
@@ -606,14 +834,14 @@
606
  "CHRNA1",
607
  "ACHA_TORCA",
608
  6.66,
609
- null,
610
  "IC50",
611
  "Displacement of [3H]PCP from nAChR in Torpedo nobiliana electric organs membranes in presence of 100 uM carbachol by scintillation counting method",
612
  "CHEMBL",
613
  "=",
614
- null,
615
  "nan",
616
- null,
617
  "nan",
618
  "nan",
619
  "nan",
@@ -622,7 +850,7 @@
622
  "InChI=1S/C17H25N/c1-4-10-16(11-5-1)17(12-6-2-7-13-17)18-14-8-3-9-15-18/h1,4-5,10-11H,2-3,6-9,12-15H2",
623
  "JTJMJGYZQZDUJJ-UHFFFAOYSA-N",
624
  "phencyclidine",
625
- "<rdkit.Chem.rdchem.Mol object at 0x74d424169e70>"
626
  ],
627
  [
628
  12934,
@@ -634,14 +862,14 @@
634
  "GABRG2|GABRA3|GABRB2",
635
  "GBRG2_HUMAN|GBRA3_HUMAN|GBRB2_HUMAN",
636
  8.876,
637
- null,
638
  "Ki",
639
  "nan",
640
  "WOMBAT-PK",
641
  "=",
642
  1.0,
643
  "CHEMBL",
644
- null,
645
  "https://www.ebi.ac.uk/chembl/compound/inspect/CHEMBL646",
646
  "POSITIVE ALLOSTERIC MODULATOR",
647
  "Tclin|Tclin|Tclin|Tclin|Tclin|Tclin|Tclin|Tclin|Tclin",
@@ -650,7 +878,7 @@
650
  "InChI=1S/C17H12Cl2N4/c1-10-21-22-16-9-20-17(12-4-2-3-5-14(12)19)13-8-11(18)6-7-15(13)23(10)16/h2-8H,9H2,1H3",
651
  "JOFWLTCLBGQGBO-UHFFFAOYSA-N",
652
  "triazolam",
653
- "<rdkit.Chem.rdchem.Mol object at 0x74d42416ab20>"
654
  ],
655
  [
656
  15266,
@@ -662,14 +890,14 @@
662
  "DRD2",
663
  "DRD2_HUMAN",
664
  5.975,
665
- null,
666
  "Ki",
667
  "DRUGMATRIX: Dopamine D2L radioligand binding (ligand: [3H] Spiperone)",
668
  "DRUG MATRIX",
669
  "=",
670
- null,
671
  "nan",
672
- null,
673
  "nan",
674
  "nan",
675
  "Tclin",
@@ -678,7 +906,7 @@
678
  "InChI=1S/C25H30N3/c1-26(2)22-13-7-19(8-14-22)25(20-9-15-23(16-10-20)27(3)4)21-11-17-24(18-12-21)28(5)6/h7-18H,1-6H3/q+1",
679
  "LGLFFNDHMLKUMI-UHFFFAOYSA-N",
680
  "gentian violet",
681
- "<rdkit.Chem.rdchem.Mol object at 0x74d424169070>"
682
  ],
683
  [
684
  6488,
@@ -690,14 +918,14 @@
690
  "CHRM1",
691
  "ACM1_HUMAN",
692
  9.31,
693
- null,
694
  "Ki",
695
  "nan",
696
  "WOMBAT-PK",
697
  "=",
698
- null,
699
  "nan",
700
- null,
701
  "nan",
702
  "nan",
703
  "Tclin",
@@ -706,7 +934,7 @@
706
  "InChI=1S/C20H30NO3/c1-14(2)21(3)16-9-10-17(21)12-18(11-16)24-20(23)19(13-22)15-7-5-4-6-8-15/h4-8,14,16-19,22H,9-13H2,1-3H3/q+1/t16-,17+,18+,19?,21?",
707
  "OEXHQOGQTVQTAT-BHIXFJMTSA-N",
708
  "ipratropium",
709
- "<rdkit.Chem.rdchem.Mol object at 0x74d42416a7a0>"
710
  ],
711
  [
712
  17453,
@@ -718,14 +946,14 @@
718
  "GPBAR1",
719
  "GPBAR_HUMAN",
720
  6.2,
721
- null,
722
  "EC50",
723
  "nan",
724
  "IUPHAR",
725
  "=",
726
- null,
727
  "nan",
728
- null,
729
  "nan",
730
  "AGONIST",
731
  "Tchem",
@@ -734,7 +962,7 @@
734
  "InChI=1S/C24H40O4/c1-14(4-9-22(27)28)18-7-8-19-17-6-5-15-12-16(25)10-11-23(15,2)20(17)13-21(26)24(18,19)3/h14-21,25-26H,4-13H2,1-3H3,(H,27,28)/t14-,15-,16-,17+,18-,19+,20+,21+,23+,24-/m1/s1",
735
  "KXGVEGMKQFWNSR-LLQZFEROSA-N",
736
  "deoxycholic acid",
737
- "<rdkit.Chem.rdchem.Mol object at 0x74d424168890>"
738
  ]
739
  ]
740
  },
@@ -767,91 +995,125 @@
767
  ]
768
  }
769
  },
 
770
  "relations": [
771
  {
772
  "df": "edges",
 
773
  "source_column": "source",
774
- "target_column": "target",
775
- "source_table": "nodes",
776
- "target_table": "nodes",
777
  "source_key": "id",
778
- "target_key": "id"
 
 
 
779
  }
780
- ],
781
- "other": null
782
  },
783
  "error": null,
784
- "meta": {
785
- "params": {
786
- "limit": {
787
- "default": 100.0,
788
- "name": "limit",
789
- "type": {
790
- "type": "<class 'int'>"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
791
  }
792
- }
793
- },
794
- "inputs": {
795
- "bundle": {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
796
  "name": "bundle",
797
  "position": "left",
798
  "type": {
799
- "type": "<class 'lynxkite_graph_analytics.lynxkite_ops.Bundle'>"
800
  }
801
  }
802
- },
803
- "position": {
804
- "x": 1183.0,
805
- "y": 534.0
806
- },
807
  "name": "View tables",
808
- "outputs": {},
 
 
 
 
 
 
 
 
 
809
  "type": "table_view"
810
- }
 
 
 
 
 
 
 
 
811
  },
 
 
 
812
  "position": {
813
  "x": 1817.1767094971015,
814
  "y": 1459.025582190881
815
  },
816
- "width": 322.0,
817
- "height": 295.0
818
- }
819
- ],
820
- "edges": [
821
- {
822
- "id": "Import CSV 1 Parse SMILES 1",
823
- "source": "Import CSV 1",
824
- "target": "Parse SMILES 1",
825
- "sourceHandle": "output",
826
- "targetHandle": "bundle"
827
- },
828
- {
829
- "id": "Parse SMILES 1 Graph from molecule similarity 1",
830
- "source": "Parse SMILES 1",
831
- "target": "Graph from molecule similarity 1",
832
- "sourceHandle": "output",
833
- "targetHandle": "bundle"
834
- },
835
- {
836
- "id": "Graph from molecule similarity 1 Visualize graph 1",
837
- "source": "Graph from molecule similarity 1",
838
- "target": "Visualize graph 1",
839
- "sourceHandle": "output",
840
- "targetHandle": "graph"
841
- },
842
- {
843
- "id": "Graph from molecule similarity 1 Cypher 1",
844
- "source": "Graph from molecule similarity 1",
845
- "target": "Cypher 1",
846
- "sourceHandle": "output",
847
- "targetHandle": "bundle"
848
- },
849
- {
850
- "id": "Cypher 1 View tables 1",
851
- "source": "Cypher 1",
852
- "target": "View tables 1",
853
- "sourceHandle": "output",
854
- "targetHandle": "bundle"
855
  }
856
  ]
857
  }
 
1
  {
2
+ "edges": [
3
+ {
4
+ "id": "Import CSV 1 Parse SMILES 1",
5
+ "source": "Import CSV 1",
6
+ "sourceHandle": "output",
7
+ "target": "Parse SMILES 1",
8
+ "targetHandle": "bundle"
9
+ },
10
+ {
11
+ "id": "Parse SMILES 1 Graph from molecule similarity 1",
12
+ "source": "Parse SMILES 1",
13
+ "sourceHandle": "output",
14
+ "target": "Graph from molecule similarity 1",
15
+ "targetHandle": "bundle"
16
+ },
17
+ {
18
+ "id": "Graph from molecule similarity 1 Visualize graph 1",
19
+ "source": "Graph from molecule similarity 1",
20
+ "sourceHandle": "output",
21
+ "target": "Visualize graph 1",
22
+ "targetHandle": "graph"
23
+ },
24
+ {
25
+ "id": "Graph from molecule similarity 1 Cypher 1",
26
+ "source": "Graph from molecule similarity 1",
27
+ "sourceHandle": "output",
28
+ "target": "Cypher 1",
29
+ "targetHandle": "bundle"
30
+ },
31
+ {
32
+ "id": "Cypher 1 View tables 1",
33
+ "source": "Cypher 1",
34
+ "sourceHandle": "output",
35
+ "target": "View tables 1",
36
+ "targetHandle": "bundle"
37
+ }
38
+ ],
39
  "env": "LynxKite Graph Analytics",
40
  "nodes": [
41
  {
 
 
42
  "data": {
 
 
 
 
 
 
 
 
43
  "__execution_delay": 0.0,
44
  "collapsed": null,
45
+ "display": null,
46
+ "error": null,
47
+ "input_metadata": [],
48
  "meta": {
49
+ "color": "orange",
50
+ "inputs": [],
51
+ "name": "Import CSV",
52
+ "outputs": [
53
+ {
54
+ "name": "output",
55
+ "position": "right",
56
  "type": {
57
+ "type": "None"
58
+ }
59
+ }
60
+ ],
61
+ "params": [
62
+ {
63
  "default": null,
64
+ "name": "filename",
65
  "type": {
66
  "type": "<class 'str'>"
67
+ }
 
68
  },
69
+ {
 
70
  "default": "<from file>",
71
+ "name": "columns",
72
  "type": {
73
  "type": "<class 'str'>"
74
  }
75
+ },
76
+ {
77
+ "default": "<auto>",
78
+ "name": "separator",
 
 
79
  "type": {
80
+ "type": "<class 'str'>"
81
  }
82
  }
83
+ ],
84
+ "type": "basic"
85
+ },
86
+ "params": {
87
+ "columns": "<from file>",
88
+ "filename": "uploads/drug_target_data_sample.csv",
89
+ "separator": "<auto>"
90
+ },
91
+ "status": "done",
92
+ "title": "Import CSV"
93
  },
94
+ "dragHandle": ".bg-primary",
95
+ "height": 200.0,
96
+ "id": "Import CSV 1",
97
  "position": {
98
  "x": 300.92214591096035,
99
  "y": 1018.8292637889027
100
  },
101
+ "type": "basic",
102
+ "width": 200.0
103
  },
104
  {
 
 
105
  "data": {
 
 
 
 
 
 
106
  "display": null,
107
  "error": null,
108
+ "input_metadata": [
109
+ {
110
+ "dataframes": {
111
+ "df": {
112
+ "columns": [
113
+ "ACCESSION",
114
+ "ACTION_TYPE",
115
+ "ACT_COMMENT",
116
+ "ACT_SOURCE",
117
+ "ACT_SOURCE_URL",
118
+ "ACT_TYPE",
119
+ "ACT_UNIT",
120
+ "ACT_VALUE",
121
+ "DRUG_NAME",
122
+ "GENE",
123
+ "INN",
124
+ "InChI",
125
+ "InChIKey",
126
+ "MOA",
127
+ "MOA_SOURCE",
128
+ "MOA_SOURCE_URL",
129
+ "ORGANISM",
130
+ "RELATION",
131
+ "SMILES",
132
+ "STRUCT_ID",
133
+ "SWISSPROT",
134
+ "TARGET_CLASS",
135
+ "TARGET_NAME",
136
+ "TDL",
137
+ "Unnamed: 0"
138
+ ]
139
+ }
140
+ },
141
+ "other": {},
142
+ "relations": []
143
+ }
144
+ ],
145
  "meta": {
146
+ "color": "orange",
147
+ "inputs": [
148
+ {
149
+ "name": "bundle",
150
+ "position": "left",
151
+ "type": {
152
+ "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
153
+ }
154
+ }
155
+ ],
156
  "name": "Parse SMILES",
157
+ "outputs": [
158
+ {
159
+ "name": "output",
160
+ "position": "right",
161
+ "type": {
162
+ "type": "None"
163
+ }
164
+ }
165
+ ],
166
+ "params": [
167
+ {
168
  "default": "df",
169
  "name": "table",
170
  "type": {
171
  "type": "<class 'str'>"
172
  }
173
  },
174
+ {
 
175
  "default": "SMILES",
176
+ "name": "smiles_column",
177
  "type": {
178
  "type": "<class 'str'>"
179
  }
180
  },
181
+ {
182
+ "default": "mols",
183
  "name": "save_as",
184
  "type": {
185
  "type": "<class 'str'>"
186
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
187
  }
188
+ ],
189
+ "type": "basic"
190
+ },
191
+ "params": {
192
+ "save_as": "mols",
193
+ "smiles_column": "SMILES",
194
+ "table": "df"
195
+ },
196
+ "status": "done",
197
+ "title": "Parse SMILES"
198
  },
199
+ "dragHandle": ".bg-primary",
200
+ "height": 200.0,
201
+ "id": "Parse SMILES 1",
202
  "position": {
203
  "x": 580.5892989328847,
204
  "y": 1012.8823965480503
205
  },
206
+ "type": "basic",
207
+ "width": 200.0
208
  },
209
  {
 
 
210
  "data": {
211
+ "__execution_delay": 0.0,
212
+ "collapsed": null,
 
 
 
 
213
  "display": null,
214
  "error": null,
215
+ "input_metadata": [
216
+ {
217
+ "dataframes": {
218
+ "df": {
219
+ "columns": [
220
+ "ACCESSION",
221
+ "ACTION_TYPE",
222
+ "ACT_COMMENT",
223
+ "ACT_SOURCE",
224
+ "ACT_SOURCE_URL",
225
+ "ACT_TYPE",
226
+ "ACT_UNIT",
227
+ "ACT_VALUE",
228
+ "DRUG_NAME",
229
+ "GENE",
230
+ "INN",
231
+ "InChI",
232
+ "InChIKey",
233
+ "MOA",
234
+ "MOA_SOURCE",
235
+ "MOA_SOURCE_URL",
236
+ "ORGANISM",
237
+ "RELATION",
238
+ "SMILES",
239
+ "STRUCT_ID",
240
+ "SWISSPROT",
241
+ "TARGET_CLASS",
242
+ "TARGET_NAME",
243
+ "TDL",
244
+ "Unnamed: 0",
245
+ "mols"
246
+ ]
247
+ }
248
+ },
249
+ "other": {},
250
+ "relations": []
251
+ }
252
+ ],
253
  "meta": {
254
+ "color": "orange",
255
+ "inputs": [
256
+ {
257
  "name": "bundle",
258
+ "position": "left",
259
  "type": {
260
+ "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
261
  }
262
  }
263
+ ],
264
+ "name": "Graph from molecule similarity",
265
+ "outputs": [
266
+ {
267
+ "name": "output",
268
+ "position": "right",
269
  "type": {
270
  "type": "None"
271
+ }
 
 
272
  }
273
+ ],
274
+ "params": [
275
+ {
 
 
 
 
 
 
 
 
 
276
  "default": "df",
277
  "name": "table",
278
  "type": {
279
  "type": "<class 'str'>"
280
  }
281
  },
282
+ {
283
  "default": "mols",
284
  "name": "mols_column",
285
  "type": {
286
  "type": "<class 'str'>"
287
  }
288
+ },
289
+ {
290
+ "default": 10,
291
+ "name": "average_degree",
292
+ "type": {
293
+ "type": "<class 'int'>"
294
+ }
295
  }
296
+ ],
297
+ "type": "basic"
298
  },
299
+ "params": {
300
+ "average_degree": "3",
301
+ "mols_column": "mols",
302
+ "table": "df"
303
+ },
304
+ "status": "done",
305
+ "title": "Graph from molecule similarity"
306
  },
307
+ "dragHandle": ".bg-primary",
308
+ "height": 200.0,
309
+ "id": "Graph from molecule similarity 1",
310
  "position": {
311
  "x": 926.4337192214458,
312
  "y": 1014.4451876264845
313
  },
314
+ "type": "basic",
315
  "width": 200.0
316
  },
317
  {
 
 
318
  "data": {
319
+ "__execution_delay": 0.0,
320
+ "collapsed": null,
 
 
 
 
321
  "display": {
322
  "animationDuration": 500,
323
  "animationEasingUpdate": "quinticInOut",
 
 
 
324
  "series": [
325
  {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
326
  "data": [
327
  {
328
  "id": "0",
 
 
 
329
  "itemStyle": {
330
  "color": "#a6cee3"
331
  },
 
333
  "show": true
334
  },
335
  "name": "phencyclidine",
336
+ "symbolSize": 22.360679774997894,
337
+ "value": "Torpedo californica",
338
+ "x": 0.10782539581500938,
339
+ "y": -0.23839701129914528
340
  },
341
  {
342
  "id": "1",
 
 
 
343
  "itemStyle": {
344
  "color": "#1f78b4"
345
  },
 
347
  "show": true
348
  },
349
  "name": "triazolam",
350
+ "symbolSize": 22.360679774997894,
351
+ "value": "Homo sapiens",
352
+ "x": -0.10748868396434766,
353
+ "y": 0.19422487376381423
354
  },
355
  {
356
  "id": "2",
 
 
 
357
  "itemStyle": {
358
  "color": "#1f78b4"
359
  },
 
361
  "show": true
362
  },
363
  "name": "gentian violet",
364
+ "symbolSize": 22.360679774997894,
365
+ "value": "Homo sapiens",
366
+ "x": 0.32091925175898867,
367
+ "y": 0.37711363327258846
368
  },
369
  {
370
  "id": "3",
 
 
 
371
  "itemStyle": {
372
  "color": "#1f78b4"
373
  },
 
375
  "show": true
376
  },
377
  "name": "ipratropium",
378
+ "symbolSize": 22.360679774997894,
379
+ "value": "Homo sapiens",
380
+ "x": 0.6787440363904107,
381
+ "y": -0.24483461144842011
382
  },
383
  {
384
  "id": "4",
 
 
 
385
  "itemStyle": {
386
  "color": "#1f78b4"
387
  },
 
389
  "show": true
390
  },
391
  "name": "deoxycholic acid",
392
+ "symbolSize": 22.360679774997894,
393
+ "value": "Homo sapiens",
394
+ "x": -1.0,
395
+ "y": -0.08810688428883728
396
  }
397
  ],
398
+ "emphasis": {
399
+ "focus": "adjacency",
400
+ "lineStyle": {
401
+ "width": 10
402
+ }
403
+ },
404
+ "label": {
405
+ "formatter": "{b}",
406
+ "position": "top"
407
+ },
408
+ "lineStyle": {
409
+ "color": "gray",
410
+ "curveness": 0.3
411
+ },
412
  "links": [
413
  {
 
 
414
  "lineStyle": {
415
  "color": "#440154"
416
  },
417
+ "source": "3",
418
+ "target": "4",
419
+ "value": "0.8481012658227848"
420
  },
421
  {
 
 
422
  "lineStyle": {
423
  "color": "#3a538b"
424
  },
425
+ "source": "0",
426
+ "target": "1",
427
+ "value": "0.8813559322033898"
428
  },
429
  {
 
 
430
  "lineStyle": {
431
  "color": "#3a538b"
432
  },
433
+ "source": "0",
434
+ "target": "4",
435
+ "value": "0.8813559322033898"
436
  },
437
  {
 
 
438
  "lineStyle": {
439
  "color": "#26818e"
440
  },
441
+ "source": "0",
442
+ "target": "3",
443
+ "value": "0.9047619047619048"
444
  },
445
  {
 
 
446
  "lineStyle": {
447
  "color": "#23898d"
448
  },
449
+ "source": "1",
450
+ "target": "2",
451
+ "value": "0.9090909090909091"
452
  },
453
  {
 
 
454
  "lineStyle": {
455
  "color": "#1ea087"
456
  },
457
+ "source": "1",
458
+ "target": "3",
459
+ "value": "0.921875"
460
  },
461
  {
 
 
462
  "lineStyle": {
463
  "color": "#3ebc73"
464
  },
465
+ "source": "0",
466
+ "target": "2",
467
+ "value": "0.9375"
468
  },
469
  {
 
 
470
  "lineStyle": {
471
  "color": "#4fc369"
472
  },
473
+ "source": "1",
474
+ "target": "4",
475
+ "value": "0.9420289855072463"
476
  },
477
  {
 
 
478
  "lineStyle": {
479
  "color": "#9fd938"
480
  },
481
+ "source": "2",
482
+ "target": "4",
483
+ "value": "0.9589041095890412"
484
  },
485
  {
 
 
486
  "lineStyle": {
487
  "color": "#fde724"
488
  },
489
+ "source": "2",
490
+ "target": "3",
491
+ "value": "0.9775280898876404"
492
  }
493
+ ],
494
+ "type": "graph"
495
  }
496
+ ],
497
+ "tooltip": {
498
+ "show": true
499
+ }
500
  },
501
  "error": null,
502
+ "input_metadata": [
503
+ {
504
+ "dataframes": {
505
+ "edges": {
506
+ "columns": [
507
+ "similarity",
508
+ "source",
509
+ "target"
510
+ ]
511
+ },
512
+ "nodes": {
513
+ "columns": [
514
+ "ACCESSION",
515
+ "ACTION_TYPE",
516
+ "ACT_COMMENT",
517
+ "ACT_SOURCE",
518
+ "ACT_SOURCE_URL",
519
+ "ACT_TYPE",
520
+ "ACT_UNIT",
521
+ "ACT_VALUE",
522
+ "DRUG_NAME",
523
+ "GENE",
524
+ "INN",
525
+ "InChI",
526
+ "InChIKey",
527
+ "MOA",
528
+ "MOA_SOURCE",
529
+ "MOA_SOURCE_URL",
530
+ "ORGANISM",
531
+ "RELATION",
532
+ "SMILES",
533
+ "STRUCT_ID",
534
+ "SWISSPROT",
535
+ "TARGET_CLASS",
536
+ "TARGET_NAME",
537
+ "TDL",
538
+ "Unnamed: 0",
539
+ "mols"
540
+ ]
541
+ }
542
+ },
543
+ "other": {},
544
+ "relations": [
545
+ {
546
+ "df": "edges",
547
+ "name": null,
548
+ "source_column": "source",
549
+ "source_key": "id",
550
+ "source_table": "nodes",
551
+ "target_column": "target",
552
+ "target_key": "id",
553
+ "target_table": "nodes"
554
+ }
555
+ ]
556
+ }
557
+ ],
558
  "meta": {
559
+ "color": "orange",
560
+ "inputs": [
561
+ {
562
+ "name": "graph",
563
+ "position": "left",
564
+ "type": {
565
+ "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
566
+ }
567
+ }
568
+ ],
569
+ "name": "Visualize graph",
570
+ "outputs": [],
571
+ "params": [
572
+ {
573
+ "default": null,
574
+ "name": "color_nodes_by",
575
  "type": {
576
  "format": "node attribute"
577
+ }
 
 
578
  },
579
+ {
580
+ "default": null,
581
+ "name": "label_by",
582
  "type": {
583
  "format": "node attribute"
584
+ }
 
 
585
  },
586
+ {
587
+ "default": null,
588
  "name": "color_edges_by",
589
  "type": {
590
  "format": "edge attribute"
591
+ }
 
 
 
 
 
 
 
 
 
 
592
  }
593
+ ],
594
+ "type": "visualization"
595
+ },
596
+ "params": {
597
+ "color_edges_by": "similarity",
598
+ "color_nodes_by": "ORGANISM",
599
+ "label_by": "DRUG_NAME"
600
+ },
601
+ "status": "done",
602
+ "title": "Visualize graph"
603
  },
604
+ "dragHandle": ".bg-primary",
605
+ "height": 314.0,
606
+ "id": "Visualize graph 1",
607
  "position": {
608
  "x": 1254.2277640235457,
609
  "y": 931.9705991370125
610
  },
611
+ "type": "visualization",
612
  "width": 407.0
613
  },
614
  {
 
 
615
  "data": {
616
+ "__execution_delay": 0.0,
617
+ "collapsed": null,
 
 
 
618
  "display": null,
619
  "error": null,
620
+ "input_metadata": [
621
+ {
622
+ "dataframes": {
623
+ "edges": {
624
+ "columns": [
625
+ "similarity",
626
+ "source",
627
+ "target"
628
+ ]
629
  },
630
+ "nodes": {
631
+ "columns": [
632
+ "ACCESSION",
633
+ "ACTION_TYPE",
634
+ "ACT_COMMENT",
635
+ "ACT_SOURCE",
636
+ "ACT_SOURCE_URL",
637
+ "ACT_TYPE",
638
+ "ACT_UNIT",
639
+ "ACT_VALUE",
640
+ "DRUG_NAME",
641
+ "GENE",
642
+ "INN",
643
+ "InChI",
644
+ "InChIKey",
645
+ "MOA",
646
+ "MOA_SOURCE",
647
+ "MOA_SOURCE_URL",
648
+ "ORGANISM",
649
+ "RELATION",
650
+ "SMILES",
651
+ "STRUCT_ID",
652
+ "SWISSPROT",
653
+ "TARGET_CLASS",
654
+ "TARGET_NAME",
655
+ "TDL",
656
+ "Unnamed: 0",
657
+ "mols"
658
+ ]
659
+ }
660
+ },
661
+ "other": {},
662
+ "relations": [
663
+ {
664
+ "df": "edges",
665
+ "name": null,
666
+ "source_column": "source",
667
+ "source_key": "id",
668
+ "source_table": "nodes",
669
+ "target_column": "target",
670
+ "target_key": "id",
671
+ "target_table": "nodes"
672
+ }
673
+ ]
674
+ }
675
+ ],
676
+ "meta": {
677
+ "color": "orange",
678
+ "inputs": [
679
+ {
680
  "name": "bundle",
681
+ "position": "left",
682
  "type": {
683
+ "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
684
  }
685
  }
686
+ ],
687
  "name": "Cypher",
688
+ "outputs": [
689
+ {
690
+ "name": "output",
691
+ "position": "right",
692
+ "type": {
693
+ "type": "None"
694
+ }
695
+ }
696
+ ],
697
+ "params": [
698
+ {
699
  "default": null,
700
  "name": "query",
701
  "type": {
702
  "format": "textarea"
703
  }
704
  },
705
+ {
706
+ "default": "result",
707
+ "name": "save_as",
708
  "type": {
709
  "type": "<class 'str'>"
710
+ }
 
 
711
  }
712
+ ],
713
+ "type": "basic"
 
 
 
 
714
  },
715
+ "params": {
716
+ "query": "MATCH\n (a {ORGANISM: \"Homo sapiens\"})\n -[r]->\n (b {ORGANISM: \"Homo sapiens\"})\nWHERE\n r.similarity > 0.9\nRETURN a.DRUG_NAME, b.DRUG_NAME",
717
+ "save_as": "result"
718
+ },
719
+ "status": "done",
720
+ "title": "Cypher"
721
  },
722
+ "dragHandle": ".bg-primary",
723
+ "height": 267.0,
724
+ "id": "Cypher 1",
725
  "position": {
726
  "x": 1209.2024653849007,
727
  "y": 1567.9825632648467
728
  },
729
+ "type": "basic",
730
  "width": 434.0
731
  },
732
  {
 
 
733
  "data": {
734
+ "__execution_delay": null,
735
+ "collapsed": null,
 
 
736
  "display": {
737
  "dataframes": {
738
  "edges": {
 
834
  "CHRNA1",
835
  "ACHA_TORCA",
836
  6.66,
837
+ NaN,
838
  "IC50",
839
  "Displacement of [3H]PCP from nAChR in Torpedo nobiliana electric organs membranes in presence of 100 uM carbachol by scintillation counting method",
840
  "CHEMBL",
841
  "=",
842
+ NaN,
843
  "nan",
844
+ NaN,
845
  "nan",
846
  "nan",
847
  "nan",
 
850
  "InChI=1S/C17H25N/c1-4-10-16(11-5-1)17(12-6-2-7-13-17)18-14-8-3-9-15-18/h1,4-5,10-11H,2-3,6-9,12-15H2",
851
  "JTJMJGYZQZDUJJ-UHFFFAOYSA-N",
852
  "phencyclidine",
853
+ "<rdkit.Chem.rdchem.Mol object at 0x70fb3f748120>"
854
  ],
855
  [
856
  12934,
 
862
  "GABRG2|GABRA3|GABRB2",
863
  "GBRG2_HUMAN|GBRA3_HUMAN|GBRB2_HUMAN",
864
  8.876,
865
+ NaN,
866
  "Ki",
867
  "nan",
868
  "WOMBAT-PK",
869
  "=",
870
  1.0,
871
  "CHEMBL",
872
+ NaN,
873
  "https://www.ebi.ac.uk/chembl/compound/inspect/CHEMBL646",
874
  "POSITIVE ALLOSTERIC MODULATOR",
875
  "Tclin|Tclin|Tclin|Tclin|Tclin|Tclin|Tclin|Tclin|Tclin",
 
878
  "InChI=1S/C17H12Cl2N4/c1-10-21-22-16-9-20-17(12-4-2-3-5-14(12)19)13-8-11(18)6-7-15(13)23(10)16/h2-8H,9H2,1H3",
879
  "JOFWLTCLBGQGBO-UHFFFAOYSA-N",
880
  "triazolam",
881
+ "<rdkit.Chem.rdchem.Mol object at 0x70fb3f748430>"
882
  ],
883
  [
884
  15266,
 
890
  "DRD2",
891
  "DRD2_HUMAN",
892
  5.975,
893
+ NaN,
894
  "Ki",
895
  "DRUGMATRIX: Dopamine D2L radioligand binding (ligand: [3H] Spiperone)",
896
  "DRUG MATRIX",
897
  "=",
898
+ NaN,
899
  "nan",
900
+ NaN,
901
  "nan",
902
  "nan",
903
  "Tclin",
 
906
  "InChI=1S/C25H30N3/c1-26(2)22-13-7-19(8-14-22)25(20-9-15-23(16-10-20)27(3)4)21-11-17-24(18-12-21)28(5)6/h7-18H,1-6H3/q+1",
907
  "LGLFFNDHMLKUMI-UHFFFAOYSA-N",
908
  "gentian violet",
909
+ "<rdkit.Chem.rdchem.Mol object at 0x70fb3f7483c0>"
910
  ],
911
  [
912
  6488,
 
918
  "CHRM1",
919
  "ACM1_HUMAN",
920
  9.31,
921
+ NaN,
922
  "Ki",
923
  "nan",
924
  "WOMBAT-PK",
925
  "=",
926
+ NaN,
927
  "nan",
928
+ NaN,
929
  "nan",
930
  "nan",
931
  "Tclin",
 
934
  "InChI=1S/C20H30NO3/c1-14(2)21(3)16-9-10-17(21)12-18(11-16)24-20(23)19(13-22)15-7-5-4-6-8-15/h4-8,14,16-19,22H,9-13H2,1-3H3/q+1/t16-,17+,18+,19?,21?",
935
  "OEXHQOGQTVQTAT-BHIXFJMTSA-N",
936
  "ipratropium",
937
+ "<rdkit.Chem.rdchem.Mol object at 0x70fb3f7484a0>"
938
  ],
939
  [
940
  17453,
 
946
  "GPBAR1",
947
  "GPBAR_HUMAN",
948
  6.2,
949
+ NaN,
950
  "EC50",
951
  "nan",
952
  "IUPHAR",
953
  "=",
954
+ NaN,
955
  "nan",
956
+ NaN,
957
  "nan",
958
  "AGONIST",
959
  "Tchem",
 
962
  "InChI=1S/C24H40O4/c1-14(4-9-22(27)28)18-7-8-19-17-6-5-15-12-16(25)10-11-23(15,2)20(17)13-21(26)24(18,19)3/h14-21,25-26H,4-13H2,1-3H3,(H,27,28)/t14-,15-,16-,17+,18-,19+,20+,21+,23+,24-/m1/s1",
963
  "KXGVEGMKQFWNSR-LLQZFEROSA-N",
964
  "deoxycholic acid",
965
+ "<rdkit.Chem.rdchem.Mol object at 0x70fb3f748510>"
966
  ]
967
  ]
968
  },
 
995
  ]
996
  }
997
  },
998
+ "other": {},
999
  "relations": [
1000
  {
1001
  "df": "edges",
1002
+ "name": null,
1003
  "source_column": "source",
 
 
 
1004
  "source_key": "id",
1005
+ "source_table": "nodes",
1006
+ "target_column": "target",
1007
+ "target_key": "id",
1008
+ "target_table": "nodes"
1009
  }
1010
+ ]
 
1011
  },
1012
  "error": null,
1013
+ "input_metadata": [
1014
+ {
1015
+ "dataframes": {
1016
+ "edges": {
1017
+ "columns": [
1018
+ "similarity",
1019
+ "source",
1020
+ "target"
1021
+ ]
1022
+ },
1023
+ "nodes": {
1024
+ "columns": [
1025
+ "ACCESSION",
1026
+ "ACTION_TYPE",
1027
+ "ACT_COMMENT",
1028
+ "ACT_SOURCE",
1029
+ "ACT_SOURCE_URL",
1030
+ "ACT_TYPE",
1031
+ "ACT_UNIT",
1032
+ "ACT_VALUE",
1033
+ "DRUG_NAME",
1034
+ "GENE",
1035
+ "INN",
1036
+ "InChI",
1037
+ "InChIKey",
1038
+ "MOA",
1039
+ "MOA_SOURCE",
1040
+ "MOA_SOURCE_URL",
1041
+ "ORGANISM",
1042
+ "RELATION",
1043
+ "SMILES",
1044
+ "STRUCT_ID",
1045
+ "SWISSPROT",
1046
+ "TARGET_CLASS",
1047
+ "TARGET_NAME",
1048
+ "TDL",
1049
+ "Unnamed: 0",
1050
+ "mols"
1051
+ ]
1052
+ },
1053
+ "result": {
1054
+ "columns": [
1055
+ "a.DRUG_NAME",
1056
+ "b.DRUG_NAME"
1057
+ ]
1058
  }
1059
+ },
1060
+ "other": {},
1061
+ "relations": [
1062
+ {
1063
+ "df": "edges",
1064
+ "name": null,
1065
+ "source_column": "source",
1066
+ "source_key": "id",
1067
+ "source_table": "nodes",
1068
+ "target_column": "target",
1069
+ "target_key": "id",
1070
+ "target_table": "nodes"
1071
+ }
1072
+ ]
1073
+ }
1074
+ ],
1075
+ "meta": {
1076
+ "color": "orange",
1077
+ "inputs": [
1078
+ {
1079
  "name": "bundle",
1080
  "position": "left",
1081
  "type": {
1082
+ "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
1083
  }
1084
  }
1085
+ ],
 
 
 
 
1086
  "name": "View tables",
1087
+ "outputs": [],
1088
+ "params": [
1089
+ {
1090
+ "default": 100,
1091
+ "name": "limit",
1092
+ "type": {
1093
+ "type": "<class 'int'>"
1094
+ }
1095
+ }
1096
+ ],
1097
  "type": "table_view"
1098
+ },
1099
+ "params": {
1100
+ "_tables_open": {
1101
+ "result": true
1102
+ },
1103
+ "limit": 100.0
1104
+ },
1105
+ "status": "done",
1106
+ "title": "View tables"
1107
  },
1108
+ "dragHandle": ".bg-primary",
1109
+ "height": 295.0,
1110
+ "id": "View tables 1",
1111
  "position": {
1112
  "x": 1817.1767094971015,
1113
  "y": 1459.025582190881
1114
  },
1115
+ "type": "table_view",
1116
+ "width": 322.0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1117
  }
1118
  ]
1119
  }
examples/BioNeMo demo.lynxkite.json CHANGED
@@ -115,26 +115,26 @@
115
  "display": null,
116
  "error": null,
117
  "meta": {
118
- "inputs": {},
119
  "name": "BioNeMo > Import H5AD file",
120
- "outputs": {
121
- "output": {
122
  "name": "output",
123
  "position": "right",
124
  "type": {
125
  "type": "None"
126
  }
127
  }
128
- },
129
- "params": {
130
- "file_path": {
131
  "default": null,
132
  "name": "file_path",
133
  "type": {
134
  "type": "<class 'str'>"
135
  }
136
  }
137
- },
138
  "position": {
139
  "x": 504.0,
140
  "y": 355.0
@@ -162,26 +162,26 @@
162
  "display": null,
163
  "error": null,
164
  "meta": {
165
- "inputs": {
166
- "adata": {
167
  "name": "adata",
168
  "position": "left",
169
  "type": {
170
  "type": "<class 'inspect._empty'>"
171
  }
172
  }
173
- },
174
  "name": "BioNeMo > Get labels",
175
- "outputs": {
176
- "output": {
177
  "name": "output",
178
  "position": "right",
179
  "type": {
180
  "type": "None"
181
  }
182
  }
183
- },
184
- "params": {},
185
  "position": {
186
  "x": 389.0,
187
  "y": 633.0
@@ -209,26 +209,26 @@
209
  "display": null,
210
  "error": null,
211
  "meta": {
212
- "inputs": {},
213
  "name": "BioNeMo > Download model",
214
- "outputs": {
215
- "output": {
216
  "name": "output",
217
  "position": "right",
218
  "type": {
219
  "type": "None"
220
  }
221
  }
222
- },
223
- "params": {
224
- "model_name": {
225
  "default": null,
226
  "name": "model_name",
227
  "type": {
228
  "type": "<class 'str'>"
229
  }
230
  }
231
- },
232
  "position": {
233
  "x": 1026.0,
234
  "y": 839.0
@@ -258,26 +258,26 @@
258
  "display": null,
259
  "error": null,
260
  "meta": {
261
- "inputs": {},
262
  "name": "BioNeMo > Download model",
263
- "outputs": {
264
- "output": {
265
  "name": "output",
266
  "position": "right",
267
  "type": {
268
  "type": "None"
269
  }
270
  }
271
- },
272
- "params": {
273
- "model_name": {
274
  "default": null,
275
  "name": "model_name",
276
  "type": {
277
  "type": "<class 'str'>"
278
  }
279
  }
280
- },
281
  "position": {
282
  "x": 939.0,
283
  "y": 523.0
@@ -307,61 +307,61 @@
307
  "display": null,
308
  "error": null,
309
  "meta": {
310
- "inputs": {},
311
  "name": "BioNeMo > Download CELLxGENE dataset",
312
- "outputs": {
313
- "output": {
314
  "name": "output",
315
  "position": "right",
316
  "type": {
317
  "type": "None"
318
  }
319
  }
320
- },
321
- "params": {
322
- "census_version": {
323
  "default": "2023-12-15",
324
  "name": "census_version",
325
  "type": {
326
  "type": "<class 'str'>"
327
  }
328
  },
329
- "max_workers": {
330
  "default": 1.0,
331
  "name": "max_workers",
332
  "type": {
333
  "type": "<class 'int'>"
334
  }
335
  },
336
- "organism": {
337
  "default": "Homo sapiens",
338
  "name": "organism",
339
  "type": {
340
  "type": "<class 'str'>"
341
  }
342
  },
343
- "save_path": {
344
  "default": null,
345
  "name": "save_path",
346
  "type": {
347
  "type": "<class 'str'>"
348
  }
349
  },
350
- "use_mp": {
351
  "default": false,
352
  "name": "use_mp",
353
  "type": {
354
  "type": "<class 'bool'>"
355
  }
356
  },
357
- "value_filter": {
358
  "default": "dataset_id==\"8e47ed12-c658-4252-b126-381df8d52a3d\"",
359
  "name": "value_filter",
360
  "type": {
361
  "type": "<class 'str'>"
362
  }
363
  }
364
- },
365
  "position": {
366
  "x": 1020.0,
367
  "y": 262.0
@@ -396,41 +396,41 @@
396
  "display": null,
397
  "error": null,
398
  "meta": {
399
- "inputs": {
400
- "dataset_path": {
401
  "name": "dataset_path",
402
  "position": "left",
403
  "type": {
404
  "type": "<class 'str'>"
405
  }
406
  },
407
- "model_path": {
408
  "name": "model_path",
409
  "position": "left",
410
  "type": {
411
  "type": "str | None"
412
  }
413
  }
414
- },
415
  "name": "BioNeMo > Infer",
416
- "outputs": {
417
- "output": {
418
  "name": "output",
419
  "position": "right",
420
  "type": {
421
  "type": "None"
422
  }
423
  }
424
- },
425
- "params": {
426
- "results_path": {
427
  "default": null,
428
  "name": "results_path",
429
  "type": {
430
  "type": "<class 'str'>"
431
  }
432
  }
433
- },
434
  "position": {
435
  "x": 1544.0,
436
  "y": 356.0
@@ -460,41 +460,41 @@
460
  "display": null,
461
  "error": null,
462
  "meta": {
463
- "inputs": {
464
- "dataset_path": {
465
  "name": "dataset_path",
466
  "position": "left",
467
  "type": {
468
  "type": "<class 'str'>"
469
  }
470
  },
471
- "model_path": {
472
  "name": "model_path",
473
  "position": "left",
474
  "type": {
475
  "type": "str | None"
476
  }
477
  }
478
- },
479
  "name": "BioNeMo > Infer",
480
- "outputs": {
481
- "output": {
482
  "name": "output",
483
  "position": "right",
484
  "type": {
485
  "type": "None"
486
  }
487
  }
488
- },
489
- "params": {
490
- "results_path": {
491
  "default": null,
492
  "name": "results_path",
493
  "type": {
494
  "type": "<class 'str'>"
495
  }
496
  }
497
- },
498
  "position": {
499
  "x": 1256.0,
500
  "y": 1005.0
@@ -522,26 +522,26 @@
522
  "display": null,
523
  "error": null,
524
  "meta": {
525
- "inputs": {
526
- "results_path": {
527
  "name": "results_path",
528
  "position": "left",
529
  "type": {
530
  "type": "<class 'str'>"
531
  }
532
  }
533
- },
534
  "name": "BioNeMo > Load results",
535
- "outputs": {
536
- "output": {
537
  "name": "output",
538
  "position": "right",
539
  "type": {
540
  "type": "None"
541
  }
542
  }
543
- },
544
- "params": {},
545
  "position": {
546
  "x": 1506.0,
547
  "y": 804.0
@@ -567,41 +567,41 @@
567
  "display": null,
568
  "error": null,
569
  "meta": {
570
- "inputs": {
571
- "data": {
572
  "name": "data",
573
  "position": "left",
574
  "type": {
575
  "type": "<class 'inspect._empty'>"
576
  }
577
  },
578
- "labels": {
579
  "name": "labels",
580
  "position": "left",
581
  "type": {
582
  "type": "<class 'inspect._empty'>"
583
  }
584
  }
585
- },
586
  "name": "BioNeMo > Run benchmark",
587
- "outputs": {
588
- "output": {
589
  "name": "output",
590
  "position": "right",
591
  "type": {
592
  "type": "None"
593
  }
594
  }
595
- },
596
- "params": {
597
- "use_pca": {
598
  "default": false,
599
  "name": "use_pca",
600
  "type": {
601
  "type": "<class 'bool'>"
602
  }
603
  }
604
- },
605
  "position": {
606
  "x": 1698.0,
607
  "y": 929.0
@@ -629,26 +629,26 @@
629
  "display": null,
630
  "error": null,
631
  "meta": {
632
- "inputs": {
633
- "results_path": {
634
  "name": "results_path",
635
  "position": "left",
636
  "type": {
637
  "type": "<class 'str'>"
638
  }
639
  }
640
- },
641
  "name": "BioNeMo > Load results",
642
- "outputs": {
643
- "output": {
644
  "name": "output",
645
  "position": "right",
646
  "type": {
647
  "type": "None"
648
  }
649
  }
650
- },
651
- "params": {},
652
  "position": {
653
  "x": 1314.0,
654
  "y": 286.0
@@ -674,41 +674,41 @@
674
  "display": null,
675
  "error": null,
676
  "meta": {
677
- "inputs": {
678
- "data": {
679
  "name": "data",
680
  "position": "left",
681
  "type": {
682
  "type": "<class 'inspect._empty'>"
683
  }
684
  },
685
- "labels": {
686
  "name": "labels",
687
  "position": "left",
688
  "type": {
689
  "type": "<class 'inspect._empty'>"
690
  }
691
  }
692
- },
693
  "name": "BioNeMo > Run benchmark",
694
- "outputs": {
695
- "output": {
696
  "name": "output",
697
  "position": "right",
698
  "type": {
699
  "type": "None"
700
  }
701
  }
702
- },
703
- "params": {
704
- "use_pca": {
705
  "default": false,
706
  "name": "use_pca",
707
  "type": {
708
  "type": "<class 'bool'>"
709
  }
710
  }
711
- },
712
  "position": {
713
  "x": 1576.0,
714
  "y": 395.0
@@ -817,25 +817,25 @@
817
  },
818
  "error": null,
819
  "meta": {
820
- "inputs": {
821
- "benchmark_output100m": {
822
  "name": "benchmark_output100m",
823
  "position": "left",
824
  "type": {
825
  "type": "<class 'inspect._empty'>"
826
  }
827
  },
828
- "benchmark_output10m": {
829
  "name": "benchmark_output10m",
830
  "position": "left",
831
  "type": {
832
  "type": "<class 'inspect._empty'>"
833
  }
834
  }
835
- },
836
  "name": "BioNeMo > Plot f1 comparison",
837
- "outputs": {},
838
- "params": {},
839
  "position": {
840
  "x": 1716.0,
841
  "y": 309.0
@@ -942,25 +942,25 @@
942
  },
943
  "error": null,
944
  "meta": {
945
- "inputs": {
946
- "benchmark_output100m": {
947
  "name": "benchmark_output100m",
948
  "position": "left",
949
  "type": {
950
  "type": "<class 'inspect._empty'>"
951
  }
952
  },
953
- "benchmark_output10m": {
954
  "name": "benchmark_output10m",
955
  "position": "left",
956
  "type": {
957
  "type": "<class 'inspect._empty'>"
958
  }
959
  }
960
- },
961
  "name": "BioNeMo > Plot accuracy comparison",
962
- "outputs": {},
963
- "params": {},
964
  "position": {
965
  "x": 1574.0,
966
  "y": 720.0
 
115
  "display": null,
116
  "error": null,
117
  "meta": {
118
+ "inputs": [],
119
  "name": "BioNeMo > Import H5AD file",
120
+ "outputs": [
121
+ {
122
  "name": "output",
123
  "position": "right",
124
  "type": {
125
  "type": "None"
126
  }
127
  }
128
+ ],
129
+ "params": [
130
+ {
131
  "default": null,
132
  "name": "file_path",
133
  "type": {
134
  "type": "<class 'str'>"
135
  }
136
  }
137
+ ],
138
  "position": {
139
  "x": 504.0,
140
  "y": 355.0
 
162
  "display": null,
163
  "error": null,
164
  "meta": {
165
+ "inputs": [
166
+ {
167
  "name": "adata",
168
  "position": "left",
169
  "type": {
170
  "type": "<class 'inspect._empty'>"
171
  }
172
  }
173
+ ],
174
  "name": "BioNeMo > Get labels",
175
+ "outputs": [
176
+ {
177
  "name": "output",
178
  "position": "right",
179
  "type": {
180
  "type": "None"
181
  }
182
  }
183
+ ],
184
+ "params": [],
185
  "position": {
186
  "x": 389.0,
187
  "y": 633.0
 
209
  "display": null,
210
  "error": null,
211
  "meta": {
212
+ "inputs": [],
213
  "name": "BioNeMo > Download model",
214
+ "outputs": [
215
+ {
216
  "name": "output",
217
  "position": "right",
218
  "type": {
219
  "type": "None"
220
  }
221
  }
222
+ ],
223
+ "params": [
224
+ {
225
  "default": null,
226
  "name": "model_name",
227
  "type": {
228
  "type": "<class 'str'>"
229
  }
230
  }
231
+ ],
232
  "position": {
233
  "x": 1026.0,
234
  "y": 839.0
 
258
  "display": null,
259
  "error": null,
260
  "meta": {
261
+ "inputs": [],
262
  "name": "BioNeMo > Download model",
263
+ "outputs": [
264
+ {
265
  "name": "output",
266
  "position": "right",
267
  "type": {
268
  "type": "None"
269
  }
270
  }
271
+ ],
272
+ "params": [
273
+ {
274
  "default": null,
275
  "name": "model_name",
276
  "type": {
277
  "type": "<class 'str'>"
278
  }
279
  }
280
+ ],
281
  "position": {
282
  "x": 939.0,
283
  "y": 523.0
 
307
  "display": null,
308
  "error": null,
309
  "meta": {
310
+ "inputs": [],
311
  "name": "BioNeMo > Download CELLxGENE dataset",
312
+ "outputs": [
313
+ {
314
  "name": "output",
315
  "position": "right",
316
  "type": {
317
  "type": "None"
318
  }
319
  }
320
+ ],
321
+ "params": [
322
+ {
323
  "default": "2023-12-15",
324
  "name": "census_version",
325
  "type": {
326
  "type": "<class 'str'>"
327
  }
328
  },
329
+ {
330
  "default": 1.0,
331
  "name": "max_workers",
332
  "type": {
333
  "type": "<class 'int'>"
334
  }
335
  },
336
+ {
337
  "default": "Homo sapiens",
338
  "name": "organism",
339
  "type": {
340
  "type": "<class 'str'>"
341
  }
342
  },
343
+ {
344
  "default": null,
345
  "name": "save_path",
346
  "type": {
347
  "type": "<class 'str'>"
348
  }
349
  },
350
+ {
351
  "default": false,
352
  "name": "use_mp",
353
  "type": {
354
  "type": "<class 'bool'>"
355
  }
356
  },
357
+ {
358
  "default": "dataset_id==\"8e47ed12-c658-4252-b126-381df8d52a3d\"",
359
  "name": "value_filter",
360
  "type": {
361
  "type": "<class 'str'>"
362
  }
363
  }
364
+ ],
365
  "position": {
366
  "x": 1020.0,
367
  "y": 262.0
 
396
  "display": null,
397
  "error": null,
398
  "meta": {
399
+ "inputs": [
400
+ {
401
  "name": "dataset_path",
402
  "position": "left",
403
  "type": {
404
  "type": "<class 'str'>"
405
  }
406
  },
407
+ {
408
  "name": "model_path",
409
  "position": "left",
410
  "type": {
411
  "type": "str | None"
412
  }
413
  }
414
+ ],
415
  "name": "BioNeMo > Infer",
416
+ "outputs": [
417
+ {
418
  "name": "output",
419
  "position": "right",
420
  "type": {
421
  "type": "None"
422
  }
423
  }
424
+ ],
425
+ "params": [
426
+ {
427
  "default": null,
428
  "name": "results_path",
429
  "type": {
430
  "type": "<class 'str'>"
431
  }
432
  }
433
+ ],
434
  "position": {
435
  "x": 1544.0,
436
  "y": 356.0
 
460
  "display": null,
461
  "error": null,
462
  "meta": {
463
+ "inputs": [
464
+ {
465
  "name": "dataset_path",
466
  "position": "left",
467
  "type": {
468
  "type": "<class 'str'>"
469
  }
470
  },
471
+ {
472
  "name": "model_path",
473
  "position": "left",
474
  "type": {
475
  "type": "str | None"
476
  }
477
  }
478
+ ],
479
  "name": "BioNeMo > Infer",
480
+ "outputs": [
481
+ {
482
  "name": "output",
483
  "position": "right",
484
  "type": {
485
  "type": "None"
486
  }
487
  }
488
+ ],
489
+ "params": [
490
+ {
491
  "default": null,
492
  "name": "results_path",
493
  "type": {
494
  "type": "<class 'str'>"
495
  }
496
  }
497
+ ],
498
  "position": {
499
  "x": 1256.0,
500
  "y": 1005.0
 
522
  "display": null,
523
  "error": null,
524
  "meta": {
525
+ "inputs": [
526
+ {
527
  "name": "results_path",
528
  "position": "left",
529
  "type": {
530
  "type": "<class 'str'>"
531
  }
532
  }
533
+ ],
534
  "name": "BioNeMo > Load results",
535
+ "outputs": [
536
+ {
537
  "name": "output",
538
  "position": "right",
539
  "type": {
540
  "type": "None"
541
  }
542
  }
543
+ ],
544
+ "params": [],
545
  "position": {
546
  "x": 1506.0,
547
  "y": 804.0
 
567
  "display": null,
568
  "error": null,
569
  "meta": {
570
+ "inputs": [
571
+ {
572
  "name": "data",
573
  "position": "left",
574
  "type": {
575
  "type": "<class 'inspect._empty'>"
576
  }
577
  },
578
+ {
579
  "name": "labels",
580
  "position": "left",
581
  "type": {
582
  "type": "<class 'inspect._empty'>"
583
  }
584
  }
585
+ ],
586
  "name": "BioNeMo > Run benchmark",
587
+ "outputs": [
588
+ {
589
  "name": "output",
590
  "position": "right",
591
  "type": {
592
  "type": "None"
593
  }
594
  }
595
+ ],
596
+ "params": [
597
+ {
598
  "default": false,
599
  "name": "use_pca",
600
  "type": {
601
  "type": "<class 'bool'>"
602
  }
603
  }
604
+ ],
605
  "position": {
606
  "x": 1698.0,
607
  "y": 929.0
 
629
  "display": null,
630
  "error": null,
631
  "meta": {
632
+ "inputs": [
633
+ {
634
  "name": "results_path",
635
  "position": "left",
636
  "type": {
637
  "type": "<class 'str'>"
638
  }
639
  }
640
+ ],
641
  "name": "BioNeMo > Load results",
642
+ "outputs": [
643
+ {
644
  "name": "output",
645
  "position": "right",
646
  "type": {
647
  "type": "None"
648
  }
649
  }
650
+ ],
651
+ "params": [],
652
  "position": {
653
  "x": 1314.0,
654
  "y": 286.0
 
674
  "display": null,
675
  "error": null,
676
  "meta": {
677
+ "inputs": [
678
+ {
679
  "name": "data",
680
  "position": "left",
681
  "type": {
682
  "type": "<class 'inspect._empty'>"
683
  }
684
  },
685
+ {
686
  "name": "labels",
687
  "position": "left",
688
  "type": {
689
  "type": "<class 'inspect._empty'>"
690
  }
691
  }
692
+ ],
693
  "name": "BioNeMo > Run benchmark",
694
+ "outputs": [
695
+ {
696
  "name": "output",
697
  "position": "right",
698
  "type": {
699
  "type": "None"
700
  }
701
  }
702
+ ],
703
+ "params": [
704
+ {
705
  "default": false,
706
  "name": "use_pca",
707
  "type": {
708
  "type": "<class 'bool'>"
709
  }
710
  }
711
+ ],
712
  "position": {
713
  "x": 1576.0,
714
  "y": 395.0
 
817
  },
818
  "error": null,
819
  "meta": {
820
+ "inputs": [
821
+ {
822
  "name": "benchmark_output100m",
823
  "position": "left",
824
  "type": {
825
  "type": "<class 'inspect._empty'>"
826
  }
827
  },
828
+ {
829
  "name": "benchmark_output10m",
830
  "position": "left",
831
  "type": {
832
  "type": "<class 'inspect._empty'>"
833
  }
834
  }
835
+ ],
836
  "name": "BioNeMo > Plot f1 comparison",
837
+ "outputs": [],
838
+ "params": [],
839
  "position": {
840
  "x": 1716.0,
841
  "y": 309.0
 
942
  },
943
  "error": null,
944
  "meta": {
945
+ "inputs": [
946
+ {
947
  "name": "benchmark_output100m",
948
  "position": "left",
949
  "type": {
950
  "type": "<class 'inspect._empty'>"
951
  }
952
  },
953
+ {
954
  "name": "benchmark_output10m",
955
  "position": "left",
956
  "type": {
957
  "type": "<class 'inspect._empty'>"
958
  }
959
  }
960
+ ],
961
  "name": "BioNeMo > Plot accuracy comparison",
962
+ "outputs": [],
963
+ "params": [],
964
  "position": {
965
  "x": 1574.0,
966
  "y": 720.0
examples/Generative drug screening.lynxkite.json CHANGED
@@ -60,19 +60,19 @@
60
  "error": null,
61
  "input_metadata": [],
62
  "meta": {
63
- "inputs": {},
64
  "name": "Import file",
65
- "outputs": {
66
- "output": {
67
  "name": "output",
68
  "position": "right",
69
  "type": {
70
  "type": "None"
71
  }
72
  }
73
- },
74
- "params": {
75
- "file_format": {
76
  "default": "csv",
77
  "groups": {
78
  "csv": [
@@ -118,21 +118,21 @@
118
  },
119
  "type": "group"
120
  },
121
- "file_path": {
122
  "default": null,
123
  "name": "file_path",
124
  "type": {
125
  "type": "<class 'str'>"
126
  }
127
  },
128
- "table_name": {
129
  "default": null,
130
  "name": "table_name",
131
  "type": {
132
  "type": "<class 'str'>"
133
  }
134
  }
135
- },
136
  "type": "basic"
137
  },
138
  "params": {
@@ -163,19 +163,19 @@
163
  "error": null,
164
  "input_metadata": [],
165
  "meta": {
166
- "inputs": {},
167
  "name": "Import file",
168
- "outputs": {
169
- "output": {
170
  "name": "output",
171
  "position": "right",
172
  "type": {
173
  "type": "None"
174
  }
175
  }
176
- },
177
- "params": {
178
- "file_format": {
179
  "default": "csv",
180
  "groups": {
181
  "csv": [
@@ -221,21 +221,21 @@
221
  },
222
  "type": "group"
223
  },
224
- "file_path": {
225
  "default": null,
226
  "name": "file_path",
227
  "type": {
228
  "type": "<class 'str'>"
229
  }
230
  },
231
- "table_name": {
232
  "default": null,
233
  "name": "table_name",
234
  "type": {
235
  "type": "<class 'str'>"
236
  }
237
  }
238
- },
239
  "type": "basic"
240
  },
241
  "params": {
@@ -278,76 +278,76 @@
278
  }
279
  ],
280
  "meta": {
281
- "inputs": {
282
- "bundle": {
283
  "name": "bundle",
284
  "position": "left",
285
  "type": {
286
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
287
  }
288
  }
289
- },
290
  "name": "Query GenMol",
291
- "outputs": {
292
- "output": {
293
  "name": "output",
294
  "position": "right",
295
  "type": {
296
  "type": "None"
297
  }
298
  }
299
- },
300
- "params": {
301
- "molecule_column": {
302
  "default": null,
303
  "name": "molecule_column",
304
  "type": {
305
  "type": "<class 'str'>"
306
  }
307
  },
308
- "molecule_table": {
309
  "default": null,
310
  "name": "molecule_table",
311
  "type": {
312
  "type": "<class 'str'>"
313
  }
314
  },
315
- "noise": {
316
  "default": 0.2,
317
  "name": "noise",
318
  "type": {
319
  "type": "<class 'float'>"
320
  }
321
  },
322
- "num_molecules": {
323
  "default": 5.0,
324
  "name": "num_molecules",
325
  "type": {
326
  "type": "<class 'int'>"
327
  }
328
  },
329
- "scoring": {
330
  "default": "QED",
331
  "name": "scoring",
332
  "type": {
333
  "type": "<class 'str'>"
334
  }
335
  },
336
- "step_size": {
337
  "default": 4.0,
338
  "name": "step_size",
339
  "type": {
340
  "type": "<class 'int'>"
341
  }
342
  },
343
- "temperature": {
344
  "default": 1.0,
345
  "name": "temperature",
346
  "type": {
347
  "type": "<class 'float'>"
348
  }
349
  }
350
- },
351
  "type": "basic"
352
  },
353
  "params": {
@@ -409,90 +409,90 @@
409
  }
410
  ],
411
  "meta": {
412
- "inputs": {
413
- "ligands": {
414
  "name": "ligands",
415
  "position": "left",
416
  "type": {
417
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
418
  }
419
  },
420
- "proteins": {
421
  "name": "proteins",
422
  "position": "left",
423
  "type": {
424
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
425
  }
426
  }
427
- },
428
  "name": "Query DiffDock",
429
- "outputs": {
430
- "output": {
431
  "name": "output",
432
  "position": "right",
433
  "type": {
434
  "type": "None"
435
  }
436
  }
437
- },
438
- "params": {
439
- "ligand_column": {
440
  "default": null,
441
  "name": "ligand_column",
442
  "type": {
443
  "type": "<class 'str'>"
444
  }
445
  },
446
- "ligand_file_type": {
447
  "default": "txt",
448
  "name": "ligand_file_type",
449
  "type": {
450
  "type": "<class 'str'>"
451
  }
452
  },
453
- "ligand_table": {
454
  "default": null,
455
  "name": "ligand_table",
456
  "type": {
457
  "type": "<class 'str'>"
458
  }
459
  },
460
- "num_poses": {
461
  "default": 10.0,
462
  "name": "num_poses",
463
  "type": {
464
  "type": "<class 'int'>"
465
  }
466
  },
467
- "num_steps": {
468
  "default": 18.0,
469
  "name": "num_steps",
470
  "type": {
471
  "type": "<class 'int'>"
472
  }
473
  },
474
- "protein_column": {
475
  "default": null,
476
  "name": "protein_column",
477
  "type": {
478
  "type": "<class 'str'>"
479
  }
480
  },
481
- "protein_table": {
482
  "default": null,
483
  "name": "protein_table",
484
  "type": {
485
  "type": "<class 'str'>"
486
  }
487
  },
488
- "time_divisions": {
489
  "default": 20.0,
490
  "name": "time_divisions",
491
  "type": {
492
  "type": "<class 'int'>"
493
  }
494
  }
495
- },
496
  "type": "basic"
497
  },
498
  "params": {
@@ -538,69 +538,69 @@
538
  }
539
  ],
540
  "meta": {
541
- "inputs": {
542
- "bundle": {
543
  "name": "bundle",
544
  "position": "left",
545
  "type": {
546
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
547
  }
548
  }
549
- },
550
  "name": "Query OpenFold2",
551
- "outputs": {
552
- "output": {
553
  "name": "output",
554
  "position": "right",
555
  "type": {
556
  "type": "None"
557
  }
558
  }
559
- },
560
- "params": {
561
- "alignment_column": {
562
  "default": null,
563
  "name": "alignment_column",
564
  "type": {
565
  "type": "<class 'str'>"
566
  }
567
  },
568
- "alignment_table": {
569
  "default": null,
570
  "name": "alignment_table",
571
  "type": {
572
  "type": "<class 'str'>"
573
  }
574
  },
575
- "protein_column": {
576
  "default": null,
577
  "name": "protein_column",
578
  "type": {
579
  "type": "<class 'str'>"
580
  }
581
  },
582
- "protein_table": {
583
  "default": null,
584
  "name": "protein_table",
585
  "type": {
586
  "type": "<class 'str'>"
587
  }
588
  },
589
- "relax_prediction": {
590
  "default": false,
591
  "name": "relax_prediction",
592
  "type": {
593
  "type": "<class 'bool'>"
594
  }
595
  },
596
- "selected_models": {
597
  "default": "1,2",
598
  "name": "selected_models",
599
  "type": {
600
  "type": "<class 'str'>"
601
  }
602
  }
603
- },
604
  "type": "basic"
605
  },
606
  "params": {
@@ -706,26 +706,26 @@
706
  }
707
  ],
708
  "meta": {
709
- "inputs": {
710
- "bundle": {
711
  "name": "bundle",
712
  "position": "left",
713
  "type": {
714
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
715
  }
716
  }
717
- },
718
  "name": "View tables",
719
- "outputs": {},
720
- "params": {
721
- "limit": {
722
  "default": 100.0,
723
  "name": "limit",
724
  "type": {
725
  "type": "<class 'int'>"
726
  }
727
  }
728
- },
729
  "position": {
730
  "x": 1260.0,
731
  "y": 768.0
@@ -768,76 +768,76 @@
768
  }
769
  ],
770
  "meta": {
771
- "inputs": {
772
- "bundle": {
773
  "name": "bundle",
774
  "position": "left",
775
  "type": {
776
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
777
  }
778
  }
779
- },
780
  "name": "MSA-search",
781
- "outputs": {
782
- "output": {
783
  "name": "output",
784
  "position": "right",
785
  "type": {
786
  "type": "None"
787
  }
788
  }
789
- },
790
- "params": {
791
- "databases": {
792
  "default": "Uniref30_2302,colabfold_envdb_202108",
793
  "name": "databases",
794
  "type": {
795
  "type": "<class 'str'>"
796
  }
797
  },
798
- "e_value": {
799
  "default": 0.0001,
800
  "name": "e_value",
801
  "type": {
802
  "type": "<class 'float'>"
803
  }
804
  },
805
- "iterations": {
806
  "default": 1.0,
807
  "name": "iterations",
808
  "type": {
809
  "type": "<class 'int'>"
810
  }
811
  },
812
- "output_alignment_formats": {
813
  "default": "a3m",
814
  "name": "output_alignment_formats",
815
  "type": {
816
  "type": "<class 'str'>"
817
  }
818
  },
819
- "protein_column": {
820
  "default": null,
821
  "name": "protein_column",
822
  "type": {
823
  "type": "<class 'str'>"
824
  }
825
  },
826
- "protein_table": {
827
  "default": null,
828
  "name": "protein_table",
829
  "type": {
830
  "type": "<class 'str'>"
831
  }
832
  },
833
- "search_type": {
834
  "default": "alphafold2",
835
  "name": "search_type",
836
  "type": {
837
  "type": "<class 'str'>"
838
  }
839
  }
840
- },
841
  "position": {
842
  "x": 774.0,
843
  "y": 313.0
@@ -894,40 +894,40 @@
894
  }
895
  ],
896
  "meta": {
897
- "inputs": {
898
- "bundle": {
899
  "name": "bundle",
900
  "position": "left",
901
  "type": {
902
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
903
  }
904
  }
905
- },
906
  "name": "View molecule",
907
- "outputs": {},
908
- "params": {
909
- "molecule_column": {
910
  "default": null,
911
  "name": "molecule_column",
912
  "type": {
913
  "type": "<class 'str'>"
914
  }
915
  },
916
- "molecule_table": {
917
  "default": null,
918
  "name": "molecule_table",
919
  "type": {
920
  "type": "<class 'str'>"
921
  }
922
  },
923
- "row_index": {
924
  "default": 0.0,
925
  "name": "row_index",
926
  "type": {
927
  "type": "<class 'int'>"
928
  }
929
  }
930
- },
931
  "position": {
932
  "x": 768.0,
933
  "y": 333.0
 
60
  "error": null,
61
  "input_metadata": [],
62
  "meta": {
63
+ "inputs": [],
64
  "name": "Import file",
65
+ "outputs": [
66
+ {
67
  "name": "output",
68
  "position": "right",
69
  "type": {
70
  "type": "None"
71
  }
72
  }
73
+ ],
74
+ "params": [
75
+ {
76
  "default": "csv",
77
  "groups": {
78
  "csv": [
 
118
  },
119
  "type": "group"
120
  },
121
+ {
122
  "default": null,
123
  "name": "file_path",
124
  "type": {
125
  "type": "<class 'str'>"
126
  }
127
  },
128
+ {
129
  "default": null,
130
  "name": "table_name",
131
  "type": {
132
  "type": "<class 'str'>"
133
  }
134
  }
135
+ ],
136
  "type": "basic"
137
  },
138
  "params": {
 
163
  "error": null,
164
  "input_metadata": [],
165
  "meta": {
166
+ "inputs": [],
167
  "name": "Import file",
168
+ "outputs": [
169
+ {
170
  "name": "output",
171
  "position": "right",
172
  "type": {
173
  "type": "None"
174
  }
175
  }
176
+ ],
177
+ "params": [
178
+ {
179
  "default": "csv",
180
  "groups": {
181
  "csv": [
 
221
  },
222
  "type": "group"
223
  },
224
+ {
225
  "default": null,
226
  "name": "file_path",
227
  "type": {
228
  "type": "<class 'str'>"
229
  }
230
  },
231
+ {
232
  "default": null,
233
  "name": "table_name",
234
  "type": {
235
  "type": "<class 'str'>"
236
  }
237
  }
238
+ ],
239
  "type": "basic"
240
  },
241
  "params": {
 
278
  }
279
  ],
280
  "meta": {
281
+ "inputs": [
282
+ {
283
  "name": "bundle",
284
  "position": "left",
285
  "type": {
286
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
287
  }
288
  }
289
+ ],
290
  "name": "Query GenMol",
291
+ "outputs": [
292
+ {
293
  "name": "output",
294
  "position": "right",
295
  "type": {
296
  "type": "None"
297
  }
298
  }
299
+ ],
300
+ "params": [
301
+ {
302
  "default": null,
303
  "name": "molecule_column",
304
  "type": {
305
  "type": "<class 'str'>"
306
  }
307
  },
308
+ {
309
  "default": null,
310
  "name": "molecule_table",
311
  "type": {
312
  "type": "<class 'str'>"
313
  }
314
  },
315
+ {
316
  "default": 0.2,
317
  "name": "noise",
318
  "type": {
319
  "type": "<class 'float'>"
320
  }
321
  },
322
+ {
323
  "default": 5.0,
324
  "name": "num_molecules",
325
  "type": {
326
  "type": "<class 'int'>"
327
  }
328
  },
329
+ {
330
  "default": "QED",
331
  "name": "scoring",
332
  "type": {
333
  "type": "<class 'str'>"
334
  }
335
  },
336
+ {
337
  "default": 4.0,
338
  "name": "step_size",
339
  "type": {
340
  "type": "<class 'int'>"
341
  }
342
  },
343
+ {
344
  "default": 1.0,
345
  "name": "temperature",
346
  "type": {
347
  "type": "<class 'float'>"
348
  }
349
  }
350
+ ],
351
  "type": "basic"
352
  },
353
  "params": {
 
409
  }
410
  ],
411
  "meta": {
412
+ "inputs": [
413
+ {
414
  "name": "ligands",
415
  "position": "left",
416
  "type": {
417
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
418
  }
419
  },
420
+ {
421
  "name": "proteins",
422
  "position": "left",
423
  "type": {
424
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
425
  }
426
  }
427
+ ],
428
  "name": "Query DiffDock",
429
+ "outputs": [
430
+ {
431
  "name": "output",
432
  "position": "right",
433
  "type": {
434
  "type": "None"
435
  }
436
  }
437
+ ],
438
+ "params": [
439
+ {
440
  "default": null,
441
  "name": "ligand_column",
442
  "type": {
443
  "type": "<class 'str'>"
444
  }
445
  },
446
+ {
447
  "default": "txt",
448
  "name": "ligand_file_type",
449
  "type": {
450
  "type": "<class 'str'>"
451
  }
452
  },
453
+ {
454
  "default": null,
455
  "name": "ligand_table",
456
  "type": {
457
  "type": "<class 'str'>"
458
  }
459
  },
460
+ {
461
  "default": 10.0,
462
  "name": "num_poses",
463
  "type": {
464
  "type": "<class 'int'>"
465
  }
466
  },
467
+ {
468
  "default": 18.0,
469
  "name": "num_steps",
470
  "type": {
471
  "type": "<class 'int'>"
472
  }
473
  },
474
+ {
475
  "default": null,
476
  "name": "protein_column",
477
  "type": {
478
  "type": "<class 'str'>"
479
  }
480
  },
481
+ {
482
  "default": null,
483
  "name": "protein_table",
484
  "type": {
485
  "type": "<class 'str'>"
486
  }
487
  },
488
+ {
489
  "default": 20.0,
490
  "name": "time_divisions",
491
  "type": {
492
  "type": "<class 'int'>"
493
  }
494
  }
495
+ ],
496
  "type": "basic"
497
  },
498
  "params": {
 
538
  }
539
  ],
540
  "meta": {
541
+ "inputs": [
542
+ {
543
  "name": "bundle",
544
  "position": "left",
545
  "type": {
546
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
547
  }
548
  }
549
+ ],
550
  "name": "Query OpenFold2",
551
+ "outputs": [
552
+ {
553
  "name": "output",
554
  "position": "right",
555
  "type": {
556
  "type": "None"
557
  }
558
  }
559
+ ],
560
+ "params": [
561
+ {
562
  "default": null,
563
  "name": "alignment_column",
564
  "type": {
565
  "type": "<class 'str'>"
566
  }
567
  },
568
+ {
569
  "default": null,
570
  "name": "alignment_table",
571
  "type": {
572
  "type": "<class 'str'>"
573
  }
574
  },
575
+ {
576
  "default": null,
577
  "name": "protein_column",
578
  "type": {
579
  "type": "<class 'str'>"
580
  }
581
  },
582
+ {
583
  "default": null,
584
  "name": "protein_table",
585
  "type": {
586
  "type": "<class 'str'>"
587
  }
588
  },
589
+ {
590
  "default": false,
591
  "name": "relax_prediction",
592
  "type": {
593
  "type": "<class 'bool'>"
594
  }
595
  },
596
+ {
597
  "default": "1,2",
598
  "name": "selected_models",
599
  "type": {
600
  "type": "<class 'str'>"
601
  }
602
  }
603
+ ],
604
  "type": "basic"
605
  },
606
  "params": {
 
706
  }
707
  ],
708
  "meta": {
709
+ "inputs": [
710
+ {
711
  "name": "bundle",
712
  "position": "left",
713
  "type": {
714
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
715
  }
716
  }
717
+ ],
718
  "name": "View tables",
719
+ "outputs": [],
720
+ "params": [
721
+ {
722
  "default": 100.0,
723
  "name": "limit",
724
  "type": {
725
  "type": "<class 'int'>"
726
  }
727
  }
728
+ ],
729
  "position": {
730
  "x": 1260.0,
731
  "y": 768.0
 
768
  }
769
  ],
770
  "meta": {
771
+ "inputs": [
772
+ {
773
  "name": "bundle",
774
  "position": "left",
775
  "type": {
776
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
777
  }
778
  }
779
+ ],
780
  "name": "MSA-search",
781
+ "outputs": [
782
+ {
783
  "name": "output",
784
  "position": "right",
785
  "type": {
786
  "type": "None"
787
  }
788
  }
789
+ ],
790
+ "params": [
791
+ {
792
  "default": "Uniref30_2302,colabfold_envdb_202108",
793
  "name": "databases",
794
  "type": {
795
  "type": "<class 'str'>"
796
  }
797
  },
798
+ {
799
  "default": 0.0001,
800
  "name": "e_value",
801
  "type": {
802
  "type": "<class 'float'>"
803
  }
804
  },
805
+ {
806
  "default": 1.0,
807
  "name": "iterations",
808
  "type": {
809
  "type": "<class 'int'>"
810
  }
811
  },
812
+ {
813
  "default": "a3m",
814
  "name": "output_alignment_formats",
815
  "type": {
816
  "type": "<class 'str'>"
817
  }
818
  },
819
+ {
820
  "default": null,
821
  "name": "protein_column",
822
  "type": {
823
  "type": "<class 'str'>"
824
  }
825
  },
826
+ {
827
  "default": null,
828
  "name": "protein_table",
829
  "type": {
830
  "type": "<class 'str'>"
831
  }
832
  },
833
+ {
834
  "default": "alphafold2",
835
  "name": "search_type",
836
  "type": {
837
  "type": "<class 'str'>"
838
  }
839
  }
840
+ ],
841
  "position": {
842
  "x": 774.0,
843
  "y": 313.0
 
894
  }
895
  ],
896
  "meta": {
897
+ "inputs": [
898
+ {
899
  "name": "bundle",
900
  "position": "left",
901
  "type": {
902
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
903
  }
904
  }
905
+ ],
906
  "name": "View molecule",
907
+ "outputs": [],
908
+ "params": [
909
+ {
910
  "default": null,
911
  "name": "molecule_column",
912
  "type": {
913
  "type": "<class 'str'>"
914
  }
915
  },
916
+ {
917
  "default": null,
918
  "name": "molecule_table",
919
  "type": {
920
  "type": "<class 'str'>"
921
  }
922
  },
923
+ {
924
  "default": 0.0,
925
  "name": "row_index",
926
  "type": {
927
  "type": "<class 'int'>"
928
  }
929
  }
930
+ ],
931
  "position": {
932
  "x": 768.0,
933
  "y": 333.0
examples/Graph RAG.lynxkite.json CHANGED
@@ -1,56 +1,153 @@
1
  {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  "env": "LLM logic",
3
  "nodes": [
4
  {
5
- "id": "Input document 1",
6
- "type": "basic",
7
  "data": {
8
- "title": "Input document",
9
- "params": {
10
- "filename": "uploads/example-pizza.md"
11
- },
12
  "display": null,
13
  "error": null,
14
- "__execution_delay": 0.0,
15
  "meta": {
16
- "type": "basic",
17
- "params": {
18
- "filename": {
19
- "type": {
20
- "format": "path"
21
- },
22
- "name": "filename",
23
- "default": null
24
- }
25
- },
26
- "inputs": {},
27
  "name": "Input document",
28
- "outputs": {
29
- "output": {
30
  "name": "output",
 
31
  "type": {
32
  "type": "None"
33
- },
34
- "position": "right"
35
  }
36
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
37
  },
38
- "collapsed": null
39
  },
 
 
 
40
  "position": {
41
  "x": -1138.7178641442829,
42
  "y": -307.0280242240266
43
  },
44
- "parentId": null,
45
- "width": 290.0,
46
- "height": 217.0
47
  },
48
  {
49
- "id": "View 1",
50
- "type": "table_view",
51
  "data": {
52
- "title": "View",
53
- "params": {},
54
  "display": {
55
  "dataframes": {
56
  "df": {
@@ -122,7 +219,7 @@
122
  "Specialty pizzas include a combination of premium toppings and are available in all sizes. Prices below are for Medium size, with additional costs for upgrading to larger sizes."
123
  ],
124
  [
125
- "| Pizza Name | Description | Price (Medium) |\n|----------------------|----------------------------------------------------|-----------------|\n| Meat Lover’s | Pepperoni, sausage, bacon, ham | $16.99 |\n| Veggie Delight | Mushrooms, bell peppers, onions, olives | $14.99 |\n| BBQ Chicken | BBQ sauce, grilled chicken, red onions, cilantro | $17.99 |\n| Margherita | Fresh mozzarella, tomatoes, basil | $15.99 |\n| Hawaiian | Ham, pineapple | $14.99 |"
126
  ],
127
  [
128
  "---"
@@ -190,275 +287,275 @@
190
  },
191
  "error": null,
192
  "meta": {
193
- "name": "View",
194
- "inputs": {
195
- "input": {
196
  "name": "input",
 
197
  "type": {
198
  "type": "<class 'inspect._empty'>"
199
- },
200
- "position": "left"
201
  }
202
- },
203
- "outputs": {},
204
- "params": {},
 
205
  "type": "table_view"
206
  },
207
- "beingResized": false
 
208
  },
 
 
 
209
  "position": {
210
  "x": 320.42256477431704,
211
  "y": -562.3096858852143
212
  },
213
- "parentId": null,
214
- "width": 909.0,
215
- "height": 367.0
216
  },
217
  {
218
- "id": "Split document 1",
219
- "type": "basic",
220
  "data": {
221
- "title": "Split document",
222
- "params": {
223
- "delimiter": "\\n\\n"
224
- },
225
  "display": null,
226
  "error": null,
227
  "meta": {
228
- "params": {
229
- "delimiter": {
230
- "name": "delimiter",
231
- "type": {
232
- "type": "<class 'str'>"
233
- },
234
- "default": "\\n\\n"
235
- }
236
- },
237
- "type": "basic",
238
- "inputs": {
239
- "input": {
240
  "type": {
241
  "type": "<class 'inspect._empty'>"
242
- },
243
- "position": "left",
244
- "name": "input"
245
  }
246
- },
247
  "name": "Split document",
248
- "outputs": {
249
- "output": {
250
  "name": "output",
 
251
  "type": {
252
  "type": "None"
253
- },
254
- "position": "right"
255
  }
256
- }
257
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
258
  },
 
 
 
259
  "position": {
260
  "x": -671.5138580866221,
261
  "y": -394.5831190981944
262
  },
263
- "parentId": null,
264
- "height": 200.0,
265
  "width": 200.0
266
  },
267
  {
268
- "id": "Input chat 1",
269
- "type": "basic",
270
  "data": {
271
- "title": "Input chat",
272
- "params": {
273
- "chat": "What's your cheapest drink?"
274
- },
275
  "display": null,
276
  "error": null,
277
- "__execution_delay": 0.0,
278
  "meta": {
279
- "type": "basic",
280
  "name": "Input chat",
281
- "params": {
282
- "chat": {
283
- "name": "chat",
284
- "default": null,
285
  "type": {
286
- "type": "<class 'str'>"
287
  }
288
  }
289
- },
290
- "inputs": {},
291
- "outputs": {
292
- "output": {
293
- "position": "right",
294
  "type": {
295
- "type": "None"
296
- },
297
- "name": "output"
298
  }
299
- }
 
300
  },
301
- "collapsed": null,
302
- "beingResized": false
 
 
303
  },
 
 
 
304
  "position": {
305
  "x": -1169.0221491975267,
306
  "y": 142.6860253469853
307
  },
308
- "parentId": null,
309
- "width": 347.0,
310
- "height": 197.0
311
  },
312
  {
313
- "id": "Create prompt 1",
314
- "type": "basic",
315
  "data": {
316
- "title": "Create prompt",
317
- "params": {
318
- "template": "\n{% for item in rag %}\n---\n{{item}}\n{% endfor %}\n---\nIs the information above sufficient to answer the following question?\n- {{text}}\n\nIf the information is insufficient please say so. Otherwise, provide the answer.",
319
- "save_as": "prompt"
320
- },
321
  "display": null,
322
  "error": null,
323
- "collapsed": null,
324
- "__execution_delay": 0.0,
325
  "meta": {
326
- "name": "Create prompt",
327
- "inputs": {
328
- "input": {
329
  "position": "left",
330
  "type": {
331
  "type": "<class 'inspect._empty'>"
332
- },
333
- "name": "input"
334
  }
335
- },
336
- "outputs": {
337
- "output": {
 
338
  "name": "output",
339
  "position": "right",
340
  "type": {
341
  "type": "None"
342
  }
343
  }
344
- },
345
- "params": {
346
- "save_as": {
 
 
347
  "type": {
348
  "type": "<class 'str'>"
349
- },
350
- "default": "prompt",
351
- "name": "save_as"
352
  },
353
- "template": {
354
  "default": null,
 
355
  "type": {
356
  "format": "textarea"
357
- },
358
- "name": "template"
359
  }
360
- },
361
  "type": "basic"
362
- }
 
 
 
 
 
363
  },
 
 
 
364
  "position": {
365
  "x": 324.81988008998496,
366
  "y": -9.071826950189632
367
  },
368
- "height": 362.0,
369
- "parentId": null,
370
  "width": 270.0
371
  },
372
  {
373
- "id": "RAG 1",
374
- "type": "basic",
375
  "data": {
376
- "title": "RAG",
377
- "params": {
378
- "engine": "Custom",
379
- "db_field": "text",
380
- "input_field": "text",
381
- "num_matches": "1"
382
- },
383
  "display": null,
384
  "error": null,
385
  "meta": {
386
- "name": "RAG",
387
- "params": {
388
- "input_field": {
389
- "name": "input_field",
390
- "default": "text",
391
  "type": {
392
- "type": "<class 'str'>"
393
  }
394
  },
395
- "db_field": {
396
- "name": "db_field",
397
- "default": "text",
398
  "type": {
399
- "type": "<class 'str'>"
400
  }
401
- },
402
- "engine": {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
403
  "type": {
404
  "enum": [
405
  "Chroma",
406
  "Custom"
407
  ]
408
- },
409
- "name": "engine",
410
- "default": "RagEngine.Chroma"
411
  },
412
- "num_matches": {
413
- "type": {
414
- "type": "<class 'int'>"
415
- },
416
- "name": "num_matches",
417
- "default": 10.0
418
- }
419
- },
420
- "outputs": {
421
- "output": {
422
- "name": "output",
423
- "type": {
424
- "type": "None"
425
- },
426
- "position": "right"
427
- }
428
- },
429
- "inputs": {
430
- "input": {
431
  "type": {
432
- "type": "<class 'inspect._empty'>"
433
- },
434
- "name": "input",
435
- "position": "left"
436
  },
437
- "db": {
438
- "name": "db",
 
439
  "type": {
440
- "type": "<class 'inspect._empty'>"
441
- },
442
- "position": "top"
443
  }
444
- },
445
  "type": "basic"
446
- }
 
 
 
 
 
 
 
447
  },
 
 
 
448
  "position": {
449
  "x": -645.0268659124858,
450
  "y": 44.3669514323544
451
  },
452
- "parentId": null,
453
- "width": 423.0,
454
- "height": 424.0
455
  },
456
  {
457
- "id": "View 3",
458
- "type": "table_view",
459
  "data": {
460
- "title": "View",
461
- "params": {},
462
  "display": {
463
  "dataframes": {
464
  "df": {
@@ -478,97 +575,96 @@
478
  }
479
  },
480
  "error": null,
481
- "beingResized": false,
482
  "meta": {
483
- "name": "View",
484
- "params": {},
485
- "inputs": {
486
- "input": {
487
  "type": {
488
  "type": "<class 'inspect._empty'>"
489
- },
490
- "position": "left",
491
- "name": "input"
492
  }
493
- },
494
- "outputs": {},
 
 
495
  "type": "table_view"
496
- }
 
 
497
  },
 
 
 
498
  "position": {
499
  "x": -43.795911596608875,
500
  "y": 457.1809102819045
501
  },
502
- "parentId": null,
503
- "width": 296.0,
504
- "height": 228.0
505
  },
506
  {
507
- "id": "Ask LLM 1",
508
- "type": "basic",
509
  "data": {
510
- "title": "Ask LLM",
511
- "params": {
512
- "max_tokens": 100.0,
513
- "accepted_regex": ""
514
- },
515
  "display": null,
516
  "error": null,
517
- "collapsed": null,
518
- "__execution_delay": 0.0,
519
  "meta": {
520
- "inputs": {
521
- "input": {
522
- "position": "left",
523
  "name": "input",
 
524
  "type": {
525
  "type": "<class 'inspect._empty'>"
526
  }
527
  }
528
- },
529
- "params": {
530
- "accepted_regex": {
 
 
 
531
  "type": {
532
- "type": "<class 'str'>"
533
- },
 
 
 
 
534
  "default": null,
535
- "name": "accepted_regex"
 
 
 
536
  },
537
- "max_tokens": {
538
- "name": "max_tokens",
539
  "default": 100.0,
 
540
  "type": {
541
  "type": "<class 'int'>"
542
  }
543
  }
544
- },
545
- "outputs": {
546
- "output": {
547
- "type": {
548
- "type": "None"
549
- },
550
- "position": "right",
551
- "name": "output"
552
- }
553
- },
554
- "name": "Ask LLM",
555
  "type": "basic"
556
- }
 
 
 
 
 
557
  },
 
 
 
558
  "position": {
559
  "x": 649.0730411878703,
560
  "y": 29.290926423828694
561
  },
562
- "height": 329.0,
563
- "width": 249.0,
564
- "parentId": null
565
  },
566
  {
567
- "id": "View 4",
568
- "type": "table_view",
569
  "data": {
570
- "title": "View",
571
- "params": {},
572
  "display": {
573
  "dataframes": {
574
  "df": {
@@ -595,273 +691,177 @@
595
  },
596
  "error": null,
597
  "meta": {
598
- "outputs": {},
599
- "type": "table_view",
600
- "params": {},
601
- "inputs": {
602
- "input": {
603
  "position": "left",
604
  "type": {
605
  "type": "<class 'inspect._empty'>"
606
- },
607
- "name": "input"
608
  }
609
- },
610
- "name": "View"
611
- }
 
 
 
 
 
612
  },
 
 
 
613
  "position": {
614
  "x": 1017.4149773467798,
615
  "y": -71.64715104646865
616
  },
617
- "height": 644.0,
618
- "parentId": null,
619
  "width": 502.0
620
  },
621
  {
622
- "id": "Build document graph 1",
623
- "type": "basic",
624
  "data": {
625
- "title": "Build document graph",
626
- "params": {},
627
  "display": null,
628
  "error": null,
629
- "collapsed": true,
630
  "meta": {
 
 
 
 
 
 
 
 
 
631
  "name": "Build document graph",
632
- "params": {},
633
- "outputs": {
634
- "output": {
635
  "name": "output",
636
  "position": "right",
637
  "type": {
638
  "type": "None"
639
  }
640
  }
641
- },
642
- "inputs": {
643
- "input": {
644
- "position": "top",
645
- "name": "input",
646
- "type": {
647
- "type": "<class 'inspect._empty'>"
648
- }
649
- }
650
- },
651
  "type": "basic"
652
- }
 
 
653
  },
 
 
 
654
  "position": {
655
  "x": -36.39166052931119,
656
  "y": -212.34993098590766
657
  },
658
- "width": 200.0,
659
- "parentId": null,
660
- "height": 80.0
661
  },
662
  {
663
- "id": "Add neighbors 1",
664
- "type": "basic",
665
  "data": {
666
- "title": "Add neighbors",
667
- "params": {},
668
  "display": null,
669
  "error": null,
670
  "meta": {
671
- "type": "basic",
672
- "inputs": {
673
- "nodes": {
 
674
  "type": {
675
  "type": "<class 'inspect._empty'>"
676
- },
677
- "name": "nodes",
678
- "position": "top"
679
  },
680
- "item": {
681
- "position": "left",
682
  "name": "item",
 
683
  "type": {
684
  "type": "<class 'inspect._empty'>"
685
  }
686
  },
687
- "edges": {
688
- "name": "edges",
689
  "position": "top",
690
  "type": {
691
  "type": "<class 'inspect._empty'>"
692
  }
693
  }
694
- },
695
- "params": {},
696
  "name": "Add neighbors",
697
- "outputs": {
698
- "output": {
699
- "position": "right",
700
  "name": "output",
 
701
  "type": {
702
  "type": "None"
703
  }
704
  }
705
- }
 
 
706
  },
707
- "collapsed": true
 
708
  },
 
 
 
709
  "position": {
710
  "x": -2.516468588848724,
711
  "y": 167.64180115746848
712
  },
713
- "parentId": null,
714
- "height": 56.0,
715
  "width": 200.0
716
  },
717
  {
718
- "id": "Predict links 1",
719
- "type": "basic",
720
  "data": {
721
- "title": "Predict links",
722
- "params": {},
723
  "display": null,
724
  "error": null,
725
- "__execution_delay": null,
726
  "meta": {
727
- "name": "Predict links",
728
- "inputs": {
729
- "edges": {
 
730
  "type": {
731
  "type": "<class 'inspect._empty'>"
732
- },
733
- "name": "edges",
734
- "position": "top"
735
  },
736
- "nodes": {
737
  "name": "nodes",
738
  "position": "top",
739
  "type": {
740
  "type": "<class 'inspect._empty'>"
741
  }
742
  }
743
- },
744
- "type": "basic",
745
- "outputs": {
746
- "output": {
747
  "name": "output",
 
748
  "type": {
749
  "type": "None"
750
- },
751
- "position": "right"
752
  }
753
- },
754
- "params": {}
 
755
  },
756
- "collapsed": true
 
757
  },
 
 
 
758
  "position": {
759
  "x": 34.865308360949726,
760
  "y": -37.44504613652989
761
  },
762
- "height": 200.0,
763
- "width": 200.0,
764
- "parentId": null
765
- }
766
- ],
767
- "edges": [
768
- {
769
- "id": "xy-edge__Input document 1output-Split document 1input",
770
- "source": "Input document 1",
771
- "target": "Split document 1",
772
- "sourceHandle": "output",
773
- "targetHandle": "input"
774
- },
775
- {
776
- "id": "xy-edge__Split document 1output-View 1input",
777
- "source": "Split document 1",
778
- "target": "View 1",
779
- "sourceHandle": "output",
780
- "targetHandle": "input"
781
- },
782
- {
783
- "id": "xy-edge__Input chat 1output-RAG 1input",
784
- "source": "Input chat 1",
785
- "target": "RAG 1",
786
- "sourceHandle": "output",
787
- "targetHandle": "input"
788
- },
789
- {
790
- "id": "xy-edge__Split document 1output-RAG 1db",
791
- "source": "Split document 1",
792
- "target": "RAG 1",
793
- "sourceHandle": "output",
794
- "targetHandle": "db"
795
- },
796
- {
797
- "id": "xy-edge__RAG 1output-View 3input",
798
- "source": "RAG 1",
799
- "target": "View 3",
800
- "sourceHandle": "output",
801
- "targetHandle": "input"
802
- },
803
- {
804
- "id": "xy-edge__Create prompt 1output-Ask LLM 1input",
805
- "source": "Create prompt 1",
806
- "target": "Ask LLM 1",
807
- "sourceHandle": "output",
808
- "targetHandle": "input"
809
- },
810
- {
811
- "id": "xy-edge__Ask LLM 1output-View 4input",
812
- "source": "Ask LLM 1",
813
- "target": "View 4",
814
- "sourceHandle": "output",
815
- "targetHandle": "input"
816
- },
817
- {
818
- "id": "xy-edge__RAG 1output-Add neighbors 1item",
819
- "source": "RAG 1",
820
- "target": "Add neighbors 1",
821
- "sourceHandle": "output",
822
- "targetHandle": "item"
823
- },
824
- {
825
- "id": "xy-edge__Add neighbors 1output-Create prompt 1input",
826
- "source": "Add neighbors 1",
827
- "target": "Create prompt 1",
828
- "sourceHandle": "output",
829
- "targetHandle": "input"
830
- },
831
- {
832
- "id": "xy-edge__Split document 1output-Build document graph 1input",
833
- "source": "Split document 1",
834
- "target": "Build document graph 1",
835
- "sourceHandle": "output",
836
- "targetHandle": "input"
837
- },
838
- {
839
- "id": "xy-edge__Split document 1output-Add neighbors 1nodes",
840
- "source": "Split document 1",
841
- "target": "Add neighbors 1",
842
- "sourceHandle": "output",
843
- "targetHandle": "nodes"
844
- },
845
- {
846
- "id": "xy-edge__Split document 1output-Predict links 1nodes",
847
- "source": "Split document 1",
848
- "target": "Predict links 1",
849
- "sourceHandle": "output",
850
- "targetHandle": "nodes"
851
- },
852
- {
853
- "id": "xy-edge__Build document graph 1output-Predict links 1edges",
854
- "source": "Build document graph 1",
855
- "target": "Predict links 1",
856
- "sourceHandle": "output",
857
- "targetHandle": "edges"
858
- },
859
- {
860
- "id": "xy-edge__Predict links 1output-Add neighbors 1edges",
861
- "source": "Predict links 1",
862
- "target": "Add neighbors 1",
863
- "sourceHandle": "output",
864
- "targetHandle": "edges"
865
  }
866
  ]
867
  }
 
1
  {
2
+ "edges": [
3
+ {
4
+ "id": "xy-edge__Input document 1output-Split document 1input",
5
+ "source": "Input document 1",
6
+ "sourceHandle": "output",
7
+ "target": "Split document 1",
8
+ "targetHandle": "input"
9
+ },
10
+ {
11
+ "id": "xy-edge__Split document 1output-View 1input",
12
+ "source": "Split document 1",
13
+ "sourceHandle": "output",
14
+ "target": "View 1",
15
+ "targetHandle": "input"
16
+ },
17
+ {
18
+ "id": "xy-edge__Input chat 1output-RAG 1input",
19
+ "source": "Input chat 1",
20
+ "sourceHandle": "output",
21
+ "target": "RAG 1",
22
+ "targetHandle": "input"
23
+ },
24
+ {
25
+ "id": "xy-edge__Split document 1output-RAG 1db",
26
+ "source": "Split document 1",
27
+ "sourceHandle": "output",
28
+ "target": "RAG 1",
29
+ "targetHandle": "db"
30
+ },
31
+ {
32
+ "id": "xy-edge__RAG 1output-View 3input",
33
+ "source": "RAG 1",
34
+ "sourceHandle": "output",
35
+ "target": "View 3",
36
+ "targetHandle": "input"
37
+ },
38
+ {
39
+ "id": "xy-edge__Create prompt 1output-Ask LLM 1input",
40
+ "source": "Create prompt 1",
41
+ "sourceHandle": "output",
42
+ "target": "Ask LLM 1",
43
+ "targetHandle": "input"
44
+ },
45
+ {
46
+ "id": "xy-edge__Ask LLM 1output-View 4input",
47
+ "source": "Ask LLM 1",
48
+ "sourceHandle": "output",
49
+ "target": "View 4",
50
+ "targetHandle": "input"
51
+ },
52
+ {
53
+ "id": "xy-edge__RAG 1output-Add neighbors 1item",
54
+ "source": "RAG 1",
55
+ "sourceHandle": "output",
56
+ "target": "Add neighbors 1",
57
+ "targetHandle": "item"
58
+ },
59
+ {
60
+ "id": "xy-edge__Add neighbors 1output-Create prompt 1input",
61
+ "source": "Add neighbors 1",
62
+ "sourceHandle": "output",
63
+ "target": "Create prompt 1",
64
+ "targetHandle": "input"
65
+ },
66
+ {
67
+ "id": "xy-edge__Split document 1output-Build document graph 1input",
68
+ "source": "Split document 1",
69
+ "sourceHandle": "output",
70
+ "target": "Build document graph 1",
71
+ "targetHandle": "input"
72
+ },
73
+ {
74
+ "id": "xy-edge__Split document 1output-Add neighbors 1nodes",
75
+ "source": "Split document 1",
76
+ "sourceHandle": "output",
77
+ "target": "Add neighbors 1",
78
+ "targetHandle": "nodes"
79
+ },
80
+ {
81
+ "id": "xy-edge__Split document 1output-Predict links 1nodes",
82
+ "source": "Split document 1",
83
+ "sourceHandle": "output",
84
+ "target": "Predict links 1",
85
+ "targetHandle": "nodes"
86
+ },
87
+ {
88
+ "id": "xy-edge__Build document graph 1output-Predict links 1edges",
89
+ "source": "Build document graph 1",
90
+ "sourceHandle": "output",
91
+ "target": "Predict links 1",
92
+ "targetHandle": "edges"
93
+ },
94
+ {
95
+ "id": "xy-edge__Predict links 1output-Add neighbors 1edges",
96
+ "source": "Predict links 1",
97
+ "sourceHandle": "output",
98
+ "target": "Add neighbors 1",
99
+ "targetHandle": "edges"
100
+ }
101
+ ],
102
  "env": "LLM logic",
103
  "nodes": [
104
  {
 
 
105
  "data": {
106
+ "__execution_delay": 0.0,
107
+ "collapsed": null,
 
 
108
  "display": null,
109
  "error": null,
 
110
  "meta": {
111
+ "inputs": [],
 
 
 
 
 
 
 
 
 
 
112
  "name": "Input document",
113
+ "outputs": [
114
+ {
115
  "name": "output",
116
+ "position": "right",
117
  "type": {
118
  "type": "None"
119
+ }
 
120
  }
121
+ ],
122
+ "params": [
123
+ {
124
+ "default": null,
125
+ "name": "filename",
126
+ "type": {
127
+ "format": "path"
128
+ }
129
+ }
130
+ ],
131
+ "type": "basic"
132
+ },
133
+ "params": {
134
+ "filename": "uploads/example-pizza.md"
135
  },
136
+ "title": "Input document"
137
  },
138
+ "height": 217.0,
139
+ "id": "Input document 1",
140
+ "parentId": null,
141
  "position": {
142
  "x": -1138.7178641442829,
143
  "y": -307.0280242240266
144
  },
145
+ "type": "basic",
146
+ "width": 290.0
 
147
  },
148
  {
 
 
149
  "data": {
150
+ "beingResized": false,
 
151
  "display": {
152
  "dataframes": {
153
  "df": {
 
219
  "Specialty pizzas include a combination of premium toppings and are available in all sizes. Prices below are for Medium size, with additional costs for upgrading to larger sizes."
220
  ],
221
  [
222
+ "| Pizza Name | Description | Price (Medium) |\n|----------------------|----------------------------------------------------|-----------------|\n| Meat Lover\u2019s | Pepperoni, sausage, bacon, ham | $16.99 |\n| Veggie Delight | Mushrooms, bell peppers, onions, olives | $14.99 |\n| BBQ Chicken | BBQ sauce, grilled chicken, red onions, cilantro | $17.99 |\n| Margherita | Fresh mozzarella, tomatoes, basil | $15.99 |\n| Hawaiian | Ham, pineapple | $14.99 |"
223
  ],
224
  [
225
  "---"
 
287
  },
288
  "error": null,
289
  "meta": {
290
+ "inputs": [
291
+ {
 
292
  "name": "input",
293
+ "position": "left",
294
  "type": {
295
  "type": "<class 'inspect._empty'>"
296
+ }
 
297
  }
298
+ ],
299
+ "name": "View",
300
+ "outputs": [],
301
+ "params": [],
302
  "type": "table_view"
303
  },
304
+ "params": {},
305
+ "title": "View"
306
  },
307
+ "height": 367.0,
308
+ "id": "View 1",
309
+ "parentId": null,
310
  "position": {
311
  "x": 320.42256477431704,
312
  "y": -562.3096858852143
313
  },
314
+ "type": "table_view",
315
+ "width": 909.0
 
316
  },
317
  {
 
 
318
  "data": {
 
 
 
 
319
  "display": null,
320
  "error": null,
321
  "meta": {
322
+ "inputs": [
323
+ {
324
+ "name": "input",
325
+ "position": "left",
 
 
 
 
 
 
 
 
326
  "type": {
327
  "type": "<class 'inspect._empty'>"
328
+ }
 
 
329
  }
330
+ ],
331
  "name": "Split document",
332
+ "outputs": [
333
+ {
334
  "name": "output",
335
+ "position": "right",
336
  "type": {
337
  "type": "None"
338
+ }
 
339
  }
340
+ ],
341
+ "params": [
342
+ {
343
+ "default": "\\n\\n",
344
+ "name": "delimiter",
345
+ "type": {
346
+ "type": "<class 'str'>"
347
+ }
348
+ }
349
+ ],
350
+ "type": "basic"
351
+ },
352
+ "params": {
353
+ "delimiter": "\\n\\n"
354
+ },
355
+ "title": "Split document"
356
  },
357
+ "height": 200.0,
358
+ "id": "Split document 1",
359
+ "parentId": null,
360
  "position": {
361
  "x": -671.5138580866221,
362
  "y": -394.5831190981944
363
  },
364
+ "type": "basic",
 
365
  "width": 200.0
366
  },
367
  {
 
 
368
  "data": {
369
+ "__execution_delay": 0.0,
370
+ "beingResized": false,
371
+ "collapsed": null,
 
372
  "display": null,
373
  "error": null,
 
374
  "meta": {
375
+ "inputs": [],
376
  "name": "Input chat",
377
+ "outputs": [
378
+ {
379
+ "name": "output",
380
+ "position": "right",
381
  "type": {
382
+ "type": "None"
383
  }
384
  }
385
+ ],
386
+ "params": [
387
+ {
388
+ "default": null,
389
+ "name": "chat",
390
  "type": {
391
+ "type": "<class 'str'>"
392
+ }
 
393
  }
394
+ ],
395
+ "type": "basic"
396
  },
397
+ "params": {
398
+ "chat": "What's your cheapest drink?"
399
+ },
400
+ "title": "Input chat"
401
  },
402
+ "height": 197.0,
403
+ "id": "Input chat 1",
404
+ "parentId": null,
405
  "position": {
406
  "x": -1169.0221491975267,
407
  "y": 142.6860253469853
408
  },
409
+ "type": "basic",
410
+ "width": 347.0
 
411
  },
412
  {
 
 
413
  "data": {
414
+ "__execution_delay": 0.0,
415
+ "collapsed": null,
 
 
 
416
  "display": null,
417
  "error": null,
 
 
418
  "meta": {
419
+ "inputs": [
420
+ {
421
+ "name": "input",
422
  "position": "left",
423
  "type": {
424
  "type": "<class 'inspect._empty'>"
425
+ }
 
426
  }
427
+ ],
428
+ "name": "Create prompt",
429
+ "outputs": [
430
+ {
431
  "name": "output",
432
  "position": "right",
433
  "type": {
434
  "type": "None"
435
  }
436
  }
437
+ ],
438
+ "params": [
439
+ {
440
+ "default": "prompt",
441
+ "name": "save_as",
442
  "type": {
443
  "type": "<class 'str'>"
444
+ }
 
 
445
  },
446
+ {
447
  "default": null,
448
+ "name": "template",
449
  "type": {
450
  "format": "textarea"
451
+ }
 
452
  }
453
+ ],
454
  "type": "basic"
455
+ },
456
+ "params": {
457
+ "save_as": "prompt",
458
+ "template": "\n{% for item in rag %}\n---\n{{item}}\n{% endfor %}\n---\nIs the information above sufficient to answer the following question?\n- {{text}}\n\nIf the information is insufficient please say so. Otherwise, provide the answer."
459
+ },
460
+ "title": "Create prompt"
461
  },
462
+ "height": 362.0,
463
+ "id": "Create prompt 1",
464
+ "parentId": null,
465
  "position": {
466
  "x": 324.81988008998496,
467
  "y": -9.071826950189632
468
  },
469
+ "type": "basic",
 
470
  "width": 270.0
471
  },
472
  {
 
 
473
  "data": {
 
 
 
 
 
 
 
474
  "display": null,
475
  "error": null,
476
  "meta": {
477
+ "inputs": [
478
+ {
479
+ "name": "db",
480
+ "position": "top",
 
481
  "type": {
482
+ "type": "<class 'inspect._empty'>"
483
  }
484
  },
485
+ {
486
+ "name": "input",
487
+ "position": "left",
488
  "type": {
489
+ "type": "<class 'inspect._empty'>"
490
  }
491
+ }
492
+ ],
493
+ "name": "RAG",
494
+ "outputs": [
495
+ {
496
+ "name": "output",
497
+ "position": "right",
498
+ "type": {
499
+ "type": "None"
500
+ }
501
+ }
502
+ ],
503
+ "params": [
504
+ {
505
+ "default": "text",
506
+ "name": "db_field",
507
+ "type": {
508
+ "type": "<class 'str'>"
509
+ }
510
+ },
511
+ {
512
+ "default": "RagEngine.Chroma",
513
+ "name": "engine",
514
  "type": {
515
  "enum": [
516
  "Chroma",
517
  "Custom"
518
  ]
519
+ }
 
 
520
  },
521
+ {
522
+ "default": "text",
523
+ "name": "input_field",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
524
  "type": {
525
+ "type": "<class 'str'>"
526
+ }
 
 
527
  },
528
+ {
529
+ "default": 10.0,
530
+ "name": "num_matches",
531
  "type": {
532
+ "type": "<class 'int'>"
533
+ }
 
534
  }
535
+ ],
536
  "type": "basic"
537
+ },
538
+ "params": {
539
+ "db_field": "text",
540
+ "engine": "Custom",
541
+ "input_field": "text",
542
+ "num_matches": "1"
543
+ },
544
+ "title": "RAG"
545
  },
546
+ "height": 424.0,
547
+ "id": "RAG 1",
548
+ "parentId": null,
549
  "position": {
550
  "x": -645.0268659124858,
551
  "y": 44.3669514323544
552
  },
553
+ "type": "basic",
554
+ "width": 423.0
 
555
  },
556
  {
 
 
557
  "data": {
558
+ "beingResized": false,
 
559
  "display": {
560
  "dataframes": {
561
  "df": {
 
575
  }
576
  },
577
  "error": null,
 
578
  "meta": {
579
+ "inputs": [
580
+ {
581
+ "name": "input",
582
+ "position": "left",
583
  "type": {
584
  "type": "<class 'inspect._empty'>"
585
+ }
 
 
586
  }
587
+ ],
588
+ "name": "View",
589
+ "outputs": [],
590
+ "params": [],
591
  "type": "table_view"
592
+ },
593
+ "params": {},
594
+ "title": "View"
595
  },
596
+ "height": 228.0,
597
+ "id": "View 3",
598
+ "parentId": null,
599
  "position": {
600
  "x": -43.795911596608875,
601
  "y": 457.1809102819045
602
  },
603
+ "type": "table_view",
604
+ "width": 296.0
 
605
  },
606
  {
 
 
607
  "data": {
608
+ "__execution_delay": 0.0,
609
+ "collapsed": null,
 
 
 
610
  "display": null,
611
  "error": null,
 
 
612
  "meta": {
613
+ "inputs": [
614
+ {
 
615
  "name": "input",
616
+ "position": "left",
617
  "type": {
618
  "type": "<class 'inspect._empty'>"
619
  }
620
  }
621
+ ],
622
+ "name": "Ask LLM",
623
+ "outputs": [
624
+ {
625
+ "name": "output",
626
+ "position": "right",
627
  "type": {
628
+ "type": "None"
629
+ }
630
+ }
631
+ ],
632
+ "params": [
633
+ {
634
  "default": null,
635
+ "name": "accepted_regex",
636
+ "type": {
637
+ "type": "<class 'str'>"
638
+ }
639
  },
640
+ {
 
641
  "default": 100.0,
642
+ "name": "max_tokens",
643
  "type": {
644
  "type": "<class 'int'>"
645
  }
646
  }
647
+ ],
 
 
 
 
 
 
 
 
 
 
648
  "type": "basic"
649
+ },
650
+ "params": {
651
+ "accepted_regex": "",
652
+ "max_tokens": 100.0
653
+ },
654
+ "title": "Ask LLM"
655
  },
656
+ "height": 329.0,
657
+ "id": "Ask LLM 1",
658
+ "parentId": null,
659
  "position": {
660
  "x": 649.0730411878703,
661
  "y": 29.290926423828694
662
  },
663
+ "type": "basic",
664
+ "width": 249.0
 
665
  },
666
  {
 
 
667
  "data": {
 
 
668
  "display": {
669
  "dataframes": {
670
  "df": {
 
691
  },
692
  "error": null,
693
  "meta": {
694
+ "inputs": [
695
+ {
696
+ "name": "input",
 
 
697
  "position": "left",
698
  "type": {
699
  "type": "<class 'inspect._empty'>"
700
+ }
 
701
  }
702
+ ],
703
+ "name": "View",
704
+ "outputs": [],
705
+ "params": [],
706
+ "type": "table_view"
707
+ },
708
+ "params": {},
709
+ "title": "View"
710
  },
711
+ "height": 644.0,
712
+ "id": "View 4",
713
+ "parentId": null,
714
  "position": {
715
  "x": 1017.4149773467798,
716
  "y": -71.64715104646865
717
  },
718
+ "type": "table_view",
 
719
  "width": 502.0
720
  },
721
  {
 
 
722
  "data": {
723
+ "collapsed": true,
 
724
  "display": null,
725
  "error": null,
 
726
  "meta": {
727
+ "inputs": [
728
+ {
729
+ "name": "input",
730
+ "position": "top",
731
+ "type": {
732
+ "type": "<class 'inspect._empty'>"
733
+ }
734
+ }
735
+ ],
736
  "name": "Build document graph",
737
+ "outputs": [
738
+ {
 
739
  "name": "output",
740
  "position": "right",
741
  "type": {
742
  "type": "None"
743
  }
744
  }
745
+ ],
746
+ "params": [],
 
 
 
 
 
 
 
 
747
  "type": "basic"
748
+ },
749
+ "params": {},
750
+ "title": "Build document graph"
751
  },
752
+ "height": 80.0,
753
+ "id": "Build document graph 1",
754
+ "parentId": null,
755
  "position": {
756
  "x": -36.39166052931119,
757
  "y": -212.34993098590766
758
  },
759
+ "type": "basic",
760
+ "width": 200.0
 
761
  },
762
  {
 
 
763
  "data": {
764
+ "collapsed": true,
 
765
  "display": null,
766
  "error": null,
767
  "meta": {
768
+ "inputs": [
769
+ {
770
+ "name": "edges",
771
+ "position": "top",
772
  "type": {
773
  "type": "<class 'inspect._empty'>"
774
+ }
 
 
775
  },
776
+ {
 
777
  "name": "item",
778
+ "position": "left",
779
  "type": {
780
  "type": "<class 'inspect._empty'>"
781
  }
782
  },
783
+ {
784
+ "name": "nodes",
785
  "position": "top",
786
  "type": {
787
  "type": "<class 'inspect._empty'>"
788
  }
789
  }
790
+ ],
 
791
  "name": "Add neighbors",
792
+ "outputs": [
793
+ {
 
794
  "name": "output",
795
+ "position": "right",
796
  "type": {
797
  "type": "None"
798
  }
799
  }
800
+ ],
801
+ "params": [],
802
+ "type": "basic"
803
  },
804
+ "params": {},
805
+ "title": "Add neighbors"
806
  },
807
+ "height": 56.0,
808
+ "id": "Add neighbors 1",
809
+ "parentId": null,
810
  "position": {
811
  "x": -2.516468588848724,
812
  "y": 167.64180115746848
813
  },
814
+ "type": "basic",
 
815
  "width": 200.0
816
  },
817
  {
 
 
818
  "data": {
819
+ "__execution_delay": null,
820
+ "collapsed": true,
821
  "display": null,
822
  "error": null,
 
823
  "meta": {
824
+ "inputs": [
825
+ {
826
+ "name": "edges",
827
+ "position": "top",
828
  "type": {
829
  "type": "<class 'inspect._empty'>"
830
+ }
 
 
831
  },
832
+ {
833
  "name": "nodes",
834
  "position": "top",
835
  "type": {
836
  "type": "<class 'inspect._empty'>"
837
  }
838
  }
839
+ ],
840
+ "name": "Predict links",
841
+ "outputs": [
842
+ {
843
  "name": "output",
844
+ "position": "right",
845
  "type": {
846
  "type": "None"
847
+ }
 
848
  }
849
+ ],
850
+ "params": [],
851
+ "type": "basic"
852
  },
853
+ "params": {},
854
+ "title": "Predict links"
855
  },
856
+ "height": 200.0,
857
+ "id": "Predict links 1",
858
+ "parentId": null,
859
  "position": {
860
  "x": 34.865308360949726,
861
  "y": -37.44504613652989
862
  },
863
+ "type": "basic",
864
+ "width": 200.0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
865
  }
866
  ]
867
  }
examples/Image processing.lynxkite.json CHANGED
@@ -46,26 +46,26 @@
46
  "error": null,
47
  "input_metadata": null,
48
  "meta": {
49
- "inputs": {},
50
  "name": "Open image",
51
- "outputs": {
52
- "output": {
53
  "name": "output",
54
  "position": "right",
55
  "type": {
56
  "type": "None"
57
  }
58
  }
59
- },
60
- "params": {
61
- "filename": {
62
  "default": null,
63
  "name": "filename",
64
  "type": {
65
  "type": "<class 'str'>"
66
  }
67
  }
68
- },
69
  "type": "basic"
70
  },
71
  "params": {
@@ -91,18 +91,18 @@
91
  "error": null,
92
  "input_metadata": null,
93
  "meta": {
94
- "inputs": {
95
- "image": {
96
  "name": "image",
97
  "position": "left",
98
  "type": {
99
  "type": "<module 'PIL.Image' from '/media/nvme/darabos/lynxkite-2024/.venv/lib/python3.11/site-packages/PIL/Image.py'>"
100
  }
101
  }
102
- },
103
  "name": "View image",
104
- "outputs": {},
105
- "params": {},
106
  "type": "image"
107
  },
108
  "params": {},
@@ -126,18 +126,18 @@
126
  "error": null,
127
  "input_metadata": null,
128
  "meta": {
129
- "inputs": {
130
- "image": {
131
  "name": "image",
132
  "position": "left",
133
  "type": {
134
  "type": "<module 'PIL.Image' from '/media/nvme/darabos/lynxkite-2024/.venv/lib/python3.11/site-packages/PIL/Image.py'>"
135
  }
136
  }
137
- },
138
  "name": "View image",
139
- "outputs": {},
140
- "params": {},
141
  "type": "image"
142
  },
143
  "params": {},
@@ -163,26 +163,26 @@
163
  "error": null,
164
  "input_metadata": null,
165
  "meta": {
166
- "inputs": {
167
- "image": {
168
  "name": "image",
169
  "position": "left",
170
  "type": {
171
  "type": "<module 'PIL.Image' from '/media/nvme/darabos/lynxkite-2024/.venv/lib/python3.11/site-packages/PIL/Image.py'>"
172
  }
173
  }
174
- },
175
  "name": "To grayscale",
176
- "outputs": {
177
- "output": {
178
  "name": "output",
179
  "position": "right",
180
  "type": {
181
  "type": "None"
182
  }
183
  }
184
- },
185
- "params": {},
186
  "type": "basic"
187
  },
188
  "params": {},
@@ -208,34 +208,34 @@
208
  "error": null,
209
  "input_metadata": null,
210
  "meta": {
211
- "inputs": {
212
- "image": {
213
  "name": "image",
214
  "position": "left",
215
  "type": {
216
  "type": "<module 'PIL.Image' from '/media/nvme/darabos/lynxkite-2024/.venv/lib/python3.11/site-packages/PIL/Image.py'>"
217
  }
218
  }
219
- },
220
  "name": "Blur",
221
- "outputs": {
222
- "output": {
223
  "name": "output",
224
  "position": "right",
225
  "type": {
226
  "type": "None"
227
  }
228
  }
229
- },
230
- "params": {
231
- "radius": {
232
  "default": 5.0,
233
  "name": "radius",
234
  "type": {
235
  "type": "<class 'float'>"
236
  }
237
  }
238
- },
239
  "type": "basic"
240
  },
241
  "params": {
@@ -263,26 +263,26 @@
263
  "error": null,
264
  "input_metadata": null,
265
  "meta": {
266
- "inputs": {
267
- "image": {
268
  "name": "image",
269
  "position": "left",
270
  "type": {
271
  "type": "<module 'PIL.Image' from '/media/nvme/darabos/lynxkite-2024/.venv/lib/python3.11/site-packages/PIL/Image.py'>"
272
  }
273
  }
274
- },
275
  "name": "Flip vertically",
276
- "outputs": {
277
- "output": {
278
  "name": "output",
279
  "position": "right",
280
  "type": {
281
  "type": "None"
282
  }
283
  }
284
- },
285
- "params": {},
286
  "type": "basic"
287
  },
288
  "params": {},
 
46
  "error": null,
47
  "input_metadata": null,
48
  "meta": {
49
+ "inputs": [],
50
  "name": "Open image",
51
+ "outputs": [
52
+ {
53
  "name": "output",
54
  "position": "right",
55
  "type": {
56
  "type": "None"
57
  }
58
  }
59
+ ],
60
+ "params": [
61
+ {
62
  "default": null,
63
  "name": "filename",
64
  "type": {
65
  "type": "<class 'str'>"
66
  }
67
  }
68
+ ],
69
  "type": "basic"
70
  },
71
  "params": {
 
91
  "error": null,
92
  "input_metadata": null,
93
  "meta": {
94
+ "inputs": [
95
+ {
96
  "name": "image",
97
  "position": "left",
98
  "type": {
99
  "type": "<module 'PIL.Image' from '/media/nvme/darabos/lynxkite-2024/.venv/lib/python3.11/site-packages/PIL/Image.py'>"
100
  }
101
  }
102
+ ],
103
  "name": "View image",
104
+ "outputs": [],
105
+ "params": [],
106
  "type": "image"
107
  },
108
  "params": {},
 
126
  "error": null,
127
  "input_metadata": null,
128
  "meta": {
129
+ "inputs": [
130
+ {
131
  "name": "image",
132
  "position": "left",
133
  "type": {
134
  "type": "<module 'PIL.Image' from '/media/nvme/darabos/lynxkite-2024/.venv/lib/python3.11/site-packages/PIL/Image.py'>"
135
  }
136
  }
137
+ ],
138
  "name": "View image",
139
+ "outputs": [],
140
+ "params": [],
141
  "type": "image"
142
  },
143
  "params": {},
 
163
  "error": null,
164
  "input_metadata": null,
165
  "meta": {
166
+ "inputs": [
167
+ {
168
  "name": "image",
169
  "position": "left",
170
  "type": {
171
  "type": "<module 'PIL.Image' from '/media/nvme/darabos/lynxkite-2024/.venv/lib/python3.11/site-packages/PIL/Image.py'>"
172
  }
173
  }
174
+ ],
175
  "name": "To grayscale",
176
+ "outputs": [
177
+ {
178
  "name": "output",
179
  "position": "right",
180
  "type": {
181
  "type": "None"
182
  }
183
  }
184
+ ],
185
+ "params": [],
186
  "type": "basic"
187
  },
188
  "params": {},
 
208
  "error": null,
209
  "input_metadata": null,
210
  "meta": {
211
+ "inputs": [
212
+ {
213
  "name": "image",
214
  "position": "left",
215
  "type": {
216
  "type": "<module 'PIL.Image' from '/media/nvme/darabos/lynxkite-2024/.venv/lib/python3.11/site-packages/PIL/Image.py'>"
217
  }
218
  }
219
+ ],
220
  "name": "Blur",
221
+ "outputs": [
222
+ {
223
  "name": "output",
224
  "position": "right",
225
  "type": {
226
  "type": "None"
227
  }
228
  }
229
+ ],
230
+ "params": [
231
+ {
232
  "default": 5.0,
233
  "name": "radius",
234
  "type": {
235
  "type": "<class 'float'>"
236
  }
237
  }
238
+ ],
239
  "type": "basic"
240
  },
241
  "params": {
 
263
  "error": null,
264
  "input_metadata": null,
265
  "meta": {
266
+ "inputs": [
267
+ {
268
  "name": "image",
269
  "position": "left",
270
  "type": {
271
  "type": "<module 'PIL.Image' from '/media/nvme/darabos/lynxkite-2024/.venv/lib/python3.11/site-packages/PIL/Image.py'>"
272
  }
273
  }
274
+ ],
275
  "name": "Flip vertically",
276
+ "outputs": [
277
+ {
278
  "name": "output",
279
  "position": "right",
280
  "type": {
281
  "type": "None"
282
  }
283
  }
284
+ ],
285
+ "params": [],
286
  "type": "basic"
287
  },
288
  "params": {},
examples/LynxScribe Data Cleaning.lynxkite.json CHANGED
@@ -46,26 +46,26 @@
46
  "error": null,
47
  "input_metadata": null,
48
  "meta": {
49
- "inputs": {},
50
  "name": "LynxScribe Message",
51
- "outputs": {
52
- "output": {
53
  "name": "output",
54
  "position": "top",
55
  "type": {
56
  "type": "None"
57
  }
58
  }
59
- },
60
- "params": {
61
- "prompt_content": {
62
  "default": null,
63
  "name": "prompt_content",
64
  "type": {
65
  "format": "textarea"
66
  }
67
  },
68
- "prompt_role": {
69
  "default": null,
70
  "name": "prompt_role",
71
  "type": {
@@ -75,7 +75,7 @@
75
  ]
76
  }
77
  }
78
- },
79
  "position": {
80
  "x": 653.0,
81
  "y": 954.0
@@ -107,26 +107,26 @@
107
  "error": null,
108
  "input_metadata": null,
109
  "meta": {
110
- "inputs": {},
111
  "name": "LynxScribe Message",
112
- "outputs": {
113
- "output": {
114
  "name": "output",
115
  "position": "top",
116
  "type": {
117
  "type": "None"
118
  }
119
  }
120
- },
121
- "params": {
122
- "prompt_content": {
123
  "default": null,
124
  "name": "prompt_content",
125
  "type": {
126
  "format": "textarea"
127
  }
128
  },
129
- "prompt_role": {
130
  "default": null,
131
  "name": "prompt_role",
132
  "type": {
@@ -136,7 +136,7 @@
136
  ]
137
  }
138
  }
139
- },
140
  "position": {
141
  "x": 1498.0,
142
  "y": 660.0
@@ -168,40 +168,40 @@
168
  "error": null,
169
  "input_metadata": null,
170
  "meta": {
171
- "inputs": {},
172
  "name": "Read Excel",
173
- "outputs": {
174
- "output": {
175
  "name": "output",
176
  "position": "right",
177
  "type": {
178
  "type": "None"
179
  }
180
  }
181
- },
182
- "params": {
183
- "columns": {
184
  "default": "",
185
  "name": "columns",
186
  "type": {
187
  "type": "<class 'str'>"
188
  }
189
  },
190
- "file_path": {
191
  "default": null,
192
  "name": "file_path",
193
  "type": {
194
  "type": "<class 'str'>"
195
  }
196
  },
197
- "sheet_name": {
198
  "default": "Sheet1",
199
  "name": "sheet_name",
200
  "type": {
201
  "type": "<class 'str'>"
202
  }
203
  }
204
- },
205
  "position": {
206
  "x": 236.0,
207
  "y": 150.0
@@ -234,62 +234,62 @@
234
  "error": null,
235
  "input_metadata": null,
236
  "meta": {
237
- "inputs": {
238
- "dataframe": {
239
  "name": "dataframe",
240
  "position": "left",
241
  "type": {
242
  "type": "<class 'inspect._empty'>"
243
  }
244
  },
245
- "instruction_prompt": {
246
  "name": "instruction_prompt",
247
  "position": "bottom",
248
  "type": {
249
  "type": "<class 'inspect._empty'>"
250
  }
251
  },
252
- "system_prompt": {
253
  "name": "system_prompt",
254
  "position": "bottom",
255
  "type": {
256
  "type": "<class 'inspect._empty'>"
257
  }
258
  }
259
- },
260
  "name": "LynxScribe Task Solver",
261
- "outputs": {
262
- "output": {
263
  "name": "output",
264
  "position": "right",
265
  "type": {
266
  "type": "None"
267
  }
268
  }
269
- },
270
- "params": {
271
- "llm_interface": {
272
  "default": "openai",
273
  "name": "llm_interface",
274
  "type": {
275
  "type": "<class 'str'>"
276
  }
277
  },
278
- "llm_model_name": {
279
  "default": "gpt-4o",
280
  "name": "llm_model_name",
281
  "type": {
282
  "type": "<class 'str'>"
283
  }
284
  },
285
- "new_column_names": {
286
  "default": "processed_field",
287
  "name": "new_column_names",
288
  "type": {
289
  "type": "<class 'str'>"
290
  }
291
  }
292
- },
293
  "position": {
294
  "x": 1511.0,
295
  "y": 220.0
@@ -431,18 +431,18 @@
431
  "error": null,
432
  "input_metadata": null,
433
  "meta": {
434
- "inputs": {
435
- "input": {
436
  "name": "input",
437
  "position": "bottom",
438
  "type": {
439
  "type": "<class 'inspect._empty'>"
440
  }
441
  }
442
- },
443
  "name": "View DataFrame",
444
- "outputs": {},
445
- "params": {},
446
  "position": {
447
  "x": 1719.0,
448
  "y": 332.0
@@ -500,18 +500,18 @@
500
  "error": null,
501
  "input_metadata": null,
502
  "meta": {
503
- "inputs": {
504
- "input": {
505
  "name": "input",
506
  "position": "bottom",
507
  "type": {
508
  "type": "<class 'inspect._empty'>"
509
  }
510
  }
511
- },
512
  "name": "View DataFrame",
513
- "outputs": {},
514
- "params": {},
515
  "position": {
516
  "x": 1083.0,
517
  "y": 134.0
 
46
  "error": null,
47
  "input_metadata": null,
48
  "meta": {
49
+ "inputs": [],
50
  "name": "LynxScribe Message",
51
+ "outputs": [
52
+ {
53
  "name": "output",
54
  "position": "top",
55
  "type": {
56
  "type": "None"
57
  }
58
  }
59
+ ],
60
+ "params": [
61
+ {
62
  "default": null,
63
  "name": "prompt_content",
64
  "type": {
65
  "format": "textarea"
66
  }
67
  },
68
+ {
69
  "default": null,
70
  "name": "prompt_role",
71
  "type": {
 
75
  ]
76
  }
77
  }
78
+ ],
79
  "position": {
80
  "x": 653.0,
81
  "y": 954.0
 
107
  "error": null,
108
  "input_metadata": null,
109
  "meta": {
110
+ "inputs": [],
111
  "name": "LynxScribe Message",
112
+ "outputs": [
113
+ {
114
  "name": "output",
115
  "position": "top",
116
  "type": {
117
  "type": "None"
118
  }
119
  }
120
+ ],
121
+ "params": [
122
+ {
123
  "default": null,
124
  "name": "prompt_content",
125
  "type": {
126
  "format": "textarea"
127
  }
128
  },
129
+ {
130
  "default": null,
131
  "name": "prompt_role",
132
  "type": {
 
136
  ]
137
  }
138
  }
139
+ ],
140
  "position": {
141
  "x": 1498.0,
142
  "y": 660.0
 
168
  "error": null,
169
  "input_metadata": null,
170
  "meta": {
171
+ "inputs": [],
172
  "name": "Read Excel",
173
+ "outputs": [
174
+ {
175
  "name": "output",
176
  "position": "right",
177
  "type": {
178
  "type": "None"
179
  }
180
  }
181
+ ],
182
+ "params": [
183
+ {
184
  "default": "",
185
  "name": "columns",
186
  "type": {
187
  "type": "<class 'str'>"
188
  }
189
  },
190
+ {
191
  "default": null,
192
  "name": "file_path",
193
  "type": {
194
  "type": "<class 'str'>"
195
  }
196
  },
197
+ {
198
  "default": "Sheet1",
199
  "name": "sheet_name",
200
  "type": {
201
  "type": "<class 'str'>"
202
  }
203
  }
204
+ ],
205
  "position": {
206
  "x": 236.0,
207
  "y": 150.0
 
234
  "error": null,
235
  "input_metadata": null,
236
  "meta": {
237
+ "inputs": [
238
+ {
239
  "name": "dataframe",
240
  "position": "left",
241
  "type": {
242
  "type": "<class 'inspect._empty'>"
243
  }
244
  },
245
+ {
246
  "name": "instruction_prompt",
247
  "position": "bottom",
248
  "type": {
249
  "type": "<class 'inspect._empty'>"
250
  }
251
  },
252
+ {
253
  "name": "system_prompt",
254
  "position": "bottom",
255
  "type": {
256
  "type": "<class 'inspect._empty'>"
257
  }
258
  }
259
+ ],
260
  "name": "LynxScribe Task Solver",
261
+ "outputs": [
262
+ {
263
  "name": "output",
264
  "position": "right",
265
  "type": {
266
  "type": "None"
267
  }
268
  }
269
+ ],
270
+ "params": [
271
+ {
272
  "default": "openai",
273
  "name": "llm_interface",
274
  "type": {
275
  "type": "<class 'str'>"
276
  }
277
  },
278
+ {
279
  "default": "gpt-4o",
280
  "name": "llm_model_name",
281
  "type": {
282
  "type": "<class 'str'>"
283
  }
284
  },
285
+ {
286
  "default": "processed_field",
287
  "name": "new_column_names",
288
  "type": {
289
  "type": "<class 'str'>"
290
  }
291
  }
292
+ ],
293
  "position": {
294
  "x": 1511.0,
295
  "y": 220.0
 
431
  "error": null,
432
  "input_metadata": null,
433
  "meta": {
434
+ "inputs": [
435
+ {
436
  "name": "input",
437
  "position": "bottom",
438
  "type": {
439
  "type": "<class 'inspect._empty'>"
440
  }
441
  }
442
+ ],
443
  "name": "View DataFrame",
444
+ "outputs": [],
445
+ "params": [],
446
  "position": {
447
  "x": 1719.0,
448
  "y": 332.0
 
500
  "error": null,
501
  "input_metadata": null,
502
  "meta": {
503
+ "inputs": [
504
+ {
505
  "name": "input",
506
  "position": "bottom",
507
  "type": {
508
  "type": "<class 'inspect._empty'>"
509
  }
510
  }
511
+ ],
512
  "name": "View DataFrame",
513
+ "outputs": [],
514
+ "params": [],
515
  "position": {
516
  "x": 1083.0,
517
  "y": 134.0
examples/LynxScribe FAQ Chatbot Builder.lynxkite.json CHANGED
@@ -60,68 +60,68 @@
60
  "error": null,
61
  "input_metadata": null,
62
  "meta": {
63
- "inputs": {},
64
  "name": "LynxScribe FAQ to RAG",
65
- "outputs": {
66
- "output": {
67
  "name": "output",
68
  "position": "right",
69
  "type": {
70
  "type": "None"
71
  }
72
  }
73
- },
74
- "params": {
75
- "faq_excel_path": {
76
  "default": "uploads/organon_demo/organon_en_copy.xlsx",
77
  "name": "faq_excel_path",
78
  "type": {
79
  "type": "<class 'str'>"
80
  }
81
  },
82
- "scenario_cluster_distance_pct": {
83
  "default": 30.0,
84
  "name": "scenario_cluster_distance_pct",
85
  "type": {
86
  "type": "<class 'float'>"
87
  }
88
  },
89
- "text_embedder_interface": {
90
  "default": "openai",
91
  "name": "text_embedder_interface",
92
  "type": {
93
  "type": "<class 'str'>"
94
  }
95
  },
96
- "text_embedder_model_name_or_path": {
97
  "default": "text-embedding-3-large",
98
  "name": "text_embedder_model_name_or_path",
99
  "type": {
100
  "type": "<class 'str'>"
101
  }
102
  },
103
- "vdb_collection_name": {
104
  "default": "lynx",
105
  "name": "vdb_collection_name",
106
  "type": {
107
  "type": "<class 'str'>"
108
  }
109
  },
110
- "vdb_num_dimensions": {
111
  "default": 3072.0,
112
  "name": "vdb_num_dimensions",
113
  "type": {
114
  "type": "<class 'int'>"
115
  }
116
  },
117
- "vdb_provider_name": {
118
  "default": "faiss",
119
  "name": "vdb_provider_name",
120
  "type": {
121
  "type": "<class 'str'>"
122
  }
123
  }
124
- },
125
  "type": "basic"
126
  },
127
  "params": {
@@ -154,48 +154,48 @@
154
  "error": null,
155
  "input_metadata": null,
156
  "meta": {
157
- "inputs": {
158
- "rag_graph": {
159
  "name": "rag_graph",
160
  "position": "left",
161
  "type": {
162
  "type": "<class 'inspect._empty'>"
163
  }
164
  }
165
- },
166
  "name": "LynxScribe RAG Graph Chatbot Builder",
167
- "outputs": {
168
- "output": {
169
  "name": "output",
170
  "position": "top",
171
  "type": {
172
  "type": "None"
173
  }
174
  }
175
- },
176
- "params": {
177
- "node_types": {
178
  "default": "intent_cluster",
179
  "name": "node_types",
180
  "type": {
181
  "type": "<class 'str'>"
182
  }
183
  },
184
- "scenario_file": {
185
  "default": "uploads/lynx_chatbot_scenario_selector.yaml",
186
  "name": "scenario_file",
187
  "type": {
188
  "type": "<class 'str'>"
189
  }
190
  },
191
- "scenario_meta_name": {
192
  "default": "scenario_name",
193
  "name": "scenario_meta_name",
194
  "type": {
195
  "type": "<class 'str'>"
196
  }
197
  }
198
- },
199
  "position": {
200
  "x": 1569.0,
201
  "y": 528.0
@@ -228,90 +228,90 @@
228
  "error": null,
229
  "input_metadata": null,
230
  "meta": {
231
- "inputs": {
232
- "chat_processor": {
233
  "name": "chat_processor",
234
  "position": "bottom",
235
  "type": {
236
  "type": "<class 'inspect._empty'>"
237
  }
238
  },
239
- "knowledge_base": {
240
  "name": "knowledge_base",
241
  "position": "bottom",
242
  "type": {
243
  "type": "<class 'inspect._empty'>"
244
  }
245
  }
246
- },
247
  "name": "LynxScribe RAG Graph Chatbot Backend",
248
- "outputs": {
249
- "output": {
250
  "name": "output",
251
  "position": "top",
252
  "type": {
253
  "type": "None"
254
  }
255
  }
256
- },
257
- "params": {
258
- "llm_interface": {
259
  "default": "openai",
260
  "name": "llm_interface",
261
  "type": {
262
  "type": "<class 'str'>"
263
  }
264
  },
265
- "llm_model_name": {
266
  "default": "gpt-4o",
267
  "name": "llm_model_name",
268
  "type": {
269
  "type": "<class 'str'>"
270
  }
271
  },
272
- "negative_answer": {
273
  "default": "I'm sorry, but the data I've been trained on does not contain any information related to your question.",
274
  "name": "negative_answer",
275
  "type": {
276
  "type": "<class 'str'>"
277
  }
278
  },
279
- "retriever_limits_by_type": {
280
  "default": "{}",
281
  "name": "retriever_limits_by_type",
282
  "type": {
283
  "type": "<class 'str'>"
284
  }
285
  },
286
- "retriever_max_iterations": {
287
  "default": 3.0,
288
  "name": "retriever_max_iterations",
289
  "type": {
290
  "type": "<class 'int'>"
291
  }
292
  },
293
- "retriever_overall_chunk_limit": {
294
  "default": 20.0,
295
  "name": "retriever_overall_chunk_limit",
296
  "type": {
297
  "type": "<class 'int'>"
298
  }
299
  },
300
- "retriever_overall_token_limit": {
301
  "default": 3000.0,
302
  "name": "retriever_overall_token_limit",
303
  "type": {
304
  "type": "<class 'int'>"
305
  }
306
  },
307
- "retriever_strict_limits": {
308
  "default": true,
309
  "name": "retriever_strict_limits",
310
  "type": {
311
  "type": "<class 'bool'>"
312
  }
313
  }
314
- },
315
  "position": {
316
  "x": 1280.0,
317
  "y": 450.0
@@ -347,26 +347,26 @@
347
  "error": null,
348
  "input_metadata": null,
349
  "meta": {
350
- "inputs": {
351
- "processor": {
352
  "name": "processor",
353
  "position": "bottom",
354
  "type": {
355
  "type": "<class 'inspect._empty'>"
356
  }
357
  }
358
- },
359
  "name": "Chat processor",
360
- "outputs": {
361
- "output": {
362
  "name": "output",
363
  "position": "top",
364
  "type": {
365
  "type": "None"
366
  }
367
  }
368
- },
369
- "params": {},
370
  "position": {
371
  "x": 1291.0,
372
  "y": 718.0
@@ -393,26 +393,26 @@
393
  "error": null,
394
  "input_metadata": null,
395
  "meta": {
396
- "inputs": {},
397
  "name": "Truncate history",
398
- "outputs": {
399
- "output": {
400
  "name": "output",
401
  "position": "top",
402
  "type": {
403
  "type": "None"
404
  }
405
  }
406
- },
407
- "params": {
408
- "max_tokens": {
409
  "default": 10000.0,
410
  "name": "max_tokens",
411
  "type": {
412
  "type": "<class 'int'>"
413
  }
414
  }
415
- },
416
  "position": {
417
  "x": 1440.0,
418
  "y": 936.0
@@ -443,26 +443,26 @@
443
  "error": null,
444
  "input_metadata": null,
445
  "meta": {
446
- "inputs": {},
447
  "name": "Input chat",
448
- "outputs": {
449
- "output": {
450
  "name": "output",
451
  "position": "right",
452
  "type": {
453
  "type": "None"
454
  }
455
  }
456
- },
457
- "params": {
458
- "chat": {
459
  "default": null,
460
  "name": "chat",
461
  "type": {
462
  "type": "<class 'str'>"
463
  }
464
  }
465
- },
466
  "position": {
467
  "x": 449.0,
468
  "y": 172.0
@@ -493,41 +493,41 @@
493
  "error": null,
494
  "input_metadata": null,
495
  "meta": {
496
- "inputs": {
497
- "chat_api": {
498
  "name": "chat_api",
499
  "position": "bottom",
500
  "type": {
501
  "type": "<class 'inspect._empty'>"
502
  }
503
  },
504
- "message": {
505
  "name": "message",
506
  "position": "left",
507
  "type": {
508
  "type": "<class 'inspect._empty'>"
509
  }
510
  }
511
- },
512
  "name": "Test Chat API",
513
- "outputs": {
514
- "output": {
515
  "name": "output",
516
  "position": "right",
517
  "type": {
518
  "type": "None"
519
  }
520
  }
521
- },
522
- "params": {
523
- "show_details": {
524
  "default": false,
525
  "name": "show_details",
526
  "type": {
527
  "type": "<class 'bool'>"
528
  }
529
  }
530
- },
531
  "position": {
532
  "x": 937.0,
533
  "y": 213.0
@@ -569,18 +569,18 @@
569
  "error": null,
570
  "input_metadata": null,
571
  "meta": {
572
- "inputs": {
573
- "input": {
574
  "name": "input",
575
  "position": "left",
576
  "type": {
577
  "type": "<class 'inspect._empty'>"
578
  }
579
  }
580
- },
581
  "name": "View",
582
- "outputs": {},
583
- "params": {},
584
  "position": {
585
  "x": 1547.0,
586
  "y": 222.0
 
60
  "error": null,
61
  "input_metadata": null,
62
  "meta": {
63
+ "inputs": [],
64
  "name": "LynxScribe FAQ to RAG",
65
+ "outputs": [
66
+ {
67
  "name": "output",
68
  "position": "right",
69
  "type": {
70
  "type": "None"
71
  }
72
  }
73
+ ],
74
+ "params": [
75
+ {
76
  "default": "uploads/organon_demo/organon_en_copy.xlsx",
77
  "name": "faq_excel_path",
78
  "type": {
79
  "type": "<class 'str'>"
80
  }
81
  },
82
+ {
83
  "default": 30.0,
84
  "name": "scenario_cluster_distance_pct",
85
  "type": {
86
  "type": "<class 'float'>"
87
  }
88
  },
89
+ {
90
  "default": "openai",
91
  "name": "text_embedder_interface",
92
  "type": {
93
  "type": "<class 'str'>"
94
  }
95
  },
96
+ {
97
  "default": "text-embedding-3-large",
98
  "name": "text_embedder_model_name_or_path",
99
  "type": {
100
  "type": "<class 'str'>"
101
  }
102
  },
103
+ {
104
  "default": "lynx",
105
  "name": "vdb_collection_name",
106
  "type": {
107
  "type": "<class 'str'>"
108
  }
109
  },
110
+ {
111
  "default": 3072.0,
112
  "name": "vdb_num_dimensions",
113
  "type": {
114
  "type": "<class 'int'>"
115
  }
116
  },
117
+ {
118
  "default": "faiss",
119
  "name": "vdb_provider_name",
120
  "type": {
121
  "type": "<class 'str'>"
122
  }
123
  }
124
+ ],
125
  "type": "basic"
126
  },
127
  "params": {
 
154
  "error": null,
155
  "input_metadata": null,
156
  "meta": {
157
+ "inputs": [
158
+ {
159
  "name": "rag_graph",
160
  "position": "left",
161
  "type": {
162
  "type": "<class 'inspect._empty'>"
163
  }
164
  }
165
+ ],
166
  "name": "LynxScribe RAG Graph Chatbot Builder",
167
+ "outputs": [
168
+ {
169
  "name": "output",
170
  "position": "top",
171
  "type": {
172
  "type": "None"
173
  }
174
  }
175
+ ],
176
+ "params": [
177
+ {
178
  "default": "intent_cluster",
179
  "name": "node_types",
180
  "type": {
181
  "type": "<class 'str'>"
182
  }
183
  },
184
+ {
185
  "default": "uploads/lynx_chatbot_scenario_selector.yaml",
186
  "name": "scenario_file",
187
  "type": {
188
  "type": "<class 'str'>"
189
  }
190
  },
191
+ {
192
  "default": "scenario_name",
193
  "name": "scenario_meta_name",
194
  "type": {
195
  "type": "<class 'str'>"
196
  }
197
  }
198
+ ],
199
  "position": {
200
  "x": 1569.0,
201
  "y": 528.0
 
228
  "error": null,
229
  "input_metadata": null,
230
  "meta": {
231
+ "inputs": [
232
+ {
233
  "name": "chat_processor",
234
  "position": "bottom",
235
  "type": {
236
  "type": "<class 'inspect._empty'>"
237
  }
238
  },
239
+ {
240
  "name": "knowledge_base",
241
  "position": "bottom",
242
  "type": {
243
  "type": "<class 'inspect._empty'>"
244
  }
245
  }
246
+ ],
247
  "name": "LynxScribe RAG Graph Chatbot Backend",
248
+ "outputs": [
249
+ {
250
  "name": "output",
251
  "position": "top",
252
  "type": {
253
  "type": "None"
254
  }
255
  }
256
+ ],
257
+ "params": [
258
+ {
259
  "default": "openai",
260
  "name": "llm_interface",
261
  "type": {
262
  "type": "<class 'str'>"
263
  }
264
  },
265
+ {
266
  "default": "gpt-4o",
267
  "name": "llm_model_name",
268
  "type": {
269
  "type": "<class 'str'>"
270
  }
271
  },
272
+ {
273
  "default": "I'm sorry, but the data I've been trained on does not contain any information related to your question.",
274
  "name": "negative_answer",
275
  "type": {
276
  "type": "<class 'str'>"
277
  }
278
  },
279
+ {
280
  "default": "{}",
281
  "name": "retriever_limits_by_type",
282
  "type": {
283
  "type": "<class 'str'>"
284
  }
285
  },
286
+ {
287
  "default": 3.0,
288
  "name": "retriever_max_iterations",
289
  "type": {
290
  "type": "<class 'int'>"
291
  }
292
  },
293
+ {
294
  "default": 20.0,
295
  "name": "retriever_overall_chunk_limit",
296
  "type": {
297
  "type": "<class 'int'>"
298
  }
299
  },
300
+ {
301
  "default": 3000.0,
302
  "name": "retriever_overall_token_limit",
303
  "type": {
304
  "type": "<class 'int'>"
305
  }
306
  },
307
+ {
308
  "default": true,
309
  "name": "retriever_strict_limits",
310
  "type": {
311
  "type": "<class 'bool'>"
312
  }
313
  }
314
+ ],
315
  "position": {
316
  "x": 1280.0,
317
  "y": 450.0
 
347
  "error": null,
348
  "input_metadata": null,
349
  "meta": {
350
+ "inputs": [
351
+ {
352
  "name": "processor",
353
  "position": "bottom",
354
  "type": {
355
  "type": "<class 'inspect._empty'>"
356
  }
357
  }
358
+ ],
359
  "name": "Chat processor",
360
+ "outputs": [
361
+ {
362
  "name": "output",
363
  "position": "top",
364
  "type": {
365
  "type": "None"
366
  }
367
  }
368
+ ],
369
+ "params": [],
370
  "position": {
371
  "x": 1291.0,
372
  "y": 718.0
 
393
  "error": null,
394
  "input_metadata": null,
395
  "meta": {
396
+ "inputs": [],
397
  "name": "Truncate history",
398
+ "outputs": [
399
+ {
400
  "name": "output",
401
  "position": "top",
402
  "type": {
403
  "type": "None"
404
  }
405
  }
406
+ ],
407
+ "params": [
408
+ {
409
  "default": 10000.0,
410
  "name": "max_tokens",
411
  "type": {
412
  "type": "<class 'int'>"
413
  }
414
  }
415
+ ],
416
  "position": {
417
  "x": 1440.0,
418
  "y": 936.0
 
443
  "error": null,
444
  "input_metadata": null,
445
  "meta": {
446
+ "inputs": [],
447
  "name": "Input chat",
448
+ "outputs": [
449
+ {
450
  "name": "output",
451
  "position": "right",
452
  "type": {
453
  "type": "None"
454
  }
455
  }
456
+ ],
457
+ "params": [
458
+ {
459
  "default": null,
460
  "name": "chat",
461
  "type": {
462
  "type": "<class 'str'>"
463
  }
464
  }
465
+ ],
466
  "position": {
467
  "x": 449.0,
468
  "y": 172.0
 
493
  "error": null,
494
  "input_metadata": null,
495
  "meta": {
496
+ "inputs": [
497
+ {
498
  "name": "chat_api",
499
  "position": "bottom",
500
  "type": {
501
  "type": "<class 'inspect._empty'>"
502
  }
503
  },
504
+ {
505
  "name": "message",
506
  "position": "left",
507
  "type": {
508
  "type": "<class 'inspect._empty'>"
509
  }
510
  }
511
+ ],
512
  "name": "Test Chat API",
513
+ "outputs": [
514
+ {
515
  "name": "output",
516
  "position": "right",
517
  "type": {
518
  "type": "None"
519
  }
520
  }
521
+ ],
522
+ "params": [
523
+ {
524
  "default": false,
525
  "name": "show_details",
526
  "type": {
527
  "type": "<class 'bool'>"
528
  }
529
  }
530
+ ],
531
  "position": {
532
  "x": 937.0,
533
  "y": 213.0
 
569
  "error": null,
570
  "input_metadata": null,
571
  "meta": {
572
+ "inputs": [
573
+ {
574
  "name": "input",
575
  "position": "left",
576
  "type": {
577
  "type": "<class 'inspect._empty'>"
578
  }
579
  }
580
+ ],
581
  "name": "View",
582
+ "outputs": [],
583
+ "params": [],
584
  "position": {
585
  "x": 1547.0,
586
  "y": 222.0
examples/LynxScribe Image Search.lynxkite.json CHANGED
@@ -46,26 +46,26 @@
46
  "error": null,
47
  "input_metadata": null,
48
  "meta": {
49
- "inputs": {},
50
  "name": "Cloud-sourced File Listing",
51
- "outputs": {
52
- "output": {
53
  "name": "output",
54
  "position": "right",
55
  "type": {
56
  "type": "None"
57
  }
58
  }
59
- },
60
- "params": {
61
- "accepted_file_types": {
62
  "default": ".jpg, .jpeg, .png",
63
  "name": "accepted_file_types",
64
  "type": {
65
  "type": "<class 'str'>"
66
  }
67
  },
68
- "cloud_provider": {
69
  "default": "gcp",
70
  "name": "cloud_provider",
71
  "type": {
@@ -76,14 +76,14 @@
76
  ]
77
  }
78
  },
79
- "folder_URL": {
80
  "default": "https://storage.googleapis.com/lynxkite_public_data/lynxscribe-images/image-rag-test",
81
  "name": "folder_URL",
82
  "type": {
83
  "type": "<class 'str'>"
84
  }
85
  }
86
- },
87
  "type": "basic"
88
  },
89
  "params": {
@@ -110,55 +110,55 @@
110
  "error": null,
111
  "input_metadata": null,
112
  "meta": {
113
- "inputs": {
114
- "file_urls": {
115
  "name": "file_urls",
116
  "position": "left",
117
  "type": {
118
  "type": "<class 'inspect._empty'>"
119
  }
120
  }
121
- },
122
  "name": "LynxScribe Image Describer",
123
- "outputs": {
124
- "output": {
125
  "name": "output",
126
  "position": "right",
127
  "type": {
128
  "type": "None"
129
  }
130
  }
131
- },
132
- "params": {
133
- "llm_interface": {
134
  "default": "openai",
135
  "name": "llm_interface",
136
  "type": {
137
  "type": "<class 'str'>"
138
  }
139
  },
140
- "llm_prompt_name": {
141
  "default": "cot_picture_descriptor",
142
  "name": "llm_prompt_name",
143
  "type": {
144
  "type": "<class 'str'>"
145
  }
146
  },
147
- "llm_prompt_path": {
148
  "default": "uploads/image_description_prompts.yaml",
149
  "name": "llm_prompt_path",
150
  "type": {
151
  "type": "<class 'str'>"
152
  }
153
  },
154
- "llm_visual_model": {
155
  "default": "gpt-4o",
156
  "name": "llm_visual_model",
157
  "type": {
158
  "type": "<class 'str'>"
159
  }
160
  }
161
- },
162
  "type": "basic"
163
  },
164
  "params": {
@@ -186,62 +186,62 @@
186
  "error": null,
187
  "input_metadata": null,
188
  "meta": {
189
- "inputs": {
190
- "image_descriptions": {
191
  "name": "image_descriptions",
192
  "position": "left",
193
  "type": {
194
  "type": "<class 'inspect._empty'>"
195
  }
196
  }
197
- },
198
  "name": "LynxScribe Image RAG Builder",
199
- "outputs": {
200
- "output": {
201
  "name": "output",
202
  "position": "right",
203
  "type": {
204
  "type": "None"
205
  }
206
  }
207
- },
208
- "params": {
209
- "text_embedder_interface": {
210
  "default": "openai",
211
  "name": "text_embedder_interface",
212
  "type": {
213
  "type": "<class 'str'>"
214
  }
215
  },
216
- "text_embedder_model_name_or_path": {
217
  "default": "text-embedding-3-large",
218
  "name": "text_embedder_model_name_or_path",
219
  "type": {
220
  "type": "<class 'str'>"
221
  }
222
  },
223
- "vdb_collection_name": {
224
  "default": "lynx",
225
  "name": "vdb_collection_name",
226
  "type": {
227
  "type": "<class 'str'>"
228
  }
229
  },
230
- "vdb_num_dimensions": {
231
  "default": 3072.0,
232
  "name": "vdb_num_dimensions",
233
  "type": {
234
  "type": "<class 'int'>"
235
  }
236
  },
237
- "vdb_provider_name": {
238
  "default": "faiss",
239
  "name": "vdb_provider_name",
240
  "type": {
241
  "type": "<class 'str'>"
242
  }
243
  }
244
- },
245
  "type": "basic"
246
  },
247
  "params": {
@@ -272,26 +272,26 @@
272
  "error": null,
273
  "input_metadata": null,
274
  "meta": {
275
- "inputs": {},
276
  "name": "Input chat",
277
- "outputs": {
278
- "output": {
279
  "name": "output",
280
  "position": "right",
281
  "type": {
282
  "type": "None"
283
  }
284
  }
285
- },
286
- "params": {
287
- "chat": {
288
  "default": null,
289
  "name": "chat",
290
  "type": {
291
  "type": "<class 'str'>"
292
  }
293
  }
294
- },
295
  "type": "basic"
296
  },
297
  "params": {
@@ -316,18 +316,18 @@
316
  "error": null,
317
  "input_metadata": null,
318
  "meta": {
319
- "inputs": {
320
- "embedding_similarities": {
321
  "name": "embedding_similarities",
322
  "position": "left",
323
  "type": {
324
  "type": "<class 'inspect._empty'>"
325
  }
326
  }
327
- },
328
  "name": "LynxScribe Image Result Viewer",
329
- "outputs": {},
330
- "params": {},
331
  "type": "image"
332
  },
333
  "params": {},
@@ -352,41 +352,41 @@
352
  "error": null,
353
  "input_metadata": null,
354
  "meta": {
355
- "inputs": {
356
- "rag_graph": {
357
  "name": "rag_graph",
358
  "position": "bottom",
359
  "type": {
360
  "type": "<class 'inspect._empty'>"
361
  }
362
  },
363
- "text": {
364
  "name": "text",
365
  "position": "left",
366
  "type": {
367
  "type": "<class 'inspect._empty'>"
368
  }
369
  }
370
- },
371
  "name": "LynxScribe Image RAG Query",
372
- "outputs": {
373
- "output": {
374
  "name": "output",
375
  "position": "right",
376
  "type": {
377
  "type": "None"
378
  }
379
  }
380
- },
381
- "params": {
382
- "top_k": {
383
  "default": 3.0,
384
  "name": "top_k",
385
  "type": {
386
  "type": "<class 'int'>"
387
  }
388
  }
389
- },
390
  "position": {
391
  "x": 1611.0,
392
  "y": 353.0
 
46
  "error": null,
47
  "input_metadata": null,
48
  "meta": {
49
+ "inputs": [],
50
  "name": "Cloud-sourced File Listing",
51
+ "outputs": [
52
+ {
53
  "name": "output",
54
  "position": "right",
55
  "type": {
56
  "type": "None"
57
  }
58
  }
59
+ ],
60
+ "params": [
61
+ {
62
  "default": ".jpg, .jpeg, .png",
63
  "name": "accepted_file_types",
64
  "type": {
65
  "type": "<class 'str'>"
66
  }
67
  },
68
+ {
69
  "default": "gcp",
70
  "name": "cloud_provider",
71
  "type": {
 
76
  ]
77
  }
78
  },
79
+ {
80
  "default": "https://storage.googleapis.com/lynxkite_public_data/lynxscribe-images/image-rag-test",
81
  "name": "folder_URL",
82
  "type": {
83
  "type": "<class 'str'>"
84
  }
85
  }
86
+ ],
87
  "type": "basic"
88
  },
89
  "params": {
 
110
  "error": null,
111
  "input_metadata": null,
112
  "meta": {
113
+ "inputs": [
114
+ {
115
  "name": "file_urls",
116
  "position": "left",
117
  "type": {
118
  "type": "<class 'inspect._empty'>"
119
  }
120
  }
121
+ ],
122
  "name": "LynxScribe Image Describer",
123
+ "outputs": [
124
+ {
125
  "name": "output",
126
  "position": "right",
127
  "type": {
128
  "type": "None"
129
  }
130
  }
131
+ ],
132
+ "params": [
133
+ {
134
  "default": "openai",
135
  "name": "llm_interface",
136
  "type": {
137
  "type": "<class 'str'>"
138
  }
139
  },
140
+ {
141
  "default": "cot_picture_descriptor",
142
  "name": "llm_prompt_name",
143
  "type": {
144
  "type": "<class 'str'>"
145
  }
146
  },
147
+ {
148
  "default": "uploads/image_description_prompts.yaml",
149
  "name": "llm_prompt_path",
150
  "type": {
151
  "type": "<class 'str'>"
152
  }
153
  },
154
+ {
155
  "default": "gpt-4o",
156
  "name": "llm_visual_model",
157
  "type": {
158
  "type": "<class 'str'>"
159
  }
160
  }
161
+ ],
162
  "type": "basic"
163
  },
164
  "params": {
 
186
  "error": null,
187
  "input_metadata": null,
188
  "meta": {
189
+ "inputs": [
190
+ {
191
  "name": "image_descriptions",
192
  "position": "left",
193
  "type": {
194
  "type": "<class 'inspect._empty'>"
195
  }
196
  }
197
+ ],
198
  "name": "LynxScribe Image RAG Builder",
199
+ "outputs": [
200
+ {
201
  "name": "output",
202
  "position": "right",
203
  "type": {
204
  "type": "None"
205
  }
206
  }
207
+ ],
208
+ "params": [
209
+ {
210
  "default": "openai",
211
  "name": "text_embedder_interface",
212
  "type": {
213
  "type": "<class 'str'>"
214
  }
215
  },
216
+ {
217
  "default": "text-embedding-3-large",
218
  "name": "text_embedder_model_name_or_path",
219
  "type": {
220
  "type": "<class 'str'>"
221
  }
222
  },
223
+ {
224
  "default": "lynx",
225
  "name": "vdb_collection_name",
226
  "type": {
227
  "type": "<class 'str'>"
228
  }
229
  },
230
+ {
231
  "default": 3072.0,
232
  "name": "vdb_num_dimensions",
233
  "type": {
234
  "type": "<class 'int'>"
235
  }
236
  },
237
+ {
238
  "default": "faiss",
239
  "name": "vdb_provider_name",
240
  "type": {
241
  "type": "<class 'str'>"
242
  }
243
  }
244
+ ],
245
  "type": "basic"
246
  },
247
  "params": {
 
272
  "error": null,
273
  "input_metadata": null,
274
  "meta": {
275
+ "inputs": [],
276
  "name": "Input chat",
277
+ "outputs": [
278
+ {
279
  "name": "output",
280
  "position": "right",
281
  "type": {
282
  "type": "None"
283
  }
284
  }
285
+ ],
286
+ "params": [
287
+ {
288
  "default": null,
289
  "name": "chat",
290
  "type": {
291
  "type": "<class 'str'>"
292
  }
293
  }
294
+ ],
295
  "type": "basic"
296
  },
297
  "params": {
 
316
  "error": null,
317
  "input_metadata": null,
318
  "meta": {
319
+ "inputs": [
320
+ {
321
  "name": "embedding_similarities",
322
  "position": "left",
323
  "type": {
324
  "type": "<class 'inspect._empty'>"
325
  }
326
  }
327
+ ],
328
  "name": "LynxScribe Image Result Viewer",
329
+ "outputs": [],
330
+ "params": [],
331
  "type": "image"
332
  },
333
  "params": {},
 
352
  "error": null,
353
  "input_metadata": null,
354
  "meta": {
355
+ "inputs": [
356
+ {
357
  "name": "rag_graph",
358
  "position": "bottom",
359
  "type": {
360
  "type": "<class 'inspect._empty'>"
361
  }
362
  },
363
+ {
364
  "name": "text",
365
  "position": "left",
366
  "type": {
367
  "type": "<class 'inspect._empty'>"
368
  }
369
  }
370
+ ],
371
  "name": "LynxScribe Image RAG Query",
372
+ "outputs": [
373
+ {
374
  "name": "output",
375
  "position": "right",
376
  "type": {
377
  "type": "None"
378
  }
379
  }
380
+ ],
381
+ "params": [
382
+ {
383
  "default": 3.0,
384
  "name": "top_k",
385
  "type": {
386
  "type": "<class 'int'>"
387
  }
388
  }
389
+ ],
390
  "position": {
391
  "x": 1611.0,
392
  "y": 353.0
examples/LynxScribe RAG Chatbot.lynxkite.json CHANGED
@@ -74,26 +74,26 @@
74
  "error": null,
75
  "input_metadata": null,
76
  "meta": {
77
- "inputs": {},
78
  "name": "Cloud-sourced File Listing",
79
- "outputs": {
80
- "output": {
81
  "name": "output",
82
  "position": "right",
83
  "type": {
84
  "type": "None"
85
  }
86
  }
87
- },
88
- "params": {
89
- "accepted_file_types": {
90
  "default": ".jpg, .jpeg, .png",
91
  "name": "accepted_file_types",
92
  "type": {
93
  "type": "<class 'str'>"
94
  }
95
  },
96
- "cloud_provider": {
97
  "default": "gcp",
98
  "name": "cloud_provider",
99
  "type": {
@@ -104,14 +104,14 @@
104
  ]
105
  }
106
  },
107
- "folder_URL": {
108
  "default": "https://storage.googleapis.com/lynxkite_public_data/lynxscribe-images/image-rag-test",
109
  "name": "folder_URL",
110
  "type": {
111
  "type": "<class 'str'>"
112
  }
113
  }
114
- },
115
  "type": "basic"
116
  },
117
  "params": {
@@ -140,27 +140,27 @@
140
  "error": null,
141
  "input_metadata": null,
142
  "meta": {
143
- "inputs": {
144
- "file_urls": {
145
  "name": "file_urls",
146
  "position": "left",
147
  "type": {
148
  "type": "<class 'inspect._empty'>"
149
  }
150
  }
151
- },
152
  "name": "LynxScribe Text RAG Loader",
153
- "outputs": {
154
- "output": {
155
  "name": "output",
156
  "position": "right",
157
  "type": {
158
  "type": "None"
159
  }
160
  }
161
- },
162
- "params": {
163
- "input_type": {
164
  "default": "v1",
165
  "name": "input_type",
166
  "type": {
@@ -170,42 +170,42 @@
170
  ]
171
  }
172
  },
173
- "text_embedder_interface": {
174
  "default": "openai",
175
  "name": "text_embedder_interface",
176
  "type": {
177
  "type": "<class 'str'>"
178
  }
179
  },
180
- "text_embedder_model_name_or_path": {
181
  "default": "text-embedding-3-large",
182
  "name": "text_embedder_model_name_or_path",
183
  "type": {
184
  "type": "<class 'str'>"
185
  }
186
  },
187
- "vdb_collection_name": {
188
  "default": "lynx",
189
  "name": "vdb_collection_name",
190
  "type": {
191
  "type": "<class 'str'>"
192
  }
193
  },
194
- "vdb_num_dimensions": {
195
  "default": 3072.0,
196
  "name": "vdb_num_dimensions",
197
  "type": {
198
  "type": "<class 'int'>"
199
  }
200
  },
201
- "vdb_provider_name": {
202
  "default": "faiss",
203
  "name": "vdb_provider_name",
204
  "type": {
205
  "type": "<class 'str'>"
206
  }
207
  }
208
- },
209
  "type": "basic"
210
  },
211
  "params": {
@@ -237,90 +237,90 @@
237
  "error": null,
238
  "input_metadata": null,
239
  "meta": {
240
- "inputs": {
241
- "chat_processor": {
242
  "name": "chat_processor",
243
  "position": "bottom",
244
  "type": {
245
  "type": "<class 'inspect._empty'>"
246
  }
247
  },
248
- "knowledge_base": {
249
  "name": "knowledge_base",
250
  "position": "bottom",
251
  "type": {
252
  "type": "<class 'inspect._empty'>"
253
  }
254
  }
255
- },
256
  "name": "LynxScribe RAG Graph Chatbot Backend",
257
- "outputs": {
258
- "output": {
259
  "name": "output",
260
  "position": "top",
261
  "type": {
262
  "type": "None"
263
  }
264
  }
265
- },
266
- "params": {
267
- "llm_interface": {
268
  "default": "openai",
269
  "name": "llm_interface",
270
  "type": {
271
  "type": "<class 'str'>"
272
  }
273
  },
274
- "llm_model_name": {
275
  "default": "gpt-4o",
276
  "name": "llm_model_name",
277
  "type": {
278
  "type": "<class 'str'>"
279
  }
280
  },
281
- "negative_answer": {
282
  "default": "I'm sorry, but the data I've been trained on does not contain any information related to your question.",
283
  "name": "negative_answer",
284
  "type": {
285
  "type": "<class 'str'>"
286
  }
287
  },
288
- "retriever_limits_by_type": {
289
  "default": "{}",
290
  "name": "retriever_limits_by_type",
291
  "type": {
292
  "type": "<class 'str'>"
293
  }
294
  },
295
- "retriever_max_iterations": {
296
  "default": 3.0,
297
  "name": "retriever_max_iterations",
298
  "type": {
299
  "type": "<class 'int'>"
300
  }
301
  },
302
- "retriever_overall_chunk_limit": {
303
  "default": 20.0,
304
  "name": "retriever_overall_chunk_limit",
305
  "type": {
306
  "type": "<class 'int'>"
307
  }
308
  },
309
- "retriever_overall_token_limit": {
310
  "default": 3000.0,
311
  "name": "retriever_overall_token_limit",
312
  "type": {
313
  "type": "<class 'int'>"
314
  }
315
  },
316
- "retriever_strict_limits": {
317
  "default": true,
318
  "name": "retriever_strict_limits",
319
  "type": {
320
  "type": "<class 'bool'>"
321
  }
322
  }
323
- },
324
  "type": "basic"
325
  },
326
  "params": {
@@ -352,26 +352,26 @@
352
  "error": null,
353
  "input_metadata": null,
354
  "meta": {
355
- "inputs": {
356
- "processor": {
357
  "name": "processor",
358
  "position": "bottom",
359
  "type": {
360
  "type": "<class 'inspect._empty'>"
361
  }
362
  }
363
- },
364
  "name": "Chat processor",
365
- "outputs": {
366
- "output": {
367
  "name": "output",
368
  "position": "top",
369
  "type": {
370
  "type": "None"
371
  }
372
  }
373
- },
374
- "params": {},
375
  "type": "basic"
376
  },
377
  "params": {},
@@ -394,26 +394,26 @@
394
  "error": null,
395
  "input_metadata": null,
396
  "meta": {
397
- "inputs": {},
398
  "name": "Truncate history",
399
- "outputs": {
400
- "output": {
401
  "name": "output",
402
  "position": "top",
403
  "type": {
404
  "type": "None"
405
  }
406
  }
407
- },
408
- "params": {
409
- "max_tokens": {
410
  "default": 10000.0,
411
  "name": "max_tokens",
412
  "type": {
413
  "type": "<class 'int'>"
414
  }
415
  }
416
- },
417
  "type": "basic"
418
  },
419
  "params": {
@@ -440,47 +440,47 @@
440
  "error": null,
441
  "input_metadata": null,
442
  "meta": {
443
- "inputs": {},
444
  "name": "Mask",
445
- "outputs": {
446
- "output": {
447
  "name": "output",
448
  "position": "top",
449
  "type": {
450
  "type": "None"
451
  }
452
  }
453
- },
454
- "params": {
455
- "exceptions": {
456
  "default": "",
457
  "name": "exceptions",
458
  "type": {
459
  "type": "<class 'str'>"
460
  }
461
  },
462
- "mask_pattern": {
463
  "default": "",
464
  "name": "mask_pattern",
465
  "type": {
466
  "type": "<class 'str'>"
467
  }
468
  },
469
- "name": {
470
  "default": "",
471
  "name": "name",
472
  "type": {
473
  "type": "<class 'str'>"
474
  }
475
  },
476
- "regex": {
477
  "default": "",
478
  "name": "regex",
479
  "type": {
480
  "type": "<class 'str'>"
481
  }
482
  }
483
- },
484
  "type": "basic"
485
  },
486
  "params": {
@@ -510,26 +510,26 @@
510
  "error": null,
511
  "input_metadata": null,
512
  "meta": {
513
- "inputs": {},
514
  "name": "Input chat",
515
- "outputs": {
516
- "output": {
517
  "name": "output",
518
  "position": "right",
519
  "type": {
520
  "type": "None"
521
  }
522
  }
523
- },
524
- "params": {
525
- "chat": {
526
  "default": null,
527
  "name": "chat",
528
  "type": {
529
  "type": "<class 'str'>"
530
  }
531
  }
532
- },
533
  "type": "basic"
534
  },
535
  "params": {
@@ -556,41 +556,41 @@
556
  "error": null,
557
  "input_metadata": null,
558
  "meta": {
559
- "inputs": {
560
- "chat_api": {
561
  "name": "chat_api",
562
  "position": "bottom",
563
  "type": {
564
  "type": "<class 'inspect._empty'>"
565
  }
566
  },
567
- "message": {
568
  "name": "message",
569
  "position": "left",
570
  "type": {
571
  "type": "<class 'inspect._empty'>"
572
  }
573
  }
574
- },
575
  "name": "Test Chat API",
576
- "outputs": {
577
- "output": {
578
  "name": "output",
579
  "position": "right",
580
  "type": {
581
  "type": "None"
582
  }
583
  }
584
- },
585
- "params": {
586
- "show_details": {
587
  "default": false,
588
  "name": "show_details",
589
  "type": {
590
  "type": "<class 'bool'>"
591
  }
592
  }
593
- },
594
  "type": "basic"
595
  },
596
  "params": {
@@ -628,18 +628,18 @@
628
  "error": null,
629
  "input_metadata": null,
630
  "meta": {
631
- "inputs": {
632
- "input": {
633
  "name": "input",
634
  "position": "left",
635
  "type": {
636
  "type": "<class 'inspect._empty'>"
637
  }
638
  }
639
- },
640
  "name": "View",
641
- "outputs": {},
642
- "params": {},
643
  "type": "table_view"
644
  },
645
  "params": {},
@@ -664,48 +664,48 @@
664
  "error": null,
665
  "input_metadata": null,
666
  "meta": {
667
- "inputs": {
668
- "rag_graph": {
669
  "name": "rag_graph",
670
  "position": "left",
671
  "type": {
672
  "type": "<class 'inspect._empty'>"
673
  }
674
  }
675
- },
676
  "name": "LynxScribe RAG Graph Chatbot Builder",
677
- "outputs": {
678
- "output": {
679
  "name": "output",
680
  "position": "top",
681
  "type": {
682
  "type": "None"
683
  }
684
  }
685
- },
686
- "params": {
687
- "node_types": {
688
  "default": "intent_cluster",
689
  "name": "node_types",
690
  "type": {
691
  "type": "<class 'str'>"
692
  }
693
  },
694
- "scenario_file": {
695
  "default": "uploads/lynx_chatbot_scenario_selector.yaml",
696
  "name": "scenario_file",
697
  "type": {
698
  "type": "<class 'str'>"
699
  }
700
  },
701
- "scenario_meta_name": {
702
  "default": "scenario_name",
703
  "name": "scenario_meta_name",
704
  "type": {
705
  "type": "<class 'str'>"
706
  }
707
  }
708
- },
709
  "position": {
710
  "x": 1121.0,
711
  "y": 813.0
 
74
  "error": null,
75
  "input_metadata": null,
76
  "meta": {
77
+ "inputs": [],
78
  "name": "Cloud-sourced File Listing",
79
+ "outputs": [
80
+ {
81
  "name": "output",
82
  "position": "right",
83
  "type": {
84
  "type": "None"
85
  }
86
  }
87
+ ],
88
+ "params": [
89
+ {
90
  "default": ".jpg, .jpeg, .png",
91
  "name": "accepted_file_types",
92
  "type": {
93
  "type": "<class 'str'>"
94
  }
95
  },
96
+ {
97
  "default": "gcp",
98
  "name": "cloud_provider",
99
  "type": {
 
104
  ]
105
  }
106
  },
107
+ {
108
  "default": "https://storage.googleapis.com/lynxkite_public_data/lynxscribe-images/image-rag-test",
109
  "name": "folder_URL",
110
  "type": {
111
  "type": "<class 'str'>"
112
  }
113
  }
114
+ ],
115
  "type": "basic"
116
  },
117
  "params": {
 
140
  "error": null,
141
  "input_metadata": null,
142
  "meta": {
143
+ "inputs": [
144
+ {
145
  "name": "file_urls",
146
  "position": "left",
147
  "type": {
148
  "type": "<class 'inspect._empty'>"
149
  }
150
  }
151
+ ],
152
  "name": "LynxScribe Text RAG Loader",
153
+ "outputs": [
154
+ {
155
  "name": "output",
156
  "position": "right",
157
  "type": {
158
  "type": "None"
159
  }
160
  }
161
+ ],
162
+ "params": [
163
+ {
164
  "default": "v1",
165
  "name": "input_type",
166
  "type": {
 
170
  ]
171
  }
172
  },
173
+ {
174
  "default": "openai",
175
  "name": "text_embedder_interface",
176
  "type": {
177
  "type": "<class 'str'>"
178
  }
179
  },
180
+ {
181
  "default": "text-embedding-3-large",
182
  "name": "text_embedder_model_name_or_path",
183
  "type": {
184
  "type": "<class 'str'>"
185
  }
186
  },
187
+ {
188
  "default": "lynx",
189
  "name": "vdb_collection_name",
190
  "type": {
191
  "type": "<class 'str'>"
192
  }
193
  },
194
+ {
195
  "default": 3072.0,
196
  "name": "vdb_num_dimensions",
197
  "type": {
198
  "type": "<class 'int'>"
199
  }
200
  },
201
+ {
202
  "default": "faiss",
203
  "name": "vdb_provider_name",
204
  "type": {
205
  "type": "<class 'str'>"
206
  }
207
  }
208
+ ],
209
  "type": "basic"
210
  },
211
  "params": {
 
237
  "error": null,
238
  "input_metadata": null,
239
  "meta": {
240
+ "inputs": [
241
+ {
242
  "name": "chat_processor",
243
  "position": "bottom",
244
  "type": {
245
  "type": "<class 'inspect._empty'>"
246
  }
247
  },
248
+ {
249
  "name": "knowledge_base",
250
  "position": "bottom",
251
  "type": {
252
  "type": "<class 'inspect._empty'>"
253
  }
254
  }
255
+ ],
256
  "name": "LynxScribe RAG Graph Chatbot Backend",
257
+ "outputs": [
258
+ {
259
  "name": "output",
260
  "position": "top",
261
  "type": {
262
  "type": "None"
263
  }
264
  }
265
+ ],
266
+ "params": [
267
+ {
268
  "default": "openai",
269
  "name": "llm_interface",
270
  "type": {
271
  "type": "<class 'str'>"
272
  }
273
  },
274
+ {
275
  "default": "gpt-4o",
276
  "name": "llm_model_name",
277
  "type": {
278
  "type": "<class 'str'>"
279
  }
280
  },
281
+ {
282
  "default": "I'm sorry, but the data I've been trained on does not contain any information related to your question.",
283
  "name": "negative_answer",
284
  "type": {
285
  "type": "<class 'str'>"
286
  }
287
  },
288
+ {
289
  "default": "{}",
290
  "name": "retriever_limits_by_type",
291
  "type": {
292
  "type": "<class 'str'>"
293
  }
294
  },
295
+ {
296
  "default": 3.0,
297
  "name": "retriever_max_iterations",
298
  "type": {
299
  "type": "<class 'int'>"
300
  }
301
  },
302
+ {
303
  "default": 20.0,
304
  "name": "retriever_overall_chunk_limit",
305
  "type": {
306
  "type": "<class 'int'>"
307
  }
308
  },
309
+ {
310
  "default": 3000.0,
311
  "name": "retriever_overall_token_limit",
312
  "type": {
313
  "type": "<class 'int'>"
314
  }
315
  },
316
+ {
317
  "default": true,
318
  "name": "retriever_strict_limits",
319
  "type": {
320
  "type": "<class 'bool'>"
321
  }
322
  }
323
+ ],
324
  "type": "basic"
325
  },
326
  "params": {
 
352
  "error": null,
353
  "input_metadata": null,
354
  "meta": {
355
+ "inputs": [
356
+ {
357
  "name": "processor",
358
  "position": "bottom",
359
  "type": {
360
  "type": "<class 'inspect._empty'>"
361
  }
362
  }
363
+ ],
364
  "name": "Chat processor",
365
+ "outputs": [
366
+ {
367
  "name": "output",
368
  "position": "top",
369
  "type": {
370
  "type": "None"
371
  }
372
  }
373
+ ],
374
+ "params": [],
375
  "type": "basic"
376
  },
377
  "params": {},
 
394
  "error": null,
395
  "input_metadata": null,
396
  "meta": {
397
+ "inputs": [],
398
  "name": "Truncate history",
399
+ "outputs": [
400
+ {
401
  "name": "output",
402
  "position": "top",
403
  "type": {
404
  "type": "None"
405
  }
406
  }
407
+ ],
408
+ "params": [
409
+ {
410
  "default": 10000.0,
411
  "name": "max_tokens",
412
  "type": {
413
  "type": "<class 'int'>"
414
  }
415
  }
416
+ ],
417
  "type": "basic"
418
  },
419
  "params": {
 
440
  "error": null,
441
  "input_metadata": null,
442
  "meta": {
443
+ "inputs": [],
444
  "name": "Mask",
445
+ "outputs": [
446
+ {
447
  "name": "output",
448
  "position": "top",
449
  "type": {
450
  "type": "None"
451
  }
452
  }
453
+ ],
454
+ "params": [
455
+ {
456
  "default": "",
457
  "name": "exceptions",
458
  "type": {
459
  "type": "<class 'str'>"
460
  }
461
  },
462
+ {
463
  "default": "",
464
  "name": "mask_pattern",
465
  "type": {
466
  "type": "<class 'str'>"
467
  }
468
  },
469
+ {
470
  "default": "",
471
  "name": "name",
472
  "type": {
473
  "type": "<class 'str'>"
474
  }
475
  },
476
+ {
477
  "default": "",
478
  "name": "regex",
479
  "type": {
480
  "type": "<class 'str'>"
481
  }
482
  }
483
+ ],
484
  "type": "basic"
485
  },
486
  "params": {
 
510
  "error": null,
511
  "input_metadata": null,
512
  "meta": {
513
+ "inputs": [],
514
  "name": "Input chat",
515
+ "outputs": [
516
+ {
517
  "name": "output",
518
  "position": "right",
519
  "type": {
520
  "type": "None"
521
  }
522
  }
523
+ ],
524
+ "params": [
525
+ {
526
  "default": null,
527
  "name": "chat",
528
  "type": {
529
  "type": "<class 'str'>"
530
  }
531
  }
532
+ ],
533
  "type": "basic"
534
  },
535
  "params": {
 
556
  "error": null,
557
  "input_metadata": null,
558
  "meta": {
559
+ "inputs": [
560
+ {
561
  "name": "chat_api",
562
  "position": "bottom",
563
  "type": {
564
  "type": "<class 'inspect._empty'>"
565
  }
566
  },
567
+ {
568
  "name": "message",
569
  "position": "left",
570
  "type": {
571
  "type": "<class 'inspect._empty'>"
572
  }
573
  }
574
+ ],
575
  "name": "Test Chat API",
576
+ "outputs": [
577
+ {
578
  "name": "output",
579
  "position": "right",
580
  "type": {
581
  "type": "None"
582
  }
583
  }
584
+ ],
585
+ "params": [
586
+ {
587
  "default": false,
588
  "name": "show_details",
589
  "type": {
590
  "type": "<class 'bool'>"
591
  }
592
  }
593
+ ],
594
  "type": "basic"
595
  },
596
  "params": {
 
628
  "error": null,
629
  "input_metadata": null,
630
  "meta": {
631
+ "inputs": [
632
+ {
633
  "name": "input",
634
  "position": "left",
635
  "type": {
636
  "type": "<class 'inspect._empty'>"
637
  }
638
  }
639
+ ],
640
  "name": "View",
641
+ "outputs": [],
642
+ "params": [],
643
  "type": "table_view"
644
  },
645
  "params": {},
 
664
  "error": null,
665
  "input_metadata": null,
666
  "meta": {
667
+ "inputs": [
668
+ {
669
  "name": "rag_graph",
670
  "position": "left",
671
  "type": {
672
  "type": "<class 'inspect._empty'>"
673
  }
674
  }
675
+ ],
676
  "name": "LynxScribe RAG Graph Chatbot Builder",
677
+ "outputs": [
678
+ {
679
  "name": "output",
680
  "position": "top",
681
  "type": {
682
  "type": "None"
683
  }
684
  }
685
+ ],
686
+ "params": [
687
+ {
688
  "default": "intent_cluster",
689
  "name": "node_types",
690
  "type": {
691
  "type": "<class 'str'>"
692
  }
693
  },
694
+ {
695
  "default": "uploads/lynx_chatbot_scenario_selector.yaml",
696
  "name": "scenario_file",
697
  "type": {
698
  "type": "<class 'str'>"
699
  }
700
  },
701
+ {
702
  "default": "scenario_name",
703
  "name": "scenario_meta_name",
704
  "type": {
705
  "type": "<class 'str'>"
706
  }
707
  }
708
+ ],
709
  "position": {
710
  "x": 1121.0,
711
  "y": 813.0
examples/Model definition.lynxkite.json CHANGED
@@ -81,26 +81,20 @@
81
  "error": null,
82
  "input_metadata": null,
83
  "meta": {
84
- "inputs": {
85
- "loss": {
 
86
  "name": "loss",
87
  "position": "bottom",
88
  "type": {
89
  "type": "tensor"
90
  }
91
  }
92
- },
93
  "name": "Optimizer",
94
- "outputs": {},
95
- "params": {
96
- "lr": {
97
- "default": 0.001,
98
- "name": "lr",
99
- "type": {
100
- "type": "<class 'float'>"
101
- }
102
- },
103
- "type": {
104
  "default": "AdamW",
105
  "name": "type",
106
  "type": {
@@ -114,15 +108,22 @@
114
  "Galore AdamW"
115
  ]
116
  }
 
 
 
 
 
 
 
117
  }
118
- },
119
  "type": "basic"
120
  },
121
  "params": {
122
  "lr": "0.1",
123
  "type": "SGD"
124
  },
125
- "status": "planned",
126
  "title": "Optimizer"
127
  },
128
  "dragHandle": ".bg-primary",
@@ -130,7 +131,7 @@
130
  "id": "Optimizer 2",
131
  "position": {
132
  "x": 359.75221367487865,
133
- "y": -1560.7604266065723
134
  },
135
  "type": "basic",
136
  "width": 232.0
@@ -143,27 +144,28 @@
143
  "error": null,
144
  "input_metadata": null,
145
  "meta": {
146
- "inputs": {
147
- "x": {
 
148
  "name": "x",
149
  "position": "bottom",
150
  "type": {
151
  "type": "<class 'inspect._empty'>"
152
  }
153
  }
154
- },
155
  "name": "Activation",
156
- "outputs": {
157
- "output": {
158
  "name": "output",
159
  "position": "top",
160
  "type": {
161
  "type": "None"
162
  }
163
  }
164
- },
165
- "params": {
166
- "type": {
167
  "default": "ReLU",
168
  "name": "type",
169
  "type": {
@@ -175,13 +177,13 @@
175
  ]
176
  }
177
  }
178
- },
179
  "type": "basic"
180
  },
181
  "params": {
182
  "type": "Leaky_ReLU"
183
  },
184
- "status": "planned",
185
  "title": "Activation"
186
  },
187
  "dragHandle": ".bg-primary",
@@ -202,40 +204,41 @@
202
  "error": null,
203
  "input_metadata": null,
204
  "meta": {
205
- "inputs": {},
 
206
  "name": "Input: tensor",
207
- "outputs": {
208
- "output": {
209
  "name": "output",
210
  "position": "top",
211
  "type": {
212
  "type": "tensor"
213
  }
214
  }
215
- },
216
- "params": {
217
- "name": {
218
  "default": null,
219
  "name": "name",
220
  "type": {
221
  "type": "None"
222
  }
223
  }
224
- },
225
  "type": "basic"
226
  },
227
  "params": {
228
  "name": "Y"
229
  },
230
- "status": "planned",
231
  "title": "Input: tensor"
232
  },
233
  "dragHandle": ".bg-primary",
234
  "height": 200.0,
235
  "id": "Input: tensor 3",
236
  "position": {
237
- "x": 485.8840220312055,
238
- "y": -268.0485936515193
239
  },
240
  "type": "basic",
241
  "width": 200.0
@@ -248,45 +251,46 @@
248
  "error": null,
249
  "input_metadata": null,
250
  "meta": {
251
- "inputs": {
252
- "x": {
 
253
  "name": "x",
254
  "position": "bottom",
255
  "type": {
256
  "type": "<class 'inspect._empty'>"
257
  }
258
  },
259
- "y": {
260
  "name": "y",
261
  "position": "bottom",
262
  "type": {
263
  "type": "<class 'inspect._empty'>"
264
  }
265
  }
266
- },
267
  "name": "MSE loss",
268
- "outputs": {
269
- "output": {
270
  "name": "output",
271
  "position": "top",
272
  "type": {
273
  "type": "None"
274
  }
275
  }
276
- },
277
- "params": {},
278
  "type": "basic"
279
  },
280
  "params": {},
281
- "status": "planned",
282
  "title": "MSE loss"
283
  },
284
  "dragHandle": ".bg-primary",
285
  "height": 200.0,
286
  "id": "MSE loss 2",
287
  "position": {
288
- "x": 384.54674698852955,
289
- "y": -1184.4701545316577
290
  },
291
  "type": "basic",
292
  "width": 200.0
@@ -299,48 +303,49 @@
299
  "error": null,
300
  "input_metadata": null,
301
  "meta": {
302
- "inputs": {
303
- "input": {
 
304
  "name": "input",
305
  "position": "top",
306
  "type": {
307
  "type": "tensor"
308
  }
309
  }
310
- },
311
  "name": "Repeat",
312
- "outputs": {
313
- "output": {
314
  "name": "output",
315
  "position": "bottom",
316
  "type": {
317
  "type": "tensor"
318
  }
319
  }
320
- },
321
- "params": {
322
- "same_weights": {
323
- "default": false,
324
- "name": "same_weights",
325
- "type": {
326
- "type": "<class 'bool'>"
327
- }
328
- },
329
- "times": {
330
  "default": 1.0,
331
  "name": "times",
332
  "type": {
333
  "type": "<class 'int'>"
334
  }
 
 
 
 
 
 
 
335
  }
336
- },
337
  "type": "basic"
338
  },
339
  "params": {
340
  "same_weights": false,
341
  "times": "2"
342
  },
343
- "status": "planned",
344
  "title": "Repeat"
345
  },
346
  "dragHandle": ".bg-primary",
@@ -361,51 +366,52 @@
361
  "error": null,
362
  "input_metadata": null,
363
  "meta": {
364
- "inputs": {
365
- "x": {
 
366
  "name": "x",
367
  "position": "bottom",
368
  "type": {
369
  "type": "<class 'inspect._empty'>"
370
  }
371
  }
372
- },
373
  "name": "Linear",
374
- "outputs": {
375
- "output": {
376
  "name": "output",
377
  "position": "top",
378
  "type": {
379
  "type": "None"
380
  }
381
  }
382
- },
383
- "params": {
384
- "output_dim": {
385
  "default": 1024.0,
386
  "name": "output_dim",
387
  "type": {
388
  "type": "<class 'int'>"
389
  }
390
  }
391
- },
392
  "type": "basic"
393
  },
394
  "params": {
395
  "output_dim": "4"
396
  },
397
- "status": "planned",
398
  "title": "Linear"
399
  },
400
  "dragHandle": ".bg-primary",
401
- "height": 200.0,
402
  "id": "Linear 1",
403
  "position": {
404
  "x": 98.54861342271252,
405
  "y": 14.121603973834155
406
  },
407
  "type": "basic",
408
- "width": 200.0
409
  },
410
  {
411
  "data": {
@@ -415,32 +421,33 @@
415
  "error": null,
416
  "input_metadata": null,
417
  "meta": {
418
- "inputs": {},
 
419
  "name": "Input: tensor",
420
- "outputs": {
421
- "output": {
422
  "name": "output",
423
  "position": "top",
424
  "type": {
425
  "type": "tensor"
426
  }
427
  }
428
- },
429
- "params": {
430
- "name": {
431
  "default": null,
432
  "name": "name",
433
  "type": {
434
  "type": "None"
435
  }
436
  }
437
- },
438
  "type": "basic"
439
  },
440
  "params": {
441
  "name": "X"
442
  },
443
- "status": "planned",
444
  "title": "Input: tensor"
445
  },
446
  "dragHandle": ".bg-primary",
@@ -461,48 +468,49 @@
461
  "error": null,
462
  "input_metadata": null,
463
  "meta": {
464
- "inputs": {},
 
465
  "name": "Constant vector",
466
- "outputs": {
467
- "output": {
468
  "name": "output",
469
  "position": "top",
470
  "type": {
471
  "type": "None"
472
  }
473
  }
474
- },
475
- "params": {
476
- "size": {
477
- "default": 1.0,
478
- "name": "size",
479
  "type": {
480
  "type": "<class 'int'>"
481
  }
482
  },
483
- "value": {
484
- "default": 0.0,
485
- "name": "value",
486
  "type": {
487
  "type": "<class 'int'>"
488
  }
489
  }
490
- },
491
  "type": "basic"
492
  },
493
  "params": {
494
  "size": "1",
495
  "value": "1"
496
  },
497
- "status": "planned",
498
  "title": "Constant vector"
499
  },
500
  "dragHandle": ".bg-primary",
501
  "height": 258.0,
502
  "id": "Constant vector 1",
503
  "position": {
504
- "x": 886.708922897265,
505
- "y": -298.4394167425953
506
  },
507
  "type": "basic",
508
  "width": 238.0
@@ -515,45 +523,46 @@
515
  "error": null,
516
  "input_metadata": null,
517
  "meta": {
518
- "inputs": {
519
- "a": {
 
520
  "name": "a",
521
  "position": "bottom",
522
  "type": {
523
  "type": "<class 'inspect._empty'>"
524
  }
525
  },
526
- "b": {
527
  "name": "b",
528
  "position": "bottom",
529
  "type": {
530
  "type": "<class 'inspect._empty'>"
531
  }
532
  }
533
- },
534
  "name": "Add",
535
- "outputs": {
536
- "output": {
537
  "name": "output",
538
  "position": "top",
539
  "type": {
540
  "type": "None"
541
  }
542
  }
543
- },
544
- "params": {},
545
  "type": "basic"
546
  },
547
  "params": {},
548
- "status": "planned",
549
  "title": "Add"
550
  },
551
  "dragHandle": ".bg-primary",
552
  "height": 200.0,
553
  "id": "Add 1",
554
  "position": {
555
- "x": 722.1292469875319,
556
- "y": -762.6853551968964
557
  },
558
  "type": "basic",
559
  "width": 200.0
@@ -566,46 +575,47 @@
566
  "error": null,
567
  "input_metadata": null,
568
  "meta": {
569
- "inputs": {
570
- "x": {
 
571
  "name": "x",
572
  "position": "bottom",
573
  "type": {
574
  "type": "tensor"
575
  }
576
  }
577
- },
578
  "name": "Output",
579
- "outputs": {
580
- "x": {
581
  "name": "x",
582
  "position": "top",
583
  "type": {
584
  "type": "tensor"
585
  }
586
  }
587
- },
588
- "params": {
589
- "name": {
590
  "default": null,
591
  "name": "name",
592
  "type": {
593
  "type": "None"
594
  }
595
  }
596
- },
597
  "type": "basic"
598
  },
599
  "params": {},
600
- "status": "planned",
601
  "title": "Output"
602
  },
603
  "dragHandle": ".bg-primary",
604
  "height": 200.0,
605
  "id": "Output 1",
606
  "position": {
607
- "x": 185.15239170944702,
608
- "y": -733.1526319565451
609
  },
610
  "type": "basic",
611
  "width": 200.0
 
81
  "error": null,
82
  "input_metadata": null,
83
  "meta": {
84
+ "color": "green",
85
+ "inputs": [
86
+ {
87
  "name": "loss",
88
  "position": "bottom",
89
  "type": {
90
  "type": "tensor"
91
  }
92
  }
93
+ ],
94
  "name": "Optimizer",
95
+ "outputs": [],
96
+ "params": [
97
+ {
 
 
 
 
 
 
 
98
  "default": "AdamW",
99
  "name": "type",
100
  "type": {
 
108
  "Galore AdamW"
109
  ]
110
  }
111
+ },
112
+ {
113
+ "default": 0.001,
114
+ "name": "lr",
115
+ "type": {
116
+ "type": "<class 'float'>"
117
+ }
118
  }
119
+ ],
120
  "type": "basic"
121
  },
122
  "params": {
123
  "lr": "0.1",
124
  "type": "SGD"
125
  },
126
+ "status": "done",
127
  "title": "Optimizer"
128
  },
129
  "dragHandle": ".bg-primary",
 
131
  "id": "Optimizer 2",
132
  "position": {
133
  "x": 359.75221367487865,
134
+ "y": -1150.2183224762075
135
  },
136
  "type": "basic",
137
  "width": 232.0
 
144
  "error": null,
145
  "input_metadata": null,
146
  "meta": {
147
+ "color": "orange",
148
+ "inputs": [
149
+ {
150
  "name": "x",
151
  "position": "bottom",
152
  "type": {
153
  "type": "<class 'inspect._empty'>"
154
  }
155
  }
156
+ ],
157
  "name": "Activation",
158
+ "outputs": [
159
+ {
160
  "name": "output",
161
  "position": "top",
162
  "type": {
163
  "type": "None"
164
  }
165
  }
166
+ ],
167
+ "params": [
168
+ {
169
  "default": "ReLU",
170
  "name": "type",
171
  "type": {
 
177
  ]
178
  }
179
  }
180
+ ],
181
  "type": "basic"
182
  },
183
  "params": {
184
  "type": "Leaky_ReLU"
185
  },
186
+ "status": "done",
187
  "title": "Activation"
188
  },
189
  "dragHandle": ".bg-primary",
 
204
  "error": null,
205
  "input_metadata": null,
206
  "meta": {
207
+ "color": "orange",
208
+ "inputs": [],
209
  "name": "Input: tensor",
210
+ "outputs": [
211
+ {
212
  "name": "output",
213
  "position": "top",
214
  "type": {
215
  "type": "tensor"
216
  }
217
  }
218
+ ],
219
+ "params": [
220
+ {
221
  "default": null,
222
  "name": "name",
223
  "type": {
224
  "type": "None"
225
  }
226
  }
227
+ ],
228
  "type": "basic"
229
  },
230
  "params": {
231
  "name": "Y"
232
  },
233
+ "status": "done",
234
  "title": "Input: tensor"
235
  },
236
  "dragHandle": ".bg-primary",
237
  "height": 200.0,
238
  "id": "Input: tensor 3",
239
  "position": {
240
+ "x": 454.7823474758749,
241
+ "y": -212.0655794519241
242
  },
243
  "type": "basic",
244
  "width": 200.0
 
251
  "error": null,
252
  "input_metadata": null,
253
  "meta": {
254
+ "color": "orange",
255
+ "inputs": [
256
+ {
257
  "name": "x",
258
  "position": "bottom",
259
  "type": {
260
  "type": "<class 'inspect._empty'>"
261
  }
262
  },
263
+ {
264
  "name": "y",
265
  "position": "bottom",
266
  "type": {
267
  "type": "<class 'inspect._empty'>"
268
  }
269
  }
270
+ ],
271
  "name": "MSE loss",
272
+ "outputs": [
273
+ {
274
  "name": "output",
275
  "position": "top",
276
  "type": {
277
  "type": "None"
278
  }
279
  }
280
+ ],
281
+ "params": [],
282
  "type": "basic"
283
  },
284
  "params": {},
285
+ "status": "done",
286
  "title": "MSE loss"
287
  },
288
  "dragHandle": ".bg-primary",
289
  "height": 200.0,
290
  "id": "MSE loss 2",
291
  "position": {
292
+ "x": 375.21624462193034,
293
+ "y": -721.0552036572305
294
  },
295
  "type": "basic",
296
  "width": 200.0
 
303
  "error": null,
304
  "input_metadata": null,
305
  "meta": {
306
+ "color": "orange",
307
+ "inputs": [
308
+ {
309
  "name": "input",
310
  "position": "top",
311
  "type": {
312
  "type": "tensor"
313
  }
314
  }
315
+ ],
316
  "name": "Repeat",
317
+ "outputs": [
318
+ {
319
  "name": "output",
320
  "position": "bottom",
321
  "type": {
322
  "type": "tensor"
323
  }
324
  }
325
+ ],
326
+ "params": [
327
+ {
 
 
 
 
 
 
 
328
  "default": 1.0,
329
  "name": "times",
330
  "type": {
331
  "type": "<class 'int'>"
332
  }
333
+ },
334
+ {
335
+ "default": false,
336
+ "name": "same_weights",
337
+ "type": {
338
+ "type": "<class 'bool'>"
339
+ }
340
  }
341
+ ],
342
  "type": "basic"
343
  },
344
  "params": {
345
  "same_weights": false,
346
  "times": "2"
347
  },
348
+ "status": "done",
349
  "title": "Repeat"
350
  },
351
  "dragHandle": ".bg-primary",
 
366
  "error": null,
367
  "input_metadata": null,
368
  "meta": {
369
+ "color": "blue",
370
+ "inputs": [
371
+ {
372
  "name": "x",
373
  "position": "bottom",
374
  "type": {
375
  "type": "<class 'inspect._empty'>"
376
  }
377
  }
378
+ ],
379
  "name": "Linear",
380
+ "outputs": [
381
+ {
382
  "name": "output",
383
  "position": "top",
384
  "type": {
385
  "type": "None"
386
  }
387
  }
388
+ ],
389
+ "params": [
390
+ {
391
  "default": 1024.0,
392
  "name": "output_dim",
393
  "type": {
394
  "type": "<class 'int'>"
395
  }
396
  }
397
+ ],
398
  "type": "basic"
399
  },
400
  "params": {
401
  "output_dim": "4"
402
  },
403
+ "status": "done",
404
  "title": "Linear"
405
  },
406
  "dragHandle": ".bg-primary",
407
+ "height": 189.0,
408
  "id": "Linear 1",
409
  "position": {
410
  "x": 98.54861342271252,
411
  "y": 14.121603973834155
412
  },
413
  "type": "basic",
414
+ "width": 199.0
415
  },
416
  {
417
  "data": {
 
421
  "error": null,
422
  "input_metadata": null,
423
  "meta": {
424
+ "color": "orange",
425
+ "inputs": [],
426
  "name": "Input: tensor",
427
+ "outputs": [
428
+ {
429
  "name": "output",
430
  "position": "top",
431
  "type": {
432
  "type": "tensor"
433
  }
434
  }
435
+ ],
436
+ "params": [
437
+ {
438
  "default": null,
439
  "name": "name",
440
  "type": {
441
  "type": "None"
442
  }
443
  }
444
+ ],
445
  "type": "basic"
446
  },
447
  "params": {
448
  "name": "X"
449
  },
450
+ "status": "done",
451
  "title": "Input: tensor"
452
  },
453
  "dragHandle": ".bg-primary",
 
468
  "error": null,
469
  "input_metadata": null,
470
  "meta": {
471
+ "color": "orange",
472
+ "inputs": [],
473
  "name": "Constant vector",
474
+ "outputs": [
475
+ {
476
  "name": "output",
477
  "position": "top",
478
  "type": {
479
  "type": "None"
480
  }
481
  }
482
+ ],
483
+ "params": [
484
+ {
485
+ "default": 0.0,
486
+ "name": "value",
487
  "type": {
488
  "type": "<class 'int'>"
489
  }
490
  },
491
+ {
492
+ "default": 1.0,
493
+ "name": "size",
494
  "type": {
495
  "type": "<class 'int'>"
496
  }
497
  }
498
+ ],
499
  "type": "basic"
500
  },
501
  "params": {
502
  "size": "1",
503
  "value": "1"
504
  },
505
+ "status": "done",
506
  "title": "Constant vector"
507
  },
508
  "dragHandle": ".bg-primary",
509
  "height": 258.0,
510
  "id": "Constant vector 1",
511
  "position": {
512
+ "x": 846.2767459753351,
513
+ "y": -226.90556526533476
514
  },
515
  "type": "basic",
516
  "width": 238.0
 
523
  "error": null,
524
  "input_metadata": null,
525
  "meta": {
526
+ "color": "orange",
527
+ "inputs": [
528
+ {
529
  "name": "a",
530
  "position": "bottom",
531
  "type": {
532
  "type": "<class 'inspect._empty'>"
533
  }
534
  },
535
+ {
536
  "name": "b",
537
  "position": "bottom",
538
  "type": {
539
  "type": "<class 'inspect._empty'>"
540
  }
541
  }
542
+ ],
543
  "name": "Add",
544
+ "outputs": [
545
+ {
546
  "name": "output",
547
  "position": "top",
548
  "type": {
549
  "type": "None"
550
  }
551
  }
552
+ ],
553
+ "params": [],
554
  "type": "basic"
555
  },
556
  "params": {},
557
+ "status": "done",
558
  "title": "Add"
559
  },
560
  "dragHandle": ".bg-primary",
561
  "height": 200.0,
562
  "id": "Add 1",
563
  "position": {
564
+ "x": 631.934390777073,
565
+ "y": -395.6855954439944
566
  },
567
  "type": "basic",
568
  "width": 200.0
 
575
  "error": null,
576
  "input_metadata": null,
577
  "meta": {
578
+ "color": "orange",
579
+ "inputs": [
580
+ {
581
  "name": "x",
582
  "position": "bottom",
583
  "type": {
584
  "type": "tensor"
585
  }
586
  }
587
+ ],
588
  "name": "Output",
589
+ "outputs": [
590
+ {
591
  "name": "x",
592
  "position": "top",
593
  "type": {
594
  "type": "tensor"
595
  }
596
  }
597
+ ],
598
+ "params": [
599
+ {
600
  "default": null,
601
  "name": "name",
602
  "type": {
603
  "type": "None"
604
  }
605
  }
606
+ ],
607
  "type": "basic"
608
  },
609
  "params": {},
610
+ "status": "done",
611
  "title": "Output"
612
  },
613
  "dragHandle": ".bg-primary",
614
  "height": 200.0,
615
  "id": "Output 1",
616
  "position": {
617
+ "x": 119.83887514325258,
618
+ "y": -453.23756095856885
619
  },
620
  "type": "basic",
621
  "width": 200.0
examples/Model use.lynxkite.json CHANGED
@@ -137,41 +137,42 @@
137
  }
138
  ],
139
  "meta": {
140
- "inputs": {
141
- "bundle": {
 
142
  "name": "bundle",
143
  "position": "left",
144
  "type": {
145
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
146
  }
147
  }
148
- },
149
  "name": "Train/test split",
150
- "outputs": {
151
- "output": {
152
  "name": "output",
153
  "position": "right",
154
  "type": {
155
  "type": "None"
156
  }
157
  }
158
- },
159
- "params": {
160
- "table_name": {
161
  "default": null,
162
  "name": "table_name",
163
  "type": {
164
  "type": "<class 'str'>"
165
  }
166
  },
167
- "test_ratio": {
168
  "default": 0.1,
169
  "name": "test_ratio",
170
  "type": {
171
  "type": "<class 'float'>"
172
  }
173
  }
174
- },
175
  "type": "basic"
176
  },
177
  "params": {
@@ -234,26 +235,27 @@
234
  "error": null,
235
  "input_metadata": [],
236
  "meta": {
237
- "inputs": {},
 
238
  "name": "Import Parquet",
239
- "outputs": {
240
- "output": {
241
  "name": "output",
242
  "position": "right",
243
  "type": {
244
  "type": "None"
245
  }
246
  }
247
- },
248
- "params": {
249
- "filename": {
250
  "default": null,
251
  "name": "filename",
252
  "type": {
253
  "type": "<class 'str'>"
254
  }
255
  }
256
- },
257
  "type": "basic"
258
  },
259
  "params": {
@@ -383,41 +385,42 @@
383
  }
384
  ],
385
  "meta": {
386
- "inputs": {
387
- "bundle": {
 
388
  "name": "bundle",
389
  "position": "left",
390
  "type": {
391
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
392
  }
393
  }
394
- },
395
  "name": "Define model",
396
- "outputs": {
397
- "output": {
398
  "name": "output",
399
  "position": "right",
400
  "type": {
401
  "type": "None"
402
  }
403
  }
404
- },
405
- "params": {
406
- "model_workspace": {
407
  "default": null,
408
  "name": "model_workspace",
409
  "type": {
410
  "type": "<class 'str'>"
411
  }
412
  },
413
- "save_as": {
414
  "default": "model",
415
  "name": "save_as",
416
  "type": {
417
  "type": "<class 'str'>"
418
  }
419
  }
420
- },
421
  "type": "basic"
422
  },
423
  "params": {
@@ -575,8 +578,8 @@
575
  "Input__tensor_1_output"
576
  ],
577
  "loss_inputs": [
578
- "Output_1_x",
579
- "Input__tensor_3_output"
580
  ],
581
  "outputs": [
582
  "Output_1_x"
@@ -590,48 +593,49 @@
590
  }
591
  ],
592
  "meta": {
593
- "inputs": {
594
- "bundle": {
 
595
  "name": "bundle",
596
  "position": "left",
597
  "type": {
598
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
599
  }
600
  }
601
- },
602
  "name": "Train model",
603
- "outputs": {
604
- "output": {
605
  "name": "output",
606
  "position": "right",
607
  "type": {
608
  "type": "None"
609
  }
610
  }
611
- },
612
- "params": {
613
- "epochs": {
614
- "default": 1.0,
615
- "name": "epochs",
616
  "type": {
617
- "type": "<class 'int'>"
618
  }
619
  },
620
- "input_mapping": {
621
  "default": null,
622
  "name": "input_mapping",
623
  "type": {
624
  "type": "<class 'lynxkite_graph_analytics.ml_ops.ModelTrainingInputMapping'>"
625
  }
626
  },
627
- "model_name": {
628
- "default": "model",
629
- "name": "model_name",
630
  "type": {
631
- "type": "<class 'str'>"
632
  }
633
  }
634
- },
635
  "type": "basic"
636
  },
637
  "params": {
@@ -800,8 +804,8 @@
800
  "Input__tensor_1_output"
801
  ],
802
  "loss_inputs": [
803
- "Output_1_x",
804
- "Input__tensor_3_output"
805
  ],
806
  "outputs": [
807
  "Output_1_x"
@@ -815,48 +819,49 @@
815
  }
816
  ],
817
  "meta": {
818
- "inputs": {
819
- "bundle": {
 
820
  "name": "bundle",
821
  "position": "left",
822
  "type": {
823
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
824
  }
825
  }
826
- },
827
  "name": "Model inference",
828
- "outputs": {
829
- "output": {
830
  "name": "output",
831
  "position": "right",
832
  "type": {
833
  "type": "None"
834
  }
835
  }
836
- },
837
- "params": {
838
- "input_mapping": {
839
- "default": null,
840
- "name": "input_mapping",
841
- "type": {
842
- "type": "<class 'lynxkite_graph_analytics.ml_ops.ModelInferenceInputMapping'>"
843
- }
844
- },
845
- "model_name": {
846
  "default": "model",
847
  "name": "model_name",
848
  "type": {
849
  "type": "<class 'str'>"
850
  }
851
  },
852
- "output_mapping": {
 
 
 
 
 
 
 
853
  "default": null,
854
  "name": "output_mapping",
855
  "type": {
856
  "type": "<class 'lynxkite_graph_analytics.ml_ops.ModelOutputMapping'>"
857
  }
858
  }
859
- },
860
  "type": "basic"
861
  },
862
  "params": {
@@ -1475,206 +1480,206 @@
1475
  "series": [
1476
  {
1477
  "data": [
1478
- 5.800187110900879,
1479
- 5.598123073577881,
1480
- 5.42051887512207,
1481
- 5.2726593017578125,
1482
- 5.157590389251709,
1483
- 5.0745649337768555,
1484
- 5.0191521644592285,
1485
- 4.984806537628174,
1486
- 4.964847564697266,
1487
- 4.953816890716553,
1488
- 4.947908878326416,
1489
- 4.944762706756592,
1490
- 4.943039417266846,
1491
- 4.942024230957031,
1492
- 4.941353797912598,
1493
- 4.9408488273620605,
1494
- 4.940422058105469,
1495
- 4.940032482147217,
1496
- 4.939662456512451,
1497
- 4.939301013946533,
1498
- 4.938945293426514,
1499
- 4.938592910766602,
1500
- 4.9382429122924805,
1501
- 4.937894344329834,
1502
- 4.937548637390137,
1503
- 4.937204837799072,
1504
- 4.936861515045166,
1505
- 4.936521053314209,
1506
- 4.936007976531982,
1507
- 4.928510665893555,
1508
- 4.7543463706970215,
1509
- 4.202136039733887,
1510
- 3.841205596923828,
1511
- 3.605153799057007,
1512
- 3.4602854251861572,
1513
- 3.377415657043457,
1514
- 3.3322527408599854,
1515
- 3.308159589767456,
1516
- 3.2952585220336914,
1517
- 3.288172960281372,
1518
- 3.2841086387634277,
1519
- 3.2816221714019775,
1520
- 3.2797133922576904,
1521
- 3.251174211502075,
1522
- 2.534057140350342,
1523
- 2.100238800048828,
1524
- 1.8637852668762207,
1525
- 1.7448025941848755,
1526
- 1.6882381439208984,
1527
- 1.6618977785110474,
1528
- 1.6495403051376343,
1529
- 1.6435632705688477,
1530
- 1.6405097246170044,
1531
- 1.6388026475906372,
1532
- 1.6377187967300415,
1533
- 1.6369259357452393,
1534
- 1.6362708806991577,
1535
- 1.635683536529541,
1536
- 1.6351302862167358,
1537
- 1.6345962285995483,
1538
- 1.634074091911316,
1539
- 1.6335605382919312,
1540
- 1.6330533027648926,
1541
- 1.6325511932373047,
1542
- 1.6320583820343018,
1543
- 1.6315733194351196,
1544
- 1.6311031579971313,
1545
- 1.6306471824645996,
1546
- 1.6301956176757812,
1547
- 1.6297489404678345,
1548
- 1.629309892654419,
1549
- 1.6288747787475586,
1550
- 1.6284427642822266,
1551
- 1.6280156373977661,
1552
- 1.6275969743728638,
1553
- 1.6271847486495972,
1554
- 1.6267770528793335,
1555
- 1.6263741254806519,
1556
- 1.625981092453003,
1557
- 1.625562071800232,
1558
- 1.6234854459762573,
1559
- 1.526026964187622,
1560
- 0.7520114779472351,
1561
- 0.36320704221725464,
1562
- 0.19313177466392517,
1563
- 0.12368442118167877,
1564
- 0.09587223827838898,
1565
- 0.08457889407873154,
1566
- 0.07980319857597351,
1567
- 0.07760757952928543,
1568
- 0.0764402449131012,
1569
- 0.07568377256393433,
1570
- 0.0751044973731041,
1571
- 0.07460036873817444,
1572
- 0.07414067536592484,
1573
- 0.073702372610569,
1574
- 0.07327572256326675,
1575
- 0.0728573128581047,
1576
- 0.07244749367237091,
1577
- 0.07204563170671463,
1578
- 0.07165331393480301,
1579
- 0.07127555459737778,
1580
- 0.07090453058481216,
1581
- 0.07054518908262253,
1582
- 0.07019751518964767,
1583
- 0.06985506415367126,
1584
- 0.06952166557312012,
1585
- 0.06919547915458679,
1586
- 0.06887446343898773,
1587
- 0.06856007128953934,
1588
- 0.0682557001709938,
1589
- 0.06795719265937805,
1590
- 0.06766397505998611,
1591
- 0.06737591326236725,
1592
- 0.06709206104278564,
1593
- 0.06681231409311295,
1594
- 0.06653629243373871,
1595
- 0.06626027077436447,
1596
- 0.06598811596632004,
1597
- 0.06571972370147705,
1598
- 0.06545503437519073,
1599
- 0.06519390642642975,
1600
- 0.06493626534938812,
1601
- 0.06468204408884048,
1602
- 0.06443134695291519,
1603
- 0.06418412178754807,
1604
- 0.06394005566835403,
1605
- 0.06369906663894653,
1606
- 0.06346159428358078,
1607
- 0.0632280632853508,
1608
- 0.06299739331007004,
1609
- 0.06276948750019073,
1610
- 0.0625443086028099,
1611
- 0.06232282891869545,
1612
- 0.06210631504654884,
1613
- 0.061892297118902206,
1614
- 0.06168072670698166,
1615
- 0.06147276982665062,
1616
- 0.061268385499715805,
1617
- 0.061066266149282455,
1618
- 0.0608663484454155,
1619
- 0.060668591409921646,
1620
- 0.06047294661402702,
1621
- 0.06027935445308685,
1622
- 0.06008780375123024,
1623
- 0.05989820510149002,
1624
- 0.0597105510532856,
1625
- 0.059524793177843094,
1626
- 0.05934089794754982,
1627
- 0.0591588169336319,
1628
- 0.05897851660847664,
1629
- 0.058799974620342255,
1630
- 0.05862313508987427,
1631
- 0.05844798684120178,
1632
- 0.05827448144555092,
1633
- 0.05810258165001869,
1634
- 0.057932913303375244,
1635
- 0.05776538327336311,
1636
- 0.05759938061237335,
1637
- 0.05743485689163208,
1638
- 0.05727178603410721,
1639
- 0.057110145688056946,
1640
- 0.05694990232586861,
1641
- 0.056791022419929504,
1642
- 0.056633491069078445,
1643
- 0.05647730454802513,
1644
- 0.05632239580154419,
1645
- 0.056168779730796814,
1646
- 0.05601642653346062,
1647
- 0.05586530268192291,
1648
- 0.05571539327502251,
1649
- 0.05556711554527283,
1650
- 0.05542108789086342,
1651
- 0.05527620390057564,
1652
- 0.05513244494795799,
1653
- 0.05498979613184929,
1654
- 0.054848212748765945,
1655
- 0.05470770597457886,
1656
- 0.05456825718283653,
1657
- 0.05442983657121658,
1658
- 0.05429244041442871,
1659
- 0.05415605381131172,
1660
- 0.05402064323425293,
1661
- 0.05388621985912323,
1662
- 0.05375276133418083,
1663
- 0.05362024903297424,
1664
- 0.05348866432905197,
1665
- 0.05335800349712372,
1666
- 0.053228266537189484,
1667
- 0.0530996136367321,
1668
- 0.052972279489040375,
1669
- 0.05284580960869789,
1670
- 0.05272020027041435,
1671
- 0.05259542167186737,
1672
- 0.05247148126363754,
1673
- 0.05234837532043457,
1674
- 0.05222644284367561,
1675
- 0.052105557173490524,
1676
- 0.05198581516742706,
1677
- 0.051866982132196426
1678
  ],
1679
  "type": "line"
1680
  }
@@ -1726,8 +1731,8 @@
1726
  "Input__tensor_1_output"
1727
  ],
1728
  "loss_inputs": [
1729
- "Output_1_x",
1730
- "Input__tensor_3_output"
1731
  ],
1732
  "outputs": [
1733
  "Output_1_x"
@@ -1741,18 +1746,19 @@
1741
  }
1742
  ],
1743
  "meta": {
1744
- "inputs": {
1745
- "bundle": {
 
1746
  "name": "bundle",
1747
  "position": "left",
1748
  "type": {
1749
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
1750
  }
1751
  }
1752
- },
1753
  "name": "View loss",
1754
- "outputs": {},
1755
- "params": {},
1756
  "type": "visualization"
1757
  },
1758
  "params": {},
@@ -2192,184 +2198,184 @@
2192
  ],
2193
  "data": [
2194
  [
2195
- 56,
2196
- "[0.32565445 0.90939188 0.07488042 0.13730896]",
2197
- "[1.32565451 1.90939188 1.07488036 1.13730896]",
2198
- "[2.3657565116882324, 2.313479423522949, 2.1553378105163574, 2.1699535846710205]"
2199
  ],
2200
  [
2201
- 23,
2202
- "[0.90817457 0.89270043 0.38583666 0.66566533]",
2203
- "[1.90817451 1.89270043 1.3858366 1.66566539]",
2204
- "[2.8040859699249268, 2.819502830505371, 2.7440733909606934, 2.7479381561279297]"
2205
  ],
2206
  [
2207
- 59,
2208
- "[0.54914117 0.03810108 0.87531954 0.73044223]",
2209
- "[1.54914117 1.03810108 1.87531948 1.73044229]",
2210
- "[2.5295400619506836, 2.495408773422241, 2.4967894554138184, 2.6805124282836914]"
2211
  ],
2212
  [
2213
- 33,
2214
- "[0.27845025 0.32472342 0.82203609 0.77107543]",
2215
- "[1.27845025 1.32472348 1.82203603 1.77107549]",
2216
- "[2.5397789478302, 2.508394241333008, 2.4924893379211426, 2.650639057159424]"
2217
  ],
2218
  [
2219
- 62,
2220
- "[0.81788456 0.58174163 0.29376316 0.7971254 ]",
2221
- "[1.81788456 1.58174157 1.29376316 1.79712534]",
2222
- "[2.64847731590271, 2.634650230407715, 2.6081323623657227, 2.7195992469787598]"
2223
  ],
2224
  [
2225
- 76,
2226
- "[0.59492421 0.90274489 0.38069052 0.46101224]",
2227
- "[1.59492421 1.90274489 1.38069057 1.46101224]",
2228
- "[2.646230697631836, 2.637777090072632, 2.52846097946167, 2.531282424926758]"
2229
  ],
2230
  [
2231
- 71,
2232
- "[0.9630242 0.76359051 0.24853623 0.76881069]",
2233
- "[1.96302414 1.76359057 1.24853623 1.76881075]",
2234
- "[2.748387575149536, 2.752307176589966, 2.706347942352295, 2.764111042022705]"
2235
  ],
2236
  [
2237
- 4,
2238
- "[0.76807946 0.98855817 0.08259124 0.01730657]",
2239
- "[1.76807952 1.98855817 1.0825913 1.01730657]",
2240
- "[2.525120258331299, 2.500986099243164, 2.3167755603790283, 2.2522761821746826]"
2241
  ],
2242
  [
2243
- 29,
2244
  "[0.23942459 0.90487361 0.69337189 0.65089428]",
2245
  "[1.23942459 1.90487361 1.69337189 1.65089428]",
2246
- "[2.6811459064483643, 2.6773998737335205, 2.5942978858947754, 2.6238982677459717]"
2247
  ],
2248
  [
2249
- 90,
2250
- "[0.49584109 0.80599248 0.07096875 0.75872749]",
2251
- "[1.49584103 1.80599248 1.07096875 1.75872755]",
2252
- "[2.53598952293396, 2.5045714378356934, 2.455559015274048, 2.5678346157073975]"
2253
  ],
2254
  [
2255
- 21,
2256
- "[0.56922203 0.98222166 0.76851749 0.28615737]",
2257
- "[1.56922197 1.9822216 1.76851749 1.28615737]",
2258
- "[2.764127016067505, 2.778721809387207, 2.6293208599090576, 2.547865152359009]"
2259
  ],
2260
  [
2261
- 98,
2262
- "[0.87608397 0.93200487 0.80169648 0.37758952]",
2263
- "[1.87608397 1.93200493 1.80169654 1.37758946]",
2264
- "[2.885874032974243, 2.9194400310516357, 2.7887256145477295, 2.6982016563415527]"
2265
  ],
2266
  [
2267
- 66,
2268
- "[0.02162331 0.81861657 0.92468154 0.07808572]",
2269
- "[1.02162337 1.81861663 1.92468154 1.07808566]",
2270
- "[2.5120248794555664, 2.486686944961548, 2.315469741821289, 2.275869369506836]"
2271
  ],
2272
  [
2273
- 73,
2274
- "[0.80654246 0.08253473 0.74478531 0.71257162]",
2275
- "[1.8065424 1.08253479 1.74478531 1.71257162]",
2276
- "[2.5862319469451904, 2.5615270137786865, 2.5580317974090576, 2.718832015991211]"
2277
  ],
2278
  [
2279
- 49,
2280
- "[0.08107251 0.2602725 0.18861133 0.44833237]",
2281
- "[1.08107257 1.2602725 1.18861127 1.44833231]",
2282
- "[2.1395106315612793, 2.043048858642578, 1.9888705015182495, 2.2045695781707764]"
2283
  ],
2284
  [
2285
- 6,
2286
- "[0.18686318 0.49356437 0.51323432 0.75392658]",
2287
- "[1.18686318 1.49356437 1.51323438 1.75392652]",
2288
- "[2.4604146480560303, 2.416104793548584, 2.3870620727539062, 2.5486795902252197]"
2289
  ],
2290
  [
2291
- 30,
2292
- "[0.94516498 0.08422136 0.5608117 0.07652664]",
2293
- "[1.94516492 1.08422136 1.56081176 1.07652664]",
2294
- "[2.41292142868042, 2.3658392429351807, 2.2621009349823, 2.336780548095703]"
2295
  ],
2296
  [
2297
- 39,
2298
- "[0.00497234 0.39319336 0.57054168 0.75150961]",
2299
- "[1.00497234 1.39319336 1.57054162 1.75150967]",
2300
- "[2.3767666816711426, 2.318239450454712, 2.2965610027313232, 2.4914658069610596]"
2301
  ],
2302
  [
2303
- 35,
2304
- "[0.98033333 0.97656083 0.38939917 0.81491041]",
2305
- "[1.98033333 1.97656083 1.38939917 1.81491041]",
2306
- "[2.9007155895233154, 2.931007146835327, 2.872464179992676, 2.8720178604125977]"
2307
  ],
2308
  [
2309
- 28,
2310
- "[0.79423058 0.07138705 0.061777 0.18766576]",
2311
- "[1.79423058 1.07138705 1.061777 1.1876657 ]",
2312
- "[2.2043371200561523, 2.119929790496826, 2.0417239665985107, 2.2062151432037354]"
2313
  ],
2314
  [
2315
- 99,
2316
- "[0.68891573 0.25576538 0.96339929 0.503833 ]",
2317
- "[1.68891573 1.25576544 1.96339929 1.50383306]",
2318
- "[2.640495777130127, 2.628694772720337, 2.5738489627838135, 2.6524853706359863]"
2319
  ],
2320
  [
2321
- 10,
2322
- "[0.50783676 0.04156506 0.21984279 0.8454656 ]",
2323
- "[1.50783682 1.04156506 1.21984279 1.84546566]",
2324
- "[2.3187222480773926, 2.2490477561950684, 2.237614393234253, 2.4606916904449463]"
2325
  ],
2326
  [
2327
- 37,
2328
- "[0.78956431 0.87284744 0.06880784 0.03455889]",
2329
- "[1.78956437 1.87284744 1.06880784 1.03455889]",
2330
- "[2.48598313331604, 2.454476833343506, 2.2831082344055176, 2.2463605403900146]"
2331
  ],
2332
  [
2333
- 91,
2334
- "[0.43500566 0.66041756 0.80293626 0.96224713]",
2335
- "[1.43500566 1.66041756 1.80293632 1.96224713]",
2336
- "[2.7682571411132812, 2.7744951248168945, 2.761075019836426, 2.8592607975006104]"
2337
  ],
2338
  [
2339
- 47,
2340
- "[0.60110539 0.3618983 0.32342511 0.98672163]",
2341
- "[1.60110545 1.3618983 1.32342505 1.98672163]",
2342
- "[2.543933868408203, 2.510021686553955, 2.5257022380828857, 2.722487449645996]"
2343
  ],
2344
  [
2345
- 40,
2346
- "[0.44330525 0.09997386 0.89025736 0.90507984]",
2347
- "[1.44330525 1.09997392 1.89025736 1.90507984]",
2348
- "[2.5668387413024902, 2.537842035293579, 2.555079221725464, 2.749858856201172]"
2349
  ],
2350
  [
2351
- 32,
2352
- "[0.30754459 0.77694583 0.09278506 0.38326019]",
2353
- "[1.30754459 1.77694583 1.09278512 1.38326025]",
2354
- "[2.3738114833831787, 2.3195064067840576, 2.212083339691162, 2.2918801307678223]"
2355
  ],
2356
  [
2357
- 45,
2358
- "[0.73217702 0.65233225 0.44077861 0.33837909]",
2359
- "[1.73217702 1.65233231 1.44077861 1.33837914]",
2360
- "[2.5859265327453613, 2.567556619644165, 2.459083080291748, 2.479666233062744]"
2361
  ],
2362
  [
2363
- 72,
2364
- "[0.60609657 0.96257663 0.19292736 0.95702219]",
2365
- "[1.60609651 1.96257663 1.19292736 1.95702219]",
2366
- "[2.7291908264160156, 2.728882074356079, 2.696915626525879, 2.7788424491882324]"
2367
  ],
2368
  [
2369
- 86,
2370
- "[0.80893755 0.92237449 0.88346356 0.93164903]",
2371
- "[1.80893755 1.92237449 1.88346362 1.93164897]",
2372
- "[3.024338483810425, 3.075038194656372, 3.033391237258911, 3.0232954025268555]"
2373
  ]
2374
  ]
2375
  },
@@ -2381,352 +2387,352 @@
2381
  ],
2382
  "data": [
2383
  [
2384
- 30,
2385
  "[0.94516498 0.08422136 0.5608117 0.07652664]",
2386
  "[1.94516492 1.08422136 1.56081176 1.07652664]"
2387
  ],
2388
  [
2389
- 31,
2390
  "[0.26661873 0.45946234 0.13510543 0.81294441]",
2391
  "[1.26661873 1.4594624 1.13510537 1.81294441]"
2392
  ],
2393
  [
2394
- 32,
2395
  "[0.30754459 0.77694583 0.09278506 0.38326019]",
2396
  "[1.30754459 1.77694583 1.09278512 1.38326025]"
2397
  ],
2398
  [
2399
- 33,
2400
  "[0.27845025 0.32472342 0.82203609 0.77107543]",
2401
  "[1.27845025 1.32472348 1.82203603 1.77107549]"
2402
  ],
2403
  [
2404
- 34,
2405
  "[0.4827103 0.10563457 0.98858833 0.82286644]",
2406
  "[1.48271036 1.10563457 1.98858833 1.82286644]"
2407
  ],
2408
  [
2409
- 35,
2410
  "[0.98033333 0.97656083 0.38939917 0.81491041]",
2411
  "[1.98033333 1.97656083 1.38939917 1.81491041]"
2412
  ],
2413
  [
2414
- 36,
2415
  "[0.74064726 0.4155122 0.09800029 0.49930882]",
2416
  "[1.74064732 1.4155122 1.09800029 1.49930882]"
2417
  ],
2418
  [
2419
- 37,
2420
  "[0.78956431 0.87284744 0.06880784 0.03455889]",
2421
  "[1.78956437 1.87284744 1.06880784 1.03455889]"
2422
  ],
2423
  [
2424
- 38,
2425
  "[0.94221359 0.57740951 0.98649532 0.40934443]",
2426
  "[1.94221354 1.57740951 1.98649526 1.40934443]"
2427
  ],
2428
  [
2429
- 39,
2430
  "[0.00497234 0.39319336 0.57054168 0.75150961]",
2431
  "[1.00497234 1.39319336 1.57054162 1.75150967]"
2432
  ],
2433
  [
2434
- 40,
2435
  "[0.44330525 0.09997386 0.89025736 0.90507984]",
2436
  "[1.44330525 1.09997392 1.89025736 1.90507984]"
2437
  ],
2438
  [
2439
- 41,
2440
  "[0.72290605 0.96945059 0.68354797 0.15270454]",
2441
  "[1.72290611 1.96945059 1.68354797 1.15270448]"
2442
  ],
2443
  [
2444
- 42,
2445
  "[0.75292218 0.81470108 0.49657214 0.56217098]",
2446
  "[1.75292218 1.81470108 1.49657214 1.56217098]"
2447
  ],
2448
  [
2449
- 43,
2450
  "[0.33480108 0.59181517 0.76198453 0.98062384]",
2451
  "[1.33480108 1.59181523 1.76198459 1.98062384]"
2452
  ],
2453
  [
2454
- 44,
2455
  "[0.52784437 0.54268694 0.12358981 0.72116476]",
2456
  "[1.52784443 1.54268694 1.12358975 1.7211647 ]"
2457
  ],
2458
  [
2459
- 45,
2460
  "[0.73217702 0.65233225 0.44077861 0.33837909]",
2461
  "[1.73217702 1.65233231 1.44077861 1.33837914]"
2462
  ],
2463
  [
2464
- 46,
2465
  "[0.34084332 0.73018837 0.54168713 0.91440833]",
2466
  "[1.34084332 1.73018837 1.54168713 1.91440833]"
2467
  ],
2468
  [
2469
- 47,
2470
  "[0.60110539 0.3618983 0.32342511 0.98672163]",
2471
  "[1.60110545 1.3618983 1.32342505 1.98672163]"
2472
  ],
2473
  [
2474
- 48,
2475
  "[0.77427191 0.21829212 0.12769502 0.74303615]",
2476
  "[1.77427197 1.21829212 1.12769508 1.74303615]"
2477
  ],
2478
  [
2479
- 49,
2480
  "[0.08107251 0.2602725 0.18861133 0.44833237]",
2481
  "[1.08107257 1.2602725 1.18861127 1.44833231]"
2482
  ],
2483
  [
2484
- 50,
2485
  "[0.59812403 0.78395379 0.0291847 0.81814629]",
2486
  "[1.59812403 1.78395379 1.0291847 1.81814623]"
2487
  ],
2488
  [
2489
- 51,
2490
  "[0.93488538 0.73882395 0.37345302 0.0274905 ]",
2491
  "[1.93488538 1.73882389 1.37345302 1.0274905 ]"
2492
  ],
2493
  [
2494
- 52,
2495
  "[0.30631393 0.48311198 0.87847513 0.67559886]",
2496
  "[1.30631399 1.48311198 1.87847519 1.67559886]"
2497
  ],
2498
  [
2499
- 53,
2500
  "[0.18720162 0.74115586 0.98626411 0.30355608]",
2501
  "[1.18720162 1.74115586 1.98626411 1.30355608]"
2502
  ],
2503
  [
2504
- 54,
2505
  "[0.85566247 0.83362883 0.48424995 0.25265992]",
2506
  "[1.85566247 1.83362889 1.48424995 1.25265992]"
2507
  ],
2508
  [
2509
- 55,
2510
  "[0.95928186 0.84273899 0.71514636 0.38619852]",
2511
  "[1.95928192 1.84273899 1.7151463 1.38619852]"
2512
  ],
2513
  [
2514
- 56,
2515
  "[0.32565445 0.90939188 0.07488042 0.13730896]",
2516
  "[1.32565451 1.90939188 1.07488036 1.13730896]"
2517
  ],
2518
  [
2519
- 57,
2520
  "[0.9829582 0.59269661 0.40120947 0.95487177]",
2521
  "[1.9829582 1.59269667 1.40120947 1.95487177]"
2522
  ],
2523
  [
2524
- 58,
2525
  "[0.79905868 0.89367443 0.75429088 0.3190186 ]",
2526
  "[1.79905868 1.89367437 1.75429082 1.3190186 ]"
2527
  ],
2528
  [
2529
- 59,
2530
  "[0.54914117 0.03810108 0.87531954 0.73044223]",
2531
  "[1.54914117 1.03810108 1.87531948 1.73044229]"
2532
  ],
2533
  [
2534
- 60,
2535
  "[0.67418337 0.79634351 0.23229051 0.71345252]",
2536
  "[1.67418337 1.79634356 1.23229051 1.71345258]"
2537
  ],
2538
  [
2539
- 61,
2540
  "[0.87285906 0.48354989 0.39394957 0.59456545]",
2541
  "[1.872859 1.48354983 1.39394951 1.59456539]"
2542
  ],
2543
  [
2544
- 62,
2545
  "[0.81788456 0.58174163 0.29376316 0.7971254 ]",
2546
  "[1.81788456 1.58174157 1.29376316 1.79712534]"
2547
  ],
2548
  [
2549
- 63,
2550
  "[0.94559073 0.65736622 0.25761551 0.48553199]",
2551
  "[1.94559073 1.65736628 1.25761557 1.48553205]"
2552
  ],
2553
  [
2554
- 64,
2555
  "[0.60075855 0.12234765 0.00614399 0.30560958]",
2556
  "[1.60075855 1.12234759 1.00614405 1.30560958]"
2557
  ],
2558
  [
2559
- 65,
2560
  "[0.39147133 0.29854035 0.84663737 0.58175623]",
2561
  "[1.39147139 1.29854035 1.84663737 1.58175623]"
2562
  ],
2563
  [
2564
- 66,
2565
  "[0.02162331 0.81861657 0.92468154 0.07808572]",
2566
  "[1.02162337 1.81861663 1.92468154 1.07808566]"
2567
  ],
2568
  [
2569
- 67,
2570
  "[0.02235305 0.52774918 0.7331115 0.84358269]",
2571
  "[1.02235305 1.52774918 1.7331115 1.84358263]"
2572
  ],
2573
  [
2574
- 68,
2575
  "[0.6080932 0.56563014 0.32107437 0.72599429]",
2576
  "[1.60809326 1.5656302 1.32107437 1.72599435]"
2577
  ],
2578
  [
2579
- 69,
2580
  "[0.67447788 0.6125319 0.98007888 0.65968603]",
2581
  "[1.67447782 1.6125319 1.98007894 1.65968609]"
2582
  ],
2583
  [
2584
- 70,
2585
  "[0.47963417 0.81818312 0.48720706 0.49339259]",
2586
  "[1.47963417 1.81818318 1.48720706 1.49339259]"
2587
  ],
2588
  [
2589
- 71,
2590
  "[0.9630242 0.76359051 0.24853623 0.76881069]",
2591
  "[1.96302414 1.76359057 1.24853623 1.76881075]"
2592
  ],
2593
  [
2594
- 72,
2595
  "[0.60609657 0.96257663 0.19292736 0.95702219]",
2596
  "[1.60609651 1.96257663 1.19292736 1.95702219]"
2597
  ],
2598
  [
2599
- 73,
2600
  "[0.80654246 0.08253473 0.74478531 0.71257162]",
2601
  "[1.8065424 1.08253479 1.74478531 1.71257162]"
2602
  ],
2603
  [
2604
- 74,
2605
  "[0.70167565 0.26930219 0.5660674 0.61194974]",
2606
  "[1.70167565 1.26930213 1.56606746 1.61194968]"
2607
  ],
2608
  [
2609
- 75,
2610
  "[0.76933283 0.86241865 0.44114518 0.65644735]",
2611
  "[1.76933289 1.86241865 1.44114518 1.65644741]"
2612
  ],
2613
  [
2614
- 76,
2615
  "[0.59492421 0.90274489 0.38069052 0.46101224]",
2616
  "[1.59492421 1.90274489 1.38069057 1.46101224]"
2617
  ],
2618
  [
2619
- 77,
2620
  "[0.15064228 0.03198934 0.25754827 0.51484001]",
2621
  "[1.15064228 1.03198934 1.25754833 1.51484001]"
2622
  ],
2623
  [
2624
- 78,
2625
  "[0.12024075 0.21342516 0.56858408 0.58644271]",
2626
  "[1.12024069 1.21342516 1.56858408 1.58644271]"
2627
  ],
2628
  [
2629
- 79,
2630
  "[0.91730917 0.22574073 0.09591609 0.33056474]",
2631
  "[1.91730917 1.22574067 1.09591603 1.33056474]"
2632
  ],
2633
  [
2634
- 80,
2635
  "[0.49691743 0.61873293 0.90698647 0.94486356]",
2636
  "[1.49691749 1.61873293 1.90698647 1.94486356]"
2637
  ],
2638
  [
2639
- 81,
2640
  "[0.6032477 0.83361369 0.18538666 0.19108021]",
2641
  "[1.60324764 1.83361363 1.18538666 1.19108021]"
2642
  ],
2643
  [
2644
- 82,
2645
  "[0.63235509 0.70352674 0.96188956 0.46240485]",
2646
  "[1.63235509 1.70352674 1.96188951 1.46240485]"
2647
  ],
2648
  [
2649
- 83,
2650
  "[0.37959969 0.42820001 0.10690689 0.96353984]",
2651
  "[1.37959969 1.42820001 1.10690689 1.96353984]"
2652
  ],
2653
  [
2654
- 84,
2655
  "[0.49607176 0.1922397 0.46640229 0.78321403]",
2656
  "[1.49607182 1.19223976 1.46640229 1.78321409]"
2657
  ],
2658
  [
2659
- 85,
2660
  "[0.40234613 0.54987347 0.49542785 0.54153186]",
2661
  "[1.40234613 1.54987347 1.49542785 1.5415318 ]"
2662
  ],
2663
  [
2664
- 86,
2665
  "[0.80893755 0.92237449 0.88346356 0.93164903]",
2666
  "[1.80893755 1.92237449 1.88346362 1.93164897]"
2667
  ],
2668
  [
2669
- 87,
2670
  "[0.12858278 0.09930819 0.83222693 0.72485673]",
2671
  "[1.12858272 1.09930825 1.83222699 1.72485673]"
2672
  ],
2673
  [
2674
- 88,
2675
  "[0.72470158 0.4940322 0.41027349 0.89364016]",
2676
  "[1.72470164 1.49403214 1.41027355 1.89364016]"
2677
  ],
2678
  [
2679
- 89,
2680
  "[0.47856545 0.46267092 0.6376707 0.84747767]",
2681
  "[1.47856545 1.46267092 1.63767076 1.84747767]"
2682
  ],
2683
  [
2684
- 90,
2685
  "[0.49584109 0.80599248 0.07096875 0.75872749]",
2686
  "[1.49584103 1.80599248 1.07096875 1.75872755]"
2687
  ],
2688
  [
2689
- 91,
2690
  "[0.43500566 0.66041756 0.80293626 0.96224713]",
2691
  "[1.43500566 1.66041756 1.80293632 1.96224713]"
2692
  ],
2693
  [
2694
- 92,
2695
  "[0.78397602 0.74223626 0.26603186 0.41664881]",
2696
  "[1.78397608 1.74223626 1.26603186 1.41664886]"
2697
  ],
2698
  [
2699
- 93,
2700
  "[0.28942841 0.05601001 0.33039129 0.27781558]",
2701
  "[1.28942847 1.05601001 1.33039129 1.27781558]"
2702
  ],
2703
  [
2704
- 94,
2705
  "[0.68094063 0.45189077 0.22661722 0.37354094]",
2706
  "[1.68094063 1.45189071 1.22661722 1.37354088]"
2707
  ],
2708
  [
2709
- 95,
2710
  "[0.43681622 0.74680805 0.83598751 0.12414402]",
2711
  "[1.43681622 1.74680805 1.83598757 1.12414408]"
2712
  ],
2713
  [
2714
- 96,
2715
  "[0.47870928 0.17129105 0.27300501 0.20634609]",
2716
  "[1.47870922 1.17129111 1.27300501 1.20634604]"
2717
  ],
2718
  [
2719
- 97,
2720
  "[0.72795159 0.79317838 0.27832931 0.96576637]",
2721
  "[1.72795153 1.79317832 1.27832937 1.96576643]"
2722
  ],
2723
  [
2724
- 98,
2725
  "[0.87608397 0.93200487 0.80169648 0.37758952]",
2726
  "[1.87608397 1.93200493 1.80169654 1.37758946]"
2727
  ],
2728
  [
2729
- 99,
2730
  "[0.68891573 0.25576538 0.96339929 0.503833 ]",
2731
  "[1.68891573 1.25576544 1.96339929 1.50383306]"
2732
  ]
@@ -2738,310 +2744,310 @@
2738
  ],
2739
  "data": [
2740
  [
2741
- 5.800187110900879
2742
  ],
2743
  [
2744
- 5.598123073577881
2745
  ],
2746
  [
2747
- 5.42051887512207
2748
  ],
2749
  [
2750
- 5.2726593017578125
2751
  ],
2752
  [
2753
- 5.157590389251709
2754
  ],
2755
  [
2756
- 5.0745649337768555
2757
  ],
2758
  [
2759
- 5.0191521644592285
2760
  ],
2761
  [
2762
- 4.984806537628174
2763
  ],
2764
  [
2765
- 4.964847564697266
2766
  ],
2767
  [
2768
- 4.953816890716553
2769
  ],
2770
  [
2771
- 4.947908878326416
2772
  ],
2773
  [
2774
- 4.944762706756592
2775
  ],
2776
  [
2777
- 4.943039417266846
2778
  ],
2779
  [
2780
- 4.942024230957031
2781
  ],
2782
  [
2783
- 4.941353797912598
2784
  ],
2785
  [
2786
- 4.9408488273620605
2787
  ],
2788
  [
2789
- 4.940422058105469
2790
  ],
2791
  [
2792
- 4.940032482147217
2793
  ],
2794
  [
2795
- 4.939662456512451
2796
  ],
2797
  [
2798
- 4.939301013946533
2799
  ],
2800
  [
2801
- 4.938945293426514
2802
  ],
2803
  [
2804
- 4.938592910766602
2805
  ],
2806
  [
2807
- 4.9382429122924805
2808
  ],
2809
  [
2810
- 4.937894344329834
2811
  ],
2812
  [
2813
- 4.937548637390137
2814
  ],
2815
  [
2816
- 4.937204837799072
2817
  ],
2818
  [
2819
- 4.936861515045166
2820
  ],
2821
  [
2822
- 4.936521053314209
2823
  ],
2824
  [
2825
- 4.936007976531982
2826
  ],
2827
  [
2828
- 4.928510665893555
2829
  ],
2830
  [
2831
- 4.7543463706970215
2832
  ],
2833
  [
2834
- 4.202136039733887
2835
  ],
2836
  [
2837
- 3.841205596923828
2838
  ],
2839
  [
2840
- 3.605153799057007
2841
  ],
2842
  [
2843
- 3.4602854251861572
2844
  ],
2845
  [
2846
- 3.377415657043457
2847
  ],
2848
  [
2849
- 3.3322527408599854
2850
  ],
2851
  [
2852
- 3.308159589767456
2853
  ],
2854
  [
2855
- 3.2952585220336914
2856
  ],
2857
  [
2858
- 3.288172960281372
2859
  ],
2860
  [
2861
- 3.2841086387634277
2862
  ],
2863
  [
2864
- 3.2816221714019775
2865
  ],
2866
  [
2867
- 3.2797133922576904
2868
  ],
2869
  [
2870
- 3.251174211502075
2871
  ],
2872
  [
2873
- 2.534057140350342
2874
  ],
2875
  [
2876
- 2.100238800048828
2877
  ],
2878
  [
2879
- 1.8637852668762207
2880
  ],
2881
  [
2882
- 1.7448025941848755
2883
  ],
2884
  [
2885
- 1.6882381439208984
2886
  ],
2887
  [
2888
- 1.6618977785110474
2889
  ],
2890
  [
2891
- 1.6495403051376343
2892
  ],
2893
  [
2894
- 1.6435632705688477
2895
  ],
2896
  [
2897
- 1.6405097246170044
2898
  ],
2899
  [
2900
- 1.6388026475906372
2901
  ],
2902
  [
2903
- 1.6377187967300415
2904
  ],
2905
  [
2906
- 1.6369259357452393
2907
  ],
2908
  [
2909
- 1.6362708806991577
2910
  ],
2911
  [
2912
- 1.635683536529541
2913
  ],
2914
  [
2915
- 1.6351302862167358
2916
  ],
2917
  [
2918
- 1.6345962285995483
2919
  ],
2920
  [
2921
- 1.634074091911316
2922
  ],
2923
  [
2924
- 1.6335605382919312
2925
  ],
2926
  [
2927
- 1.6330533027648926
2928
  ],
2929
  [
2930
- 1.6325511932373047
2931
  ],
2932
  [
2933
- 1.6320583820343018
2934
  ],
2935
  [
2936
- 1.6315733194351196
2937
  ],
2938
  [
2939
- 1.6311031579971313
2940
  ],
2941
  [
2942
- 1.6306471824645996
2943
  ],
2944
  [
2945
- 1.6301956176757812
2946
  ],
2947
  [
2948
- 1.6297489404678345
2949
  ],
2950
  [
2951
- 1.629309892654419
2952
  ],
2953
  [
2954
- 1.6288747787475586
2955
  ],
2956
  [
2957
- 1.6284427642822266
2958
  ],
2959
  [
2960
- 1.6280156373977661
2961
  ],
2962
  [
2963
- 1.6275969743728638
2964
  ],
2965
  [
2966
- 1.6271847486495972
2967
  ],
2968
  [
2969
- 1.6267770528793335
2970
  ],
2971
  [
2972
- 1.6263741254806519
2973
  ],
2974
  [
2975
- 1.625981092453003
2976
  ],
2977
  [
2978
- 1.625562071800232
2979
  ],
2980
  [
2981
- 1.6234854459762573
2982
  ],
2983
  [
2984
- 1.526026964187622
2985
  ],
2986
  [
2987
- 0.7520114779472351
2988
  ],
2989
  [
2990
- 0.36320704221725464
2991
  ],
2992
  [
2993
- 0.19313177466392517
2994
  ],
2995
  [
2996
- 0.12368442118167877
2997
  ],
2998
  [
2999
- 0.09587223827838898
3000
  ],
3001
  [
3002
- 0.08457889407873154
3003
  ],
3004
  [
3005
- 0.07980319857597351
3006
  ],
3007
  [
3008
- 0.07760757952928543
3009
  ],
3010
  [
3011
- 0.0764402449131012
3012
  ],
3013
  [
3014
- 0.07568377256393433
3015
  ],
3016
  [
3017
- 0.0751044973731041
3018
  ],
3019
  [
3020
- 0.07460036873817444
3021
  ],
3022
  [
3023
- 0.07414067536592484
3024
  ],
3025
  [
3026
- 0.073702372610569
3027
  ],
3028
  [
3029
- 0.07327572256326675
3030
  ],
3031
  [
3032
- 0.0728573128581047
3033
  ],
3034
  [
3035
- 0.07244749367237091
3036
  ],
3037
  [
3038
- 0.07204563170671463
3039
  ]
3040
  ]
3041
  }
3042
  },
3043
  "other": {
3044
- "model": "ModelConfig(model=Sequential(\n (0) - Identity(): Input__tensor_1_output -> START_Repeat_1_output\n (1) - Linear(4, 4, bias=True): START_Repeat_1_output -> Linear_1_output\n (2) - <function leaky_relu at 0x78e367f84d60>: Linear_1_output -> Activation_1_output\n (3) - Identity(): Activation_1_output -> START_Repeat_1_output\n (4) - Linear(4, 4, bias=True): START_Repeat_1_output -> Linear_1_output\n (5) - <function leaky_relu at 0x78e367f84d60>: Linear_1_output -> Activation_1_output\n (6) - Identity(): Activation_1_output -> END_Repeat_1_output\n (7) - Identity(): END_Repeat_1_output -> Output_1_x\n (8) - Identity(): Output_1_x -> Output_1_x\n), model_inputs=['Input__tensor_1_output'], model_outputs=['Output_1_x'], loss_inputs=['Output_1_x', 'Input__tensor_3_output'], loss=Sequential(\n (0) - <function constant_vector.<locals>.<lambda> at 0x78e237191260>: nothing -> Constant_vector_1_output\n (1) - <built-in method add of type object at 0x78e36059ef00>: Input__tensor_3_output, Constant_vector_1_output -> Add_1_output\n (2) - <function mse_loss at 0x78e367f86840>: Output_1_x, Add_1_output -> MSE_loss_2_output\n (3) - Identity(): MSE_loss_2_output -> loss\n), optimizer_parameters={'lr': 0.1, 'type': <OptionsFor_type.SGD: 4>}, optimizer=SGD (\nParameter Group 0\n dampening: 0\n differentiable: False\n foreach: None\n fused: None\n lr: 0.1\n maximize: False\n momentum: 0\n nesterov: False\n weight_decay: 0\n), source_workspace='Model definition', trained=True)"
3045
  },
3046
  "relations": []
3047
  },
@@ -3083,8 +3089,8 @@
3083
  "Input__tensor_1_output"
3084
  ],
3085
  "loss_inputs": [
3086
- "Output_1_x",
3087
- "Input__tensor_3_output"
3088
  ],
3089
  "outputs": [
3090
  "Output_1_x"
@@ -3098,26 +3104,27 @@
3098
  }
3099
  ],
3100
  "meta": {
3101
- "inputs": {
3102
- "bundle": {
 
3103
  "name": "bundle",
3104
  "position": "left",
3105
  "type": {
3106
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
3107
  }
3108
  }
3109
- },
3110
  "name": "View tables",
3111
- "outputs": {},
3112
- "params": {
3113
- "limit": {
3114
  "default": 100.0,
3115
  "name": "limit",
3116
  "type": {
3117
  "type": "<class 'int'>"
3118
  }
3119
  }
3120
- },
3121
  "type": "table_view"
3122
  },
3123
  "params": {
@@ -3148,184 +3155,184 @@
3148
  {
3149
  "data": [
3150
  [
3151
- 5.752160549163818,
3152
- -0.8232598900794983,
3153
  "",
3154
- -2.058953046798706
3155
  ],
3156
  [
3157
- 0.7012296915054321,
3158
- 0.5504218339920044,
3159
  "",
3160
- 4.149958610534668
3161
  ],
3162
  [
3163
- 2.945161819458008,
3164
- -1.014856219291687,
3165
  "",
3166
- 0.019882630556821823
3167
  ],
3168
  [
3169
- 2.5901684761047363,
3170
- -1.2229167222976685,
3171
  "",
3172
- 0.34879058599472046
3173
  ],
3174
  [
3175
- 1.4952237606048584,
3176
- -0.1513950079679489,
3177
  "",
3178
- 2.7570903301239014
3179
  ],
3180
  [
3181
- 1.344888687133789,
3182
- -1.1611599922180176,
3183
  "",
3184
- 2.0714128017425537
3185
  ],
3186
  [
3187
- 0.3736271560192108,
3188
- 0.34866970777511597,
3189
  "",
3190
- 3.9460649490356445
3191
  ],
3192
  [
3193
- 4.606325149536133,
3194
- -0.44266968965530396,
3195
  "",
3196
- -1.2447248697280884
3197
  ],
3198
  [
3199
- 0.8212581276893616,
3200
- -0.6836636066436768,
3201
  "",
3202
- 5.419023513793945
3203
  ],
3204
  [
3205
- 3.042868137359619,
3206
- -1.6362674236297607,
3207
  "",
3208
- 0.780156135559082
3209
  ],
3210
  [
3211
- 0.7296130061149597,
3212
- -0.1887897551059723,
3213
  "",
3214
- 3.203200578689575
3215
  ],
3216
  [
3217
- 0.8891782760620117,
3218
- 1.2451283931732178,
3219
  "",
3220
- 4.304920196533203
3221
  ],
3222
  [
3223
- 4.700596332550049,
3224
- -0.063453808426857,
3225
  "",
3226
- -1.466339349746704
3227
  ],
3228
  [
3229
- 2.212623119354248,
3230
- -0.24241189658641815,
3231
  "",
3232
- 1.563027262687683
3233
  ],
3234
  [
3235
- 5.110715866088867,
3236
- -1.116548776626587,
3237
  "",
3238
- -2.46594500541687
3239
  ],
3240
  [
3241
- 3.6852052211761475,
3242
- -1.414133071899414,
3243
  "",
3244
- -3.59246563911438
3245
  ],
3246
  [
3247
- 5.279581069946289,
3248
- -0.6892402172088623,
3249
  "",
3250
- -2.0778040885925293
3251
  ],
3252
  [
3253
- 4.4375996589660645,
3254
- -1.3382771015167236,
3255
  "",
3256
- -3.1805598735809326
3257
  ],
3258
  [
3259
- 0.4160999357700348,
3260
- 1.0794298648834229,
3261
  "",
3262
- 4.508198261260986
3263
  ],
3264
  [
3265
- 5.0630598068237305,
3266
- -0.9982349276542664,
3267
  "",
3268
- -2.31571626663208
3269
  ],
3270
  [
3271
- 1.388333797454834,
3272
- -0.6052800416946411,
3273
  "",
3274
- 2.2662086486816406
3275
  ],
3276
  [
3277
- 5.247096061706543,
3278
- -1.422383189201355,
3279
  "",
3280
- -2.9033005237579346
3281
  ],
3282
  [
3283
- 5.0349931716918945,
3284
- -0.20492368936538696,
3285
  "",
3286
- -1.5952072143554688
3287
  ],
3288
  [
3289
- 0.8588991165161133,
3290
- 0.931562602519989,
3291
  "",
3292
- 4.554385185241699
3293
  ],
3294
  [
3295
- 2.5351479053497314,
3296
- -0.6277468204498291,
3297
  "",
3298
- -0.05971255153417587
3299
  ],
3300
  [
3301
- 2.1338918209075928,
3302
- -0.7544606328010559,
3303
  "",
3304
- 1.1391218900680542
3305
  ],
3306
  [
3307
- 5.549644470214844,
3308
- -0.3897499740123749,
3309
  "",
3310
- -2.751723289489746
3311
  ],
3312
  [
3313
- 2.397034168243408,
3314
- -1.7871567010879517,
3315
  "",
3316
- 0.6067442297935486
3317
  ],
3318
  [
3319
- 1.2974268198013306,
3320
- 0.5350163578987122,
3321
  "",
3322
- 3.7050516605377197
3323
  ],
3324
  [
3325
- 0.1969093680381775,
3326
- 1.3218902349472046,
3327
  "",
3328
- 4.904805660247803
3329
  ]
3330
  ],
3331
  "symbolSize": 25.65378780242026,
@@ -3340,7 +3347,7 @@
3340
  },
3341
  "visualMap": {
3342
  "calculable": true,
3343
- "dimension": 3,
3344
  "inRange": {
3345
  "color": [
3346
  "#440154",
@@ -3355,9 +3362,9 @@
3355
  "#FDE725"
3356
  ]
3357
  },
3358
- "max": 5.419023513793945,
3359
- "min": -3.59246563911438,
3360
- "right": 10,
3361
  "top": "center"
3362
  },
3363
  "xAxis": [
@@ -3409,8 +3416,8 @@
3409
  "Input__tensor_1_output"
3410
  ],
3411
  "loss_inputs": [
3412
- "Output_1_x",
3413
- "Input__tensor_3_output"
3414
  ],
3415
  "outputs": [
3416
  "Output_1_x"
@@ -3424,27 +3431,56 @@
3424
  }
3425
  ],
3426
  "meta": {
3427
- "inputs": {
3428
- "bundle": {
 
3429
  "name": "bundle",
3430
  "position": "left",
3431
  "type": {
3432
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
3433
  }
3434
  }
3435
- },
3436
  "name": "View vectors",
3437
- "outputs": {},
3438
- "params": {
3439
- "label_column": {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3440
  "default": "",
3441
  "name": "label_column",
3442
  "type": {
3443
  "type": "<class 'str'>"
3444
  }
3445
  },
3446
- "metric": {
3447
- "default": "euclidean",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3448
  "name": "metric",
3449
  "type": {
3450
  "enum": [
@@ -3465,36 +3501,8 @@
3465
  "hamming"
3466
  ]
3467
  }
3468
- },
3469
- "min_dist": {
3470
- "default": 0.1,
3471
- "name": "min_dist",
3472
- "type": {
3473
- "type": "<class 'float'>"
3474
- }
3475
- },
3476
- "n_neighbors": {
3477
- "default": 15.0,
3478
- "name": "n_neighbors",
3479
- "type": {
3480
- "type": "<class 'int'>"
3481
- }
3482
- },
3483
- "table_name": {
3484
- "default": "nodes",
3485
- "name": "table_name",
3486
- "type": {
3487
- "type": "<class 'str'>"
3488
- }
3489
- },
3490
- "vector_column": {
3491
- "default": "",
3492
- "name": "vector_column",
3493
- "type": {
3494
- "type": "<class 'str'>"
3495
- }
3496
  }
3497
- },
3498
  "type": "visualization"
3499
  },
3500
  "params": {
 
137
  }
138
  ],
139
  "meta": {
140
+ "color": "orange",
141
+ "inputs": [
142
+ {
143
  "name": "bundle",
144
  "position": "left",
145
  "type": {
146
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
147
  }
148
  }
149
+ ],
150
  "name": "Train/test split",
151
+ "outputs": [
152
+ {
153
  "name": "output",
154
  "position": "right",
155
  "type": {
156
  "type": "None"
157
  }
158
  }
159
+ ],
160
+ "params": [
161
+ {
162
  "default": null,
163
  "name": "table_name",
164
  "type": {
165
  "type": "<class 'str'>"
166
  }
167
  },
168
+ {
169
  "default": 0.1,
170
  "name": "test_ratio",
171
  "type": {
172
  "type": "<class 'float'>"
173
  }
174
  }
175
+ ],
176
  "type": "basic"
177
  },
178
  "params": {
 
235
  "error": null,
236
  "input_metadata": [],
237
  "meta": {
238
+ "color": "orange",
239
+ "inputs": [],
240
  "name": "Import Parquet",
241
+ "outputs": [
242
+ {
243
  "name": "output",
244
  "position": "right",
245
  "type": {
246
  "type": "None"
247
  }
248
  }
249
+ ],
250
+ "params": [
251
+ {
252
  "default": null,
253
  "name": "filename",
254
  "type": {
255
  "type": "<class 'str'>"
256
  }
257
  }
258
+ ],
259
  "type": "basic"
260
  },
261
  "params": {
 
385
  }
386
  ],
387
  "meta": {
388
+ "color": "orange",
389
+ "inputs": [
390
+ {
391
  "name": "bundle",
392
  "position": "left",
393
  "type": {
394
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
395
  }
396
  }
397
+ ],
398
  "name": "Define model",
399
+ "outputs": [
400
+ {
401
  "name": "output",
402
  "position": "right",
403
  "type": {
404
  "type": "None"
405
  }
406
  }
407
+ ],
408
+ "params": [
409
+ {
410
  "default": null,
411
  "name": "model_workspace",
412
  "type": {
413
  "type": "<class 'str'>"
414
  }
415
  },
416
+ {
417
  "default": "model",
418
  "name": "save_as",
419
  "type": {
420
  "type": "<class 'str'>"
421
  }
422
  }
423
+ ],
424
  "type": "basic"
425
  },
426
  "params": {
 
578
  "Input__tensor_1_output"
579
  ],
580
  "loss_inputs": [
581
+ "Input__tensor_3_output",
582
+ "Output_1_x"
583
  ],
584
  "outputs": [
585
  "Output_1_x"
 
593
  }
594
  ],
595
  "meta": {
596
+ "color": "orange",
597
+ "inputs": [
598
+ {
599
  "name": "bundle",
600
  "position": "left",
601
  "type": {
602
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
603
  }
604
  }
605
+ ],
606
  "name": "Train model",
607
+ "outputs": [
608
+ {
609
  "name": "output",
610
  "position": "right",
611
  "type": {
612
  "type": "None"
613
  }
614
  }
615
+ ],
616
+ "params": [
617
+ {
618
+ "default": "model",
619
+ "name": "model_name",
620
  "type": {
621
+ "type": "<class 'str'>"
622
  }
623
  },
624
+ {
625
  "default": null,
626
  "name": "input_mapping",
627
  "type": {
628
  "type": "<class 'lynxkite_graph_analytics.ml_ops.ModelTrainingInputMapping'>"
629
  }
630
  },
631
+ {
632
+ "default": 1.0,
633
+ "name": "epochs",
634
  "type": {
635
+ "type": "<class 'int'>"
636
  }
637
  }
638
+ ],
639
  "type": "basic"
640
  },
641
  "params": {
 
804
  "Input__tensor_1_output"
805
  ],
806
  "loss_inputs": [
807
+ "Input__tensor_3_output",
808
+ "Output_1_x"
809
  ],
810
  "outputs": [
811
  "Output_1_x"
 
819
  }
820
  ],
821
  "meta": {
822
+ "color": "orange",
823
+ "inputs": [
824
+ {
825
  "name": "bundle",
826
  "position": "left",
827
  "type": {
828
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
829
  }
830
  }
831
+ ],
832
  "name": "Model inference",
833
+ "outputs": [
834
+ {
835
  "name": "output",
836
  "position": "right",
837
  "type": {
838
  "type": "None"
839
  }
840
  }
841
+ ],
842
+ "params": [
843
+ {
 
 
 
 
 
 
 
844
  "default": "model",
845
  "name": "model_name",
846
  "type": {
847
  "type": "<class 'str'>"
848
  }
849
  },
850
+ {
851
+ "default": null,
852
+ "name": "input_mapping",
853
+ "type": {
854
+ "type": "<class 'lynxkite_graph_analytics.ml_ops.ModelInferenceInputMapping'>"
855
+ }
856
+ },
857
+ {
858
  "default": null,
859
  "name": "output_mapping",
860
  "type": {
861
  "type": "<class 'lynxkite_graph_analytics.ml_ops.ModelOutputMapping'>"
862
  }
863
  }
864
+ ],
865
  "type": "basic"
866
  },
867
  "params": {
 
1480
  "series": [
1481
  {
1482
  "data": [
1483
+ 5.951645851135254,
1484
+ 5.274348735809326,
1485
+ 4.588619709014893,
1486
+ 3.966594934463501,
1487
+ 3.0671465396881104,
1488
+ 2.3460588455200195,
1489
+ 1.986690640449524,
1490
+ 1.8489981889724731,
1491
+ 1.801417589187622,
1492
+ 1.7839369773864746,
1493
+ 1.7767301797866821,
1494
+ 1.7733982801437378,
1495
+ 1.7716325521469116,
1496
+ 1.7705225944519043,
1497
+ 1.7696930170059204,
1498
+ 1.7689863443374634,
1499
+ 1.7683357000350952,
1500
+ 1.7677124738693237,
1501
+ 1.7671048641204834,
1502
+ 1.766507625579834,
1503
+ 1.7659177780151367,
1504
+ 1.7653343677520752,
1505
+ 1.7647572755813599,
1506
+ 1.764186143875122,
1507
+ 1.763621211051941,
1508
+ 1.763061761856079,
1509
+ 1.762508511543274,
1510
+ 1.7619603872299194,
1511
+ 1.7614178657531738,
1512
+ 1.760880470275879,
1513
+ 1.7603485584259033,
1514
+ 1.7598220109939575,
1515
+ 1.7593002319335938,
1516
+ 1.7587836980819702,
1517
+ 1.7582720518112183,
1518
+ 1.7577650547027588,
1519
+ 1.757262945175171,
1520
+ 1.7567654848098755,
1521
+ 1.756272792816162,
1522
+ 1.755784511566162,
1523
+ 1.755300760269165,
1524
+ 1.7548213005065918,
1525
+ 1.7543463706970215,
1526
+ 1.7538751363754272,
1527
+ 1.7534087896347046,
1528
+ 1.7529460191726685,
1529
+ 1.7524876594543457,
1530
+ 1.752032995223999,
1531
+ 1.751582384109497,
1532
+ 1.7511354684829712,
1533
+ 1.75069260597229,
1534
+ 1.7502535581588745,
1535
+ 1.7498178482055664,
1536
+ 1.7493858337402344,
1537
+ 1.7489577531814575,
1538
+ 1.748533010482788,
1539
+ 1.7481114864349365,
1540
+ 1.7476938962936401,
1541
+ 1.7472795248031616,
1542
+ 1.746868371963501,
1543
+ 1.7464605569839478,
1544
+ 1.7460559606552124,
1545
+ 1.7456544637680054,
1546
+ 1.7452563047409058,
1547
+ 1.744861125946045,
1548
+ 1.7444690465927124,
1549
+ 1.7440800666809082,
1550
+ 1.7436938285827637,
1551
+ 1.7433106899261475,
1552
+ 1.74293053150177,
1553
+ 1.7425531148910522,
1554
+ 1.7421785593032837,
1555
+ 1.7418066263198853,
1556
+ 1.7414374351501465,
1557
+ 1.7410712242126465,
1558
+ 1.740707516670227,
1559
+ 1.7403463125228882,
1560
+ 1.739988088607788,
1561
+ 1.7396321296691895,
1562
+ 1.739278793334961,
1563
+ 1.738927960395813,
1564
+ 1.7385796308517456,
1565
+ 1.7382338047027588,
1566
+ 1.7378901243209839,
1567
+ 1.7375489473342896,
1568
+ 1.7372102737426758,
1569
+ 1.7368735074996948,
1570
+ 1.7365405559539795,
1571
+ 1.736209511756897,
1572
+ 1.735880970954895,
1573
+ 1.7355544567108154,
1574
+ 1.7352303266525269,
1575
+ 1.7349083423614502,
1576
+ 1.734588384628296,
1577
+ 1.7342705726623535,
1578
+ 1.7339547872543335,
1579
+ 1.7336410284042358,
1580
+ 1.7333295345306396,
1581
+ 1.7330199480056763,
1582
+ 1.7327126264572144,
1583
+ 1.7324069738388062,
1584
+ 1.7321033477783203,
1585
+ 1.7318018674850464,
1586
+ 1.7315021753311157,
1587
+ 1.731204867362976,
1588
+ 1.7309091091156006,
1589
+ 1.730615258216858,
1590
+ 1.730323314666748,
1591
+ 1.730033040046692,
1592
+ 1.729726791381836,
1593
+ 1.7290540933609009,
1594
+ 1.727712631225586,
1595
+ 1.7197412252426147,
1596
+ 1.596683144569397,
1597
+ 0.773148238658905,
1598
+ 0.39096447825431824,
1599
+ 0.2109919637441635,
1600
+ 0.13099151849746704,
1601
+ 0.09647822380065918,
1602
+ 0.08164384216070175,
1603
+ 0.07520285993814468,
1604
+ 0.0723332017660141,
1605
+ 0.07098480314016342,
1606
+ 0.0702858567237854,
1607
+ 0.0698651373386383,
1608
+ 0.06956446170806885,
1609
+ 0.0693163350224495,
1610
+ 0.06909190863370895,
1611
+ 0.06887885183095932,
1612
+ 0.06867185235023499,
1613
+ 0.0684686228632927,
1614
+ 0.06826816499233246,
1615
+ 0.06807000190019608,
1616
+ 0.06787554919719696,
1617
+ 0.06768527626991272,
1618
+ 0.06749691069126129,
1619
+ 0.06731042265892029,
1620
+ 0.06712576001882553,
1621
+ 0.06694285571575165,
1622
+ 0.06676167249679565,
1623
+ 0.06658219546079636,
1624
+ 0.06640437990427017,
1625
+ 0.06622816622257233,
1626
+ 0.06605355441570282,
1627
+ 0.06588048487901688,
1628
+ 0.0657089352607727,
1629
+ 0.06553887575864792,
1630
+ 0.06537164747714996,
1631
+ 0.06520784646272659,
1632
+ 0.06504552066326141,
1633
+ 0.06488457322120667,
1634
+ 0.06472500413656235,
1635
+ 0.06456676870584488,
1636
+ 0.06440985947847366,
1637
+ 0.06425532698631287,
1638
+ 0.06410346925258636,
1639
+ 0.06395288556814194,
1640
+ 0.0638035461306572,
1641
+ 0.06365542858839035,
1642
+ 0.06350891292095184,
1643
+ 0.06336474418640137,
1644
+ 0.0632217675447464,
1645
+ 0.06307994574308395,
1646
+ 0.06293924152851105,
1647
+ 0.06280024349689484,
1648
+ 0.06266289204359055,
1649
+ 0.0625266581773758,
1650
+ 0.062391478568315506,
1651
+ 0.062257349491119385,
1652
+ 0.06212425231933594,
1653
+ 0.06199217587709427,
1654
+ 0.06186108663678169,
1655
+ 0.06173097714781761,
1656
+ 0.061601828783750534,
1657
+ 0.06147363409399986,
1658
+ 0.061346352100372314,
1659
+ 0.06121999770402908,
1660
+ 0.06109452247619629,
1661
+ 0.060969945043325424,
1662
+ 0.060846228152513504,
1663
+ 0.06072336435317993,
1664
+ 0.06060132384300232,
1665
+ 0.06048011779785156,
1666
+ 0.06035973131656647,
1667
+ 0.06024013087153435,
1668
+ 0.060121312737464905,
1669
+ 0.06000327318906784,
1670
+ 0.05988664552569389,
1671
+ 0.059771209955215454,
1672
+ 0.0596565380692482,
1673
+ 0.059542614966630936,
1674
+ 0.05942942202091217,
1675
+ 0.05931694060564041,
1676
+ 0.059205178171396255,
1677
+ 0.05909412354230881,
1678
+ 0.05898374691605568,
1679
+ 0.058874040842056274,
1680
+ 0.05876500904560089,
1681
+ 0.05865663290023804,
1682
+ 0.05854890123009682
1683
  ],
1684
  "type": "line"
1685
  }
 
1731
  "Input__tensor_1_output"
1732
  ],
1733
  "loss_inputs": [
1734
+ "Input__tensor_3_output",
1735
+ "Output_1_x"
1736
  ],
1737
  "outputs": [
1738
  "Output_1_x"
 
1746
  }
1747
  ],
1748
  "meta": {
1749
+ "color": "orange",
1750
+ "inputs": [
1751
+ {
1752
  "name": "bundle",
1753
  "position": "left",
1754
  "type": {
1755
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
1756
  }
1757
  }
1758
+ ],
1759
  "name": "View loss",
1760
+ "outputs": [],
1761
+ "params": [],
1762
  "type": "visualization"
1763
  },
1764
  "params": {},
 
2198
  ],
2199
  "data": [
2200
  [
2201
+ 5.0,
2202
+ "[0.67269951 0.10478973 0.5584439 0.83605725]",
2203
+ "[1.67269945 1.10478973 1.5584439 1.83605719]",
2204
+ "[2.5200114250183105, 2.5500504970550537, 2.474149227142334, 2.5841031074523926]"
2205
  ],
2206
  [
2207
+ 9.0,
2208
+ "[0.32225502 0.16999388 0.05823922 0.9628762 ]",
2209
+ "[1.32225502 1.16999388 1.05823922 1.9628762 ]",
2210
+ "[2.2936718463897705, 2.29734468460083, 2.193934440612793, 2.465013265609741]"
2211
  ],
2212
  [
2213
+ 42.0,
2214
+ "[0.75292218 0.81470108 0.49657214 0.56217098]",
2215
+ "[1.75292218 1.81470108 1.49657214 1.56217098]",
2216
+ "[2.705364942550659, 2.693166971206665, 2.6420576572418213, 2.709315061569214]"
2217
  ],
2218
  [
2219
+ 44.0,
2220
+ "[0.52784437 0.54268694 0.12358981 0.72116476]",
2221
+ "[1.52784443 1.54268694 1.12358975 1.7211647 ]",
2222
+ "[2.4462273120880127, 2.429269552230835, 2.3485944271087646, 2.5453922748565674]"
2223
  ],
2224
  [
2225
+ 82.0,
2226
+ "[0.63235509 0.70352674 0.96188956 0.46240485]",
2227
+ "[1.63235509 1.70352674 1.96188951 1.46240485]",
2228
+ "[2.7882840633392334, 2.7618415355682373, 2.7329940795898438, 2.6951816082000732]"
2229
  ],
2230
  [
2231
+ 63.0,
2232
+ "[0.94559073 0.65736622 0.25761551 0.48553199]",
2233
+ "[1.94559073 1.65736628 1.25761557 1.48553205]",
2234
+ "[2.58785343170166, 2.573683500289917, 2.514312505722046, 2.6052181720733643]"
2235
  ],
2236
  [
2237
+ 45.0,
2238
+ "[0.73217702 0.65233225 0.44077861 0.33837909]",
2239
+ "[1.73217702 1.65233231 1.44077861 1.33837914]",
2240
+ "[2.56579852104187, 2.5119059085845947, 2.4670586585998535, 2.514880657196045]"
2241
  ],
2242
  [
2243
+ 58.0,
2244
+ "[0.79905868 0.89367443 0.75429088 0.3190186 ]",
2245
+ "[1.79905868 1.89367437 1.75429082 1.3190186 ]",
2246
+ "[2.784841537475586, 2.7429990768432617, 2.7168993949890137, 2.684943914413452]"
2247
  ],
2248
  [
2249
+ 29.0,
2250
  "[0.23942459 0.90487361 0.69337189 0.65089428]",
2251
  "[1.23942459 1.90487361 1.69337189 1.65089428]",
2252
+ "[2.7037124633789062, 2.6642377376556396, 2.616722822189331, 2.701845645904541]"
2253
  ],
2254
  [
2255
+ 55.0,
2256
+ "[0.95928186 0.84273899 0.71514636 0.38619852]",
2257
+ "[1.95928192 1.84273899 1.7151463 1.38619852]",
2258
+ "[2.8087925910949707, 2.792400598526001, 2.760772466659546, 2.733377695083618]"
2259
  ],
2260
  [
2261
+ 37.0,
2262
+ "[0.78956431 0.87284744 0.06880784 0.03455889]",
2263
+ "[1.78956437 1.87284744 1.06880784 1.03455889]",
2264
+ "[2.4434266090393066, 2.3314132690429688, 2.2909493446350098, 2.365412712097168]"
2265
  ],
2266
  [
2267
+ 24.0,
2268
+ "[0.48507756 0.80808765 0.77162558 0.47834778]",
2269
+ "[1.48507762 1.80808759 1.77162552 1.47834778]",
2270
+ "[2.719438314437866, 2.6760094165802, 2.6397786140441895, 2.658838987350464]"
2271
  ],
2272
  [
2273
+ 6.0,
2274
+ "[0.18686318 0.49356437 0.51323432 0.75392658]",
2275
+ "[1.18686318 1.49356437 1.51323438 1.75392652]",
2276
+ "[2.4986000061035156, 2.4670026302337646, 2.398942708969116, 2.5478687286376953]"
2277
  ],
2278
  [
2279
+ 19.0,
2280
+ "[0.24388778 0.07268471 0.68350857 0.73431659]",
2281
+ "[1.24388778 1.07268476 1.68350863 1.73431659]",
2282
+ "[2.4221277236938477, 2.398268938064575, 2.330900192260742, 2.4378199577331543]"
2283
  ],
2284
  [
2285
+ 33.0,
2286
+ "[0.27845025 0.32472342 0.82203609 0.77107543]",
2287
+ "[1.27845025 1.32472348 1.82203603 1.77107549]",
2288
+ "[2.5835256576538086, 2.573005437850952, 2.5142269134521484, 2.591273069381714]"
2289
  ],
2290
  [
2291
+ 71.0,
2292
+ "[0.9630242 0.76359051 0.24853623 0.76881069]",
2293
+ "[1.96302414 1.76359057 1.24853623 1.76881075]",
2294
+ "[2.696070432662964, 2.731595754623413, 2.6591246128082275, 2.793705463409424]"
2295
  ],
2296
  [
2297
+ 12.0,
2298
+ "[0.11693293 0.49860179 0.55020827 0.88832849]",
2299
+ "[1.11693287 1.49860179 1.55020833 1.88832855]",
2300
+ "[2.529472827911377, 2.5154130458831787, 2.441786766052246, 2.6100752353668213]"
2301
  ],
2302
  [
2303
+ 8.0,
2304
+ "[4.27091718e-01 4.89909172e-01 6.92297399e-01 2.57611275e-04]",
2305
+ "[1.42709172 1.48990917 1.69229746 1.00025761]",
2306
+ "[2.431171178817749, 2.315561294555664, 2.2837576866149902, 2.2987921237945557]"
2307
  ],
2308
  [
2309
+ 64.0,
2310
+ "[0.60075855 0.12234765 0.00614399 0.30560958]",
2311
+ "[1.60075855 1.12234759 1.00614405 1.30560958]",
2312
+ "[2.1521613597869873, 2.0637009143829346, 1.995371699333191, 2.1883833408355713]"
2313
  ],
2314
  [
2315
+ 85.0,
2316
+ "[0.40234613 0.54987347 0.49542785 0.54153186]",
2317
+ "[1.40234613 1.54987347 1.49542785 1.5415318 ]",
2318
+ "[2.515237331390381, 2.466916799545288, 2.4108681678771973, 2.5100111961364746]"
2319
  ],
2320
  [
2321
+ 39.0,
2322
+ "[0.00497234 0.39319336 0.57054168 0.75150961]",
2323
+ "[1.00497234 1.39319336 1.57054162 1.75150967]",
2324
+ "[2.437438726425171, 2.3902065753936768, 2.3222527503967285, 2.476053237915039]"
2325
  ],
2326
  [
2327
+ 99.0,
2328
+ "[0.68891573 0.25576538 0.96339929 0.503833 ]",
2329
+ "[1.68891573 1.25576544 1.96339929 1.50383306]",
2330
+ "[2.652355432510376, 2.639017343521118, 2.600130319595337, 2.5669779777526855]"
2331
  ],
2332
  [
2333
+ 70.0,
2334
+ "[0.47963417 0.81818312 0.48720706 0.49339259]",
2335
+ "[1.47963417 1.81818318 1.48720706 1.49339259]",
2336
+ "[2.6165666580200195, 2.5666303634643555, 2.5178661346435547, 2.6018319129943848]"
2337
  ],
2338
  [
2339
+ 65.0,
2340
+ "[0.39147133 0.29854035 0.84663737 0.58175623]",
2341
+ "[1.39147139 1.29854035 1.84663737 1.58175623]",
2342
+ "[2.5662052631378174, 2.534679889678955, 2.4866561889648438, 2.518486499786377]"
2343
  ],
2344
  [
2345
+ 25.0,
2346
+ "[0.68062544 0.98093534 0.14778823 0.53244978]",
2347
+ "[1.68062544 1.98093534 1.14778829 1.53244972]",
2348
+ "[2.6060662269592285, 2.5712525844573975, 2.509855270385742, 2.6539924144744873]"
2349
  ],
2350
  [
2351
+ 81.0,
2352
+ "[0.6032477 0.83361369 0.18538666 0.19108021]",
2353
+ "[1.60324764 1.83361363 1.18538666 1.19108021]",
2354
+ "[2.464529275894165, 2.3653628826141357, 2.320333242416382, 2.4114229679107666]"
2355
  ],
2356
  [
2357
+ 79.0,
2358
+ "[0.91730917 0.22574073 0.09591609 0.33056474]",
2359
+ "[1.91730917 1.22574067 1.09591603 1.33056474]",
2360
+ "[2.3257997035980225, 2.2782139778137207, 2.2121763229370117, 2.3205032348632812]"
2361
  ],
2362
  [
2363
+ 4.0,
2364
+ "[0.76807946 0.98855817 0.08259124 0.01730657]",
2365
+ "[1.76807952 1.98855817 1.0825913 1.01730657]",
2366
+ "[2.4806268215179443, 2.3638875484466553, 2.3269295692443848, 2.396709442138672]"
2367
  ],
2368
  [
2369
+ 21.0,
2370
+ "[0.56922203 0.98222166 0.76851749 0.28615737]",
2371
+ "[1.56922197 1.9822216 1.76851749 1.28615737]",
2372
+ "[2.755495309829712, 2.68673038482666, 2.663788318634033, 2.644230842590332]"
2373
  ],
2374
  [
2375
+ 97.0,
2376
+ "[0.72795159 0.79317838 0.27832931 0.96576637]",
2377
+ "[1.72795153 1.79317832 1.27832937 1.96576643]",
2378
+ "[2.7061498165130615, 2.754149913787842, 2.6724681854248047, 2.852900266647339]"
2379
  ]
2380
  ]
2381
  },
 
2387
  ],
2388
  "data": [
2389
  [
2390
+ 30.0,
2391
  "[0.94516498 0.08422136 0.5608117 0.07652664]",
2392
  "[1.94516492 1.08422136 1.56081176 1.07652664]"
2393
  ],
2394
  [
2395
+ 31.0,
2396
  "[0.26661873 0.45946234 0.13510543 0.81294441]",
2397
  "[1.26661873 1.4594624 1.13510537 1.81294441]"
2398
  ],
2399
  [
2400
+ 32.0,
2401
  "[0.30754459 0.77694583 0.09278506 0.38326019]",
2402
  "[1.30754459 1.77694583 1.09278512 1.38326025]"
2403
  ],
2404
  [
2405
+ 33.0,
2406
  "[0.27845025 0.32472342 0.82203609 0.77107543]",
2407
  "[1.27845025 1.32472348 1.82203603 1.77107549]"
2408
  ],
2409
  [
2410
+ 34.0,
2411
  "[0.4827103 0.10563457 0.98858833 0.82286644]",
2412
  "[1.48271036 1.10563457 1.98858833 1.82286644]"
2413
  ],
2414
  [
2415
+ 35.0,
2416
  "[0.98033333 0.97656083 0.38939917 0.81491041]",
2417
  "[1.98033333 1.97656083 1.38939917 1.81491041]"
2418
  ],
2419
  [
2420
+ 36.0,
2421
  "[0.74064726 0.4155122 0.09800029 0.49930882]",
2422
  "[1.74064732 1.4155122 1.09800029 1.49930882]"
2423
  ],
2424
  [
2425
+ 37.0,
2426
  "[0.78956431 0.87284744 0.06880784 0.03455889]",
2427
  "[1.78956437 1.87284744 1.06880784 1.03455889]"
2428
  ],
2429
  [
2430
+ 38.0,
2431
  "[0.94221359 0.57740951 0.98649532 0.40934443]",
2432
  "[1.94221354 1.57740951 1.98649526 1.40934443]"
2433
  ],
2434
  [
2435
+ 39.0,
2436
  "[0.00497234 0.39319336 0.57054168 0.75150961]",
2437
  "[1.00497234 1.39319336 1.57054162 1.75150967]"
2438
  ],
2439
  [
2440
+ 40.0,
2441
  "[0.44330525 0.09997386 0.89025736 0.90507984]",
2442
  "[1.44330525 1.09997392 1.89025736 1.90507984]"
2443
  ],
2444
  [
2445
+ 41.0,
2446
  "[0.72290605 0.96945059 0.68354797 0.15270454]",
2447
  "[1.72290611 1.96945059 1.68354797 1.15270448]"
2448
  ],
2449
  [
2450
+ 42.0,
2451
  "[0.75292218 0.81470108 0.49657214 0.56217098]",
2452
  "[1.75292218 1.81470108 1.49657214 1.56217098]"
2453
  ],
2454
  [
2455
+ 43.0,
2456
  "[0.33480108 0.59181517 0.76198453 0.98062384]",
2457
  "[1.33480108 1.59181523 1.76198459 1.98062384]"
2458
  ],
2459
  [
2460
+ 44.0,
2461
  "[0.52784437 0.54268694 0.12358981 0.72116476]",
2462
  "[1.52784443 1.54268694 1.12358975 1.7211647 ]"
2463
  ],
2464
  [
2465
+ 45.0,
2466
  "[0.73217702 0.65233225 0.44077861 0.33837909]",
2467
  "[1.73217702 1.65233231 1.44077861 1.33837914]"
2468
  ],
2469
  [
2470
+ 46.0,
2471
  "[0.34084332 0.73018837 0.54168713 0.91440833]",
2472
  "[1.34084332 1.73018837 1.54168713 1.91440833]"
2473
  ],
2474
  [
2475
+ 47.0,
2476
  "[0.60110539 0.3618983 0.32342511 0.98672163]",
2477
  "[1.60110545 1.3618983 1.32342505 1.98672163]"
2478
  ],
2479
  [
2480
+ 48.0,
2481
  "[0.77427191 0.21829212 0.12769502 0.74303615]",
2482
  "[1.77427197 1.21829212 1.12769508 1.74303615]"
2483
  ],
2484
  [
2485
+ 49.0,
2486
  "[0.08107251 0.2602725 0.18861133 0.44833237]",
2487
  "[1.08107257 1.2602725 1.18861127 1.44833231]"
2488
  ],
2489
  [
2490
+ 50.0,
2491
  "[0.59812403 0.78395379 0.0291847 0.81814629]",
2492
  "[1.59812403 1.78395379 1.0291847 1.81814623]"
2493
  ],
2494
  [
2495
+ 51.0,
2496
  "[0.93488538 0.73882395 0.37345302 0.0274905 ]",
2497
  "[1.93488538 1.73882389 1.37345302 1.0274905 ]"
2498
  ],
2499
  [
2500
+ 52.0,
2501
  "[0.30631393 0.48311198 0.87847513 0.67559886]",
2502
  "[1.30631399 1.48311198 1.87847519 1.67559886]"
2503
  ],
2504
  [
2505
+ 53.0,
2506
  "[0.18720162 0.74115586 0.98626411 0.30355608]",
2507
  "[1.18720162 1.74115586 1.98626411 1.30355608]"
2508
  ],
2509
  [
2510
+ 54.0,
2511
  "[0.85566247 0.83362883 0.48424995 0.25265992]",
2512
  "[1.85566247 1.83362889 1.48424995 1.25265992]"
2513
  ],
2514
  [
2515
+ 55.0,
2516
  "[0.95928186 0.84273899 0.71514636 0.38619852]",
2517
  "[1.95928192 1.84273899 1.7151463 1.38619852]"
2518
  ],
2519
  [
2520
+ 56.0,
2521
  "[0.32565445 0.90939188 0.07488042 0.13730896]",
2522
  "[1.32565451 1.90939188 1.07488036 1.13730896]"
2523
  ],
2524
  [
2525
+ 57.0,
2526
  "[0.9829582 0.59269661 0.40120947 0.95487177]",
2527
  "[1.9829582 1.59269667 1.40120947 1.95487177]"
2528
  ],
2529
  [
2530
+ 58.0,
2531
  "[0.79905868 0.89367443 0.75429088 0.3190186 ]",
2532
  "[1.79905868 1.89367437 1.75429082 1.3190186 ]"
2533
  ],
2534
  [
2535
+ 59.0,
2536
  "[0.54914117 0.03810108 0.87531954 0.73044223]",
2537
  "[1.54914117 1.03810108 1.87531948 1.73044229]"
2538
  ],
2539
  [
2540
+ 60.0,
2541
  "[0.67418337 0.79634351 0.23229051 0.71345252]",
2542
  "[1.67418337 1.79634356 1.23229051 1.71345258]"
2543
  ],
2544
  [
2545
+ 61.0,
2546
  "[0.87285906 0.48354989 0.39394957 0.59456545]",
2547
  "[1.872859 1.48354983 1.39394951 1.59456539]"
2548
  ],
2549
  [
2550
+ 62.0,
2551
  "[0.81788456 0.58174163 0.29376316 0.7971254 ]",
2552
  "[1.81788456 1.58174157 1.29376316 1.79712534]"
2553
  ],
2554
  [
2555
+ 63.0,
2556
  "[0.94559073 0.65736622 0.25761551 0.48553199]",
2557
  "[1.94559073 1.65736628 1.25761557 1.48553205]"
2558
  ],
2559
  [
2560
+ 64.0,
2561
  "[0.60075855 0.12234765 0.00614399 0.30560958]",
2562
  "[1.60075855 1.12234759 1.00614405 1.30560958]"
2563
  ],
2564
  [
2565
+ 65.0,
2566
  "[0.39147133 0.29854035 0.84663737 0.58175623]",
2567
  "[1.39147139 1.29854035 1.84663737 1.58175623]"
2568
  ],
2569
  [
2570
+ 66.0,
2571
  "[0.02162331 0.81861657 0.92468154 0.07808572]",
2572
  "[1.02162337 1.81861663 1.92468154 1.07808566]"
2573
  ],
2574
  [
2575
+ 67.0,
2576
  "[0.02235305 0.52774918 0.7331115 0.84358269]",
2577
  "[1.02235305 1.52774918 1.7331115 1.84358263]"
2578
  ],
2579
  [
2580
+ 68.0,
2581
  "[0.6080932 0.56563014 0.32107437 0.72599429]",
2582
  "[1.60809326 1.5656302 1.32107437 1.72599435]"
2583
  ],
2584
  [
2585
+ 69.0,
2586
  "[0.67447788 0.6125319 0.98007888 0.65968603]",
2587
  "[1.67447782 1.6125319 1.98007894 1.65968609]"
2588
  ],
2589
  [
2590
+ 70.0,
2591
  "[0.47963417 0.81818312 0.48720706 0.49339259]",
2592
  "[1.47963417 1.81818318 1.48720706 1.49339259]"
2593
  ],
2594
  [
2595
+ 71.0,
2596
  "[0.9630242 0.76359051 0.24853623 0.76881069]",
2597
  "[1.96302414 1.76359057 1.24853623 1.76881075]"
2598
  ],
2599
  [
2600
+ 72.0,
2601
  "[0.60609657 0.96257663 0.19292736 0.95702219]",
2602
  "[1.60609651 1.96257663 1.19292736 1.95702219]"
2603
  ],
2604
  [
2605
+ 73.0,
2606
  "[0.80654246 0.08253473 0.74478531 0.71257162]",
2607
  "[1.8065424 1.08253479 1.74478531 1.71257162]"
2608
  ],
2609
  [
2610
+ 74.0,
2611
  "[0.70167565 0.26930219 0.5660674 0.61194974]",
2612
  "[1.70167565 1.26930213 1.56606746 1.61194968]"
2613
  ],
2614
  [
2615
+ 75.0,
2616
  "[0.76933283 0.86241865 0.44114518 0.65644735]",
2617
  "[1.76933289 1.86241865 1.44114518 1.65644741]"
2618
  ],
2619
  [
2620
+ 76.0,
2621
  "[0.59492421 0.90274489 0.38069052 0.46101224]",
2622
  "[1.59492421 1.90274489 1.38069057 1.46101224]"
2623
  ],
2624
  [
2625
+ 77.0,
2626
  "[0.15064228 0.03198934 0.25754827 0.51484001]",
2627
  "[1.15064228 1.03198934 1.25754833 1.51484001]"
2628
  ],
2629
  [
2630
+ 78.0,
2631
  "[0.12024075 0.21342516 0.56858408 0.58644271]",
2632
  "[1.12024069 1.21342516 1.56858408 1.58644271]"
2633
  ],
2634
  [
2635
+ 79.0,
2636
  "[0.91730917 0.22574073 0.09591609 0.33056474]",
2637
  "[1.91730917 1.22574067 1.09591603 1.33056474]"
2638
  ],
2639
  [
2640
+ 80.0,
2641
  "[0.49691743 0.61873293 0.90698647 0.94486356]",
2642
  "[1.49691749 1.61873293 1.90698647 1.94486356]"
2643
  ],
2644
  [
2645
+ 81.0,
2646
  "[0.6032477 0.83361369 0.18538666 0.19108021]",
2647
  "[1.60324764 1.83361363 1.18538666 1.19108021]"
2648
  ],
2649
  [
2650
+ 82.0,
2651
  "[0.63235509 0.70352674 0.96188956 0.46240485]",
2652
  "[1.63235509 1.70352674 1.96188951 1.46240485]"
2653
  ],
2654
  [
2655
+ 83.0,
2656
  "[0.37959969 0.42820001 0.10690689 0.96353984]",
2657
  "[1.37959969 1.42820001 1.10690689 1.96353984]"
2658
  ],
2659
  [
2660
+ 84.0,
2661
  "[0.49607176 0.1922397 0.46640229 0.78321403]",
2662
  "[1.49607182 1.19223976 1.46640229 1.78321409]"
2663
  ],
2664
  [
2665
+ 85.0,
2666
  "[0.40234613 0.54987347 0.49542785 0.54153186]",
2667
  "[1.40234613 1.54987347 1.49542785 1.5415318 ]"
2668
  ],
2669
  [
2670
+ 86.0,
2671
  "[0.80893755 0.92237449 0.88346356 0.93164903]",
2672
  "[1.80893755 1.92237449 1.88346362 1.93164897]"
2673
  ],
2674
  [
2675
+ 87.0,
2676
  "[0.12858278 0.09930819 0.83222693 0.72485673]",
2677
  "[1.12858272 1.09930825 1.83222699 1.72485673]"
2678
  ],
2679
  [
2680
+ 88.0,
2681
  "[0.72470158 0.4940322 0.41027349 0.89364016]",
2682
  "[1.72470164 1.49403214 1.41027355 1.89364016]"
2683
  ],
2684
  [
2685
+ 89.0,
2686
  "[0.47856545 0.46267092 0.6376707 0.84747767]",
2687
  "[1.47856545 1.46267092 1.63767076 1.84747767]"
2688
  ],
2689
  [
2690
+ 90.0,
2691
  "[0.49584109 0.80599248 0.07096875 0.75872749]",
2692
  "[1.49584103 1.80599248 1.07096875 1.75872755]"
2693
  ],
2694
  [
2695
+ 91.0,
2696
  "[0.43500566 0.66041756 0.80293626 0.96224713]",
2697
  "[1.43500566 1.66041756 1.80293632 1.96224713]"
2698
  ],
2699
  [
2700
+ 92.0,
2701
  "[0.78397602 0.74223626 0.26603186 0.41664881]",
2702
  "[1.78397608 1.74223626 1.26603186 1.41664886]"
2703
  ],
2704
  [
2705
+ 93.0,
2706
  "[0.28942841 0.05601001 0.33039129 0.27781558]",
2707
  "[1.28942847 1.05601001 1.33039129 1.27781558]"
2708
  ],
2709
  [
2710
+ 94.0,
2711
  "[0.68094063 0.45189077 0.22661722 0.37354094]",
2712
  "[1.68094063 1.45189071 1.22661722 1.37354088]"
2713
  ],
2714
  [
2715
+ 95.0,
2716
  "[0.43681622 0.74680805 0.83598751 0.12414402]",
2717
  "[1.43681622 1.74680805 1.83598757 1.12414408]"
2718
  ],
2719
  [
2720
+ 96.0,
2721
  "[0.47870928 0.17129105 0.27300501 0.20634609]",
2722
  "[1.47870922 1.17129111 1.27300501 1.20634604]"
2723
  ],
2724
  [
2725
+ 97.0,
2726
  "[0.72795159 0.79317838 0.27832931 0.96576637]",
2727
  "[1.72795153 1.79317832 1.27832937 1.96576643]"
2728
  ],
2729
  [
2730
+ 98.0,
2731
  "[0.87608397 0.93200487 0.80169648 0.37758952]",
2732
  "[1.87608397 1.93200493 1.80169654 1.37758946]"
2733
  ],
2734
  [
2735
+ 99.0,
2736
  "[0.68891573 0.25576538 0.96339929 0.503833 ]",
2737
  "[1.68891573 1.25576544 1.96339929 1.50383306]"
2738
  ]
 
2744
  ],
2745
  "data": [
2746
  [
2747
+ 5.951645851135254
2748
  ],
2749
  [
2750
+ 5.274348735809326
2751
  ],
2752
  [
2753
+ 4.588619709014893
2754
  ],
2755
  [
2756
+ 3.966594934463501
2757
  ],
2758
  [
2759
+ 3.0671465396881104
2760
  ],
2761
  [
2762
+ 2.3460588455200195
2763
  ],
2764
  [
2765
+ 1.986690640449524
2766
  ],
2767
  [
2768
+ 1.8489981889724731
2769
  ],
2770
  [
2771
+ 1.801417589187622
2772
  ],
2773
  [
2774
+ 1.7839369773864746
2775
  ],
2776
  [
2777
+ 1.7767301797866821
2778
  ],
2779
  [
2780
+ 1.7733982801437378
2781
  ],
2782
  [
2783
+ 1.7716325521469116
2784
  ],
2785
  [
2786
+ 1.7705225944519043
2787
  ],
2788
  [
2789
+ 1.7696930170059204
2790
  ],
2791
  [
2792
+ 1.7689863443374634
2793
  ],
2794
  [
2795
+ 1.7683357000350952
2796
  ],
2797
  [
2798
+ 1.7677124738693237
2799
  ],
2800
  [
2801
+ 1.7671048641204834
2802
  ],
2803
  [
2804
+ 1.766507625579834
2805
  ],
2806
  [
2807
+ 1.7659177780151367
2808
  ],
2809
  [
2810
+ 1.7653343677520752
2811
  ],
2812
  [
2813
+ 1.7647572755813599
2814
  ],
2815
  [
2816
+ 1.764186143875122
2817
  ],
2818
  [
2819
+ 1.763621211051941
2820
  ],
2821
  [
2822
+ 1.763061761856079
2823
  ],
2824
  [
2825
+ 1.762508511543274
2826
  ],
2827
  [
2828
+ 1.7619603872299194
2829
  ],
2830
  [
2831
+ 1.7614178657531738
2832
  ],
2833
  [
2834
+ 1.760880470275879
2835
  ],
2836
  [
2837
+ 1.7603485584259033
2838
  ],
2839
  [
2840
+ 1.7598220109939575
2841
  ],
2842
  [
2843
+ 1.7593002319335938
2844
  ],
2845
  [
2846
+ 1.7587836980819702
2847
  ],
2848
  [
2849
+ 1.7582720518112183
2850
  ],
2851
  [
2852
+ 1.7577650547027588
2853
  ],
2854
  [
2855
+ 1.757262945175171
2856
  ],
2857
  [
2858
+ 1.7567654848098755
2859
  ],
2860
  [
2861
+ 1.756272792816162
2862
  ],
2863
  [
2864
+ 1.755784511566162
2865
  ],
2866
  [
2867
+ 1.755300760269165
2868
  ],
2869
  [
2870
+ 1.7548213005065918
2871
  ],
2872
  [
2873
+ 1.7543463706970215
2874
  ],
2875
  [
2876
+ 1.7538751363754272
2877
  ],
2878
  [
2879
+ 1.7534087896347046
2880
  ],
2881
  [
2882
+ 1.7529460191726685
2883
  ],
2884
  [
2885
+ 1.7524876594543457
2886
  ],
2887
  [
2888
+ 1.752032995223999
2889
  ],
2890
  [
2891
+ 1.751582384109497
2892
  ],
2893
  [
2894
+ 1.7511354684829712
2895
  ],
2896
  [
2897
+ 1.75069260597229
2898
  ],
2899
  [
2900
+ 1.7502535581588745
2901
  ],
2902
  [
2903
+ 1.7498178482055664
2904
  ],
2905
  [
2906
+ 1.7493858337402344
2907
  ],
2908
  [
2909
+ 1.7489577531814575
2910
  ],
2911
  [
2912
+ 1.748533010482788
2913
  ],
2914
  [
2915
+ 1.7481114864349365
2916
  ],
2917
  [
2918
+ 1.7476938962936401
2919
  ],
2920
  [
2921
+ 1.7472795248031616
2922
  ],
2923
  [
2924
+ 1.746868371963501
2925
  ],
2926
  [
2927
+ 1.7464605569839478
2928
  ],
2929
  [
2930
+ 1.7460559606552124
2931
  ],
2932
  [
2933
+ 1.7456544637680054
2934
  ],
2935
  [
2936
+ 1.7452563047409058
2937
  ],
2938
  [
2939
+ 1.744861125946045
2940
  ],
2941
  [
2942
+ 1.7444690465927124
2943
  ],
2944
  [
2945
+ 1.7440800666809082
2946
  ],
2947
  [
2948
+ 1.7436938285827637
2949
  ],
2950
  [
2951
+ 1.7433106899261475
2952
  ],
2953
  [
2954
+ 1.74293053150177
2955
  ],
2956
  [
2957
+ 1.7425531148910522
2958
  ],
2959
  [
2960
+ 1.7421785593032837
2961
  ],
2962
  [
2963
+ 1.7418066263198853
2964
  ],
2965
  [
2966
+ 1.7414374351501465
2967
  ],
2968
  [
2969
+ 1.7410712242126465
2970
  ],
2971
  [
2972
+ 1.740707516670227
2973
  ],
2974
  [
2975
+ 1.7403463125228882
2976
  ],
2977
  [
2978
+ 1.739988088607788
2979
  ],
2980
  [
2981
+ 1.7396321296691895
2982
  ],
2983
  [
2984
+ 1.739278793334961
2985
  ],
2986
  [
2987
+ 1.738927960395813
2988
  ],
2989
  [
2990
+ 1.7385796308517456
2991
  ],
2992
  [
2993
+ 1.7382338047027588
2994
  ],
2995
  [
2996
+ 1.7378901243209839
2997
  ],
2998
  [
2999
+ 1.7375489473342896
3000
  ],
3001
  [
3002
+ 1.7372102737426758
3003
  ],
3004
  [
3005
+ 1.7368735074996948
3006
  ],
3007
  [
3008
+ 1.7365405559539795
3009
  ],
3010
  [
3011
+ 1.736209511756897
3012
  ],
3013
  [
3014
+ 1.735880970954895
3015
  ],
3016
  [
3017
+ 1.7355544567108154
3018
  ],
3019
  [
3020
+ 1.7352303266525269
3021
  ],
3022
  [
3023
+ 1.7349083423614502
3024
  ],
3025
  [
3026
+ 1.734588384628296
3027
  ],
3028
  [
3029
+ 1.7342705726623535
3030
  ],
3031
  [
3032
+ 1.7339547872543335
3033
  ],
3034
  [
3035
+ 1.7336410284042358
3036
  ],
3037
  [
3038
+ 1.7333295345306396
3039
  ],
3040
  [
3041
+ 1.7330199480056763
3042
  ],
3043
  [
3044
+ 1.7327126264572144
3045
  ]
3046
  ]
3047
  }
3048
  },
3049
  "other": {
3050
+ "model": "ModelConfig(model=Sequential(\n (0) - Identity(): Input__tensor_1_output -> START_Repeat_1_output\n (1) - Linear(4, 4, bias=True): START_Repeat_1_output -> Linear_1_output\n (2) - <function leaky_relu at 0x7f4117e80ea0>: Linear_1_output -> Activation_1_output\n (3) - Identity(): Activation_1_output -> START_Repeat_1_output\n (4) - Linear(4, 4, bias=True): START_Repeat_1_output -> Linear_1_output\n (5) - <function leaky_relu at 0x7f4117e80ea0>: Linear_1_output -> Activation_1_output\n (6) - Identity(): Activation_1_output -> END_Repeat_1_output\n (7) - Identity(): END_Repeat_1_output -> Output_1_x\n (8) - Identity(): Output_1_x -> Output_1_x\n), model_inputs=['Input__tensor_1_output'], model_outputs=['Output_1_x'], loss_inputs=['Input__tensor_3_output', 'Output_1_x'], loss=Sequential(\n (0) - <function constant_vector.<locals>.<lambda> at 0x7f4051099620>: nothing -> Constant_vector_1_output\n (1) - <built-in method add of type object at 0x7f411059ef00>: Input__tensor_3_output, Constant_vector_1_output -> Add_1_output\n (2) - <function mse_loss at 0x7f4117e82980>: Output_1_x, Add_1_output -> MSE_loss_2_output\n (3) - Identity(): MSE_loss_2_output -> loss\n), optimizer_parameters={'lr': 0.1, 'type': <OptionsFor_type.SGD: 4>}, optimizer=SGD (\nParameter Group 0\n dampening: 0\n differentiable: False\n foreach: None\n fused: None\n lr: 0.1\n maximize: False\n momentum: 0\n nesterov: False\n weight_decay: 0\n), source_workspace='Model definition', trained=True)"
3051
  },
3052
  "relations": []
3053
  },
 
3089
  "Input__tensor_1_output"
3090
  ],
3091
  "loss_inputs": [
3092
+ "Input__tensor_3_output",
3093
+ "Output_1_x"
3094
  ],
3095
  "outputs": [
3096
  "Output_1_x"
 
3104
  }
3105
  ],
3106
  "meta": {
3107
+ "color": "orange",
3108
+ "inputs": [
3109
+ {
3110
  "name": "bundle",
3111
  "position": "left",
3112
  "type": {
3113
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
3114
  }
3115
  }
3116
+ ],
3117
  "name": "View tables",
3118
+ "outputs": [],
3119
+ "params": [
3120
+ {
3121
  "default": 100.0,
3122
  "name": "limit",
3123
  "type": {
3124
  "type": "<class 'int'>"
3125
  }
3126
  }
3127
+ ],
3128
  "type": "table_view"
3129
  },
3130
  "params": {
 
3155
  {
3156
  "data": [
3157
  [
3158
+ 788.9803466796875,
3159
+ -51.541831970214844,
3160
  "",
3161
+ 9.09527587890625
3162
  ],
3163
  [
3164
+ 602.7313232421875,
3165
+ 524.9680786132812,
3166
  "",
3167
+ 4.464115142822266
3168
  ],
3169
  [
3170
+ -936.723876953125,
3171
+ -598.2774658203125,
3172
  "",
3173
+ 13.456573486328125
3174
  ],
3175
  [
3176
+ -740.7808837890625,
3177
+ -169.9661407470703,
3178
  "",
3179
+ 3.4803123474121094
3180
  ],
3181
  [
3182
+ -463.2208251953125,
3183
+ -782.707275390625,
3184
  "",
3185
+ 14.162765502929688
3186
  ],
3187
  [
3188
+ -591.0269775390625,
3189
+ -1083.541259765625,
3190
  "",
3191
+ 10.555366516113281
3192
  ],
3193
  [
3194
+ -1005.5611572265625,
3195
+ -858.7088623046875,
3196
  "",
3197
+ 8.691032409667969
3198
  ],
3199
  [
3200
+ 853.4742431640625,
3201
+ 313.06414794921875,
3202
  "",
3203
+ 13.883481979370117
3204
  ],
3205
  [
3206
+ 694.8038330078125,
3207
+ 873.2905883789062,
3208
  "",
3209
+ 13.051898956298828
3210
  ],
3211
  [
3212
+ -71.77912902832031,
3213
+ 360.3193359375,
3214
  "",
3215
+ 15.06808090209961
3216
  ],
3217
  [
3218
+ 820.8765869140625,
3219
+ 29.677410125732422,
3220
  "",
3221
+ 5.008731842041016
3222
  ],
3223
  [
3224
+ -991.318115234375,
3225
+ 732.60205078125,
3226
  "",
3227
+ 12.890125274658203
3228
  ],
3229
  [
3230
+ 554.213134765625,
3231
+ -916.6630859375,
3232
  "",
3233
+ 7.605861663818359
3234
  ],
3235
  [
3236
+ 145.04811096191406,
3237
+ -901.040771484375,
3238
  "",
3239
+ 5.379741668701172
3240
  ],
3241
  [
3242
+ 1018.691650390625,
3243
+ 1071.2506103515625,
3244
  "",
3245
+ 10.797737121582031
3246
  ],
3247
  [
3248
+ -476.2529602050781,
3249
+ 817.712890625,
3250
  "",
3251
+ 14.483116149902344
3252
  ],
3253
  [
3254
+ -840.4203491210938,
3255
+ 729.9735717773438,
3256
  "",
3257
+ 8.294794082641602
3258
  ],
3259
  [
3260
+ -31.723953247070312,
3261
+ 849.07275390625,
3262
  "",
3263
+ 4.843757629394531
3264
  ],
3265
  [
3266
+ -463.68719482421875,
3267
+ 324.799072265625,
3268
  "",
3269
+ 4.095094680786133
3270
  ],
3271
  [
3272
+ 766.6671142578125,
3273
+ 757.201416015625,
3274
  "",
3275
+ 7.2570648193359375
3276
  ],
3277
  [
3278
+ -693.414306640625,
3279
+ 1021.6004638671875,
3280
  "",
3281
+ 5.442634582519531
3282
  ],
3283
  [
3284
+ 60.164451599121094,
3285
+ -653.205322265625,
3286
  "",
3287
+ 11.511402130126953
3288
  ],
3289
  [
3290
+ -198.70584106445312,
3291
+ 931.2337646484375,
3292
  "",
3293
+ 10.254695892333984
3294
  ],
3295
  [
3296
+ -801.8848876953125,
3297
+ 137.9746551513672,
3298
  "",
3299
+ 9.343021392822266
3300
  ],
3301
  [
3302
+ 879.371337890625,
3303
+ -865.5347900390625,
3304
  "",
3305
+ 9.882560729980469
3306
  ],
3307
  [
3308
+ 1085.8511962890625,
3309
+ -983.2652587890625,
3310
  "",
3311
+ 6.058769226074219
3312
  ],
3313
  [
3314
+ -767.4273681640625,
3315
+ -607.4093017578125,
3316
  "",
3317
+ 4.310338973999023
3318
  ],
3319
  [
3320
+ -482.94732666015625,
3321
+ -838.2176513671875,
3322
  "",
3323
+ 5.693187713623047
3324
  ],
3325
  [
3326
+ 799.220703125,
3327
+ -555.1533203125,
3328
  "",
3329
+ 13.654813766479492
3330
  ],
3331
  [
3332
+ 330.50946044921875,
3333
+ -629.55126953125,
3334
  "",
3335
+ 14.695697784423828
3336
  ]
3337
  ],
3338
  "symbolSize": 25.65378780242026,
 
3347
  },
3348
  "visualMap": {
3349
  "calculable": true,
3350
+ "dimension": 3.0,
3351
  "inRange": {
3352
  "color": [
3353
  "#440154",
 
3362
  "#FDE725"
3363
  ]
3364
  },
3365
+ "max": 15.06808090209961,
3366
+ "min": 3.4803123474121094,
3367
+ "right": 10.0,
3368
  "top": "center"
3369
  },
3370
  "xAxis": [
 
3416
  "Input__tensor_1_output"
3417
  ],
3418
  "loss_inputs": [
3419
+ "Input__tensor_3_output",
3420
+ "Output_1_x"
3421
  ],
3422
  "outputs": [
3423
  "Output_1_x"
 
3431
  }
3432
  ],
3433
  "meta": {
3434
+ "color": "orange",
3435
+ "inputs": [
3436
+ {
3437
  "name": "bundle",
3438
  "position": "left",
3439
  "type": {
3440
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
3441
  }
3442
  }
3443
+ ],
3444
  "name": "View vectors",
3445
+ "outputs": [],
3446
+ "params": [
3447
+ {
3448
+ "default": "nodes",
3449
+ "name": "table_name",
3450
+ "type": {
3451
+ "type": "<class 'str'>"
3452
+ }
3453
+ },
3454
+ {
3455
+ "default": "",
3456
+ "name": "vector_column",
3457
+ "type": {
3458
+ "type": "<class 'str'>"
3459
+ }
3460
+ },
3461
+ {
3462
  "default": "",
3463
  "name": "label_column",
3464
  "type": {
3465
  "type": "<class 'str'>"
3466
  }
3467
  },
3468
+ {
3469
+ "default": 15.0,
3470
+ "name": "n_neighbors",
3471
+ "type": {
3472
+ "type": "<class 'int'>"
3473
+ }
3474
+ },
3475
+ {
3476
+ "default": 0.1,
3477
+ "name": "min_dist",
3478
+ "type": {
3479
+ "type": "<class 'float'>"
3480
+ }
3481
+ },
3482
+ {
3483
+ "default": null,
3484
  "name": "metric",
3485
  "type": {
3486
  "enum": [
 
3501
  "hamming"
3502
  ]
3503
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3504
  }
3505
+ ],
3506
  "type": "visualization"
3507
  },
3508
  "params": {
examples/NetworkX demo.lynxkite.json CHANGED
@@ -531,40 +531,40 @@
531
  }
532
  ],
533
  "meta": {
534
- "inputs": {
535
- "graph": {
536
  "name": "graph",
537
  "position": "left",
538
  "type": {
539
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
540
  }
541
  }
542
- },
543
  "name": "Visualize graph",
544
- "outputs": {},
545
- "params": {
546
- "color_edges_by": {
547
  "default": null,
548
  "name": "color_edges_by",
549
  "type": {
550
  "format": "edge attribute"
551
  }
552
  },
553
- "color_nodes_by": {
554
  "default": null,
555
  "name": "color_nodes_by",
556
  "type": {
557
  "format": "node attribute"
558
  }
559
  },
560
- "label_by": {
561
  "default": null,
562
  "name": "label_by",
563
  "type": {
564
  "format": "node attribute"
565
  }
566
  }
567
- },
568
  "type": "visualization"
569
  },
570
  "params": {
@@ -9730,40 +9730,40 @@
9730
  }
9731
  ],
9732
  "meta": {
9733
- "inputs": {
9734
- "graph": {
9735
  "name": "graph",
9736
  "position": "left",
9737
  "type": {
9738
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
9739
  }
9740
  }
9741
- },
9742
  "name": "Visualize graph",
9743
- "outputs": {},
9744
- "params": {
9745
- "color_edges_by": {
9746
  "default": null,
9747
  "name": "color_edges_by",
9748
  "type": {
9749
  "format": "edge attribute"
9750
  }
9751
  },
9752
- "color_nodes_by": {
9753
  "default": null,
9754
  "name": "color_nodes_by",
9755
  "type": {
9756
  "format": "node attribute"
9757
  }
9758
  },
9759
- "label_by": {
9760
  "default": null,
9761
  "name": "label_by",
9762
  "type": {
9763
  "format": "node attribute"
9764
  }
9765
  }
9766
- },
9767
  "type": "visualization"
9768
  },
9769
  "params": {
@@ -9792,26 +9792,26 @@
9792
  "in_progress": true,
9793
  "input_metadata": [],
9794
  "meta": {
9795
- "inputs": {},
9796
  "name": "NX \u203a Ladder Graph",
9797
- "outputs": {
9798
- "output": {
9799
  "name": "output",
9800
  "position": "right",
9801
  "type": {
9802
  "type": "<class 'networkx.classes.graph.Graph'>"
9803
  }
9804
  }
9805
- },
9806
- "params": {
9807
- "n": {
9808
  "default": null,
9809
  "name": "n",
9810
  "type": {
9811
  "type": "<class 'int'>"
9812
  }
9813
  }
9814
- },
9815
  "type": "basic"
9816
  },
9817
  "params": {
@@ -9842,34 +9842,34 @@
9842
  {}
9843
  ],
9844
  "meta": {
9845
- "inputs": {
9846
- "graph": {
9847
  "name": "graph",
9848
  "position": "left",
9849
  "type": {
9850
  "type": "<class 'networkx.classes.graph.Graph'>"
9851
  }
9852
  }
9853
- },
9854
  "name": "Sample graph",
9855
- "outputs": {
9856
- "output": {
9857
  "name": "output",
9858
  "position": "right",
9859
  "type": {
9860
  "type": "None"
9861
  }
9862
  }
9863
- },
9864
- "params": {
9865
- "nodes": {
9866
  "default": 100.0,
9867
  "name": "nodes",
9868
  "type": {
9869
  "type": "<class 'int'>"
9870
  }
9871
  }
9872
- },
9873
  "type": "basic"
9874
  },
9875
  "params": {
@@ -9900,34 +9900,34 @@
9900
  {}
9901
  ],
9902
  "meta": {
9903
- "inputs": {
9904
- "graph": {
9905
  "name": "graph",
9906
  "position": "left",
9907
  "type": {
9908
  "type": "<class 'networkx.classes.graph.Graph'>"
9909
  }
9910
  }
9911
- },
9912
  "name": "Sample graph",
9913
- "outputs": {
9914
- "output": {
9915
  "name": "output",
9916
  "position": "right",
9917
  "type": {
9918
  "type": "None"
9919
  }
9920
  }
9921
- },
9922
- "params": {
9923
- "nodes": {
9924
  "default": 100.0,
9925
  "name": "nodes",
9926
  "type": {
9927
  "type": "<class 'int'>"
9928
  }
9929
  }
9930
- },
9931
  "type": "basic"
9932
  },
9933
  "params": {
@@ -10409,40 +10409,40 @@
10409
  }
10410
  ],
10411
  "meta": {
10412
- "inputs": {
10413
- "graph": {
10414
  "name": "graph",
10415
  "position": "left",
10416
  "type": {
10417
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
10418
  }
10419
  }
10420
- },
10421
  "name": "Visualize graph",
10422
- "outputs": {},
10423
- "params": {
10424
- "color_edges_by": {
10425
  "default": null,
10426
  "name": "color_edges_by",
10427
  "type": {
10428
  "format": "edge attribute"
10429
  }
10430
  },
10431
- "color_nodes_by": {
10432
  "default": null,
10433
  "name": "color_nodes_by",
10434
  "type": {
10435
  "format": "node attribute"
10436
  }
10437
  },
10438
- "label_by": {
10439
  "default": null,
10440
  "name": "label_by",
10441
  "type": {
10442
  "format": "node attribute"
10443
  }
10444
  }
10445
- },
10446
  "type": "visualization"
10447
  },
10448
  "params": {
@@ -10473,26 +10473,26 @@
10473
  {}
10474
  ],
10475
  "meta": {
10476
- "inputs": {
10477
- "G": {
10478
  "name": "G",
10479
  "position": "left",
10480
  "type": {
10481
  "type": "<class 'networkx.classes.graph.Graph'>"
10482
  }
10483
  }
10484
- },
10485
  "name": "NX \u203a Core Number",
10486
- "outputs": {
10487
- "output": {
10488
  "name": "output",
10489
  "position": "right",
10490
  "type": {
10491
  "type": "<class 'networkx.classes.graph.Graph'>"
10492
  }
10493
  }
10494
- },
10495
- "params": {},
10496
  "type": "basic"
10497
  },
10498
  "params": {},
@@ -10521,26 +10521,26 @@
10521
  {}
10522
  ],
10523
  "meta": {
10524
- "inputs": {
10525
- "graph": {
10526
  "name": "graph",
10527
  "position": "left",
10528
  "type": {
10529
  "type": "<class 'networkx.classes.graph.Graph'>"
10530
  }
10531
  }
10532
- },
10533
  "name": "Discard loop edges",
10534
- "outputs": {
10535
- "output": {
10536
  "name": "output",
10537
  "position": "right",
10538
  "type": {
10539
  "type": "None"
10540
  }
10541
  }
10542
- },
10543
- "params": {},
10544
  "type": "basic"
10545
  },
10546
  "params": {},
@@ -10567,18 +10567,18 @@
10567
  "in_progress": true,
10568
  "input_metadata": [],
10569
  "meta": {
10570
- "inputs": {},
10571
  "name": "NX \u203a Karate Club Graph",
10572
- "outputs": {
10573
- "output": {
10574
  "name": "output",
10575
  "position": "right",
10576
  "type": {
10577
  "type": "<class 'networkx.classes.graph.Graph'>"
10578
  }
10579
  }
10580
- },
10581
- "params": {},
10582
  "type": "basic"
10583
  },
10584
  "params": {},
@@ -11608,40 +11608,40 @@
11608
  }
11609
  ],
11610
  "meta": {
11611
- "inputs": {
11612
- "graph": {
11613
  "name": "graph",
11614
  "position": "left",
11615
  "type": {
11616
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
11617
  }
11618
  }
11619
- },
11620
  "name": "Visualize graph",
11621
- "outputs": {},
11622
- "params": {
11623
- "color_edges_by": {
11624
  "default": null,
11625
  "name": "color_edges_by",
11626
  "type": {
11627
  "format": "edge attribute"
11628
  }
11629
  },
11630
- "color_nodes_by": {
11631
  "default": null,
11632
  "name": "color_nodes_by",
11633
  "type": {
11634
  "format": "node attribute"
11635
  }
11636
  },
11637
- "label_by": {
11638
  "default": null,
11639
  "name": "label_by",
11640
  "type": {
11641
  "format": "node attribute"
11642
  }
11643
  }
11644
- },
11645
  "type": "visualization"
11646
  },
11647
  "params": {
@@ -11668,68 +11668,68 @@
11668
  "error": null,
11669
  "input_metadata": [],
11670
  "meta": {
11671
- "inputs": {},
11672
  "name": "NX \u203a Scale-Free Graph",
11673
- "outputs": {
11674
- "output": {
11675
  "name": "output",
11676
  "position": "right",
11677
  "type": {
11678
  "type": "<class 'networkx.classes.graph.Graph'>"
11679
  }
11680
  }
11681
- },
11682
- "params": {
11683
- "alpha": {
11684
  "default": "0.41",
11685
  "name": "alpha",
11686
  "type": {
11687
  "type": "<class 'float'>"
11688
  }
11689
  },
11690
- "beta": {
11691
  "default": "0.54",
11692
  "name": "beta",
11693
  "type": {
11694
  "type": "<class 'float'>"
11695
  }
11696
  },
11697
- "delta_in": {
11698
  "default": "0.2",
11699
  "name": "delta_in",
11700
  "type": {
11701
  "type": "<class 'float'>"
11702
  }
11703
  },
11704
- "delta_out": {
11705
  "default": "0",
11706
  "name": "delta_out",
11707
  "type": {
11708
  "type": "<class 'float'>"
11709
  }
11710
  },
11711
- "gamma": {
11712
  "default": "0.05",
11713
  "name": "gamma",
11714
  "type": {
11715
  "type": "<class 'float'>"
11716
  }
11717
  },
11718
- "n": {
11719
  "default": null,
11720
  "name": "n",
11721
  "type": {
11722
  "type": "<class 'int'>"
11723
  }
11724
  },
11725
- "seed": {
11726
  "default": null,
11727
  "name": "seed",
11728
  "type": {
11729
  "type": "int | None"
11730
  }
11731
  }
11732
- },
11733
  "type": "basic"
11734
  },
11735
  "params": {
@@ -11764,55 +11764,55 @@
11764
  {}
11765
  ],
11766
  "meta": {
11767
- "inputs": {
11768
- "G": {
11769
  "name": "G",
11770
  "position": "left",
11771
  "type": {
11772
  "type": "<class 'networkx.classes.graph.Graph'>"
11773
  }
11774
  }
11775
- },
11776
  "name": "NX \u203a PageRank",
11777
- "outputs": {
11778
- "output": {
11779
  "name": "output",
11780
  "position": "right",
11781
  "type": {
11782
  "type": "<class 'networkx.classes.graph.Graph'>"
11783
  }
11784
  }
11785
- },
11786
- "params": {
11787
- "alpha": {
11788
  "default": "0.85",
11789
  "name": "alpha",
11790
  "type": {
11791
  "type": "float | None"
11792
  }
11793
  },
11794
- "max_iter": {
11795
  "default": "100",
11796
  "name": "max_iter",
11797
  "type": {
11798
  "type": "int | None"
11799
  }
11800
  },
11801
- "tol": {
11802
  "default": "1e-06",
11803
  "name": "tol",
11804
  "type": {
11805
  "type": "float | None"
11806
  }
11807
  },
11808
- "weight": {
11809
  "default": "weight",
11810
  "name": "weight",
11811
  "type": {
11812
  "type": "str | None"
11813
  }
11814
  }
11815
- },
11816
  "type": "basic"
11817
  },
11818
  "params": {
 
531
  }
532
  ],
533
  "meta": {
534
+ "inputs": [
535
+ {
536
  "name": "graph",
537
  "position": "left",
538
  "type": {
539
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
540
  }
541
  }
542
+ ],
543
  "name": "Visualize graph",
544
+ "outputs": [],
545
+ "params": [
546
+ {
547
  "default": null,
548
  "name": "color_edges_by",
549
  "type": {
550
  "format": "edge attribute"
551
  }
552
  },
553
+ {
554
  "default": null,
555
  "name": "color_nodes_by",
556
  "type": {
557
  "format": "node attribute"
558
  }
559
  },
560
+ {
561
  "default": null,
562
  "name": "label_by",
563
  "type": {
564
  "format": "node attribute"
565
  }
566
  }
567
+ ],
568
  "type": "visualization"
569
  },
570
  "params": {
 
9730
  }
9731
  ],
9732
  "meta": {
9733
+ "inputs": [
9734
+ {
9735
  "name": "graph",
9736
  "position": "left",
9737
  "type": {
9738
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
9739
  }
9740
  }
9741
+ ],
9742
  "name": "Visualize graph",
9743
+ "outputs": [],
9744
+ "params": [
9745
+ {
9746
  "default": null,
9747
  "name": "color_edges_by",
9748
  "type": {
9749
  "format": "edge attribute"
9750
  }
9751
  },
9752
+ {
9753
  "default": null,
9754
  "name": "color_nodes_by",
9755
  "type": {
9756
  "format": "node attribute"
9757
  }
9758
  },
9759
+ {
9760
  "default": null,
9761
  "name": "label_by",
9762
  "type": {
9763
  "format": "node attribute"
9764
  }
9765
  }
9766
+ ],
9767
  "type": "visualization"
9768
  },
9769
  "params": {
 
9792
  "in_progress": true,
9793
  "input_metadata": [],
9794
  "meta": {
9795
+ "inputs": [],
9796
  "name": "NX \u203a Ladder Graph",
9797
+ "outputs": [
9798
+ {
9799
  "name": "output",
9800
  "position": "right",
9801
  "type": {
9802
  "type": "<class 'networkx.classes.graph.Graph'>"
9803
  }
9804
  }
9805
+ ],
9806
+ "params": [
9807
+ {
9808
  "default": null,
9809
  "name": "n",
9810
  "type": {
9811
  "type": "<class 'int'>"
9812
  }
9813
  }
9814
+ ],
9815
  "type": "basic"
9816
  },
9817
  "params": {
 
9842
  {}
9843
  ],
9844
  "meta": {
9845
+ "inputs": [
9846
+ {
9847
  "name": "graph",
9848
  "position": "left",
9849
  "type": {
9850
  "type": "<class 'networkx.classes.graph.Graph'>"
9851
  }
9852
  }
9853
+ ],
9854
  "name": "Sample graph",
9855
+ "outputs": [
9856
+ {
9857
  "name": "output",
9858
  "position": "right",
9859
  "type": {
9860
  "type": "None"
9861
  }
9862
  }
9863
+ ],
9864
+ "params": [
9865
+ {
9866
  "default": 100.0,
9867
  "name": "nodes",
9868
  "type": {
9869
  "type": "<class 'int'>"
9870
  }
9871
  }
9872
+ ],
9873
  "type": "basic"
9874
  },
9875
  "params": {
 
9900
  {}
9901
  ],
9902
  "meta": {
9903
+ "inputs": [
9904
+ {
9905
  "name": "graph",
9906
  "position": "left",
9907
  "type": {
9908
  "type": "<class 'networkx.classes.graph.Graph'>"
9909
  }
9910
  }
9911
+ ],
9912
  "name": "Sample graph",
9913
+ "outputs": [
9914
+ {
9915
  "name": "output",
9916
  "position": "right",
9917
  "type": {
9918
  "type": "None"
9919
  }
9920
  }
9921
+ ],
9922
+ "params": [
9923
+ {
9924
  "default": 100.0,
9925
  "name": "nodes",
9926
  "type": {
9927
  "type": "<class 'int'>"
9928
  }
9929
  }
9930
+ ],
9931
  "type": "basic"
9932
  },
9933
  "params": {
 
10409
  }
10410
  ],
10411
  "meta": {
10412
+ "inputs": [
10413
+ {
10414
  "name": "graph",
10415
  "position": "left",
10416
  "type": {
10417
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
10418
  }
10419
  }
10420
+ ],
10421
  "name": "Visualize graph",
10422
+ "outputs": [],
10423
+ "params": [
10424
+ {
10425
  "default": null,
10426
  "name": "color_edges_by",
10427
  "type": {
10428
  "format": "edge attribute"
10429
  }
10430
  },
10431
+ {
10432
  "default": null,
10433
  "name": "color_nodes_by",
10434
  "type": {
10435
  "format": "node attribute"
10436
  }
10437
  },
10438
+ {
10439
  "default": null,
10440
  "name": "label_by",
10441
  "type": {
10442
  "format": "node attribute"
10443
  }
10444
  }
10445
+ ],
10446
  "type": "visualization"
10447
  },
10448
  "params": {
 
10473
  {}
10474
  ],
10475
  "meta": {
10476
+ "inputs": [
10477
+ {
10478
  "name": "G",
10479
  "position": "left",
10480
  "type": {
10481
  "type": "<class 'networkx.classes.graph.Graph'>"
10482
  }
10483
  }
10484
+ ],
10485
  "name": "NX \u203a Core Number",
10486
+ "outputs": [
10487
+ {
10488
  "name": "output",
10489
  "position": "right",
10490
  "type": {
10491
  "type": "<class 'networkx.classes.graph.Graph'>"
10492
  }
10493
  }
10494
+ ],
10495
+ "params": [],
10496
  "type": "basic"
10497
  },
10498
  "params": {},
 
10521
  {}
10522
  ],
10523
  "meta": {
10524
+ "inputs": [
10525
+ {
10526
  "name": "graph",
10527
  "position": "left",
10528
  "type": {
10529
  "type": "<class 'networkx.classes.graph.Graph'>"
10530
  }
10531
  }
10532
+ ],
10533
  "name": "Discard loop edges",
10534
+ "outputs": [
10535
+ {
10536
  "name": "output",
10537
  "position": "right",
10538
  "type": {
10539
  "type": "None"
10540
  }
10541
  }
10542
+ ],
10543
+ "params": [],
10544
  "type": "basic"
10545
  },
10546
  "params": {},
 
10567
  "in_progress": true,
10568
  "input_metadata": [],
10569
  "meta": {
10570
+ "inputs": [],
10571
  "name": "NX \u203a Karate Club Graph",
10572
+ "outputs": [
10573
+ {
10574
  "name": "output",
10575
  "position": "right",
10576
  "type": {
10577
  "type": "<class 'networkx.classes.graph.Graph'>"
10578
  }
10579
  }
10580
+ ],
10581
+ "params": [],
10582
  "type": "basic"
10583
  },
10584
  "params": {},
 
11608
  }
11609
  ],
11610
  "meta": {
11611
+ "inputs": [
11612
+ {
11613
  "name": "graph",
11614
  "position": "left",
11615
  "type": {
11616
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
11617
  }
11618
  }
11619
+ ],
11620
  "name": "Visualize graph",
11621
+ "outputs": [],
11622
+ "params": [
11623
+ {
11624
  "default": null,
11625
  "name": "color_edges_by",
11626
  "type": {
11627
  "format": "edge attribute"
11628
  }
11629
  },
11630
+ {
11631
  "default": null,
11632
  "name": "color_nodes_by",
11633
  "type": {
11634
  "format": "node attribute"
11635
  }
11636
  },
11637
+ {
11638
  "default": null,
11639
  "name": "label_by",
11640
  "type": {
11641
  "format": "node attribute"
11642
  }
11643
  }
11644
+ ],
11645
  "type": "visualization"
11646
  },
11647
  "params": {
 
11668
  "error": null,
11669
  "input_metadata": [],
11670
  "meta": {
11671
+ "inputs": [],
11672
  "name": "NX \u203a Scale-Free Graph",
11673
+ "outputs": [
11674
+ {
11675
  "name": "output",
11676
  "position": "right",
11677
  "type": {
11678
  "type": "<class 'networkx.classes.graph.Graph'>"
11679
  }
11680
  }
11681
+ ],
11682
+ "params": [
11683
+ {
11684
  "default": "0.41",
11685
  "name": "alpha",
11686
  "type": {
11687
  "type": "<class 'float'>"
11688
  }
11689
  },
11690
+ {
11691
  "default": "0.54",
11692
  "name": "beta",
11693
  "type": {
11694
  "type": "<class 'float'>"
11695
  }
11696
  },
11697
+ {
11698
  "default": "0.2",
11699
  "name": "delta_in",
11700
  "type": {
11701
  "type": "<class 'float'>"
11702
  }
11703
  },
11704
+ {
11705
  "default": "0",
11706
  "name": "delta_out",
11707
  "type": {
11708
  "type": "<class 'float'>"
11709
  }
11710
  },
11711
+ {
11712
  "default": "0.05",
11713
  "name": "gamma",
11714
  "type": {
11715
  "type": "<class 'float'>"
11716
  }
11717
  },
11718
+ {
11719
  "default": null,
11720
  "name": "n",
11721
  "type": {
11722
  "type": "<class 'int'>"
11723
  }
11724
  },
11725
+ {
11726
  "default": null,
11727
  "name": "seed",
11728
  "type": {
11729
  "type": "int | None"
11730
  }
11731
  }
11732
+ ],
11733
  "type": "basic"
11734
  },
11735
  "params": {
 
11764
  {}
11765
  ],
11766
  "meta": {
11767
+ "inputs": [
11768
+ {
11769
  "name": "G",
11770
  "position": "left",
11771
  "type": {
11772
  "type": "<class 'networkx.classes.graph.Graph'>"
11773
  }
11774
  }
11775
+ ],
11776
  "name": "NX \u203a PageRank",
11777
+ "outputs": [
11778
+ {
11779
  "name": "output",
11780
  "position": "right",
11781
  "type": {
11782
  "type": "<class 'networkx.classes.graph.Graph'>"
11783
  }
11784
  }
11785
+ ],
11786
+ "params": [
11787
+ {
11788
  "default": "0.85",
11789
  "name": "alpha",
11790
  "type": {
11791
  "type": "float | None"
11792
  }
11793
  },
11794
+ {
11795
  "default": "100",
11796
  "name": "max_iter",
11797
  "type": {
11798
  "type": "int | None"
11799
  }
11800
  },
11801
+ {
11802
  "default": "1e-06",
11803
  "name": "tol",
11804
  "type": {
11805
  "type": "float | None"
11806
  }
11807
  },
11808
+ {
11809
  "default": "weight",
11810
  "name": "weight",
11811
  "type": {
11812
  "type": "str | None"
11813
  }
11814
  }
11815
+ ],
11816
  "type": "basic"
11817
  },
11818
  "params": {
examples/ODE-GNN experiment.lynxkite.json CHANGED
@@ -52,26 +52,26 @@
52
  "display": null,
53
  "error": null,
54
  "meta": {
55
- "inputs": {},
56
  "name": "Biomedical foundation graph (PLACEHOLDER)",
57
- "outputs": {
58
- "output": {
59
  "name": "output",
60
  "position": "right",
61
  "type": {
62
  "type": "None"
63
  }
64
  }
65
- },
66
- "params": {
67
- "filter_nodes": {
68
  "default": null,
69
  "name": "filter_nodes",
70
  "type": {
71
  "type": "<class 'str'>"
72
  }
73
  }
74
- },
75
  "type": "basic"
76
  },
77
  "params": {
@@ -97,41 +97,41 @@
97
  "display": null,
98
  "error": "Missing input: bundle",
99
  "meta": {
100
- "inputs": {
101
- "bundle": {
102
  "name": "bundle",
103
  "position": "left",
104
  "type": {
105
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
106
  }
107
  }
108
- },
109
  "name": "Train/test split",
110
- "outputs": {
111
- "output": {
112
  "name": "output",
113
  "position": "right",
114
  "type": {
115
  "type": "None"
116
  }
117
  }
118
- },
119
- "params": {
120
- "table_name": {
121
  "default": null,
122
  "name": "table_name",
123
  "type": {
124
  "type": "<class 'str'>"
125
  }
126
  },
127
- "test_ratio": {
128
  "default": 0.1,
129
  "name": "test_ratio",
130
  "type": {
131
  "type": "<class 'float'>"
132
  }
133
  }
134
- },
135
  "type": "basic"
136
  },
137
  "params": {
@@ -156,40 +156,40 @@
156
  "display": null,
157
  "error": "[Errno 2] No such file or directory: ''",
158
  "meta": {
159
- "inputs": {},
160
  "name": "Import CSV",
161
- "outputs": {
162
- "output": {
163
  "name": "output",
164
  "position": "right",
165
  "type": {
166
  "type": "None"
167
  }
168
  }
169
- },
170
- "params": {
171
- "columns": {
172
  "default": "<from file>",
173
  "name": "columns",
174
  "type": {
175
  "type": "<class 'str'>"
176
  }
177
  },
178
- "filename": {
179
  "default": null,
180
  "name": "filename",
181
  "type": {
182
  "type": "<class 'str'>"
183
  }
184
  },
185
- "separator": {
186
  "default": "<auto>",
187
  "name": "separator",
188
  "type": {
189
  "type": "<class 'str'>"
190
  }
191
  }
192
- },
193
  "type": "basic"
194
  },
195
  "params": {
@@ -217,48 +217,48 @@
217
  "display": null,
218
  "error": "Missing input: bundle",
219
  "meta": {
220
- "inputs": {
221
- "bundle": {
222
  "name": "bundle",
223
  "position": "left",
224
  "type": {
225
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
226
  }
227
  }
228
- },
229
  "name": "Model inference",
230
- "outputs": {
231
- "output": {
232
  "name": "output",
233
  "position": "right",
234
  "type": {
235
  "type": "None"
236
  }
237
  }
238
- },
239
- "params": {
240
- "model_mapping": {
241
  "default": null,
242
  "name": "model_mapping",
243
  "type": {
244
  "type": "<class 'str'>"
245
  }
246
  },
247
- "model_name": {
248
  "default": null,
249
  "name": "model_name",
250
  "type": {
251
  "type": "<class 'str'>"
252
  }
253
  },
254
- "save_output_as": {
255
  "default": "prediction",
256
  "name": "save_output_as",
257
  "type": {
258
  "type": "<class 'str'>"
259
  }
260
  }
261
- },
262
  "type": "basic"
263
  },
264
  "params": {
@@ -286,34 +286,34 @@
286
  "display": null,
287
  "error": "Missing input: bundle",
288
  "meta": {
289
- "inputs": {
290
- "bundle": {
291
  "name": "bundle",
292
  "position": "left",
293
  "type": {
294
  "type": "list[lynxkite_graph_analytics.core.Bundle]"
295
  }
296
  }
297
- },
298
  "name": "Organize",
299
- "outputs": {
300
- "output": {
301
  "name": "output",
302
  "position": "right",
303
  "type": {
304
  "type": "None"
305
  }
306
  }
307
- },
308
- "params": {
309
- "relations": {
310
  "default": null,
311
  "name": "relations",
312
  "type": {
313
  "type": "<class 'str'>"
314
  }
315
  }
316
- },
317
  "type": "graph_creation_view"
318
  },
319
  "params": {
@@ -339,33 +339,33 @@
339
  "display": null,
340
  "error": null,
341
  "meta": {
342
- "inputs": {},
343
  "name": "Define model",
344
- "outputs": {
345
- "output": {
346
  "name": "output",
347
  "position": "right",
348
  "type": {
349
  "type": "None"
350
  }
351
  }
352
- },
353
- "params": {
354
- "model_workspace": {
355
  "default": null,
356
  "name": "model_workspace",
357
  "type": {
358
  "type": "<class 'str'>"
359
  }
360
  },
361
- "save_as": {
362
  "default": "model",
363
  "name": "save_as",
364
  "type": {
365
  "type": "<class 'str'>"
366
  }
367
  }
368
- },
369
  "position": {
370
  "x": 286.0,
371
  "y": 208.0
@@ -396,48 +396,48 @@
396
  "display": null,
397
  "error": "Missing input: bundle",
398
  "meta": {
399
- "inputs": {
400
- "bundle": {
401
  "name": "bundle",
402
  "position": "left",
403
  "type": {
404
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
405
  }
406
  }
407
- },
408
  "name": "Train model",
409
- "outputs": {
410
- "output": {
411
  "name": "output",
412
  "position": "right",
413
  "type": {
414
  "type": "None"
415
  }
416
  }
417
- },
418
- "params": {
419
- "epochs": {
420
  "default": 1.0,
421
  "name": "epochs",
422
  "type": {
423
  "type": "<class 'int'>"
424
  }
425
  },
426
- "model_mapping": {
427
  "default": null,
428
  "name": "model_mapping",
429
  "type": {
430
  "type": "<class 'str'>"
431
  }
432
  },
433
- "model_name": {
434
  "default": null,
435
  "name": "model_name",
436
  "type": {
437
  "type": "<class 'str'>"
438
  }
439
  }
440
- },
441
  "position": {
442
  "x": 995.0,
443
  "y": 350.0
 
52
  "display": null,
53
  "error": null,
54
  "meta": {
55
+ "inputs": [],
56
  "name": "Biomedical foundation graph (PLACEHOLDER)",
57
+ "outputs": [
58
+ {
59
  "name": "output",
60
  "position": "right",
61
  "type": {
62
  "type": "None"
63
  }
64
  }
65
+ ],
66
+ "params": [
67
+ {
68
  "default": null,
69
  "name": "filter_nodes",
70
  "type": {
71
  "type": "<class 'str'>"
72
  }
73
  }
74
+ ],
75
  "type": "basic"
76
  },
77
  "params": {
 
97
  "display": null,
98
  "error": "Missing input: bundle",
99
  "meta": {
100
+ "inputs": [
101
+ {
102
  "name": "bundle",
103
  "position": "left",
104
  "type": {
105
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
106
  }
107
  }
108
+ ],
109
  "name": "Train/test split",
110
+ "outputs": [
111
+ {
112
  "name": "output",
113
  "position": "right",
114
  "type": {
115
  "type": "None"
116
  }
117
  }
118
+ ],
119
+ "params": [
120
+ {
121
  "default": null,
122
  "name": "table_name",
123
  "type": {
124
  "type": "<class 'str'>"
125
  }
126
  },
127
+ {
128
  "default": 0.1,
129
  "name": "test_ratio",
130
  "type": {
131
  "type": "<class 'float'>"
132
  }
133
  }
134
+ ],
135
  "type": "basic"
136
  },
137
  "params": {
 
156
  "display": null,
157
  "error": "[Errno 2] No such file or directory: ''",
158
  "meta": {
159
+ "inputs": [],
160
  "name": "Import CSV",
161
+ "outputs": [
162
+ {
163
  "name": "output",
164
  "position": "right",
165
  "type": {
166
  "type": "None"
167
  }
168
  }
169
+ ],
170
+ "params": [
171
+ {
172
  "default": "<from file>",
173
  "name": "columns",
174
  "type": {
175
  "type": "<class 'str'>"
176
  }
177
  },
178
+ {
179
  "default": null,
180
  "name": "filename",
181
  "type": {
182
  "type": "<class 'str'>"
183
  }
184
  },
185
+ {
186
  "default": "<auto>",
187
  "name": "separator",
188
  "type": {
189
  "type": "<class 'str'>"
190
  }
191
  }
192
+ ],
193
  "type": "basic"
194
  },
195
  "params": {
 
217
  "display": null,
218
  "error": "Missing input: bundle",
219
  "meta": {
220
+ "inputs": [
221
+ {
222
  "name": "bundle",
223
  "position": "left",
224
  "type": {
225
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
226
  }
227
  }
228
+ ],
229
  "name": "Model inference",
230
+ "outputs": [
231
+ {
232
  "name": "output",
233
  "position": "right",
234
  "type": {
235
  "type": "None"
236
  }
237
  }
238
+ ],
239
+ "params": [
240
+ {
241
  "default": null,
242
  "name": "model_mapping",
243
  "type": {
244
  "type": "<class 'str'>"
245
  }
246
  },
247
+ {
248
  "default": null,
249
  "name": "model_name",
250
  "type": {
251
  "type": "<class 'str'>"
252
  }
253
  },
254
+ {
255
  "default": "prediction",
256
  "name": "save_output_as",
257
  "type": {
258
  "type": "<class 'str'>"
259
  }
260
  }
261
+ ],
262
  "type": "basic"
263
  },
264
  "params": {
 
286
  "display": null,
287
  "error": "Missing input: bundle",
288
  "meta": {
289
+ "inputs": [
290
+ {
291
  "name": "bundle",
292
  "position": "left",
293
  "type": {
294
  "type": "list[lynxkite_graph_analytics.core.Bundle]"
295
  }
296
  }
297
+ ],
298
  "name": "Organize",
299
+ "outputs": [
300
+ {
301
  "name": "output",
302
  "position": "right",
303
  "type": {
304
  "type": "None"
305
  }
306
  }
307
+ ],
308
+ "params": [
309
+ {
310
  "default": null,
311
  "name": "relations",
312
  "type": {
313
  "type": "<class 'str'>"
314
  }
315
  }
316
+ ],
317
  "type": "graph_creation_view"
318
  },
319
  "params": {
 
339
  "display": null,
340
  "error": null,
341
  "meta": {
342
+ "inputs": [],
343
  "name": "Define model",
344
+ "outputs": [
345
+ {
346
  "name": "output",
347
  "position": "right",
348
  "type": {
349
  "type": "None"
350
  }
351
  }
352
+ ],
353
+ "params": [
354
+ {
355
  "default": null,
356
  "name": "model_workspace",
357
  "type": {
358
  "type": "<class 'str'>"
359
  }
360
  },
361
+ {
362
  "default": "model",
363
  "name": "save_as",
364
  "type": {
365
  "type": "<class 'str'>"
366
  }
367
  }
368
+ ],
369
  "position": {
370
  "x": 286.0,
371
  "y": 208.0
 
396
  "display": null,
397
  "error": "Missing input: bundle",
398
  "meta": {
399
+ "inputs": [
400
+ {
401
  "name": "bundle",
402
  "position": "left",
403
  "type": {
404
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
405
  }
406
  }
407
+ ],
408
  "name": "Train model",
409
+ "outputs": [
410
+ {
411
  "name": "output",
412
  "position": "right",
413
  "type": {
414
  "type": "None"
415
  }
416
  }
417
+ ],
418
+ "params": [
419
+ {
420
  "default": 1.0,
421
  "name": "epochs",
422
  "type": {
423
  "type": "<class 'int'>"
424
  }
425
  },
426
+ {
427
  "default": null,
428
  "name": "model_mapping",
429
  "type": {
430
  "type": "<class 'str'>"
431
  }
432
  },
433
+ {
434
  "default": null,
435
  "name": "model_name",
436
  "type": {
437
  "type": "<class 'str'>"
438
  }
439
  }
440
+ ],
441
  "position": {
442
  "x": 995.0,
443
  "y": 350.0
examples/ODE-GNN.lynxkite.json CHANGED
@@ -113,34 +113,34 @@
113
  "display": null,
114
  "error": null,
115
  "meta": {
116
- "inputs": {
117
- "edges": {
118
  "name": "edges",
119
  "position": "bottom",
120
  "type": {
121
  "type": "tensor"
122
  }
123
  },
124
- "x": {
125
  "name": "x",
126
  "position": "bottom",
127
  "type": {
128
  "type": "tensor"
129
  }
130
  }
131
- },
132
  "name": "Graph conv",
133
- "outputs": {
134
- "x": {
135
  "name": "x",
136
  "position": "top",
137
  "type": {
138
  "type": "tensor"
139
  }
140
  }
141
- },
142
- "params": {
143
- "type": {
144
  "default": "1",
145
  "name": "type",
146
  "type": {
@@ -152,7 +152,7 @@
152
  ]
153
  }
154
  }
155
- },
156
  "type": "basic"
157
  },
158
  "params": {
@@ -178,34 +178,34 @@
178
  "display": null,
179
  "error": null,
180
  "meta": {
181
- "inputs": {
182
- "input": {
183
  "name": "input",
184
  "position": "top",
185
  "type": {
186
  "type": "tensor"
187
  }
188
  }
189
- },
190
  "name": "Repeat",
191
- "outputs": {
192
- "output": {
193
  "name": "output",
194
  "position": "bottom",
195
  "type": {
196
  "type": "tensor"
197
  }
198
  }
199
- },
200
- "params": {
201
- "times": {
202
  "default": 1.0,
203
  "name": "times",
204
  "type": {
205
  "type": "<class 'int'>"
206
  }
207
  }
208
- },
209
  "type": "basic"
210
  },
211
  "params": {
@@ -231,33 +231,33 @@
231
  "display": null,
232
  "error": null,
233
  "meta": {
234
- "inputs": {
235
- "a": {
236
  "name": "a",
237
  "position": "bottom",
238
  "type": {
239
  "type": "tensor"
240
  }
241
  },
242
- "b": {
243
  "name": "b",
244
  "position": "bottom",
245
  "type": {
246
  "type": "tensor"
247
  }
248
  }
249
- },
250
  "name": "Concatenate",
251
- "outputs": {
252
- "x": {
253
  "name": "x",
254
  "position": "top",
255
  "type": {
256
  "type": "tensor"
257
  }
258
  }
259
- },
260
- "params": {},
261
  "type": "basic"
262
  },
263
  "params": {},
@@ -281,18 +281,18 @@
281
  "display": null,
282
  "error": null,
283
  "meta": {
284
- "inputs": {},
285
  "name": "Input: graph edges",
286
- "outputs": {
287
- "edges": {
288
  "name": "edges",
289
  "position": "top",
290
  "type": {
291
  "type": "tensor"
292
  }
293
  }
294
- },
295
- "params": {},
296
  "type": "basic"
297
  },
298
  "params": {},
@@ -316,18 +316,18 @@
316
  "display": null,
317
  "error": null,
318
  "meta": {
319
- "inputs": {},
320
  "name": "Input: embedding",
321
- "outputs": {
322
- "x": {
323
  "name": "x",
324
  "position": "top",
325
  "type": {
326
  "type": "tensor"
327
  }
328
  }
329
- },
330
- "params": {},
331
  "type": "basic"
332
  },
333
  "params": {},
@@ -349,27 +349,27 @@
349
  "display": null,
350
  "error": null,
351
  "meta": {
352
- "inputs": {
353
- "x": {
354
  "name": "x",
355
  "position": "bottom",
356
  "type": {
357
  "type": "tensor"
358
  }
359
  }
360
- },
361
  "name": "Activation",
362
- "outputs": {
363
- "x": {
364
  "name": "x",
365
  "position": "top",
366
  "type": {
367
  "type": "tensor"
368
  }
369
  }
370
- },
371
- "params": {
372
- "type": {
373
  "default": "1",
374
  "name": "type",
375
  "type": {
@@ -381,7 +381,7 @@
381
  ]
382
  }
383
  }
384
- },
385
  "type": "basic"
386
  },
387
  "params": {
@@ -407,40 +407,40 @@
407
  "display": null,
408
  "error": null,
409
  "meta": {
410
- "inputs": {
411
- "h": {
412
  "name": "h",
413
  "position": "bottom",
414
  "type": {
415
  "type": "tensor"
416
  }
417
  },
418
- "x": {
419
  "name": "x",
420
  "position": "bottom",
421
  "type": {
422
  "type": "tensor"
423
  }
424
  }
425
- },
426
  "name": "LSTM",
427
- "outputs": {
428
- "h": {
429
  "name": "h",
430
  "position": "top",
431
  "type": {
432
  "type": "tensor"
433
  }
434
  },
435
- "x": {
436
  "name": "x",
437
  "position": "top",
438
  "type": {
439
  "type": "tensor"
440
  }
441
  }
442
- },
443
- "params": {},
444
  "type": "basic"
445
  },
446
  "params": {},
@@ -464,18 +464,18 @@
464
  "display": null,
465
  "error": null,
466
  "meta": {
467
- "inputs": {},
468
  "name": "Input: sequential",
469
- "outputs": {
470
- "y": {
471
  "name": "y",
472
  "position": "top",
473
  "type": {
474
  "type": "tensor"
475
  }
476
  }
477
- },
478
- "params": {},
479
  "type": "basic"
480
  },
481
  "params": {},
@@ -499,18 +499,18 @@
499
  "display": null,
500
  "error": null,
501
  "meta": {
502
- "inputs": {},
503
  "name": "Input: zeros",
504
- "outputs": {
505
- "x": {
506
  "name": "x",
507
  "position": "top",
508
  "type": {
509
  "type": "tensor"
510
  }
511
  }
512
- },
513
- "params": {},
514
  "type": "basic"
515
  },
516
  "params": {},
@@ -534,26 +534,26 @@
534
  "display": null,
535
  "error": null,
536
  "meta": {
537
- "inputs": {
538
- "input": {
539
  "name": "input",
540
  "position": "top",
541
  "type": {
542
  "type": "tensor"
543
  }
544
  }
545
- },
546
  "name": "Recurrent chain",
547
- "outputs": {
548
- "output": {
549
  "name": "output",
550
  "position": "bottom",
551
  "type": {
552
  "type": "tensor"
553
  }
554
  }
555
- },
556
- "params": {},
557
  "type": "basic"
558
  },
559
  "params": {},
@@ -577,33 +577,33 @@
577
  "display": null,
578
  "error": null,
579
  "meta": {
580
- "inputs": {
581
- "x": {
582
  "name": "x",
583
  "position": "bottom",
584
  "type": {
585
  "type": "tensor"
586
  }
587
  },
588
- "y": {
589
  "name": "y",
590
  "position": "bottom",
591
  "type": {
592
  "type": "tensor"
593
  }
594
  }
595
- },
596
  "name": "MSE loss",
597
- "outputs": {
598
- "loss": {
599
  "name": "loss",
600
  "position": "top",
601
  "type": {
602
  "type": "tensor"
603
  }
604
  }
605
- },
606
- "params": {},
607
  "type": "basic"
608
  },
609
  "params": {},
@@ -627,18 +627,18 @@
627
  "display": null,
628
  "error": null,
629
  "meta": {
630
- "inputs": {},
631
  "name": "Input: label",
632
- "outputs": {
633
- "y": {
634
  "name": "y",
635
  "position": "top",
636
  "type": {
637
  "type": "tensor"
638
  }
639
  }
640
- },
641
- "params": {},
642
  "type": "basic"
643
  },
644
  "params": {},
@@ -660,26 +660,26 @@
660
  "display": null,
661
  "error": null,
662
  "meta": {
663
- "inputs": {
664
- "loss": {
665
  "name": "loss",
666
  "position": "bottom",
667
  "type": {
668
  "type": "tensor"
669
  }
670
  }
671
- },
672
  "name": "Optimizer",
673
- "outputs": {},
674
- "params": {
675
- "lr": {
676
  "default": 0.001,
677
  "name": "lr",
678
  "type": {
679
  "type": "<class 'float'>"
680
  }
681
  },
682
- "type": {
683
  "default": "1",
684
  "name": "type",
685
  "type": {
@@ -694,7 +694,7 @@
694
  ]
695
  }
696
  }
697
- },
698
  "type": "basic"
699
  },
700
  "params": {
@@ -719,34 +719,34 @@
719
  "display": null,
720
  "error": null,
721
  "meta": {
722
- "inputs": {
723
- "x": {
724
  "name": "x",
725
  "position": "bottom",
726
  "type": {
727
  "type": "tensor"
728
  }
729
  }
730
- },
731
  "name": "Neural ODE",
732
- "outputs": {
733
- "x": {
734
  "name": "x",
735
  "position": "top",
736
  "type": {
737
  "type": "tensor"
738
  }
739
  }
740
- },
741
- "params": {
742
- "absolute_tolerance": {
743
  "default": null,
744
  "name": "absolute_tolerance",
745
  "type": {
746
  "type": "None"
747
  }
748
  },
749
- "method": {
750
  "default": "1",
751
  "name": "method",
752
  "type": {
@@ -764,14 +764,14 @@
764
  ]
765
  }
766
  },
767
- "relative_tolerance": {
768
  "default": null,
769
  "name": "relative_tolerance",
770
  "type": {
771
  "type": "None"
772
  }
773
  }
774
- },
775
  "type": "basic"
776
  },
777
  "params": {
 
113
  "display": null,
114
  "error": null,
115
  "meta": {
116
+ "inputs": [
117
+ {
118
  "name": "edges",
119
  "position": "bottom",
120
  "type": {
121
  "type": "tensor"
122
  }
123
  },
124
+ {
125
  "name": "x",
126
  "position": "bottom",
127
  "type": {
128
  "type": "tensor"
129
  }
130
  }
131
+ ],
132
  "name": "Graph conv",
133
+ "outputs": [
134
+ {
135
  "name": "x",
136
  "position": "top",
137
  "type": {
138
  "type": "tensor"
139
  }
140
  }
141
+ ],
142
+ "params": [
143
+ {
144
  "default": "1",
145
  "name": "type",
146
  "type": {
 
152
  ]
153
  }
154
  }
155
+ ],
156
  "type": "basic"
157
  },
158
  "params": {
 
178
  "display": null,
179
  "error": null,
180
  "meta": {
181
+ "inputs": [
182
+ {
183
  "name": "input",
184
  "position": "top",
185
  "type": {
186
  "type": "tensor"
187
  }
188
  }
189
+ ],
190
  "name": "Repeat",
191
+ "outputs": [
192
+ {
193
  "name": "output",
194
  "position": "bottom",
195
  "type": {
196
  "type": "tensor"
197
  }
198
  }
199
+ ],
200
+ "params": [
201
+ {
202
  "default": 1.0,
203
  "name": "times",
204
  "type": {
205
  "type": "<class 'int'>"
206
  }
207
  }
208
+ ],
209
  "type": "basic"
210
  },
211
  "params": {
 
231
  "display": null,
232
  "error": null,
233
  "meta": {
234
+ "inputs": [
235
+ {
236
  "name": "a",
237
  "position": "bottom",
238
  "type": {
239
  "type": "tensor"
240
  }
241
  },
242
+ {
243
  "name": "b",
244
  "position": "bottom",
245
  "type": {
246
  "type": "tensor"
247
  }
248
  }
249
+ ],
250
  "name": "Concatenate",
251
+ "outputs": [
252
+ {
253
  "name": "x",
254
  "position": "top",
255
  "type": {
256
  "type": "tensor"
257
  }
258
  }
259
+ ],
260
+ "params": [],
261
  "type": "basic"
262
  },
263
  "params": {},
 
281
  "display": null,
282
  "error": null,
283
  "meta": {
284
+ "inputs": [],
285
  "name": "Input: graph edges",
286
+ "outputs": [
287
+ {
288
  "name": "edges",
289
  "position": "top",
290
  "type": {
291
  "type": "tensor"
292
  }
293
  }
294
+ ],
295
+ "params": [],
296
  "type": "basic"
297
  },
298
  "params": {},
 
316
  "display": null,
317
  "error": null,
318
  "meta": {
319
+ "inputs": [],
320
  "name": "Input: embedding",
321
+ "outputs": [
322
+ {
323
  "name": "x",
324
  "position": "top",
325
  "type": {
326
  "type": "tensor"
327
  }
328
  }
329
+ ],
330
+ "params": [],
331
  "type": "basic"
332
  },
333
  "params": {},
 
349
  "display": null,
350
  "error": null,
351
  "meta": {
352
+ "inputs": [
353
+ {
354
  "name": "x",
355
  "position": "bottom",
356
  "type": {
357
  "type": "tensor"
358
  }
359
  }
360
+ ],
361
  "name": "Activation",
362
+ "outputs": [
363
+ {
364
  "name": "x",
365
  "position": "top",
366
  "type": {
367
  "type": "tensor"
368
  }
369
  }
370
+ ],
371
+ "params": [
372
+ {
373
  "default": "1",
374
  "name": "type",
375
  "type": {
 
381
  ]
382
  }
383
  }
384
+ ],
385
  "type": "basic"
386
  },
387
  "params": {
 
407
  "display": null,
408
  "error": null,
409
  "meta": {
410
+ "inputs": [
411
+ {
412
  "name": "h",
413
  "position": "bottom",
414
  "type": {
415
  "type": "tensor"
416
  }
417
  },
418
+ {
419
  "name": "x",
420
  "position": "bottom",
421
  "type": {
422
  "type": "tensor"
423
  }
424
  }
425
+ ],
426
  "name": "LSTM",
427
+ "outputs": [
428
+ {
429
  "name": "h",
430
  "position": "top",
431
  "type": {
432
  "type": "tensor"
433
  }
434
  },
435
+ {
436
  "name": "x",
437
  "position": "top",
438
  "type": {
439
  "type": "tensor"
440
  }
441
  }
442
+ ],
443
+ "params": [],
444
  "type": "basic"
445
  },
446
  "params": {},
 
464
  "display": null,
465
  "error": null,
466
  "meta": {
467
+ "inputs": [],
468
  "name": "Input: sequential",
469
+ "outputs": [
470
+ {
471
  "name": "y",
472
  "position": "top",
473
  "type": {
474
  "type": "tensor"
475
  }
476
  }
477
+ ],
478
+ "params": [],
479
  "type": "basic"
480
  },
481
  "params": {},
 
499
  "display": null,
500
  "error": null,
501
  "meta": {
502
+ "inputs": [],
503
  "name": "Input: zeros",
504
+ "outputs": [
505
+ {
506
  "name": "x",
507
  "position": "top",
508
  "type": {
509
  "type": "tensor"
510
  }
511
  }
512
+ ],
513
+ "params": [],
514
  "type": "basic"
515
  },
516
  "params": {},
 
534
  "display": null,
535
  "error": null,
536
  "meta": {
537
+ "inputs": [
538
+ {
539
  "name": "input",
540
  "position": "top",
541
  "type": {
542
  "type": "tensor"
543
  }
544
  }
545
+ ],
546
  "name": "Recurrent chain",
547
+ "outputs": [
548
+ {
549
  "name": "output",
550
  "position": "bottom",
551
  "type": {
552
  "type": "tensor"
553
  }
554
  }
555
+ ],
556
+ "params": [],
557
  "type": "basic"
558
  },
559
  "params": {},
 
577
  "display": null,
578
  "error": null,
579
  "meta": {
580
+ "inputs": [
581
+ {
582
  "name": "x",
583
  "position": "bottom",
584
  "type": {
585
  "type": "tensor"
586
  }
587
  },
588
+ {
589
  "name": "y",
590
  "position": "bottom",
591
  "type": {
592
  "type": "tensor"
593
  }
594
  }
595
+ ],
596
  "name": "MSE loss",
597
+ "outputs": [
598
+ {
599
  "name": "loss",
600
  "position": "top",
601
  "type": {
602
  "type": "tensor"
603
  }
604
  }
605
+ ],
606
+ "params": [],
607
  "type": "basic"
608
  },
609
  "params": {},
 
627
  "display": null,
628
  "error": null,
629
  "meta": {
630
+ "inputs": [],
631
  "name": "Input: label",
632
+ "outputs": [
633
+ {
634
  "name": "y",
635
  "position": "top",
636
  "type": {
637
  "type": "tensor"
638
  }
639
  }
640
+ ],
641
+ "params": [],
642
  "type": "basic"
643
  },
644
  "params": {},
 
660
  "display": null,
661
  "error": null,
662
  "meta": {
663
+ "inputs": [
664
+ {
665
  "name": "loss",
666
  "position": "bottom",
667
  "type": {
668
  "type": "tensor"
669
  }
670
  }
671
+ ],
672
  "name": "Optimizer",
673
+ "outputs": [],
674
+ "params": [
675
+ {
676
  "default": 0.001,
677
  "name": "lr",
678
  "type": {
679
  "type": "<class 'float'>"
680
  }
681
  },
682
+ {
683
  "default": "1",
684
  "name": "type",
685
  "type": {
 
694
  ]
695
  }
696
  }
697
+ ],
698
  "type": "basic"
699
  },
700
  "params": {
 
719
  "display": null,
720
  "error": null,
721
  "meta": {
722
+ "inputs": [
723
+ {
724
  "name": "x",
725
  "position": "bottom",
726
  "type": {
727
  "type": "tensor"
728
  }
729
  }
730
+ ],
731
  "name": "Neural ODE",
732
+ "outputs": [
733
+ {
734
  "name": "x",
735
  "position": "top",
736
  "type": {
737
  "type": "tensor"
738
  }
739
  }
740
+ ],
741
+ "params": [
742
+ {
743
  "default": null,
744
  "name": "absolute_tolerance",
745
  "type": {
746
  "type": "None"
747
  }
748
  },
749
+ {
750
  "default": "1",
751
  "name": "method",
752
  "type": {
 
764
  ]
765
  }
766
  },
767
+ {
768
  "default": null,
769
  "name": "relative_tolerance",
770
  "type": {
771
  "type": "None"
772
  }
773
  }
774
+ ],
775
  "type": "basic"
776
  },
777
  "params": {
examples/RAG chatbot app.lynxkite.json CHANGED
@@ -1,174 +1,260 @@
1
  {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  "env": "LynxScribe",
3
  "nodes": [
4
  {
5
- "id": "Chat Input 1",
6
- "type": "basic",
7
  "data": {
8
- "title": "Chat Input",
9
- "params": {
10
- "load_mode": "augmented",
11
- "model": "Yi-34B (triton)",
12
- "embedder": "GritLM-7b (triton)"
13
- },
14
  "display": null,
15
  "error": null,
16
  "inputs": {},
17
- "outputs": {
18
- "output": "<class 'server.ops.Bundle'>"
19
- },
20
  "meta": {
 
21
  "name": "Chat Input",
22
- "params": {
23
- "load_mode": {
24
- "name": "load_mode",
 
 
 
 
 
 
 
 
25
  "default": 1,
 
26
  "type": {
27
  "enum": [
28
- "augmented"
29
  ]
30
  }
31
  },
32
- "model": {
33
- "name": "model",
34
  "default": 1,
 
35
  "type": {
36
  "enum": [
37
- "Yi-34B (triton)"
38
  ]
39
  }
40
  },
41
- "embedder": {
42
- "name": "embedder",
43
  "default": 1,
 
44
  "type": {
45
  "enum": [
46
- "GritLM-7b (triton)"
47
  ]
48
  }
49
  }
50
- },
51
- "inputs": {},
52
- "outputs": {
53
- "output": {
54
- "name": "output",
55
- "type": {
56
- "type": "None"
57
- },
58
- "position": "right"
59
- }
60
- },
61
- "type": "basic",
62
- "sub_nodes": null
63
- }
64
  },
 
 
 
65
  "position": {
66
  "x": 195.66666666666669,
67
  "y": 163.66666666666666
68
  },
69
- "parentId": null,
70
- "parentNode": null
71
  },
72
  {
73
- "id": "Chroma Graph RAG Loader 1",
74
- "type": "basic",
75
  "data": {
76
- "title": "Chroma Graph RAG Loader",
77
- "params": {
78
- "location": "GCP",
79
- "bucket": "",
80
- "folder": "",
81
- "embedder": "GritLM-7b (triton)"
82
- },
83
  "display": null,
84
  "error": null,
85
  "inputs": {},
86
- "outputs": {
87
- "output": "<class 'server.ops.Bundle'>"
88
- },
89
  "meta": {
 
90
  "name": "Chroma Graph RAG Loader",
91
- "params": {
92
- "location": {
93
- "name": "location",
94
- "default": 1,
95
  "type": {
96
- "enum": [
97
- "GCP"
98
- ]
99
  }
100
- },
101
- "bucket": {
102
- "name": "bucket",
 
103
  "default": "",
 
104
  "type": {
105
  "format": "collapsed"
106
  }
107
  },
108
- "folder": {
109
- "name": "folder",
 
 
 
 
 
 
 
 
110
  "default": "",
 
111
  "type": {
112
  "format": "collapsed"
113
  }
114
  },
115
- "embedder": {
116
- "name": "embedder",
117
  "default": 1,
 
118
  "type": {
119
  "enum": [
120
- "GritLM-7b (triton)"
121
  ]
122
  }
123
  }
124
- },
125
- "inputs": {},
126
- "outputs": {
127
- "output": {
128
- "name": "output",
129
- "type": {
130
- "type": "None"
131
- },
132
- "position": "right"
133
- }
134
- },
135
- "type": "basic",
136
- "sub_nodes": null
137
- }
138
  },
 
 
 
139
  "position": {
140
  "x": 195.60875221397816,
141
  "y": 395.94296449008243
142
  },
143
- "parentId": null,
144
- "parentNode": null
145
  },
146
  {
147
- "id": "k-NN Intent Classifier 1",
148
- "type": "basic",
149
  "data": {
150
- "title": "k-NN Intent Classifier",
151
- "params": {
152
- "distance": "cosine",
153
- "max_dist": 0.3,
154
- "k": "10",
155
- "voting": "weighted"
156
- },
157
  "display": null,
158
  "error": null,
159
  "inputs": {
160
  "qa_embs": "None",
161
  "rag_graph": "None"
162
  },
163
- "outputs": {
164
- "output": "<class 'server.ops.Bundle'>"
165
- },
166
  "meta": {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
167
  "name": "k-NN Intent Classifier",
168
- "params": {
169
- "distance": {
170
- "name": "distance",
 
 
 
 
 
 
 
 
171
  "default": 1,
 
172
  "type": {
173
  "enum": [
174
  "cosine",
@@ -176,23 +262,23 @@
176
  ]
177
  }
178
  },
179
- "max_dist": {
180
- "name": "max_dist",
181
- "default": 0.3,
182
  "type": {
183
- "type": "<class 'float'>"
184
  }
185
  },
186
- "k": {
187
- "name": "k",
188
- "default": 3,
189
  "type": {
190
- "type": "<class 'int'>"
191
  }
192
  },
193
- "voting": {
194
- "name": "voting",
195
  "default": 1,
 
196
  "type": {
197
  "enum": [
198
  "most common",
@@ -200,104 +286,102 @@
200
  ]
201
  }
202
  }
203
- },
204
- "inputs": {
205
- "qa_embs": {
206
- "name": "qa_embs",
207
- "type": {
208
- "type": "None"
209
- },
210
- "position": "left"
211
- },
212
- "rag_graph": {
213
- "name": "rag_graph",
214
- "type": {
215
- "type": "None"
216
- },
217
- "position": "left"
218
- }
219
- },
220
- "outputs": {
221
- "output": {
222
- "name": "output",
223
- "type": {
224
- "type": "None"
225
- },
226
- "position": "right"
227
- }
228
- },
229
- "type": "basic",
230
- "sub_nodes": null
231
  },
232
- "collapsed": false
233
  },
 
 
 
234
  "position": {
235
  "x": 563.2980104689954,
236
  "y": 133.15405056058248
237
  },
238
- "parentId": null,
239
- "parentNode": null
240
  },
241
  {
242
- "id": "Graph RAG Answer 1",
243
- "type": "basic",
244
  "data": {
245
- "title": "Graph RAG Answer",
246
- "params": {
247
- "answer_llm": "Yi-34B (triton)",
248
- "faq_dist": 0.12,
249
- "max_dist": 0.25,
250
- "ctx_tokens": 2800,
251
- "distance": "cosine",
252
- "graph_rag_params": ""
253
- },
254
  "display": null,
255
  "error": null,
256
  "inputs": {
257
- "qa_embs": "None",
258
  "intent": "None",
259
- "rag_graph": "None",
260
- "prompt_dict": "None"
261
- },
262
- "outputs": {
263
- "output": "<class 'server.ops.Bundle'>"
264
  },
265
  "meta": {
266
- "name": "Graph RAG Answer",
267
- "params": {
268
- "answer_llm": {
269
- "name": "answer_llm",
270
- "default": 1,
271
  "type": {
272
- "enum": [
273
- "Yi-34B (triton)"
274
- ]
275
  }
276
  },
277
- "faq_dist": {
278
- "name": "faq_dist",
279
- "default": 0.12,
280
  "type": {
281
- "type": "<class 'float'>"
282
  }
283
  },
284
- "max_dist": {
285
- "name": "max_dist",
286
- "default": 0.25,
287
  "type": {
288
- "type": "<class 'float'>"
289
  }
290
  },
291
- "ctx_tokens": {
292
- "name": "ctx_tokens",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
293
  "default": 2800,
 
294
  "type": {
295
  "type": "<class 'int'>"
296
  }
297
  },
298
- "distance": {
299
- "name": "distance",
300
  "default": 1,
 
301
  "type": {
302
  "enum": [
303
  "cosine",
@@ -305,145 +389,148 @@
305
  ]
306
  }
307
  },
308
- "graph_rag_params": {
309
- "name": "graph_rag_params",
310
- "default": "",
311
  "type": {
312
- "format": "collapsed"
313
  }
314
- }
315
- },
316
- "inputs": {
317
- "qa_embs": {
318
- "name": "qa_embs",
319
- "type": {
320
- "type": "None"
321
- },
322
- "position": "left"
323
- },
324
- "intent": {
325
- "name": "intent",
326
- "type": {
327
- "type": "None"
328
- },
329
- "position": "left"
330
  },
331
- "rag_graph": {
332
- "name": "rag_graph",
 
333
  "type": {
334
- "type": "None"
335
- },
336
- "position": "left"
337
  },
338
- "prompt_dict": {
339
- "name": "prompt_dict",
340
- "type": {
341
- "type": "None"
342
- },
343
- "position": "left"
344
- }
345
- },
346
- "outputs": {
347
- "output": {
348
- "name": "output",
349
  "type": {
350
- "type": "None"
351
- },
352
- "position": "right"
353
  }
354
- },
355
- "type": "basic",
356
- "sub_nodes": null
 
 
 
357
  },
358
- "collapsed": false
 
 
 
 
 
 
 
 
359
  },
 
 
 
360
  "position": {
361
  "x": 954.7861764338505,
362
  "y": 158.59348288997435
363
  },
364
- "parentId": null,
365
- "parentNode": null
366
  },
367
  {
368
- "id": "Scenario Builder 1",
369
- "type": "basic",
370
  "data": {
371
- "title": "Scenario Builder",
372
- "params": {
373
- "scenario": ""
374
- },
375
  "display": null,
376
  "error": null,
377
  "inputs": {
378
  "input": "<class 'server.ops.Bundle'>"
379
  },
380
- "outputs": {
381
- "output": "<class 'server.ops.Bundle'>"
382
- },
383
  "meta": {
384
- "name": "Scenario Builder",
385
- "params": {
386
- "scenario": {
387
- "name": "scenario",
388
- "default": "",
389
- "type": {
390
- "format": "collapsed"
391
- }
392
- }
393
- },
394
- "inputs": {
395
- "input": {
396
  "name": "input",
 
397
  "type": {
398
  "type": "None"
399
- },
400
- "position": "left"
401
  }
402
- },
403
- "outputs": {
404
- "output": {
 
405
  "name": "output",
 
406
  "type": {
407
  "type": "None"
408
- },
409
- "position": "right"
 
 
 
 
 
 
 
 
410
  }
411
- },
412
- "type": "basic",
413
- "sub_nodes": null
414
- }
 
 
 
 
 
 
 
415
  },
 
 
 
416
  "position": {
417
  "x": 564.4460318313352,
418
  "y": 542.19038386186
419
  },
420
- "parentId": null,
421
- "parentNode": null
422
  },
423
  {
424
- "id": "Answer Post Processing 1",
425
- "type": "basic",
426
  "data": {
427
- "title": "Answer Post Processing",
428
- "params": {
429
- "distance": "cosine",
430
- "min_conf": 0.78
431
- },
432
  "display": null,
433
  "error": null,
434
  "inputs": {
435
  "qa_embs": "None",
436
  "rag_graph": "None"
437
  },
438
- "outputs": {
439
- "output": "<class 'server.ops.Bundle'>"
440
- },
441
  "meta": {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
442
  "name": "Answer Post Processing",
443
- "params": {
444
- "distance": {
445
- "name": "distance",
 
 
 
 
 
 
 
 
446
  "default": 1,
 
447
  "type": {
448
  "enum": [
449
  "cosine",
@@ -451,158 +538,71 @@
451
  ]
452
  }
453
  },
454
- "min_conf": {
455
- "name": "min_conf",
456
  "default": 0.78,
 
457
  "type": {
458
  "type": "<class 'float'>"
459
  }
460
  }
461
- },
462
- "inputs": {
463
- "qa_embs": {
464
- "name": "qa_embs",
465
- "type": {
466
- "type": "None"
467
- },
468
- "position": "left"
469
- },
470
- "rag_graph": {
471
- "name": "rag_graph",
472
- "type": {
473
- "type": "None"
474
- },
475
- "position": "left"
476
- }
477
- },
478
- "outputs": {
479
- "output": {
480
- "name": "output",
481
- "type": {
482
- "type": "None"
483
- },
484
- "position": "right"
485
- }
486
- },
487
- "type": "basic",
488
- "sub_nodes": null
489
- }
490
  },
 
 
 
491
  "position": {
492
  "x": 1278.9987187264371,
493
  "y": 203.10622200721383
494
  },
495
- "parentId": null,
496
- "parentNode": null
497
  },
498
  {
499
- "id": "Chat Output 1",
500
- "type": "basic",
501
  "data": {
502
- "title": "Chat Output",
503
- "params": {},
504
  "display": null,
505
  "error": null,
506
  "inputs": {
507
  "input": "<class 'server.ops.Bundle'>"
508
  },
509
- "outputs": {},
510
  "meta": {
511
- "name": "Chat Output",
512
- "params": {},
513
- "inputs": {
514
- "input": {
515
  "name": "input",
 
516
  "type": {
517
  "type": "None"
518
- },
519
- "position": "left"
520
  }
521
- },
522
- "outputs": {},
523
- "type": "basic",
524
- "sub_nodes": null
 
 
525
  },
526
- "collapsed": true
 
 
527
  },
 
 
 
528
  "position": {
529
  "x": 1567.1754450730762,
530
  "y": 249.55429591996437
531
  },
532
- "parentId": null,
533
- "parentNode": null
534
- }
535
- ],
536
- "edges": [
537
- {
538
- "id": "xy-edge__Answer Post Processing 1output-Chat Output 1input",
539
- "source": "Answer Post Processing 1",
540
- "target": "Chat Output 1",
541
- "sourceHandle": "output",
542
- "targetHandle": "input"
543
- },
544
- {
545
- "id": "xy-edge__Chat Input 1output-Graph RAG Answer 1qa_embs",
546
- "source": "Chat Input 1",
547
- "target": "Graph RAG Answer 1",
548
- "sourceHandle": "output",
549
- "targetHandle": "qa_embs"
550
- },
551
- {
552
- "id": "xy-edge__Chat Input 1output-k-NN Intent Classifier 1qa_embs",
553
- "source": "Chat Input 1",
554
- "target": "k-NN Intent Classifier 1",
555
- "sourceHandle": "output",
556
- "targetHandle": "qa_embs"
557
- },
558
- {
559
- "id": "xy-edge__Chroma Graph RAG Loader 1output-k-NN Intent Classifier 1rag_graph",
560
- "source": "Chroma Graph RAG Loader 1",
561
- "target": "k-NN Intent Classifier 1",
562
- "sourceHandle": "output",
563
- "targetHandle": "rag_graph"
564
- },
565
- {
566
- "id": "xy-edge__k-NN Intent Classifier 1output-Graph RAG Answer 1intent",
567
- "source": "k-NN Intent Classifier 1",
568
- "target": "Graph RAG Answer 1",
569
- "sourceHandle": "output",
570
- "targetHandle": "intent"
571
- },
572
- {
573
- "id": "xy-edge__Chroma Graph RAG Loader 1output-Scenario Builder 1input",
574
- "source": "Chroma Graph RAG Loader 1",
575
- "target": "Scenario Builder 1",
576
- "sourceHandle": "output",
577
- "targetHandle": "input"
578
- },
579
- {
580
- "id": "xy-edge__Scenario Builder 1output-Graph RAG Answer 1prompt_dict",
581
- "source": "Scenario Builder 1",
582
- "target": "Graph RAG Answer 1",
583
- "sourceHandle": "output",
584
- "targetHandle": "prompt_dict"
585
- },
586
- {
587
- "id": "xy-edge__Graph RAG Answer 1output-Answer Post Processing 1qa_embs",
588
- "source": "Graph RAG Answer 1",
589
- "target": "Answer Post Processing 1",
590
- "sourceHandle": "output",
591
- "targetHandle": "qa_embs"
592
- },
593
- {
594
- "id": "xy-edge__Chroma Graph RAG Loader 1output-Answer Post Processing 1rag_graph",
595
- "source": "Chroma Graph RAG Loader 1",
596
- "target": "Answer Post Processing 1",
597
- "sourceHandle": "output",
598
- "targetHandle": "rag_graph"
599
- },
600
- {
601
- "id": "xy-edge__Chroma Graph RAG Loader 1output-Graph RAG Answer 1rag_graph",
602
- "source": "Chroma Graph RAG Loader 1",
603
- "target": "Graph RAG Answer 1",
604
- "sourceHandle": "output",
605
- "targetHandle": "rag_graph"
606
  }
607
  ]
608
  }
 
1
  {
2
+ "edges": [
3
+ {
4
+ "id": "xy-edge__Answer Post Processing 1output-Chat Output 1input",
5
+ "source": "Answer Post Processing 1",
6
+ "sourceHandle": "output",
7
+ "target": "Chat Output 1",
8
+ "targetHandle": "input"
9
+ },
10
+ {
11
+ "id": "xy-edge__Chat Input 1output-Graph RAG Answer 1qa_embs",
12
+ "source": "Chat Input 1",
13
+ "sourceHandle": "output",
14
+ "target": "Graph RAG Answer 1",
15
+ "targetHandle": "qa_embs"
16
+ },
17
+ {
18
+ "id": "xy-edge__Chat Input 1output-k-NN Intent Classifier 1qa_embs",
19
+ "source": "Chat Input 1",
20
+ "sourceHandle": "output",
21
+ "target": "k-NN Intent Classifier 1",
22
+ "targetHandle": "qa_embs"
23
+ },
24
+ {
25
+ "id": "xy-edge__Chroma Graph RAG Loader 1output-k-NN Intent Classifier 1rag_graph",
26
+ "source": "Chroma Graph RAG Loader 1",
27
+ "sourceHandle": "output",
28
+ "target": "k-NN Intent Classifier 1",
29
+ "targetHandle": "rag_graph"
30
+ },
31
+ {
32
+ "id": "xy-edge__k-NN Intent Classifier 1output-Graph RAG Answer 1intent",
33
+ "source": "k-NN Intent Classifier 1",
34
+ "sourceHandle": "output",
35
+ "target": "Graph RAG Answer 1",
36
+ "targetHandle": "intent"
37
+ },
38
+ {
39
+ "id": "xy-edge__Chroma Graph RAG Loader 1output-Scenario Builder 1input",
40
+ "source": "Chroma Graph RAG Loader 1",
41
+ "sourceHandle": "output",
42
+ "target": "Scenario Builder 1",
43
+ "targetHandle": "input"
44
+ },
45
+ {
46
+ "id": "xy-edge__Scenario Builder 1output-Graph RAG Answer 1prompt_dict",
47
+ "source": "Scenario Builder 1",
48
+ "sourceHandle": "output",
49
+ "target": "Graph RAG Answer 1",
50
+ "targetHandle": "prompt_dict"
51
+ },
52
+ {
53
+ "id": "xy-edge__Graph RAG Answer 1output-Answer Post Processing 1qa_embs",
54
+ "source": "Graph RAG Answer 1",
55
+ "sourceHandle": "output",
56
+ "target": "Answer Post Processing 1",
57
+ "targetHandle": "qa_embs"
58
+ },
59
+ {
60
+ "id": "xy-edge__Chroma Graph RAG Loader 1output-Answer Post Processing 1rag_graph",
61
+ "source": "Chroma Graph RAG Loader 1",
62
+ "sourceHandle": "output",
63
+ "target": "Answer Post Processing 1",
64
+ "targetHandle": "rag_graph"
65
+ },
66
+ {
67
+ "id": "xy-edge__Chroma Graph RAG Loader 1output-Graph RAG Answer 1rag_graph",
68
+ "source": "Chroma Graph RAG Loader 1",
69
+ "sourceHandle": "output",
70
+ "target": "Graph RAG Answer 1",
71
+ "targetHandle": "rag_graph"
72
+ }
73
+ ],
74
  "env": "LynxScribe",
75
  "nodes": [
76
  {
 
 
77
  "data": {
 
 
 
 
 
 
78
  "display": null,
79
  "error": null,
80
  "inputs": {},
 
 
 
81
  "meta": {
82
+ "inputs": [],
83
  "name": "Chat Input",
84
+ "outputs": [
85
+ {
86
+ "name": "output",
87
+ "position": "right",
88
+ "type": {
89
+ "type": "None"
90
+ }
91
+ }
92
+ ],
93
+ "params": [
94
+ {
95
  "default": 1,
96
+ "name": "embedder",
97
  "type": {
98
  "enum": [
99
+ "GritLM-7b (triton)"
100
  ]
101
  }
102
  },
103
+ {
 
104
  "default": 1,
105
+ "name": "load_mode",
106
  "type": {
107
  "enum": [
108
+ "augmented"
109
  ]
110
  }
111
  },
112
+ {
 
113
  "default": 1,
114
+ "name": "model",
115
  "type": {
116
  "enum": [
117
+ "Yi-34B (triton)"
118
  ]
119
  }
120
  }
121
+ ],
122
+ "sub_nodes": null,
123
+ "type": "basic"
124
+ },
125
+ "outputs": {
126
+ "output": "<class 'server.ops.Bundle'>"
127
+ },
128
+ "params": {
129
+ "embedder": "GritLM-7b (triton)",
130
+ "load_mode": "augmented",
131
+ "model": "Yi-34B (triton)"
132
+ },
133
+ "title": "Chat Input"
 
134
  },
135
+ "id": "Chat Input 1",
136
+ "parentId": null,
137
+ "parentNode": null,
138
  "position": {
139
  "x": 195.66666666666669,
140
  "y": 163.66666666666666
141
  },
142
+ "type": "basic"
 
143
  },
144
  {
 
 
145
  "data": {
 
 
 
 
 
 
 
146
  "display": null,
147
  "error": null,
148
  "inputs": {},
 
 
 
149
  "meta": {
150
+ "inputs": [],
151
  "name": "Chroma Graph RAG Loader",
152
+ "outputs": [
153
+ {
154
+ "name": "output",
155
+ "position": "right",
156
  "type": {
157
+ "type": "None"
 
 
158
  }
159
+ }
160
+ ],
161
+ "params": [
162
+ {
163
  "default": "",
164
+ "name": "bucket",
165
  "type": {
166
  "format": "collapsed"
167
  }
168
  },
169
+ {
170
+ "default": 1,
171
+ "name": "embedder",
172
+ "type": {
173
+ "enum": [
174
+ "GritLM-7b (triton)"
175
+ ]
176
+ }
177
+ },
178
+ {
179
  "default": "",
180
+ "name": "folder",
181
  "type": {
182
  "format": "collapsed"
183
  }
184
  },
185
+ {
 
186
  "default": 1,
187
+ "name": "location",
188
  "type": {
189
  "enum": [
190
+ "GCP"
191
  ]
192
  }
193
  }
194
+ ],
195
+ "sub_nodes": null,
196
+ "type": "basic"
197
+ },
198
+ "outputs": {
199
+ "output": "<class 'server.ops.Bundle'>"
200
+ },
201
+ "params": {
202
+ "bucket": "",
203
+ "embedder": "GritLM-7b (triton)",
204
+ "folder": "",
205
+ "location": "GCP"
206
+ },
207
+ "title": "Chroma Graph RAG Loader"
208
  },
209
+ "id": "Chroma Graph RAG Loader 1",
210
+ "parentId": null,
211
+ "parentNode": null,
212
  "position": {
213
  "x": 195.60875221397816,
214
  "y": 395.94296449008243
215
  },
216
+ "type": "basic"
 
217
  },
218
  {
 
 
219
  "data": {
220
+ "collapsed": false,
 
 
 
 
 
 
221
  "display": null,
222
  "error": null,
223
  "inputs": {
224
  "qa_embs": "None",
225
  "rag_graph": "None"
226
  },
 
 
 
227
  "meta": {
228
+ "inputs": [
229
+ {
230
+ "name": "qa_embs",
231
+ "position": "left",
232
+ "type": {
233
+ "type": "None"
234
+ }
235
+ },
236
+ {
237
+ "name": "rag_graph",
238
+ "position": "left",
239
+ "type": {
240
+ "type": "None"
241
+ }
242
+ }
243
+ ],
244
  "name": "k-NN Intent Classifier",
245
+ "outputs": [
246
+ {
247
+ "name": "output",
248
+ "position": "right",
249
+ "type": {
250
+ "type": "None"
251
+ }
252
+ }
253
+ ],
254
+ "params": [
255
+ {
256
  "default": 1,
257
+ "name": "distance",
258
  "type": {
259
  "enum": [
260
  "cosine",
 
262
  ]
263
  }
264
  },
265
+ {
266
+ "default": 3,
267
+ "name": "k",
268
  "type": {
269
+ "type": "<class 'int'>"
270
  }
271
  },
272
+ {
273
+ "default": 0.3,
274
+ "name": "max_dist",
275
  "type": {
276
+ "type": "<class 'float'>"
277
  }
278
  },
279
+ {
 
280
  "default": 1,
281
+ "name": "voting",
282
  "type": {
283
  "enum": [
284
  "most common",
 
286
  ]
287
  }
288
  }
289
+ ],
290
+ "sub_nodes": null,
291
+ "type": "basic"
292
+ },
293
+ "outputs": {
294
+ "output": "<class 'server.ops.Bundle'>"
295
+ },
296
+ "params": {
297
+ "distance": "cosine",
298
+ "k": "10",
299
+ "max_dist": 0.3,
300
+ "voting": "weighted"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
301
  },
302
+ "title": "k-NN Intent Classifier"
303
  },
304
+ "id": "k-NN Intent Classifier 1",
305
+ "parentId": null,
306
+ "parentNode": null,
307
  "position": {
308
  "x": 563.2980104689954,
309
  "y": 133.15405056058248
310
  },
311
+ "type": "basic"
 
312
  },
313
  {
 
 
314
  "data": {
315
+ "collapsed": false,
 
 
 
 
 
 
 
 
316
  "display": null,
317
  "error": null,
318
  "inputs": {
 
319
  "intent": "None",
320
+ "prompt_dict": "None",
321
+ "qa_embs": "None",
322
+ "rag_graph": "None"
 
 
323
  },
324
  "meta": {
325
+ "inputs": [
326
+ {
327
+ "name": "intent",
328
+ "position": "left",
 
329
  "type": {
330
+ "type": "None"
 
 
331
  }
332
  },
333
+ {
334
+ "name": "prompt_dict",
335
+ "position": "left",
336
  "type": {
337
+ "type": "None"
338
  }
339
  },
340
+ {
341
+ "name": "qa_embs",
342
+ "position": "left",
343
  "type": {
344
+ "type": "None"
345
  }
346
  },
347
+ {
348
+ "name": "rag_graph",
349
+ "position": "left",
350
+ "type": {
351
+ "type": "None"
352
+ }
353
+ }
354
+ ],
355
+ "name": "Graph RAG Answer",
356
+ "outputs": [
357
+ {
358
+ "name": "output",
359
+ "position": "right",
360
+ "type": {
361
+ "type": "None"
362
+ }
363
+ }
364
+ ],
365
+ "params": [
366
+ {
367
+ "default": 1,
368
+ "name": "answer_llm",
369
+ "type": {
370
+ "enum": [
371
+ "Yi-34B (triton)"
372
+ ]
373
+ }
374
+ },
375
+ {
376
  "default": 2800,
377
+ "name": "ctx_tokens",
378
  "type": {
379
  "type": "<class 'int'>"
380
  }
381
  },
382
+ {
 
383
  "default": 1,
384
+ "name": "distance",
385
  "type": {
386
  "enum": [
387
  "cosine",
 
389
  ]
390
  }
391
  },
392
+ {
393
+ "default": 0.12,
394
+ "name": "faq_dist",
395
  "type": {
396
+ "type": "<class 'float'>"
397
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
398
  },
399
+ {
400
+ "default": "",
401
+ "name": "graph_rag_params",
402
  "type": {
403
+ "format": "collapsed"
404
+ }
 
405
  },
406
+ {
407
+ "default": 0.25,
408
+ "name": "max_dist",
 
 
 
 
 
 
 
 
409
  "type": {
410
+ "type": "<class 'float'>"
411
+ }
 
412
  }
413
+ ],
414
+ "sub_nodes": null,
415
+ "type": "basic"
416
+ },
417
+ "outputs": {
418
+ "output": "<class 'server.ops.Bundle'>"
419
  },
420
+ "params": {
421
+ "answer_llm": "Yi-34B (triton)",
422
+ "ctx_tokens": 2800,
423
+ "distance": "cosine",
424
+ "faq_dist": 0.12,
425
+ "graph_rag_params": "",
426
+ "max_dist": 0.25
427
+ },
428
+ "title": "Graph RAG Answer"
429
  },
430
+ "id": "Graph RAG Answer 1",
431
+ "parentId": null,
432
+ "parentNode": null,
433
  "position": {
434
  "x": 954.7861764338505,
435
  "y": 158.59348288997435
436
  },
437
+ "type": "basic"
 
438
  },
439
  {
 
 
440
  "data": {
 
 
 
 
441
  "display": null,
442
  "error": null,
443
  "inputs": {
444
  "input": "<class 'server.ops.Bundle'>"
445
  },
 
 
 
446
  "meta": {
447
+ "inputs": [
448
+ {
 
 
 
 
 
 
 
 
 
 
449
  "name": "input",
450
+ "position": "left",
451
  "type": {
452
  "type": "None"
453
+ }
 
454
  }
455
+ ],
456
+ "name": "Scenario Builder",
457
+ "outputs": [
458
+ {
459
  "name": "output",
460
+ "position": "right",
461
  "type": {
462
  "type": "None"
463
+ }
464
+ }
465
+ ],
466
+ "params": [
467
+ {
468
+ "default": "",
469
+ "name": "scenario",
470
+ "type": {
471
+ "format": "collapsed"
472
+ }
473
  }
474
+ ],
475
+ "sub_nodes": null,
476
+ "type": "basic"
477
+ },
478
+ "outputs": {
479
+ "output": "<class 'server.ops.Bundle'>"
480
+ },
481
+ "params": {
482
+ "scenario": ""
483
+ },
484
+ "title": "Scenario Builder"
485
  },
486
+ "id": "Scenario Builder 1",
487
+ "parentId": null,
488
+ "parentNode": null,
489
  "position": {
490
  "x": 564.4460318313352,
491
  "y": 542.19038386186
492
  },
493
+ "type": "basic"
 
494
  },
495
  {
 
 
496
  "data": {
 
 
 
 
 
497
  "display": null,
498
  "error": null,
499
  "inputs": {
500
  "qa_embs": "None",
501
  "rag_graph": "None"
502
  },
 
 
 
503
  "meta": {
504
+ "inputs": [
505
+ {
506
+ "name": "qa_embs",
507
+ "position": "left",
508
+ "type": {
509
+ "type": "None"
510
+ }
511
+ },
512
+ {
513
+ "name": "rag_graph",
514
+ "position": "left",
515
+ "type": {
516
+ "type": "None"
517
+ }
518
+ }
519
+ ],
520
  "name": "Answer Post Processing",
521
+ "outputs": [
522
+ {
523
+ "name": "output",
524
+ "position": "right",
525
+ "type": {
526
+ "type": "None"
527
+ }
528
+ }
529
+ ],
530
+ "params": [
531
+ {
532
  "default": 1,
533
+ "name": "distance",
534
  "type": {
535
  "enum": [
536
  "cosine",
 
538
  ]
539
  }
540
  },
541
+ {
 
542
  "default": 0.78,
543
+ "name": "min_conf",
544
  "type": {
545
  "type": "<class 'float'>"
546
  }
547
  }
548
+ ],
549
+ "sub_nodes": null,
550
+ "type": "basic"
551
+ },
552
+ "outputs": {
553
+ "output": "<class 'server.ops.Bundle'>"
554
+ },
555
+ "params": {
556
+ "distance": "cosine",
557
+ "min_conf": 0.78
558
+ },
559
+ "title": "Answer Post Processing"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
560
  },
561
+ "id": "Answer Post Processing 1",
562
+ "parentId": null,
563
+ "parentNode": null,
564
  "position": {
565
  "x": 1278.9987187264371,
566
  "y": 203.10622200721383
567
  },
568
+ "type": "basic"
 
569
  },
570
  {
 
 
571
  "data": {
572
+ "collapsed": true,
 
573
  "display": null,
574
  "error": null,
575
  "inputs": {
576
  "input": "<class 'server.ops.Bundle'>"
577
  },
 
578
  "meta": {
579
+ "inputs": [
580
+ {
 
 
581
  "name": "input",
582
+ "position": "left",
583
  "type": {
584
  "type": "None"
585
+ }
 
586
  }
587
+ ],
588
+ "name": "Chat Output",
589
+ "outputs": [],
590
+ "params": [],
591
+ "sub_nodes": null,
592
+ "type": "basic"
593
  },
594
+ "outputs": {},
595
+ "params": {},
596
+ "title": "Chat Output"
597
  },
598
+ "id": "Chat Output 1",
599
+ "parentId": null,
600
+ "parentNode": null,
601
  "position": {
602
  "x": 1567.1754450730762,
603
  "y": 249.55429591996437
604
  },
605
+ "type": "basic"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
606
  }
607
  ]
608
  }
examples/Word2vec.lynxkite.json CHANGED
@@ -6107,26 +6107,26 @@
6107
  }
6108
  ],
6109
  "meta": {
6110
- "inputs": {
6111
- "bundle": {
6112
  "name": "bundle",
6113
  "position": "left",
6114
  "type": {
6115
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
6116
  }
6117
  }
6118
- },
6119
  "name": "View vectors",
6120
- "outputs": {},
6121
- "params": {
6122
- "label_column": {
6123
  "default": "",
6124
  "name": "label_column",
6125
  "type": {
6126
  "type": "<class 'str'>"
6127
  }
6128
  },
6129
- "metric": {
6130
  "default": "euclidean",
6131
  "name": "metric",
6132
  "type": {
@@ -6149,35 +6149,35 @@
6149
  ]
6150
  }
6151
  },
6152
- "min_dist": {
6153
  "default": 0.1,
6154
  "name": "min_dist",
6155
  "type": {
6156
  "type": "<class 'float'>"
6157
  }
6158
  },
6159
- "n_neighbors": {
6160
  "default": 15.0,
6161
  "name": "n_neighbors",
6162
  "type": {
6163
  "type": "<class 'int'>"
6164
  }
6165
  },
6166
- "table_name": {
6167
  "default": "nodes",
6168
  "name": "table_name",
6169
  "type": {
6170
  "type": "<class 'str'>"
6171
  }
6172
  },
6173
- "vector_column": {
6174
  "default": "",
6175
  "name": "vector_column",
6176
  "type": {
6177
  "type": "<class 'str'>"
6178
  }
6179
  }
6180
- },
6181
  "type": "visualization"
6182
  },
6183
  "params": {
@@ -12267,26 +12267,26 @@
12267
  }
12268
  ],
12269
  "meta": {
12270
- "inputs": {
12271
- "bundle": {
12272
  "name": "bundle",
12273
  "position": "left",
12274
  "type": {
12275
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
12276
  }
12277
  }
12278
- },
12279
  "name": "View vectors",
12280
- "outputs": {},
12281
- "params": {
12282
- "label_column": {
12283
  "default": "",
12284
  "name": "label_column",
12285
  "type": {
12286
  "type": "<class 'str'>"
12287
  }
12288
  },
12289
- "metric": {
12290
  "default": "euclidean",
12291
  "name": "metric",
12292
  "type": {
@@ -12309,35 +12309,35 @@
12309
  ]
12310
  }
12311
  },
12312
- "min_dist": {
12313
  "default": 0.1,
12314
  "name": "min_dist",
12315
  "type": {
12316
  "type": "<class 'float'>"
12317
  }
12318
  },
12319
- "n_neighbors": {
12320
  "default": 15.0,
12321
  "name": "n_neighbors",
12322
  "type": {
12323
  "type": "<class 'int'>"
12324
  }
12325
  },
12326
- "table_name": {
12327
  "default": "nodes",
12328
  "name": "table_name",
12329
  "type": {
12330
  "type": "<class 'str'>"
12331
  }
12332
  },
12333
- "vector_column": {
12334
  "default": "",
12335
  "name": "vector_column",
12336
  "type": {
12337
  "type": "<class 'str'>"
12338
  }
12339
  }
12340
- },
12341
  "type": "visualization"
12342
  },
12343
  "params": {
@@ -12367,18 +12367,18 @@
12367
  "error": null,
12368
  "input_metadata": [],
12369
  "meta": {
12370
- "inputs": {},
12371
  "name": "Word2vec for the top 1000 words",
12372
- "outputs": {
12373
- "output": {
12374
  "name": "output",
12375
  "position": "right",
12376
  "type": {
12377
  "type": "None"
12378
  }
12379
  }
12380
- },
12381
- "params": {},
12382
  "type": "basic"
12383
  },
12384
  "params": {},
@@ -12405,34 +12405,34 @@
12405
  {}
12406
  ],
12407
  "meta": {
12408
- "inputs": {
12409
- "df": {
12410
  "name": "df",
12411
  "position": "left",
12412
  "type": {
12413
  "type": "<class 'pandas.core.frame.DataFrame'>"
12414
  }
12415
  }
12416
- },
12417
  "name": "Take first N",
12418
- "outputs": {
12419
- "output": {
12420
  "name": "output",
12421
  "position": "right",
12422
  "type": {
12423
  "type": "None"
12424
  }
12425
  }
12426
- },
12427
- "params": {
12428
- "n": {
12429
  "default": 10.0,
12430
  "name": "n",
12431
  "type": {
12432
  "type": "<class 'int'>"
12433
  }
12434
  }
12435
- },
12436
  "type": "basic"
12437
  },
12438
  "params": {
@@ -12461,34 +12461,34 @@
12461
  {}
12462
  ],
12463
  "meta": {
12464
- "inputs": {
12465
- "df": {
12466
  "name": "df",
12467
  "position": "left",
12468
  "type": {
12469
  "type": "<class 'pandas.core.frame.DataFrame'>"
12470
  }
12471
  }
12472
- },
12473
  "name": "Sample N",
12474
- "outputs": {
12475
- "output": {
12476
  "name": "output",
12477
  "position": "right",
12478
  "type": {
12479
  "type": "None"
12480
  }
12481
  }
12482
- },
12483
- "params": {
12484
- "n": {
12485
  "default": 10.0,
12486
  "name": "n",
12487
  "type": {
12488
  "type": "<class 'int'>"
12489
  }
12490
  }
12491
- },
12492
  "type": "basic"
12493
  },
12494
  "params": {
@@ -12939,26 +12939,26 @@
12939
  }
12940
  ],
12941
  "meta": {
12942
- "inputs": {
12943
- "bundle": {
12944
  "name": "bundle",
12945
  "position": "left",
12946
  "type": {
12947
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
12948
  }
12949
  }
12950
- },
12951
  "name": "View tables",
12952
- "outputs": {},
12953
- "params": {
12954
- "limit": {
12955
  "default": 100.0,
12956
  "name": "limit",
12957
  "type": {
12958
  "type": "<class 'int'>"
12959
  }
12960
  }
12961
- },
12962
  "position": {
12963
  "x": 356.0,
12964
  "y": 478.0
 
6107
  }
6108
  ],
6109
  "meta": {
6110
+ "inputs": [
6111
+ {
6112
  "name": "bundle",
6113
  "position": "left",
6114
  "type": {
6115
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
6116
  }
6117
  }
6118
+ ],
6119
  "name": "View vectors",
6120
+ "outputs": [],
6121
+ "params": [
6122
+ {
6123
  "default": "",
6124
  "name": "label_column",
6125
  "type": {
6126
  "type": "<class 'str'>"
6127
  }
6128
  },
6129
+ {
6130
  "default": "euclidean",
6131
  "name": "metric",
6132
  "type": {
 
6149
  ]
6150
  }
6151
  },
6152
+ {
6153
  "default": 0.1,
6154
  "name": "min_dist",
6155
  "type": {
6156
  "type": "<class 'float'>"
6157
  }
6158
  },
6159
+ {
6160
  "default": 15.0,
6161
  "name": "n_neighbors",
6162
  "type": {
6163
  "type": "<class 'int'>"
6164
  }
6165
  },
6166
+ {
6167
  "default": "nodes",
6168
  "name": "table_name",
6169
  "type": {
6170
  "type": "<class 'str'>"
6171
  }
6172
  },
6173
+ {
6174
  "default": "",
6175
  "name": "vector_column",
6176
  "type": {
6177
  "type": "<class 'str'>"
6178
  }
6179
  }
6180
+ ],
6181
  "type": "visualization"
6182
  },
6183
  "params": {
 
12267
  }
12268
  ],
12269
  "meta": {
12270
+ "inputs": [
12271
+ {
12272
  "name": "bundle",
12273
  "position": "left",
12274
  "type": {
12275
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
12276
  }
12277
  }
12278
+ ],
12279
  "name": "View vectors",
12280
+ "outputs": [],
12281
+ "params": [
12282
+ {
12283
  "default": "",
12284
  "name": "label_column",
12285
  "type": {
12286
  "type": "<class 'str'>"
12287
  }
12288
  },
12289
+ {
12290
  "default": "euclidean",
12291
  "name": "metric",
12292
  "type": {
 
12309
  ]
12310
  }
12311
  },
12312
+ {
12313
  "default": 0.1,
12314
  "name": "min_dist",
12315
  "type": {
12316
  "type": "<class 'float'>"
12317
  }
12318
  },
12319
+ {
12320
  "default": 15.0,
12321
  "name": "n_neighbors",
12322
  "type": {
12323
  "type": "<class 'int'>"
12324
  }
12325
  },
12326
+ {
12327
  "default": "nodes",
12328
  "name": "table_name",
12329
  "type": {
12330
  "type": "<class 'str'>"
12331
  }
12332
  },
12333
+ {
12334
  "default": "",
12335
  "name": "vector_column",
12336
  "type": {
12337
  "type": "<class 'str'>"
12338
  }
12339
  }
12340
+ ],
12341
  "type": "visualization"
12342
  },
12343
  "params": {
 
12367
  "error": null,
12368
  "input_metadata": [],
12369
  "meta": {
12370
+ "inputs": [],
12371
  "name": "Word2vec for the top 1000 words",
12372
+ "outputs": [
12373
+ {
12374
  "name": "output",
12375
  "position": "right",
12376
  "type": {
12377
  "type": "None"
12378
  }
12379
  }
12380
+ ],
12381
+ "params": [],
12382
  "type": "basic"
12383
  },
12384
  "params": {},
 
12405
  {}
12406
  ],
12407
  "meta": {
12408
+ "inputs": [
12409
+ {
12410
  "name": "df",
12411
  "position": "left",
12412
  "type": {
12413
  "type": "<class 'pandas.core.frame.DataFrame'>"
12414
  }
12415
  }
12416
+ ],
12417
  "name": "Take first N",
12418
+ "outputs": [
12419
+ {
12420
  "name": "output",
12421
  "position": "right",
12422
  "type": {
12423
  "type": "None"
12424
  }
12425
  }
12426
+ ],
12427
+ "params": [
12428
+ {
12429
  "default": 10.0,
12430
  "name": "n",
12431
  "type": {
12432
  "type": "<class 'int'>"
12433
  }
12434
  }
12435
+ ],
12436
  "type": "basic"
12437
  },
12438
  "params": {
 
12461
  {}
12462
  ],
12463
  "meta": {
12464
+ "inputs": [
12465
+ {
12466
  "name": "df",
12467
  "position": "left",
12468
  "type": {
12469
  "type": "<class 'pandas.core.frame.DataFrame'>"
12470
  }
12471
  }
12472
+ ],
12473
  "name": "Sample N",
12474
+ "outputs": [
12475
+ {
12476
  "name": "output",
12477
  "position": "right",
12478
  "type": {
12479
  "type": "None"
12480
  }
12481
  }
12482
+ ],
12483
+ "params": [
12484
+ {
12485
  "default": 10.0,
12486
  "name": "n",
12487
  "type": {
12488
  "type": "<class 'int'>"
12489
  }
12490
  }
12491
+ ],
12492
  "type": "basic"
12493
  },
12494
  "params": {
 
12939
  }
12940
  ],
12941
  "meta": {
12942
+ "inputs": [
12943
+ {
12944
  "name": "bundle",
12945
  "position": "left",
12946
  "type": {
12947
  "type": "<class 'lynxkite_graph_analytics.core.Bundle'>"
12948
  }
12949
  }
12950
+ ],
12951
  "name": "View tables",
12952
+ "outputs": [],
12953
+ "params": [
12954
+ {
12955
  "default": 100.0,
12956
  "name": "limit",
12957
  "type": {
12958
  "type": "<class 'int'>"
12959
  }
12960
  }
12961
+ ],
12962
  "position": {
12963
  "x": 356.0,
12964
  "y": 478.0
examples/sql.lynxkite.json CHANGED
The diff for this file is too large to render. See raw diff
 
lynxkite-app/src/lynxkite_app/crdt.py CHANGED
@@ -200,12 +200,12 @@ def try_to_load_workspace(ws: pycrdt.Map, name: str):
200
  name: Name of the workspace to load.
201
  """
202
  if os.path.exists(name):
203
- ws_pyd = workspace.load(name)
204
  crdt_update(
205
  ws,
206
  ws_pyd.model_dump(),
207
  # We treat some fields as black boxes. They are not edited on the frontend.
208
- non_collaborative_fields={"display", "input_metadata"},
209
  )
210
 
211
 
@@ -263,19 +263,18 @@ async def execute(name: str, ws_crdt: pycrdt.Map, ws_pyd: workspace.Workspace, d
263
  path = cwd / name
264
  assert path.is_relative_to(cwd), "Provided workspace path is invalid"
265
  # Save user changes before executing, in case the execution fails.
266
- workspace.save(ws_pyd, path)
267
  ops.load_user_scripts(name)
268
- ws_pyd._crdt = ws_crdt
 
 
 
269
  with ws_crdt.doc.transaction():
270
- for nc, np in zip(ws_crdt["nodes"], ws_pyd.nodes):
271
- if "data" not in nc:
272
- nc["data"] = pycrdt.Map()
273
  nc["data"]["status"] = "planned"
274
- # Nodes get a reference to their CRDT maps, so they can update them as the results come in.
275
- np._crdt = nc
276
- ws_pyd = ws_pyd.normalize()
277
- await workspace.execute(ws_pyd)
278
- workspace.save(ws_pyd, path)
279
  print(f"Finished running {name} in {ws_pyd.env}.")
280
 
281
 
 
200
  name: Name of the workspace to load.
201
  """
202
  if os.path.exists(name):
203
+ ws_pyd = workspace.Workspace.load(name)
204
  crdt_update(
205
  ws,
206
  ws_pyd.model_dump(),
207
  # We treat some fields as black boxes. They are not edited on the frontend.
208
+ non_collaborative_fields={"display", "input_metadata", "meta"},
209
  )
210
 
211
 
 
263
  path = cwd / name
264
  assert path.is_relative_to(cwd), "Provided workspace path is invalid"
265
  # Save user changes before executing, in case the execution fails.
266
+ ws_pyd.save(path)
267
  ops.load_user_scripts(name)
268
+ ws_pyd.connect_crdt(ws_crdt)
269
+ ws_pyd.update_metadata()
270
+ if not ws_pyd.has_executor():
271
+ return
272
  with ws_crdt.doc.transaction():
273
+ for nc in ws_crdt["nodes"]:
 
 
274
  nc["data"]["status"] = "planned"
275
+ ws_pyd.normalize()
276
+ await ws_pyd.execute()
277
+ ws_pyd.save(path)
 
 
278
  print(f"Finished running {name} in {ws_pyd.env}.")
279
 
280
 
lynxkite-app/src/lynxkite_app/main.py CHANGED
@@ -50,14 +50,15 @@ data_path = pathlib.Path()
50
  def save(req: SaveRequest):
51
  path = data_path / req.path
52
  assert path.is_relative_to(data_path)
53
- workspace.save(req.ws, path)
54
 
55
 
56
  @app.post("/api/save")
57
  async def save_and_execute(req: SaveRequest):
58
  save(req)
59
- await workspace.execute(req.ws)
60
- save(req)
 
61
  return req.ws
62
 
63
 
@@ -76,7 +77,7 @@ def load(path: str):
76
  assert path.is_relative_to(data_path)
77
  if not path.exists():
78
  return workspace.Workspace()
79
- return workspace.load(path)
80
 
81
 
82
  class DirectoryEntry(pydantic.BaseModel):
 
50
  def save(req: SaveRequest):
51
  path = data_path / req.path
52
  assert path.is_relative_to(data_path)
53
+ req.ws.save(path)
54
 
55
 
56
  @app.post("/api/save")
57
  async def save_and_execute(req: SaveRequest):
58
  save(req)
59
+ if req.ws.has_executor():
60
+ await req.ws.execute()
61
+ save(req)
62
  return req.ws
63
 
64
 
 
77
  assert path.is_relative_to(data_path)
78
  if not path.exists():
79
  return workspace.Workspace()
80
+ return workspace.Workspace.load(path)
81
 
82
 
83
  class DirectoryEntry(pydantic.BaseModel):
lynxkite-app/tests/test_crdt.py CHANGED
@@ -18,7 +18,7 @@ def empty_list_workspace():
18
  yield ws
19
 
20
 
21
- class MyEnum(Enum):
22
  VALUE = 1
23
 
24
 
 
18
  yield ws
19
 
20
 
21
+ class MyEnum(int, Enum):
22
  VALUE = 1
23
 
24
 
lynxkite-app/web/playwright.config.ts CHANGED
@@ -2,7 +2,7 @@ import { defineConfig, devices } from "@playwright/test";
2
 
3
  export default defineConfig({
4
  testDir: "./tests",
5
- timeout: process.env.CI ? 20000 : 10000,
6
  fullyParallel: false,
7
  /* Fail the build on CI if you accidentally left test.only in the source code. */
8
  forbidOnly: !!process.env.CI,
 
2
 
3
  export default defineConfig({
4
  testDir: "./tests",
5
+ timeout: process.env.CI ? 30000 : 10000,
6
  fullyParallel: false,
7
  /* Fail the build on CI if you accidentally left test.only in the source code. */
8
  forbidOnly: !!process.env.CI,
lynxkite-app/web/src/index.css CHANGED
@@ -104,27 +104,29 @@ body {
104
  background-image: linear-gradient(
105
  to right,
106
  var(--status-color-1),
107
- var(--status-color-2),
 
108
  var(--status-color-3)
109
  );
 
110
  background-size: 180% 180%;
111
- --status-color-1: oklch(75% 0.2 55);
112
- --status-color-2: oklch(75% 0.2 55);
113
- --status-color-3: oklch(75% 0.2 55);
114
  transition: --status-color-1 0.3s, --status-color-2 0.3s, --status-color-3 0.3s;
115
  }
116
 
117
  .lynxkite-node .title.active {
118
- --status-color-1: oklch(75% 0.2 55);
119
- --status-color-2: oklch(90% 0.2 55);
120
- --status-color-3: oklch(75% 0.1 55);
121
- animation: active-node-gradient-animation 2s ease-in-out infinite;
122
  }
123
 
124
  .lynxkite-node .title.planned {
125
- --status-color-1: oklch(75% 0.1 55);
126
- --status-color-2: oklch(75% 0.1 55);
127
- --status-color-3: oklch(75% 0.1 55);
128
  }
129
 
130
  .handle-name {
@@ -405,15 +407,7 @@ body {
405
  }
406
 
407
  @keyframes active-node-gradient-animation {
408
- 0% {
409
- background-position-x: 100%;
410
- }
411
-
412
- 50% {
413
- background-position-x: 0%;
414
- }
415
-
416
- 100% {
417
  background-position-x: 100%;
418
  }
419
  }
 
104
  background-image: linear-gradient(
105
  to right,
106
  var(--status-color-1),
107
+ var(--status-color-2) 40%,
108
+ var(--status-color-2) 60%,
109
  var(--status-color-3)
110
  );
111
+ background-blend-mode: luminosity;
112
  background-size: 180% 180%;
113
+ --status-color-1: #0000;
114
+ --status-color-2: #0000;
115
+ --status-color-3: #0000;
116
  transition: --status-color-1 0.3s, --status-color-2 0.3s, --status-color-3 0.3s;
117
  }
118
 
119
  .lynxkite-node .title.active {
120
+ --status-color-1: #0000;
121
+ --status-color-2: #fff4;
122
+ --status-color-3: #888f;
123
+ animation: active-node-gradient-animation 1.2s alternate ease-in-out infinite;
124
  }
125
 
126
  .lynxkite-node .title.planned {
127
+ --status-color-1: #888f;
128
+ --status-color-2: #888f;
129
+ --status-color-3: #888f;
130
  }
131
 
132
  .handle-name {
 
407
  }
408
 
409
  @keyframes active-node-gradient-animation {
410
+ to {
 
 
 
 
 
 
 
 
411
  background-position-x: 100%;
412
  }
413
  }
lynxkite-app/web/src/workspace/Workspace.tsx CHANGED
@@ -81,7 +81,11 @@ function LynxKiteFlow() {
81
  n.dragHandle = ".bg-primary";
82
  }
83
  }
84
- setNodes([...state.workspace.nodes] as Node[]);
 
 
 
 
85
  setEdges([...state.workspace.edges] as Edge[]);
86
  for (const node of state.workspace.nodes) {
87
  // Make sure the internal copies are updated.
 
81
  n.dragHandle = ".bg-primary";
82
  }
83
  }
84
+ const selection = state.workspace.nodes.filter((n) => n.selected).map((n) => n.id);
85
+ const nodes = state.workspace.nodes.map((n) =>
86
+ selection.includes(n.id) ? { ...n, selected: true } : n,
87
+ );
88
+ setNodes([...nodes] as Node[]);
89
  setEdges([...state.workspace.edges] as Edge[]);
90
  for (const node of state.workspace.nodes) {
91
  // Make sure the internal copies are updated.
lynxkite-app/web/src/workspace/nodes/LynxKiteNode.tsx CHANGED
@@ -14,7 +14,7 @@ interface LynxKiteNodeProps {
14
  children: any;
15
  }
16
 
17
- function getHandles(inputs: object, outputs: object) {
18
  const handles: {
19
  position: "top" | "bottom" | "left" | "right";
20
  name: string;
@@ -23,10 +23,10 @@ function getHandles(inputs: object, outputs: object) {
23
  showLabel: boolean;
24
  type: "source" | "target";
25
  }[] = [];
26
- for (const e of Object.values(inputs)) {
27
  handles.push({ ...e, type: "target" });
28
  }
29
- for (const e of Object.values(outputs)) {
30
  handles.push({ ...e, type: "source" });
31
  }
32
  const counts = { top: 0, bottom: 0, left: 0, right: 0 };
@@ -43,11 +43,17 @@ function getHandles(inputs: object, outputs: object) {
43
  return handles;
44
  }
45
 
 
 
 
 
 
 
46
  function LynxKiteNodeComponent(props: LynxKiteNodeProps) {
47
  const reactFlow = useReactFlow();
48
  const data = props.data;
49
  const expanded = !data.collapsed;
50
- const handles = getHandles(data.meta?.inputs || {}, data.meta?.outputs || {});
51
  function titleClicked() {
52
  reactFlow.updateNodeData(props.id, { collapsed: expanded });
53
  }
@@ -57,7 +63,10 @@ function LynxKiteNodeComponent(props: LynxKiteNodeProps) {
57
  left: "top",
58
  right: "top",
59
  };
60
-
 
 
 
61
  return (
62
  <div
63
  className={`node-container ${expanded ? "expanded" : "collapsed"} `}
@@ -67,7 +76,11 @@ function LynxKiteNodeComponent(props: LynxKiteNodeProps) {
67
  }}
68
  >
69
  <div className="lynxkite-node" style={props.nodeStyle}>
70
- <div className={`title bg-primary ${data.status}`} onClick={titleClicked}>
 
 
 
 
71
  {data.title}
72
  {data.error && <span className="title-icon">⚠️</span>}
73
  {expanded || <span className="title-icon">⋯</span>}
@@ -97,7 +110,7 @@ function LynxKiteNodeComponent(props: LynxKiteNodeProps) {
97
  )}
98
  {handles.map((handle) => (
99
  <Handle
100
- key={handle.name}
101
  id={handle.name}
102
  type={handle.type}
103
  position={handle.position as Position}
 
14
  children: any;
15
  }
16
 
17
+ function getHandles(inputs: any[], outputs: any[]) {
18
  const handles: {
19
  position: "top" | "bottom" | "left" | "right";
20
  name: string;
 
23
  showLabel: boolean;
24
  type: "source" | "target";
25
  }[] = [];
26
+ for (const e of inputs) {
27
  handles.push({ ...e, type: "target" });
28
  }
29
+ for (const e of outputs) {
30
  handles.push({ ...e, type: "source" });
31
  }
32
  const counts = { top: 0, bottom: 0, left: 0, right: 0 };
 
43
  return handles;
44
  }
45
 
46
+ const OP_COLORS: { [key: string]: string } = {
47
+ orange: "oklch(75% 0.2 55)",
48
+ blue: "oklch(75% 0.2 230)",
49
+ green: "oklch(75% 0.2 130)",
50
+ };
51
+
52
  function LynxKiteNodeComponent(props: LynxKiteNodeProps) {
53
  const reactFlow = useReactFlow();
54
  const data = props.data;
55
  const expanded = !data.collapsed;
56
+ const handles = getHandles(data.meta?.value?.inputs || [], data.meta?.value?.outputs || []);
57
  function titleClicked() {
58
  reactFlow.updateNodeData(props.id, { collapsed: expanded });
59
  }
 
63
  left: "top",
64
  right: "top",
65
  };
66
+ const titleStyle: { backgroundColor?: string } = {};
67
+ if (data.meta?.value?.color) {
68
+ titleStyle.backgroundColor = OP_COLORS[data.meta.value.color] || data.meta.value.color;
69
+ }
70
  return (
71
  <div
72
  className={`node-container ${expanded ? "expanded" : "collapsed"} `}
 
76
  }}
77
  >
78
  <div className="lynxkite-node" style={props.nodeStyle}>
79
+ <div
80
+ className={`title bg-primary ${data.status}`}
81
+ style={titleStyle}
82
+ onClick={titleClicked}
83
+ >
84
  {data.title}
85
  {data.error && <span className="title-icon">⚠️</span>}
86
  {expanded || <span className="title-icon">⋯</span>}
 
110
  )}
111
  {handles.map((handle) => (
112
  <Handle
113
+ key={`${handle.name} on ${handle.position}`}
114
  id={handle.name}
115
  type={handle.type}
116
  position={handle.position as Position}
lynxkite-app/web/src/workspace/nodes/NodeGroupParameter.tsx CHANGED
@@ -1,5 +1,4 @@
1
- import { useEffect, useState } from "react";
2
- import NodeParameter from "./NodeParameter";
3
 
4
  interface SelectorType {
5
  name: string;
@@ -23,44 +22,27 @@ interface GroupsType {
23
 
24
  interface NodeGroupParameterProps {
25
  meta: { selector: SelectorType; groups: GroupsType };
26
- value: any;
27
  data: any;
28
- setParam: (name: string, value: any, options?: { delay: number }) => void;
29
- deleteParam: (name: string, options?: { delay: number }) => void;
30
  }
31
 
32
- export default function NodeGroupParameter({
33
- meta,
34
- value,
35
- data,
36
- setParam,
37
- deleteParam,
38
- }: NodeGroupParameterProps) {
39
  const selector = meta.selector;
40
- const groups = meta.groups;
41
- const [selectedValue, setSelectedValue] = useState<string>(value || selector.default);
42
-
43
- const handleSelectorChange = (value: any, opts?: { delay: number }) => {
44
- setSelectedValue(value);
45
- setParam(selector.name, value, opts);
46
- };
47
-
48
- useEffect(() => {
49
- // Clean possible previous parameters first
50
- Object.values(groups).flatMap((group) => group.map((entry) => deleteParam(entry.name)));
51
- for (const param of groups[selectedValue]) {
52
- setParam(param.name, param.default);
53
- }
54
- }, [selectedValue]);
55
 
56
  return (
57
- <NodeParameter
58
- name={selector.name}
59
- key={selector.name}
60
- value={selectedValue}
61
- data={data}
62
- meta={selector}
63
- onChange={handleSelectorChange}
64
- />
 
 
 
 
65
  );
66
  }
 
1
+ import NodeParameter, { type UpdateOptions } from "./NodeParameter";
 
2
 
3
  interface SelectorType {
4
  name: string;
 
22
 
23
  interface NodeGroupParameterProps {
24
  meta: { selector: SelectorType; groups: GroupsType };
 
25
  data: any;
26
+ setParam: (name: string, value: any, options: UpdateOptions) => void;
 
27
  }
28
 
29
+ export default function NodeGroupParameter({ meta, data, setParam }: NodeGroupParameterProps) {
 
 
 
 
 
 
30
  const selector = meta.selector;
31
+ const selectorValue = data.params[selector.name] || selector.default;
32
+ const group = meta.groups[selectorValue] || [];
 
 
 
 
 
 
 
 
 
 
 
 
 
33
 
34
  return (
35
+ <>
36
+ {group.map((meta: any) => (
37
+ <NodeParameter
38
+ name={meta.name}
39
+ key={meta.name}
40
+ value={data.params[meta.name] ?? meta.default}
41
+ data={data}
42
+ meta={meta}
43
+ setParam={setParam}
44
+ />
45
+ ))}
46
+ </>
47
  );
48
  }
lynxkite-app/web/src/workspace/nodes/NodeParameter.tsx CHANGED
@@ -1,6 +1,7 @@
1
  import { useRef } from "react";
2
  // @ts-ignore
3
  import ArrowsHorizontal from "~icons/tabler/arrows-horizontal.jsx";
 
4
 
5
  const BOOLEAN = "<class 'bool'>";
6
  const MODEL_TRAINING_INPUT_MAPPING =
@@ -189,77 +190,79 @@ interface NodeParameterProps {
189
  value: any;
190
  meta: any;
191
  data: any;
192
- onChange: (value: any, options?: { delay: number }) => void;
193
  }
194
 
195
- export default function NodeParameter({ name, value, meta, data, onChange }: NodeParameterProps) {
196
- return (
197
- // biome-ignore lint/a11y/noLabelWithoutControl: Most of the time there is a control.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
198
  <label className="param">
199
- {meta?.type?.format === "collapsed" ? (
200
- <>
201
- <ParamName name={name} />
202
- <button className="collapsed-param">⋯</button>
203
- </>
204
- ) : meta?.type?.format === "textarea" ? (
205
- <>
206
- <ParamName name={name} />
207
- <textarea
208
- className="textarea textarea-bordered w-full"
209
- rows={6}
210
- value={value}
211
- onChange={(evt) => onChange(evt.currentTarget.value, { delay: 2 })}
212
- onBlur={(evt) => onChange(evt.currentTarget.value, { delay: 0 })}
213
- />
214
- </>
215
- ) : meta?.type?.enum ? (
216
- <>
217
- <ParamName name={name} />
218
- <select
219
- className="select select-bordered w-full"
220
- value={value || meta.type.enum[0]}
221
- onChange={(evt) => onChange(evt.currentTarget.value)}
222
- >
223
- {meta.type.enum.map((option: string) => (
224
- <option key={option} value={option}>
225
- {option}
226
- </option>
227
- ))}
228
- </select>
229
- </>
230
- ) : meta?.type?.type === BOOLEAN ? (
231
- <div className="form-control">
232
- <label className="label cursor-pointer">
233
- {name.replace(/_/g, " ")}
234
- <input
235
- className="checkbox"
236
- type="checkbox"
237
- checked={value}
238
- onChange={(evt) => onChange(evt.currentTarget.checked)}
239
- />
240
- </label>
241
- </div>
242
- ) : meta?.type?.type === MODEL_TRAINING_INPUT_MAPPING ? (
243
- <>
244
- <ParamName name={name} />
245
- <ModelMapping value={value} data={data} variant="training input" onChange={onChange} />
246
- </>
247
- ) : meta?.type?.type === MODEL_INFERENCE_INPUT_MAPPING ? (
248
- <>
249
- <ParamName name={name} />
250
- <ModelMapping value={value} data={data} variant="inference input" onChange={onChange} />
251
- </>
252
- ) : meta?.type?.type === MODEL_OUTPUT_MAPPING ? (
253
- <>
254
- <ParamName name={name} />
255
- <ModelMapping value={value} data={data} variant="output" onChange={onChange} />
256
- </>
257
- ) : (
258
- <>
259
- <ParamName name={name} />
260
- <Input value={value} onChange={onChange} />
261
- </>
262
- )}
263
  </label>
264
  );
265
  }
 
1
  import { useRef } from "react";
2
  // @ts-ignore
3
  import ArrowsHorizontal from "~icons/tabler/arrows-horizontal.jsx";
4
+ import NodeGroupParameter from "./NodeGroupParameter";
5
 
6
  const BOOLEAN = "<class 'bool'>";
7
  const MODEL_TRAINING_INPUT_MAPPING =
 
190
  value: any;
191
  meta: any;
192
  data: any;
193
+ setParam: (name: string, value: any, options: UpdateOptions) => void;
194
  }
195
 
196
+ export type UpdateOptions = { delay?: number };
197
+
198
+ export default function NodeParameter({ name, value, meta, data, setParam }: NodeParameterProps) {
199
+ function onChange(value: any, opts?: UpdateOptions) {
200
+ setParam(meta.name, value, opts || {});
201
+ }
202
+ return meta?.type?.format === "collapsed" ? (
203
+ <label className="param">
204
+ <ParamName name={name} />
205
+ <button className="collapsed-param">⋯</button>
206
+ </label>
207
+ ) : meta?.type?.format === "textarea" ? (
208
+ <label className="param">
209
+ <ParamName name={name} />
210
+ <textarea
211
+ className="textarea textarea-bordered w-full"
212
+ rows={6}
213
+ value={value}
214
+ onChange={(evt) => onChange(evt.currentTarget.value, { delay: 2 })}
215
+ onBlur={(evt) => onChange(evt.currentTarget.value, { delay: 0 })}
216
+ />
217
+ </label>
218
+ ) : meta?.type === "group" ? (
219
+ <NodeGroupParameter meta={meta} data={data} setParam={setParam} />
220
+ ) : meta?.type?.enum ? (
221
+ <label className="param">
222
+ <ParamName name={name} />
223
+ <select
224
+ className="select select-bordered w-full"
225
+ value={value || meta.type.enum[0]}
226
+ onChange={(evt) => onChange(evt.currentTarget.value)}
227
+ >
228
+ {meta.type.enum.map((option: string) => (
229
+ <option key={option} value={option}>
230
+ {option}
231
+ </option>
232
+ ))}
233
+ </select>
234
+ </label>
235
+ ) : meta?.type?.type === BOOLEAN ? (
236
+ <div className="form-control">
237
+ <label className="label cursor-pointer">
238
+ {name.replace(/_/g, " ")}
239
+ <input
240
+ className="checkbox"
241
+ type="checkbox"
242
+ checked={value}
243
+ onChange={(evt) => onChange(evt.currentTarget.checked)}
244
+ />
245
+ </label>
246
+ </div>
247
+ ) : meta?.type?.type === MODEL_TRAINING_INPUT_MAPPING ? (
248
+ <label className="param">
249
+ <ParamName name={name} />
250
+ <ModelMapping value={value} data={data} variant="training input" onChange={onChange} />
251
+ </label>
252
+ ) : meta?.type?.type === MODEL_INFERENCE_INPUT_MAPPING ? (
253
+ <label className="param">
254
+ <ParamName name={name} />
255
+ <ModelMapping value={value} data={data} variant="inference input" onChange={onChange} />
256
+ </label>
257
+ ) : meta?.type?.type === MODEL_OUTPUT_MAPPING ? (
258
+ <label className="param">
259
+ <ParamName name={name} />
260
+ <ModelMapping value={value} data={data} variant="output" onChange={onChange} />
261
+ </label>
262
+ ) : (
263
  <label className="param">
264
+ <ParamName name={name} />
265
+ <Input value={value} onChange={onChange} />
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
266
  </label>
267
  );
268
  }
lynxkite-app/web/src/workspace/nodes/NodeWithParams.tsx CHANGED
@@ -3,14 +3,11 @@ import React from "react";
3
  // @ts-ignore
4
  import Triangle from "~icons/tabler/triangle-inverted-filled.jsx";
5
  import LynxKiteNode from "./LynxKiteNode";
6
- import NodeGroupParameter from "./NodeGroupParameter";
7
- import NodeParameter from "./NodeParameter";
8
-
9
- export type UpdateOptions = { delay?: number };
10
 
11
  export function NodeWithParams(props: any) {
12
  const reactFlow = useReactFlow();
13
- const metaParams = props.data.meta?.params;
14
  const [collapsed, setCollapsed] = React.useState(props.collapsed);
15
 
16
  function setParam(name: string, newValue: any, opts: UpdateOptions) {
@@ -21,49 +18,24 @@ export function NodeWithParams(props: any) {
21
  }));
22
  }
23
 
24
- function deleteParam(name: string, opts: UpdateOptions) {
25
- if (props.data.params[name] === undefined) {
26
- return;
27
- }
28
- delete props.data.params[name];
29
- reactFlow.updateNodeData(props.id, {
30
- params: { ...props.data.params },
31
- __execution_delay: opts.delay || 0,
32
- });
33
- }
34
- const params = props.data?.params ? Object.entries(props.data.params) : [];
35
-
36
  return (
37
  <>
38
- {props.collapsed && params.length > 0 && (
39
  <div className="params-expander" onClick={() => setCollapsed(!collapsed)}>
40
  <Triangle className={`flippy ${collapsed ? "flippy-90" : ""}`} />
41
  </div>
42
  )}
43
  {!collapsed &&
44
- params.map(([name, value]) =>
45
- metaParams?.[name]?.type === "group" ? (
46
- <NodeGroupParameter
47
- key={name}
48
- value={value}
49
- data={props.data}
50
- meta={metaParams?.[name]}
51
- setParam={(name: string, value: any, opts?: UpdateOptions) =>
52
- setParam(name, value, opts || {})
53
- }
54
- deleteParam={(name: string, opts?: UpdateOptions) => deleteParam(name, opts || {})}
55
- />
56
- ) : (
57
- <NodeParameter
58
- name={name}
59
- key={name}
60
- value={value}
61
- data={props.data}
62
- meta={metaParams?.[name]}
63
- onChange={(value: any, opts?: UpdateOptions) => setParam(name, value, opts || {})}
64
- />
65
- ),
66
- )}
67
  {props.children}
68
  </>
69
  );
 
3
  // @ts-ignore
4
  import Triangle from "~icons/tabler/triangle-inverted-filled.jsx";
5
  import LynxKiteNode from "./LynxKiteNode";
6
+ import NodeParameter, { type UpdateOptions } from "./NodeParameter";
 
 
 
7
 
8
  export function NodeWithParams(props: any) {
9
  const reactFlow = useReactFlow();
10
+ const metaParams = props.data.meta?.value?.params ?? [];
11
  const [collapsed, setCollapsed] = React.useState(props.collapsed);
12
 
13
  function setParam(name: string, newValue: any, opts: UpdateOptions) {
 
18
  }));
19
  }
20
 
 
 
 
 
 
 
 
 
 
 
 
 
21
  return (
22
  <>
23
+ {props.collapsed && metaParams.length > 0 && (
24
  <div className="params-expander" onClick={() => setCollapsed(!collapsed)}>
25
  <Triangle className={`flippy ${collapsed ? "flippy-90" : ""}`} />
26
  </div>
27
  )}
28
  {!collapsed &&
29
+ metaParams.map((meta: any) => (
30
+ <NodeParameter
31
+ name={meta.name}
32
+ key={meta.name}
33
+ value={props.data.params[meta.name]}
34
+ data={props.data}
35
+ meta={meta}
36
+ setParam={setParam}
37
+ />
38
+ ))}
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  {props.children}
40
  </>
41
  );
lynxkite-core/src/lynxkite/core/executors/one_by_one.py CHANGED
@@ -46,7 +46,7 @@ def register(env: str, cache: bool = True):
46
  ops.EXECUTORS[env] = lambda ws: execute(ws, ops.CATALOGS[env], cache=cache)
47
 
48
 
49
- def get_stages(ws, catalog):
50
  """Inputs on top/bottom are batch inputs. We decompose the graph into a DAG of components along these edges."""
51
  nodes = {n.id: n for n in ws.nodes}
52
  batch_inputs = {}
@@ -57,8 +57,7 @@ def get_stages(ws, catalog):
57
  inputs.setdefault(edge.target, []).append(edge.source)
58
  node = nodes[edge.target]
59
  op = catalog[node.data.title]
60
- i = op.inputs[edge.targetHandle]
61
- if i.position in "top or bottom":
62
  batch_inputs.setdefault(edge.target, []).append(edge.source)
63
  stages = []
64
  for bt, bss in batch_inputs.items():
@@ -95,7 +94,7 @@ async def await_if_needed(obj):
95
  return obj
96
 
97
 
98
- async def execute(ws: workspace.Workspace, catalog, cache=None):
99
  nodes = {n.id: n for n in ws.nodes}
100
  contexts = {n.id: Context(node=n) for n in ws.nodes}
101
  edges = {n.id: [] for n in ws.nodes}
@@ -110,7 +109,7 @@ async def execute(ws: workspace.Workspace, catalog, cache=None):
110
  continue
111
  node.publish_error(None)
112
  # Start tasks for nodes that have no non-batch inputs.
113
- if all([i.position in "top or bottom" for i in op.inputs.values()]):
114
  tasks[node.id] = [NO_INPUT]
115
  batch_inputs = {}
116
  # Run the rest until we run out of tasks.
@@ -132,8 +131,8 @@ async def execute(ws: workspace.Workspace, catalog, cache=None):
132
  for task in ts:
133
  try:
134
  inputs = []
135
- for i in op.inputs.values():
136
- if i.position in "top or bottom":
137
  assert (n, i.name) in batch_inputs, f"{i.name} is missing"
138
  inputs.append(batch_inputs[(n, i.name)])
139
  else:
@@ -165,8 +164,7 @@ async def execute(ws: workspace.Workspace, catalog, cache=None):
165
  for edge in edges[node.id]:
166
  t = nodes[edge.target]
167
  op = catalog[t.data.title]
168
- i = op.inputs[edge.targetHandle]
169
- if i.position in "top or bottom":
170
  batch_inputs.setdefault((edge.target, edge.targetHandle), []).extend(
171
  results
172
  )
 
46
  ops.EXECUTORS[env] = lambda ws: execute(ws, ops.CATALOGS[env], cache=cache)
47
 
48
 
49
+ def get_stages(ws, catalog: ops.Catalog):
50
  """Inputs on top/bottom are batch inputs. We decompose the graph into a DAG of components along these edges."""
51
  nodes = {n.id: n for n in ws.nodes}
52
  batch_inputs = {}
 
57
  inputs.setdefault(edge.target, []).append(edge.source)
58
  node = nodes[edge.target]
59
  op = catalog[node.data.title]
60
+ if op.get_input(edge.targetHandle).position.is_vertical():
 
61
  batch_inputs.setdefault(edge.target, []).append(edge.source)
62
  stages = []
63
  for bt, bss in batch_inputs.items():
 
94
  return obj
95
 
96
 
97
+ async def execute(ws: workspace.Workspace, catalog: ops.Catalog, cache=None):
98
  nodes = {n.id: n for n in ws.nodes}
99
  contexts = {n.id: Context(node=n) for n in ws.nodes}
100
  edges = {n.id: [] for n in ws.nodes}
 
109
  continue
110
  node.publish_error(None)
111
  # Start tasks for nodes that have no non-batch inputs.
112
+ if all([i.position.is_vertical() for i in op.inputs]):
113
  tasks[node.id] = [NO_INPUT]
114
  batch_inputs = {}
115
  # Run the rest until we run out of tasks.
 
131
  for task in ts:
132
  try:
133
  inputs = []
134
+ for i in op.inputs:
135
+ if i.position.is_vertical():
136
  assert (n, i.name) in batch_inputs, f"{i.name} is missing"
137
  inputs.append(batch_inputs[(n, i.name)])
138
  else:
 
164
  for edge in edges[node.id]:
165
  t = nodes[edge.target]
166
  op = catalog[t.data.title]
167
+ if op.get_input(edge.targetHandle).position.is_vertical():
 
168
  batch_inputs.setdefault((edge.target, edge.targetHandle), []).extend(
169
  results
170
  )
lynxkite-core/src/lynxkite/core/executors/simple.py CHANGED
@@ -37,7 +37,7 @@ async def execute(ws: workspace.Workspace, catalog: ops.Catalog):
37
  try:
38
  inputs = []
39
  missing = []
40
- for i in op.inputs.values():
41
  edges = in_edges[node_id]
42
  if i.name in edges and edges[i.name] in outputs:
43
  inputs.append(outputs[edges[i.name]])
@@ -50,11 +50,11 @@ async def execute(ws: workspace.Workspace, catalog: ops.Catalog):
50
  result.output = await await_if_needed(result.output)
51
  result.display = await await_if_needed(result.display)
52
  if len(op.outputs) == 1:
53
- [output] = list(op.outputs.values())
54
  outputs[node_id, output.name] = result.output
55
  elif len(op.outputs) > 1:
56
  assert type(result.output) is dict, "An op with multiple outputs must return a dict"
57
- for output in op.outputs.values():
58
  outputs[node_id, output.name] = result.output[output.name]
59
  node.publish_result(result)
60
  except Exception as e:
 
37
  try:
38
  inputs = []
39
  missing = []
40
+ for i in op.inputs:
41
  edges = in_edges[node_id]
42
  if i.name in edges and edges[i.name] in outputs:
43
  inputs.append(outputs[edges[i.name]])
 
50
  result.output = await await_if_needed(result.output)
51
  result.display = await await_if_needed(result.display)
52
  if len(op.outputs) == 1:
53
+ [output] = op.outputs
54
  outputs[node_id, output.name] = result.output
55
  elif len(op.outputs) > 1:
56
  assert type(result.output) is dict, "An op with multiple outputs must return a dict"
57
+ for output in op.outputs:
58
  outputs[node_id, output.name] = result.output[output.name]
59
  node.publish_result(result)
60
  except Exception as e:
lynxkite-core/src/lynxkite/core/ops.py CHANGED
@@ -95,17 +95,28 @@ class ParameterGroup(BaseConfig):
95
  type: str = "group"
96
 
97
 
 
 
 
 
 
 
 
 
 
 
 
 
98
  class Input(BaseConfig):
99
  name: str
100
  type: Type
101
- # TODO: Make position an enum with the possible values.
102
- position: str = "left"
103
 
104
 
105
  class Output(BaseConfig):
106
  name: str
107
  type: Type
108
- position: str = "right"
109
 
110
 
111
  @dataclass
@@ -163,11 +174,12 @@ def _param_to_type(name, value, type):
163
  class Op(BaseConfig):
164
  func: typing.Callable = pydantic.Field(exclude=True)
165
  name: str
166
- params: dict[str, Parameter | ParameterGroup]
167
- inputs: dict[str, Input]
168
- outputs: dict[str, Output]
169
  # TODO: Make type an enum with the possible values.
170
  type: str = "basic" # The UI to use for this operation.
 
171
 
172
  def __call__(self, *inputs, **params):
173
  # Convert parameters.
@@ -188,18 +200,39 @@ class Op(BaseConfig):
188
  res.display = res.output
189
  return res
190
 
191
- def convert_params(self, params):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
192
  """Returns the parameters converted to the expected type."""
193
- res = {}
194
- for p in params:
195
- if p in self.params:
196
- res[p] = _param_to_type(p, params[p], self.params[p].type)
197
- else:
198
- res[p] = params[p]
199
  return res
200
 
201
 
202
- def op(env: str, name: str, *, view="basic", outputs=None, params=None, slow=False):
 
 
 
 
 
 
 
 
 
203
  """Decorator for defining an operation."""
204
 
205
  def decorator(func):
@@ -208,21 +241,21 @@ def op(env: str, name: str, *, view="basic", outputs=None, params=None, slow=Fal
208
  func = mem.cache(func)
209
  func = _global_slow(func)
210
  # Positional arguments are inputs.
211
- inputs = {
212
- name: Input(name=name, type=param.annotation)
213
  for name, param in sig.parameters.items()
214
  if param.kind not in (param.KEYWORD_ONLY, param.VAR_KEYWORD)
215
- }
216
- _params = {}
217
  for n, param in sig.parameters.items():
218
  if param.kind == param.KEYWORD_ONLY and not n.startswith("_"):
219
- _params[n] = Parameter.basic(n, param.default, param.annotation)
220
  if params:
221
- _params.update(params)
222
  if outputs:
223
- _outputs = {name: Output(name=name, type=None) for name in outputs}
224
  else:
225
- _outputs = {"output": Output(name="output", type=None)} if view == "basic" else {}
226
  _view = view
227
  if view == "matplotlib":
228
  _view = "image"
@@ -234,6 +267,7 @@ def op(env: str, name: str, *, view="basic", outputs=None, params=None, slow=Fal
234
  inputs=inputs,
235
  outputs=_outputs,
236
  type=_view,
 
237
  )
238
  CATALOGS.setdefault(env, {})
239
  CATALOGS[env][name] = op
@@ -244,6 +278,7 @@ def op(env: str, name: str, *, view="basic", outputs=None, params=None, slow=Fal
244
 
245
 
246
  def matplotlib_to_image(func):
 
247
  import matplotlib.pyplot as plt
248
  import base64
249
  import io
@@ -267,7 +302,7 @@ def input_position(**kwargs):
267
  def decorator(func):
268
  op = func.__op__
269
  for k, v in kwargs.items():
270
- op.inputs[k].position = v
271
  return func
272
 
273
  return decorator
@@ -279,7 +314,7 @@ def output_position(**kwargs):
279
  def decorator(func):
280
  op = func.__op__
281
  for k, v in kwargs.items():
282
- op.outputs[k].position = v
283
  return func
284
 
285
  return decorator
@@ -291,18 +326,15 @@ def no_op(*args, **kwargs):
291
  return None
292
 
293
 
294
- def register_passive_op(env: str, name: str, inputs=[], outputs=["output"], params=[]):
295
  """A passive operation has no associated code."""
296
  op = Op(
297
  func=no_op,
298
  name=name,
299
- params={p.name: p for p in params},
300
- inputs=dict(
301
- (i, Input(name=i, type=None)) if isinstance(i, str) else (i.name, i) for i in inputs
302
- ),
303
- outputs=dict(
304
- (o, Output(name=o, type=None)) if isinstance(o, str) else (o.name, o) for o in outputs
305
- ),
306
  )
307
  CATALOGS.setdefault(env, {})
308
  CATALOGS[env][name] = op
 
95
  type: str = "group"
96
 
97
 
98
+ class Position(str, enum.Enum):
99
+ """Defines the position of an input or output in the UI."""
100
+
101
+ LEFT = "left"
102
+ RIGHT = "right"
103
+ TOP = "top"
104
+ BOTTOM = "bottom"
105
+
106
+ def is_vertical(self):
107
+ return self in (self.TOP, self.BOTTOM)
108
+
109
+
110
  class Input(BaseConfig):
111
  name: str
112
  type: Type
113
+ position: Position = Position.LEFT
 
114
 
115
 
116
  class Output(BaseConfig):
117
  name: str
118
  type: Type
119
+ position: Position = Position.RIGHT
120
 
121
 
122
  @dataclass
 
174
  class Op(BaseConfig):
175
  func: typing.Callable = pydantic.Field(exclude=True)
176
  name: str
177
+ params: list[Parameter | ParameterGroup]
178
+ inputs: list[Input]
179
+ outputs: list[Output]
180
  # TODO: Make type an enum with the possible values.
181
  type: str = "basic" # The UI to use for this operation.
182
+ color: str = "orange" # The color of the operation in the UI.
183
 
184
  def __call__(self, *inputs, **params):
185
  # Convert parameters.
 
200
  res.display = res.output
201
  return res
202
 
203
+ def get_input(self, name: str):
204
+ """Returns the input with the given name."""
205
+ for i in self.inputs:
206
+ if i.name == name:
207
+ return i
208
+ raise ValueError(f"Input {name} not found in operation {self.name}.")
209
+
210
+ def get_output(self, name: str):
211
+ """Returns the output with the given name."""
212
+ for o in self.outputs:
213
+ if o.name == name:
214
+ return o
215
+ raise ValueError(f"Output {name} not found in operation {self.name}.")
216
+
217
+ def convert_params(self, params: dict[str, typing.Any]):
218
  """Returns the parameters converted to the expected type."""
219
+ res = dict(params)
220
+ for p in self.params:
221
+ if p.name in params:
222
+ res[p.name] = _param_to_type(p.name, params[p.name], p.type)
 
 
223
  return res
224
 
225
 
226
+ def op(
227
+ env: str,
228
+ name: str,
229
+ *,
230
+ view="basic",
231
+ outputs=None,
232
+ params=None,
233
+ slow=False,
234
+ color=None,
235
+ ):
236
  """Decorator for defining an operation."""
237
 
238
  def decorator(func):
 
241
  func = mem.cache(func)
242
  func = _global_slow(func)
243
  # Positional arguments are inputs.
244
+ inputs = [
245
+ Input(name=name, type=param.annotation)
246
  for name, param in sig.parameters.items()
247
  if param.kind not in (param.KEYWORD_ONLY, param.VAR_KEYWORD)
248
+ ]
249
+ _params = []
250
  for n, param in sig.parameters.items():
251
  if param.kind == param.KEYWORD_ONLY and not n.startswith("_"):
252
+ _params.append(Parameter.basic(n, param.default, param.annotation))
253
  if params:
254
+ _params.extend(params)
255
  if outputs:
256
+ _outputs = [Output(name=name, type=None) for name in outputs]
257
  else:
258
+ _outputs = [Output(name="output", type=None)] if view == "basic" else []
259
  _view = view
260
  if view == "matplotlib":
261
  _view = "image"
 
267
  inputs=inputs,
268
  outputs=_outputs,
269
  type=_view,
270
+ color=color or "orange",
271
  )
272
  CATALOGS.setdefault(env, {})
273
  CATALOGS[env][name] = op
 
278
 
279
 
280
  def matplotlib_to_image(func):
281
+ """Decorator for converting a matplotlib figure to an image."""
282
  import matplotlib.pyplot as plt
283
  import base64
284
  import io
 
302
  def decorator(func):
303
  op = func.__op__
304
  for k, v in kwargs.items():
305
+ op.get_input(k).position = Position(v)
306
  return func
307
 
308
  return decorator
 
314
  def decorator(func):
315
  op = func.__op__
316
  for k, v in kwargs.items():
317
+ op.get_output(k).position = Position(v)
318
  return func
319
 
320
  return decorator
 
326
  return None
327
 
328
 
329
+ def register_passive_op(env: str, name: str, inputs=[], outputs=["output"], params=[], **kwargs):
330
  """A passive operation has no associated code."""
331
  op = Op(
332
  func=no_op,
333
  name=name,
334
+ params=params,
335
+ inputs=[Input(name=i, type=None) if isinstance(i, str) else i for i in inputs],
336
+ outputs=[Output(name=o, type=None) if isinstance(o, str) else o for o in outputs],
337
+ **kwargs,
 
 
 
338
  )
339
  CATALOGS.setdefault(env, {})
340
  CATALOGS[env][name] = op
lynxkite-core/src/lynxkite/core/workspace.py CHANGED
@@ -107,87 +107,94 @@ class Workspace(BaseConfig):
107
  for n in self.nodes:
108
  if n.id in _ops:
109
  for h in _ops[n.id].inputs:
110
- valid_targets.add((n.id, h))
111
  for h in _ops[n.id].outputs:
112
- valid_sources.add((n.id, h))
113
- edges = [
114
  edge
115
  for edge in self.edges
116
  if (edge.source, edge.sourceHandle) in valid_sources
117
  and (edge.target, edge.targetHandle) in valid_targets
118
  ]
119
- return self.model_copy(update={"edges": edges})
120
 
121
-
122
- async def execute(ws: Workspace):
123
- if ws.env in ops.EXECUTORS:
124
- await ops.EXECUTORS[ws.env](ws)
125
-
126
-
127
- def save(ws: Workspace, path: str):
128
- """Persist a workspace to a local file in JSON format."""
129
- j = ws.model_dump()
130
- j = json.dumps(j, indent=2, sort_keys=True) + "\n"
131
- dirname, basename = os.path.split(path)
132
- if dirname:
133
- os.makedirs(dirname, exist_ok=True)
134
- # Create temp file in the same directory to make sure it's on the same filesystem.
135
- with tempfile.NamedTemporaryFile(
136
- "w", encoding="utf-8", prefix=f".{basename}.", dir=dirname, delete=False
137
- ) as f:
138
- temp_name = f.name
139
- f.write(j)
140
- os.replace(temp_name, path)
141
-
142
-
143
- def load(path: str) -> Workspace:
144
- """Load a workspace from a file.
145
-
146
- After loading the workspace, the metadata of the workspace is updated.
147
-
148
- Args:
149
- path (str): The path to the file to load the workspace from.
150
-
151
- Returns:
152
- Workspace: The loaded workspace object, with updated metadata.
153
- """
154
- with open(path, encoding="utf-8") as f:
155
- j = f.read()
156
- ws = Workspace.model_validate_json(j)
157
- # Metadata is added after loading. This way code changes take effect on old boxes too.
158
- _update_metadata(ws)
159
- return ws
160
-
161
-
162
- def _update_metadata(ws: Workspace) -> Workspace:
163
- """Update the metadata of the given workspace object.
164
-
165
- The metadata is the information about the operations that the nodes in the workspace represent,
166
- like the parameters and their possible values.
167
- This information comes from the catalog of operations for the environment of the workspace.
168
-
169
- Args:
170
- ws: The workspace object to update.
171
-
172
- Returns:
173
- Workspace: The updated workspace object.
174
- """
175
- catalog = ops.CATALOGS.get(ws.env, {})
176
- nodes = {node.id: node for node in ws.nodes}
177
- done = set()
178
- while len(done) < len(nodes):
179
- for node in ws.nodes:
180
- if node.id in done:
181
- # TODO: Can nodes with the same ID reference different operations?
182
- continue
183
  data = node.data
184
  op = catalog.get(data.title)
185
  if op:
186
- data.meta = op
187
- node.type = op.type
 
 
 
 
 
 
 
 
188
  if data.error == "Unknown operation.":
189
  data.error = None
 
 
190
  else:
191
  data.error = "Unknown operation."
192
- done.add(node.id)
193
- return ws
 
 
 
 
 
 
 
 
 
 
107
  for n in self.nodes:
108
  if n.id in _ops:
109
  for h in _ops[n.id].inputs:
110
+ valid_targets.add((n.id, h.name))
111
  for h in _ops[n.id].outputs:
112
+ valid_sources.add((n.id, h.name))
113
+ self.edges = [
114
  edge
115
  for edge in self.edges
116
  if (edge.source, edge.sourceHandle) in valid_sources
117
  and (edge.target, edge.targetHandle) in valid_targets
118
  ]
 
119
 
120
+ def has_executor(self):
121
+ return self.env in ops.EXECUTORS
122
+
123
+ async def execute(self):
124
+ await ops.EXECUTORS[self.env](self)
125
+
126
+ def save(self, path: str):
127
+ """Persist the workspace to a local file in JSON format."""
128
+ j = self.model_dump()
129
+ j = json.dumps(j, indent=2, sort_keys=True) + "\n"
130
+ dirname, basename = os.path.split(path)
131
+ if dirname:
132
+ os.makedirs(dirname, exist_ok=True)
133
+ # Create temp file in the same directory to make sure it's on the same filesystem.
134
+ with tempfile.NamedTemporaryFile(
135
+ "w", encoding="utf-8", prefix=f".{basename}.", dir=dirname, delete=False
136
+ ) as f:
137
+ temp_name = f.name
138
+ f.write(j)
139
+ os.replace(temp_name, path)
140
+
141
+ @staticmethod
142
+ def load(path: str) -> "Workspace":
143
+ """Load a workspace from a file.
144
+
145
+ After loading the workspace, the metadata of the workspace is updated.
146
+
147
+ Args:
148
+ path (str): The path to the file to load the workspace from.
149
+
150
+ Returns:
151
+ Workspace: The loaded workspace object, with updated metadata.
152
+ """
153
+ with open(path, encoding="utf-8") as f:
154
+ j = f.read()
155
+ ws = Workspace.model_validate_json(j)
156
+ # Metadata is added after loading. This way code changes take effect on old boxes too.
157
+ ws.update_metadata()
158
+ return ws
159
+
160
+ def update_metadata(self):
161
+ """Update the metadata of this workspace.
162
+
163
+ The metadata is the information about the operations that the nodes in the workspace represent,
164
+ like the parameters and their possible values.
165
+ This information comes from the catalog of operations for the environment of the workspace.
166
+ """
167
+ if self.env not in ops.CATALOGS:
168
+ return self
169
+ catalog = ops.CATALOGS[self.env]
170
+ for node in self.nodes:
 
 
 
 
 
 
 
 
 
 
 
171
  data = node.data
172
  op = catalog.get(data.title)
173
  if op:
174
+ if getattr(data, "meta", None) != op:
175
+ data.meta = op
176
+ # If the node is connected to a CRDT, update that too.
177
+ if hasattr(node, "_crdt"):
178
+ node._crdt["data"]["meta"] = op.model_dump()
179
+ print("set metadata to", op)
180
+ if node.type != op.type:
181
+ node.type = op.type
182
+ if hasattr(node, "_crdt"):
183
+ node._crdt["type"] = op.type
184
  if data.error == "Unknown operation.":
185
  data.error = None
186
+ if hasattr(node, "_crdt"):
187
+ node._crdt["data"]["error"] = None
188
  else:
189
  data.error = "Unknown operation."
190
+ if hasattr(node, "_crdt"):
191
+ node._crdt["data"]["meta"] = {}
192
+ node._crdt["data"]["error"] = "Unknown operation."
193
+
194
+ def connect_crdt(self, ws_crdt: pycrdt.Map):
195
+ self._crdt = ws_crdt
196
+ with ws_crdt.doc.transaction():
197
+ for nc, np in zip(ws_crdt["nodes"], self.nodes):
198
+ if "data" not in nc:
199
+ nc["data"] = pycrdt.Map()
200
+ np._crdt = nc
lynxkite-core/tests/test_ops.py CHANGED
@@ -9,12 +9,12 @@ def test_op_decorator_no_params_no_types_default_positions():
9
  return a + b
10
 
11
  assert add.__op__.name == "add"
12
- assert add.__op__.params == {}
13
- assert add.__op__.inputs == {
14
- "a": ops.Input(name="a", type=inspect._empty, position="left"),
15
- "b": ops.Input(name="b", type=inspect._empty, position="left"),
16
- }
17
- assert add.__op__.outputs == {"result": ops.Output(name="result", type=None, position="right")}
18
  assert add.__op__.type == "basic"
19
  assert ops.CATALOGS["test"]["add"] == add.__op__
20
 
@@ -27,12 +27,12 @@ def test_op_decorator_custom_positions():
27
  return a + b
28
 
29
  assert add.__op__.name == "add"
30
- assert add.__op__.params == {}
31
- assert add.__op__.inputs == {
32
- "a": ops.Input(name="a", type=inspect._empty, position="right"),
33
- "b": ops.Input(name="b", type=inspect._empty, position="top"),
34
- }
35
- assert add.__op__.outputs == {"result": ops.Output(name="result", type=None, position="bottom")}
36
  assert add.__op__.type == "basic"
37
  assert ops.CATALOGS["test"]["add"] == add.__op__
38
 
@@ -43,22 +43,18 @@ def test_op_decorator_with_params_and_types_():
43
  return a * b
44
 
45
  assert multiply.__op__.name == "multiply"
46
- assert multiply.__op__.params == {
47
- "param": ops.Parameter(name="param", default="param", type=str)
48
- }
49
- assert multiply.__op__.inputs == {
50
- "a": ops.Input(name="a", type=int, position="left"),
51
- "b": ops.Input(name="b", type=float, position="left"),
52
- }
53
- assert multiply.__op__.outputs == {
54
- "result": ops.Output(name="result", type=None, position="right")
55
- }
56
  assert multiply.__op__.type == "basic"
57
  assert ops.CATALOGS["test"]["multiply"] == multiply.__op__
58
 
59
 
60
  def test_op_decorator_with_complex_types():
61
- class Color(enum.Enum):
62
  RED = 1
63
  GREEN = 2
64
  BLUE = 3
@@ -68,16 +64,14 @@ def test_op_decorator_with_complex_types():
68
  return color.name
69
 
70
  assert complex_op.__op__.name == "color_op"
71
- assert complex_op.__op__.params == {}
72
- assert complex_op.__op__.inputs == {
73
- "color": ops.Input(name="color", type=Color, position="left"),
74
- "color_list": ops.Input(name="color_list", type=list[Color], position="left"),
75
- "color_dict": ops.Input(name="color_dict", type=dict[str, Color], position="left"),
76
- }
77
  assert complex_op.__op__.type == "basic"
78
- assert complex_op.__op__.outputs == {
79
- "result": ops.Output(name="result", type=None, position="right")
80
- }
81
  assert ops.CATALOGS["test"]["color_op"] == complex_op.__op__
82
 
83
 
 
9
  return a + b
10
 
11
  assert add.__op__.name == "add"
12
+ assert add.__op__.params == []
13
+ assert add.__op__.inputs == [
14
+ ops.Input(name="a", type=inspect._empty, position="left"),
15
+ ops.Input(name="b", type=inspect._empty, position="left"),
16
+ ]
17
+ assert add.__op__.outputs == [ops.Output(name="result", type=None, position="right")]
18
  assert add.__op__.type == "basic"
19
  assert ops.CATALOGS["test"]["add"] == add.__op__
20
 
 
27
  return a + b
28
 
29
  assert add.__op__.name == "add"
30
+ assert add.__op__.params == []
31
+ assert add.__op__.inputs == [
32
+ ops.Input(name="a", type=inspect._empty, position="right"),
33
+ ops.Input(name="b", type=inspect._empty, position="top"),
34
+ ]
35
+ assert add.__op__.outputs == [ops.Output(name="result", type=None, position="bottom")]
36
  assert add.__op__.type == "basic"
37
  assert ops.CATALOGS["test"]["add"] == add.__op__
38
 
 
43
  return a * b
44
 
45
  assert multiply.__op__.name == "multiply"
46
+ assert multiply.__op__.params == [ops.Parameter(name="param", default="param", type=str)]
47
+ assert multiply.__op__.inputs == [
48
+ ops.Input(name="a", type=int, position="left"),
49
+ ops.Input(name="b", type=float, position="left"),
50
+ ]
51
+ assert multiply.__op__.outputs == [ops.Output(name="result", type=None, position="right")]
 
 
 
 
52
  assert multiply.__op__.type == "basic"
53
  assert ops.CATALOGS["test"]["multiply"] == multiply.__op__
54
 
55
 
56
  def test_op_decorator_with_complex_types():
57
+ class Color(int, enum.Enum):
58
  RED = 1
59
  GREEN = 2
60
  BLUE = 3
 
64
  return color.name
65
 
66
  assert complex_op.__op__.name == "color_op"
67
+ assert complex_op.__op__.params == []
68
+ assert complex_op.__op__.inputs == [
69
+ ops.Input(name="color", type=Color, position="left"),
70
+ ops.Input(name="color_list", type=list[Color], position="left"),
71
+ ops.Input(name="color_dict", type=dict[str, Color], position="left"),
72
+ ]
73
  assert complex_op.__op__.type == "basic"
74
+ assert complex_op.__op__.outputs == [ops.Output(name="result", type=None, position="right")]
 
 
75
  assert ops.CATALOGS["test"]["color_op"] == complex_op.__op__
76
 
77
 
lynxkite-core/tests/test_workspace.py CHANGED
@@ -34,9 +34,9 @@ def test_save_load():
34
  path = os.path.join(tempfile.gettempdir(), "test_workspace.json")
35
 
36
  try:
37
- workspace.save(ws, path)
38
  assert os.path.exists(path)
39
- loaded_ws = workspace.load(path)
40
  assert loaded_ws.env == ws.env
41
  assert len(loaded_ws.nodes) == len(ws.nodes)
42
  assert len(loaded_ws.edges) == len(ws.edges)
@@ -88,14 +88,14 @@ def test_update_metadata():
88
  position=workspace.Position(x=0, y=0),
89
  )
90
  )
91
- updated_ws = workspace._update_metadata(ws)
92
- assert updated_ws.nodes[0].data.meta.name == "Test Operation"
93
- assert updated_ws.nodes[0].data.error is None
94
- assert not hasattr(updated_ws.nodes[1].data, "meta")
95
- assert updated_ws.nodes[1].data.error == "Unknown operation."
96
 
97
 
98
  def test_update_metadata_with_empty_workspace():
99
  ws = workspace.Workspace(env="test")
100
- updated_ws = workspace._update_metadata(ws)
101
- assert len(updated_ws.nodes) == 0
 
34
  path = os.path.join(tempfile.gettempdir(), "test_workspace.json")
35
 
36
  try:
37
+ ws.save(path)
38
  assert os.path.exists(path)
39
+ loaded_ws = workspace.Workspace.load(path)
40
  assert loaded_ws.env == ws.env
41
  assert len(loaded_ws.nodes) == len(ws.nodes)
42
  assert len(loaded_ws.edges) == len(ws.edges)
 
88
  position=workspace.Position(x=0, y=0),
89
  )
90
  )
91
+ ws.update_metadata()
92
+ assert ws.nodes[0].data.meta.name == "Test Operation"
93
+ assert ws.nodes[0].data.error is None
94
+ assert not hasattr(ws.nodes[1].data, "meta")
95
+ assert ws.nodes[1].data.error == "Unknown operation."
96
 
97
 
98
  def test_update_metadata_with_empty_workspace():
99
  ws = workspace.Workspace(env="test")
100
+ ws.update_metadata()
101
+ assert len(ws.nodes) == 0
lynxkite-graph-analytics/pyproject.toml CHANGED
@@ -26,6 +26,7 @@ dev = [
26
  "pytest-asyncio>=0.26.0",
27
  ]
28
  gpu = [
 
29
  "nx-cugraph-cu12>=25.4.0",
30
  "polars[gpu]>=1.25.2",
31
  ]
 
26
  "pytest-asyncio>=0.26.0",
27
  ]
28
  gpu = [
29
+ "cuml-cu12>=25.2.1",
30
  "nx-cugraph-cu12>=25.4.0",
31
  "polars[gpu]>=1.25.2",
32
  ]
lynxkite-graph-analytics/src/lynxkite_graph_analytics/core.py CHANGED
@@ -150,7 +150,7 @@ def disambiguate_edges(ws: workspace.Workspace):
150
  for edge in reversed(ws.edges):
151
  dst_node = nodes[edge.target]
152
  op = catalog.get(dst_node.data.title)
153
- if op.inputs[edge.targetHandle].type == list[Bundle]:
154
  # Takes multiple bundles as an input. No need to disambiguate.
155
  continue
156
  if (edge.target, edge.targetHandle) in seen:
@@ -201,7 +201,7 @@ async def _execute_node(node, ws, catalog, outputs):
201
  # Convert inputs types to match operation signature.
202
  try:
203
  inputs = []
204
- for p in op.inputs.values():
205
  if p.name not in input_map:
206
  node.publish_error(f"Missing input: {p.name}")
207
  return
 
150
  for edge in reversed(ws.edges):
151
  dst_node = nodes[edge.target]
152
  op = catalog.get(dst_node.data.title)
153
+ if op.get_input(edge.targetHandle).type == list[Bundle]:
154
  # Takes multiple bundles as an input. No need to disambiguate.
155
  continue
156
  if (edge.target, edge.targetHandle) in seen:
 
201
  # Convert inputs types to match operation signature.
202
  try:
203
  inputs = []
204
+ for p in op.inputs:
205
  if p.name not in input_map:
206
  node.publish_error(f"Missing input: {p.name}")
207
  return
lynxkite-graph-analytics/src/lynxkite_graph_analytics/lynxkite_ops.py CHANGED
@@ -29,8 +29,8 @@ class FileFormat(enum.StrEnum):
29
 
30
  @op(
31
  "Import file",
32
- params={
33
- "file_format": ops.ParameterGroup(
34
  name="file_format",
35
  selector=ops.Parameter(name="file_format", type=FileFormat, default=FileFormat.csv),
36
  groups={
@@ -44,7 +44,7 @@ class FileFormat(enum.StrEnum):
44
  },
45
  default=FileFormat.csv,
46
  ),
47
- },
48
  )
49
  def import_file(
50
  *, file_path: str, table_name: str, file_format: FileFormat, **kwargs
@@ -60,17 +60,17 @@ def import_file(
60
  Bundle: Bundle with a single table with the contents of the file.
61
  """
62
  if file_format == "csv":
63
- names = kwargs.pop("columns", "<from file>")
64
  names = pd.api.extensions.no_default if names == "<from file>" else names.split(",")
65
- sep = kwargs.pop("separator", "<auto>")
66
  sep = pd.api.extensions.no_default if sep == "<auto>" else sep
67
- df = pd.read_csv(file_path, names=names, sep=sep, **kwargs)
68
  elif file_format == "json":
69
- df = pd.read_json(file_path, **kwargs)
70
  elif file_format == "parquet":
71
- df = pd.read_parquet(file_path, **kwargs)
72
  elif file_format == "excel":
73
- df = pd.read_excel(file_path, **kwargs)
74
  else:
75
  df = ValueError(f"Unsupported file format: {file_format}")
76
  return core.Bundle(dfs={table_name: df})
 
29
 
30
  @op(
31
  "Import file",
32
+ params=[
33
+ ops.ParameterGroup(
34
  name="file_format",
35
  selector=ops.Parameter(name="file_format", type=FileFormat, default=FileFormat.csv),
36
  groups={
 
44
  },
45
  default=FileFormat.csv,
46
  ),
47
+ ],
48
  )
49
  def import_file(
50
  *, file_path: str, table_name: str, file_format: FileFormat, **kwargs
 
60
  Bundle: Bundle with a single table with the contents of the file.
61
  """
62
  if file_format == "csv":
63
+ names = kwargs.get("columns", "<from file>")
64
  names = pd.api.extensions.no_default if names == "<from file>" else names.split(",")
65
+ sep = kwargs.get("separator", "<auto>")
66
  sep = pd.api.extensions.no_default if sep == "<auto>" else sep
67
+ df = pd.read_csv(file_path, names=names, sep=sep)
68
  elif file_format == "json":
69
+ df = pd.read_json(file_path)
70
  elif file_format == "parquet":
71
+ df = pd.read_parquet(file_path)
72
  elif file_format == "excel":
73
+ df = pd.read_excel(file_path, sheet_name=kwargs.get("sheet_name", "Sheet1"))
74
  else:
75
  df = ValueError(f"Unsupported file format: {file_format}")
76
  return core.Bundle(dfs={table_name: df})
lynxkite-graph-analytics/src/lynxkite_graph_analytics/ml_ops.py CHANGED
@@ -8,7 +8,6 @@ from lynxkite.core import workspace
8
  from .pytorch import pytorch_core
9
  from lynxkite.core import ops
10
  from tqdm import tqdm
11
- import umap
12
  import joblib
13
  import pandas as pd
14
  import pathlib
@@ -23,7 +22,7 @@ def load_ws(model_workspace: str):
23
  path = cwd / model_workspace
24
  assert path.is_relative_to(cwd)
25
  assert path.exists(), f"Workspace {path} does not exist"
26
- ws = workspace.load(path)
27
  return ws
28
 
29
 
@@ -149,7 +148,7 @@ VIRIDIS = [
149
  ]
150
 
151
 
152
- class UMAPMetric(enum.Enum):
153
  l1 = "l1"
154
  cityblock = "cityblock"
155
  taxicab = "taxicab"
@@ -178,15 +177,19 @@ def view_vectors(
178
  min_dist: float = 0.1,
179
  metric: UMAPMetric = UMAPMetric.euclidean,
180
  ):
 
 
 
 
181
  vec = np.stack(bundle.dfs[table_name][vector_column].to_numpy())
182
- _umap = functools.partial(
183
- umap.UMAP,
184
  n_neighbors=n_neighbors,
185
  min_dist=min_dist,
186
  metric=metric.value,
187
  )
188
- proj = _umap(n_components=2).fit_transform(vec)
189
- color = _umap(n_components=1).fit_transform(vec)
190
  data = [[*p.tolist(), "", c.item()] for p, c in zip(proj, color)]
191
  if label_column:
192
  for i, row in enumerate(bundle.dfs[table_name][label_column]):
 
8
  from .pytorch import pytorch_core
9
  from lynxkite.core import ops
10
  from tqdm import tqdm
 
11
  import joblib
12
  import pandas as pd
13
  import pathlib
 
22
  path = cwd / model_workspace
23
  assert path.is_relative_to(cwd)
24
  assert path.exists(), f"Workspace {path} does not exist"
25
+ ws = workspace.Workspace.load(path)
26
  return ws
27
 
28
 
 
148
  ]
149
 
150
 
151
+ class UMAPMetric(str, enum.Enum):
152
  l1 = "l1"
153
  cityblock = "cityblock"
154
  taxicab = "taxicab"
 
177
  min_dist: float = 0.1,
178
  metric: UMAPMetric = UMAPMetric.euclidean,
179
  ):
180
+ try:
181
+ from cuml.manifold.umap import UMAP
182
+ except ImportError:
183
+ from umap import UMAP
184
  vec = np.stack(bundle.dfs[table_name][vector_column].to_numpy())
185
+ umap = functools.partial(
186
+ UMAP,
187
  n_neighbors=n_neighbors,
188
  min_dist=min_dist,
189
  metric=metric.value,
190
  )
191
+ proj = umap(n_components=2).fit_transform(vec)
192
+ color = umap(n_components=1).fit_transform(vec)
193
  data = [[*p.tolist(), "", c.item()] for p, c in zip(proj, color)]
194
  if label_column:
195
  for i, row in enumerate(bundle.dfs[table_name][label_column]):
lynxkite-graph-analytics/src/lynxkite_graph_analytics/networkx_ops.py CHANGED
@@ -201,18 +201,19 @@ def _get_params(func) -> dict | None:
201
  types[k] = param.annotation
202
  if k in ["i", "j", "n"]:
203
  types[k] = int
204
- params = {}
205
  for name, param in sig.parameters.items():
206
  _type = types.get(name, _UNSUPPORTED)
207
  if _type is _UNSUPPORTED:
208
  raise UnsupportedParameterType(name)
209
  if _type is _SKIP or _type in [nx.Graph, nx.DiGraph]:
210
  continue
211
- params[name] = ops.Parameter.basic(
212
  name=name,
213
  default=str(param.default) if type(param.default) in [str, int, float] else None,
214
  type=_type,
215
  )
 
216
  return params
217
 
218
 
@@ -252,7 +253,7 @@ def register_networkx(env: str):
252
  params = _get_params(func)
253
  except UnsupportedParameterType:
254
  continue
255
- inputs = {k: ops.Input(name=k, type=nx.Graph) for k in func.graphs}
256
  nicename = "NX › " + name.replace("_", " ").title()
257
  for a, b in _REPLACEMENTS:
258
  nicename = nicename.replace(a, b)
@@ -261,7 +262,7 @@ def register_networkx(env: str):
261
  name=nicename,
262
  params=params,
263
  inputs=inputs,
264
- outputs={"output": ops.Output(name="output", type=nx.Graph)},
265
  type="basic",
266
  )
267
  cat[nicename] = op
 
201
  types[k] = param.annotation
202
  if k in ["i", "j", "n"]:
203
  types[k] = int
204
+ params = []
205
  for name, param in sig.parameters.items():
206
  _type = types.get(name, _UNSUPPORTED)
207
  if _type is _UNSUPPORTED:
208
  raise UnsupportedParameterType(name)
209
  if _type is _SKIP or _type in [nx.Graph, nx.DiGraph]:
210
  continue
211
+ p = ops.Parameter.basic(
212
  name=name,
213
  default=str(param.default) if type(param.default) in [str, int, float] else None,
214
  type=_type,
215
  )
216
+ params.append(p)
217
  return params
218
 
219
 
 
253
  params = _get_params(func)
254
  except UnsupportedParameterType:
255
  continue
256
+ inputs = [ops.Input(name=k, type=nx.Graph) for k in func.graphs]
257
  nicename = "NX › " + name.replace("_", " ").title()
258
  for a, b in _REPLACEMENTS:
259
  nicename = nicename.replace(a, b)
 
262
  name=nicename,
263
  params=params,
264
  inputs=inputs,
265
+ outputs=[ops.Output(name="output", type=nx.Graph)],
266
  type="basic",
267
  )
268
  cat[nicename] = op
lynxkite-graph-analytics/src/lynxkite_graph_analytics/pytorch/pytorch_core.py CHANGED
@@ -6,29 +6,30 @@ import graphlib
6
  import pydantic
7
  from lynxkite.core import ops, workspace
8
  import torch
9
- import torch_geometric.nn as pyg_nn
10
  import dataclasses
11
  from .. import core
12
 
13
  ENV = "PyTorch model"
14
 
15
 
16
- def op(name, **kwargs):
 
 
17
  _op = ops.op(ENV, name, **kwargs)
18
 
19
  def decorator(func):
20
  _op(func)
21
  op = func.__op__
22
- for p in op.inputs.values():
23
- p.position = "bottom"
24
- for p in op.outputs.values():
25
- p.position = "top"
26
  return func
27
 
28
  return decorator
29
 
30
 
31
- def reg(name, inputs=[], outputs=None, params=[]):
32
  if outputs is None:
33
  outputs = inputs
34
  return ops.register_passive_op(
@@ -37,6 +38,7 @@ def reg(name, inputs=[], outputs=None, params=[]):
37
  inputs=[ops.Input(name=name, position="bottom", type="tensor") for name in inputs],
38
  outputs=[ops.Output(name=name, position="top", type="tensor") for name in outputs],
39
  params=params,
 
40
  )
41
 
42
 
@@ -300,8 +302,8 @@ class ModelBuilder:
300
 
301
  def run_op(self, node_id: str, op: ops.Op, params) -> Layer:
302
  """Returns the layer produced by this op."""
303
- inputs = [_to_id(*i) for n in op.inputs for i in self.in_edges[node_id][n]]
304
- outputs = [_to_id(node_id, n) for n in op.outputs]
305
  if op.func == ops.no_op:
306
  module = torch.nn.Identity()
307
  else:
@@ -316,6 +318,8 @@ class ModelBuilder:
316
  return self.get_config()
317
 
318
  def get_config(self) -> ModelConfig:
 
 
319
  # Split the design into model and loss.
320
  model_nodes = set()
321
  for node_id in self.nodes:
 
6
  import pydantic
7
  from lynxkite.core import ops, workspace
8
  import torch
 
9
  import dataclasses
10
  from .. import core
11
 
12
  ENV = "PyTorch model"
13
 
14
 
15
+ def op(name, weights=False, **kwargs):
16
+ if weights:
17
+ kwargs["color"] = "blue"
18
  _op = ops.op(ENV, name, **kwargs)
19
 
20
  def decorator(func):
21
  _op(func)
22
  op = func.__op__
23
+ for p in op.inputs:
24
+ p.position = ops.Position.BOTTOM
25
+ for p in op.outputs:
26
+ p.position = ops.Position.TOP
27
  return func
28
 
29
  return decorator
30
 
31
 
32
+ def reg(name, inputs=[], outputs=None, params=[], **kwargs):
33
  if outputs is None:
34
  outputs = inputs
35
  return ops.register_passive_op(
 
38
  inputs=[ops.Input(name=name, position="bottom", type="tensor") for name in inputs],
39
  outputs=[ops.Output(name=name, position="top", type="tensor") for name in outputs],
40
  params=params,
41
+ **kwargs,
42
  )
43
 
44
 
 
302
 
303
  def run_op(self, node_id: str, op: ops.Op, params) -> Layer:
304
  """Returns the layer produced by this op."""
305
+ inputs = [_to_id(*i) for n in op.inputs for i in self.in_edges[node_id][n.name]]
306
+ outputs = [_to_id(node_id, n.name) for n in op.outputs]
307
  if op.func == ops.no_op:
308
  module = torch.nn.Identity()
309
  else:
 
318
  return self.get_config()
319
 
320
  def get_config(self) -> ModelConfig:
321
+ import torch_geometric.nn as pyg_nn
322
+
323
  # Split the design into model and loss.
324
  model_nodes = set()
325
  for node_id in self.nodes:
lynxkite-graph-analytics/src/lynxkite_graph_analytics/pytorch/pytorch_ops.py CHANGED
@@ -4,7 +4,6 @@ import enum
4
  from lynxkite.core import ops
5
  from lynxkite.core.ops import Parameter as P
6
  import torch
7
- import torch_geometric.nn as pyg_nn
8
  from .pytorch_core import op, reg, ENV
9
 
10
  reg("Input: tensor", outputs=["output"], params=[P.basic("name")])
@@ -13,7 +12,7 @@ reg("Input: sequential", outputs=["y"])
13
  reg("Output", inputs=["x"], outputs=["x"], params=[P.basic("name")])
14
 
15
 
16
- @op("LSTM")
17
  def lstm(x, *, input_size=1024, hidden_size=1024, dropout=0.0):
18
  return torch.nn.LSTM(input_size, hidden_size, dropout=0.0)
19
 
@@ -59,12 +58,14 @@ def dropout(x, *, p=0.0):
59
  return torch.nn.Dropout(p)
60
 
61
 
62
- @op("Linear")
63
  def linear(x, *, output_dim=1024):
 
 
64
  return pyg_nn.Linear(-1, output_dim)
65
 
66
 
67
- class ActivationTypes(enum.Enum):
68
  ReLU = "ReLU"
69
  Leaky_ReLU = "Leaky ReLU"
70
  Tanh = "Tanh"
@@ -124,6 +125,7 @@ reg(
124
  ),
125
  P.basic("lr", 0.001),
126
  ],
 
127
  )
128
 
129
  ops.register_passive_op(
@@ -148,10 +150,10 @@ ops.register_passive_op(
148
 
149
  def _set_handle_positions(op):
150
  op: ops.Op = op.__op__
151
- for v in op.outputs.values():
152
- v.position = "top"
153
- for v in op.inputs.values():
154
- v.position = "bottom"
155
 
156
 
157
  def _register_simple_pytorch_layer(func):
 
4
  from lynxkite.core import ops
5
  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")])
 
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
 
 
58
  return torch.nn.Dropout(p)
59
 
60
 
61
+ @op("Linear", weights=True)
62
  def linear(x, *, output_dim=1024):
63
+ import torch_geometric.nn as pyg_nn
64
+
65
  return pyg_nn.Linear(-1, output_dim)
66
 
67
 
68
+ class ActivationTypes(str, enum.Enum):
69
  ReLU = "ReLU"
70
  Leaky_ReLU = "Leaky ReLU"
71
  Tanh = "Tanh"
 
125
  ),
126
  P.basic("lr", 0.001),
127
  ],
128
+ color="green",
129
  )
130
 
131
  ops.register_passive_op(
 
150
 
151
  def _set_handle_positions(op):
152
  op: ops.Op = op.__op__
153
+ for v in op.outputs:
154
+ v.position = ops.Position.TOP
155
+ for v in op.inputs:
156
+ v.position = ops.Position.BOTTOM
157
 
158
 
159
  def _register_simple_pytorch_layer(func):
lynxkite-lynxscribe/src/lynxkite_lynxscribe/llm_ops.py CHANGED
@@ -179,7 +179,7 @@ def branch(input, *, expression: str):
179
  return one_by_one.Output(output_handle=str(bool(res)).lower(), value=input)
180
 
181
 
182
- class RagEngine(enum.Enum):
183
  Chroma = "Chroma"
184
  Custom = "Custom"
185
 
 
179
  return one_by_one.Output(output_handle=str(bool(res)).lower(), value=input)
180
 
181
 
182
+ class RagEngine(str, enum.Enum):
183
  Chroma = "Chroma"
184
  Custom = "Custom"
185
 
lynxkite-lynxscribe/src/lynxkite_lynxscribe/lynxscribe_ops.py CHANGED
@@ -45,18 +45,18 @@ output_on_top = ops.output_position(output="top")
45
 
46
 
47
  # defining the cloud provider enum
48
- class CloudProvider(Enum):
49
  GCP = "gcp"
50
  AWS = "aws"
51
  AZURE = "azure"
52
 
53
 
54
- class RAGVersion(Enum):
55
  V1 = "v1"
56
  V2 = "v2"
57
 
58
 
59
- class MessageRole(Enum):
60
  SYSTEM = "system"
61
  USER = "user"
62
 
@@ -875,7 +875,7 @@ async def get_chat_api(ws: str):
875
  path = cwd / ws
876
  assert path.is_relative_to(cwd)
877
  assert path.exists(), f"Workspace {path} does not exist"
878
- ws = workspace.load(path)
879
  contexts = await ops.EXECUTORS[ENV](ws)
880
  nodes = [op for op in ws.nodes if op.data.title == "LynxScribe RAG Graph Chatbot Backend"]
881
  [node] = nodes
@@ -939,7 +939,7 @@ def get_lynxscribe_workspaces():
939
  for p in pathlib.Path().glob("**/*"):
940
  if p.is_file():
941
  try:
942
- ws = workspace.load(p)
943
  if ws.env == ENV:
944
  workspaces.append(p)
945
  except Exception:
 
45
 
46
 
47
  # defining the cloud provider enum
48
+ class CloudProvider(str, Enum):
49
  GCP = "gcp"
50
  AWS = "aws"
51
  AZURE = "azure"
52
 
53
 
54
+ class RAGVersion(str, Enum):
55
  V1 = "v1"
56
  V2 = "v2"
57
 
58
 
59
+ class MessageRole(str, Enum):
60
  SYSTEM = "system"
61
  USER = "user"
62
 
 
875
  path = cwd / ws
876
  assert path.is_relative_to(cwd)
877
  assert path.exists(), f"Workspace {path} does not exist"
878
+ ws = workspace.Workspace.load(path)
879
  contexts = await ops.EXECUTORS[ENV](ws)
880
  nodes = [op for op in ws.nodes if op.data.title == "LynxScribe RAG Graph Chatbot Backend"]
881
  [node] = nodes
 
939
  for p in pathlib.Path().glob("**/*"):
940
  if p.is_file():
941
  try:
942
+ ws = workspace.Workspace.load(p)
943
  if ws.env == ENV:
944
  workspaces.append(p)
945
  except Exception: