Skip to content

OpenANN/OpenANN-apidoc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
Sorry, we had to truncate this directory to 1,000 files. 109 entries were omitted from the list.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

<!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">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.4"/>
<title>OpenANN: Contributing</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="openann-logo-small.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">OpenANN
   &#160;<span id="projectnumber">1.1.0</span>
   </div>
   <div id="projectbrief">An open source library for artificial neural networks.</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.4 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Pages</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">Contributing </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p><b>Table</b> <b>of</b> <b>contents</b> </p>
<ul>
<li><a class="el" href="Contributing.html#ContributingCode">Contributing code</a></li>
<li><a class="el" href="Contributing.html#Directories">Directories</a></li>
<li><a class="el" href="Contributing.html#ImprovingQuality">Improving the code quality</a></li>
<li><a class="el" href="Contributing.html#FAQ">FAQ</a></li>
</ul>
<h1><a class="anchor" id="ContributingCode"></a>
Contributing code</h1>
<p>We use the version control system <a href="http://git-scm.com/" target="_blank">git</a> and the repository is available on github:</p>
<p><a href="https://github.com/OpenANN/OpenANN" target="_blank">https://github.com/OpenANN/OpenANN</a></p>
<p>Contributing code to OpenANN usually works as follows:</p>
<ul>
<li>Fork the repository (you need a github account).</li>
<li>Clone the repository: <div class="fragment"><div class="line">git clone [email protected]:&lt;YourAccount&gt;/OpenANN.git</div>
</div><!-- fragment --></li>
<li>Create a new branch to add new features / fixes / documentation etc.: <div class="fragment"><div class="line">git checkout -b &lt;BranchName&gt;</div>
</div><!-- fragment --></li>
<li>Work on the new branch, commit and finally push your changes to your fork: <div class="fragment"><div class="line">git push origin &lt;BranchName&gt;</div>
</div><!-- fragment --></li>
<li>Open a pull request to the main repository. A core developer will review and possibly merge your request.</li>
</ul>
<h1><a class="anchor" id="Directories"></a>
Directories</h1>
<ul>
<li>OpenANN - Header files that are exposed to the user</li>
<li>benchmarks - Standard ANN benchmarks</li>
<li>cmake - CMake macros</li>
<li>doc - Additional doxygen documentation files</li>
<li>examples - OpenANN showcase</li>
<li>lib - External libraries</li>
<li>python - Python language bindings</li>
<li>src - Implementation files for libopenann</li>
<li>test - Contains the OpenANN test suite</li>
</ul>
<h1><a class="anchor" id="ImprovingQuality"></a>
Improving the code quality</h1>
<p>There is always a lot of work that can be done to improve the quality of code, e.g.:</p>
<ul>
<li>Writing unit tests: check out the test directory to see how it works</li>
<li>Writing documentation: more API documentation, guides, how-tos, ...</li>
<li>Checking for memory leaks, access of unallocated memory, etc. with <a href="http://valgrind.org/" target="_blank">Valgrind</a></li>
<li>Adding more checks and asserts (note that these checks must not affect the performance of the code)</li>
<li>Profiling and optimizing code for performance</li>
</ul>
<p>Those tasks are great entry points to contribute to the library and we are glad to receive any improvements.</p>
<h1><a class="anchor" id="CodingStyle"></a>
Coding Style</h1>
<p>We have a <a href="https://github.com/OpenANN/OpenANN/wiki/Coding-Style" target="_blank">coding style</a>. To apply that style automatically, you can use the tool <a href="http://astyle.sourceforge.net" target="_blank">Artistic Style</a>. You can run the following command in the OpenANN main directory:</p>
<pre class="fragment">astyle --options=.astylerc --recursive "OpenANN/*.h" "src/*.cpp" "examples/*.h" "examples/*.cpp" "benchmarks/*.h" "benchmarks/*.cpp" "test/*.h" "test/*.cpp"
</pre><h1><a class="anchor" id="TestSuite"></a>
Test Suite</h1>
<p>To build the OpenANN test suite you have to build the target TestSuite: </p>
<pre class="fragment">make TestSuite
</pre><p> You can run the tests with </p>
<pre class="fragment">test/TestSuite
</pre><p> or </p>
<pre class="fragment">test/TestSuite -qt
</pre><p> The latter will only work if Qt and the Qt headers are installed. Usually all tests should be succesful.</p>
<h1><a class="anchor" id="FAQ"></a>
FAQ</h1>
<h2><a class="anchor" id="FAQ1"></a>
What can I do to contribute to OpenANN?</h2>
<p>There is a list of open issues at our github page: <a href="https://github.com/OpenANN/OpenANN/issues?state=open" target="_blank">issues</a>.</p>
<h2><a class="anchor" id="FAQ2"></a>
How can I verify my contribution?</h2>
<ol type="1">
<li>Write unit tests.</li>
<li>Use Cppcheck:<pre class="fragment">cppcheck -q --enable=all &lt;files&gt; </pre>.</li>
<li>Maybe add an example or a benchmark for major components like a new type of learner.</li>
<li>Use valgrind to check for memory leaks etc.</li>
</ol>
<h2><a class="anchor" id="FAQ3"></a>
How can I minimize the time that is required to switch between different build types (Debug and Release)?</h2>
<p>Both build types can be maintained simultanously: </p>
<div class="fragment"><div class="line">mkdir build/Debug</div>
<div class="line">mkdir build/Release</div>
<div class="line">cd build/Debug</div>
<div class="line">cmake -D CMAKE_BUILD_TYPE:String=Debug ../..</div>
<div class="line">make</div>
<div class="line">cd ../Release</div>
<div class="line">cmake -D CMAKE_BUILD_TYPE:String=Release ../..</div>
<div class="line">make</div>
</div><!-- fragment --> </div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jul 9 2014 08:57:52 for OpenANN by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.4
</small></address>
</body>
</html>

About

API documentation of OpenANN.

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published