Developers are encouraged to create additional functionality for FIND through the available plugin architecture. Specifically, FIND allows for plugins in the following categories: Analysis, Clustering, Graphing, IO, and Transforms. Each of these plugin types are described in detail with code examples in their respective sections later in this documentation.

Beyond the API provided within FIND (which will be discussed where appropriate per plugin type), the following external Python libraries are available to developers:

General Plugin Architecture

In order for a plugin to be recognized, the main module file containing it must be placed within the appropriate folder in the Plugins directory that must accompany the FIND executable. For example, included with the FIND distribution is a clustering plugin called Unicluster. The plugin consists of one file which is placed within the cluster folder. Internally, module files must provide two items, indicating to FIND the existence of plugin functionality. The first is a registration method which in all code examples follow the naming convention method_register(). This method returns a tuple that provides FIND with references to necessary methods or information specific to the plugin type. Given that the register method can take any name, modules must indicate its existence to find by placing it in the __all__ magic list variable provided by Python. The FIND plugin architecture will use this list and the corresponding methods to internally link to the provided plugin functionality. Plugins may consist of multiple modules, but only modules with the __all__ variable defined will be examined for plugin functionality. The specifics of what each registration method must provide are discussed in the appropriate section of the manual. Finally, analysis, graph, and transform plugins must provide string identifiers such that authors of other plugins can easily incorporate the functionality of other plugins within their own code. For example, a useful analysis plugin may provide functionality that the author of a graphing plugin has an interesting way of displaying through a plot. The specifics of how to call these plugins can be found within the appropriate subsection of this manual.