/** {@inheritDoc} */ public PathQuery generatePathQuery( ObjectStore os, InterMineBag bag, String series, String category) { Model model = os.getModel(); PathQuery q = new PathQuery(model); Path geneSymbol = PathQuery.makePath(model, q, "Gene.symbol"); Path genePrimary = PathQuery.makePath(model, q, "Gene.primaryIdentifier"); Path haemAtlasSampleName = PathQuery.makePath(model, q, "Gene.probeSets.haemAtlasResults.sampleName"); Path haemAtlasGroup = PathQuery.makePath(model, q, "Gene.probeSets.haemAtlasResults.group"); Path haemAtlasAverage = PathQuery.makePath(model, q, "Gene.probeSets.haemAtlasResults.averageIntensity"); Path haemAtlasSample = PathQuery.makePath(model, q, "Gene.probeSets.haemAtlasResults.sample"); Path haemAtlasP = PathQuery.makePath(model, q, "Gene.probeSets.haemAtlasResults.detectionProbabilities"); Path haemAtlasIlluId = PathQuery.makePath(model, q, "Gene.probeSets.illuId"); List<Path> view = new ArrayList<Path>(); view.add(geneSymbol); view.add(genePrimary); view.add(haemAtlasSampleName); view.add(haemAtlasGroup); view.add(haemAtlasAverage); view.add(haemAtlasSample); view.add(haemAtlasP); view.add(haemAtlasIlluId); q.setViewPaths(view); String bagType = bag.getType(); ConstraintOp constraintOp = ConstraintOp.IN; String constraintValue = bag.getName(); String label = null, id = null, code = q.getUnusedConstraintCode(); Constraint c = new Constraint(constraintOp, constraintValue, false, label, code, id, null); q.addNode(bagType).getConstraints().add(c); constraintOp = ConstraintOp.EQUALS; code = q.getUnusedConstraintCode(); PathNode categoryNode = q.addNode("Gene.probeSets.haemAtlasResults.sampleName"); Constraint categoryConstraint = new Constraint(constraintOp, series, false, label, code, id, null); categoryNode.getConstraints().add(categoryConstraint); constraintOp = ConstraintOp.LESS_THAN; code = q.getUnusedConstraintCode(); PathNode seriesNode = q.addNode("Gene.probeSets.haemAtlasResults.detectionProbabilities"); Constraint seriesConstraint = new Constraint(constraintOp, 0.01, false, label, code, id, null); seriesNode.getConstraints().add(seriesConstraint); q.setConstraintLogic("A and B and C"); q.syncLogicExpression("and"); List<OrderBy> sortOrder = new ArrayList<OrderBy>(); sortOrder.add(new OrderBy(geneSymbol, "asc")); sortOrder.add(new OrderBy(genePrimary)); q.setSortOrder(sortOrder); return q; }