Gamma+Nuget+Wordnet

Hi there!

Jumping into Gamma after long time using VVVV. I’m trying to test out some of the none VL Nuget packages to see if I can get it to work. I’m particularly interested in WordNet to test out some NLP ideas and projects.

I’m super naive to this process and I can’t get any of the nodes to process the data. The Nodes don’t seem be running, nor are they loading databases properly. Any chance someone can look into this specific package? If not, any direction on how to approach using non VL Nuget packages?

Syn WordNet Nuget Link

wordnet

Thanks

just from the screenshot:

  1. the first 2 nodes. in context menu assign to “Create”. right now you seem to create and load every frame.
  2. give the pad below a name. i think it only works when having a name
    pay attention whether gamma is paused or running. use F5,F8 to “restart”
1 Like

thanks!!! @tgd

It worked! Gamma is definitely a paradigm shift coming from mostly vvvv beta experience.

I really appreciate the help!

Here’s a screenshot of it working so far.

3 Likes

If you intend to get new results while the patch is running, you still have some adjustments to do.

Notice that most of your links are white - this means they are part of the Create operation, therefore only run at the beginning of the patch. Gray means Update, runs on every loop iteration - frame. Then there’s also dark red Dispose, which runs at the end of the patch’s lifecycle. Other colors are dedicated to user-defined operations.

But for now let’s focus on White Create and Gray Update. As tgd suggested, you should assign your creation logic, and only creation logic, to the Create operation. In this case it is the WordNetEngine Create and LoadFromDirectory. If everything were in Update, as in your original patch, it would re-run the initialization on every frame.

Result of these operations is an instance of a loaded WordNetEngine, which you save into a pad, the full gray circle. A pad is basically a class field (if this tells you anything), a variable that can be accessed from any operation.

So once you have your WordNetEngine set up and in a pad you can use it in the Update operation, where you would call your GetSynSets and GetShortestPathTo. But considering that these might be expensive operations, you should also not re-run them every frame.

To fix this, you can wrap expensive operations in a Cache region. This special region only runs whatever is inside when its inputs change and caches (saves) the calculated outputs on its output.

You anything quickly in a cache region by selecting the nodes to wrap, right click > Surround > Cache.

You set up the inputs and outputs of the Cache region just like you’d set your Splicers and Accumulators for the ForEach region - drag a link to the top/bottom edge and click.

There’s of course other approaches to handle this such as custom operations triggered externally, async regions to do these calculations outside of the main thread and not block your loop to avoid animation stutter but wrapping your head around the different basic operations and the Cache region is a good start, so try it out!

Sidenote:
Don’t be confused by the fact that the contents of the ForEach are gray and not white - they’re still part of the Create operation! You can tell that by the incoming/outgoing links. The reason the inside is gray is because the ForEach region itself has operations which you can assign to, the default being the ForEach’s Update.

Feel free to ask for clarifications.

5 Likes

Thank you @domj for a thorough answer that kickstarted my understanding of gamma and cache + async task features. . Also, the midweek patch therapy was awesome!

2 Likes

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.