use of net.imglib2.util.Pair in project iobserve-analysis by research-iobserve.
the class BehaviorModelTable method toInstance.
/**
* returns an instance vector.
*
* @return instance
*/
public Instance toInstance() {
final List<Double> attValues = new ArrayList<>();
// add transitions
for (int i = 0; i < this.signatures.size(); i++) {
for (int j = 0; j < this.signatures.size(); j++) {
if (this.transitions[i][j] > AbstractBehaviorModelTable.TRANSITION_THRESHOLD) {
attValues.add(Double.valueOf(this.transitions[i][j]));
} else {
continue;
}
}
}
this.signatures.values().stream().forEach(pair -> Arrays.stream(pair.getSecond()).forEach(callInformation -> attValues.add(callInformation.getRepresentativeCode())));
final double[] attArray = new double[attValues.size()];
for (int i = 0; i < attValues.size(); i++) {
attArray[i] = attValues.get(i) == null ? 0.0 : attValues.get(i);
}
final Instance instance = new Instance(1.0, attArray);
return instance;
}
use of net.imglib2.util.Pair in project drools by kiegroup.
the class GroupByTest method testNestedGroupBy3.
@Test
// <- FIXME, see comment inside (@mario)
@Ignore
public void testNestedGroupBy3() throws Exception {
// DROOLS-6045
final Global<List> var_results = D.globalOf(List.class, "defaultpkg", "results");
final Variable<Object> var_$key = D.declarationOf(Object.class);
final Variable<Object> var_$keyOuter = D.declarationOf(Object.class);
final Variable<Person> var_$p = D.declarationOf(Person.class);
final Variable<Object> var_$accresult = D.declarationOf(Object.class);
final Rule rule1 = PatternDSL.rule("R1").build(D.groupBy(D.and(D.groupBy(// Patterns
D.pattern(var_$p), // Grouping Function
var_$p, var_$key, Person::getName, D.accFunction(CountAccumulateFunction::new).as(var_$accresult)), // Bindings
D.pattern(var_$accresult).expr(// FIXME var_$accresult is collection of Long, how did this pass before(mdp) ?
c -> ((Integer) c) > 0)), var_$key, var_$accresult, var_$keyOuter, Pair::create), // Consequence
D.on(var_$keyOuter, var_results).execute(($outerKey, results) -> {
results.add($outerKey);
}));
final Model model = new ModelImpl().addRule(rule1).addGlobal(var_results);
final KieSession ksession = KieBaseBuilder.createKieBaseFromModel(model).newKieSession();
final List<Object> results = new ArrayList<>();
ksession.setGlobal("results", results);
ksession.insert("A");
ksession.insert("test");
ksession.insert(new Person("Mark", 42));
assertThat(ksession.fireAllRules()).isEqualTo(1);
assertThat(results).containsOnly(Pair.create("Mark", 1L));
}
use of net.imglib2.util.Pair in project drools by kiegroup.
the class GroupByTest method testDecomposedGroupByKeyAnd2AccumulatesInConsequence.
@Test
public void testDecomposedGroupByKeyAnd2AccumulatesInConsequence() throws Exception {
// DROOLS-6031
final Global<List> var_results = D.globalOf(List.class, "defaultpkg", "results");
final Variable<Pair<String, String>> var_$key = (Variable) D.declarationOf(Pair.class);
final Variable<Pair> var_$accumulate = D.declarationOf(Pair.class);
final Variable<Person> var_$p = D.declarationOf(Person.class);
final Variable<Person> var_$p2 = D.declarationOf(Person.class);
final Variable<String> var_$subkeyA = D.declarationOf(String.class);
final Variable<String> var_$subkeyB = D.declarationOf(String.class);
final Variable<List> var_$accresult = D.declarationOf(List.class);
final Variable<List> var_$accresult2 = D.declarationOf(List.class);
final Rule rule1 = PatternDSL.rule("R1").build(D.groupBy(// Patterns
D.and(D.pattern(var_$p), D.pattern(var_$p2).bind(var_$accumulate, var_$p, Pair::create)), // Grouping Function
var_$p, var_$key, person -> Pair.create(person.getName().substring(0, 1), person.getName().substring(1, 2)), D.accFunction(CollectListAccumulateFunction::new, var_$accumulate).as(var_$accresult), D.accFunction(CollectListAccumulateFunction::new, var_$accumulate).as(var_$accresult2)), // Bindings
D.pattern(var_$accresult2), // Consequence
D.on(var_$key, var_$accresult, var_$accresult2, var_results).execute(($key, $accresult, $accresult2, results) -> {
results.add($key);
}));
final Model model = new ModelImpl().addRule(rule1).addGlobal(var_results);
final KieSession ksession = KieBaseBuilder.createKieBaseFromModel(model).newKieSession();
final List<Object> results = new ArrayList<>();
ksession.setGlobal("results", results);
ksession.insert("A");
ksession.insert("test");
ksession.insert(new Person("Mark", 42));
assertThat(ksession.fireAllRules()).isEqualTo(1);
Assertions.assertThat(results.size()).isEqualTo(1);
}
use of net.imglib2.util.Pair in project drools by kiegroup.
the class GroupByTest method testDecomposedGroupByKeyAndAccumulate.
@Test
public void testDecomposedGroupByKeyAndAccumulate() throws Exception {
// DROOLS-6031
final Global<List> var_results = D.globalOf(List.class, "defaultpkg", "results");
final Variable<Pair<String, String>> var_$key = (Variable) D.declarationOf(Pair.class);
final Variable<Person> var_$p = D.declarationOf(Person.class);
final Variable<String> var_$subkeyA = D.declarationOf(String.class);
final Variable<String> var_$subkeyB = D.declarationOf(String.class);
final Variable<Long> var_$accresult = D.declarationOf(Long.class);
final Rule rule1 = PatternDSL.rule("R1").build(D.groupBy(// Patterns
PatternDSL.pattern(var_$p), // Grouping Function
var_$p, var_$key, person -> Pair.create(person.getName().substring(0, 1), person.getName().substring(1, 2)), D.accFunction(CountAccumulateFunction::new).as(var_$accresult)), // Bindings
D.pattern(var_$key).bind(var_$subkeyA, Pair::getKey).bind(var_$subkeyB, Pair::getValue), D.pattern(var_$accresult).expr(l -> l > 0), // Consequence
D.on(var_$subkeyA, var_$subkeyB, var_$accresult, var_results).execute(($a, $b, $accresult, results) -> {
results.add($a);
results.add($b);
results.add($accresult);
}));
final Model model = new ModelImpl().addRule(rule1).addGlobal(var_results);
final KieSession ksession = KieBaseBuilder.createKieBaseFromModel(model).newKieSession();
final List<Object> results = new ArrayList<>();
ksession.setGlobal("results", results);
ksession.insert("A");
ksession.insert("test");
ksession.insert(new Person("Mark", 42));
assertThat(ksession.fireAllRules()).isEqualTo(1);
Assertions.assertThat(results.size()).isEqualTo(3);
Assertions.assertThat(results.get(0)).isEqualTo("M");
Assertions.assertThat(results.get(1)).isEqualTo("a");
Assertions.assertThat(results.get(2)).isEqualTo(1L);
}
use of net.imglib2.util.Pair in project vcell by virtualcell.
the class ImageStatsForPlotting method computeMean.
/**
* Computes the mean of each XY slice along the 3rd dimension
* TODO: Currently assumes only 3 dimensions, must handle time series of z stacks and multiple channels
* @param data
* @return Pair containing A) the 3rd dimension index, and B) the mean value of the XY slice
*/
private Pair<double[], double[]> computeMean(RandomAccessibleInterval<T> data, IterableInterval<BitType> mask) {
double[] indices = new double[(int) data.dimension(2)];
double[] means = new double[indices.length];
for (int z = 0; z < indices.length; z++) {
FinalInterval interval = Intervals.createMinMax(0, 0, z, data.dimension(0) - 1, data.dimension(1) - 1, z);
double mean = 0.0;
RandomAccessibleInterval<T> cropped = ops.transform().crop(data, interval);
if (mask == null) {
mean = ops.stats().mean(Views.iterable(cropped)).getRealDouble();
} else {
Cursor<BitType> maskCursor = mask.localizingCursor();
RandomAccess<T> dataRA = cropped.randomAccess();
RealSum sum = new RealSum();
int size = 0;
maskCursor.reset();
while (maskCursor.hasNext()) {
maskCursor.fwd();
if (maskCursor.get().get()) {
dataRA.setPosition(maskCursor);
sum.add(dataRA.get().getRealDouble());
size++;
}
}
mean = sum.getSum() / size;
}
indices[z] = z;
means[z] = mean;
}
return new ValuePair<double[], double[]>(indices, means);
}
Aggregations