using standards to gain interoperability: bioclipse-opentox scripting
DESCRIPTION
TRANSCRIPT
Using standards to gain interoperability:Bioclipse-OpenTox scripting
Egon Willighagen
http://egonw.github.com/
http://chem-bla-ics.blogspot.com/
IMM
Karolinska Institutet, Stockholm
2
Managers: the vital organs of Bioclipse
Some theory
● Make sure that things happen● They provide all domain-related functionality● All Bioclipse GUI is using managers in the background● Takes care of threading (background processes)
● They are plugged into the system● Bioclipse dynamically discovers managers when booted
● Extend the JavaScript Console
Spjuth, O., Alvarsson, J., Berg, A., Eklund, M., Kuhn, S., Mäsak, C., Torrance, G., Wagener, J., Willighagen, E. L., Steinbeck, C., Wikberg, J. E., Dec. 2009. Bioclipse 2: A scriptable integration platform for the life sciences. BMC Bioinformatics 10 (1), 397+.
3
JavaScript Console
4
TAB TAB
Discover manager in the JavaScript console with:
1) TAB TAB (auto-completion)
2) man
5
Many Managers
Cheminformatics1. cdk
2. opsin
3. jmol
4. balloon
General1. bioclipse
2. ui
3. rdf
Online1. chemspider
2. pubchem
3. gist
4. opentox
Many more can be installed via update sites...
6
man <manager>
Discover what functionality a manager has
7
Ctrl-N → JavaScript editor
Ctrl-N → JavaScript Wizard → Editor → Save As …
8
Running JavaScripts in the Editor
JavaScript Editor → Run → Action
9
Managers can be combined ...
var alkanesIUPACNames = ["methane", "ethane", "propane", "butane"];
var alkanes = cdk.createMoleculeList()
for (var i=0; i<alkanesIUPACNames.length; i++) {
js.say("Adding: " + alkanesIUPACNames[i]);
alkanes.add(
opsin.parseIUPACName(alkanesIUPACNames[i])
);
}
var filename = "/OpenTox/alkanes.sdf";
cdk.saveSDFile(filename, alkanes);
ui.open(filename);
10
OpenTox: downloading data sets
var service = "http://apps.ideaconsult.net:8080/ambit2/";
var datasets = opentox.listDataSets(service);
for (set=0; set<5; set++) {
var dataset = datasets.get(set);
js.say("Downloading set: " + dataset);
ui.open(
opentox.downloadDataSetAsMDLSDfile(
service, dataset, "/OpenTox/ambit/" + set + ".sdf"
)
)
}
11
OpenTox: download-ed data sets
12
OpenTox: authentication(if needed)
opentox.getToken(); // return a null
// log in on the OpenTox network
opentox.login("user", "password")
opentox.getToken(); // returns the active token
// log out again
opentox.logout()
opentox.getToken(); // return again
13
OpenTox: searching data sets
var ontologyService = "http://apps.ideaconsult.net:8080/ontology/";
js.clear();
sets = opentox.searchDataSets(ontologyService, "EPA");
js.say(sets);
14
OpenTox: finding descriptors
serviceSPARQL = "http://apps.ideaconsult.net:8080/ontology/";
stringMat = opentox.listDescriptors(serviceSPARQL);
stringMat.getColumn("algo"); // returns the descriptor services
stringMat.getColumn("desc"); // returns the descriptor ontology entries
js.say(stringMat);
15
OpenTox: XLogP calculation
molecules = cdk.createMoleculeList();
molecules.add(cdk.fromSMILES("COC"));
molecules.add(cdk.fromSMILES("CNC"));
js.say(opentox.calculateDescriptor(service, descriptor, molecules));
js.say(opentox.calculateDescriptor(
service, descriptor,
cdk.fromSMILES("CCC")
));
16
OpenTox: searching descriptors(next release; a 5 min hack)
var ontologyService = "http://apps.ideaconsult.net:8080/ontology/";
js.clear();
descriptors = opentox.searchDescriptors(
ontologyService, "LogP"
);
js.say(descriptors);
17
OpenTox: searching models(next release; another 5 min hack)
var ontologyService = "http://apps.ideaconsult.net:8080/ontology/";
js.clear();
descriptors = opentox.searchModels(
ontologyService, "ToxTree"
);
js.say(descriptors);
18
OpenTox: running models
models = opentox.listModels(ontologyService);
model = models.get(3); // third model
js.say(
opentox.predictWithModel(
service,
model,
molecules
)
);
19
Ontology development needed...
… just saying ...
20
More OpenTox: man opentox
Or type: “opentox.” and hit TAB TAB ...
21
Under the hood...
Some more theory...
Internally, the opentox manager uses RDF and SPARQL for a lot of communication with the OpenTox network.
For this, it uses the rdf manager. For example, directly to the ontology server:
1. rdf.sparqlRemote(String url, String SPARQL)
Or to a REST service:
1. rdf.createInMemoryStore()
2. rdf.importFromStream(IRDFStore store, InputStream stream, String format)
3. rdf.sparql(IRDFStore store, String query)
22
Where to get more scripts ...
23
Future ...
● Continued development● Computation without downloading data (pass by reference)● More ontology development for further standardization
Pointers● Bug tracker: http://bugs.bioclipse.net/● Feature requests: http://wishes.bioclipse.net/