Skip to content

Commit

Permalink
Updating SG to output phenotypes
Browse files Browse the repository at this point in the history
  • Loading branch information
iceraj committed Sep 16, 2013
1 parent ff45882 commit b31b8e5
Show file tree
Hide file tree
Showing 8 changed files with 71 additions and 18 deletions.
19 changes: 15 additions & 4 deletions src/star/genetics/beans/StringTokenizer.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,24 +6,35 @@ public class StringTokenizer
private String str;
private String split;
private int index;
private boolean hasMoreTokens = true;

public StringTokenizer(String str, String split)
{
this.str = str;
this.split = split;
this.index = 0;

}

public boolean hasMoreTokens()
{
return str.indexOf(split,index) > 0;
return hasMoreTokens;
}

public String nextToken()
{
{
int next_index = str.indexOf(split,index);
String ret = str.substring(index, next_index);
index = next_index;
String ret;
if( next_index == -1 )
{
hasMoreTokens = false;
ret = str.substring(index);
}
else
{
ret = str.substring(index, next_index );
index = next_index + split.length();
}
return ret;
}

Expand Down
3 changes: 2 additions & 1 deletion src/star/genetics/client/StarGenetics.java
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,8 @@ private void listStrains(Exec exec)
CreatureSet strains = model.getCreatures();
for (int i = 0; i < strains.size(); i++)
{
retset.set(i, StrainHelper.getShort(strains.get(i)));
// retset.set(i, StrainHelper.getShort(strains.get(i)));
retset.set(i, StrainHelper.getLong(strains.get(i),model.getRules()));
}
exec.onSuccess(ret.getJavaScriptObject());
}
Expand Down
15 changes: 9 additions & 6 deletions src/star/genetics/client/Stargenetics_gwt_java.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,24 +25,27 @@ public class Stargenetics_gwt_java implements EntryPoint
private static Logger logger = Logger.getLogger("StarGenetics");
private static HashMap<String, StarGenetics> map = new HashMap<String, StarGenetics>();



public void onModuleLoad()
{
setupInterface();
}

static {
setupInterface();
}

private static native void setupInterface()
/*-{
$wnd.__sg_bg_exec = $entry(@star.genetics.client.Stargenetics_gwt_java::execute(*));
console.info( "setup interface" ) ;
if( typeof(console) == 'object' && console && console.info ) {
console.info( "setup interface" ) ;
}
}-*/;

private static native void log( String str )
/*-{
console.info( str ) ;
if( typeof(console) == 'object' && console && console.info )
{
console.info( str ) ;
}
}-*/;
public static void execute(Exec obj)
{
Expand Down
22 changes: 22 additions & 0 deletions src/star/genetics/client/StrainHelper.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
package star.genetics.client;

import java.util.Map;
import java.util.Map.Entry;

import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONString;

import star.genetics.genetic.model.Creature;
import star.genetics.genetic.model.Rule;
import star.genetics.genetic.model.RuleSet;

public class StrainHelper
{
Expand All @@ -12,6 +17,23 @@ public static JSONObject getShort(Creature creature)
JSONObject ret = new JSONObject();
ret.put( "name", new JSONString(creature.getName()));
ret.put( "id" , new JSONString(creature.getUUID()));
ret.put( "export_type" , new JSONString("short"));
return ret;
}

public static JSONObject getLong(Creature creature, RuleSet rules)
{
JSONObject ret = new JSONObject();
Map<String,String> properties = rules.getProperties(creature.getMakeup(), creature.getSex());
for( Entry<String,String> e : properties.entrySet() )
{
ret.put(e.getKey(), new JSONString(e.getValue()));
}
ret.put( "name", new JSONString(creature.getName()));
ret.put( "id" , new JSONString(creature.getUUID()));
ret.put( "export_type" , new JSONString("long"));

return ret;

}
}
8 changes: 6 additions & 2 deletions src/star/genetics/genetic/impl/RuleImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,10 @@ public RuleImpl(String rule, HashMap<String, String> properties, Genome g)
{
this.rule = rule;
this.properties = properties;
parseRules(rule, g);
if(!isDefault())
{
parseRules(rule, g);
}
}

