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 directoryext${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> ExtClassThe 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:
| Question | Outcome |
|---|---|