For Python users, the answer is simple. PyFerret is a Python module with functions that allow you to access Ferret's ability to easily retrieve, manipulate, visualize, and save data. Data can be transferred between Python and the Ferret engine using NumPy arrays in Python dictionaries of metadata. Python scripts can be immediately accessed and used as Ferret external functions. The arguments and results data for these external functions are NumPy arrays, thus greatly simplifying manipulation of the data.
However, even an established Ferret user with no need for (or knowledge of) Python, can easily use PyFerret and take advantage of its enhancements. A simple shell script provides direct access to the traditional command-line interface to Ferret without having to know anything about the Python language. All of Ferret's command-line arguments are handled appropriately by this script. Thus, one can transparently use this PyFerret script in place of the traditional Ferret executable. Enhancements a Ferret user would experience by using PyFerret include:
- Improved graphics
- Unrestricted image size (display windows have scroll bars if appropriate)
- Ability to directly save images in common formats (PNG, PS, PDF)
- Interactive controls on display windows for scaling and saving
- Precise control of line widths and text sizes
- Control of color opacity and background color
- On-the-fly animation works again ("Backing Store" not required)
- Better-looking text when using Ferret's traditional fonts
- Text drawn using standard fonts available on your machine
- Many new statistical functions, taking advantage of SciPy's package of statistical functions
- Shapefiles support functions, taking advantage of the PyShp package
These enhancements are a result of the ability of PyFerret to communicate with other software packages through Python.
Note that there might still be some known issues in PyFerret that might prevent you from completely replacing standard Ferret with PyFerret. Please consult the Known Issues page for more information.