private void parseRules(String rule, Genome g)
Expand Down Expand Up @@ -139,6 +142,7 @@ private void parseOneRule(String oneRule, Genome g)
{
chromosome = gene.getChromosome();
chromosomeName = chromosome.getName();
break;
}
}
}
Expand Down Expand Up @@ -191,7 +195,7 @@ private ChromosomeRuleImpl makeChromosomeRule(String alleles, Chromosome chromos

public boolean isDefault()
{
return DEFAULT.equalsIgnoreCase(rule);
return DEFAULT.equalsIgnoreCase(rule) || "*".equalsIgnoreCase(rule);
}

public boolean isMatching(GeneticMakeup makeup, Creature.Sex sex)
Expand Down
4 changes: 2 additions & 2 deletions test-classes/star/genetics/tests/setupmodel.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,14 +45,14 @@
},
{
"name": "white eyes",
"matches": "aa",
"matches": "a,a",
"phenotype": {
"eyes": "white"
}
},
{
"name": "wingless",
"matches": "bb",
"matches": "b,b",
"phenotype": {
"wings": 0
}
Expand Down
14 changes: 13 additions & 1 deletion test/star/genetics/tests/JSONModel.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package star.genetics.tests;

import star.genetics.beans.StringTokenizer;
import star.genetics.client.Exec;
import star.genetics.client.Stargenetics_gwt_java;

Expand Down Expand Up @@ -38,9 +39,20 @@ private final native String toJSON(JavaScriptObject that) /*-{
String getJson()
{
// getJSON("setupmodel.json");
return "{\"genetics\":{\"visualizer\":{\"name\":\"fly\"},\"model_metadata\":{},\"experiments\":{},\"engine\":{\"sex_type\":\"XY\",\"male_recombination_rate\":1,\"female_sex_ratio\":0.51,\"avg_offspring_count\":50,\"female_recombination_rate\":1,\"twinning\":0,\"identical_twins_frequency\":0},\"strains\":{\"initial\":{\"name\":\"Initial Strains\",\"list\":[{\"sex\":\"M\",\"alleles\":[\"A,A\",\"B,B\"],\"name\":\"Wildtype M\"},{\"sex\":\"F\",\"alleles\":[\"A,A\",\"B,B\"],\"name\":\"Wildtype F\"},{\"sex\":\"M\",\"alleles\":[\"a,a\",\"b,b\"],\"name\":\"Double Mutant M\"},{\"sex\":\"F\",\"alleles\":[\"a,a\",\"b,b\"],\"name\":\"Double Mutant F\"}]}},\"gel_rules\":{},\"phenotype_rules\":[{\"matches\":\"*\",\"name\":\"default\",\"phenotype\":{\"wings\":1,\"eyes\":\"red\"}},{\"matches\":\"aa\",\"name\":\"white eyes\",\"phenotype\":{\"eyes\":\"white\"}},{\"matches\":\"bb\",\"name\":\"wingless\",\"phenotype\":{\"wings\":0}}],\"genome\":{\"chromosomes\":{\"C_1\":{\"genes\":[{\"position\":25,\"alleles\":[{\"name\":\"A\"},{\"name\":\"a\"}],\"name\":\"red_eyes\"},{\"position\":40,\"alleles\":[{\"name\":\"B\"},{\"name\":\"b\"}],\"name\":\"wingless\"}],\"name\":\"Chromosome 1\"}}}}}\n";
return "{\"genetics\":{\"visualizer\":{\"name\":\"fly\"},\"model_metadata\":{},\"experiments\":{},\"engine\":{\"sex_type\":\"XY\",\"male_recombination_rate\":1,\"female_sex_ratio\":0.51,\"avg_offspring_count\":50,\"female_recombination_rate\":1,\"twinning\":0,\"identical_twins_frequency\":0},\"strains\":{\"initial\":{\"name\":\"Initial Strains\",\"list\":[{\"sex\":\"M\",\"alleles\":[\"A,A\",\"B,B\"],\"name\":\"Wildtype M\"},{\"sex\":\"F\",\"alleles\":[\"A,A\",\"B,B\"],\"name\":\"Wildtype F\"},{\"sex\":\"M\",\"alleles\":[\"a,a\",\"b,b\"],\"name\":\"Double Mutant M\"},{\"sex\":\"F\",\"alleles\":[\"a,a\",\"b,b\"],\"name\":\"Double Mutant F\"}]}},\"gel_rules\":{},\"phenotype_rules\":[{\"matches\":\"*\",\"name\":\"default\",\"phenotype\":{\"wings\":1,\"eyes\":\"red\"}},{\"matches\":\"a,a\",\"name\":\"white eyes\",\"phenotype\":{\"eyes\":\"white\"}},{\"matches\":\"b,b\",\"name\":\"wingless\",\"phenotype\":{\"wings\":0}}],\"genome\":{\"chromosomes\":{\"C_1\":{\"genes\":[{\"position\":25,\"alleles\":[{\"name\":\"A\"},{\"name\":\"a\"}],\"name\":\"red_eyes\"},{\"position\":40,\"alleles\":[{\"name\":\"B\"},{\"name\":\"b\"}],\"name\":\"wingless\"}],\"name\":\"Chromosome 1\"}}}}}\n";
}

public void st_test()
{
if( true )
{
StringTokenizer st = new StringTokenizer("a,b" , ",");
assertTrue(st.hasMoreTokens());
assertEquals("a", st.nextToken().trim());
assertTrue(st.hasMoreTokens());
assertEquals("b", st.nextToken().trim());
}
}
public void test()
{
open();
Expand Down
4 changes: 2 additions & 2 deletions test/star/genetics/tests/setupmodel.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,14 +45,14 @@
},
{
"name": "white eyes",
"matches": "aa",
"matches": "a,a",
"phenotype": {
"eyes": "white"
}
},
{
"name": "wingless",
"matches": "bb",
"matches": "b,b",
"phenotype": {
"wings": 0
}
Expand Down

0 comments on commit b31b8e5

Please sign in to comment.