File format support for many file types including:
Mien internal format (.mien, .mdat)- compressed xml and binary data archive
USGS SDTS (ident.ddf) - GIS data format
implemented in an extension block
uses pullsdts
Wave (.wav) - common mono and stereo audio format
xml (.xml, .nmpml) - supports generic XML as well as the specialized nmpml modeling dialect.
Use of special XML semantic information specified by NeuroML dialects is under development
Python object persistence formats (pickle and shelve)
Raw binary data in standard types (eg float64, int16, etc)
Support for single channel and interleaved multi-channel records
Neuron hoc (.hoc) - interface language used by the Neuron simulator
Full support for writing models and experiments to Neuron-readable files
Read support of hoc written by MIEN, and a subset of general hoc
No read support for non-declarative hoc code (e.g. functions)
Swc (.swc) - anatomical data format used by some online anatomy databases
bbt (.bbt) - binary branched tree anatomical data format
Neuron Batch Output (.bat) - Read only support to import data written by Neuron simulator batch calls
Neurolucida ascii (.asc) - Output format from the Neurolucida digitizing software suite
Matlab v 7 (.mat) - Format used by Matlab
Nearly complete read/write support
Suports compressed files
Doesn't yet support sparse arrays (for now, cast these to "full" for compatible storage)
DataMAX (.dm) - Output format of RC Electronics data acquisition systems
Neuron Vector Format (.vec) - An output format used by the Neuron simulator.
Excel Workbook (.xls) - Unfortunately common spreadsheet format.
Read support only
Implemented in an extension block
uses pyExcellerator
Ascii and CSV formats (.txt, .csv) - text-based output formats used by spreadsheets, some data loggers, Matlab's dlmread and dlmwrite, etc.
Image file formats
supports most common formats, like tiff, png, jpeg, etc
supports 16bit greyscale tiff
supports output of sequentially numbered animation frames for easy creation of video with external tools like ImageMagick and Quicktime Pro
Format conversion between the above formats
both batch and GUI modes
Some formats (including mien and mat) can store supersets of data from many file types, eg jpeg, DataMAX, and Neurolucida in the same file.
Provides reasonable semantic integration for data from different file types, when possible
General purpose XML infrastructure
read, write, visualize, and edit any XML
Incorporate data structures from generic XML into semantically models in nmpml
The nmpml dialect provides for a unique XPATH for every element, and an ElementReference tag that implements reasonably efficient horizontal links in XML documents.
Advanced features for particular model classes
Cell objects provide a wide range of methods useful for editing cell models, measuring complex properties, converting between representations used by different simulation engines, distributing active channels, etc.
Data objects provide features for handling numerical data, sound, and images
AbstractModel objects provide features for handling not-declarative content like code snippets and math
There are many more of these advanced classes
If there aren't enough, it is relatively easy to add your own
GUI, CLI, and API interfaces
Full featured GUIs are provided for exploratory interaction
Any action that can be done from a GUI can be done from a CLI or within a script
Scripts can be added to modify GUI menus, allowing rapid macro extensibility
Adding blocks (GUI extensions scripts) can modify the interface behavior in real time, without reloading the GUI or the data.
Some of the GUIs can log user actions and auto-generate batch scripts to repeat these actions on more data.
The DSP GUI is particularly designed for interactive development and testing of a tool chain that will later be used by batch calls, in scripts, or as part of an extension block.
Advanced visualization classes
Classes with a high level interface to build 2D, 3D, image, and pseudocolor plots
Efficient handling of very large plots, including OpenGL hardware acceleration for 3D plots
Feature-rich interface tools for everything from panning and zooming to interactive selection and editing of 3D objects
Model building tools
UIs are provided to integrate support for interactive visualization and selection with support for importing many kinds of data. The result is a powerful set of tools for integrating data from disparate sources into a single model.
Control of NEURON simulator
Mien can use Neuron to evaluate compartmental models of cells
Dispatch of jobs to neuron, and import of the resulting data, is automated
Mien can provide parallel (and networked) distribution of many independent jobs
Mien supports modeling network and interaction events with abstract code in Mien, and using these calculations to drive detailed simulations of single cells
This hybrid model approach is ideal for detailed study of single cell computation in cells that integrate many network inputs.
Use of external tools in block functions
Mien can make calls to Matlab or similar computation tools in place of running a python code block in a DSP tool chain or abstract model
Currently, these calls are inefficient, but they allow users to rapidly develop new algorithms in the language they are most familiar with, and test them in MIEN's interactive environment, and in tool chains that uses MIEN's other built in functions, file support and visualization features, etc.
Distributed computation
Mien can distribute tasks efficiently to many CPUs, or many servers in a network environment
Currently, distribution does not include MPI (or similar technologies), so it is effective when a set of tasks can be computed independently
Mien can (sometimes) automate separation and distribution of tasks within an optimization scheme or abstract model.
Optimization and search
Mien incorporates a general system for interactively building and tuning an abstract model that can subsequently be used as a cost function by a variety of included optimization tools
Optimization models can include Neuron simulations, abstract python code, Matlab calls, or all of these
Rapid extensibility
MIEN blocks provide a framework for extending most aspects of MIEN
File support, XML classes, GUI behaviors, and abstract model or DSP code can all be added with blocks
The block interface shields the user from most (though not all) of the internal complexities of the MIEN implementation
Non-trivial blocks can be very simple. For example, a digital filter takes 2 lines of code to write
Mien automatically constructs an interface around your block. Windows requesting function parameters, selecting data to operate on, displaying output, etc, are all generated automatically. You never have to write a line of GUI code or touch a GUI pointer or object
Built-in functions like undo also work on user blocks, without any effort from the block author
If you don't like MIEN's auto-gui, or need a special interface, you can get access to lower level functions, and write your own interface using MIEN's visualization library, using raw OpenGL code, or even using home-rolled ANSII C. You have the option to get as specific and low level as you like, but 95% of the time you won't need to.