SNAP CPython Adapter
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
# | Title | User Story | Importance | Notes |
---|---|---|---|---|
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 module. Python extension modules are found in the following locations:
<module-jar-file>
a module JAR file${user.home}/.snap/snappy/ext/*
the directories in directorysnappy/
in the SNAP user directorye
xt${snap.snappy.ext}
from the directory paths given in the special system propertysnap.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>
Ext
Class
The type of the extension is derived from the Python class Ext
Class
. 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:
Question | Outcome |
---|---|