Thesis (Diplom) 
Indoor Localization of Mobile Devices Based on Wi-Fi Signals Using Raytracing Supported Algorithms
Place and Date of Creation
Turn right 90°Turn left 90°
  
  
  
  
  
 
Download single image
 
  

64 5. Implementationcompiled C and still around 20 times slower than JITed Java. For most of theindividual use-cases found in the localization framework, this is fast enough. But forthe number crunching cores of the localization algorithms, the use of pure Python can be excluded. Therefore, these parts of the frameworks that should be fast andmemory efficient, are implemented in Cython, a Python -to-C compiler. Cythonallows seamless integration of compiled machine code into the Python runtime andachieves significant faster execution times for computational and memory intensiveoperations.The Python code is structured primarily with namespaces and classes. Instancesof classes are mostly used as scoping containers, higher object oriented conceptssuch as subclassing is only used sporadically in the framework. Writing idiomaticPython code, adhering to the so called Zen of Python, was a relevant design principle.Sadly, the rules of good software practice have been violated by ignoring the task ofwriting unit tests for the framework. But up till now, the implementation is ratherrepresented by laboratory than by an assembly line, so the need for them was notthat pressing either.The third programming language that was used, is JavaScript. The output ofthe HTTP-Server includes some dynamically generated HTML pages. There, theJavaScript code is responsible for adding some interactivity to the HTML frontend.The JavaScript code is strongly JQuery driven. The following table, the output ofcloc-count1, gives an overview over the usage of the three programming languages:LanguagePythonCythonJavascriptTotalFiles261229Blank2530472863088Comment1001216131230Code86271347328103025.1 Third Party LibrariesA number of open source libraries from the Python ecosystem were used in theframework. All, but Pygene, a set of genetic algorithms, are liberally licensed.Pygene uses the GPL v2, but the others are MIT like licensed. All, but Pygene,are actively maintained and backed by a strong community. But Pygene is a smalllibrary that can easily be replaced/reimplemented if that should become necessary.The NumPy/SciPy/Matplotlib/Cython library ecosystem was the most importantfor the realization of the framework. There are no real alternatives of the samequality, so they cannot easily be replaced. The other presented libraries have ei-ther comparable alternatives or are only employed for less important use-cases asdebugging2the data streams..1http://cloc.sourceforge.net2Less important with respect to the final results of the thesis, but surly important for reachingthem.