User guide
Cultures
In Ingendex a culture corresponds closely to Akinity's specification of culture.
Each culture is implemented in Ingendex as a separate sqlite (Gears) database.
The name of the culture in the application user interface is the same as the name of the database file - with the #database suffix stripped off.
Operational culture
There is always exactly one culture operational at a time. This means that any operation performed on the data in the application is only on the operational culture. Other cultures are unaffected by the operation.
Default culture
When using the application the name of the current operational culture is stored in a database. When restarting the application, the last used culture automatically becomes the operational culture.
MyLocal
At the first use of the application, a culture called MyLocal is created in the appropriate Gears Folder. This culture is seeded with a single synythetic cTag having "MyLocal" as its organelle.
New culture
At any time, the user can create a new culture by typing its name in the box provided. The new culture will be seeded with one synythetic cTag, having the culture's name as its organelle. The new culture becomes the operational culture.
It is recommended to create a new culture upon first using the application.
There is no limit to the number of cultures an application instance can support.
Switching cultures
At any time, the application user can switch from one existing culture to another by selecting the desired operational culture from the drop down box.
URI parameters
It is not possible to change the operational culture using a URI parameter.
Whenever transactional parameters are used the ensuing transaction will be against the operational culture. Or, if the application is not yet open, against the default culture.
Porting a culture
Sqlite databases are portable across all Sqlite supported platforms. To move or copy a Ingendex culture into your own instance of the application do the following:
- Check that the version of Ingendex which created the culture you want is compatible with your application version
- Download the database file containing the culture you want
- Open http://ingendex.akinity.info in the device / OS user / browser that you want to port the culture to
- Create a new culture with the same name as the database file you downloaded. Switch to a different culture.
- Put the downloaded file into the appropriate Gears Folder for your device / OS account / browser. Overwriting the newly created database file. Make sure to preserve the #database suffix.
- In the application, switch back to the new culture. It should be a copy of the imported culture, having all the cTags from the source culture.
Note that porting a culture breaks any links to the original. The copy is fully functional, but subsequent changes are not synched between instances of the application.
Focus cTag
In Ingendex there is always exactly one cTag at the Focus of the Scope.
Default focus for a culture
The application stores the last used Focus for each culture. Whenever the operational culture is switched, the previously used Focus for that culture becomes the new Focus.
Focus details
The details of the current Focus are displayed in the data fields underneath the Scope.
Switching focus
When the Focus of the Scope is switched, the details of the Focus are changed to the new Focus cTag.
Focus can be switched by either highlighting a different cTag in the Scope or by conducting an operation that involves conception.
Focusing on a cTag
If a cTag is visible in the Scope but not in focus it can be brought into Focus by clicking on any part of it.
Performing an operation
When an operation is performed, the resulting synthetic or meiotic cTag automatically becomes the Focus cTag.
Refreshing the Scope
When the Focus of the Scope is switched the other cTags in the Scope are automatically refreshed to reflect their respective distance and clustering around the new Focus.
The Scope refresh process happens asynchronously. As the background application process discovers more cTags in the culture with sufficient akin to the Focus, they are displayed in the Scope. cTags having greater proximity are usually displayed sooner than the more distant ones.
Distance from Focus
cTags in the Scope are each displayed at a particular distance from the Focus. The distance between the Focus and a cTag in the Scope is based on the mutual entropy between the two cTags. The greater the mutual entropy, the further from the Focus a cTag is displayed.
Clustering in Scope
cTags in the Scope are displayed in radial positions around the Focus. Their clock positions are based on the relative proximity of all in-Scope cTags' to one another. So that cTags which are closer to one another appear clustered in a segment of the Scope. While those cTags which are not highly akin to the rest are displayed at a more distant clock position.
The algorithm which achieves this clustering effect is described in detail below.
Stored parameters
Ingendex stores previously used application parameters in a database. The next session of the application in the same combination of device / OS user / browser will reuse the last session's saved parameters.
Documentation of all parameters is below.
| # | User? | Parameter Name | Initial Value | Lower Range | Upper Range | Description |
| 0 | No | ConcAkinityVers | 0.1 | 0.1 | 0.1 | Version of Akinity applicable to new cTags created by conception |
| 1 | No | ConcMosBreadth | 8 | 8 | 8 | Breadth of output of method of synthesis |
| 2 | No | ConcMaxBreadth | 15 | 15 | 15 | Maximum breadth of new cTags created by conception |
| 3 | Yes | ConcMaxDepth | 8 | 0 | 15 | Maximum Depth of new cTags created by conception |
| 4 | Yes | ConcDefBreadth | 11 | ConcMosBreadth | ConcMaxBreadth | Default Depth of new cTags created by conception |
| 5 | Yes | ConcDefBindPar | Y|X | [X, Y, X|Y, Y|X] | The parent whose Organelle shall populate the equivalent field in the child | |
| 6 | Yes | ConcMaxInBred | 0.95 | 0 | 1 | Minimum mutual entropy between parents (out-breeding) |
| 7 | Yes | ScopeMinDist | 0.8 | 0 | ScopeMaxDist | Minimum entropy from the Focus to be shown in the Scope |
| 8 | Yes | ScopeMaxDist | 1 | ScopeMinDist | 1 | Maximum entropy from the Focus to be shown in the Scope |
| 9 | Yes | ScopeMaxcTags | 30 | 0 | 100 | Maximum number of cTags to be shown in the Scope |
| 10 | Yes | ScopeFocusDiam | 10 | 5 | 50 | Number of pixels to represent the diameter of the Focus cTag |
| 11 | Yes | ScopeMinDiam | 15 | 5 | ScopeMaxDiam | Smallest number of pixels to represent the diameter of a cTag |
| 12 | Yes | ScopeMaxDiam | 30 | ScopeMinDiam | 50 | Largest number of pixels to represent the diameter of a cTag |
| 13 | Yes | ScopeAxes | 64 | 16 | 256 | Number of segments in the Scope used for clustering cTags. |
| 14 | Yes | GearsWorkers | 3 | 1 | 5 | Number of new processes that a process can spawn |
The first three parameters depend on Akinity Version and are not user-configurable.
ConcAkinityVers
The version of Akinity applicable to new cTags created by conception.
ConcMosBreadth
The breadth of output from method of synthesis
ConcMaxBreadth
The maximum breadth of new cTags created by conception
User-configurable stored parameters
The remaining parameters (below) may be configured either through URI or in the application's user interface.
ConcMaxDepth
The maximum depth of new cTags created by meiosis.
ConcDefBreadth
The breadth of new cTags created by synthesis.
ConcDefBindPar
The meiotic parent whose data populates the equivalent field in the child.
X X-Parent
Y X-Parent
X|Y X-Parent, or Y-Parent if X-Parent is null
Y|X Y-Parent, or X-Parent if Y-Parent is null
ConcMaxInBred
The minimum distance between co-parents. At less than this distance meiosis is taboo.
ScopeMinDist
The minimum distance from the Focus to any cTag displayed in the Scope.
ScopeMaxDist
The maximum distance from the Focus to any cTag displayed in the Scope.
ScopeMaxcTags
The maximum number of cTags to be displayed in the Scope.
ScopeFocusDiam
The number of pixels to represent the diameter of the Focus cTag.
ScopeMinDiam
The smallest number of pixels to represent the diameter of a cTag.
ScopeMaxDiam
The largest number of pixels to represent the diameter of a cTag.
ScopeAxes
Ingendex uses the most highly selectivity (highest entropy) pos across the entire culture to arrange clustering in the Scope. This parameter sets the number of pos that will be mapped to a Scope Axis.
GearsWorkers
The number of new processes that a process can spawn. A higher number will perform synthesis and meiosis faster, but it will use up more system resources.
Actions
The application can perform basic functions: synthesis; meiosis; MateSelect and akin in combination. Such combination of operations is known as an action.
Actions are documented in the table below. The precise meaning of the actions depends on what kind of inputs are used. Which in turn depends on thetype of interace used. So this action table is described under each interface section.
| # | Operations | Focus cTag |
| 1 | meiosis then MateSelect then meiosis then akin | youngest meiotic cTag |
| 2 | synthesis then MateSelect then meiosis then akin | meiotic cTag |
| 3 | akin | TrxSource |
| 4 | synthesis then meiosis then MateSelect then meiosis then akin | youngest meiotic cTag |
| 5 | MateSelect then meiosis then akin | meiotic cTag |
| 6 | synthesis then akin | synthetic cTag |
| 7 | meiosis then akin | meiotic cTag |
| 8 | synthesis then meiosis then akin | meiotic cTag |
The Action# in the first column is a reference number that will be used elsewhere in this document.
The Focus cTag column specifies what will be at the Focus of the Scope after the action is completed.
Interfaces
Ingendex has different ways for the user to initiate operations. These are categorised as Interface types:
User Interface (UI)
User manipulates controls directly in the application
URL (URI) Interface
User issues instructions by clicking on a URI which incorporates application parameters.
Drag-and-drop Interface
User drags data from the application or elsewhere and drops it into the Scope
Interface types to action mapping
The table below maps Interface types to actions. The table is described in more detail in the appropriate section for each interface type.
| User interface | URI interface | Drag-and-drop interface | action | |||
| Button | Scope | Parameter | Parameter | Drag Object | Drop Object | # |
| TrxSource | TrxTarget | 1 | ||||
| TrxSource | TrxOrganelle | Organelle | Outer Scope | 2 | ||
| TrxSource | cTag | Empty Scope | 3 | |||
| TrxTarget | TrxOrganelle | 4 | ||||
| TrxTarget | cTag | Outer Scope | 5 | |||
| TrxOrganelle | Organelle | Empty Scope | 6 | |||
| cTag | Focus | 7 | ||||
| Organelle | Focus | Organelle | Focus | 8 | ||
URI interface
http://ingendex.akinity.info accepts zero, one or more parameters to be passed in to the application via the URI. Valid URI parameters include the user-configurable stored parameters and the transactional parameters.
Parameters declared in the URI supercede those stored from the last session. Parameters not delared in the URI are set according to stored values.
URI parameters may subsequently be changed through the user interface.
Parameters may be declared in any order. If a parameter is declared more than once, the first instance of it will be used.
Invalid parameters
Parameter names are case sensitive. If a parameter does not match the specification exactly it is ignored.
URI parameters are parsed in action # sequence. If a parameter's value is not valid with respect to constraints from earlier URI parameters and (undeclared) stored parameters then it is ignored and the stored value is used instead.
Transactional parameters
In addition to the stored parameters, there are three extra optional URI parameters. These parameters are transactional and are not stored by the application.
| Parameter | Value |
| TrxSource | URI to a valid cTag in XML format |
| TrxTarget | URI to a valid cTag in XML format |
| TrxOrganelle | Data for input to synthesis |
TrxSource
This transactional parameter must contain a URI which points to a document which is a valid XML cTag.
TrxTarget
This transactional parameter must contain a URI which points to a document which is a valid XML cTag.
TrxOrganelle
This transactional parameter must contain data that can be used as input to synthesis.
A transactional parameter may appear zero, one or two times in a URI. Transactional parameters may be used in any of the six combinations specified in the table. Depending on which combination of transactional parameters is declared in the URI, Ingendex will perform the specified operations at start-up of the application. e.g. if TrxTarget and TrxSource are delared then the application will start aby performing Action#1 (meiosis then MateSelect then meiosis then akin).
If two transactional parameters are used, they may appear in either order. If more than two transactional parameters are declared then the Action# selected will be prioritised according to the first matching parameter(s).
URI interface actions
In the operational culture:
Action #1
Do meiosis taking TrxSource and TrxTarget as inputs. Do MateSelect for the resulting meiotic cTag. Do meiosis taking the candidate selected and the last created meiotic cTag as inputs. Display the resulting meiotic cTag in the Focus.
Action #2
Do synthesis taking TrxOrganelle as input. Do MateSelect for the resulting synthetic cTag. Do meiosis taking the candidate selected and synthetic cTag as inputs. Display the resulting meiotic cTag in the Focus.
Action #3
No conception. Find the highly akin cTags in the culture. Display the TrxSource in the Focus with other cTags around it.
Action #4
Do synthesis taking TrxOrganelle as input. Do meiosis taking TrxTarget and synthetic cTag as inputs. Do MateSelect for the resulting meiotic cTag. Do meiosis taking the candidate selected and the last created meiotic cTag as inputs. Display the resulting meiotic cTag in the Focus.
Action #5
Do MateSelect for the specified TrxTarget parameter cTag. Do meiosis taking the candidate selected and TrxTarget as inputs. Display the resulting meiotic cTag in the Focus.
Action #6
Do synthesis taking TrxOrganelle as input. Display the resulting synthetic cTag in the Focus.
Examples
Example1
http://ingendex.akinity.info/?ScopeMinDiam=33&ConcDefBreadth=11&ConcMaxBreadth=12&ScopeMaxDist=0.89000000&ScopeMinDist=0.90000000&ConcDefBreadth=9
sets values for the ConcDefBreadth and ScopeMinDiam parameters. Note:
- ConcMaxBreadth is not user-configurable, so it will be ignored.
- ScopeMaxDist is invalid because it is less than ScopeMinDist (which is parsed earler).
- ScopeMaxDist is ignored and ScopeMinDist=0.90000000 is set, as long as the value of ScopeMinDist does not violate a constraint with respect to stored parameter ScopeMaxDist. ConcDefBreadth=11 because this parameter was declared first.
Example2
http://ingendex.akinity.info/?ScopeMinDiam=33&ConcDefBreadth=11&ConcMaxBreadth=12&TrxOrganelle=this text
&ScopeMaxDist=0.89000000&ScopeMinDist=0.90000000&ConcDefBreadth=9
&TrxTarget=http://example.com/valid_cTag1.xml.cTag&TrxOrganelle=not this text
sets values for the ConcDefBreadth and ScopeMinDiam parameters as before. It also initiates a synthesis, meiosis, MateSelect, meiosis transaction (Action #4).
Note: only the organelle parameter first appearing in the URI ("this text") will be used as input to synthesis.
Drag and Drop interface actions
In the operational culture:
Action #2
Do synthesis taking the dropped text as input. Do MateSelect for the resulting synthetic cTag. Do meiosis taking the candidate selected and synthetic cTag as inputs. Display the resulting meiotic cTag in the Focus.
Action #3
No conception. Find the highly akin cTags in the culture. Display the dropped cTag in the Focus with other cTags around it.
Action #5
Do MateSelect for the dropped cTag. Do meiosis, taking the candidate selected and current Focus as inputs. Display the resulting meiotic cTag in the new Focus.
Action #6
Do synthesis, taking the dropped text as input. Display the resulting synthetic cTag in the Focus.
Action #7
Do MateSelect for the specified dropped cTag. Do meiosis, taking the candidate selected and the Focus as inputs. Display the resulting meiotic cTag in the Focus.
Action #8
Do synthesis, taking the dropped text as input. Display the resulting synthetic cTag in the Focus.
User interface actions
In the operational culture:
Action #8
Do synthesis, taking the contents of the text box as input. Display the resulting synthetic cTag in the Focus.