/
SNAP CPython Adapter

SNAP CPython Adapter

Target release2.0
Epic SNAP-79 - Getting issue details... STATUS
Document statusDRAFT
Document owner

Former user (Deleted)

DesignerFormer user (Deleted)
DevelopersFormer user (Deleted), Marco Peters
QAOlga Faber (Unlicensed)

Goals

  • Let Python programmers write GPF operators using CPython and its scientific extension libraries numpy, scipy, pandas, etc.
  • It should be transparent to users how operators are implemented, e.g. using the native Java GPF API, using the Python API or using the stand-alone tools adapter.

Background and strategic fit

Scientists prefer Python over Java.

Assumptions

  • Users have Python 2.7, 3.3 or 3.4 installed.

Requirements

#TitleUser StoryImportanceNotes
1
     

User interaction and design

A Python extension module is a JAR file or directory which must contain a plain text file META-INF/snappy.def which lists all Python extensions contained in the modulePython extension modules are found in the following locations:

  • <module-jar-file>   a module JAR file
  • ${user.home}/.snap/snappy/ext/*    the directories in directory snappy/ext in the SNAP user directory
  • ${snap.snappy.ext}   from the directory paths given in the special system property snap.snappy.ext

The text file snappy.def contains either empty lines, comment lines starting with the '#' character, or lines declaring a Python extension as follows:

[<ext-rel-path>/]<ext>      ExtClass

The type of the extension is derived from the Python class ExtClass. If the class name ends with Op it is assumed to be a GPF operator, if it ends with Action it is assumed to be an action to be placed in the menu or in a toolbar. A single <ext> may contain any number of Python classes that provide extensions to SNAP.

Each Python extension must follow this schema:

[<ext-rel-path>/]

<ext>.py   the Python code containing the class ExtClass  

<ext>-info.xml   contains the operator metadata such as processing parameter definitions (for GPF operators only)

Questions

Below is a list of questions to be addressed as a result of this requirements document:

QuestionOutcome

Not Doing

Related content

Command-line Interfaces
Command-line Interfaces
More like this
Install SNAP on the command line
Install SNAP on the command line
Read with this
What to consider when writing an Operator in Python
What to consider when writing an Operator in Python
More like this
snappy enhancement
snappy enhancement
More like this
How to use the SNAP API from Python
How to use the SNAP API from Python
More like this
Configure Python to use the SNAP-Python (esa_snappy) interface (SNAP version 10+)
Configure Python to use the SNAP-Python (esa_snappy) interface (SNAP version 10+)
More like this