use of ambit2.rules.conditions.value.IValue in project ambit-mirror by ideaconsult.
the class ARFFReporter method processItem.
@Override
public Object processItem(IStructureRecord item) throws AmbitException {
try {
Writer writer = tmpWriter;
writeHeader(writer);
int i = 0;
String uri = null;
if (item instanceof SubstanceRecord) {
uri = String.format("%s/substance/%s", urlPrefix, ((SubstanceRecord) item).getSubstanceUUID());
} else {
uri = String.format("%s/compound/%d", urlPrefix, item.getIdchemical());
if (item.getIdstructure() > 0)
uri = String.format("%s/conformer/%d", uri, item.getIdstructure());
}
// output.append(delimiter);
// output.append(uri);
delimiter = ",";
writer.write(uri);
for (Property p : header) {
Object value = item.getRecordProperty(p);
if (value instanceof MultiValue) {
MultiValue<IValue> mv = (MultiValue<IValue>) value;
for (IValue m : mv) {
writer.write(String.format(",%s", m.getLoValue()));
break;
}
} else {
if ((value != null) && p.isNominal()) {
p.addAllowedValue(value.toString());
}
if (p.isNominal())
writer.write(String.format(",%s", (value == null) || (IQueryRetrieval.NaN.equals(value.toString())) ? "?" : value));
else if (p.getClazz() == Number.class) {
writer.write(String.format(",%s", (value == null) || (value instanceof String) || (IQueryRetrieval.NaN.equals(value.toString())) ? "?" : value));
} else
writer.write(String.format(",%s%s%s", value == null ? "" : "\"", value == null ? "?" : value.toString().replace("\n", "").replace("\r", ""), value == null ? "" : "\""));
}
i++;
}
writer.write('\n');
} catch (Exception x) {
logger.log(java.util.logging.Level.SEVERE, x.getMessage(), x);
}
return null;
}
use of ambit2.rules.conditions.value.IValue in project ambit-mirror by ideaconsult.
the class ReadChemPropertiesByComposition method processDetail.
/**
* Hack for merging dataset properties with substances; This is not
* necessarily correct, as the substance may have many components!
*
* @param target
* @param detail
* @return
* @throws Exception
*/
public SubstanceRecord processDetail(SubstanceRecord target, IStructureRecord detail) throws Exception {
for (Property p : detail.getRecordProperties()) {
if (p.getName().indexOf("#explanation") > 0)
continue;
else if (p.getName().indexOf("Error") >= 0)
continue;
else if (p.getName().indexOf("Alert for") == 0)
continue;
else if (p.getName().indexOf("For a better assessment") >= 0)
continue;
Protocol._categories category = Protocol._categories.SUPPORTING_INFO_SECTION;
if (p.getLabel().endsWith("Carcinogenicity"))
category = Protocol._categories.TO_CARCINOGENICITY_SECTION;
else if (p.getLabel().endsWith("Mutagenicity"))
category = Protocol._categories.TO_GENETIC_IN_VITRO_SECTION;
else if (p.getLabel().endsWith("Dissociation_constant_pKa"))
category = Protocol._categories.PC_DISSOCIATION_SECTION;
else if (p.getLabel().endsWith("Octanol-water_partition_coefficient_Kow"))
category = Protocol._categories.PC_PARTITION_SECTION;
else if (p.getLabel().endsWith("Acute_toxicity_to_fish_lethality"))
category = Protocol._categories.EC_FISHTOX_SECTION;
else if (p.getLabel().endsWith("Eye_irritation_corrosion"))
category = Protocol._categories.TO_EYE_IRRITATION_SECTION;
else if (p.getLabel().endsWith("SkinIrritationCorrosion"))
category = Protocol._categories.TO_SKIN_IRRITATION_SECTION;
else if (p.getLabel().endsWith("SkinSensitisation"))
category = Protocol._categories.TO_SENSITIZATION_SECTION;
else if (p.getLabel().endsWith("PersistenceBiodegradation"))
category = Protocol._categories.TO_BIODEG_WATER_SCREEN_SECTION;
else if (p.getLabel().endsWith("Genotoxicity"))
category = Protocol._categories.TO_GENETIC_IN_VITRO_SECTION;
else if (p.getLabel().endsWith("ReproductiveToxicity"))
category = Protocol._categories.TO_REPRODUCTION_SECTION;
else if (p.getLabel().endsWith("DevelopmentalToxicity"))
category = Protocol._categories.TO_DEVELOPMENTAL_SECTION;
else if (p.getLabel().endsWith("Sensitisation"))
category = Protocol._categories.TO_SENSITIZATION_SECTION;
else if (p.getLabel().endsWith("Respiratory_sensitisation"))
category = Protocol._categories.TO_REPEATED_INHAL_SECTION;
SubstanceProperty sp = new SubstanceProperty("TOX", category.name().replace("_SECTION", ""), p.getName(), p.getUnits(), p.getReference());
sp.setEnabled(true);
if (p.getReference().getType().equals(_type.Dataset))
sp.setStudyResultType(_r_flags.experimentalresult);
else
sp.setStudyResultType(_r_flags.estimatedbycalculation);
if (detail.getRecordProperty(p) != null) {
target.setRecordProperty(sp, detail.getRecordProperty(p));
/*
* Object value = target.getProperty(sp); if (value == null)
* target.setProperty(sp, detail.getProperty(p)); else { if
* (value instanceof MultiValue) { IValue v = new
* Value(detail.getProperty(p)); ((MultiValue) value).add(v); }
* else { MultiValue v = new MultiValue(); IValue vo = new
* Value(value); v.add(vo); vo = new
* Value(detail.getProperty(p)); v.add(vo);
* target.setProperty(sp, v); }
*
* }
*/
}
}
return target;
}
use of ambit2.rules.conditions.value.IValue in project ambit-mirror by ideaconsult.
the class ConditionJsonParser method getDescriptorValueCondition.
public static IDescriptorValueCondition getDescriptorValueCondition(JsonNode node) throws Exception {
StringBuffer errors = new StringBuffer();
String descrName = JSONParsingUtils.extractStringKeyword(node, "DESCRIPTOR", true);
String descrRelationStr = JSONParsingUtils.extractStringKeyword(node, "RELATION", true);
IValue.Relation relation = Relation.getRelationFromString(descrRelationStr);
Double descrValue = JSONParsingUtils.extractDoubleKeyword(node, "VALUE", true);
if (errors.toString().isEmpty()) {
IValue val = new Value();
val.setValue(descrValue);
val.setRelation(relation);
IDescriptorValueCondition dvc = new DescriptorValueCondition(val, null, descrName);
return dvc;
} else
throw new Exception("Errors in DescriptorValueCondition: " + errors.toString());
}
use of ambit2.rules.conditions.value.IValue in project ambit-mirror by ideaconsult.
the class StructureRecordXLSXReporter method processItem.
@Override
public Object processItem(IStructureRecord item) throws Exception {
Row row = sheet.createRow(rowIndex);
row.setHeightInPoints(new Float(d.getHeight() + 2 * offset));
int r = 0;
if (item instanceof SubstanceRecord) {
SubstanceRecord record = (SubstanceRecord) item;
Cell cell = row.createCell(_columns.tag.ordinal());
cell.setCellType(CellType.NUMERIC);
cell.setCellStyle(style);
cell.setCellValue(rowIndex);
cell = row.createCell(_columns.name.ordinal());
cell.setCellType(CellType.STRING);
cell.setCellStyle(style);
try {
Object name = record.getRecordProperty(new SubstancePublicName());
cell.setCellValue(name == null ? record.getRecordProperty(new SubstanceName()).toString() : name.toString());
} catch (Exception x) {
}
for (Property p : record.getRecordProperties()) if (p.getLabel().startsWith(prefix)) {
Integer colIndex = mergedProperties.get(p.getLabel());
if (colIndex == null) {
int last = mergedProperties.size();
mergedProperties.put(p.getLabel(), last);
colIndex = last;
}
Cell pcell = row.getCell(colIndex + _columns.component.ordinal() + 1);
if (pcell == null) {
pcell = row.createCell(colIndex + _columns.component.ordinal() + 1);
pcell.setCellStyle(blueStyle);
pcell.setCellType(CellType.STRING);
Cell hcell = sheet.getRow(0).createCell(colIndex + _columns.component.ordinal() + 1);
hcell.setCellType(CellType.STRING);
hcell.setCellStyle(hstyle);
String h = p.getLabel().replace(prefix, "");
try {
Protocol._categories c = Protocol._categories.valueOf(h + "_SECTION");
hcell.setCellValue(c.getNumber() + ". " + c.toString());
} catch (Exception x) {
hcell.setCellValue(h);
}
if (isAutosizeColumns())
sheet.autoSizeColumn(hcell.getColumnIndex(), true);
sheet.setColumnHidden(hcell.getColumnIndex(), false);
}
Object value = record.getRecordProperty(p);
try {
String cellvalue = formatter.format((SubstanceProperty) p, value);
if (cellvalue == null || "".equals(cellvalue.trim())) {
// do nothing
} else {
_r_flags studyResultType = ((SubstanceProperty) p).getStudyResultType();
String flag = "";
Font font = redFont;
if (studyResultType != null)
switch(studyResultType) {
case experimentalresult:
{
font = blueFont;
break;
}
case other:
{
font = blackFont;
break;
}
case unsupported:
{
font = blackFont;
break;
}
case NOTSPECIFIED:
{
font = blackFont;
break;
}
case nodata:
{
font = blackFont;
break;
}
default:
{
font = redFont;
flag = studyResultType.getIdentifier() + ": ";
}
}
RichTextString rtvalue = pcell.getRichStringCellValue();
if (rtvalue == null || rtvalue.length() == 0 || "".equals(rtvalue.getString().trim())) {
pcell.setCellValue(createRichTextString(flag + cellvalue, font));
} else {
if (rtvalue instanceof XSSFRichTextString) {
((XSSFRichTextString) rtvalue).append("\n" + flag + cellvalue, (XSSFFont) font);
} else {
pcell.setCellValue(createRichTextString(pcell.getStringCellValue() + "\n" + flag + cellvalue, font));
}
}
if (isAutosizeColumns())
sheet.autoSizeColumn(pcell.getColumnIndex(), true);
}
} catch (Exception x) {
if (value instanceof IValue) {
value = p.getName() + "=" + ((IValue) value).toHumanReadable() + ((p.getUnits() != null) ? p.getUnits() : "") + (p.getReference().getURL() != null ? ("[" + p.getReference().getURL() + "]") : "");
} else if (value instanceof MultiValue) {
StringBuilder b = new StringBuilder();
for (int i = 0; i < ((MultiValue) value).size(); i++) {
if (i > 0)
b.append("\n");
b.append(p.getName());
b.append("=");
b.append(((IValue) ((MultiValue) value).get(i)).toHumanReadable());
if (p.getUnits() != null)
b.append(p.getUnits());
}
if (p.getReference().getURL() != null) {
b.append(" [");
b.append(p.getReference().getURL());
b.append("]");
}
value = b.toString();
} else {
value = p.getName() + "=" + value.toString() + ((p.getUnits() != null) ? p.getUnits() : "") + (p.getReference().getURL() != null ? ("[" + p.getReference().getURL() + "]") : "");
}
pcell.setCellValue(String.format("%s%s%s", pcell.getStringCellValue() == null ? "" : pcell.getStringCellValue(), pcell.getStringCellValue() == null ? "" : "\n", value.toString()));
}
}
//
if (record.getRelatedStructures() != null) {
for (CompositionRelation relation : record.getRelatedStructures()) {
Row structure = (r == 0) ? row : sheet.createRow((short) (rowIndex + r));
try {
structure.setHeightInPoints(new Float(d.getHeight() + 2 * offset));
addPicture(relation.getSecondStructure(), structure.getRowNum(), _columns.diagram.ordinal());
} catch (Exception x) {
x.printStackTrace();
}
Cell cellStruc = structure.createCell(_columns.component.ordinal());
cellStruc.setCellStyle(style);
cellStruc.setCellValue(relation.getRelationType().toHumanReadable());
r++;
}
}
}
if (r > 1) {
for (int c = 0; c < mergedProperties.size(); c++) {
sheet.addMergedRegion(new CellRangeAddress(rowIndex, rowIndex + r - 1, c + _columns.component.ordinal() + 1, c + _columns.component.ordinal() + 1));
}
rowIndex += r;
} else
rowIndex++;
return item;
}
use of ambit2.rules.conditions.value.IValue in project ambit-mirror by ideaconsult.
the class CompoundJSONReporter method processItem.
@Override
public Object processItem(IStructureRecord item) throws AmbitException {
try {
Writer writer = getOutput();
writeHeader(writer);
append2header(writer, item);
int i = 0;
String uri = getURI(item);
StringBuilder builder = new StringBuilder();
if (comma != null)
builder.append(comma);
builder.append("\n\t{\n");
builder.append(String.format("\t\"%s\":{\n", jsonCompound.compound.jsonname()));
builder.append(String.format("\t\t\"%s\":\"%s\",\n", jsonCompound.URI.jsonname(), uri));
builder.append(String.format("\t\t\"%s\":\"%s\",\n", jsonCompound.structype.jsonname(), item.getType().name()));
if (includeMol)
if (item.getContent() == null)
builder.append(String.format("\t\t\"%s\":null,\n", jsonCompound.mol.jsonname()));
else
builder.append(String.format("\t\t\"%s\":\"%s\",\n", jsonCompound.mol.jsonname(), JSONUtils.jsonEscape(getSDFContent(item))));
// similarity
Object similarityValue = null;
for (Property p : item.getRecordProperties()) if ("metric".equals(p.getName())) {
similarityValue = item.getRecordProperty(p);
break;
}
builder.append(String.format("\t\t\"metric\":%s,\n", similarityValue));
// placeholders
builder.append(String.format("\t\t\"%s\":\"\",\n", "name"));
builder.append(String.format("\t\t\"%s\":\"\",\n", "cas"));
builder.append(String.format("\t\t\"%s\":\"\"\n", "einecs"));
if (item.getInchiKey() != null)
builder.append(String.format(",\t\t\"%s\":\"%s\"\n", "inchikey", item.getInchiKey()));
if (item.getInchi() != null)
builder.append(String.format(",\t\t\"%s\":\"%s\"\n", "inchi", JSONUtils.jsonEscape(item.getInchi())));
if (item.getFormula() != null)
builder.append(String.format(",\t\t\"%s\":\"%s\"", "formula", JSONUtils.jsonEscape(item.getFormula())));
builder.append("\n\t\t},\n");
builder.append(String.format("\t\"%s\":{\n", jsonCompound.values.jsonname()));
String comma1 = null;
for (int j = 0; j < header.size(); j++) {
Property p = header.get(j);
Object value = item.getRecordProperty(p);
String key = propertyJSONReporter.getURI(p);
if (key.contains("cdk:Title") || key.contains("cdk:Formula"))
continue;
if (key.contains("SMARTSProp"))
continue;
if (value == null) {
// builder.append(String.format("\t\t\"%s\":null",key));
continue;
}
if (comma1 != null) {
builder.append(comma1);
builder.append("\n");
}
if (value instanceof Double) {
if (((Double) value).isNaN())
builder.append(String.format(Locale.ENGLISH, "\t\t\"%s\":null", key));
else
builder.append(String.format(Locale.ENGLISH, "\t\t\"%s\":%6.3f", key, (Double) value));
} else if (value instanceof Integer)
builder.append(String.format("\t\t\"%s\":%d", key, (Integer) value));
else if (value instanceof Long)
builder.append(String.format("\t\t\"%s\":%l", key, (Long) value));
else if (value instanceof IValue)
builder.append(String.format("\t\t\"%s\":%s", key, ((IValue) value)).toString());
else if (value instanceof MultiValue) {
StringBuilder b = new StringBuilder();
String delimiter = "[";
for (IValue v : (MultiValue<IValue>) value) {
b.append(delimiter);
b.append(v.toString());
delimiter = ",";
}
b.append("]\n");
builder.append(String.format("\t\t\"%s\":%s", key, b.toString()));
} else
builder.append(String.format("\t\t\"%s\":\"%s\"", key, JSONUtils.jsonEscape(value.toString().replace("\n", "|"))));
i++;
comma1 = ",";
}
builder.append("\n\t\t},\n");
builder.append(String.format("\t\"%s\":[\n", jsonCompound.facets.jsonname()));
Iterable<IFacet> facets = item.getFacets();
String delimiter = "";
if (facets != null)
for (IFacet facet : facets) {
if (facet instanceof BundleRoleFacet)
continue;
if (facet.getValue() == null)
continue;
builder.append(delimiter);
builder.append(String.format("\t\t{\"%s\":%d}", facet.getValue() == null ? "" : facet.getValue(), facet.getCount()));
delimiter = ",";
}
builder.append("\n\t\t],");
if ((item instanceof SubstanceRecord) && ((SubstanceRecord) item).getRelatedStructures() != null) {
SubstanceRecord substance = (SubstanceRecord) item;
builder.append(String.format("\n\t%s:[\n", JSONUtils.jsonQuote(jsonCompound.composition.jsonname())));
List<CompositionRelation> composition = substance.getRelatedStructures();
for (int j = 0; j < composition.size(); j++) {
CompositionRelation cr = composition.get(j);
if (j > 0)
builder.append(",\n");
String component = "{}";
if (cr.getSecondStructure() != null && cr.getSecondStructure().getIdchemical() > 0) {
// StringBuilder bundles = new StringBuilder();
// printBundles(cr.getSecondStructure().getFacets(),
// bundles);
Writer o = getOutput();
String savecomma = comma;
StringWriter w = new StringWriter();
setOutput(w);
setComma(null);
processItem(cr.getSecondStructure());
setOutput(o);
setComma(savecomma);
// System.out.println(w);
component = w.toString();
/*
* component = String.format(
* "{\"compound\":{\"URI\":\"%s/compound/%d\",\n\t%s}}",
* urlPrefix
* ,cr.getSecondStructure().getIdchemical(),bundles
* .toString());
*/
}
builder.append(cr.toJSON(uri, component));
}
builder.append("\n\t\t],");
}
printBundles(item.getFacets(), builder);
builder.append("\n\t}");
writer.write(builder.toString());
comma = ",";
} catch (Exception x) {
logger.log(java.util.logging.Level.SEVERE, x.getMessage(), x);
}
return item;
}
Aggregations