Search in sources :

Example 1 with PropertyAnnotations

use of ambit2.base.data.PropertyAnnotations in project ambit-mirror by ideaconsult.

the class SubstanceDatasetResource method getPropertyProcessors.

protected IProcessor getPropertyProcessors(final boolean removeIdentifiers, final boolean removeStringProperties) {
    IQueryRetrieval<ProtocolEffectRecord<String, String, String>> queryP = getEffectQuery();
    MasterDetailsProcessor<SubstanceRecord, ProtocolEffectRecord<String, String, String>, IQueryCondition> effectReader = new MasterDetailsProcessor<SubstanceRecord, ProtocolEffectRecord<String, String, String>, IQueryCondition>(queryP) {

        /**
         */
        private static final long serialVersionUID = -7354966336095750101L;

        ProtocolEffectRecord2SubstanceProperty processor = new ProtocolEffectRecord2SubstanceProperty();

        @Override
        public SubstanceRecord process(SubstanceRecord target) throws Exception {
            if (target == null || target.getSubstanceUUID() == null)
                return target;
            else
                return super.process(target);
        }

        @Override
        protected SubstanceRecord processDetail(SubstanceRecord master, ProtocolEffectRecord<String, String, String> detail) throws Exception {
            if (master.getIdsubstance() <= 0)
                return master;
            if (detail != null) {
                if (detail.getTextValue() != null && detail.getTextValue().toString().startsWith("{")) {
                    JsonNode node = dx.readTree(new StringReader(detail.getTextValue().toString()));
                    List<String> guideline = detail.getProtocol().getGuideline();
                    ILiteratureEntry ref = LiteratureEntry.getInstance(guideline == null ? null : guideline.size() == 0 ? null : guideline.get(0), guideline == null ? null : guideline.size() == 0 ? null : guideline.get(0));
                    Iterator<Entry<String, JsonNode>> i = node.fields();
                    while (i.hasNext()) {
                        Entry<String, JsonNode> val = i.next();
                        SubstanceProperty key = new SubstanceProperty(detail.getProtocol().getTopCategory(), detail.getProtocol().getCategory(), val.getKey(), detail.getUnit(), ref);
                        try {
                            key.setStudyResultType(_r_flags.valueOf(detail.getStudyResultType().replace(":", "").replace("_", "").replace(" ", "").replace("-", "").replace(")", "").replace("(", "")));
                        } catch (Exception x) {
                            key.setStudyResultType(null);
                        }
                        key.setExtendedURI(true);
                        key.setIdentifier(detail.getSampleID() + "/" + val.getKey());
                        groupProperties.add(key);
                        if (val.getValue().get(EffectRecord._fields.loValue.name()) != null) {
                            Number num = val.getValue().get(EffectRecord._fields.loValue.name()).asDouble();
                            master.setRecordProperty(key, num);
                            key.setClazz(Number.class);
                        } else {
                            master.setRecordProperty(key, val.getValue().textValue());
                            key.setClazz(String.class);
                        }
                    }
                } else {
                    boolean isTextValue = ((detail.getLoValue() == null) && (detail.getUpValue() == null));
                    if (isTextValue && removeStringProperties)
                        return master;
                    /*
						 * JsonNode conditions = detail.getConditions() == null
						 * ? null : dx.readTree(new StringReader(
						 * detail.getConditions()));
						 * 
						 * PropertyAnnotations ann = new PropertyAnnotations();
						 * 
						 * Iterator<Entry<String, JsonNode>> i = conditions ==
						 * null ? null : conditions.getFields();
						 * 
						 * if (i != null) while (i.hasNext()) { Entry<String,
						 * JsonNode> val = i.next(); if (val.getValue()
						 * instanceof NullNode) continue;
						 * 
						 * if (val.getValue().getTextValue() == null) try {
						 * PropertyAnnotation a = new PropertyAnnotation();
						 * String unit =
						 * val.getValue().get(EffectRecord._fields.unit.name())
						 * == null ? null :
						 * val.getValue().get(EffectRecord._fields
						 * .unit.name()).asText(); a.setPredicate(val.getKey());
						 * if (unit == null)
						 * a.setObject(val.getValue().get(EffectRecord
						 * ._fields.loValue.name()) .asText()); else {
						 * a.setObject(String.format("%s %s",
						 * val.getValue().get(
						 * EffectRecord._fields.loValue.name()).asText(),
						 * unit)); } ann.add(a); } catch (Exception x) { } else
						 * { PropertyAnnotation a = new PropertyAnnotation();
						 * a.setPredicate(val.getKey());
						 * a.setObject(val.getValue().getTextValue());
						 * ann.add(a); }
						 * 
						 * }
						 */
                    ProtocolEffectRecord<String, IParams, String> effect = new ProtocolEffectRecord<String, IParams, String>();
                    ProtocolEffectRecord2SubstanceProperty.copyEffectRecordValues(detail, effect);
                    try {
                        JsonNode conditions = detail.getConditions() == null ? null : dx.readTree(new StringReader(detail.getConditions()));
                        if (conditions instanceof ObjectNode) {
                            effect.setConditions(SubstanceStudyParser.parseParams((ObjectNode) conditions));
                        }
                    } catch (Exception x) {
                        logger.log(Level.FINE, x.getMessage());
                    }
                    SubstanceProperty key = processor.process(effect);
                    key.setIdentifier(key.createHashedIdentifier(effect.getConditions()));
                    Object oldValue = master.getRecordProperty(key);
                    groupProperties.add(key);
                    /*
						 * if (isTextValue) { //textvalue if (oldValue == null)
						 * master.setProperty(key, detail.getTextValue()); else
						 * { master.setProperty(key, String.format( "%s, %s",
						 * oldValue instanceof Number ? nf.format((Number)
						 * oldValue) : oldValue .toString(),
						 * detail.getTextValue())); }
						 * key.setClazz(String.class); } else { //numeric
						 */
                    Value value = processValue(detail, isTextValue);
                    if (value != null)
                        ProtocolEffectRecord2SubstanceProperty.addValues(master, key, value, oldValue);
                // }
                }
            }
            return master;
        }
    };
    return effectReader;
}
Also used : IQueryCondition(net.idea.modbcum.i.IQueryCondition) ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) ProtocolEffectRecord2SubstanceProperty(ambit2.core.io.study.ProtocolEffectRecord2SubstanceProperty) ILiteratureEntry(ambit2.base.data.ILiteratureEntry) SubstanceRecord(ambit2.base.data.SubstanceRecord) JsonNode(com.fasterxml.jackson.databind.JsonNode) AmbitException(net.idea.modbcum.i.exceptions.AmbitException) ResourceException(org.restlet.resource.ResourceException) LiteratureEntry(ambit2.base.data.LiteratureEntry) Entry(java.util.Map.Entry) ILiteratureEntry(ambit2.base.data.ILiteratureEntry) ProtocolEffectRecord(ambit2.base.data.study.ProtocolEffectRecord) MasterDetailsProcessor(net.idea.modbcum.p.MasterDetailsProcessor) StringReader(java.io.StringReader) Value(ambit2.base.data.study.Value) IParams(ambit2.base.data.study.IParams) ProtocolEffectRecord2SubstanceProperty(ambit2.core.io.study.ProtocolEffectRecord2SubstanceProperty) SubstanceProperty(ambit2.base.data.substance.SubstanceProperty)

