Beginner Questions

Thank you very much for the answers, it clarified my confusion regarding the various terms and their uses (esp. #4).

As a follow-up, can you please correct/comment on my understanding of the contents of snap-examples:

  • snap-engine-python-scripts - This example shows how to use Snap engine API classes in a python script thru the snappy module. Why does this have a pom though? Can I build this with maven? How will it function as an installable .nbm file if it’s only a script (or I’m terribly uninformed of the usage of pom).

  • snap-engine-python-operator - This is a complete operator. layer.xml defines where it goes in Snap, -info.xml defines the gui and the intended parameters. -op.py defines the operator class and invokes snappy to pull parameters as described (obtained?) from -info.xml and passes it to variables readable by the actual algorithm implementing script that is -algo.py. Well described here. You’ve said that this is an implementation of an operator. Does this mean that the actual operator is similar to snap-engine-python-scripts instead?

  • snap-engine-java-operator - Same as above, but the equivalent -op.py, -info.xml, and -algo.py is condensed to one -.java file. Which makes sense since Snap’s “native” API is a Java API.

  • snap-engine-otb-python-operator - This apparently uses the Orfeo toolbox module. The calculation is done in the -op.py file itself. Is this considered an imported computational Java module? Although it still uses numpy, so like a hybrid? Like Jython?

  • snap-jython-examples - Some Jython examples. It seems that Jython is used for more intricate operations (like the Spectral Unmixing tool perhaps?) instead of scripting simple algorithms.

For the above examples, I think I already have a slight understanding, but I don’t know how these other examples relate to them:

  • snap-desktop-basic-multi
  • snap-desktop-basic-single
  • snap-desktop-examples
  • snap-engine-examples

Are they directly built to Snap? Like an add-on to a custom Snap installation?

I am currently making progress in studying snap-engine-python-operator and s2-rut to get a better handle (hopefully I can transition to java later but I’ll stick to python for now) on how to develop my own plugin. Thank you again.