- Added YARD documentation
- Added description of functions in classyfire_api
This commit is contained in:
parent
7789ed13ff
commit
84e302e665
|
@ -0,0 +1,3 @@
|
|||
lib/classyfire_api.rb ed7783c1c688d4ee2a91044082a5ac80c3cd3c3e
|
||||
lib/query_resource.rb 645cfb1688a5c44e67e5227fc0e9a77589731f24
|
||||
lib/entity_resource.rb 6c50b4be6a5eb13b44d7080b19c7033b7a37c7cf
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,4 @@
|
|||
source "https://rubygems.org"
|
||||
|
||||
gem 'rest-client'
|
||||
gem 'yard'
|
|
@ -0,0 +1,27 @@
|
|||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
domain_name (0.5.20160309)
|
||||
unf (>= 0.0.5, < 1.0.0)
|
||||
http-cookie (1.0.2)
|
||||
domain_name (~> 0.5)
|
||||
mime-types (2.99.1)
|
||||
netrc (0.11.0)
|
||||
rest-client (1.8.0)
|
||||
http-cookie (>= 1.0.2, < 2.0)
|
||||
mime-types (>= 1.16, < 3.0)
|
||||
netrc (~> 0.7)
|
||||
unf (0.1.4)
|
||||
unf_ext
|
||||
unf_ext (0.0.7.2)
|
||||
yard (0.8.7.6)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
rest-client
|
||||
yard
|
||||
|
||||
BUNDLED WITH
|
||||
1.11.2
|
26
README.md
26
README.md
|
@ -29,11 +29,17 @@
|
|||
> >
|
||||
> >###GET###
|
||||
> >
|
||||
> >**/entities/{entity_inchikey}**
|
||||
> >**/entities/{entityInchikey}**
|
||||
> >
|
||||
> >A chemical compound's classification can be retrieved in the JSON or XML format. The compound's information is accessed via the InChIkey as show in the following examples. In this example, the entity has the InChIKey=LABTWGUMFABVFG-ONEGZZNKSA-N.
|
||||
> > >
|
||||
> > >curl -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://classyfire.wishartlab.com/entities/BDAGIHXWWSANSR-UHFFFAOYSA-N.json
|
||||
> > >ClassyFireAPI.get_entity_classification("BDAGIHXWWSANSR-UHFFFAOYSA-N","json")
|
||||
> >
|
||||
> > Where:
|
||||
> >
|
||||
> > >The entity's InChIKey is "BDAGIHXWWSANSR-UHFFFAOYSA-N",
|
||||
> > >
|
||||
> > >The output format is "json" (JSON).
|
||||
|
||||
|
||||
> ##2. Query##
|
||||
|
@ -41,29 +47,33 @@
|
|||
> >The Query model represents the chemical structure to be classified. Its attributes are the query label and the query input.
|
||||
> > >The query label is an identifier
|
||||
> > >
|
||||
> > > The query input contains the compound's identifier (optional) and its structural representation, separated by a comma. The chemical structure is represented either in the [Daylight SMILES](http://www.daylight.com/dayhtml/doc/theory/theory.smiles.html) or the [InChI](http://www.iupac.org/home/publications/e-resources/inchi.html) format.
|
||||
> > >The query input contains the compound's identifier (optional) and its structural representation, separated by a comma. The chemical structure is represented either in the [Daylight SMILES](http://www.daylight.com/dayhtml/doc/theory/theory.smiles.html) or the [InChI](http://www.iupac.org/home/publications/e-resources/inchi.html) format.
|
||||
> >
|
||||
> >###POST###
|
||||
> >A query can be submitted using the POST method as demonstrated in the following example.
|
||||
> > >curl -is http://localhost:3000/queries.json -X POST -d '{"label":"curl_test","query_input":"MOL1,CCCOCC\nMOL2,COCC=CCCC"}' -H "Content-Type: application/json"
|
||||
> > >ClassyFireAPI.submit_query("curl_test","MOL1\\tCCCOCC\\nMOL2\\tCOCC=CCCC","STRUCTURE")
|
||||
> >
|
||||
> >where the parameters are:
|
||||
> >
|
||||
> > >The query label: curl_test,
|
||||
> > >
|
||||
> > >The entity identifiers: ID1,ID2
|
||||
> > >The entity identifiers: MOL1,MOL2
|
||||
> >
|
||||
> > >The entity's structure represented in the SMILES format: CCCOCC and COCC=CCCC.
|
||||
> >
|
||||
> > >The query is of type 'STRUCTURE'
|
||||
|
||||
> >###GET###
|
||||
> >
|
||||
> >**/queries/{query_id}**
|
||||
> >**/queries/{queryId}**
|
||||
> >
|
||||
> >The classification results can be retrieved via a GET method in the JSON or XML format.
|
||||
> > >
|
||||
> > >curl -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://classyfire.wishartlab.com/queries/88.json
|
||||
> > >ClassyFireAPI.get_query(443431,"json")
|
||||
> >
|
||||
> >where the query id is 88.
|
||||
> >where:
|
||||
> > >The query id is 443431,
|
||||
> > >The output format is "json" (JSON)
|
||||
|
||||
|
||||
# **Directory Structure** #
|
||||
|
|
|
@ -1 +1 @@
|
|||
djoumbou
|
||||
Yannick Djoumbou Feunang
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,123 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>
|
||||
Class: EntityResource
|
||||
|
||||
— Documentation by YARD 0.8.7.6
|
||||
|
||||
</title>
|
||||
|
||||
<link rel="stylesheet" href="css/style.css" type="text/css" charset="utf-8" />
|
||||
|
||||
<link rel="stylesheet" href="css/common.css" type="text/css" charset="utf-8" />
|
||||
|
||||
<script type="text/javascript" charset="utf-8">
|
||||
hasFrames = window.top.frames.main ? true : false;
|
||||
relpath = '';
|
||||
framesUrl = "frames.html#!EntityResource.html";
|
||||
</script>
|
||||
|
||||
|
||||
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
||||
|
||||
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<div id="menu">
|
||||
|
||||
<a href="_index.html">Index (E)</a> »
|
||||
|
||||
|
||||
<span class="title">EntityResource</span>
|
||||
|
||||
|
||||
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
|
||||
</div>
|
||||
|
||||
<div id="search">
|
||||
|
||||
<a class="full_list_link" id="class_list_link"
|
||||
href="class_list.html">
|
||||
Class List
|
||||
</a>
|
||||
|
||||
<a class="full_list_link" id="method_list_link"
|
||||
href="method_list.html">
|
||||
Method List
|
||||
</a>
|
||||
|
||||
<a class="full_list_link" id="file_list_link"
|
||||
href="file_list.html">
|
||||
File List
|
||||
</a>
|
||||
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
|
||||
<iframe id="search_frame"></iframe>
|
||||
|
||||
<div id="content"><h1>Class: EntityResource
|
||||
|
||||
|
||||
|
||||
</h1>
|
||||
|
||||
<dl class="box">
|
||||
|
||||
<dt class="r1">Inherits:</dt>
|
||||
<dd class="r1">
|
||||
<span class="inheritName">ActiveResource::Base</span>
|
||||
|
||||
<ul class="fullTree">
|
||||
<li>Object</li>
|
||||
|
||||
<li class="next">ActiveResource::Base</li>
|
||||
|
||||
<li class="next">EntityResource</li>
|
||||
|
||||
</ul>
|
||||
<a href="#" class="inheritanceTree">show all</a>
|
||||
|
||||
</dd>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<dt class="r2 last">Defined in:</dt>
|
||||
<dd class="r2 last">lib/entity_resource.rb</dd>
|
||||
|
||||
</dl>
|
||||
<div class="clear"></div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div id="footer">
|
||||
Generated on Wed Mar 9 19:25:39 2016 by
|
||||
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
||||
0.8.7.6 (ruby-2.3.0).
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,192 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>
|
||||
Class: QueryResource
|
||||
|
||||
— Documentation by YARD 0.8.7.6
|
||||
|
||||
</title>
|
||||
|
||||
<link rel="stylesheet" href="css/style.css" type="text/css" charset="utf-8" />
|
||||
|
||||
<link rel="stylesheet" href="css/common.css" type="text/css" charset="utf-8" />
|
||||
|
||||
<script type="text/javascript" charset="utf-8">
|
||||
hasFrames = window.top.frames.main ? true : false;
|
||||
relpath = '';
|
||||
framesUrl = "frames.html#!QueryResource.html";
|
||||
</script>
|
||||
|
||||
|
||||
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
||||
|
||||
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<div id="menu">
|
||||
|
||||
<a href="_index.html">Index (Q)</a> »
|
||||
|
||||
|
||||
<span class="title">QueryResource</span>
|
||||
|
||||
|
||||
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
|
||||
</div>
|
||||
|
||||
<div id="search">
|
||||
|
||||
<a class="full_list_link" id="class_list_link"
|
||||
href="class_list.html">
|
||||
Class List
|
||||
</a>
|
||||
|
||||
<a class="full_list_link" id="method_list_link"
|
||||
href="method_list.html">
|
||||
Method List
|
||||
</a>
|
||||
|
||||
<a class="full_list_link" id="file_list_link"
|
||||
href="file_list.html">
|
||||
File List
|
||||
</a>
|
||||
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
|
||||
<iframe id="search_frame"></iframe>
|
||||
|
||||
<div id="content"><h1>Class: QueryResource
|
||||
|
||||
|
||||
|
||||
</h1>
|
||||
|
||||
<dl class="box">
|
||||
|
||||
<dt class="r1">Inherits:</dt>
|
||||
<dd class="r1">
|
||||
<span class="inheritName">ActiveResource::Base</span>
|
||||
|
||||
<ul class="fullTree">
|
||||
<li>Object</li>
|
||||
|
||||
<li class="next">ActiveResource::Base</li>
|
||||
|
||||
<li class="next">QueryResource</li>
|
||||
|
||||
</ul>
|
||||
<a href="#" class="inheritanceTree">show all</a>
|
||||
|
||||
</dd>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<dt class="r2 last">Defined in:</dt>
|
||||
<dd class="r2 last">lib/query_resource.rb</dd>
|
||||
|
||||
</dl>
|
||||
<div class="clear"></div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h2>
|
||||
Instance Method Summary
|
||||
<small>(<a href="#" class="summary_toggle">collapse</a>)</small>
|
||||
</h2>
|
||||
|
||||
<ul class="summary">
|
||||
|
||||
<li class="public ">
|
||||
<span class="summary_signature">
|
||||
|
||||
<a href="#to_param-instance_method" title="#to_param (instance method)">- (Object) <strong>to_param</strong> </a>
|
||||
|
||||
|
||||
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="summary_desc"><div class='inline'></div></span>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div id="instance_method_details" class="method_details_list">
|
||||
<h2>Instance Method Details</h2>
|
||||
|
||||
|
||||
<div class="method_details first">
|
||||
<h3 class="signature first" id="to_param-instance_method">
|
||||
|
||||
- (<tt>Object</tt>) <strong>to_param</strong>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</h3><table class="source_code">
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="lines">
|
||||
|
||||
|
||||
7
|
||||
8
|
||||
9</pre>
|
||||
</td>
|
||||
<td>
|
||||
<pre class="code"><span class="info file"># File 'lib/query_resource.rb', line 7</span>
|
||||
|
||||
<span class='kw'>def</span> <span class='id identifier rubyid_to_param'>to_param</span>
|
||||
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_identifier'>identifier</span>
|
||||
<span class='kw'>end</span></pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="footer">
|
||||
Generated on Wed Mar 9 19:25:39 2016 by
|
||||
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
||||
0.8.7.6 (ruby-2.3.0).
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,136 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>
|
||||
Documentation by YARD 0.8.7.6
|
||||
|
||||
</title>
|
||||
|
||||
<link rel="stylesheet" href="css/style.css" type="text/css" charset="utf-8" />
|
||||
|
||||
<link rel="stylesheet" href="css/common.css" type="text/css" charset="utf-8" />
|
||||
|
||||
<script type="text/javascript" charset="utf-8">
|
||||
hasFrames = window.top.frames.main ? true : false;
|
||||
relpath = '';
|
||||
framesUrl = "frames.html#!_index.html";
|
||||
</script>
|
||||
|
||||
|
||||
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
||||
|
||||
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<div id="menu">
|
||||
|
||||
|
||||
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
|
||||
</div>
|
||||
|
||||
<div id="search">
|
||||
|
||||
<a class="full_list_link" id="class_list_link"
|
||||
href="class_list.html">
|
||||
Class List
|
||||
</a>
|
||||
|
||||
<a class="full_list_link" id="method_list_link"
|
||||
href="method_list.html">
|
||||
Method List
|
||||
</a>
|
||||
|
||||
<a class="full_list_link" id="file_list_link"
|
||||
href="file_list.html">
|
||||
File List
|
||||
</a>
|
||||
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
|
||||
<iframe id="search_frame"></iframe>
|
||||
|
||||
<div id="content"><h1 class="noborder title">Documentation by YARD 0.8.7.6</h1>
|
||||
<div id="listing">
|
||||
<h1 class="alphaindex">Alphabetic Index</h1>
|
||||
|
||||
<h2>File Listing</h2>
|
||||
<ul id="files" class="index_inline_list">
|
||||
|
||||
|
||||
<li class="r1"><a href="index.html" title="README">README</a></li>
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
<div class="clear"></div>
|
||||
<h2>Namespace Listing A-Z</h2>
|
||||
|
||||
|
||||
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td valign='top' width="33%">
|
||||
|
||||
|
||||
<ul id="alpha_C" class="alpha">
|
||||
<li class="letter">C</li>
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
<span class='object_link'><a href="ClassyFireAPI.html" title="ClassyFireAPI (module)">ClassyFireAPI</a></span>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
|
||||
<ul id="alpha_E" class="alpha">
|
||||
<li class="letter">E</li>
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
<span class='object_link'><a href="EntityResource.html" title="EntityResource (class)">EntityResource</a></span>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
|
||||
<ul id="alpha_Q" class="alpha">
|
||||
<li class="letter">Q</li>
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
<span class='object_link'><a href="QueryResource.html" title="QueryResource (class)">QueryResource</a></span>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="footer">
|
||||
Generated on Wed Mar 9 19:25:38 2016 by
|
||||
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
||||
0.8.7.6 (ruby-2.3.0).
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,58 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<link rel="stylesheet" href="css/full_list.css" type="text/css" media="screen" charset="utf-8" />
|
||||
|
||||
<link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
||||
|
||||
<script type="text/javascript" charset="utf-8" src="js/full_list.js"></script>
|
||||
|
||||
|
||||
<title>Class List</title>
|
||||
<base id="base_target" target="_parent" />
|
||||
</head>
|
||||
<body>
|
||||
<script type="text/javascript" charset="utf-8">
|
||||
var hasFrames = false;
|
||||
try {
|
||||
hasFrames = window.top.frames.main ? true : false;
|
||||
} catch (e) { }
|
||||
if (hasFrames) {
|
||||
document.getElementById('base_target').target = 'main';
|
||||
document.body.className = 'frames';
|
||||
}
|
||||
</script>
|
||||
<div id="content">
|
||||
<h1 id="full_list_header">Class List</h1>
|
||||
<div id="nav">
|
||||
|
||||
<span><a target="_self" href="class_list.html">
|
||||
Classes
|
||||
</a></span>
|
||||
|
||||
<span><a target="_self" href="method_list.html">
|
||||
Methods
|
||||
</a></span>
|
||||
|
||||
<span><a target="_self" href="file_list.html">
|
||||
Files
|
||||
</a></span>
|
||||
|
||||
</div>
|
||||
<div id="search">Search: <input type="text" /></div>
|
||||
|
||||
<ul id="full_list" class="class">
|
||||
<li><span class='object_link'><a href="top-level-namespace.html" title="Top Level Namespace (root)">Top Level Namespace</a></span></li>
|
||||
<li><span class='object_link'><a href="ClassyFireAPI.html" title="ClassyFireAPI (module)">ClassyFireAPI</a></span><small class='search_info'>Top Level Namespace</small></li><li><span class='object_link'><a href="EntityResource.html" title="EntityResource (class)">EntityResource</a></span> < Base<small class='search_info'>Top Level Namespace</small></li><li><span class='object_link'><a href="QueryResource.html" title="QueryResource (class)">QueryResource</a></span> < Base<small class='search_info'>Top Level Namespace</small></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1 @@
|
|||
/* Override this file with custom rules */
|
|
@ -0,0 +1,57 @@
|
|||
body {
|
||||
margin: 0;
|
||||
font-family: "Lucida Sans", "Lucida Grande", Verdana, Arial, sans-serif;
|
||||
font-size: 13px;
|
||||
height: 101%;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
h1 { padding: 12px 10px; padding-bottom: 0; margin: 0; font-size: 1.4em; }
|
||||
.clear { clear: both; }
|
||||
#search { position: absolute; right: 5px; top: 9px; padding-left: 24px; }
|
||||
#content.insearch #search, #content.insearch #noresults { background: url(data:image/gif;base64,R0lGODlhEAAQAPYAAP///wAAAPr6+pKSkoiIiO7u7sjIyNjY2J6engAAAI6OjsbGxjIyMlJSUuzs7KamppSUlPLy8oKCghwcHLKysqSkpJqamvT09Pj4+KioqM7OzkRERAwMDGBgYN7e3ujo6Ly8vCoqKjY2NkZGRtTU1MTExDw8PE5OTj4+PkhISNDQ0MrKylpaWrS0tOrq6nBwcKysrLi4uLq6ul5eXlxcXGJiYoaGhuDg4H5+fvz8/KKiohgYGCwsLFZWVgQEBFBQUMzMzDg4OFhYWBoaGvDw8NbW1pycnOLi4ubm5kBAQKqqqiQkJCAgIK6urnJyckpKSjQ0NGpqatLS0sDAwCYmJnx8fEJCQlRUVAoKCggICLCwsOTk5ExMTPb29ra2tmZmZmhoaNzc3KCgoBISEiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCAAAACwAAAAAEAAQAAAHaIAAgoMgIiYlg4kACxIaACEJCSiKggYMCRselwkpghGJBJEcFgsjJyoAGBmfggcNEx0flBiKDhQFlIoCCA+5lAORFb4AJIihCRbDxQAFChAXw9HSqb60iREZ1omqrIPdJCTe0SWI09GBACH5BAkIAAAALAAAAAAQABAAAAdrgACCgwc0NTeDiYozCQkvOTo9GTmDKy8aFy+NOBA7CTswgywJDTIuEjYFIY0JNYMtKTEFiRU8Pjwygy4ws4owPyCKwsMAJSTEgiQlgsbIAMrO0dKDGMTViREZ14kYGRGK38nHguHEJcvTyIEAIfkECQgAAAAsAAAAABAAEAAAB2iAAIKDAggPg4iJAAMJCRUAJRIqiRGCBI0WQEEJJkWDERkYAAUKEBc4Po1GiKKJHkJDNEeKig4URLS0ICImJZAkuQAhjSi/wQyNKcGDCyMnk8u5rYrTgqDVghgZlYjcACTA1sslvtHRgQAh+QQJCAAAACwAAAAAEAAQAAAHZ4AAgoOEhYaCJSWHgxGDJCQARAtOUoQRGRiFD0kJUYWZhUhKT1OLhR8wBaaFBzQ1NwAlkIszCQkvsbOHL7Y4q4IuEjaqq0ZQD5+GEEsJTDCMmIUhtgk1lo6QFUwJVDKLiYJNUd6/hoEAIfkECQgAAAAsAAAAABAAEAAAB2iAAIKDhIWGgiUlh4MRgyQkjIURGRiGGBmNhJWHm4uen4ICCA+IkIsDCQkVACWmhwSpFqAABQoQF6ALTkWFnYMrVlhWvIKTlSAiJiVVPqlGhJkhqShHV1lCW4cMqSkAR1ofiwsjJyqGgQAh+QQJCAAAACwAAAAAEAAQAAAHZ4AAgoOEhYaCJSWHgxGDJCSMhREZGIYYGY2ElYebi56fhyWQniSKAKKfpaCLFlAPhl0gXYNGEwkhGYREUywag1wJwSkHNDU3D0kJYIMZQwk8MjPBLx9eXwuETVEyAC/BOKsuEjYFhoEAIfkECQgAAAAsAAAAABAAEAAAB2eAAIKDhIWGgiUlh4MRgyQkjIURGRiGGBmNhJWHm4ueICImip6CIQkJKJ4kigynKaqKCyMnKqSEK05StgAGQRxPYZaENqccFgIID4KXmQBhXFkzDgOnFYLNgltaSAAEpxa7BQoQF4aBACH5BAkIAAAALAAAAAAQABAAAAdogACCg4SFggJiPUqCJSWGgkZjCUwZACQkgxGEXAmdT4UYGZqCGWQ+IjKGGIUwPzGPhAc0NTewhDOdL7Ykji+dOLuOLhI2BbaFETICx4MlQitdqoUsCQ2vhKGjglNfU0SWmILaj43M5oEAOwAAAAAAAAAAAA==) no-repeat center left; }
|
||||
#full_list { padding: 0; list-style: none; margin-left: 0; }
|
||||
#full_list ul { padding: 0; }
|
||||
#full_list li { padding: 5px; padding-left: 12px; margin: 0; font-size: 1.1em; list-style: none; }
|
||||
#noresults { padding: 7px 12px; }
|
||||
#content.insearch #noresults { margin-left: 7px; }
|
||||
ul.collapsed ul, ul.collapsed li { display: none; }
|
||||
ul.collapsed.search_uncollapsed { display: block; }
|
||||
ul.collapsed.search_uncollapsed li { display: list-item; }
|
||||
li a.toggle { cursor: default; position: relative; left: -5px; top: 4px; text-indent: -999px; width: 10px; height: 9px; margin-left: -10px; display: block; float: left; background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAK8AAACvABQqw0mAAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTM5jWRgMAAAAVdEVYdENyZWF0aW9uIFRpbWUAMy8xNC8wOeNZPpQAAAE2SURBVDiNrZTBccIwEEXfelIAHUA6CZ24BGaWO+FuzZAK4k6gg5QAdGAq+Bxs2Yqx7BzyL7Llp/VfzZeQhCTc/ezuGzKKnKSzpCxXJM8fwNXda3df5RZETlIt6YUzSQDs93sl8w3wBZxCCE10GM1OcWbWjB2mWgEH4Mfdyxm3PSepBHibgQE2wLe7r4HjEidpnXMYdQPKEMJcsZ4zs2POYQOcaPfwMVOo58zsAdMt18BuoVDPxUJRacELbXv3hUIX2vYmOUvi8C8ydz/ThjXrqKqqLbDIAdsCKBd+Wo7GWa7o9qzOQHVVVXeAbs+yHHCH4aTsaCOQqunmUy1yBUAXkdMIfMlgF5EXLo2OpV/c/Up7jG4hhHcYLgWzAZXUc2b2ixsfvc/RmNNfOXD3Q/oeL9axJE1yT9IOoUu6MGUkAAAAAElFTkSuQmCC) no-repeat bottom left; }
|
||||
li.collapsed a.toggle { opacity: 0.5; cursor: default; background-position: top left; }
|
||||
li { color: #888; cursor: pointer; }
|
||||
li.deprecated { text-decoration: line-through; font-style: italic; }
|
||||
li.r1 { background: #f0f0f0; }
|
||||
li.r2 { background: #fafafa; }
|
||||
li:hover { background: #ddd; }
|
||||
li small:before { content: "("; }
|
||||
li small:after { content: ")"; }
|
||||
li small.search_info { display: none; }
|
||||
a:link, a:visited { text-decoration: none; color: #05a; }
|
||||
li.clicked { background: #05a; color: #ccc; }
|
||||
li.clicked a:link, li.clicked a:visited { color: #eee; }
|
||||
li.clicked a.toggle { opacity: 0.5; background-position: bottom right; }
|
||||
li.collapsed.clicked a.toggle { background-position: top right; }
|
||||
#search input { border: 1px solid #bbb; -moz-border-radius: 3px; -webkit-border-radius: 3px; }
|
||||
#nav { margin-left: 10px; font-size: 0.9em; display: none; color: #aaa; }
|
||||
#nav a:link, #nav a:visited { color: #358; }
|
||||
#nav a:hover { background: transparent; color: #5af; }
|
||||
.frames #nav span:after { content: ' | '; }
|
||||
.frames #nav span:last-child:after { content: ''; }
|
||||
|
||||
.frames #content h1 { margin-top: 0; }
|
||||
.frames li { white-space: nowrap; cursor: normal; }
|
||||
.frames li small { display: block; font-size: 0.8em; }
|
||||
.frames li small:before { content: ""; }
|
||||
.frames li small:after { content: ""; }
|
||||
.frames li small.search_info { display: none; }
|
||||
.frames #search { width: 170px; position: static; margin: 3px; margin-left: 10px; font-size: 0.9em; color: #888; padding-left: 0; padding-right: 24px; }
|
||||
.frames #content.insearch #search { background-position: center right; }
|
||||
.frames #search input { width: 110px; }
|
||||
.frames #nav { display: block; }
|
||||
|
||||
#full_list.insearch li { display: none; }
|
||||
#full_list.insearch li.found { display: list-item; padding-left: 10px; }
|
||||
#full_list.insearch li a.toggle { display: none; }
|
||||
#full_list.insearch li small.search_info { display: block; }
|
|
@ -0,0 +1,339 @@
|
|||
body {
|
||||
padding: 0 20px;
|
||||
font-family: "Lucida Sans", "Lucida Grande", Verdana, Arial, sans-serif;
|
||||
font-size: 13px;
|
||||
}
|
||||
body.frames { padding: 0 5px; }
|
||||
h1 { font-size: 25px; margin: 1em 0 0.5em; padding-top: 4px; border-top: 1px dotted #d5d5d5; }
|
||||
h1.noborder { border-top: 0px; margin-top: 0; padding-top: 4px; }
|
||||
h1.title { margin-bottom: 10px; }
|
||||
h1.alphaindex { margin-top: 0; font-size: 22px; }
|
||||
h2 {
|
||||
padding: 0;
|
||||
padding-bottom: 3px;
|
||||
border-bottom: 1px #aaa solid;
|
||||
font-size: 1.4em;
|
||||
margin: 1.8em 0 0.5em;
|
||||
}
|
||||
h2 small { font-weight: normal; font-size: 0.7em; display: block; float: right; }
|
||||
.clear { clear: both; }
|
||||
.inline { display: inline; }
|
||||
.inline p:first-child { display: inline; }
|
||||
.docstring h1, .docstring h2, .docstring h3, .docstring h4 { padding: 0; border: 0; border-bottom: 1px dotted #bbb; }
|
||||
.docstring h1 { font-size: 1.2em; }
|
||||
.docstring h2 { font-size: 1.1em; }
|
||||
.docstring h3, .docstring h4 { font-size: 1em; border-bottom: 0; padding-top: 10px; }
|
||||
.summary_desc .object_link, .docstring .object_link { font-family: monospace; }
|
||||
.rdoc-term { padding-right: 25px; font-weight: bold; }
|
||||
.rdoc-list p { margin: 0; padding: 0; margin-bottom: 4px; }
|
||||
|
||||
/* style for <table> */
|
||||
#filecontents table, .docstring table { border-collapse: collapse; }
|
||||
#filecontents table th, #filecontents table td,
|
||||
.docstring table th, .docstring table td { border: 1px solid #ccc; padding: 8px; padding-right: 17px; }
|
||||
#filecontents table tr:nth-child(odd),
|
||||
.docstring table tr:nth-child(odd) { background: #eee; }
|
||||
#filecontents table tr:nth-child(even),
|
||||
.docstring table tr:nth-child(even) { background: #fff; }
|
||||
#filecontents table th, .docstring table th { background: #fff; }
|
||||
|
||||
/* style for <ul> */
|
||||
#filecontents li > p, .docstring li > p { margin: 0px; }
|
||||
#filecontents ul, .docstring ul { padding-left: 20px; }
|
||||
/* style for <dl> */
|
||||
#filecontents dl, .docstring dl { border: 1px solid #ccc; }
|
||||
#filecontents dt, .docstring dt { background: #ddd; font-weight: bold; padding: 3px 5px; }
|
||||
#filecontents dd, .docstring dd { padding: 5px 0px; margin-left: 18px; }
|
||||
#filecontents dd > p, .docstring dd > p { margin: 0px; }
|
||||
|
||||
.note {
|
||||
color: #222;
|
||||
-moz-border-radius: 3px; -webkit-border-radius: 3px;
|
||||
background: #e3e4e3; border: 1px solid #d5d5d5; padding: 7px 10px;
|
||||
display: block;
|
||||
}
|
||||
.note.todo { background: #ffffc5; border-color: #ececaa; }
|
||||
.note.returns_void { background: #efefef; }
|
||||
.note.deprecated { background: #ffe5e5; border-color: #e9dada; }
|
||||
.note.private { background: #ffffc5; border-color: #ececaa; }
|
||||
.note.title { padding: 1px 5px; font-size: 0.9em; font-family: "Lucida Sans", "Lucida Grande", Verdana, Arial, sans-serif; display: inline; }
|
||||
.summary_signature + .note.title { margin-left: 7px; }
|
||||
h1 .note.title { font-size: 0.5em; font-weight: normal; padding: 3px 5px; position: relative; top: -3px; text-transform: capitalize; }
|
||||
.note.title.constructor { color: #fff; background: #6a98d6; border-color: #6689d6; }
|
||||
.note.title.writeonly { color: #fff; background: #45a638; border-color: #2da31d; }
|
||||
.note.title.readonly { color: #fff; background: #6a98d6; border-color: #6689d6; }
|
||||
.note.title.private { background: #d5d5d5; border-color: #c5c5c5; }
|
||||
.note.title.not_defined_here { background: transparent; border: none; font-style: italic; }
|
||||
.discussion .note { margin-top: 6px; }
|
||||
.discussion .note:first-child { margin-top: 0; }
|
||||
|
||||
h3.inherited {
|
||||
font-style: italic;
|
||||
font-family: "Lucida Sans", "Lucida Grande", Verdana, Arial, sans-serif;
|
||||
font-weight: normal;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
margin-top: 12px;
|
||||
margin-bottom: 3px;
|
||||
font-size: 13px;
|
||||
}
|
||||
p.inherited {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
margin-left: 25px;
|
||||
}
|
||||
|
||||
#filecontents dl.box, dl.box {
|
||||
border: 0;
|
||||
width: 520px;
|
||||
font-size: 1em;
|
||||
}
|
||||
#filecontents dl.box dt, dl.box dt {
|
||||
float: left;
|
||||
display: block;
|
||||
width: 100px;
|
||||
margin: 0;
|
||||
text-align: right;
|
||||
font-weight: bold;
|
||||
background: transparent;
|
||||
border: 1px solid #aaa;
|
||||
border-width: 1px 0px 0px 1px;
|
||||
padding: 6px 0;
|
||||
padding-right: 10px;
|
||||
}
|
||||
#filecontents dl.box dd, dl.box dd {
|
||||
float: left;
|
||||
display: block;
|
||||
width: 380px;
|
||||
margin: 0;
|
||||
padding: 6px 0;
|
||||
padding-right: 20px;
|
||||
border: 1px solid #aaa;
|
||||
border-width: 1px 1px 0 0;
|
||||
}
|
||||
#filecontents dl.box .last, dl.box .last {
|
||||
border-bottom: 1px solid #aaa;
|
||||
}
|
||||
#filecontents dl.box .r1, dl.box .r1 { background: #eee; }
|
||||
|
||||
ul.toplevel { list-style: none; padding-left: 0; font-size: 1.1em; }
|
||||
.index_inline_list { padding-left: 0; font-size: 1.1em; }
|
||||
.index_inline_list li { list-style: none; display: inline; padding: 7px 12px; line-height: 35px; }
|
||||
|
||||
dl.constants { margin-left: 40px; }
|
||||
dl.constants dt { font-weight: bold; font-size: 1.1em; margin-bottom: 5px; }
|
||||
dl.constants dd { width: 75%; white-space: pre; font-family: monospace; margin-bottom: 18px; }
|
||||
|
||||
.summary_desc { margin-left: 32px; display: block; font-family: sans-serif; }
|
||||
.summary_desc tt { font-size: 0.9em; }
|
||||
dl.constants .note { padding: 2px 6px; padding-right: 12px; margin-top: 6px; }
|
||||
dl.constants .docstring { margin-left: 32px; font-size: 0.9em; font-weight: normal; }
|
||||
dl.constants .tags { padding-left: 32px; font-size: 0.9em; line-height: 0.8em; }
|
||||
dl.constants .discussion *:first-child { margin-top: 0; }
|
||||
dl.constants .discussion *:last-child { margin-bottom: 0; }
|
||||
|
||||
.method_details { border-top: 1px dotted #aaa; margin-top: 15px; padding-top: 0; }
|
||||
.method_details.first { border: 0; }
|
||||
p.signature, h3.signature {
|
||||
font-size: 1.1em; font-weight: normal; font-family: Monaco, Consolas, Courier, monospace;
|
||||
padding: 6px 10px; margin-top: 18px;
|
||||
background: #e5e8ff; border: 1px solid #d8d8e5; -moz-border-radius: 3px; -webkit-border-radius: 3px;
|
||||
}
|
||||
p.signature tt,
|
||||
h3.signature tt { font-family: Monaco, Consolas, Courier, monospace; }
|
||||
p.signature .overload,
|
||||
h3.signature .overload { display: block; }
|
||||
p.signature .extras,
|
||||
h3.signature .extras { font-weight: normal; font-family: sans-serif; color: #444; font-size: 1em; }
|
||||
p.signature .not_defined_here,
|
||||
h3.signature .not_defined_here,
|
||||
p.signature .aliases,
|
||||
h3.signature .aliases { display: block; font-weight: normal; font-size: 0.9em; font-family: sans-serif; margin-top: 0px; color: #555; }
|
||||
p.signature .aliases .names,
|
||||
h3.signature .aliases .names { font-family: Monaco, Consolas, Courier, monospace; font-weight: bold; color: #000; font-size: 1.2em; }
|
||||
|
||||
.tags .tag_title { font-size: 1em; margin-bottom: 0; font-weight: bold; }
|
||||
.tags ul { margin-top: 5px; padding-left: 30px; list-style: square; }
|
||||
.tags ul li { margin-bottom: 3px; }
|
||||
.tags ul .name { font-family: monospace; font-weight: bold; }
|
||||
.tags ul .note { padding: 3px 6px; }
|
||||
.tags { margin-bottom: 12px; }
|
||||
|
||||
.tags .examples .tag_title { margin-bottom: 10px; font-weight: bold; }
|
||||
.tags .examples .inline p { padding: 0; margin: 0; margin-left: 15px; font-weight: bold; font-size: 0.9em; }
|
||||
|
||||
.tags .overload .overload_item { list-style: none; margin-bottom: 25px; }
|
||||
.tags .overload .overload_item .signature {
|
||||
padding: 2px 8px;
|
||||
background: #e5e8ff; border: 1px solid #d8d8e5; -moz-border-radius: 3px; -webkit-border-radius: 3px;
|
||||
}
|
||||
.tags .overload .signature { margin-left: -15px; font-family: monospace; display: block; font-size: 1.1em; }
|
||||
.tags .overload .docstring { margin-top: 15px; }
|
||||
|
||||
.defines { display: none; }
|
||||
|
||||
#method_missing_details .notice.this { position: relative; top: -8px; color: #888; padding: 0; margin: 0; }
|
||||
|
||||
.showSource { font-size: 0.9em; }
|
||||
.showSource a:link, .showSource a:visited { text-decoration: none; color: #666; }
|
||||
|
||||
#content a:link, #content a:visited { text-decoration: none; color: #05a; }
|
||||
#content a:hover { background: #ffffa5; }
|
||||
div.docstring, p.docstring { margin-right: 6em; }
|
||||
|
||||
ul.summary {
|
||||
list-style: none;
|
||||
font-family: monospace;
|
||||
font-size: 1em;
|
||||
line-height: 1.5em;
|
||||
}
|
||||
ul.summary a:link, ul.summary a:visited {
|
||||
text-decoration: none; font-size: 1.1em;
|
||||
}
|
||||
ul.summary li { margin-bottom: 5px; }
|
||||
.summary .summary_signature {
|
||||
padding: 1px 10px;
|
||||
background: #eaeaff; border: 1px solid #dfdfe5;
|
||||
-moz-border-radius: 3px; -webkit-border-radius: 3px;
|
||||
}
|
||||
.summary_signature:hover { background: #eeeeff; cursor: pointer; }
|
||||
ul.summary.compact li { display: inline-block; margin: 0px 5px 0px 0px; line-height: 2.6em;}
|
||||
ul.summary.compact .summary_signature { padding: 5px 7px; padding-right: 4px; }
|
||||
#content .summary_signature:hover a:link,
|
||||
#content .summary_signature:hover a:visited {
|
||||
background: transparent;
|
||||
color: #48f;
|
||||
}
|
||||
|
||||
p.inherited a { font-family: monospace; font-size: 0.9em; }
|
||||
p.inherited { word-spacing: 5px; font-size: 1.2em; }
|
||||
|
||||
p.children { font-size: 1.2em; }
|
||||
p.children a { font-size: 0.9em; }
|
||||
p.children strong { font-size: 0.8em; }
|
||||
p.children strong.modules { padding-left: 5px; }
|
||||
|
||||
ul.fullTree { display: none; padding-left: 0; list-style: none; margin-left: 0; margin-bottom: 10px; }
|
||||
ul.fullTree ul { margin-left: 0; padding-left: 0; list-style: none; }
|
||||
ul.fullTree li { text-align: center; padding-top: 18px; padding-bottom: 12px; background: url(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAHtJREFUeNqMzrEJAkEURdGzuhgZbSoYWcAWoBVsB4JgZAGmphsZCZYzTQgWNCYrDN9RvMmHx+X916SUBFbo8CzD1idXrLErw1mQttgXtyrOcQ/Ny5p4Qh+2XqLYYazsPWNTiuMkRxa4vcV+evuNAUOLIx5+c2hyzv7hNQC67Q+/HHmlEwAAAABJRU5ErkJggg==) no-repeat top center; }
|
||||
ul.fullTree li:first-child { padding-top: 0; background: transparent; }
|
||||
ul.fullTree li:last-child { padding-bottom: 0; }
|
||||
.showAll ul.fullTree { display: block; }
|
||||
.showAll .inheritName { display: none; }
|
||||
|
||||
#search { position: absolute; right: 14px; top: 0px; }
|
||||
#search a:link, #search a:visited {
|
||||
display: block; float: left; margin-right: 4px;
|
||||
padding: 8px 10px; text-decoration: none; color: #05a;
|
||||
border: 1px solid #d8d8e5;
|
||||
-moz-border-radius-bottomleft: 3px; -moz-border-radius-bottomright: 3px;
|
||||
-webkit-border-bottom-left-radius: 3px; -webkit-border-bottom-right-radius: 3px;
|
||||
background: #eaf0ff;
|
||||
-webkit-box-shadow: -1px 1px 3px #ddd;
|
||||
}
|
||||
#search a:hover { background: #f5faff; color: #06b; }
|
||||
#search a.active {
|
||||
background: #568; padding-bottom: 20px; color: #fff; border: 1px solid #457;
|
||||
-moz-border-radius-topleft: 5px; -moz-border-radius-topright: 5px;
|
||||
-webkit-border-top-left-radius: 5px; -webkit-border-top-right-radius: 5px;
|
||||
}
|
||||
#search a.inactive { color: #999; }
|
||||
.frames #search { display: none; }
|
||||
.inheritanceTree, .toggleDefines { float: right; }
|
||||
|
||||
#menu { font-size: 1.3em; color: #bbb; top: -5px; position: relative; }
|
||||
#menu .title, #menu a { font-size: 0.7em; }
|
||||
#menu .title a { font-size: 1em; }
|
||||
#menu .title { color: #555; }
|
||||
#menu a:link, #menu a:visited { color: #333; text-decoration: none; border-bottom: 1px dotted #bbd; }
|
||||
#menu a:hover { color: #05a; }
|
||||
#menu .noframes { display: inline; }
|
||||
.frames #menu .noframes { display: inline; float: right; }
|
||||
|
||||
#footer { margin-top: 15px; border-top: 1px solid #ccc; text-align: center; padding: 7px 0; color: #999; }
|
||||
#footer a:link, #footer a:visited { color: #444; text-decoration: none; border-bottom: 1px dotted #bbd; }
|
||||
#footer a:hover { color: #05a; }
|
||||
|
||||
#listing ul.alpha { font-size: 1.1em; }
|
||||
#listing ul.alpha { margin: 0; padding: 0; padding-bottom: 10px; list-style: none; }
|
||||
#listing ul.alpha li.letter { font-size: 1.4em; padding-bottom: 10px; }
|
||||
#listing ul.alpha ul { margin: 0; padding-left: 15px; }
|
||||
#listing ul small { color: #666; font-size: 0.7em; }
|
||||
|
||||
li.r1 { background: #f0f0f0; }
|
||||
li.r2 { background: #fafafa; }
|
||||
|
||||
#search_frame {
|
||||
z-index: 9999;
|
||||
background: #fff;
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: 36px;
|
||||
right: 18px;
|
||||
width: 500px;
|
||||
height: 80%;
|
||||
overflow-y: scroll;
|
||||
border: 1px solid #999;
|
||||
border-collapse: collapse;
|
||||
-webkit-box-shadow: -7px 5px 25px #aaa;
|
||||
-moz-box-shadow: -7px 5px 25px #aaa;
|
||||
-moz-border-radius: 2px;
|
||||
-webkit-border-radius: 2px;
|
||||
}
|
||||
|
||||
#content ul.summary li.deprecated .summary_signature a:link,
|
||||
#content ul.summary li.deprecated .summary_signature a:visited { text-decoration: line-through; font-style: italic; }
|
||||
|
||||
#toc {
|
||||
padding: 20px; padding-right: 30px; border: 1px solid #ddd; float: right; background: #fff; margin-left: 20px; margin-bottom: 20px;
|
||||
max-width: 300px;
|
||||
-webkit-box-shadow: -2px 2px 6px #bbb;
|
||||
-moz-box-shadow: -2px 2px 6px #bbb;
|
||||
z-index: 5000;
|
||||
position: relative;
|
||||
overflow-x: auto;
|
||||
}
|
||||
#toc.nofloat { float: none; max-width: none; border: none; padding: 0; margin: 20px 0; -webkit-box-shadow: none; -moz-box-shadow: none; }
|
||||
#toc.nofloat.hidden { padding: 0; background: 0; margin-bottom: 5px; }
|
||||
#toc .title { margin: 0; }
|
||||
#toc ol { padding-left: 1.8em; }
|
||||
#toc li { font-size: 1.1em; line-height: 1.7em; }
|
||||
#toc > ol > li { font-size: 1.1em; font-weight: bold; }
|
||||
#toc ol > ol { font-size: 0.9em; }
|
||||
#toc ol ol > ol { padding-left: 2.3em; }
|
||||
#toc ol + li { margin-top: 0.3em; }
|
||||
#toc.hidden { padding: 10px; background: #f6f6f6; -webkit-box-shadow: none; -moz-box-shadow: none; }
|
||||
#filecontents h1 + #toc.nofloat { margin-top: 0; }
|
||||
|
||||
/* syntax highlighting */
|
||||
.source_code { display: none; padding: 3px 8px; border-left: 8px solid #ddd; margin-top: 5px; }
|
||||
#filecontents pre.code, .docstring pre.code, .source_code pre { font-family: monospace; }
|
||||
#filecontents pre.code, .docstring pre.code { display: block; }
|
||||
.source_code .lines { padding-right: 12px; color: #555; text-align: right; }
|
||||
#filecontents pre.code, .docstring pre.code,
|
||||
.tags pre.example { padding: 5px 12px; margin-top: 4px; border: 1px solid #eef; background: #f5f5ff; }
|
||||
pre.code { color: #000; }
|
||||
pre.code .info.file { color: #555; }
|
||||
pre.code .val { color: #036A07; }
|
||||
pre.code .tstring_content,
|
||||
pre.code .heredoc_beg, pre.code .heredoc_end,
|
||||
pre.code .qwords_beg, pre.code .qwords_end,
|
||||
pre.code .tstring, pre.code .dstring { color: #036A07; }
|
||||
pre.code .fid, pre.code .rubyid_new, pre.code .rubyid_to_s,
|
||||
pre.code .rubyid_to_sym, pre.code .rubyid_to_f,
|
||||
pre.code .dot + pre.code .id,
|
||||
pre.code .rubyid_to_i pre.code .rubyid_each { color: #0085FF; }
|
||||
pre.code .comment { color: #0066FF; }
|
||||
pre.code .const, pre.code .constant { color: #585CF6; }
|
||||
pre.code .label,
|
||||
pre.code .symbol { color: #C5060B; }
|
||||
pre.code .kw,
|
||||
pre.code .rubyid_require,
|
||||
pre.code .rubyid_extend,
|
||||
pre.code .rubyid_include { color: #0000FF; }
|
||||
pre.code .ivar { color: #318495; }
|
||||
pre.code .gvar,
|
||||
pre.code .rubyid_backref,
|
||||
pre.code .rubyid_nth_ref { color: #6D79DE; }
|
||||
pre.code .regexp, .dregexp { color: #036A07; }
|
||||
pre.code a { border-bottom: 1px dotted #bbf; }
|
|
@ -0,0 +1,213 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<title>
|
||||
File: README
|
||||
|
||||
— Documentation by YARD 0.8.7.6
|
||||
|
||||
</title>
|
||||
|
||||
<link rel="stylesheet" href="css/style.css" type="text/css" charset="utf-8" />
|
||||
|
||||
<link rel="stylesheet" href="css/common.css" type="text/css" charset="utf-8" />
|
||||
|
||||
<script type="text/javascript" charset="utf-8">
|
||||
hasFrames = window.top.frames.main ? true : false;
|
||||
relpath = '';
|
||||
framesUrl = "frames.html#!file.README.html";
|
||||
</script>
|
||||
|
||||
|
||||
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
||||
|
||||
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<div id="menu">
|
||||
|
||||
<a href="_index.html">Index</a> »
|
||||
<span class="title">File: README</span>
|
||||
|
||||
|
||||
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
|
||||
</div>
|
||||
|
||||
<div id="search">
|
||||
|
||||
<a class="full_list_link" id="class_list_link"
|
||||
href="class_list.html">
|
||||
Class List
|
||||
</a>
|
||||
|
||||
<a class="full_list_link" id="method_list_link"
|
||||
href="method_list.html">
|
||||
Method List
|
||||
</a>
|
||||
|
||||
<a class="full_list_link" id="file_list_link"
|
||||
href="file_list.html">
|
||||
File List
|
||||
</a>
|
||||
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
|
||||
<iframe id="search_frame"></iframe>
|
||||
|
||||
<div id="content"><div id='filecontents'>
|
||||
<p><a href="http://classyfire.wishartlab.com">ClassyFire</a> is a resource
|
||||
that allows you to automatically classify any chemical compound based on
|
||||
its structure. This is the repository for the ClassyFire API allows you to
|
||||
send requests to and pull information from the ClassyFire web server.</p>
|
||||
|
||||
<h1 id="label-What+is+this+repository+for-3F"><strong>What is this repository for?</strong></h1>
|
||||
<ul><li>
|
||||
<p>Quick summary</p>
|
||||
</li><li>
|
||||
<p>Version</p>
|
||||
</li><li>
|
||||
<p><a href="https://bitbucket.org/tutorials/markdowndemo">Learn Markdown</a></p>
|
||||
</li></ul>
|
||||
|
||||
<h1 id="label-How+do+I+get+set+up-3F"><strong>How do I get set up?</strong></h1>
|
||||
<ul><li>
|
||||
<p>Summary of set up</p>
|
||||
</li><li>
|
||||
<p>Configuration</p>
|
||||
</li><li>
|
||||
<p>Dependencies</p>
|
||||
</li><li>
|
||||
<p>Database configuration</p>
|
||||
</li><li>
|
||||
<p>How to run tests</p>
|
||||
</li><li>
|
||||
<p>Deployment instructions</p>
|
||||
</li></ul>
|
||||
|
||||
<h1 id="label-Contribution+guidelines"><strong>Contribution guidelines</strong></h1>
|
||||
<ul><li>
|
||||
<p>Writing tests</p>
|
||||
</li><li>
|
||||
<p>Code review</p>
|
||||
</li><li>
|
||||
<p>Other guidelines</p>
|
||||
</li></ul>
|
||||
|
||||
<h1 id="label-Endpoints"><strong>Endpoints</strong></h1>
|
||||
|
||||
<blockquote>
|
||||
<h2 id="label-1.+Entity">1. Entity</h2>
|
||||
|
||||
<blockquote>
|
||||
<p>Chemical compounds are represented by the Entity model, through which one
|
||||
can access the compound's structure-based classification.</p>
|
||||
|
||||
<h3 id="label-GET">GET</h3>
|
||||
|
||||
<p><strong>/entities/entityInchikey</strong></p>
|
||||
|
||||
<p>A chemical compound's classification can be retrieved in the JSON or
|
||||
XML format. The compound's information is accessed via the InChIkey as
|
||||
show in the following examples. In this example, the entity has the
|
||||
InChIKey=LABTWGUMFABVFG-ONEGZZNKSA-N.</p>
|
||||
|
||||
<blockquote>
|
||||
<p>ClassyFireAPI.get_entity_classification(“BDAGIHXWWSANSR-UHFFFAOYSA-N”,“json”)</p>
|
||||
</blockquote>
|
||||
|
||||
<p>Where:</p>
|
||||
|
||||
<blockquote>
|
||||
<p>The entity's InChIKey is “BDAGIHXWWSANSR-UHFFFAOYSA-N”,</p>
|
||||
|
||||
<p>The output format is “json” (JSON).</p>
|
||||
</blockquote>
|
||||
</blockquote>
|
||||
|
||||
<h2 id="label-2.+Query">2. Query</h2>
|
||||
|
||||
<blockquote>
|
||||
<p>The Query model represents the chemical structure to be classified. Its
|
||||
attributes are the query label and the query input.</p>
|
||||
|
||||
<blockquote>
|
||||
<p>The query label is an identifier</p>
|
||||
|
||||
<p>The query input contains the compound's identifier (optional) and its
|
||||
structural representation, separated by a comma. The chemical structure is
|
||||
represented either in the <a
|
||||
href="http://www.daylight.com/dayhtml/doc/theory/theory.smiles.html">Daylight
|
||||
SMILES</a> or the <a
|
||||
href="http://www.iupac.org/home/publications/e-resources/inchi.html">InChI</a>
|
||||
format.</p>
|
||||
</blockquote>
|
||||
|
||||
<h3 id="label-POST">POST</h3>
|
||||
|
||||
<p>A query can be submitted using the POST method as demonstrated in the
|
||||
following example.</p>
|
||||
|
||||
<blockquote>
|
||||
<p>ClassyFireAPI.submit_query(“curl_test”,“MOL1tCCCOCCnMOL2tCOCC=CCCC”,“STRUCTURE”)</p>
|
||||
</blockquote>
|
||||
|
||||
<p>where the parameters are:</p>
|
||||
|
||||
<blockquote>
|
||||
<p>The query label: curl_test,</p>
|
||||
|
||||
<p>The entity identifiers: MOL1,MOL2</p>
|
||||
|
||||
<p>The entity's structure represented in the SMILES format: CCCOCC and
|
||||
COCC=CCCC.</p>
|
||||
|
||||
<p>The query is of type 'STRUCTURE'</p>
|
||||
</blockquote>
|
||||
|
||||
<h3 id="label-GET">GET</h3>
|
||||
|
||||
<p><strong>/queries/queryId</strong></p>
|
||||
|
||||
<p>The classification results can be retrieved via a GET method in the JSON or
|
||||
XML format.</p>
|
||||
|
||||
<blockquote>
|
||||
<p>ClassyFireAPI.get_query(443431,“json”)</p>
|
||||
</blockquote>
|
||||
|
||||
<p>where:</p>
|
||||
|
||||
<blockquote>
|
||||
<p>The query id is 443431, The output format is “json” (JSON)</p>
|
||||
</blockquote>
|
||||
</blockquote>
|
||||
</blockquote>
|
||||
|
||||
<h1 id="label-Directory+Structure"><strong>Directory Structure</strong></h1>
|
||||
<ul><li>
|
||||
<p>lib</p>
|
||||
</li></ul>
|
||||
|
||||
<h1 id="label-Who+do+I+talk+to-3F"><strong>Who do I talk to?</strong></h1>
|
||||
<ul><li>
|
||||
<p>Repo owner or admin</p>
|
||||
</li><li>
|
||||
<p>Other community or team contact</p>
|
||||
</li></ul>
|
||||
</div></div>
|
||||
|
||||
<div id="footer">
|
||||
Generated on Wed Mar 9 19:25:39 2016 by
|
||||
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
||||
0.8.7.6 (ruby-2.3.0).
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,60 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<link rel="stylesheet" href="css/full_list.css" type="text/css" media="screen" charset="utf-8" />
|
||||
|
||||
<link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
||||
|
||||
<script type="text/javascript" charset="utf-8" src="js/full_list.js"></script>
|
||||
|
||||
|
||||
<title>File List</title>
|
||||
<base id="base_target" target="_parent" />
|
||||
</head>
|
||||
<body>
|
||||
<script type="text/javascript" charset="utf-8">
|
||||
var hasFrames = false;
|
||||
try {
|
||||
hasFrames = window.top.frames.main ? true : false;
|
||||
} catch (e) { }
|
||||
if (hasFrames) {
|
||||
document.getElementById('base_target').target = 'main';
|
||||
document.body.className = 'frames';
|
||||
}
|
||||
</script>
|
||||
<div id="content">
|
||||
<h1 id="full_list_header">File List</h1>
|
||||
<div id="nav">
|
||||
|
||||
<span><a target="_self" href="class_list.html">
|
||||
Classes
|
||||
</a></span>
|
||||
|
||||
<span><a target="_self" href="method_list.html">
|
||||
Methods
|
||||
</a></span>
|
||||
|
||||
<span><a target="_self" href="file_list.html">
|
||||
Files
|
||||
</a></span>
|
||||
|
||||
</div>
|
||||
<div id="search">Search: <input type="text" /></div>
|
||||
|
||||
<ul id="full_list" class="file">
|
||||
|
||||
|
||||
<li class="r1"><span class="object_link"><a href="index.html" title="README">README</a></a></li>
|
||||
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,26 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
||||
<title>Documentation by YARD 0.8.7.6</title>
|
||||
</head>
|
||||
<script type="text/javascript" charset="utf-8">
|
||||
window.onload = function() {
|
||||
var match = unescape(window.location.hash).match(/^#!(.+)/);
|
||||
var name = match ? match[1] : 'index.html';
|
||||
name = name.replace(/^(\w+):\/\//, '').replace(/^\/\//, '');
|
||||
document.writeln('<frameset cols="20%,*">' +
|
||||
'<frame name="list" src="class_list.html" />' +
|
||||
'<frame name="main" src="' + escape(name) + '" />' +
|
||||
'</frameset>');
|
||||
}
|
||||
</script>
|
||||
<noscript>
|
||||
<frameset cols="20%,*">
|
||||
<frame name="list" src="class_list.html" />
|
||||
<frame name="main" src="index.html" />
|
||||
</frameset>
|
||||
</noscript>
|
||||
</html>
|
|
@ -0,0 +1,213 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<title>
|
||||
File: README
|
||||
|
||||
— Documentation by YARD 0.8.7.6
|
||||
|
||||
</title>
|
||||
|
||||
<link rel="stylesheet" href="css/style.css" type="text/css" charset="utf-8" />
|
||||
|
||||
<link rel="stylesheet" href="css/common.css" type="text/css" charset="utf-8" />
|
||||
|
||||
<script type="text/javascript" charset="utf-8">
|
||||
hasFrames = window.top.frames.main ? true : false;
|
||||
relpath = '';
|
||||
framesUrl = "frames.html#!file.README.html";
|
||||
</script>
|
||||
|
||||
|
||||
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
||||
|
||||
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<div id="menu">
|
||||
|
||||
<a href="_index.html">Index</a> »
|
||||
<span class="title">File: README</span>
|
||||
|
||||
|
||||
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
|
||||
</div>
|
||||
|
||||
<div id="search">
|
||||
|
||||
<a class="full_list_link" id="class_list_link"
|
||||
href="class_list.html">
|
||||
Class List
|
||||
</a>
|
||||
|
||||
<a class="full_list_link" id="method_list_link"
|
||||
href="method_list.html">
|
||||
Method List
|
||||
</a>
|
||||
|
||||
<a class="full_list_link" id="file_list_link"
|
||||
href="file_list.html">
|
||||
File List
|
||||
</a>
|
||||
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
|
||||
<iframe id="search_frame"></iframe>
|
||||
|
||||
<div id="content"><div id='filecontents'>
|
||||
<p><a href="http://classyfire.wishartlab.com">ClassyFire</a> is a resource
|
||||
that allows you to automatically classify any chemical compound based on
|
||||
its structure. This is the repository for the ClassyFire API allows you to
|
||||
send requests to and pull information from the ClassyFire web server.</p>
|
||||
|
||||
<h1 id="label-What+is+this+repository+for-3F"><strong>What is this repository for?</strong></h1>
|
||||
<ul><li>
|
||||
<p>Quick summary</p>
|
||||
</li><li>
|
||||
<p>Version</p>
|
||||
</li><li>
|
||||
<p><a href="https://bitbucket.org/tutorials/markdowndemo">Learn Markdown</a></p>
|
||||
</li></ul>
|
||||
|
||||
<h1 id="label-How+do+I+get+set+up-3F"><strong>How do I get set up?</strong></h1>
|
||||
<ul><li>
|
||||
<p>Summary of set up</p>
|
||||
</li><li>
|
||||
<p>Configuration</p>
|
||||
</li><li>
|
||||
<p>Dependencies</p>
|
||||
</li><li>
|
||||
<p>Database configuration</p>
|
||||
</li><li>
|
||||
<p>How to run tests</p>
|
||||
</li><li>
|
||||
<p>Deployment instructions</p>
|
||||
</li></ul>
|
||||
|
||||
<h1 id="label-Contribution+guidelines"><strong>Contribution guidelines</strong></h1>
|
||||
<ul><li>
|
||||
<p>Writing tests</p>
|
||||
</li><li>
|
||||
<p>Code review</p>
|
||||
</li><li>
|
||||
<p>Other guidelines</p>
|
||||
</li></ul>
|
||||
|
||||
<h1 id="label-Endpoints"><strong>Endpoints</strong></h1>
|
||||
|
||||
<blockquote>
|
||||
<h2 id="label-1.+Entity">1. Entity</h2>
|
||||
|
||||
<blockquote>
|
||||
<p>Chemical compounds are represented by the Entity model, through which one
|
||||
can access the compound's structure-based classification.</p>
|
||||
|
||||
<h3 id="label-GET">GET</h3>
|
||||
|
||||
<p><strong>/entities/entityInchikey</strong></p>
|
||||
|
||||
<p>A chemical compound's classification can be retrieved in the JSON or
|
||||
XML format. The compound's information is accessed via the InChIkey as
|
||||
show in the following examples. In this example, the entity has the
|
||||
InChIKey=LABTWGUMFABVFG-ONEGZZNKSA-N.</p>
|
||||
|
||||
<blockquote>
|
||||
<p>ClassyFireAPI.get_entity_classification(“BDAGIHXWWSANSR-UHFFFAOYSA-N”,“json”)</p>
|
||||
</blockquote>
|
||||
|
||||
<p>Where:</p>
|
||||
|
||||
<blockquote>
|
||||
<p>The entity's InChIKey is “BDAGIHXWWSANSR-UHFFFAOYSA-N”,</p>
|
||||
|
||||
<p>The output format is “json” (JSON).</p>
|
||||
</blockquote>
|
||||
</blockquote>
|
||||
|
||||
<h2 id="label-2.+Query">2. Query</h2>
|
||||
|
||||
<blockquote>
|
||||
<p>The Query model represents the chemical structure to be classified. Its
|
||||
attributes are the query label and the query input.</p>
|
||||
|
||||
<blockquote>
|
||||
<p>The query label is an identifier</p>
|
||||
|
||||
<p>The query input contains the compound's identifier (optional) and its
|
||||
structural representation, separated by a comma. The chemical structure is
|
||||
represented either in the <a
|
||||
href="http://www.daylight.com/dayhtml/doc/theory/theory.smiles.html">Daylight
|
||||
SMILES</a> or the <a
|
||||
href="http://www.iupac.org/home/publications/e-resources/inchi.html">InChI</a>
|
||||
format.</p>
|
||||
</blockquote>
|
||||
|
||||
<h3 id="label-POST">POST</h3>
|
||||
|
||||
<p>A query can be submitted using the POST method as demonstrated in the
|
||||
following example.</p>
|
||||
|
||||
<blockquote>
|
||||
<p>ClassyFireAPI.submit_query(“curl_test”,“MOL1tCCCOCCnMOL2tCOCC=CCCC”,“STRUCTURE”)</p>
|
||||
</blockquote>
|
||||
|
||||
<p>where the parameters are:</p>
|
||||
|
||||
<blockquote>
|
||||
<p>The query label: curl_test,</p>
|
||||
|
||||
<p>The entity identifiers: MOL1,MOL2</p>
|
||||
|
||||
<p>The entity's structure represented in the SMILES format: CCCOCC and
|
||||
COCC=CCCC.</p>
|
||||
|
||||
<p>The query is of type 'STRUCTURE'</p>
|
||||
</blockquote>
|
||||
|
||||
<h3 id="label-GET">GET</h3>
|
||||
|
||||
<p><strong>/queries/queryId</strong></p>
|
||||
|
||||
<p>The classification results can be retrieved via a GET method in the JSON or
|
||||
XML format.</p>
|
||||
|
||||
<blockquote>
|
||||
<p>ClassyFireAPI.get_query(443431,“json”)</p>
|
||||
</blockquote>
|
||||
|
||||
<p>where:</p>
|
||||
|
||||
<blockquote>
|
||||
<p>The query id is 443431, The output format is “json” (JSON)</p>
|
||||
</blockquote>
|
||||
</blockquote>
|
||||
</blockquote>
|
||||
|
||||
<h1 id="label-Directory+Structure"><strong>Directory Structure</strong></h1>
|
||||
<ul><li>
|
||||
<p>lib</p>
|
||||
</li></ul>
|
||||
|
||||
<h1 id="label-Who+do+I+talk+to-3F"><strong>Who do I talk to?</strong></h1>
|
||||
<ul><li>
|
||||
<p>Repo owner or admin</p>
|
||||
</li><li>
|
||||
<p>Other community or team contact</p>
|
||||
</li></ul>
|
||||
</div></div>
|
||||
|
||||
<div id="footer">
|
||||
Generated on Wed Mar 9 19:25:38 2016 by
|
||||
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
||||
0.8.7.6 (ruby-2.3.0).
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,219 @@
|
|||
function createSourceLinks() {
|
||||
$('.method_details_list .source_code').
|
||||
before("<span class='showSource'>[<a href='#' class='toggleSource'>View source</a>]</span>");
|
||||
$('.toggleSource').toggle(function() {
|
||||
$(this).parent().nextAll('.source_code').slideDown(100);
|
||||
$(this).text("Hide source");
|
||||
},
|
||||
function() {
|
||||
$(this).parent().nextAll('.source_code').slideUp(100);
|
||||
$(this).text("View source");
|
||||
});
|
||||
}
|
||||
|
||||
function createDefineLinks() {
|
||||
var tHeight = 0;
|
||||
$('.defines').after(" <a href='#' class='toggleDefines'>more...</a>");
|
||||
$('.toggleDefines').toggle(function() {
|
||||
tHeight = $(this).parent().prev().height();
|
||||
$(this).prev().show();
|
||||
$(this).parent().prev().height($(this).parent().height());
|
||||
$(this).text("(less)");
|
||||
},
|
||||
function() {
|
||||
$(this).prev().hide();
|
||||
$(this).parent().prev().height(tHeight);
|
||||
$(this).text("more...");
|
||||
});
|
||||
}
|
||||
|
||||
function createFullTreeLinks() {
|
||||
var tHeight = 0;
|
||||
$('.inheritanceTree').toggle(function() {
|
||||
tHeight = $(this).parent().prev().height();
|
||||
$(this).parent().toggleClass('showAll');
|
||||
$(this).text("(hide)");
|
||||
$(this).parent().prev().height($(this).parent().height());
|
||||
},
|
||||
function() {
|
||||
$(this).parent().toggleClass('showAll');
|
||||
$(this).parent().prev().height(tHeight);
|
||||
$(this).text("show all");
|
||||
});
|
||||
}
|
||||
|
||||
function fixBoxInfoHeights() {
|
||||
$('dl.box dd.r1, dl.box dd.r2').each(function() {
|
||||
$(this).prev().height($(this).height());
|
||||
});
|
||||
}
|
||||
|
||||
function searchFrameLinks() {
|
||||
$('.full_list_link').click(function() {
|
||||
toggleSearchFrame(this, $(this).attr('href'));
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
function toggleSearchFrame(id, link) {
|
||||
var frame = $('#search_frame');
|
||||
$('#search a').removeClass('active').addClass('inactive');
|
||||
if (frame.attr('src') == link && frame.css('display') != "none") {
|
||||
frame.slideUp(100);
|
||||
$('#search a').removeClass('active inactive');
|
||||
}
|
||||
else {
|
||||
$(id).addClass('active').removeClass('inactive');
|
||||
frame.attr('src', link).slideDown(100);
|
||||
}
|
||||
}
|
||||
|
||||
function linkSummaries() {
|
||||
$('.summary_signature').click(function() {
|
||||
document.location = $(this).find('a').attr('href');
|
||||
});
|
||||
}
|
||||
|
||||
function framesInit() {
|
||||
if (hasFrames) {
|
||||
document.body.className = 'frames';
|
||||
$('#menu .noframes a').attr('href', document.location);
|
||||
try {
|
||||
window.top.document.title = $('html head title').text();
|
||||
} catch(error) {
|
||||
// some browsers will not allow this when serving from file://
|
||||
// but we don't want to stop the world.
|
||||
}
|
||||
}
|
||||
else {
|
||||
$('#menu .noframes a').text('frames').attr('href', framesUrl);
|
||||
}
|
||||
}
|
||||
|
||||
function keyboardShortcuts() {
|
||||
if (window.top.frames.main) return;
|
||||
$(document).keypress(function(evt) {
|
||||
if (evt.altKey || evt.ctrlKey || evt.metaKey || evt.shiftKey) return;
|
||||
if (typeof evt.target !== "undefined" &&
|
||||
(evt.target.nodeName == "INPUT" ||
|
||||
evt.target.nodeName == "TEXTAREA")) return;
|
||||
switch (evt.charCode) {
|
||||
case 67: case 99: $('#class_list_link').click(); break; // 'c'
|
||||
case 77: case 109: $('#method_list_link').click(); break; // 'm'
|
||||
case 70: case 102: $('#file_list_link').click(); break; // 'f'
|
||||
default: break;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function summaryToggle() {
|
||||
$('.summary_toggle').click(function() {
|
||||
if (localStorage) {
|
||||
localStorage.summaryCollapsed = $(this).text();
|
||||
}
|
||||
$('.summary_toggle').each(function() {
|
||||
$(this).text($(this).text() == "collapse" ? "expand" : "collapse");
|
||||
var next = $(this).parent().parent().nextAll('ul.summary').first();
|
||||
if (next.hasClass('compact')) {
|
||||
next.toggle();
|
||||
next.nextAll('ul.summary').first().toggle();
|
||||
}
|
||||
else if (next.hasClass('summary')) {
|
||||
var list = $('<ul class="summary compact" />');
|
||||
list.html(next.html());
|
||||
list.find('.summary_desc, .note').remove();
|
||||
list.find('a').each(function() {
|
||||
$(this).html($(this).find('strong').html());
|
||||
$(this).parent().html($(this)[0].outerHTML);
|
||||
});
|
||||
next.before(list);
|
||||
next.toggle();
|
||||
}
|
||||
});
|
||||
return false;
|
||||
});
|
||||
if (localStorage) {
|
||||
if (localStorage.summaryCollapsed == "collapse") {
|
||||
$('.summary_toggle').first().click();
|
||||
}
|
||||
else localStorage.summaryCollapsed = "expand";
|
||||
}
|
||||
}
|
||||
|
||||
function fixOutsideWorldLinks() {
|
||||
$('a').each(function() {
|
||||
if (window.location.host != this.host) this.target = '_parent';
|
||||
});
|
||||
}
|
||||
|
||||
function generateTOC() {
|
||||
if ($('#filecontents').length === 0) return;
|
||||
var _toc = $('<ol class="top"></ol>');
|
||||
var show = false;
|
||||
var toc = _toc;
|
||||
var counter = 0;
|
||||
var tags = ['h2', 'h3', 'h4', 'h5', 'h6'];
|
||||
var i;
|
||||
if ($('#filecontents h1').length > 1) tags.unshift('h1');
|
||||
for (i = 0; i < tags.length; i++) { tags[i] = '#filecontents ' + tags[i]; }
|
||||
var lastTag = parseInt(tags[0][1], 10);
|
||||
$(tags.join(', ')).each(function() {
|
||||
if ($(this).parents('.method_details .docstring').length != 0) return;
|
||||
if (this.id == "filecontents") return;
|
||||
show = true;
|
||||
var thisTag = parseInt(this.tagName[1], 10);
|
||||
if (this.id.length === 0) {
|
||||
var proposedId = $(this).attr('toc-id');
|
||||
if (typeof(proposedId) != "undefined") this.id = proposedId;
|
||||
else {
|
||||
var proposedId = $(this).text().replace(/[^a-z0-9-]/ig, '_');
|
||||
if ($('#' + proposedId).length > 0) { proposedId += counter; counter++; }
|
||||
this.id = proposedId;
|
||||
}
|
||||
}
|
||||
if (thisTag > lastTag) {
|
||||
for (i = 0; i < thisTag - lastTag; i++) {
|
||||
var tmp = $('<ol/>'); toc.append(tmp); toc = tmp;
|
||||
}
|
||||
}
|
||||
if (thisTag < lastTag) {
|
||||
for (i = 0; i < lastTag - thisTag; i++) toc = toc.parent();
|
||||
}
|
||||
var title = $(this).attr('toc-title');
|
||||
if (typeof(title) == "undefined") title = $(this).text();
|
||||
toc.append('<li><a href="#' + this.id + '">' + title + '</a></li>');
|
||||
lastTag = thisTag;
|
||||
});
|
||||
if (!show) return;
|
||||
html = '<div id="toc"><p class="title"><a class="hide_toc" href="#"><strong>Table of Contents</strong></a> <small>(<a href="#" class="float_toc">left</a>)</small></p></div>';
|
||||
$('#content').prepend(html);
|
||||
$('#toc').append(_toc);
|
||||
$('#toc .hide_toc').toggle(function() {
|
||||
$('#toc .top').slideUp('fast');
|
||||
$('#toc').toggleClass('hidden');
|
||||
$('#toc .title small').toggle();
|
||||
}, function() {
|
||||
$('#toc .top').slideDown('fast');
|
||||
$('#toc').toggleClass('hidden');
|
||||
$('#toc .title small').toggle();
|
||||
});
|
||||
$('#toc .float_toc').toggle(function() {
|
||||
$(this).text('float');
|
||||
$('#toc').toggleClass('nofloat');
|
||||
}, function() {
|
||||
$(this).text('left');
|
||||
$('#toc').toggleClass('nofloat');
|
||||
});
|
||||
}
|
||||
|
||||
$(framesInit);
|
||||
$(createSourceLinks);
|
||||
$(createDefineLinks);
|
||||
$(createFullTreeLinks);
|
||||
$(fixBoxInfoHeights);
|
||||
$(searchFrameLinks);
|
||||
$(linkSummaries);
|
||||
$(keyboardShortcuts);
|
||||
$(summaryToggle);
|
||||
$(fixOutsideWorldLinks);
|
||||
$(generateTOC);
|
|
@ -0,0 +1,181 @@
|
|||
var inSearch = null;
|
||||
var searchIndex = 0;
|
||||
var searchCache = [];
|
||||
var searchString = '';
|
||||
var regexSearchString = '';
|
||||
var caseSensitiveMatch = false;
|
||||
var ignoreKeyCodeMin = 8;
|
||||
var ignoreKeyCodeMax = 46;
|
||||
var commandKey = 91;
|
||||
|
||||
RegExp.escape = function(text) {
|
||||
return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
|
||||
}
|
||||
|
||||
function fullListSearch() {
|
||||
// generate cache
|
||||
searchCache = [];
|
||||
$('#full_list li').each(function() {
|
||||
var link = $(this).find('.object_link a');
|
||||
if (link.length === 0) return;
|
||||
var fullName = link.attr('title').split(' ')[0];
|
||||
searchCache.push({name:link.text(), fullName:fullName, node:$(this), link:link});
|
||||
});
|
||||
|
||||
$('#search input').keyup(function(event) {
|
||||
if ((event.keyCode > ignoreKeyCodeMin && event.keyCode < ignoreKeyCodeMax)
|
||||
|| event.keyCode == commandKey)
|
||||
return;
|
||||
searchString = this.value;
|
||||
caseSensitiveMatch = searchString.match(/[A-Z]/) != null;
|
||||
regexSearchString = RegExp.escape(searchString);
|
||||
if (caseSensitiveMatch) {
|
||||
regexSearchString += "|" +
|
||||
$.map(searchString.split(''), function(e) { return RegExp.escape(e); }).
|
||||
join('.+?');
|
||||
}
|
||||
if (searchString === "") {
|
||||
clearTimeout(inSearch);
|
||||
inSearch = null;
|
||||
$('ul .search_uncollapsed').removeClass('search_uncollapsed');
|
||||
$('#full_list, #content').removeClass('insearch');
|
||||
$('#full_list li').removeClass('found').each(function() {
|
||||
|
||||
var link = $(this).find('.object_link a');
|
||||
if (link.length > 0) link.text(link.text());
|
||||
});
|
||||
if (clicked) {
|
||||
clicked.parents('ul').each(function() {
|
||||
$(this).removeClass('collapsed').prev().removeClass('collapsed');
|
||||
});
|
||||
}
|
||||
highlight();
|
||||
}
|
||||
else {
|
||||
if (inSearch) clearTimeout(inSearch);
|
||||
searchIndex = 0;
|
||||
lastRowClass = '';
|
||||
$('#full_list, #content').addClass('insearch');
|
||||
$('#noresults').text('');
|
||||
searchItem();
|
||||
}
|
||||
});
|
||||
|
||||
$('#search input').focus();
|
||||
$('#full_list').after("<div id='noresults'></div>");
|
||||
}
|
||||
|
||||
var lastRowClass = '';
|
||||
function searchItem() {
|
||||
for (var i = 0; i < searchCache.length / 50; i++) {
|
||||
var item = searchCache[searchIndex];
|
||||
var searchName = (searchString.indexOf('::') != -1 ? item.fullName : item.name);
|
||||
var matchString = regexSearchString;
|
||||
var matchRegexp = new RegExp(matchString, caseSensitiveMatch ? "" : "i");
|
||||
if (searchName.match(matchRegexp) == null) {
|
||||
item.node.removeClass('found');
|
||||
}
|
||||
else {
|
||||
item.node.css('padding-left', '10px').addClass('found');
|
||||
item.node.parents().addClass('search_uncollapsed');
|
||||
item.node.removeClass(lastRowClass).addClass(lastRowClass == 'r1' ? 'r2' : 'r1');
|
||||
lastRowClass = item.node.hasClass('r1') ? 'r1' : 'r2';
|
||||
item.link.html(item.name.replace(matchRegexp, "<strong>$&</strong>"));
|
||||
}
|
||||
|
||||
if (searchCache.length === searchIndex + 1) {
|
||||
searchDone();
|
||||
return;
|
||||
}
|
||||
else {
|
||||
searchIndex++;
|
||||
}
|
||||
}
|
||||
inSearch = setTimeout('searchItem()', 0);
|
||||
}
|
||||
|
||||
function searchDone() {
|
||||
highlight(true);
|
||||
if ($('#full_list li:visible').size() === 0) {
|
||||
$('#noresults').text('No results were found.').hide().fadeIn();
|
||||
}
|
||||
else {
|
||||
$('#noresults').text('');
|
||||
}
|
||||
$('#content').removeClass('insearch');
|
||||
clearTimeout(inSearch);
|
||||
inSearch = null;
|
||||
}
|
||||
|
||||
clicked = null;
|
||||
function linkList() {
|
||||
$('#full_list li, #full_list li a:last').click(function(evt) {
|
||||
if ($(this).hasClass('toggle')) return true;
|
||||
if (this.tagName.toLowerCase() == "li") {
|
||||
if ($(this).find('.object_link a').length === 0) {
|
||||
$(this).children('a.toggle').click();
|
||||
return false;
|
||||
}
|
||||
var toggle = $(this).children('a.toggle');
|
||||
if (toggle.size() > 0 && evt.pageX < toggle.offset().left) {
|
||||
toggle.click();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (clicked) clicked.removeClass('clicked');
|
||||
var win;
|
||||
try {
|
||||
win = window.top.frames.main ? window.top.frames.main : window.parent;
|
||||
} catch (e) { win = window.parent; }
|
||||
if (this.tagName.toLowerCase() == "a") {
|
||||
clicked = $(this).parents('li').addClass('clicked');
|
||||
win.location = this.href;
|
||||
}
|
||||
else {
|
||||
clicked = $(this).addClass('clicked');
|
||||
win.location = $(this).find('a:last').attr('href');
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
function collapse() {
|
||||
if (!$('#full_list').hasClass('class')) return;
|
||||
$('#full_list.class a.toggle').click(function() {
|
||||
$(this).parent().toggleClass('collapsed').next().toggleClass('collapsed');
|
||||
highlight();
|
||||
return false;
|
||||
});
|
||||
$('#full_list.class ul').each(function() {
|
||||
$(this).addClass('collapsed').prev().addClass('collapsed');
|
||||
});
|
||||
$('#full_list.class').children().removeClass('collapsed');
|
||||
highlight();
|
||||
}
|
||||
|
||||
function highlight(no_padding) {
|
||||
var n = 1;
|
||||
$('#full_list li:visible').each(function() {
|
||||
var next = n == 1 ? 2 : 1;
|
||||
$(this).removeClass("r" + next).addClass("r" + n);
|
||||
if (!no_padding && $('#full_list').hasClass('class')) {
|
||||
$(this).css('padding-left', (10 + $(this).parents('ul').size() * 15) + 'px');
|
||||
}
|
||||
n = next;
|
||||
});
|
||||
}
|
||||
|
||||
function escapeShortcut() {
|
||||
$(document).keydown(function(evt) {
|
||||
if (evt.which == 27) {
|
||||
$('#search_frame', window.top.document).slideUp(100);
|
||||
$('#search a', window.top.document).removeClass('active inactive');
|
||||
$(window.top).focus();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$(escapeShortcut);
|
||||
$(fullListSearch);
|
||||
$(linkList);
|
||||
$(collapse);
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,123 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<link rel="stylesheet" href="css/full_list.css" type="text/css" media="screen" charset="utf-8" />
|
||||
|
||||
<link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
||||
|
||||
<script type="text/javascript" charset="utf-8" src="js/full_list.js"></script>
|
||||
|
||||
|
||||
<title>Method List</title>
|
||||
<base id="base_target" target="_parent" />
|
||||
</head>
|
||||
<body>
|
||||
<script type="text/javascript" charset="utf-8">
|
||||
var hasFrames = false;
|
||||
try {
|
||||
hasFrames = window.top.frames.main ? true : false;
|
||||
} catch (e) { }
|
||||
if (hasFrames) {
|
||||
document.getElementById('base_target').target = 'main';
|
||||
document.body.className = 'frames';
|
||||
}
|
||||
</script>
|
||||
<div id="content">
|
||||
<h1 id="full_list_header">Method List</h1>
|
||||
<div id="nav">
|
||||
|
||||
<span><a target="_self" href="class_list.html">
|
||||
Classes
|
||||
</a></span>
|
||||
|
||||
<span><a target="_self" href="method_list.html">
|
||||
Methods
|
||||
</a></span>
|
||||
|
||||
<span><a target="_self" href="file_list.html">
|
||||
Files
|
||||
</a></span>
|
||||
|
||||
</div>
|
||||
<div id="search">Search: <input type="text" /></div>
|
||||
|
||||
<ul id="full_list" class="method">
|
||||
|
||||
|
||||
<li class="r1 ">
|
||||
<span class='object_link'><a href="ClassyFireAPI.html#get_entity_classification-class_method" title="ClassyFireAPI.get_entity_classification (method)">get_entity_classification</a></span>
|
||||
<small>ClassyFireAPI</small>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="r2 ">
|
||||
<span class='object_link'><a href="ClassyFireAPI.html#get_query-class_method" title="ClassyFireAPI.get_query (method)">get_query</a></span>
|
||||
<small>ClassyFireAPI</small>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="r1 ">
|
||||
<span class='object_link'><a href="ClassyFireAPI.html#query_status-class_method" title="ClassyFireAPI.query_status (method)">query_status</a></span>
|
||||
<small>ClassyFireAPI</small>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="r2 ">
|
||||
<span class='object_link'><a href="ClassyFireAPI.html#retrieve_classification-class_method" title="ClassyFireAPI.retrieve_classification (method)">retrieve_classification</a></span>
|
||||
<small>ClassyFireAPI</small>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="r1 ">
|
||||
<span class='object_link'><a href="ClassyFireAPI.html#retrieve_entities_json-class_method" title="ClassyFireAPI.retrieve_entities_json (method)">retrieve_entities_json</a></span>
|
||||
<small>ClassyFireAPI</small>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="r2 ">
|
||||
<span class='object_link'><a href="ClassyFireAPI.html#retrieve_entities_sdf-class_method" title="ClassyFireAPI.retrieve_entities_sdf (method)">retrieve_entities_sdf</a></span>
|
||||
<small>ClassyFireAPI</small>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="r1 ">
|
||||
<span class='object_link'><a href="ClassyFireAPI.html#submit_queries_from_directory-class_method" title="ClassyFireAPI.submit_queries_from_directory (method)">submit_queries_from_directory</a></span>
|
||||
<small>ClassyFireAPI</small>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="r2 ">
|
||||
<span class='object_link'><a href="ClassyFireAPI.html#submit_query-class_method" title="ClassyFireAPI.submit_query (method)">submit_query</a></span>
|
||||
<small>ClassyFireAPI</small>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="r1 ">
|
||||
<span class='object_link'><a href="ClassyFireAPI.html#submit_query_input_in_chunks-class_method" title="ClassyFireAPI.submit_query_input_in_chunks (method)">submit_query_input_in_chunks</a></span>
|
||||
<small>ClassyFireAPI</small>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="r2 ">
|
||||
<span class='object_link'><a href="ClassyFireAPI.html#submit_random_subset_of_query_input_in_chunks-class_method" title="ClassyFireAPI.submit_random_subset_of_query_input_in_chunks (method)">submit_random_subset_of_query_input_in_chunks</a></span>
|
||||
<small>ClassyFireAPI</small>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="r1 ">
|
||||
<span class='object_link'><a href="QueryResource.html#to_param-instance_method" title="QueryResource#to_param (method)">#to_param</a></span>
|
||||
<small>QueryResource</small>
|
||||
</li>
|
||||
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,114 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>
|
||||
Top Level Namespace
|
||||
|
||||
— Documentation by YARD 0.8.7.6
|
||||
|
||||
</title>
|
||||
|
||||
<link rel="stylesheet" href="css/style.css" type="text/css" charset="utf-8" />
|
||||
|
||||
<link rel="stylesheet" href="css/common.css" type="text/css" charset="utf-8" />
|
||||
|
||||
<script type="text/javascript" charset="utf-8">
|
||||
hasFrames = window.top.frames.main ? true : false;
|
||||
relpath = '';
|
||||
framesUrl = "frames.html#!top-level-namespace.html";
|
||||
</script>
|
||||
|
||||
|
||||
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
||||
|
||||
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<div id="menu">
|
||||
|
||||
<a href="_index.html">Index</a> »
|
||||
|
||||
|
||||
<span class="title">Top Level Namespace</span>
|
||||
|
||||
|
||||
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
|
||||
</div>
|
||||
|
||||
<div id="search">
|
||||
|
||||
<a class="full_list_link" id="class_list_link"
|
||||
href="class_list.html">
|
||||
Class List
|
||||
</a>
|
||||
|
||||
<a class="full_list_link" id="method_list_link"
|
||||
href="method_list.html">
|
||||
Method List
|
||||
</a>
|
||||
|
||||
<a class="full_list_link" id="file_list_link"
|
||||
href="file_list.html">
|
||||
File List
|
||||
</a>
|
||||
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
|
||||
<iframe id="search_frame"></iframe>
|
||||
|
||||
<div id="content"><h1>Top Level Namespace
|
||||
|
||||
|
||||
|
||||
</h1>
|
||||
|
||||
<dl class="box">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dl>
|
||||
<div class="clear"></div>
|
||||
|
||||
<h2>Defined Under Namespace</h2>
|
||||
<p class="children">
|
||||
|
||||
|
||||
<strong class="modules">Modules:</strong> <span class='object_link'><a href="ClassyFireAPI.html" title="ClassyFireAPI (module)">ClassyFireAPI</a></span>
|
||||
|
||||
|
||||
|
||||
<strong class="classes">Classes:</strong> <span class='object_link'><a href="EntityResource.html" title="EntityResource (class)">EntityResource</a></span>, <span class='object_link'><a href="QueryResource.html" title="QueryResource (class)">QueryResource</a></span>
|
||||
|
||||
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div id="footer">
|
||||
Generated on Wed Mar 9 19:25:39 2016 by
|
||||
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
||||
0.8.7.6 (ruby-2.3.0).
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -1,12 +1,18 @@
|
|||
require 'JSON'
|
||||
require 'RestClient'
|
||||
require 'csv'
|
||||
|
||||
module ClassyFireAPI
|
||||
URL = 'http://classyfire.wishartlab.com'
|
||||
|
||||
def ClassyFireAPI.submit_query(label,input)
|
||||
# Submits a ClassyFire query, which should be returned in a specific format.
|
||||
#
|
||||
# @param label [String] the label of the query.
|
||||
# @param input[String] the input of the query.
|
||||
# @return [Hash] A Ruby Hash with the id (and other attributes) of the Query or nil
|
||||
# if there is an error.
|
||||
def ClassyFireAPI.submit_query(label,input, type='STRUCTURE')
|
||||
begin
|
||||
RestClient.post URL+'/queries', {:label => label, :query_input => input}.to_json, :accept => :json, :content_type => :json
|
||||
q = RestClient.post URL+'/queries', {:label => label, :query_input => input, :query_type => type}.to_json, :accept => :json, :content_type => :json
|
||||
rescue RestClient::BadRequest => e
|
||||
e.response
|
||||
rescue RestClient::InternalServerError => e
|
||||
|
@ -15,18 +21,26 @@ module ClassyFireAPI
|
|||
e.response
|
||||
rescue RestClient::RequestTimeout => e
|
||||
e.response
|
||||
rescue RestClient::UnprocessableEntity => e
|
||||
e.response
|
||||
end
|
||||
q
|
||||
end
|
||||
|
||||
# Retrieves the classification results for a given query.
|
||||
#
|
||||
# @param query_id [Integer] the ID of the query.
|
||||
# @param format [String] the format of the query (either JSON, CSV, or SDF)
|
||||
# @return [Text] A text file displaying the classification results for
|
||||
# the query's entities in the specified format.
|
||||
def ClassyFireAPI.get_query(query_id,format="json")
|
||||
# format can be either 'json' or 'sdf'
|
||||
begin
|
||||
if format == "json"
|
||||
puts "#{URL}/queries/#{query_id}.json"
|
||||
RestClient.get "#{URL}/queries/#{query_id}.json", :accept => :json
|
||||
elsif format == "sdf"
|
||||
puts "#{URL}/queries/#{query_id}.sdf"
|
||||
RestClient.get "#{URL}/queries/#{query_id}.sdf", :accept => :sdf
|
||||
elsif format == "csv"
|
||||
RestClient.get "#{URL}/queries/#{query_id}.csv", :accept => :csv
|
||||
end
|
||||
rescue RestClient::ResourceNotFound => e
|
||||
e.response
|
||||
|
@ -39,14 +53,20 @@ module ClassyFireAPI
|
|||
end
|
||||
end
|
||||
|
||||
# Retrieves the classification results for a given entity.
|
||||
#
|
||||
# @param inchikey [String] the ID of the query.
|
||||
# @param format [String] the format of the query, 'text' (either JSON, CSV, or SDF)
|
||||
# @return [Text] A text file displaying the classification results for the entity in the specified format.
|
||||
def ClassyFireAPI.get_entity_classification(inchikey,format="json")
|
||||
# format can be either 'json' or 'sdf'
|
||||
inchikey_id = inchikey.to_s.gsub('InChIKey=','')
|
||||
begin
|
||||
if format == "json"
|
||||
RestClient.get "#{URL}/entities/#{inchikey_id}.#{format}", :accept => :json
|
||||
elsif format == "sdf"
|
||||
RestClient.get "#{URL}/entities/#{inchikey_id}.#{format}", :accept => :sdf
|
||||
elsif format == "csv"
|
||||
RestClient.get "#{URL}/entities/#{inchikey_id}.#{format}", :accept => :csv
|
||||
end
|
||||
rescue RestClient::ResourceNotFound => e
|
||||
e.response
|
||||
|
@ -59,12 +79,379 @@ module ClassyFireAPI
|
|||
end
|
||||
end
|
||||
|
||||
# Retrieves the status of a query
|
||||
# @param query_id [Integer] the ID of the query
|
||||
# @return [String] the query status, 'Done' or 'In progress', 'string'
|
||||
def ClassyFireAPI.query_status(query_id)
|
||||
s = JSON.parse(get_query(query_id))
|
||||
if s['error']
|
||||
s
|
||||
elsif s['classification_status:']
|
||||
s['classification_status']
|
||||
begin
|
||||
RestClient.get "#{URL}/queries/#{query_id}/status.json", :accept => :json
|
||||
rescue Exception=>e
|
||||
$stderr.puts e.message
|
||||
nil
|
||||
end
|
||||
end
|
||||
|
||||
# Takes a tab-separated file and submit the contained structures in bulks of a given size
|
||||
#
|
||||
# For 'STRUCTURE' or 'IUPAC_NAME'query types, each line must contain either
|
||||
# 1) Only a structural represenation: SMILES, InChI for the 'STRUCTURE' query_type or a IUPAC name
|
||||
# for the 'IUPAC NAME' query type.
|
||||
# 2) a tab-separated pair of an ID and the corresponding sructure representation: SMILES, InChI for the
|
||||
# 'STRUCTURE' query_type or a IUPAC name for the 'IUPAC NAME' query type.
|
||||
#
|
||||
# For 'FASTA' query type, just submit the query as a standard FASTA text.
|
||||
# @param input_file [Text] The path to the input file.
|
||||
# @param: slice_length [Integer] The maximum number of entries for each query input (the whole file
|
||||
# is fragmented into n part of #slice_length entries each).
|
||||
# @param: start [Integer] The starting index. Submit framgments from the index 'start'.
|
||||
def ClassyFireAPI.submit_query_input_in_chunks(input_file,slice_length, start, type='STRUCTURE')
|
||||
@start_time = Time.now
|
||||
absolute_path = File.expand_path(input_file)
|
||||
f = File.open(absolute_path, 'r')
|
||||
input = []
|
||||
|
||||
lines = File.readlines(absolute_path)
|
||||
|
||||
lines.uniq.each do |line|
|
||||
sline = line.strip.split("\t")
|
||||
if sline.length == 1
|
||||
input <<"#{sline[0]}"
|
||||
elsif sline.length >= 2
|
||||
input <<"#{sline[0]}\t#{sline[2]}"
|
||||
end
|
||||
end
|
||||
|
||||
query_ids = []
|
||||
subdivised_groups = input.uniq.each_slice(slice_length).to_a
|
||||
puts "nr of subdivised_groups: #{subdivised_groups.length}"
|
||||
puts subdivised_groups[0]
|
||||
sleeping_time = 120
|
||||
initial_nr_of_jobs = 60
|
||||
i = start
|
||||
|
||||
while i < initial_nr_of_jobs
|
||||
title = File.basename(absolute_path).split(".")[0] + "_yannick" + "_part_#{i}"
|
||||
|
||||
begin
|
||||
puts "submitting #{title}"
|
||||
q = submit_query(title,subdivised_groups[i-1].join("\n"),type)
|
||||
query_ids << JSON.parse(q)['id']
|
||||
rescue Exception => e
|
||||
puts e.message
|
||||
puts e.backtrace.inspect
|
||||
end
|
||||
i = i + 1
|
||||
end
|
||||
|
||||
puts "Going to sleep at #{Time.now - @start_time} for #{sleeping_time} s."
|
||||
sleep(sleeping_time)
|
||||
puts "Waking up at #{Time.now - @start_time}"
|
||||
|
||||
while i < subdivised_groups.length
|
||||
k = 0
|
||||
for k in (i..(i+80))
|
||||
title = File.basename(absolute_path).split(".")[0] + "_yannick" + "_part_#{k}"
|
||||
i = i + 1
|
||||
begin
|
||||
puts "submitting #{title}"
|
||||
q = submit_query(title,subdivised_groups[k-1].join("\n"),type)
|
||||
rescue Exception => e
|
||||
puts e.message
|
||||
puts e.backtrace.inspect
|
||||
end
|
||||
|
||||
end
|
||||
i = k
|
||||
puts "Going to sleep at #{Time.now - @start_time} for #{sleeping_time} s."
|
||||
sleep(sleeping_time)
|
||||
puts "Waking up at #{Time.now - @start_time}"
|
||||
end
|
||||
end
|
||||
|
||||
# Takes each file in a folder, and submit the contained structures in bluks of a given size.
|
||||
#
|
||||
# For 'STRUCTURE' or 'IUPAC_NAME'query types, each line must contain either
|
||||
# 1) Only a structural represenation: SMILES, InChI for the 'STRUCTURE' query_type or a IUPAC name
|
||||
# for the 'IUPAC NAME' query type.
|
||||
# 2) a tab-separated pair of an ID and the corresponding sructure representation: SMILES, InChI for the
|
||||
# 'STRUCTURE' query_type or a IUPAC name for the 'IUPAC NAME' query type.
|
||||
#
|
||||
# For 'FASTA' query type, just submit the query as a standard FASTA text.
|
||||
# @param: input_file [String] The path to the folder.
|
||||
# @param: slice_length [Integer] The maximum number of entries for each query input (each file
|
||||
# is fragmented into n part of #slice_length entries each), 'integer'
|
||||
# @param type [String] the query_type 'STRUCTURE' (default) or 'IUPAC_NAME' or 'FASTA'
|
||||
def ClassyFireAPI.submit_queries_from_directory(folder,slice_length,type="STRUCTURE")
|
||||
if File.directory?(folder)
|
||||
Dir.foreach(folder) do |filename|
|
||||
puts "Filename: #{filename}"
|
||||
ClassyFireAPI.submit_query_input_in_chunks(folder+"/"+filename,slice_length, type) unless filename == "." || filename == ".." || filename == ".DS_Store"
|
||||
end
|
||||
else
|
||||
$stderr.puts "#{folder} is not a folder."
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
# Takes a tab-separated file and submit randomly selected structures in bulks of a given size.
|
||||
#
|
||||
# For 'STRUCTURE' or 'IUPAC_NAME'query types, each line must contain either
|
||||
# 1) Only a structural represenation: SMILES, InChI for the 'STRUCTURE' query_type or a IUPAC name
|
||||
# for the 'IUPAC NAME' query type.
|
||||
# 2) a tab-separated pair of an ID and the corresponding sructure representation: SMILES, InChI for the
|
||||
# 'STRUCTURE' query_type or a IUPAC name for the 'IUPAC NAME' query type.
|
||||
#
|
||||
# For 'FASTA' query type, just submit the query as a standard FASTA text.
|
||||
# @param tab_separated_input_file [Text] The path to the input file.
|
||||
# @param size [Integer] The maximum number of entries for each query input (the whole file
|
||||
# is fragmented into n part of #slice_length entries each).
|
||||
# @param type [String] The query_type, 'STRUCTURE' (default) or 'IUPAC_NAME' or 'FASTA'.
|
||||
def ClassyFireAPI.submit_random_subset_of_query_input_in_chunks(tab_separated_input_file,size, type='STRUCTURE')
|
||||
@start_time = Time.now
|
||||
absolute_path = File.expand_path(tab_separated_input_file)
|
||||
f = File.open(absolute_path, 'r')
|
||||
input = []
|
||||
|
||||
f.each_line do |line|
|
||||
|
||||
sline = line.strip.split("\t")
|
||||
if sline.length == 1
|
||||
input <<"#{sline[0]}"
|
||||
elsif sline.length == 2
|
||||
input <<"#{sline[0]}\t#{sline[1]}"
|
||||
end
|
||||
end
|
||||
|
||||
query_ids = []
|
||||
indexes = []
|
||||
r = 1
|
||||
while r <= (size)
|
||||
s = rand(0..(input.length - 1))
|
||||
unless indexes.include?(s)
|
||||
indexes<<s
|
||||
r += 1
|
||||
end
|
||||
end
|
||||
|
||||
random_subset = indexes.map{|x| input[x]}
|
||||
subdivised_groups = random_subset.each_slice(100).to_a
|
||||
sleeping_time = 120
|
||||
|
||||
i = 0
|
||||
while i < subdivised_groups.length
|
||||
k = 0
|
||||
for k in (i..(i + 5))
|
||||
title = File.basename(absolute_path).split(".")[0] + "_yannick" + "_part_#{k+1}"
|
||||
i = i + 1
|
||||
begin
|
||||
puts "submitting #{title}"
|
||||
q = submit_query(title,subdivised_groups[k].join("\n"),type)
|
||||
rescue Exception => e
|
||||
puts e.message
|
||||
puts e.backtrace.inspect
|
||||
end
|
||||
end
|
||||
i = k
|
||||
puts "Going to sleep at #{Time.now - @start_time} for #{sleeping_time} s."
|
||||
sleep(sleeping_time)
|
||||
puts "Waking up at #{Time.now - @start_time}"
|
||||
end
|
||||
end
|
||||
|
||||
# Reads a tab separated file, and use the structure representation
|
||||
#to retrieve the strutcure's classification from ClassyFire.
|
||||
#
|
||||
# @param input [String] path to the input file.
|
||||
# @return [String] path to the output file.
|
||||
def ClassyFireAPI.retrieve_classification(input,output)
|
||||
absolute_path = File.expand_path(input)
|
||||
f_input = File.open(absolute_path, 'r')
|
||||
h = Hash.new
|
||||
directory = absolute_path.split('/')[0...-1].join("/")
|
||||
f_output = File.new(output, 'w')
|
||||
res = String.new
|
||||
|
||||
|
||||
res += "{"
|
||||
res += '"id": 1,'
|
||||
res += '"label":"' + output + '",' + '"classification_status":"Done",' + '"entities":['
|
||||
|
||||
f_input.each_line do |line|
|
||||
sline = line.strip.split("\t")
|
||||
if sline.length == 1
|
||||
h[sline[0]] = sline[0]
|
||||
elsif sline.length == 2
|
||||
h[sline[0]] = line.strip
|
||||
end
|
||||
end
|
||||
|
||||
puts h.keys.uniq.length
|
||||
if h.keys.length > 0
|
||||
i = 1
|
||||
h.keys.uniq[0..-1].each do |key|
|
||||
puts i
|
||||
|
||||
puts "#{key} :: #{h[key]}"
|
||||
begin
|
||||
qs = submit_query(key,h[key])
|
||||
|
||||
qs_decoded = JSON.parse(qs)
|
||||
qr = JSON.parse(get_query(qs_decoded["id"],format="json"))
|
||||
|
||||
res += qr["entities"][0].to_json
|
||||
res += ","
|
||||
i += 1
|
||||
rescue Exception => e
|
||||
e.message
|
||||
end
|
||||
|
||||
end
|
||||
key = h.keys[-1]
|
||||
puts "#{key} :: #{h[key]}"
|
||||
begin
|
||||
qs = submit_query(key,h[key])
|
||||
sleep(0.2)
|
||||
qs_decoded = JSON.parse(qs)
|
||||
qr = JSON.parse(get_query(qs_decoded["id"],format="json"))
|
||||
# puts qr["entities"]
|
||||
# sleep(0.2)
|
||||
# f_output.print qr["entities"][0],"\n"
|
||||
res += qr["entities"][0].to_json
|
||||
# res += ","
|
||||
rescue Exception => e
|
||||
e.message
|
||||
end
|
||||
end
|
||||
|
||||
res += "]}"
|
||||
f_output.print res
|
||||
end
|
||||
|
||||
# Reads a tab separated file, and use the structure representation
|
||||
# to retrieve the strutcure's classification from ClassyFire in a JSON format.
|
||||
#
|
||||
# @param input [String] path to the input file
|
||||
# @return [String] path to the output file
|
||||
def ClassyFireAPI.retrieve_entities_json(input,output)
|
||||
absolute_path = File.expand_path(input)
|
||||
f_input = File.open(absolute_path, 'r')
|
||||
h = Hash.new
|
||||
directory = absolute_path.split('/')[0...-1].join("/")
|
||||
f_output = File.new(output, 'w')
|
||||
puts
|
||||
res = String.new
|
||||
|
||||
res += "{"
|
||||
res += '"id": 1,'
|
||||
res += '"label":"' + output + '",' + '"classification_status":"Done",' + '"entities":['
|
||||
|
||||
f_input.each_line do |line|
|
||||
sline = line.strip.split("\t")
|
||||
h[sline[0]] = sline[-1]
|
||||
end
|
||||
|
||||
puts h.keys.uniq.length
|
||||
if h.keys.length > 0
|
||||
i = 1
|
||||
h.keys.uniq[0...-1].each do |key|
|
||||
puts i
|
||||
# puts "#{key} :: #{h[key]}"
|
||||
begin
|
||||
inchikey = %x(/Applications/ChemAxon/JChem/bin/molconvert inchikey -s "#{h[key]}").strip
|
||||
# puts inchikey
|
||||
qr = JSON.parse(ClassyFireAPI.get_entity_classification(inchikey,format="json"))
|
||||
qr['identifier'] = key
|
||||
res += qr.to_json
|
||||
res += ","
|
||||
puts "#{key} :: RETURN NIL" if qr.nil? || qr['direct_parent']['name'].nil?
|
||||
rescue Exception => e
|
||||
e.message
|
||||
end
|
||||
i += 1
|
||||
end
|
||||
key = h.keys[-1]
|
||||
# puts "#{key} :: #{h[key]}"
|
||||
begin
|
||||
inchikey = %x(/Applications/ChemAxon/JChem/bin/molconvert inchikey -s "#{h[key]}").strip
|
||||
# puts inchikey
|
||||
qr = JSON.parse(ClassyFireAPI.get_entity_classification(inchikey,format="json"))
|
||||
qr['identifier'] = key
|
||||
res += qr.to_json
|
||||
puts "#{key} :: RETURN NIL" if qr.nil? || qr['direct_parent']['name'].nil?
|
||||
# res += ","
|
||||
rescue Exception => e
|
||||
e.message
|
||||
end
|
||||
end
|
||||
res += "]}"
|
||||
f_output.print res
|
||||
end
|
||||
|
||||
|
||||
|
||||
# Reads a tab separated file, and use the structure representation
|
||||
# to retrieve the strutcure's classification from ClassyFire in a SDF format.
|
||||
#
|
||||
# @param input [String] path to the input file
|
||||
# @return [String] path to the output file
|
||||
def ClassyFireAPI.retrieve_entities_sdf(input,output)
|
||||
absolute_path = File.expand_path(input)
|
||||
f_input = File.open(absolute_path, 'r')
|
||||
h = Hash.new
|
||||
directory = absolute_path.split('/')[0...-1].join("/")
|
||||
f_output = File.new(output, 'w')
|
||||
res = String.new
|
||||
|
||||
f_input.each_line do |line|
|
||||
sline = line.strip.split("\t")
|
||||
h[sline[0]] = sline[-1]
|
||||
end
|
||||
|
||||
puts h.keys.uniq.length
|
||||
if h.keys.length > 0
|
||||
i = 1
|
||||
h.keys.uniq[0...-1].each do |key|
|
||||
puts i
|
||||
# puts "#{key} :: #{h[key]}"
|
||||
begin
|
||||
inchikey = %x(/Applications/ChemAxon/JChem/bin/molconvert inchikey -s "#{h[key]}").strip
|
||||
# puts inchikey
|
||||
qr = ClassyFireAPI.get_entity_classification(inchikey,format="sdf")
|
||||
if qr.include?("The page you were looking for doesn't exist")
|
||||
puts "The page you were looking for doesn't exist"
|
||||
elsif qr.empty?
|
||||
|
||||
else
|
||||
input = qr.split("\n")[1..-1].join("\n")
|
||||
puts input
|
||||
f_output.puts "#{key}\n"
|
||||
f_output.puts input
|
||||
end
|
||||
rescue Exception => e
|
||||
e.message
|
||||
end
|
||||
i += 1
|
||||
end
|
||||
key = h.keys[-1]
|
||||
# puts "#{key} :: #{h[key]}"
|
||||
begin
|
||||
inchikey = %x(/Applications/ChemAxon/JChem/bin/molconvert inchikey -s "#{h[key]}").strip
|
||||
# puts inchikey
|
||||
qr = ClassyFireAPI.get_entity_classification(inchikey,format="sdf")
|
||||
if qr.include?("The page you were looking for doesn't exist")
|
||||
puts "The page you were looking for doesn't exist"
|
||||
elsif qr.empty?
|
||||
|
||||
else
|
||||
input = qr.split("\n")[1..-1].join("\n")
|
||||
puts input
|
||||
f_output.puts "#{key}\n"
|
||||
f_output.puts input
|
||||
end
|
||||
rescue Exception => e
|
||||
e.message
|
||||
end
|
||||
end
|
||||
# f_output.print res
|
||||
end
|
||||
end
|
|
@ -1,7 +1,6 @@
|
|||
require 'active_resource'
|
||||
|
||||
class EntityResource < ActiveResource::Base
|
||||
self.site ='http://localhost:3000'
|
||||
self.site ='http://classyfire.wishartlab.com'
|
||||
self.element_name = "entity"
|
||||
|
||||
end
|
|
@ -1,7 +1,7 @@
|
|||
require 'active_resource'
|
||||
|
||||
class QueryResource < ActiveResource::Base
|
||||
self.site ='http://localhost:3000'
|
||||
self.site ='http://classyfire.wishartlab.com'
|
||||
self.element_name = "query"
|
||||
has_many :entities, class_name: 'EntityResource'
|
||||
def to_param
|
||||
|
|
Loading…
Reference in New Issue