Example 2 with PropertyAnnotations

use of ambit2.base.data.PropertyAnnotations in project ambit-mirror by ideaconsult.

the class DXParser method verifyDXProperty.

protected Property verifyDXProperty(Property property, Object value, ILiteratureEntry reference) throws AmbitException {
    property.setReference(reference);
    String[] split = property.getName().split("\\.");
    JsonNode endpoint = (split.length > 1) ? dxRoot.get(json_fields.endpoints.name()).get(split[1]) : null;
    JsonNode superEndpoint = endpoint == null ? null : endpoint.get("super");
    JsonNode species = (split.length > 2) ? dxRoot.get(json_fields.species.name()).get(split[2]) : null;
    if (species == null)
        return null;
    JsonNode ontology = null;
    PropertyAnnotations pa = new PropertyAnnotations();
    if (species != null) {
        PropertyAnnotation a = new PropertyAnnotation();
        a.setPredicate("species");
        a.setObject(split[2]);
        pa.add(a);
    }
    if (superEndpoint != null) {
        PropertyAnnotation a = new PropertyAnnotation();
        a.setPredicate("DX Superendpoint");
        a.setObject(superEndpoint.textValue());
        pa.add(a);
        try {
            ontology = dxRoot.get(json_fields.endpoints.name()).get(superEndpoint.textValue()).get(json_fields.ot.name());
        } catch (Exception x) {
            logger.log(Level.WARNING, x.getClass().getName() + " " + superEndpoint);
        }
    }
    if (endpoint != null) {
        PropertyAnnotation a = new PropertyAnnotation();
        a.setPredicate("DX endpoint");
        a.setObject(split[1]);
        pa.add(a);
        try {
            if (endpoint.get(json_fields.ot.name()) != null)
                ontology = endpoint.get(json_fields.ot.name());
        } catch (Exception x) {
            logger.log(Level.WARNING, x.getClass().getName() + " " + endpoint);
        }
    }
    if (ontology != null)
        property.setLabel(ontology.textValue());
    for (PropertyAnnotation a : categories) pa.add(a);
    property.setAnnotations(pa);
    return property;
}
Also used : PropertyAnnotations(ambit2.base.data.PropertyAnnotations) JsonNode(com.fasterxml.jackson.databind.JsonNode) AmbitException(net.idea.modbcum.i.exceptions.AmbitException) PropertyAnnotation(ambit2.base.data.PropertyAnnotation)

