< Software | << Site Map | Search |
Selected Documents | Inverse | IOptLib | AnnApp | NeurApp | IGShell | GitHub / IGLib | Igor G.

IGLib

IGLib (the Investigative Generic Library) is a base library for efficient development of technical and other applications on .NET platforms.

Currently, IGLib is used by its developers and partner institutions for their projects, and some portions are open sourced.



Contents:


About the Library

IGLib (the Investigative Generic Library) is a utility library for efficient development of cross-platform technical and other applications. It is developed for the .NET framework and its alternatives, such as Mono and .NET.

The library has been designed and developed by Igor Grešovnik. It contains various general utilities such as those for parsing of strings, auxiliary utilities for building GUI, a numerical library, I/O utilities 2D and 3D graphics modules, parallel computing module, command-line and fully object-oriented interpreters, application framework, etc. It aims at providing a well designed base library for development of complex numerical and other technical applications. Parts of the library have also been used in other areas such as a system for managing a histological laboratory or large scale invoicing support system.

Historically, the initial motivation for development of the library arose from the need to have a versatile base library for development of complex optimization software. One of the goals was to take utilities and standards from the IOptLib C library and transfer them to an expressively object object oriented C# library, in order to elaborate, extend and implement ideas about how an environment for efficient development of industrial scale optimization software can be established. However, the library has been developed in a much broader scope in mind since the beginning of its development.

The library depends on several external libraries, of which majority are open source (see the Readme file for more details). It is structured in hierarchic layers that are arranged according to the dependence on different types of libraries with respect to permissiveness of their licenses and according to cross-platform transferability. The extensive base layer is allowed to depend only on free open source libraries whose licenses does not impose any restrictions neither on commercial nor on research use of the libraries or distribution of the derived products. The IGLib itself has not yet been publicly released under free license. Prior to doing so, its author would like to establish stable enough development conditions with enough interested parties to enable sustainable development. However, the author welcomes initiatives for development partnership based on technical or research projects, especially those with ambitious and exciting goals.

System Requirements

IGLib is developed in C# and it targets the 64 bit .NET framework and its alternative implementations such as Mono. It is intended as higher level utility library for development of cross-platform applications.

Currently, the target platforms are .NET Framework 4.0 and 4.8, and .NET 8, which are commonly available across the main computing platforms (e.g. in form of the open source Mono implementation for .NET Framework, and natively by the open source .NET). The source code of substantial portions of code can be compiled for lower versions of the framework, however the official recommendation is to stick with .NET 4.8 when the .NET Framework is required.

It is straight forward to port the library to any modern computing platform. The only requirement is that a compatible .NET framework is installed on the computer. You may need to download and install either the legacy .NET framework (for Widows operating systems) or Mono (cross-platform) or the modern .NET before using the library.

It might not be completely straight forward to install the framework on older operating systems. For example, on Windows XP, you will need to install the Service pack 3 before installing the .NET 4 or later. We have not checked whether the service pack is also required when using the Mono framework instead of .NET.

There are some specialized portions of the library that are difficult to use on some older operating systems. This is true e.g. on 32 bit Windows XP for the 3D graphics modules that are based on the ActiViz, C# wrappers for the VTK library (used e.g. in NeurApp, AnnApp, IGShell, and some other applications). In these applications, all functionality that does not use the problematic libraries should still work correctly. For example, with some applications for ANN modelling, one can do everything except showing 3D plots of 2-parametric studies. When launching such a plot, an error message is launched, but one can continue to use the application for other tasks.

In the case of VTK-based 3D plots, the problem is because 64 bit native libraries are linked with the code, and these can not be loaded on a 32 bit system. Due to just in time compiler (JIT), this is not an issue with managed libraries, but linking with native libraries is different. In order to use 3D modules on 32 bit Windows XP, one must use the code that is specifically compiled for 32 bit windows. Such code would also work on all 64 bit windows systems, but it would the applications would be limited to use up to 2 GB RAM. Therefore, downloadable applications are usually prepared for 64 bit windows. If you would like to use full functionality of such applications on 32 bit Windows, check the web site if there is also a 32 bit version.

Availability

