<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.evoio.org/w/index.php?action=history&amp;feed=atom&amp;title=Phylotastic%2FArchitecture</id>
	<title>Phylotastic/Architecture - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.evoio.org/w/index.php?action=history&amp;feed=atom&amp;title=Phylotastic%2FArchitecture"/>
	<link rel="alternate" type="text/html" href="https://www.evoio.org/w/index.php?title=Phylotastic/Architecture&amp;action=history"/>
	<updated>2026-06-10T01:05:22Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://www.evoio.org/w/index.php?title=Phylotastic/Architecture&amp;diff=3520&amp;oldid=prev</id>
		<title>Hilmar: /* Controller implementation in Node.js */</title>
		<link rel="alternate" type="text/html" href="https://www.evoio.org/w/index.php?title=Phylotastic/Architecture&amp;diff=3520&amp;oldid=prev"/>
		<updated>2012-06-10T16:52:28Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Controller implementation in Node.js&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Screencast ==&lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=d-fDngweW-M&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Our architecture is based on the [http://en.wikipedia.org/wiki/Model–view–controller Model-View-Controller] design pattern and takes the following modules into consideration:&lt;br /&gt;
&lt;br /&gt;
* TNRS&lt;br /&gt;
* Topology prune/graft&lt;br /&gt;
* Tree Store&lt;br /&gt;
* Syntax Format Converter&lt;br /&gt;
* Branch length annotator&lt;br /&gt;
* Logger&lt;br /&gt;
&lt;br /&gt;
The architecture diagram below presents the interaction between the various modules. Each module will be treated as a &amp;quot;black box&amp;quot; in this architecture and the only elements we are concerned about here will be the interoperation between the modules. &lt;br /&gt;
&lt;br /&gt;
These should fuel the input/output [http://wiki.g2.bx.psu.edu/Admin/Tools/Tool%20Config%20Syntax specifications] for each module. The architecture also clarifies what is passed by reference (blue arrows) from what is passed as values (black arrows). As an example, mega trees should not be passed directly to the controller but, instead, only the reference to those mega-trees should be sent. These references are then passed to the topology module, which will use those trees.&lt;br /&gt;
&lt;br /&gt;
[[File:Phylotastic_architecture1.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
Steps:&lt;br /&gt;
&lt;br /&gt;
# Start&lt;br /&gt;
#* list of name strings [mandatory user input]&lt;br /&gt;
#* TNRS sources&lt;br /&gt;
#* TNRS “knobs” (“fuzziness” etc.)&lt;br /&gt;
# Post TNRS&lt;br /&gt;
#* Choices about unresolved names&lt;br /&gt;
# Megatree retrieval&lt;br /&gt;
#* (mega-)tree store source&lt;br /&gt;
#* automated tree query for applicable trees (per treestore) with user-supplied parameters&lt;br /&gt;
#* (mega-)tree filter/selection criteria (e.g. degree of overlap) &lt;br /&gt;
# Pre-Topology&lt;br /&gt;
#* application of branch lengths?&lt;br /&gt;
# Topology&lt;br /&gt;
#* (see Tolopolgy, below)&lt;br /&gt;
# Post-topology&lt;br /&gt;
#* application of branch lengths?&lt;br /&gt;
&lt;br /&gt;
== Sample Workflow ==&lt;br /&gt;
&lt;br /&gt;
=== Input ===&lt;br /&gt;
&lt;br /&gt;
Input species list: &amp;quot;Homo sapiens&amp;quot; (human), &amp;quot;Pan troglodytes&amp;quot; (chimp), &amp;quot;Gorilla gorilla&amp;quot; (gorilla)&lt;br /&gt;
&lt;br /&gt;
=== Step 1: TRNS Resolution ===&lt;br /&gt;
&lt;br /&gt;
Invocation: &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;TRNS_SERVICE_URL&amp;gt;?query=Homo+sapiens%0APan+troglodytes%0AGorilla+gorilla&lt;br /&gt;
&lt;br /&gt;
Output (JSON):&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;metadata&amp;quot;: {&lt;br /&gt;
        &amp;quot;jobId&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;submitDate&amp;quot;: &amp;quot;2012-06-06T14:54Z&amp;quot;,&lt;br /&gt;
        &amp;quot;sources&amp;quot;: [{&lt;br /&gt;
            &amp;quot;sourceId&amp;quot;: &amp;quot;ITIS&amp;quot;,&lt;br /&gt;
            &amp;quot;sourceName&amp;quot;: &amp;quot;Integrated Taxonomic Information System&amp;quot;,&lt;br /&gt;
            &amp;quot;uri&amp;quot;: &amp;quot;http://www.itis.gov/&amp;quot;,&lt;br /&gt;
            &amp;quot;rank&amp;quot;: 1,&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;online&amp;quot;,&lt;br /&gt;
            &amp;quot;annotations&amp;quot;: {&amp;quot;TSN&amp;quot;: &amp;quot;Taxonomic Serial Number, ITIS' internal identifier&amp;quot;}&lt;br /&gt;
        }, {&lt;br /&gt;
            &amp;quot;sourceId&amp;quot;: &amp;quot;NCBI Taxonomy&amp;quot;,&lt;br /&gt;
            &amp;quot;sourceName&amp;quot;: &amp;quot;NCBI Taxonomy&amp;quot;,&lt;br /&gt;
            &amp;quot;uri&amp;quot;: &amp;quot;http://www.ncbi.nlm.nih.gov/taxonomy&amp;quot;,&lt;br /&gt;
            &amp;quot;rank&amp;quot;: 2,&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;online&amp;quot;,&lt;br /&gt;
            &amp;quot;annotations&amp;quot;: {'nucleotide_uri':&amp;amp;nbsp;&amp;quot;A link to nucleotide sequences on GenBank for this taxon&amp;quot;, 'protein_uri':&amp;amp;nbsp;&amp;quot;A link to protein sequences on GenBank for this taxon.&amp;quot;}&lt;br /&gt;
        }]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;names&amp;quot;: [{&lt;br /&gt;
        &amp;quot;submittedName&amp;quot;: &amp;quot;Homo sapiens&amp;quot;,&lt;br /&gt;
        &amp;quot;matchCount&amp;quot;: 2,&lt;br /&gt;
        &amp;quot;matches&amp;quot;: [{&lt;br /&gt;
            &amp;quot;sourceId&amp;quot;: &amp;quot;ITIS&amp;quot;,&lt;br /&gt;
            &amp;quot;matchedName&amp;quot;: &amp;quot;Homo sapiens&amp;quot;,&lt;br /&gt;
            &amp;quot;acceptedName&amp;quot;: &amp;quot;Homo sapiens&amp;quot;,&lt;br /&gt;
            &amp;quot;uri&amp;quot;: &amp;quot;http://www.itis.gov/servlet/SingleRpt/SingleRpt?search_topic=TSN&amp;amp;search_value=180092&amp;quot;,&lt;br /&gt;
            &amp;quot;annotations&amp;quot;: { &amp;quot;TSN&amp;quot;: &amp;quot;180092&amp;quot; },&lt;br /&gt;
            &amp;quot;score&amp;quot;: 1.0&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;sourceId&amp;quot;: &amp;quot;NCBI Taxonomy&amp;quot;,&lt;br /&gt;
            &amp;quot;matchedName&amp;quot;: &amp;quot;Homo sapiens&amp;quot;,&lt;br /&gt;
            &amp;quot;acceptedName&amp;quot;: &amp;quot;Homo sapiens&amp;quot;,&lt;br /&gt;
            &amp;quot;uri&amp;quot;: &amp;quot;http://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=9606&amp;quot;,&lt;br /&gt;
            &amp;quot;annotations&amp;quot;: { },&lt;br /&gt;
            &amp;quot;score&amp;quot;: 1.0&lt;br /&gt;
        }]&lt;br /&gt;
    }, &lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;submittedName&amp;quot;: &amp;quot;Pan troglodytes&amp;quot;,&lt;br /&gt;
        &amp;quot;matchCount&amp;quot;: 2,&lt;br /&gt;
        &amp;quot;matches&amp;quot;: [{&lt;br /&gt;
            &amp;quot;sourceId&amp;quot;: &amp;quot;ITIS&amp;quot;,&lt;br /&gt;
            &amp;quot;matchedName&amp;quot;: &amp;quot;Pan troglodytes&amp;quot;,&lt;br /&gt;
            &amp;quot;acceptedName&amp;quot;: &amp;quot;Pan troglodytes&amp;quot;,&lt;br /&gt;
            &amp;quot;uri&amp;quot;: &amp;quot;http://www.itis.gov/servlet/SingleRpt/SingleRpt?search_topic=TSN&amp;amp;search_value=573082&amp;quot;,&lt;br /&gt;
            &amp;quot;annotations&amp;quot;: { &amp;quot;TSN&amp;quot;: &amp;quot;573082&amp;quot; },&lt;br /&gt;
            &amp;quot;score&amp;quot;: 1.0&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;sourceId&amp;quot;: &amp;quot;NCBI Taxonomy&amp;quot;,&lt;br /&gt;
            &amp;quot;matchedName&amp;quot;: &amp;quot;Pan troglodytes&amp;quot;,&lt;br /&gt;
            &amp;quot;acceptedName&amp;quot;: &amp;quot;Pan troglodytes&amp;quot;,&lt;br /&gt;
            &amp;quot;uri&amp;quot;: &amp;quot;http://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=9598&amp;quot;,&lt;br /&gt;
            &amp;quot;annotations&amp;quot;: { },&lt;br /&gt;
            &amp;quot;score&amp;quot;: 1.0&lt;br /&gt;
        }]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;submittedName&amp;quot;: &amp;quot;Gorilla gorilla&amp;quot;,&lt;br /&gt;
        &amp;quot;matchCount&amp;quot;: 2,&lt;br /&gt;
        &amp;quot;matches&amp;quot;: [{&lt;br /&gt;
            &amp;quot;sourceId&amp;quot;: &amp;quot;ITIS&amp;quot;,&lt;br /&gt;
            &amp;quot;matchedName&amp;quot;: &amp;quot;Gorilla gorilla&amp;quot;,&lt;br /&gt;
            &amp;quot;acceptedName&amp;quot;: &amp;quot;Gorilla gorilla&amp;quot;,&lt;br /&gt;
            &amp;quot;uri&amp;quot;: &amp;quot;http://www.itis.gov/servlet/SingleRpt/SingleRpt?search_topic=TSN&amp;amp;search_value=573080&amp;quot;,&lt;br /&gt;
            &amp;quot;annotations&amp;quot;: { &amp;quot;TSN&amp;quot;: &amp;quot;573080&amp;quot; },&lt;br /&gt;
            &amp;quot;score&amp;quot;: 1.0&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;sourceId&amp;quot;: &amp;quot;NCBI Taxonomy&amp;quot;,&lt;br /&gt;
            &amp;quot;matchedName&amp;quot;: &amp;quot;Gorilla gorilla&amp;quot;,&lt;br /&gt;
            &amp;quot;acceptedName&amp;quot;: &amp;quot;Gorilla gorilla&amp;quot;,&lt;br /&gt;
            &amp;quot;uri&amp;quot;: &amp;quot;http://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=9593&amp;quot;,&lt;br /&gt;
            &amp;quot;annotations&amp;quot;: { },&lt;br /&gt;
            &amp;quot;score&amp;quot;: 1.0&lt;br /&gt;
        }]&lt;br /&gt;
    }]&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Identify Candidate Trees ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Invocation: HTTP POST the following JSON to &amp;lt;TREE_STORE_URL&amp;gt;/phylows/find/tree&lt;br /&gt;
&lt;br /&gt;
  taxa_uris=[&lt;br /&gt;
     &amp;quot;http://www.itis.gov/servlet/SingleRpt/SingleRpt?search_topic=TSN&amp;amp;search_value=180092&amp;quot;,&lt;br /&gt;
     &amp;quot;http://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=9606&amp;quot;,&lt;br /&gt;
     &amp;quot;http://www.itis.gov/servlet/SingleRpt/SingleRpt?search_topic=TSN&amp;amp;search_value=573082&amp;quot;,&lt;br /&gt;
     &amp;quot;http://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=9598&amp;quot;,&lt;br /&gt;
     &amp;quot;http://www.itis.gov/servlet/SingleRpt/SingleRpt?search_topic=TSN&amp;amp;search_value=573080&amp;quot;,&lt;br /&gt;
     &amp;quot;http://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=9593&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
&lt;br /&gt;
This JSON is extracted from the output of the TNRS service.&lt;br /&gt;
&lt;br /&gt;
Output: URIs of matching trees in the tree store +Provenance &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;http://example.com/tree10&amp;quot; : { &amp;quot;label&amp;quot; : &amp;quot;something&amp;quot;, &amp;quot;author&amp;quot;: &amp;quot;&amp;quot;, &amp;quot;matches&amp;quot; : [&amp;quot;http://example.com/taxa1&amp;quot;] }, &lt;br /&gt;
  &amp;quot;http://example.com/tree34&amp;quot;: { &amp;quot;label&amp;quot; : &amp;quot;something&amp;quot;, &amp;quot;author&amp;quot;: &amp;quot;&amp;quot;, &amp;quot;matches&amp;quot; : [&amp;quot;http://example.com/taxa2&amp;quot;] }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example query:&lt;br /&gt;
http://phylotastic.nescent.org/PhylotasticTreeStore/phylows/find/tree?taxa_uris=http://phylotastic.nescent.org/IDs/ID7.dog&amp;amp;taxa_uris=http://phylotastic.nescent.org/IDs/ID1.bear&lt;br /&gt;
&lt;br /&gt;
returns&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;http://phylotastic.nescent.org/trees/Treemytree5&amp;quot;: {&amp;quot;author&amp;quot;: &amp;quot;&amp;quot;, &amp;quot;label&amp;quot;: &amp;quot;&amp;quot;}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and the key of that JSON response is the tree_uri in a get tree call:&lt;br /&gt;
&lt;br /&gt;
http://phylotastic.nescent.org/PhylotasticTreeStore/phylows/tree?tree_uri=http://phylotastic.nescent.org/trees/Treemytree5&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Pruning Service ===&lt;br /&gt;
&lt;br /&gt;
Invocation: HTTP POST the following JSON to &amp;lt;PRUNING_SERVICE_URL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  tree_uri=http://www.evoio.org/wg/evoio/images/2/26/Bininda-emonds_2007_mammals.nex&lt;br /&gt;
  taxa_uris=[&lt;br /&gt;
     &amp;quot;http://www.itis.gov/servlet/SingleRpt/SingleRpt?search_topic=TSN&amp;amp;search_value=180092&amp;quot;,&lt;br /&gt;
     &amp;quot;http://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=9606&amp;quot;,&lt;br /&gt;
     &amp;quot;http://www.itis.gov/servlet/SingleRpt/SingleRpt?search_topic=TSN&amp;amp;search_value=573082&amp;quot;,&lt;br /&gt;
     &amp;quot;http://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=9598&amp;quot;,&lt;br /&gt;
     &amp;quot;http://www.itis.gov/servlet/SingleRpt/SingleRpt?search_topic=TSN&amp;amp;search_value=573080&amp;quot;,&lt;br /&gt;
     &amp;quot;http://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=9593&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
&lt;br /&gt;
Output: Pruned tree&lt;br /&gt;
&lt;br /&gt;
While processing the above request from the controller, the pruning service will retrieve the &lt;br /&gt;
full representation of the tree from the tree store:&lt;br /&gt;
&lt;br /&gt;
Invocation: HTTP POST the following to the &amp;lt;TREE_STORE_SERVICE_URL&amp;gt;/tree&lt;br /&gt;
&lt;br /&gt;
   tree_uri=http://www.evoio.org/wg/evoio/images/2/26/Bininda-emonds_2007_mammals.nex&lt;br /&gt;
&lt;br /&gt;
Output: Full tree in NeXML or Newick. For example:&lt;br /&gt;
&lt;br /&gt;
http://phylotastic.nescent.org/PhylotasticTreeStore/phylows/tree?tree_uri=http://phylotastic.nescent.org/trees/Treemytree5&lt;br /&gt;
&lt;br /&gt;
http://phylotastic.nescent.org/PhylotasticTreeStore/phylows/tree?tree_uri=http://phylotastic.nescent.org/trees/Treemytree5&amp;amp;format=rdfxml&lt;br /&gt;
&lt;br /&gt;
== Interface description language example ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tool id=&amp;quot;fa_gc_content_1&amp;quot; name=&amp;quot;Compute GC content&amp;quot;&amp;gt;&lt;br /&gt;
    	&amp;lt;description&amp;gt;&lt;br /&gt;
        	for each sequence in a file&lt;br /&gt;
    	&amp;lt;/description&amp;gt;&lt;br /&gt;
    	&amp;lt;command interpreter=&amp;quot;perl&amp;quot;&amp;gt;toolExample.pl $input $output&amp;lt;/command&amp;gt;&lt;br /&gt;
    	&amp;lt;inputs&amp;gt;&lt;br /&gt;
        	&amp;lt;param format=&amp;quot;fasta&amp;quot; name=&amp;quot;input&amp;quot; type=&amp;quot;data&amp;quot; label=&amp;quot;Source file&amp;quot;/&amp;gt;&lt;br /&gt;
    	&amp;lt;/inputs&amp;gt;&lt;br /&gt;
    	&amp;lt;outputs&amp;gt;&lt;br /&gt;
        	&amp;lt;data format=&amp;quot;tabular&amp;quot; name=&amp;quot;output&amp;quot; /&amp;gt;&lt;br /&gt;
    	&amp;lt;/outputs&amp;gt;&lt;br /&gt;
    	&amp;lt;tests&amp;gt;&lt;br /&gt;
        	&amp;lt;test&amp;gt;&lt;br /&gt;
            	&amp;lt;param name=&amp;quot;input&amp;quot; value=&amp;quot;fa_gc_content_input.fa&amp;quot;/&amp;gt;&lt;br /&gt;
            	&amp;lt;output name=&amp;quot;out_file1&amp;quot; file=&amp;quot;fa_gc_content_output.txt&amp;quot;/&amp;gt;&lt;br /&gt;
        	&amp;lt;/test&amp;gt;&lt;br /&gt;
    	&amp;lt;/tests&amp;gt;&lt;br /&gt;
    	&amp;lt;help&amp;gt;&lt;br /&gt;
        	This tool computes GC content from a FASTA file.&lt;br /&gt;
    	&amp;lt;/help&amp;gt;&lt;br /&gt;
 &amp;lt;/tool&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Topology Module ==&lt;br /&gt;
&lt;br /&gt;
_per megatree in:_&lt;br /&gt;
&lt;br /&gt;
=== Input ===&lt;br /&gt;
&lt;br /&gt;
* List of names [mandatory; post-cleaning]&lt;br /&gt;
** with Taxonomic cues/guides [optional; can also be auto-discovered]&lt;br /&gt;
** Megatree choice&lt;br /&gt;
* Configuration:&lt;br /&gt;
** Grafting policy&lt;br /&gt;
*** choices of insertion of non-matching terminals&lt;br /&gt;
**** sister to random terminal&lt;br /&gt;
**** random node in matching clade&lt;br /&gt;
**** basal&lt;br /&gt;
**** conservatively collapse clade&lt;br /&gt;
** Pruning policy&lt;br /&gt;
*** restrict tips to names given, or return all tips in minimum spanning clade&lt;br /&gt;
*** retain or delete out-degree one nodes&lt;br /&gt;
*** how to handle metadata associated with nodes/edges that have been deleted&lt;br /&gt;
&lt;br /&gt;
=== API ===&lt;br /&gt;
&lt;br /&gt;
* TNRS: please see [http://www.evoio.org/wiki/Phylotastic/TNRS#Example API in TNRS ]&lt;br /&gt;
*treestore&lt;br /&gt;
Request: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
taxa_uris=http://www.itis.gov/servlet/SingleRpt/SingleRpt?search_topic=TSN&amp;amp;search_value=180195%0Ahttp://www.tropicos.org/Name/1300071&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Results: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;http://example.com/tree10&amp;quot; : { &amp;quot;label&amp;quot; : &amp;quot;something&amp;quot;, &amp;quot;author&amp;quot;: &amp;quot;&amp;quot;, &amp;quot;matches&amp;quot; : [&amp;quot;http://example.com/taxa1&amp;quot;] }, &lt;br /&gt;
  &amp;quot;http://example.com/tree34&amp;quot;: { &amp;quot;label&amp;quot; : &amp;quot;something&amp;quot;, &amp;quot;author&amp;quot;: &amp;quot;&amp;quot;, &amp;quot;matches&amp;quot; : [&amp;quot;http://example.com/taxa2&amp;quot;] }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Output ===&lt;br /&gt;
&lt;br /&gt;
* One or more tree(s)&lt;br /&gt;
** topology&lt;br /&gt;
** node-by-node metadata [as per megatree, optional]&lt;br /&gt;
* list of non-matching taxa&lt;br /&gt;
** logging record to logger&lt;br /&gt;
&lt;br /&gt;
== Branch lengths ==&lt;br /&gt;
&lt;br /&gt;
Possible strategies:&lt;br /&gt;
&lt;br /&gt;
* NPRS&lt;br /&gt;
** Based on input BLs&lt;br /&gt;
** Default (no input BLs)&lt;br /&gt;
* Node-age constrained equidistant adjustment (BLADJ)&lt;br /&gt;
* refer to BL group (Congruifier)&lt;br /&gt;
&lt;br /&gt;
=== Topology Scenario and Dependencies ===&lt;br /&gt;
&lt;br /&gt;
Topology services depend on two other services: TNRS and TREE SOURCE&lt;br /&gt;
User starts by submitting a list of names and a set of configuration elements (e.g. sources to use, knobs, etc). TNRS returns list of taxa and their URI. User then decides whether resolved names are correct. This list of chosen URI taxa will be sent to the tree source, along with a selection of mega tree sources. The tree store returns the URI of a set of megatrees that are applicable for the taxa submitted. The user selects, from these trees, the list of trees that he/she wants to use. This list, along with the taxa uri, is submitted to topology module, along with a set of configuration instructions. Phylotatic tree (or trees) are returned to the user, including node-by-node metadata information. &lt;br /&gt;
&lt;br /&gt;
== Controller Behavior == &lt;br /&gt;
&lt;br /&gt;
[[File:Use_case_topology2.png]]&lt;br /&gt;
&lt;br /&gt;
== Controller implementation in Node.js == &lt;br /&gt;
&lt;br /&gt;
https://github.com/helenadeus/phylotastic_js&lt;/div&gt;</summary>
		<author><name>Hilmar</name></author>
	</entry>
	<entry>
		<id>https://www.evoio.org/w/index.php?title=Phylotastic/Architecture&amp;diff=3515&amp;oldid=prev</id>
		<title>Hilmar: /* Step 2: Identify Candidate Trees */</title>
		<link rel="alternate" type="text/html" href="https://www.evoio.org/w/index.php?title=Phylotastic/Architecture&amp;diff=3515&amp;oldid=prev"/>
		<updated>2012-06-08T14:48:37Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Step 2: Identify Candidate Trees&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Screencast ==&lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=d-fDngweW-M&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Our architecture is based on the [http://en.wikipedia.org/wiki/Model–view–controller Model-View-Controller] design pattern and takes the following modules into consideration:&lt;br /&gt;
&lt;br /&gt;
* TNRS&lt;br /&gt;
* Topology prune/graft&lt;br /&gt;
* Tree Store&lt;br /&gt;
* Syntax Format Converter&lt;br /&gt;
* Branch length annotator&lt;br /&gt;
* Logger&lt;br /&gt;
&lt;br /&gt;
The architecture diagram below presents the interaction between the various modules. Each module will be treated as a &amp;quot;black box&amp;quot; in this architecture and the only elements we are concerned about here will be the interoperation between the modules. &lt;br /&gt;
&lt;br /&gt;
These should fuel the input/output [http://wiki.g2.bx.psu.edu/Admin/Tools/Tool%20Config%20Syntax specifications] for each module. The architecture also clarifies what is passed by reference (blue arrows) from what is passed as values (black arrows). As an example, mega trees should not be passed directly to the controller but, instead, only the reference to those mega-trees should be sent. These references are then passed to the topology module, which will use those trees.&lt;br /&gt;
&lt;br /&gt;
[[File:Phylotastic_architecture1.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
Steps:&lt;br /&gt;
&lt;br /&gt;
# Start&lt;br /&gt;
#* list of name strings [mandatory user input]&lt;br /&gt;
#* TNRS sources&lt;br /&gt;
#* TNRS “knobs” (“fuzziness” etc.)&lt;br /&gt;
# Post TNRS&lt;br /&gt;
#* Choices about unresolved names&lt;br /&gt;
# Megatree retrieval&lt;br /&gt;
#* (mega-)tree store source&lt;br /&gt;
#* automated tree query for applicable trees (per treestore) with user-supplied parameters&lt;br /&gt;
#* (mega-)tree filter/selection criteria (e.g. degree of overlap) &lt;br /&gt;
# Pre-Topology&lt;br /&gt;
#* application of branch lengths?&lt;br /&gt;
# Topology&lt;br /&gt;
#* (see Tolopolgy, below)&lt;br /&gt;
# Post-topology&lt;br /&gt;
#* application of branch lengths?&lt;br /&gt;
&lt;br /&gt;
== Sample Workflow ==&lt;br /&gt;
&lt;br /&gt;
=== Input ===&lt;br /&gt;
&lt;br /&gt;
Input species list: &amp;quot;Homo sapiens&amp;quot; (human), &amp;quot;Pan troglodytes&amp;quot; (chimp), &amp;quot;Gorilla gorilla&amp;quot; (gorilla)&lt;br /&gt;
&lt;br /&gt;
=== Step 1: TRNS Resolution ===&lt;br /&gt;
&lt;br /&gt;
Invocation: &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;TRNS_SERVICE_URL&amp;gt;?query=Homo+sapiens%0APan+troglodytes%0AGorilla+gorilla&lt;br /&gt;
&lt;br /&gt;
Output (JSON):&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;metadata&amp;quot;: {&lt;br /&gt;
        &amp;quot;jobId&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;submitDate&amp;quot;: &amp;quot;2012-06-06T14:54Z&amp;quot;,&lt;br /&gt;
        &amp;quot;sources&amp;quot;: [{&lt;br /&gt;
            &amp;quot;sourceId&amp;quot;: &amp;quot;ITIS&amp;quot;,&lt;br /&gt;
            &amp;quot;sourceName&amp;quot;: &amp;quot;Integrated Taxonomic Information System&amp;quot;,&lt;br /&gt;
            &amp;quot;uri&amp;quot;: &amp;quot;http://www.itis.gov/&amp;quot;,&lt;br /&gt;
            &amp;quot;rank&amp;quot;: 1,&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;online&amp;quot;,&lt;br /&gt;
            &amp;quot;annotations&amp;quot;: {&amp;quot;TSN&amp;quot;: &amp;quot;Taxonomic Serial Number, ITIS' internal identifier&amp;quot;}&lt;br /&gt;
        }, {&lt;br /&gt;
            &amp;quot;sourceId&amp;quot;: &amp;quot;NCBI Taxonomy&amp;quot;,&lt;br /&gt;
            &amp;quot;sourceName&amp;quot;: &amp;quot;NCBI Taxonomy&amp;quot;,&lt;br /&gt;
            &amp;quot;uri&amp;quot;: &amp;quot;http://www.ncbi.nlm.nih.gov/taxonomy&amp;quot;,&lt;br /&gt;
            &amp;quot;rank&amp;quot;: 2,&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;online&amp;quot;,&lt;br /&gt;
            &amp;quot;annotations&amp;quot;: {'nucleotide_uri':&amp;amp;nbsp;&amp;quot;A link to nucleotide sequences on GenBank for this taxon&amp;quot;, 'protein_uri':&amp;amp;nbsp;&amp;quot;A link to protein sequences on GenBank for this taxon.&amp;quot;}&lt;br /&gt;
        }]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;names&amp;quot;: [{&lt;br /&gt;
        &amp;quot;submittedName&amp;quot;: &amp;quot;Homo sapiens&amp;quot;,&lt;br /&gt;
        &amp;quot;matchCount&amp;quot;: 2,&lt;br /&gt;
        &amp;quot;matches&amp;quot;: [{&lt;br /&gt;
            &amp;quot;sourceId&amp;quot;: &amp;quot;ITIS&amp;quot;,&lt;br /&gt;
            &amp;quot;matchedName&amp;quot;: &amp;quot;Homo sapiens&amp;quot;,&lt;br /&gt;
            &amp;quot;acceptedName&amp;quot;: &amp;quot;Homo sapiens&amp;quot;,&lt;br /&gt;
            &amp;quot;uri&amp;quot;: &amp;quot;http://www.itis.gov/servlet/SingleRpt/SingleRpt?search_topic=TSN&amp;amp;search_value=180092&amp;quot;,&lt;br /&gt;
            &amp;quot;annotations&amp;quot;: { &amp;quot;TSN&amp;quot;: &amp;quot;180092&amp;quot; },&lt;br /&gt;
            &amp;quot;score&amp;quot;: 1.0&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;sourceId&amp;quot;: &amp;quot;NCBI Taxonomy&amp;quot;,&lt;br /&gt;
            &amp;quot;matchedName&amp;quot;: &amp;quot;Homo sapiens&amp;quot;,&lt;br /&gt;
            &amp;quot;acceptedName&amp;quot;: &amp;quot;Homo sapiens&amp;quot;,&lt;br /&gt;
            &amp;quot;uri&amp;quot;: &amp;quot;http://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=9606&amp;quot;,&lt;br /&gt;
            &amp;quot;annotations&amp;quot;: { },&lt;br /&gt;
            &amp;quot;score&amp;quot;: 1.0&lt;br /&gt;
        }]&lt;br /&gt;
    }, &lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;submittedName&amp;quot;: &amp;quot;Pan troglodytes&amp;quot;,&lt;br /&gt;
        &amp;quot;matchCount&amp;quot;: 2,&lt;br /&gt;
        &amp;quot;matches&amp;quot;: [{&lt;br /&gt;
            &amp;quot;sourceId&amp;quot;: &amp;quot;ITIS&amp;quot;,&lt;br /&gt;
            &amp;quot;matchedName&amp;quot;: &amp;quot;Pan troglodytes&amp;quot;,&lt;br /&gt;
            &amp;quot;acceptedName&amp;quot;: &amp;quot;Pan troglodytes&amp;quot;,&lt;br /&gt;
            &amp;quot;uri&amp;quot;: &amp;quot;http://www.itis.gov/servlet/SingleRpt/SingleRpt?search_topic=TSN&amp;amp;search_value=573082&amp;quot;,&lt;br /&gt;
            &amp;quot;annotations&amp;quot;: { &amp;quot;TSN&amp;quot;: &amp;quot;573082&amp;quot; },&lt;br /&gt;
            &amp;quot;score&amp;quot;: 1.0&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;sourceId&amp;quot;: &amp;quot;NCBI Taxonomy&amp;quot;,&lt;br /&gt;
            &amp;quot;matchedName&amp;quot;: &amp;quot;Pan troglodytes&amp;quot;,&lt;br /&gt;
            &amp;quot;acceptedName&amp;quot;: &amp;quot;Pan troglodytes&amp;quot;,&lt;br /&gt;
            &amp;quot;uri&amp;quot;: &amp;quot;http://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=9598&amp;quot;,&lt;br /&gt;
            &amp;quot;annotations&amp;quot;: { },&lt;br /&gt;
            &amp;quot;score&amp;quot;: 1.0&lt;br /&gt;
        }]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;submittedName&amp;quot;: &amp;quot;Gorilla gorilla&amp;quot;,&lt;br /&gt;
        &amp;quot;matchCount&amp;quot;: 2,&lt;br /&gt;
        &amp;quot;matches&amp;quot;: [{&lt;br /&gt;
            &amp;quot;sourceId&amp;quot;: &amp;quot;ITIS&amp;quot;,&lt;br /&gt;
            &amp;quot;matchedName&amp;quot;: &amp;quot;Gorilla gorilla&amp;quot;,&lt;br /&gt;
            &amp;quot;acceptedName&amp;quot;: &amp;quot;Gorilla gorilla&amp;quot;,&lt;br /&gt;
            &amp;quot;uri&amp;quot;: &amp;quot;http://www.itis.gov/servlet/SingleRpt/SingleRpt?search_topic=TSN&amp;amp;search_value=573080&amp;quot;,&lt;br /&gt;
            &amp;quot;annotations&amp;quot;: { &amp;quot;TSN&amp;quot;: &amp;quot;573080&amp;quot; },&lt;br /&gt;
            &amp;quot;score&amp;quot;: 1.0&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;sourceId&amp;quot;: &amp;quot;NCBI Taxonomy&amp;quot;,&lt;br /&gt;
            &amp;quot;matchedName&amp;quot;: &amp;quot;Gorilla gorilla&amp;quot;,&lt;br /&gt;
            &amp;quot;acceptedName&amp;quot;: &amp;quot;Gorilla gorilla&amp;quot;,&lt;br /&gt;
            &amp;quot;uri&amp;quot;: &amp;quot;http://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=9593&amp;quot;,&lt;br /&gt;
            &amp;quot;annotations&amp;quot;: { },&lt;br /&gt;
            &amp;quot;score&amp;quot;: 1.0&lt;br /&gt;
        }]&lt;br /&gt;
    }]&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Identify Candidate Trees ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Invocation: HTTP POST the following JSON to &amp;lt;TREE_STORE_URL&amp;gt;/phylows/find/tree&lt;br /&gt;
&lt;br /&gt;
  taxa_uris=[&lt;br /&gt;
     &amp;quot;http://www.itis.gov/servlet/SingleRpt/SingleRpt?search_topic=TSN&amp;amp;search_value=180092&amp;quot;,&lt;br /&gt;
     &amp;quot;http://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=9606&amp;quot;,&lt;br /&gt;
     &amp;quot;http://www.itis.gov/servlet/SingleRpt/SingleRpt?search_topic=TSN&amp;amp;search_value=573082&amp;quot;,&lt;br /&gt;
     &amp;quot;http://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=9598&amp;quot;,&lt;br /&gt;
     &amp;quot;http://www.itis.gov/servlet/SingleRpt/SingleRpt?search_topic=TSN&amp;amp;search_value=573080&amp;quot;,&lt;br /&gt;
     &amp;quot;http://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=9593&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
&lt;br /&gt;
This JSON is extracted from the output of the TNRS service.&lt;br /&gt;
&lt;br /&gt;
Output: URIs of matching trees in the tree store +Provenance &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;http://example.com/tree10&amp;quot; : { &amp;quot;label&amp;quot; : &amp;quot;something&amp;quot;, &amp;quot;author&amp;quot;: &amp;quot;&amp;quot;, &amp;quot;matches&amp;quot; : [&amp;quot;http://example.com/taxa1&amp;quot;] }, &lt;br /&gt;
  &amp;quot;http://example.com/tree34&amp;quot;: { &amp;quot;label&amp;quot; : &amp;quot;something&amp;quot;, &amp;quot;author&amp;quot;: &amp;quot;&amp;quot;, &amp;quot;matches&amp;quot; : [&amp;quot;http://example.com/taxa2&amp;quot;] }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Pruning Service ===&lt;br /&gt;
&lt;br /&gt;
Invocation: HTTP POST the following JSON to &amp;lt;PRUNING_SERVICE_URL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  tree_uri=http://www.evoio.org/wg/evoio/images/2/26/Bininda-emonds_2007_mammals.nex&lt;br /&gt;
  taxa_uris=[&lt;br /&gt;
     &amp;quot;http://www.itis.gov/servlet/SingleRpt/SingleRpt?search_topic=TSN&amp;amp;search_value=180092&amp;quot;,&lt;br /&gt;
     &amp;quot;http://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=9606&amp;quot;,&lt;br /&gt;
     &amp;quot;http://www.itis.gov/servlet/SingleRpt/SingleRpt?search_topic=TSN&amp;amp;search_value=573082&amp;quot;,&lt;br /&gt;
     &amp;quot;http://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=9598&amp;quot;,&lt;br /&gt;
     &amp;quot;http://www.itis.gov/servlet/SingleRpt/SingleRpt?search_topic=TSN&amp;amp;search_value=573080&amp;quot;,&lt;br /&gt;
     &amp;quot;http://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=9593&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
&lt;br /&gt;
Output: Pruned tree&lt;br /&gt;
&lt;br /&gt;
While processing the above request from the controller, the pruning service will retrieve the &lt;br /&gt;
full representation of the tree from the tree store:&lt;br /&gt;
&lt;br /&gt;
Invocation: HTTP POST the following to the &amp;lt;TREE_STORE_SERVICE_URL&amp;gt;/tree&lt;br /&gt;
&lt;br /&gt;
   tree_uri=http://www.evoio.org/wg/evoio/images/2/26/Bininda-emonds_2007_mammals.nex&lt;br /&gt;
&lt;br /&gt;
Output: Full tree in NeXML or Newick. For example:&lt;br /&gt;
&lt;br /&gt;
http://phylotastic.nescent.org/PhylotasticTreeStore/phylows/tree?tree_uri=http://phylotastic.nescent.org/trees/Treemytree5&lt;br /&gt;
&lt;br /&gt;
http://phylotastic.nescent.org/PhylotasticTreeStore/phylows/tree?tree_uri=http://phylotastic.nescent.org/trees/Treemytree5&amp;amp;format=rdfxml&lt;br /&gt;
&lt;br /&gt;
== Interface description language example ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tool id=&amp;quot;fa_gc_content_1&amp;quot; name=&amp;quot;Compute GC content&amp;quot;&amp;gt;&lt;br /&gt;
    	&amp;lt;description&amp;gt;&lt;br /&gt;
        	for each sequence in a file&lt;br /&gt;
    	&amp;lt;/description&amp;gt;&lt;br /&gt;
    	&amp;lt;command interpreter=&amp;quot;perl&amp;quot;&amp;gt;toolExample.pl $input $output&amp;lt;/command&amp;gt;&lt;br /&gt;
    	&amp;lt;inputs&amp;gt;&lt;br /&gt;
        	&amp;lt;param format=&amp;quot;fasta&amp;quot; name=&amp;quot;input&amp;quot; type=&amp;quot;data&amp;quot; label=&amp;quot;Source file&amp;quot;/&amp;gt;&lt;br /&gt;
    	&amp;lt;/inputs&amp;gt;&lt;br /&gt;
    	&amp;lt;outputs&amp;gt;&lt;br /&gt;
        	&amp;lt;data format=&amp;quot;tabular&amp;quot; name=&amp;quot;output&amp;quot; /&amp;gt;&lt;br /&gt;
    	&amp;lt;/outputs&amp;gt;&lt;br /&gt;
    	&amp;lt;tests&amp;gt;&lt;br /&gt;
        	&amp;lt;test&amp;gt;&lt;br /&gt;
            	&amp;lt;param name=&amp;quot;input&amp;quot; value=&amp;quot;fa_gc_content_input.fa&amp;quot;/&amp;gt;&lt;br /&gt;
            	&amp;lt;output name=&amp;quot;out_file1&amp;quot; file=&amp;quot;fa_gc_content_output.txt&amp;quot;/&amp;gt;&lt;br /&gt;
        	&amp;lt;/test&amp;gt;&lt;br /&gt;
    	&amp;lt;/tests&amp;gt;&lt;br /&gt;
    	&amp;lt;help&amp;gt;&lt;br /&gt;
        	This tool computes GC content from a FASTA file.&lt;br /&gt;
    	&amp;lt;/help&amp;gt;&lt;br /&gt;
 &amp;lt;/tool&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Topology Module ==&lt;br /&gt;
&lt;br /&gt;
_per megatree in:_&lt;br /&gt;
&lt;br /&gt;
=== Input ===&lt;br /&gt;
&lt;br /&gt;
* List of names [mandatory; post-cleaning]&lt;br /&gt;
** with Taxonomic cues/guides [optional; can also be auto-discovered]&lt;br /&gt;
** Megatree choice&lt;br /&gt;
* Configuration:&lt;br /&gt;
** Grafting policy&lt;br /&gt;
*** choices of insertion of non-matching terminals&lt;br /&gt;
**** sister to random terminal&lt;br /&gt;
**** random node in matching clade&lt;br /&gt;
**** basal&lt;br /&gt;
**** conservatively collapse clade&lt;br /&gt;
** Pruning policy&lt;br /&gt;
*** restrict tips to names given, or return all tips in minimum spanning clade&lt;br /&gt;
*** retain or delete out-degree one nodes&lt;br /&gt;
*** how to handle metadata associated with nodes/edges that have been deleted&lt;br /&gt;
&lt;br /&gt;
=== API ===&lt;br /&gt;
&lt;br /&gt;
* TNRS: please see [http://www.evoio.org/wiki/Phylotastic/TNRS#Example API in TNRS ]&lt;br /&gt;
*treestore&lt;br /&gt;
Request: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
taxa_uris=http://www.itis.gov/servlet/SingleRpt/SingleRpt?search_topic=TSN&amp;amp;search_value=180195%0Ahttp://www.tropicos.org/Name/1300071&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Results: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;http://example.com/tree10&amp;quot; : { &amp;quot;label&amp;quot; : &amp;quot;something&amp;quot;, &amp;quot;author&amp;quot;: &amp;quot;&amp;quot;, &amp;quot;matches&amp;quot; : [&amp;quot;http://example.com/taxa1&amp;quot;] }, &lt;br /&gt;
  &amp;quot;http://example.com/tree34&amp;quot;: { &amp;quot;label&amp;quot; : &amp;quot;something&amp;quot;, &amp;quot;author&amp;quot;: &amp;quot;&amp;quot;, &amp;quot;matches&amp;quot; : [&amp;quot;http://example.com/taxa2&amp;quot;] }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Output ===&lt;br /&gt;
&lt;br /&gt;
* One or more tree(s)&lt;br /&gt;
** topology&lt;br /&gt;
** node-by-node metadata [as per megatree, optional]&lt;br /&gt;
* list of non-matching taxa&lt;br /&gt;
** logging record to logger&lt;br /&gt;
&lt;br /&gt;
== Branch lengths ==&lt;br /&gt;
&lt;br /&gt;
Possible strategies:&lt;br /&gt;
&lt;br /&gt;
* NPRS&lt;br /&gt;
** Based on input BLs&lt;br /&gt;
** Default (no input BLs)&lt;br /&gt;
* Node-age constrained equidistant adjustment (BLADJ)&lt;br /&gt;
* refer to BL group (Congruifier)&lt;br /&gt;
&lt;br /&gt;
=== Topology Scenario and Dependencies ===&lt;br /&gt;
&lt;br /&gt;
Topology services depend on two other services: TNRS and TREE SOURCE&lt;br /&gt;
User starts by submitting a list of names and a set of configuration elements (e.g. sources to use, knobs, etc). TNRS returns list of taxa and their URI. User then decides whether resolved names are correct. This list of chosen URI taxa will be sent to the tree source, along with a selection of mega tree sources. The tree store returns the URI of a set of megatrees that are applicable for the taxa submitted. The user selects, from these trees, the list of trees that he/she wants to use. This list, along with the taxa uri, is submitted to topology module, along with a set of configuration instructions. Phylotatic tree (or trees) are returned to the user, including node-by-node metadata information. &lt;br /&gt;
&lt;br /&gt;
== Controller Behavior == &lt;br /&gt;
&lt;br /&gt;
[[File:Use_case_topology2.png]]&lt;/div&gt;</summary>
		<author><name>Hilmar</name></author>
	</entry>
	<entry>
		<id>https://www.evoio.org/w/index.php?title=Phylotastic/Architecture&amp;diff=3479&amp;oldid=prev</id>
		<title>Hilmar at 18:51, 5 June 2012</title>
		<link rel="alternate" type="text/html" href="https://www.evoio.org/w/index.php?title=Phylotastic/Architecture&amp;diff=3479&amp;oldid=prev"/>
		<updated>2012-06-05T18:51:51Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:51, 5 June 2012&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;div style=&quot;float: right;&quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Our architecture is based on the [http://en.wikipedia.org/wiki/Model–view–controller Model-View-Controller] design pattern and takes the following modules into consideration:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Our architecture is based on the [http://en.wikipedia.org/wiki/Model–view–controller Model-View-Controller] design pattern and takes the following modules into consideration:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Hilmar</name></author>
	</entry>
	<entry>
		<id>https://www.evoio.org/w/index.php?title=Phylotastic/Architecture&amp;diff=3478&amp;oldid=prev</id>
		<title>Hilmar at 18:50, 5 June 2012</title>
		<link rel="alternate" type="text/html" href="https://www.evoio.org/w/index.php?title=Phylotastic/Architecture&amp;diff=3478&amp;oldid=prev"/>
		<updated>2012-06-05T18:50:50Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:50, 5 June 2012&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l12&quot;&gt;Line 12:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 12:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;These should fuel the input/output [http://wiki.g2.bx.psu.edu/Admin/Tools/Tool%20Config%20Syntax specifications] for each module. The architecture also clarifies what is passed by reference (blue arrows) from what is passed as values (black arrows). As an example, mega trees should not be passed directly to the controller but, instead, only the reference to those mega-trees should be sent. These references are then passed to the topology module, which will use those trees.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;These should fuel the input/output [http://wiki.g2.bx.psu.edu/Admin/Tools/Tool%20Config%20Syntax specifications] for each module. The architecture also clarifies what is passed by reference (blue arrows) from what is passed as values (black arrows). As an example, mega trees should not be passed directly to the controller but, instead, only the reference to those mega-trees should be sent. These references are then passed to the topology module, which will use those trees.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:Phylotastic_architecture.jpg]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:Phylotastic_architecture.jpg&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|800px&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Controller decision elements ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Controller decision elements ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Hilmar</name></author>
	</entry>
	<entry>
		<id>https://www.evoio.org/w/index.php?title=Phylotastic/Architecture&amp;diff=3477&amp;oldid=prev</id>
		<title>Hilmar at 18:50, 5 June 2012</title>
		<link rel="alternate" type="text/html" href="https://www.evoio.org/w/index.php?title=Phylotastic/Architecture&amp;diff=3477&amp;oldid=prev"/>
		<updated>2012-06-05T18:50:14Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:50, 5 June 2012&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Our architecture is based on &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;model&lt;/del&gt;-&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;view&lt;/del&gt;-&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;controller &lt;/del&gt;and &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;will take &lt;/del&gt;the following modules into consideration&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Our architecture is based on &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the [http://en.wikipedia.org/wiki/Model–view–controller Model&lt;/ins&gt;-&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;View&lt;/ins&gt;-&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Controller] design pattern &lt;/ins&gt;and &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;takes &lt;/ins&gt;the following modules into consideration&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* TNRS&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* TNRS&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l11&quot;&gt;Line 11:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 11:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;These should fuel the input/output [http://wiki.g2.bx.psu.edu/Admin/Tools/Tool%20Config%20Syntax specifications] for each module. The architecture also clarifies what is passed by reference (blue arrows) from what is passed as values (black arrows). As an example, mega trees should not be passed directly to the controller but, instead, only the reference to those mega-trees should be sent. These references are then passed to the topology module, which will use those trees.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;These should fuel the input/output [http://wiki.g2.bx.psu.edu/Admin/Tools/Tool%20Config%20Syntax specifications] for each module. The architecture also clarifies what is passed by reference (blue arrows) from what is passed as values (black arrows). As an example, mega trees should not be passed directly to the controller but, instead, only the reference to those mega-trees should be sent. These references are then passed to the topology module, which will use those trees.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:Phylotastic_architecture.jpg]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:Phylotastic_architecture.jpg]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Controller decision elements ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Controller decision elements ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Hilmar</name></author>
	</entry>
	<entry>
		<id>https://www.evoio.org/w/index.php?title=Phylotastic/Architecture&amp;diff=3476&amp;oldid=prev</id>
		<title>Hilmar: moved Architecture to Phylotastic/Architecture</title>
		<link rel="alternate" type="text/html" href="https://www.evoio.org/w/index.php?title=Phylotastic/Architecture&amp;diff=3476&amp;oldid=prev"/>
		<updated>2012-06-05T18:48:02Z</updated>

		<summary type="html">&lt;p&gt;moved &lt;a href=&quot;/wiki/Architecture&quot; class=&quot;mw-redirect&quot; title=&quot;Architecture&quot;&gt;Architecture&lt;/a&gt; to &lt;a href=&quot;/wiki/Phylotastic/Architecture&quot; title=&quot;Phylotastic/Architecture&quot;&gt;Phylotastic/Architecture&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Our architecture is based on model-view-controller and will take the following modules into consideration&lt;br /&gt;
&lt;br /&gt;
* TNRS&lt;br /&gt;
* Topology prune/graft&lt;br /&gt;
* Tree Store&lt;br /&gt;
* Syntax Format Converter&lt;br /&gt;
* Branch length annotator&lt;br /&gt;
* Logger&lt;br /&gt;
&lt;br /&gt;
The architecture diagram below presents the interaction between the various modules. Each module will be treated as a &amp;quot;black box&amp;quot; in this architecture and the only elements we are concerned about here will be the interoperation between the modules. &lt;br /&gt;
&lt;br /&gt;
These should fuel the input/output [http://wiki.g2.bx.psu.edu/Admin/Tools/Tool%20Config%20Syntax specifications] for each module. The architecture also clarifies what is passed by reference (blue arrows) from what is passed as values (black arrows). As an example, mega trees should not be passed directly to the controller but, instead, only the reference to those mega-trees should be sent. These references are then passed to the topology module, which will use those trees.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Phylotastic_architecture.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Controller decision elements ==&lt;br /&gt;
&lt;br /&gt;
All steps may optionally receive user feedback&lt;br /&gt;
&lt;br /&gt;
* Start&lt;br /&gt;
** list of name strings [mandatory user input]&lt;br /&gt;
** TNRS sources&lt;br /&gt;
** TNRS “knobs” (“fuzziness” etc.)&lt;br /&gt;
* Post TNRS&lt;br /&gt;
** Choices about unresolved names&lt;br /&gt;
* Megatree retrieval&lt;br /&gt;
** (mega-)tree store source&lt;br /&gt;
** automated tree query for applicable trees (per treestore) with user-supplied parameters&lt;br /&gt;
** (mega-)tree filter/selection criteria (e.g. degree of overlap) &lt;br /&gt;
* Pre-Topology&lt;br /&gt;
** application of branch lengths?&lt;br /&gt;
* Topology&lt;br /&gt;
** (see Tolopolgy, below)&lt;br /&gt;
* Post-topology&lt;br /&gt;
** application of branch lengths?&lt;br /&gt;
&lt;br /&gt;
== Topology Module ==&lt;br /&gt;
&lt;br /&gt;
_per megatree in:_&lt;br /&gt;
&lt;br /&gt;
=== Input ===&lt;br /&gt;
&lt;br /&gt;
* List of names [mandatory; post-cleaning]&lt;br /&gt;
** with Taxonomic cues/guides [optional; can also be auto-discovered]&lt;br /&gt;
** Megatree choice&lt;br /&gt;
* Configuration:&lt;br /&gt;
** Grafting policy&lt;br /&gt;
*** choices of insertion of non-matching terminals&lt;br /&gt;
**** sister to random terminal&lt;br /&gt;
**** random node in matching clade&lt;br /&gt;
**** basal&lt;br /&gt;
**** conservatively collapse clade&lt;br /&gt;
*** Pruning policy&lt;br /&gt;
**** restrict tips to names given, or return all tips in minimum spanning clade&lt;br /&gt;
**** retain or delete out-degree one nodes&lt;br /&gt;
**** how to handle metadata associated with nodes/edges that have been deleted&lt;br /&gt;
&lt;br /&gt;
=== Output ===&lt;br /&gt;
&lt;br /&gt;
* One or more tree(s)&lt;br /&gt;
** topology&lt;br /&gt;
** node-by-node metadata [as per megatree, optional]&lt;br /&gt;
* list of non-matching taxa&lt;br /&gt;
** logging record to logger&lt;br /&gt;
&lt;br /&gt;
== Branch lengths ==&lt;br /&gt;
&lt;br /&gt;
Possible strategies:&lt;br /&gt;
&lt;br /&gt;
* NPRS&lt;br /&gt;
** Based on input BLs&lt;br /&gt;
** Default (no input BLs)&lt;br /&gt;
* Node-age constrained equidistant adjustment (BLADJ)&lt;br /&gt;
* refer to BL group (Congruifier)&lt;br /&gt;
&lt;br /&gt;
=== Topology Scenario and Dependencies ===&lt;br /&gt;
&lt;br /&gt;
Topology services depend on two other services: TNRS and TREE SOURCE&lt;br /&gt;
User starts by submitting a list of names and a set of configuration elements (e.g. sources to use, knobs, etc). TNRS returns list of taxa and their URI. User then decides whether resolved names are correct. This list of chosen URI taxa will be sent to the tree source, along with a selection of mega tree sources. The tree source returns the URI of a set of megatrees that are applicable for the taxa submitted. The user selects, from these trees, the list of trees that he/she wants to use. This list, along with the taxa uri, is submitted to topology module, along with a set of configuration instructions. Phylotatic tree (or trees) are returned to the user, including node-by-node metadata information. &lt;br /&gt;
&lt;br /&gt;
[[File:Use_case_topology_phylotastic.jpg]]&lt;/div&gt;</summary>
		<author><name>Hilmar</name></author>
	</entry>
</feed>