Example 3 with PropertyAnnotations

use of ambit2.base.data.PropertyAnnotations in project ambit-mirror by ideaconsult.

the class ProtocolEffectRecord2SubstanceProperty method conditions2annotations.

public PropertyAnnotations conditions2annotations(ProtocolEffectRecord<String, IParams, String> detail) throws JsonProcessingException, IOException {
    PropertyAnnotations ann = new PropertyAnnotations();
    /*
		 * works but is a hack if (detail.getStudyResultType() != null) {
		 * PropertyAnnotation a = new PropertyAnnotation();
		 * a.setType("reliability"); a.setPredicate("studyResultType");
		 * a.setObject(detail.getStudyResultType()); ann.add(a); }
		 */
    if (detail.getConditions() == null)
        return ann;
    Iterator<Map.Entry> entries = detail.getConditions().entrySet().iterator();
    while (entries.hasNext()) {
        Map.Entry entry = entries.next();
        Object key = entry.getKey();
        Object o = entry.getValue();
        if (o == null)
            continue;
        else if (o instanceof Value) {
            Value value = (Value) o;
            PropertyAnnotation a = new PropertyAnnotation();
            a.setType("conditions");
            a.setPredicate(key.toString());
            if (value.getLoValue() instanceof String) {
                a.setObject(value.getLoValue());
            } else {
                a.setObject(String.format("%s%s %s%s %s", value.getLoQualifier() == null ? "" : value.getLoQualifier(), value.getLoValue() == null ? "" : value.getLoValue(), value.getUpQualifier() == null ? "" : value.getUpQualifier(), value.getUpValue() == null ? "" : value.getUpValue(), value.getUnits() == null ? "" : value.getUnits()));
            }
            ann.add(a);
        } else {
            PropertyAnnotation a = new PropertyAnnotation();
            a.setType("conditions");
            a.setPredicate(key.toString());
            a.setObject(o.toString());
            ann.add(a);
        }
    }
    return ann;
}
Also used : PropertyAnnotations(ambit2.base.data.PropertyAnnotations) LiteratureEntry(ambit2.base.data.LiteratureEntry) ILiteratureEntry(ambit2.base.data.ILiteratureEntry) MultiValue(ambit2.base.data.study.MultiValue) Value(ambit2.base.data.study.Value) Map(java.util.Map) PropertyAnnotation(ambit2.base.data.PropertyAnnotation)