The complete library source code is currently available only upon special agreement with the author. Author's interest is that the library is used and/or developed under a limited number of partner agreements until it reaches a sufficient maturity level. It is possible that the library is released under a free open source license at a later time. For up-to-date information, see the README file of the IGLib base repository.

A number of applications base on the IGLib have been developed by the author of the library or under partner agreement. Library binaries are currently available with a simple application that very briefly demonstrates a possible use of the library for developing an interpreter-based application. You can check it out here and download the demo. The demo contains a Visual Studio project for building the application. It is basically just a framework of a command-line interpreter based application whose architecture follows the simple application framework rules that are used for some development projects, student projects, small research projects and alike.

The IGLib binaries are currently available as part of several applications, some of which are available on the internet and can be downloaded together with the library dll-s. Some of these applications are listed below.

IGShell - A command-line shell application based on IGLib

This is a simple shell application created to demonstrate the use of the IGLib libraries in the shell applications. A Visual Studio (or MonoDevelop) project is attached that demonstrates how a simple shell application is created according to the IGLib Standards.

The project also includes two hosted applications, the HashForm and HashShell. HashForm is a convenience UI application for calculation and verification of hash values, and can be used for file verification. HashShell includes utilities for performing common cryptographic tasks such as calculation and verification of cryptographic hash functions, symmetric encryption and decryption, asymmetric encryption, generation and manipulation of keys, digital signatures, and others.

NeurApp - Exploring Approximation by Artificial Neural Networks

A simple application for learning and exploring some features of approximation by artificial neural networks. NeurApp is a free software that can be downloaded from the links below.

AnnApp

A GUI-based application for creating ANN-based models by training neural networks on provided data, compatible with the NeuralShell. The software contains modules for graphical representation of model results, which enable to extract, with minimal effort, as much useful information as possible from complex models. It will also be useful for modeling professionals in order to quickly grasp model features and doing some simple analytics.

Oscillator Modeller

A small IGLib-based application for modeling various kinds of linear and nonlinear driven oscillators. It vas created by Marko Petek in the scope of his graduate thesis.

NeuralShell - Development of Complex Models Based on Artificial Neural Networks

This is a professional application for industrial-scale modelling with and for conducting research on artificial neural networks. It is being developed in the scope of COBIK projects by Igor Grešovnik and Tadej Kodelja (who was also preparing his Ph.D. thesis on basis of the software). This versatile software is driven by a two level interpreter system, which enables high flexibility and extensibility through a C# scripting engine. Demonstrative examples were prepared for various problems to be used by the team for training purposes, and a variety of industrial problems were solved by the software.

NeuralParametric

A GUI-based application for exploring results of ANN modeling, compatible with the NeuralShell. It is primarily intended for use by the people who are not skilled in using computers, in order to interactively extract as much useful information as possible from complex models in a short time and with minimal effort. It will also be useful for modeling professionals in order to quickly grasp model features and doing some simple analytics.

Documentation

IGLib Code Documentation (base index, classes, members). Code documentation for the library, automatically generated from documentation comments by Doxygen, a remarkable documentation generation tool. Only a part of the library is currently documented, since considerable amounts of code are scattered between various projects and testing areas.

See also:

Examples

Some examples are included in IGShell downloads. More examples may be added in the future.

Archive

Archive of documentation and downloads for older version of IGLib and related software is maintained here. In this way, you can find and download older versions of software in order to investigate and resolve compatibility issues, or use discontinued features. This is a central location for searching for older versions, but some software pages may maintain their own archives of older versions, such as IGShell, for example (which also includes distributions of HashForm and HashShell).

Archive home contains links to archived documentation and downloads.

IGShell archive contains older versions of IGShell, which include HashForm and HashShell.

See Also

A How-to Guide on Creating Bootable Media (=>, PDF). Details procedures and tools for creating bootable media for various scenarios. These procedures were used for testing and the IGLib-based software, although the described procedures are general and useful in many situations. Document is composed in form of a how-to guide with additional explanations to make things clearer and more understandable. By Igor Grešovnik, April 2016.

This site was partially sponsored by ITAIA electronics.


  Maintained by Igor Grešovnik 
 
  Updated in April 2016