Example 4 with PropertyAnnotations

use of ambit2.base.data.PropertyAnnotations in project ambit-mirror by ideaconsult.

the class AbstractPropertyRetrieval method getObject.

/*
 WARNING: No enum const class ambit2.db.search.property.AbstractPropertyRetrieval$_PROPERTY_TYPE.
 java.lang.IllegalArgumentException: No enum const class ambit2.db.search.property.AbstractPropertyRetrieval$_PROPERTY_TYPE.
         at java.lang.Enum.valueOf(Enum.java:214)
         at ambit2.db.search.property.AbstractPropertyRetrieval$_PROPERTY_TYPE.valueOf(AbstractPropertyRetrieval.java:104)
         at ambit2.db.search.property.AbstractPropertyRetrieval.getObject(AbstractPropertyRetrieval.java:164)
         at ambit2.db.search.property.AbstractPropertyRetrieval.getObject(AbstractPropertyRetrieval.java:141)
         at ambit2.db.search.property.AbstractPropertyRetrieval.getObject(AbstractPropertyRetrieval.java:45)
         at ambit2.db.DbReader$1.next(DbReader.java:159)
         at ambit2.db.processors.AbstractBatchProcessor.process(AbstractBatchProcessor.java:105)
         at ambit2.db.reporters.QueryAbstractReporter.process(QueryAbstractReporter.java:115)
         at ambit2.rest.AbstractObjectConvertor.process(AbstractObjectConvertor.java:41)
         at ambit2.rest.AbstractObjectConvertor.process(AbstractObjectConvertor.java:17)
         at ambit2.rest.query.QueryResource.getRepresentation(QueryResource.java:183)
         at ambit2.rest.AbstractResource.get(AbstractResource.java:98)
         at org.restlet.resource.ServerResource.doHandle(ServerResource.java:519)
         at org.restlet.resource.ServerResource.doNegotiatedHandle(ServerResource.java:579)
         at org.restlet.resource.ServerResource.doConditionalHandle(ServerResource.java:258)
         at org.restlet.resource.ServerResource.handle(ServerResource.java:818)
	
 */
public Property getObject(ResultSet rs, Property p) throws AmbitException {
    try {
        if (p == null) {
            p = Property.getInstance(rs.getString("name"), rs.getString("title"), rs.getString("url"));
        } else {
            p.setName(rs.getString("name"));
        // !!!!!!!!!!!!!!!!!! update the rest
        }
        try {
            p.setOrder(rs.getInt("order"));
        } catch (Exception x) {
        }
        p.setId(rs.getInt("idproperty"));
        p.setUnits(rs.getString("units"));
        p.setLabel(rs.getString("comments"));
        p.getReference().setId(rs.getInt("idreference"));
        try {
            String type = rs.getString("idtype");
            String[] types = null;
            if (type != null && !"".equals(type)) {
                types = type.split(",");
                for (String t : types) try {
                    p.setClazz(_PROPERTY_TYPE.valueOf(t).getClazz());
                } catch (Exception x) {
                    logger.log(Level.WARNING, x.getMessage(), t);
                }
            }
        } catch (Exception x) {
            logger.log(Level.FINE, x.getMessage(), x);
        }
        try {
            p.setNominal(rs.getBoolean("islocal"));
        } catch (Exception x) {
            p.setNominal(false);
        }
        try {
            String _type = rs.getString("type");
            if (_type != null)
                p.getReference().setType(ILiteratureEntry._type.valueOf(_type));
        } catch (Exception x) {
        }
        PropertyAnnotation<String> a = null;
        for (ANNOTATIONS_TABLE f : ANNOTATIONS_TABLE.values()) try {
            String value = rs.getString(f.name());
            if (value == null)
                break;
            if (a == null)
                a = new PropertyAnnotation<String>();
            f.setValue(a, value);
        } catch (Exception x) {
        }
        if (a != null) {
            if (p.getAnnotations() == null)
                p.setAnnotations(new PropertyAnnotations());
            p.getAnnotations().add(a);
        }
        return p;
    } catch (SQLException x) {
        throw new AmbitException(x);
    }
}
Also used : PropertyAnnotations(ambit2.base.data.PropertyAnnotations) SQLException(java.sql.SQLException) AmbitException(net.idea.modbcum.i.exceptions.AmbitException) SQLException(java.sql.SQLException) AmbitException(net.idea.modbcum.i.exceptions.AmbitException)

Example 5 with PropertyAnnotations

use of ambit2.base.data.PropertyAnnotations in project ambit-mirror by ideaconsult.

the class PropertiesByDataset method getObject.

@Override
public Property getObject(ResultSet rs) throws AmbitException {
    try {
        Property p = Property.getInstance(rs.getString(2), rs.getString(4), rs.getString(5));
        p.setId(rs.getInt(1));
        p.setUnits(rs.getString(3));
        p.setLabel(rs.getString(7));
        p.getReference().setId(rs.getInt(6));
        try {
            p.setOrder(rs.getInt("order"));
        } catch (Exception x) {
        }
        try {
            String type = rs.getString(8);
            if (type != null) {
                String[] types = type.split(",");
                for (// TODO support multiple types per property
                String t : // TODO support multiple types per property
                types) p.setClazz(_PROPERTY_TYPE.valueOf(t).getClazz());
            }
        } catch (Exception x) {
        }
        try {
            p.setNominal(rs.getBoolean(9));
        } catch (Exception x) {
            p.setNominal(false);
        }
        try {
            String _type = rs.getString(10);
            if (_type != null)
                p.getReference().setType(ILiteratureEntry._type.valueOf(_type));
        } catch (Exception x) {
        }
        PropertyAnnotation<String> a = null;
        for (ANNOTATIONS_TABLE f : ANNOTATIONS_TABLE.values()) try {
            String value = rs.getString(f.name());
            if (value == null)
                break;
            if (a == null)
                a = new PropertyAnnotation<String>();
            f.setValue(a, value);
        } catch (Exception x) {
        }
        if (a != null) {
            if (p.getAnnotations() == null)
                p.setAnnotations(new PropertyAnnotations());
            p.getAnnotations().add(a);
        }
        return p;
    } catch (SQLException x) {
        throw new AmbitException(x);
    }
}
Also used : PropertyAnnotations(ambit2.base.data.PropertyAnnotations) SQLException(java.sql.SQLException) Property(ambit2.base.data.Property) AmbitException(net.idea.modbcum.i.exceptions.AmbitException) SQLException(java.sql.SQLException) AmbitException(net.idea.modbcum.i.exceptions.AmbitException)

Aggregations

PropertyAnnotations (ambit2.base.data.PropertyAnnotations)15 PropertyAnnotation (ambit2.base.data.PropertyAnnotation)13 Property (ambit2.base.data.Property)11 AmbitException (net.idea.modbcum.i.exceptions.AmbitException)11 LiteratureEntry (ambit2.base.data.LiteratureEntry)8 ResourceException (org.restlet.resource.ResourceException)7 IOException (java.io.IOException)6 PredictedVarsTemplate (ambit2.base.data.PredictedVarsTemplate)5 Template (ambit2.base.data.Template)5 ModelQueryResults (ambit2.core.data.model.ModelQueryResults)5 Reference (org.restlet.data.Reference)5 ILiteratureEntry (ambit2.base.data.ILiteratureEntry)4 AlgorithmURIReporter (ambit2.rest.algorithm.AlgorithmURIReporter)4 JsonNode (com.fasterxml.jackson.databind.JsonNode)4 Instances (weka.core.Instances)3 Value (ambit2.base.data.study.Value)2 IEvaluation (ambit2.core.data.model.IEvaluation)2 EvaluationStats (ambit2.model.evaluation.EvaluationStats)2 ObjectNode (com.fasterxml.jackson.databind.node.ObjectNode)2 SQLException (java.sql.SQLException)2