From 8fc03edf48d7a53aab3ed3b7926d68b35a2f5ec9 Mon Sep 17 00:00:00 2001 From: addalin Date: Sun, 1 Sep 2019 16:27:05 +0300 Subject: [PATCH 01/90] adding debug option, and uncomment info option. --- scripts_client/camera_client.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts_client/camera_client.py b/scripts_client/camera_client.py index 21f302e..f490c36 100644 --- a/scripts_client/camera_client.py +++ b/scripts_client/camera_client.py @@ -76,7 +76,8 @@ def main(local_mode, log_level): if __name__ == '__main__': parser = argparse.ArgumentParser(description='Start the camera client application') parser.add_argument('--local', action='store_true', help='Run in local mode.') - parser.add_argument('--log_level', default='INFO', help='Set the log level (possible values: info, debug, ...)') + parser.add_argument('--log_level', default='debug', help='Set the log level (possible values: info, debug, ...)') + # parser.add_argument('--log_level', default='INFO', help='Set the log level (possible values: info, debug, ...)') args = parser.parse_args() main(args.local, args.log_level) \ No newline at end of file From cfdab755b718cfed80529caf24bacb3b62a3c5ff Mon Sep 17 00:00:00 2001 From: addalin Date: Sun, 1 Sep 2019 16:43:00 +0300 Subject: [PATCH 02/90] change private key name --- CameraNetwork/global_settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CameraNetwork/global_settings.py b/CameraNetwork/global_settings.py index 9a31eb8..6787eaa 100644 --- a/CameraNetwork/global_settings.py +++ b/CameraNetwork/global_settings.py @@ -135,7 +135,7 @@ ODROID_USER = 'odroid' ODROID_PW = 'odroid' -IDENTITY_FILE = os.path.join(os.path.expanduser('~'), 'cameranetwork.pem') +IDENTITY_FILE = os.path.join(os.path.expanduser('~'), 'AdiKP2.pem') # changed from 'cameranetwork.pem' - Adi # # Dropbox folder From 68341c69c5ecc99737d89634feca671785482904 Mon Sep 17 00:00:00 2001 From: Addalin Date: Sun, 1 Sep 2019 16:48:29 +0300 Subject: [PATCH 03/90] Fixing redirection of modules of qt4 --> qt5 . Splitting QtGui to QtGui and QtWidgets (in qt5) Fixing redirection of modules of qt4 --> qt5 . Splitting QtGui to QtGui and QtWidgets (in qt5) --- .gitignore | 2 ++ CameraNetwork/gui/data_frame_table.py | 28 ++++++++++++++++++--------- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index d1fa5b7..c1ba82d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ *.pyc Default*Settings +cameranetwork.wpr +cameranetwork.wpu diff --git a/CameraNetwork/gui/data_frame_table.py b/CameraNetwork/gui/data_frame_table.py index eacdd98..1e5ee71 100644 --- a/CameraNetwork/gui/data_frame_table.py +++ b/CameraNetwork/gui/data_frame_table.py @@ -53,9 +53,11 @@ from enaml.core.declarative import d_ from enaml.widgets.api import RawWidget from enaml.qt.QtCore import QAbstractTableModel, QModelIndex, Qt -from enaml.qt.QtGui import ( - QTableView, QHeaderView, QAbstractItemView, QFontMetrics) - +# fixing import from enaml.qt.QtGui. During the transision from Qt4 to Qt5: QtGui was split into QtGui and QtWidgets +#from enaml.qt.QtGui import ( + #QTableView, QHeaderView, QAbstractItemView, QFontMetrics) # ADI - fixing import of QTableView in Qt5. This line was relevant to Qt4 +from enaml.qt.QtGui import QFontMetrics # ADI - preserving include of QFontMetrics in Qt5 +from enaml.qt.QtWidgets import (QTableView,QHeaderView, QAbstractItemView) # ADI - fixing import of (QTableView,QHeaderView, QAbstractItemView) in Qt5 from traits_enaml.utils import get_unicode_string, format_value @@ -228,14 +230,23 @@ def _setup_headers(self): max_width = fmetrics.width(u" {0} ".format( unicode(self.df_model.rowCount()))) self.vheader.setMinimumWidth(max_width) - self.vheader.setClickable(True) + + # self.vheader.setClickable(True) # ADI - this comment is relevant for Qt 4 + self.vheader.setSectionsClickable(True) # ADI - this is relevant for Qt > 4 + self.vheader.setStretchLastSection(False) - self.vheader.setResizeMode(QHeaderView.Fixed) - + + # self.vheader.setResizeMode(QHeaderView.Fixed) # ADI - this comment is relevant for Qt 4 + self.vheader.setSectionResizeMode(QHeaderView.Fixed) # ADI - this is relevant for Qt > 4 + self.hheader = self.horizontalHeader() self.hheader.setStretchLastSection(False) - self.hheader.setClickable(True) - self.hheader.setMovable(True) + + # self.vheader.setClickable(True) # ADI - this comment is relevant for Qt 4 + self.vheader.setSectionsClickable(True) # ADI - this is relevant for Qt > 4 + + # self.hheader.setMovable(True) # ADI - this comment is relevant for Qt 4 + self.hheader.setSectionsMovable(True) # ADI - this is relevant for Qt > 4 def _setup_style(self): self.setWordWrap(False) @@ -286,4 +297,3 @@ def current_changed(self, current_item, previous_item): self.selected_row = current_item.row() self.selected_index = self.data_frame.index[current_item.row()] - \ No newline at end of file From da36aafc179e6ce43155088911d65e6df63882c3 Mon Sep 17 00:00:00 2001 From: Addalin Date: Sun, 1 Sep 2019 16:49:59 +0300 Subject: [PATCH 04/90] Fixing absult path of the files Fixing absult path of the files --- CameraNetwork/visualization.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/CameraNetwork/visualization.py b/CameraNetwork/visualization.py index eab1e53..b4cd1f8 100644 --- a/CameraNetwork/visualization.py +++ b/CameraNetwork/visualization.py @@ -42,10 +42,11 @@ def loadMapData(): """Load height data for map visualization.""" - - path1 = r"..\data\reconstructions\N32E034.hgt" - path2 = r"..\data\reconstructions\N32E035.hgt" - path3 = r"..\data\reconstructions\haifa_map.jpg" + + relpath = os.path.dirname(os.path.realpath(__file__)) + path1 = os.path.abspath(os.path.join(relpath , r"..\data\reconstructions\N32E034.hgt")) + path2 = os.path.abspath(os.path.join(relpath , r"..\data\reconstructions\N32E035.hgt")) + path3 = os.path.abspath(os.path.join(relpath , r"..\data\reconstructions\haifa_map.jpg")) with open(path1) as hgt_data: hgt1 = np.fromfile(hgt_data, np.dtype('>i2')).reshape((1201, 1201))[:1200, :1200] From 645b5ce298d7efc78b29de20adfdc44d50f1d015 Mon Sep 17 00:00:00 2001 From: Addalin Date: Sun, 1 Sep 2019 16:51:03 +0300 Subject: [PATCH 05/90] Update global_settings.py --- CameraNetwork/global_settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CameraNetwork/global_settings.py b/CameraNetwork/global_settings.py index 6787eaa..ca82ce0 100644 --- a/CameraNetwork/global_settings.py +++ b/CameraNetwork/global_settings.py @@ -60,7 +60,7 @@ DEFAULT_PROXY_PARAMS = """ { "autossh_monitor_port": 10000, - "ip": "35.157.27.102", + "ip": "3.123.49.101", "proxy_port": 1980, "client_port": 1981, "hb_port": 1985, From 14d7a8e9e5d50e91c4abbd953a7eb858c35d0572 Mon Sep 17 00:00:00 2001 From: Omer S Date: Wed, 4 Sep 2019 08:58:12 +0300 Subject: [PATCH 06/90] Update install.rst --- docs/source/install.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/source/install.rst b/docs/source/install.rst index 8c5d780..c157de3 100644 --- a/docs/source/install.rst +++ b/docs/source/install.rst @@ -30,8 +30,10 @@ forward to install the ``CameraNetwork`` pacakge and its prerequisites on other on the RaspberrPi. In the following we detail the procedure of installing the required prerequisites and main pacakge. Note that -once the package is installed on one compture, it is much more time effective to create an image of the Odroid +once the package is installed on one computer, it is much more time effective to create an image of the Odroid memory card and duplicate it as needed. +``TODO Add instructions how to create and install Odroid Image`` + Prerequisites ------------- From d47bc904998caf011d2394f51f1020b51ecab814 Mon Sep 17 00:00:00 2001 From: Adi Vainiger Date: Sun, 8 Sep 2019 09:44:53 +0300 Subject: [PATCH 07/90] Shubi (#18) * sphinx fix temporary (comment out numfig) * Update drone_camera.py * Update README.md * Update install.rst *traits-enaml clone branch 'update-frame-table' to fix a bug * Update conf.py Workaround for #9 * Update usage.rst * Added images for docs * tmp solution for linux/windows map file path Added TOC --- CameraNetwork/visualization.py | 111 ++- README.md | 35 +- docs/make.bat | 562 +++++------ docs/source/conf.py | 886 +++++++++--------- docs/source/images/GUI_main_status.png | Bin 0 -> 96776 bytes docs/source/images/GUI_on_start.png | Bin 0 -> 46756 bytes .../source/images/GUI_servers_with_camera.png | Bin 0 -> 6198 bytes docs/source/index.rst | 54 +- docs/source/install.rst | 337 ++++--- docs/source/usage.rst | 74 +- scripts/drone_camera.py | 2 +- 11 files changed, 1097 insertions(+), 964 deletions(-) create mode 100644 docs/source/images/GUI_main_status.png create mode 100644 docs/source/images/GUI_on_start.png create mode 100644 docs/source/images/GUI_servers_with_camera.png diff --git a/CameraNetwork/visualization.py b/CameraNetwork/visualization.py index b4cd1f8..0c12d67 100644 --- a/CameraNetwork/visualization.py +++ b/CameraNetwork/visualization.py @@ -33,26 +33,33 @@ ## LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE ## OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ## ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.## -from __future__ import division -import cv2 -import matplotlib.mlab as ml -import numpy as np -import pymap3d - - -def loadMapData(): - """Load height data for map visualization.""" +from __future__ import division +import cv2 +import matplotlib.mlab as ml +import numpy as np +import pymap3d +import os +import platform +def loadMapData(): + """Load height data for map visualization.""" + +# TODO more rebust linux / windows solution + remove absolute path relpath = os.path.dirname(os.path.realpath(__file__)) - path1 = os.path.abspath(os.path.join(relpath , r"..\data\reconstructions\N32E034.hgt")) - path2 = os.path.abspath(os.path.join(relpath , r"..\data\reconstructions\N32E035.hgt")) - path3 = os.path.abspath(os.path.join(relpath , r"..\data\reconstructions\haifa_map.jpg")) - - with open(path1) as hgt_data: - hgt1 = np.fromfile(hgt_data, np.dtype('>i2')).reshape((1201, 1201))[:1200, :1200] - with open(path2) as hgt_data: - hgt2 = np.fromfile(hgt_data, np.dtype('>i2')).reshape((1201, 1201))[:1200, :1200] - hgt = np.hstack((hgt1, hgt2)).astype(np.float32) + if platform.system()=='Windows': + path1 = os.path.abspath(os.path.join(relpath , r"..\data\reconstructions\N32E034.hgt")) + path2 = os.path.abspath(os.path.join(relpath , r"..\data\reconstructions\N32E035.hgt")) + path3 = os.path.abspath(os.path.join(relpath , r"..\data\reconstructions\haifa_map.jpg")) + if platform.system()=='Linux': + path1 = os.path.abspath(os.path.join(relpath, r"../data/reconstructions/N32E034.hgt")) + path2 = os.path.abspath(os.path.join(relpath, r"../data/reconstructions/N32E035.hgt")) + path3 = os.path.abspath(os.path.join(relpath, r"../data/reconstructions/haifa_map.jpg")) + + with open(path1) as hgt_data: + hgt1 = np.fromfile(hgt_data, np.dtype('>i2')).reshape((1201, 1201))[:1200, :1200] + with open(path2) as hgt_data: + hgt2 = np.fromfile(hgt_data, np.dtype('>i2')).reshape((1201, 1201))[:1200, :1200] + hgt = np.hstack((hgt1, hgt2)).astype(np.float32) lon, lat = np.meshgrid(np.linspace(34, 36, 2400, endpoint=False), np.linspace(32, 33, 1200, endpoint=False)[::-1]) map_texture = cv2.cvtColor(cv2.imread(path3), cv2.COLOR_BGR2RGB) @@ -61,40 +68,40 @@ def loadMapData(): lat[100:400, 1100:1400], lon[100:400, 1100:1400], \ hgt[100:400, 1100:1400], map_texture[100:400, 1100:1400, ...] - -def calcSeaMask(hgt_array): - """Calc a masking to the sea. - - Note: - This code is uses empirical magic number, and should be adjusted if - grid sizes change. - """ - - hgt_u8 = (255 * (hgt_array - hgt_array.min()) / (hgt_array.max() - hgt_array.min())).astype(np.uint8) - - mask = (hgt_u8 > 7).astype(np.uint8)*255 - kernel_open = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3, 3)) - mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel_open) - kernel_close = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (16, 16)) - mask = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel_close) - mask[250:, 250:] = 255 - - return mask < 255 - - -def convertMapData(lat, lon, hgt, map_texture, lat0=32.775776, lon0=35.024963, alt0=229): - """Convert lat/lon/height data to grid data.""" - - n, e, d = pymap3d.geodetic2ned( - lat, lon, hgt, - lat0=lat0, lon0=lon0, h0=alt0) - - x, y, z = e, n, -d - - xi = np.linspace(-10000, 10000, 300) - yi = np.linspace(-10000, 10000, 300) - X, Y = np.meshgrid(xi, yi) - + +def calcSeaMask(hgt_array): + """Calc a masking to the sea. + + Note: + This code is uses empirical magic number, and should be adjusted if + grid sizes change. + """ + + hgt_u8 = (255 * (hgt_array - hgt_array.min()) / (hgt_array.max() - hgt_array.min())).astype(np.uint8) + + mask = (hgt_u8 > 7).astype(np.uint8)*255 + kernel_open = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3, 3)) + mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel_open) + kernel_close = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (16, 16)) + mask = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel_close) + mask[250:, 250:] = 255 + + return mask < 255 + + +def convertMapData(lat, lon, hgt, map_texture, lat0=32.775776, lon0=35.024963, alt0=229): + """Convert lat/lon/height data to grid data.""" + + n, e, d = pymap3d.geodetic2ned( + lat, lon, hgt, + lat0=lat0, lon0=lon0, h0=alt0) + + x, y, z = e, n, -d + + xi = np.linspace(-10000, 10000, 300) + yi = np.linspace(-10000, 10000, 300) + X, Y = np.meshgrid(xi, yi) + Z = ml.griddata(y.flatten(), x.flatten(), z.flatten(), yi, xi, interp='linear') R = ml.griddata(y.flatten(), x.flatten(), map_texture[..., 0].flatten(), yi, xi, interp='linear') G = ml.griddata(y.flatten(), x.flatten(), map_texture[..., 1].flatten(), yi, xi, interp='linear') diff --git a/README.md b/README.md index 8702455..e66795e 100644 --- a/README.md +++ b/README.md @@ -3,20 +3,39 @@ CameraNetwork Code for running and analyzing the Camera Network -Latest version can be downloaded from [bitbucket](http://bitbucket.org/amitibo/CameraNetwork_git). +~~Latest version can be downloaded from [bitbucket](http://bitbucket.org/amitibo/CameraNetwork_git).~~ + +[Installation Instructions](docs/source/install.rst) + +[Usage Instructions](docs/source/usage.rst) Documentation ------------- Documentation is provided using [sphinx](http://www.sphinx-doc.org/). -To compile the documentation: - +To compile the documentation:
+Make sure Sphinx is installed `pip install -U Sphinx` + +Navigate to document folder `cd docs`,
+then generate source files -
+Windows: + ```sh + sphinx-apidoc -f -o source ..\CameraNetwork + ``` + Linux: + ```sh + sphinx-apidoc -f -o source/ ../CameraNetwork + ``` + Finally, Create html document `make html`
+ or, for PDF: + ```sh + sudo apt-get install texlive-latex-recommended texlive-fonts-recommended texlive-latex-extra latexmk texlive-luatex texlive-xetex + ``` + then ```sh -> cd docs -> sphinx-apidoc -f -o source ..\CameraNetwork -> make html -> make latexpdf + make latexpdf ``` +To view the docs navigate to `/docs/build/latex/CameraNetwork.pdf` or run `/docs/build/html/index.html` Author ------ @@ -26,4 +45,4 @@ Amit Aides License ------- -Please see the LICENSE file for details on copying and usage. +Please see the [LICENSE](LICENSE.md) file for details on copying and usage. diff --git a/docs/make.bat b/docs/make.bat index e04c0b8..2a45dd8 100644 --- a/docs/make.bat +++ b/docs/make.bat @@ -1,281 +1,281 @@ -@ECHO OFF - -REM Command file for Sphinx documentation - -if "%SPHINXBUILD%" == "" ( - set SPHINXBUILD=sphinx-build -) -set BUILDDIR=build -set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% source -set I18NSPHINXOPTS=%SPHINXOPTS% source -if NOT "%PAPER%" == "" ( - set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% - set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS% -) - -if "%1" == "" goto help - -if "%1" == "help" ( - :help - echo.Please use `make ^` where ^ is one of - echo. html to make standalone HTML files - echo. dirhtml to make HTML files named index.html in directories - echo. singlehtml to make a single large HTML file - echo. pickle to make pickle files - echo. json to make JSON files - echo. htmlhelp to make HTML files and a HTML help project - echo. qthelp to make HTML files and a qthelp project - echo. devhelp to make HTML files and a Devhelp project - echo. epub to make an epub - echo. epub3 to make an epub3 - echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter - echo. text to make text files - echo. man to make manual pages - echo. texinfo to make Texinfo files - echo. gettext to make PO message catalogs - echo. changes to make an overview over all changed/added/deprecated items - echo. xml to make Docutils-native XML files - echo. pseudoxml to make pseudoxml-XML files for display purposes - echo. linkcheck to check all external links for integrity - echo. doctest to run all doctests embedded in the documentation if enabled - echo. coverage to run coverage check of the documentation if enabled - echo. dummy to check syntax errors of document sources - goto end -) - -if "%1" == "clean" ( - for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i - del /q /s %BUILDDIR%\* - goto end -) - - -REM Check if sphinx-build is available and fallback to Python version if any -%SPHINXBUILD% 1>NUL 2>NUL -if errorlevel 9009 goto sphinx_python -goto sphinx_ok - -:sphinx_python - -set SPHINXBUILD=python -m sphinx.__init__ -%SPHINXBUILD% 2> nul -if errorlevel 9009 ( - echo. - echo.The 'sphinx-build' command was not found. Make sure you have Sphinx - echo.installed, then set the SPHINXBUILD environment variable to point - echo.to the full path of the 'sphinx-build' executable. Alternatively you - echo.may add the Sphinx directory to PATH. - echo. - echo.If you don't have Sphinx installed, grab it from - echo.http://sphinx-doc.org/ - exit /b 1 -) - -:sphinx_ok - - -if "%1" == "html" ( - %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The HTML pages are in %BUILDDIR%/html. - goto end -) - -if "%1" == "dirhtml" ( - %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. - goto end -) - -if "%1" == "singlehtml" ( - %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. - goto end -) - -if "%1" == "pickle" ( - %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; now you can process the pickle files. - goto end -) - -if "%1" == "json" ( - %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; now you can process the JSON files. - goto end -) - -if "%1" == "htmlhelp" ( - %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; now you can run HTML Help Workshop with the ^ -.hhp project file in %BUILDDIR%/htmlhelp. - goto end -) - -if "%1" == "qthelp" ( - %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; now you can run "qcollectiongenerator" with the ^ -.qhcp project file in %BUILDDIR%/qthelp, like this: - echo.^> qcollectiongenerator %BUILDDIR%\qthelp\CameraNetwork.qhcp - echo.To view the help file: - echo.^> assistant -collectionFile %BUILDDIR%\qthelp\CameraNetwork.ghc - goto end -) - -if "%1" == "devhelp" ( - %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. - goto end -) - -if "%1" == "epub" ( - %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The epub file is in %BUILDDIR%/epub. - goto end -) - -if "%1" == "epub3" ( - %SPHINXBUILD% -b epub3 %ALLSPHINXOPTS% %BUILDDIR%/epub3 - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The epub3 file is in %BUILDDIR%/epub3. - goto end -) - -if "%1" == "latex" ( - %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. - goto end -) - -if "%1" == "latexpdf" ( - %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex - cd %BUILDDIR%/latex - make all-pdf - cd %~dp0 - echo. - echo.Build finished; the PDF files are in %BUILDDIR%/latex. - goto end -) - -if "%1" == "latexpdfja" ( - %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex - cd %BUILDDIR%/latex - make all-pdf-ja - cd %~dp0 - echo. - echo.Build finished; the PDF files are in %BUILDDIR%/latex. - goto end -) - -if "%1" == "text" ( - %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The text files are in %BUILDDIR%/text. - goto end -) - -if "%1" == "man" ( - %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The manual pages are in %BUILDDIR%/man. - goto end -) - -if "%1" == "texinfo" ( - %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo. - goto end -) - -if "%1" == "gettext" ( - %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The message catalogs are in %BUILDDIR%/locale. - goto end -) - -if "%1" == "changes" ( - %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes - if errorlevel 1 exit /b 1 - echo. - echo.The overview file is in %BUILDDIR%/changes. - goto end -) - -if "%1" == "linkcheck" ( - %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck - if errorlevel 1 exit /b 1 - echo. - echo.Link check complete; look for any errors in the above output ^ -or in %BUILDDIR%/linkcheck/output.txt. - goto end -) - -if "%1" == "doctest" ( - %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest - if errorlevel 1 exit /b 1 - echo. - echo.Testing of doctests in the sources finished, look at the ^ -results in %BUILDDIR%/doctest/output.txt. - goto end -) - -if "%1" == "coverage" ( - %SPHINXBUILD% -b coverage %ALLSPHINXOPTS% %BUILDDIR%/coverage - if errorlevel 1 exit /b 1 - echo. - echo.Testing of coverage in the sources finished, look at the ^ -results in %BUILDDIR%/coverage/python.txt. - goto end -) - -if "%1" == "xml" ( - %SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The XML files are in %BUILDDIR%/xml. - goto end -) - -if "%1" == "pseudoxml" ( - %SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml. - goto end -) - -if "%1" == "dummy" ( - %SPHINXBUILD% -b dummy %ALLSPHINXOPTS% %BUILDDIR%/dummy - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. Dummy builder generates no files. - goto end -) - -:end +@ECHO OFF + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set BUILDDIR=build +set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% source +set I18NSPHINXOPTS=%SPHINXOPTS% source +if NOT "%PAPER%" == "" ( + set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% + set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS% +) + +if "%1" == "" goto help + +if "%1" == "help" ( + :help + echo.Please use `make ^` where ^ is one of + echo. html to make standalone HTML files + echo. dirhtml to make HTML files named index.html in directories + echo. singlehtml to make a single large HTML file + echo. pickle to make pickle files + echo. json to make JSON files + echo. htmlhelp to make HTML files and a HTML help project + echo. qthelp to make HTML files and a qthelp project + echo. devhelp to make HTML files and a Devhelp project + echo. epub to make an epub + echo. epub3 to make an epub3 + echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter + echo. text to make text files + echo. man to make manual pages + echo. texinfo to make Texinfo files + echo. gettext to make PO message catalogs + echo. changes to make an overview over all changed/added/deprecated items + echo. xml to make Docutils-native XML files + echo. pseudoxml to make pseudoxml-XML files for display purposes + echo. linkcheck to check all external links for integrity + echo. doctest to run all doctests embedded in the documentation if enabled + echo. coverage to run coverage check of the documentation if enabled + echo. dummy to check syntax errors of document sources + goto end +) + +if "%1" == "clean" ( + for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i + del /q /s %BUILDDIR%\* + goto end +) + + +REM Check if sphinx-build is available and fallback to Python version if any +%SPHINXBUILD% 1>NUL 2>NUL +if errorlevel 9009 goto sphinx_python +goto sphinx_ok + +:sphinx_python + +set SPHINXBUILD=python -m sphinx.__init__ +%SPHINXBUILD% 2> nul +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +:sphinx_ok + + +if "%1" == "html" ( + %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/html. + goto end +) + +if "%1" == "dirhtml" ( + %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. + goto end +) + +if "%1" == "singlehtml" ( + %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. + goto end +) + +if "%1" == "pickle" ( + %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can process the pickle files. + goto end +) + +if "%1" == "json" ( + %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can process the JSON files. + goto end +) + +if "%1" == "htmlhelp" ( + %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can run HTML Help Workshop with the ^ +.hhp project file in %BUILDDIR%/htmlhelp. + goto end +) + +if "%1" == "qthelp" ( + %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can run "qcollectiongenerator" with the ^ +.qhcp project file in %BUILDDIR%/qthelp, like this: + echo.^> qcollectiongenerator %BUILDDIR%\qthelp\CameraNetwork.qhcp + echo.To view the help file: + echo.^> assistant -collectionFile %BUILDDIR%\qthelp\CameraNetwork.ghc + goto end +) + +if "%1" == "devhelp" ( + %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. + goto end +) + +if "%1" == "epub" ( + %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The epub file is in %BUILDDIR%/epub. + goto end +) + +if "%1" == "epub3" ( + %SPHINXBUILD% -b epub3 %ALLSPHINXOPTS% %BUILDDIR%/epub3 + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The epub3 file is in %BUILDDIR%/epub3. + goto end +) + +if "%1" == "latex" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "latexpdf" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + cd %BUILDDIR%/latex + make all-pdf + cd %~dp0 + echo. + echo.Build finished; the PDF files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "latexpdfja" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + cd %BUILDDIR%/latex + make all-pdf-ja + cd %~dp0 + echo. + echo.Build finished; the PDF files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "text" ( + %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The text files are in %BUILDDIR%/text. + goto end +) + +if "%1" == "man" ( + %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The manual pages are in %BUILDDIR%/man. + goto end +) + +if "%1" == "texinfo" ( + %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo. + goto end +) + +if "%1" == "gettext" ( + %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The message catalogs are in %BUILDDIR%/locale. + goto end +) + +if "%1" == "changes" ( + %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes + if errorlevel 1 exit /b 1 + echo. + echo.The overview file is in %BUILDDIR%/changes. + goto end +) + +if "%1" == "linkcheck" ( + %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck + if errorlevel 1 exit /b 1 + echo. + echo.Link check complete; look for any errors in the above output ^ +or in %BUILDDIR%/linkcheck/output.txt. + goto end +) + +if "%1" == "doctest" ( + %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest + if errorlevel 1 exit /b 1 + echo. + echo.Testing of doctests in the sources finished, look at the ^ +results in %BUILDDIR%/doctest/output.txt. + goto end +) + +if "%1" == "coverage" ( + %SPHINXBUILD% -b coverage %ALLSPHINXOPTS% %BUILDDIR%/coverage + if errorlevel 1 exit /b 1 + echo. + echo.Testing of coverage in the sources finished, look at the ^ +results in %BUILDDIR%/coverage/python.txt. + goto end +) + +if "%1" == "xml" ( + %SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The XML files are in %BUILDDIR%/xml. + goto end +) + +if "%1" == "pseudoxml" ( + %SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml. + goto end +) + +if "%1" == "dummy" ( + %SPHINXBUILD% -b dummy %ALLSPHINXOPTS% %BUILDDIR%/dummy + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. Dummy builder generates no files. + goto end +) + +:end diff --git a/docs/source/conf.py b/docs/source/conf.py index 5a44e0c..0c9d27f 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -33,446 +33,446 @@ ## LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE ## OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ## ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.## -# -*- coding: utf-8 -*- -# -# Camera Network documentation build configuration file, created by -# sphinx-quickstart on Tue Dec 27 09:54:15 2016. -# -# This file is execfile()d with the current directory set to its -# containing dir. -# -# Note that not all possible configuration values are present in this -# autogenerated file. -# -# All configuration values have a default; values that are commented out -# serve to show the default. - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -# -import os -import sys -sys.path.insert(0, os.path.abspath('../..')) -sys.path.insert(0, os.path.abspath('../../scripts')) -sys.path.insert(0, os.path.abspath('../../scripts_calibrate')) -sys.path.insert(0, os.path.abspath('../../scripts_client')) -sys.path.insert(0, os.path.abspath('../../scripts_proxy')) -sys.path.insert(0, os.path.abspath('../../scripts_sunphotometer')) - -# -- General configuration ------------------------------------------------ - -# If your documentation needs a minimal Sphinx version, state it here. -# -# needs_sphinx = '1.0' - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. -extensions = [ - 'numfig', - 'sphinx.ext.autodoc', - 'sphinx.ext.intersphinx', - 'sphinx.ext.todo', - 'sphinx.ext.coverage', - 'sphinx.ext.mathjax', - 'sphinx.ext.ifconfig', - 'sphinx.ext.viewcode', - 'sphinx.ext.githubpages', - 'sphinx.ext.napoleon' -] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# The suffix(es) of source filenames. -# You can specify multiple suffix as a list of string: -# -# source_suffix = ['.rst', '.md'] -source_suffix = '.rst' - -# The encoding of source files. -# -# source_encoding = 'utf-8-sig' - -# The master toctree document. -master_doc = 'index' - -# General information about the project. -project = u'Camera Network' -copyright = u'2016, Amit Aides' -author = u'Amit Aides' - -# The version info for the project you're documenting, acts as replacement for -# |version| and |release|, also used in various other places throughout the -# built documents. -# -# The short X.Y version. -version = u'1.0.0' -# The full version, including alpha/beta/rc tags. -release = u'1.0.0' - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -# -# This is also used if you do content translation via gettext catalogs. -# Usually you set "language" from the command line for these cases. -language = None - -# There are two options for replacing |today|: either, you set today to some -# non-false value, then it is used: -# -# today = '' -# -# Else, today_fmt is used as the format for a strftime call. -# -# today_fmt = '%B %d, %Y' - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -# This patterns also effect to html_static_path and html_extra_path -exclude_patterns = [] - -# The reST default role (used for this markup: `text`) to use for all -# documents. -# -# default_role = None - -# If true, '()' will be appended to :func: etc. cross-reference text. -# -# add_function_parentheses = True - -# If true, the current module name will be prepended to all description -# unit titles (such as .. function::). -# -# add_module_names = True - -# If true, sectionauthor and moduleauthor directives will be shown in the -# output. They are ignored by default. -# -# show_authors = False - -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' - -# A list of ignored prefixes for module index sorting. -# modindex_common_prefix = [] - -# If true, keep warnings as "system message" paragraphs in the built documents. -# keep_warnings = False - -# If true, `todo` and `todoList` produce output, else they produce nothing. -todo_include_todos = True - - -# -- Options for HTML output ---------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -# -html_theme = 'alabaster' - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -# -# html_theme_options = {} - -# Add any paths that contain custom themes here, relative to this directory. -# html_theme_path = [] - -# The name for this set of Sphinx documents. -# " v documentation" by default. -# -# html_title = u'Camera Network v1.0.0' - -# A shorter title for the navigation bar. Default is the same as html_title. -# -# html_short_title = None - -# The name of an image file (relative to this directory) to place at the top -# of the sidebar. -# -# html_logo = None - -# The name of an image file (relative to this directory) to use as a favicon of -# the docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 -# pixels large. -# -# html_favicon = None - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] - -# Add any extra paths that contain custom files (such as robots.txt or -# .htaccess) here, relative to this directory. These files are copied -# directly to the root of the documentation. -# -# html_extra_path = [] - -# If not None, a 'Last updated on:' timestamp is inserted at every page -# bottom, using the given strftime format. -# The empty string is equivalent to '%b %d, %Y'. -# -# html_last_updated_fmt = None - -# If true, SmartyPants will be used to convert quotes and dashes to -# typographically correct entities. -# -# html_use_smartypants = True - -# Custom sidebar templates, maps document names to template names. -# -# html_sidebars = {} - -# Additional templates that should be rendered to pages, maps page names to -# template names. -# -# html_additional_pages = {} - -# If false, no module index is generated. -# -# html_domain_indices = True - -# If false, no index is generated. -# -# html_use_index = True - -# If true, the index is split into individual pages for each letter. -# -# html_split_index = False - -# If true, links to the reST sources are added to the pages. -# -# html_show_sourcelink = True - -# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. -# -# html_show_sphinx = True - -# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. -# -# html_show_copyright = True - -# If true, an OpenSearch description file will be output, and all pages will -# contain a tag referring to it. The value of this option must be the -# base URL from which the finished HTML is served. -# -# html_use_opensearch = '' - -# This is the file name suffix for HTML files (e.g. ".xhtml"). -# html_file_suffix = None - -# Language to be used for generating the HTML full-text search index. -# Sphinx supports the following languages: -# 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja' -# 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr', 'zh' -# -# html_search_language = 'en' - -# A dictionary with options for the search language support, empty by default. -# 'ja' uses this config value. -# 'zh' user can custom change `jieba` dictionary path. -# -# html_search_options = {'type': 'default'} - -# The name of a javascript file (relative to the configuration directory) that -# implements a search results scorer. If empty, the default will be used. -# -# html_search_scorer = 'scorer.js' - -# Output file base name for HTML help builder. -htmlhelp_basename = 'CameraNetworkdoc' - -# -- Options for LaTeX output --------------------------------------------- - -latex_elements = { - # The paper size ('letterpaper' or 'a4paper'). - # - 'papersize': 'a4paper', - - # The font size ('10pt', '11pt' or '12pt'). - # - 'pointsize': '10pt', - - # Additional stuff for the LaTeX preamble. - # - # 'preamble': '', - - # Latex figure (float) alignment - # - 'figure_align': 'htbp', -} - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, -# author, documentclass [howto, manual, or own class]). -latex_documents = [ - (master_doc, 'CameraNetwork.tex', u'Camera Network Documentation', - u'Amit Aides', 'manual'), -] - -# The name of an image file (relative to this directory) to place at the top of -# the title page. -# -# latex_logo = None - -# For "manual" documents, if this is true, then toplevel headings are parts, -# not chapters. -# -# latex_use_parts = False - -# If true, show page references after internal links. -# -# latex_show_pagerefs = False - -# If true, show URL addresses after external links. -# -# latex_show_urls = False - -# Documents to append as an appendix to all manuals. -# -# latex_appendices = [] - -# It false, will not define \strong, \code, itleref, \crossref ... but only -# \sphinxstrong, ..., \sphinxtitleref, ... To help avoid clash with user added -# packages. -# -# latex_keep_old_macro_names = True - -# If false, no module index is generated. -# -# latex_domain_indices = True - - -# -- Options for manual page output --------------------------------------- - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [ - (master_doc, 'cameranetwork', u'Camera Network Documentation', - [author], 1) -] - -# If true, show URL addresses after external links. -# -# man_show_urls = False - - -# -- Options for Texinfo output ------------------------------------------- - -# Grouping the document tree into Texinfo files. List of tuples -# (source start file, target name, title, author, -# dir menu entry, description, category) -texinfo_documents = [ - (master_doc, 'CameraNetwork', u'Camera Network Documentation', - author, 'CameraNetwork', 'One line description of project.', - 'Miscellaneous'), -] - -# Documents to append as an appendix to all manuals. -# -# texinfo_appendices = [] - -# If false, no module index is generated. -# -# texinfo_domain_indices = True - -# How to display URL addresses: 'footnote', 'no', or 'inline'. -# -# texinfo_show_urls = 'footnote' - -# If true, do not generate a @detailmenu in the "Top" node's menu. -# -# texinfo_no_detailmenu = False - - -# -- Options for Epub output ---------------------------------------------- - -# Bibliographic Dublin Core info. -epub_title = project -epub_author = author -epub_publisher = author -epub_copyright = copyright - -# The basename for the epub file. It defaults to the project name. -# epub_basename = project - -# The HTML theme for the epub output. Since the default themes are not -# optimized for small screen space, using the same theme for HTML and epub -# output is usually not wise. This defaults to 'epub', a theme designed to save -# visual space. -# -# epub_theme = 'epub' - -# The language of the text. It defaults to the language option -# or 'en' if the language is not set. -# -# epub_language = '' - -# The scheme of the identifier. Typical schemes are ISBN or URL. -# epub_scheme = '' - -# The unique identifier of the text. This can be a ISBN number -# or the project homepage. -# -# epub_identifier = '' - -# A unique identification for the text. -# -# epub_uid = '' - -# A tuple containing the cover image and cover page html template filenames. -# -# epub_cover = () - -# A sequence of (type, uri, title) tuples for the guide element of content.opf. -# -# epub_guide = () - -# HTML files that should be inserted before the pages created by sphinx. -# The format is a list of tuples containing the path and title. -# -# epub_pre_files = [] - -# HTML files that should be inserted after the pages created by sphinx. -# The format is a list of tuples containing the path and title. -# -# epub_post_files = [] - -# A list of files that should not be packed into the epub file. -epub_exclude_files = ['search.html'] - -# The depth of the table of contents in toc.ncx. -# -# epub_tocdepth = 3 - -# Allow duplicate toc entries. -# -# epub_tocdup = True - -# Choose between 'default' and 'includehidden'. -# -# epub_tocscope = 'default' - -# Fix unsupported image types using the Pillow. -# -# epub_fix_images = False - -# Scale large images. -# -# epub_max_image_width = 0 - -# How to display URL addresses: 'footnote', 'no', or 'inline'. -# -# epub_show_urls = 'inline' - -# If false, no index is generated. -# -# epub_use_index = True - - -# Example configuration for intersphinx: refer to the Python standard library. -intersphinx_mapping = {'https://docs.python.org/': None} +# -*- coding: utf-8 -*- +# +# Camera Network documentation build configuration file, created by +# sphinx-quickstart on Tue Dec 27 09:54:15 2016. +# +# This file is execfile()d with the current directory set to its +# containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +import os +import sys +sys.path.insert(0, os.path.abspath('../..')) +sys.path.insert(0, os.path.abspath('../../scripts')) +sys.path.insert(0, os.path.abspath('../../scripts_calibrate')) +sys.path.insert(0, os.path.abspath('../../scripts_client')) +sys.path.insert(0, os.path.abspath('../../scripts_proxy')) +sys.path.insert(0, os.path.abspath('../../scripts_sunphotometer')) + +# -- General configuration ------------------------------------------------ + +# If your documentation needs a minimal Sphinx version, state it here. +# +# needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ +# 'numfig', + 'sphinx.ext.autodoc', + 'sphinx.ext.intersphinx', + 'sphinx.ext.todo', + 'sphinx.ext.coverage', + 'sphinx.ext.mathjax', + 'sphinx.ext.ifconfig', + 'sphinx.ext.viewcode', + 'sphinx.ext.githubpages', + 'sphinx.ext.napoleon' +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# +# source_suffix = ['.rst', '.md'] +source_suffix = '.rst' + +# The encoding of source files. +# +# source_encoding = 'utf-8-sig' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'Camera Network' +copyright = u'2016, Amit Aides' +author = u'Amit Aides' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The short X.Y version. +version = u'1.0.0' +# The full version, including alpha/beta/rc tags. +release = u'1.0.0' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = None + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +# +# today = '' +# +# Else, today_fmt is used as the format for a strftime call. +# +# today_fmt = '%B %d, %Y' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This patterns also effect to html_static_path and html_extra_path +exclude_patterns = [] + +# The reST default role (used for this markup: `text`) to use for all +# documents. +# +# default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +# +# add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +# +# add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +# +# show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# A list of ignored prefixes for module index sorting. +# modindex_common_prefix = [] + +# If true, keep warnings as "system message" paragraphs in the built documents. +# keep_warnings = False + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = True + + +# -- Options for HTML output ---------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = 'alabaster' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# +# html_theme_options = {} + +# Add any paths that contain custom themes here, relative to this directory. +# html_theme_path = [] + +# The name for this set of Sphinx documents. +# " v documentation" by default. +# +# html_title = u'Camera Network v1.0.0' + +# A shorter title for the navigation bar. Default is the same as html_title. +# +# html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +# +# html_logo = None + +# The name of an image file (relative to this directory) to use as a favicon of +# the docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +# +# html_favicon = None + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# Add any extra paths that contain custom files (such as robots.txt or +# .htaccess) here, relative to this directory. These files are copied +# directly to the root of the documentation. +# +# html_extra_path = [] + +# If not None, a 'Last updated on:' timestamp is inserted at every page +# bottom, using the given strftime format. +# The empty string is equivalent to '%b %d, %Y'. +# +# html_last_updated_fmt = None + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +# +# html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +# +# html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +# +# html_additional_pages = {} + +# If false, no module index is generated. +# +# html_domain_indices = True + +# If false, no index is generated. +# +# html_use_index = True + +# If true, the index is split into individual pages for each letter. +# +# html_split_index = False + +# If true, links to the reST sources are added to the pages. +# +# html_show_sourcelink = True + +# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. +# +# html_show_sphinx = True + +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. +# +# html_show_copyright = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +# +# html_use_opensearch = '' + +# This is the file name suffix for HTML files (e.g. ".xhtml"). +# html_file_suffix = None + +# Language to be used for generating the HTML full-text search index. +# Sphinx supports the following languages: +# 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja' +# 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr', 'zh' +# +# html_search_language = 'en' + +# A dictionary with options for the search language support, empty by default. +# 'ja' uses this config value. +# 'zh' user can custom change `jieba` dictionary path. +# +# html_search_options = {'type': 'default'} + +# The name of a javascript file (relative to the configuration directory) that +# implements a search results scorer. If empty, the default will be used. +# +# html_search_scorer = 'scorer.js' + +# Output file base name for HTML help builder. +htmlhelp_basename = 'CameraNetworkdoc' + +# -- Options for LaTeX output --------------------------------------------- + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + # + 'papersize': 'a4paper', + + # The font size ('10pt', '11pt' or '12pt'). + # + 'pointsize': '10pt', + + # Additional stuff for the LaTeX preamble. + # + # 'preamble': '', + + # Latex figure (float) alignment + # + 'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'CameraNetwork.tex', u'Camera Network Documentation', + u'Amit Aides', 'manual'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +# +# latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +# +# latex_use_parts = False + +# If true, show page references after internal links. +# +# latex_show_pagerefs = False + +# If true, show URL addresses after external links. +# +# latex_show_urls = False + +# Documents to append as an appendix to all manuals. +# +# latex_appendices = [] + +# It false, will not define \strong, \code, itleref, \crossref ... but only +# \sphinxstrong, ..., \sphinxtitleref, ... To help avoid clash with user added +# packages. +# +# latex_keep_old_macro_names = True + +# If false, no module index is generated. +# +# latex_domain_indices = True + + +# -- Options for manual page output --------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + (master_doc, 'cameranetwork', u'Camera Network Documentation', + [author], 1) +] + +# If true, show URL addresses after external links. +# +# man_show_urls = False + + +# -- Options for Texinfo output ------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'CameraNetwork', u'Camera Network Documentation', + author, 'CameraNetwork', 'One line description of project.', + 'Miscellaneous'), +] + +# Documents to append as an appendix to all manuals. +# +# texinfo_appendices = [] + +# If false, no module index is generated. +# +# texinfo_domain_indices = True + +# How to display URL addresses: 'footnote', 'no', or 'inline'. +# +# texinfo_show_urls = 'footnote' + +# If true, do not generate a @detailmenu in the "Top" node's menu. +# +# texinfo_no_detailmenu = False + + +# -- Options for Epub output ---------------------------------------------- + +# Bibliographic Dublin Core info. +epub_title = project +epub_author = author +epub_publisher = author +epub_copyright = copyright + +# The basename for the epub file. It defaults to the project name. +# epub_basename = project + +# The HTML theme for the epub output. Since the default themes are not +# optimized for small screen space, using the same theme for HTML and epub +# output is usually not wise. This defaults to 'epub', a theme designed to save +# visual space. +# +# epub_theme = 'epub' + +# The language of the text. It defaults to the language option +# or 'en' if the language is not set. +# +# epub_language = '' + +# The scheme of the identifier. Typical schemes are ISBN or URL. +# epub_scheme = '' + +# The unique identifier of the text. This can be a ISBN number +# or the project homepage. +# +# epub_identifier = '' + +# A unique identification for the text. +# +# epub_uid = '' + +# A tuple containing the cover image and cover page html template filenames. +# +# epub_cover = () + +# A sequence of (type, uri, title) tuples for the guide element of content.opf. +# +# epub_guide = () + +# HTML files that should be inserted before the pages created by sphinx. +# The format is a list of tuples containing the path and title. +# +# epub_pre_files = [] + +# HTML files that should be inserted after the pages created by sphinx. +# The format is a list of tuples containing the path and title. +# +# epub_post_files = [] + +# A list of files that should not be packed into the epub file. +epub_exclude_files = ['search.html'] + +# The depth of the table of contents in toc.ncx. +# +# epub_tocdepth = 3 + +# Allow duplicate toc entries. +# +# epub_tocdup = True + +# Choose between 'default' and 'includehidden'. +# +# epub_tocscope = 'default' + +# Fix unsupported image types using the Pillow. +# +# epub_fix_images = False + +# Scale large images. +# +# epub_max_image_width = 0 + +# How to display URL addresses: 'footnote', 'no', or 'inline'. +# +# epub_show_urls = 'inline' + +# If false, no index is generated. +# +# epub_use_index = True + + +# Example configuration for intersphinx: refer to the Python standard library. +intersphinx_mapping = {'https://docs.python.org/': None} diff --git a/docs/source/images/GUI_main_status.png b/docs/source/images/GUI_main_status.png new file mode 100644 index 0000000000000000000000000000000000000000..0d1bee343a9dea283bcd5662036d75fc387d20be GIT binary patch literal 96776 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%0AgB%vHphl=I@dYUmDn`f&Vl6D)wsXvs#t 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�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

1%Z|g$GJAAQ(9e>=_mg*_d4_4i-R)7Cr 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. - -Installing the Server -===================== - -The server software is run on an `Odroid U3 `_ -as at the time of selection it offered a unique balance between capabilites and cost. Nonetheless it should be straight -forward to install the ``CameraNetwork`` pacakge and its prerequisites on other platforms like newer Oroids and even -on the RaspberrPi. - -In the following we detail the procedure of installing the required prerequisites and main pacakge. Note that -once the package is installed on one computer, it is much more time effective to create an image of the Odroid -memory card and duplicate it as needed. -``TODO Add instructions how to create and install Odroid Image`` - - -Prerequisites -------------- - -To use *CameraNetwork* several software package are needed. This can be installed using the following -commands. Copy paste these to a commandline:: - - > sudo apt-get install python-pip git mercurial screen autossh - > sudo pip install paramiko - > sudo pip install cython - > sudo pip install pyzmq --install-option="--zmq=bundled" - > sudo pip install tornado - > sudo pip install futures - > sudo apt-get install python-numpy python-scipy python-matplotlib - > sudo pip install beautifulsoup4 - > sudo pip install sklearn - > sudo pip install skimage - > sudo pip install ephem - > sudo pip install pandas - > sudo pip install pymap3d - > sudo pip install ipython - > sudo pip install pyfirmata - > sudu pip install joblib - -To install opencv3 follow a tutorial relevant to your system, e.g. on Odroid XU4 the following tutorial -was usefull `opencvsh_for_ubuntu_mate `_. - -Install the python wrappers to the ids SDK:: - - > mkdir code - > cd code - > git clone https://github.com/amitibo/ids.git - > cd ids - > sudo python setup.py install - -Install the pyfisheye module:: - - > cd ~/code - > hg clone https://amitibo@bitbucket.org/amitibo/pyfisheye - > cd pyfisheye - > sudo python setup.py install - -Some platforms might require the installation of modem software:: - - > sudo apt-get install network-manager - > sudo apt-get install network-manager-gnome - -The first instal *nmcli* (used for activating the connection). The second intalls *nmcli-connection-editor* -used for defining the mobile network connection. - -Install a recent version of usb_modeswitch (required on raspberryPi). Follow the `usb_modeswitch tutorial `_. -To compile the above code you will need to install the *libusb-1* dev files:: - - > sudo apt-get install libusb-1.0-0-dev - -Prepare a device reference file from the following `device reference file `_ and run -it using the command:: - - > sudo usb_modeswitch -c - -CameraNetwork Installation --------------------------- - -Download and install the package:: - - > git clone https://amitibo@bitbucket.org/amitibo/cameranetwork_git.git cameranetwork - > cd cameranetwork - > python setup.py develop --user - -.. note:: - - The first command downloads a *slim* version of the code that only includes the *Server* components. - -To make the system start automatically at boot time, we use the *rc.local* script:: - - > sudo cp cameranetwork/scripts/rc.local/rc.local /etc/rc.local - -Run the camera setup script to setup the camera environment. - - > setup_camera.py - -You will be asked for a camera id. Enter a unique camera id number. - -Installing the Proxy -==================== - -Currently the code assumes that the proxy server is run on an ec2 instance. -Installation on the proxy follows the same steps of installation on the -client. - -To run the proxy program, do: - - > start_proxy.py - - -Installing the Client -===================== - -It is recommended to install python using the `Anaconda `_ distribution. -Install the ``CameraNetwork`` package:: - - > git clone https://amitibo@bitbucket.org/amitibo/cameranetwork_git.git cameranetwork - > cd cameranetwork - > python setup.py develop --user - -Installing the Calibration Station -================================== - -It is recommended to install python using the `Anaconda `_ distribution. -Install the ``CameraNetwork`` package:: - - > git clone https://amitibo@bitbucket.org/amitibo/cameranetwork_git.git cameranetwork - > cd cameranetwork - > python setup.py develop --user +.. highlight::sh + +************ +Installation +************ + +.. contents:: Table of Contents + +Introduction +============ + +The ``CameraNetwork`` system is made of three logical parts: + +#. *Server*: The camera unit. The server performs the actual measuremetns. +#. *Client*: A program that enables remote control of servers. +#. *Proxy*: A program that bridges and manages the communication between the *Servers* and *Clients*. + +There can be multiple *Servers* and *Clients* but only one *proxy*. + +The ``CameraNetwork`` pacakge contains the code for both the *Server*, *Client* and *Proxy* subsystems. +This simplifies the deployment and enables code reuse. The installation procedures is similar for the +three components but differs due to the different platforms. + +The ``CameraNetwork`` is implemented completely in `Python _`. + +Installing the Server +===================== + +The server software is run on an `Odroid U3 `_ +as at the time of selection it offered a unique balance between capabilites and cost. Nonetheless it should be straight +forward to install the ``CameraNetwork`` pacakge and its prerequisites on other platforms like newer Oroids and even +on the RaspberrPi. + +In the following we detail the procedure of installing the required prerequisites and main pacakge. Note that +once the package is installed on one compture, it is much more time effective to create an image of the Odroid +memory card and duplicate it as needed. + +Prerequisites +------------- + +To use *CameraNetwork* several software package are needed. This can be installed using the following +commands. Copy paste these to a commandline:: + + > sudo apt-get install python-pip git mercurial screen autossh + > sudo pip install paramiko + > sudo pip install cython + > sudo pip install pyzmq --install-option="--zmq=bundled" + > sudo pip install tornado==4.5.3 + > sudo pip install futures + > sudo apt-get install python-numpy python-scipy python-matplotlib + > sudo pip install beautifulsoup4 + > sudo pip install sklearn + > sudo pip install skimage + > sudo pip install ephem + > sudo pip install pandas + > sudo pip install pymap3d + > sudo pip install ipython + > sudo pip install pyfirmata + > sudu pip install joblib + +To install opencv3 follow a tutorial relevant to your system, e.g. on Odroid XU4 the following tutorial +was usefull `opencvsh_for_ubuntu_mate `_. + +Install the python wrappers to the ids SDK:: + + > mkdir code + > cd code + > git clone https://github.com/amitibo/ids.git + > cd ids + > sudo python setup.py install + +Install the pyfisheye module:: + + > cd ~/code + > hg clone https://amitibo@bitbucket.org/amitibo/pyfisheye + > cd pyfisheye + > sudo python setup.py install + +Some platforms might require the installation of modem software:: + + > sudo apt-get install network-manager + > sudo apt-get install network-manager-gnome + +The first instal *nmcli* (used for activating the connection). The second intalls *nmcli-connection-editor* +used for defining the mobile network connection. + +Install a recent version of usb_modeswitch (required on raspberryPi). Follow the `usb_modeswitch tutorial `_. +To compile the above code you will need to install the *libusb-1* dev files:: + + > sudo apt-get install libusb-1.0-0-dev + +Prepare a device reference file from the following `device reference file `_ and run +it using the command:: + + > sudo usb_modeswitch -c + +CameraNetwork Installation +-------------------------- + +Download and install the package:: + + > git clone https://amitibo@bitbucket.org/amitibo/cameranetwork_git.git cameranetwork + > cd cameranetwork + > python setup.py develop --user + +.. note:: + + The first command downloads a *slim* version of the code that only includes the *Server* components. + +To make the system start automatically at boot time, we use the *rc.local* script:: + + > sudo cp cameranetwork/scripts/rc.local/rc.local /etc/rc.local + +Run the camera setup script to setup the camera environment. + + > setup_camera.py + +You will be asked for a camera id. Enter a unique camera id number. + +Installing the Proxy +==================== + +Currently the code assumes that the proxy server is run on an ec2 instance. +Installation on the proxy follows the same steps of installation on the +client. + +To run the proxy program, do: + + > start_proxy.py + + +Installing the Client +===================== + +It is recommended to install python using the `Anaconda `_ distribution. +Install the ``CameraNetwork`` package:: + + > git clone https://amitibo@bitbucket.org/amitibo/cameranetwork_git.git cameranetwork + > cd cameranetwork + > python setup.py develop --user + +Installing the Calibration Station +================================== + +It is recommended to install python using the `Anaconda `_ distribution. +Install the ``CameraNetwork`` package:: + + > git clone https://amitibo@bitbucket.org/amitibo/cameranetwork_git.git cameranetwork + > cd cameranetwork + > python setup.py develop --user + + + +Installation - NEW +===================== +#. Install conda. Tested on conda 4.7.11 +#. Clone the cameranetwork package:: + + git clone https://github.com/Addalin/cameranetwork.git +#. Navigate to it:: + + cd cameranetwork +#. Install additional modules:: + + pip install ephem + conda install -c anaconda pil + conda install -c anaconda enaml + conda install -c anaconda traits pyqtgraph pyopengl + conda install -c anaconda vtk + pip install mayavi +#. Clone, navigate to and install traits-enaml:: + + git clone https://github.com/enthought/traits-enaml.git --branch update-data-frame-table + cd traits-enaml + python setup.py install + +#. Install the cameranetwork package + #. Navigate back to cameranetwork:: + + cd .. + #. Install the cameranetwork package:: + + python setup.py develop --user + + .. note:: + + without --user it installs the scripts for all users (Windows: C:\ProgramData\Anaconda2\Scripts) diff --git a/docs/source/usage.rst b/docs/source/usage.rst index 28e11ef..62b3310 100644 --- a/docs/source/usage.rst +++ b/docs/source/usage.rst @@ -1,2 +1,72 @@ -Using the Camera Network Package -================================ \ No newline at end of file +******************************** +Using the Camera Network Package +******************************** + +.. contents:: Table of Contents + + +Client +====== +After successful installation, +start the Client GUI by navigating to:: + + cd cameranetwork/scripts_client + +then run ``python camera_client.py`` + +You should now see + +.. image:: images/GUI_on_start.png + +after pressing on servers, you should see all connected cameras, in this case camera id 236. + +.. image:: images/GUI_servers_with_camera.png + +pressing on the camera ID should lead to the camera interface screen + +.. image:: images/GUI_main_status.png + + +Camera (server) +=============== +There are options to connect to the camera + +#. Via Serial connection + +#. Via SSH + +#. Via GUI (as mentioned in the client section) + + +Proxy +===== +To connect to the proxy +------------------------- +``sudo ssh -i ubuntu@`` + +.. note:: + ``sudo chmod 400 `` + if encounter permission error + +.. note:: + ** is the path and name of the proxy's private key + ** is defined in *global_settings.py*. Currently *3.123.49.101* + +If this is the initial setup of the proxy server:: + + python ./code/cameranetwork/scripts_proxy/start_proxy.py --log_level debug + + + +Noticable stuff +--------------- +*tunnel_port_.txt* stores the odroid's password and tunnel_port (random int between 20,000 and 30,000). + +*/proxy_logs/cameralog__proxy.txt* is a log. +Mainly shows Heartbeats from connected cameras and notification of message transmissions to/from the client. + +Useful commands +--------------- +- ``ps -ef | grep python`` to view running python processes (should see start_proxy.py!) +- Press ctrl+a then ctrl+d to detach the *start_proxy.py* from the terminal +- ``screen -ls`` to see detached processes. then``screen -r `` to bring it back. diff --git a/scripts/drone_camera.py b/scripts/drone_camera.py index 4deea5f..d2aad7b 100644 --- a/scripts/drone_camera.py +++ b/scripts/drone_camera.py @@ -35,7 +35,7 @@ ## OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ## ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.## """ -This script statrts the camera of the drone in a loop. +This script starts the camera of the drone in a loop. """ #from droneapi.lib import VehicleMode From f632a06c5313120c807f1e01baf68632ec3337af Mon Sep 17 00:00:00 2001 From: Omer S Date: Mon, 16 Sep 2019 11:53:55 +0300 Subject: [PATCH 08/90] Shubi (#21) * sphinx fix WIP * Update drone_camera.py * Update README.md * Update install.rst traits-enaml clone brande update-frame-table to fix a bug * Update conf.py Workaround for #9 * Update install.rst * Added images for docs, tmp solution for linux/windows map file path * Update usage.rst Added TOC * Update install.rst * global setting cleanup * controller typo fixes and format * Non-critical changes * client.py typo fix * fixes issue #4 Uncomment (and add file) if transformations is required * Closes #9 * closes #12 * Delete Makefile * Delete make.bat * Update install.rst * calibration.py typo fixes --- .gitignore | 210 + .idea/.gitignore | 3 + CameraNetwork/__init__.py | 20 +- CameraNetwork/calibration.py | 35 +- CameraNetwork/client.py | 17 +- CameraNetwork/controller.py | 272 +- CameraNetwork/global_settings.py | 94 +- CameraNetwork/mdp/__init__.py | 1 + CameraNetwork/server.py | 2 +- CameraNetwork/transformation_matrices.py | 3838 ++++++++--------- CameraNetwork/visualization.py | 15 +- docs/Makefile | 224 +- docs/make.bat | 17 + docs/source/camera.rst | 3 + docs/source/conf.py | 8 +- docs/source/index.rst | 10 +- docs/source/install.rst | 13 + docs/source/usage.rst | 2 + playground/atom_pyqtgraph.py | 6 +- .../analyze_vignetting_measurements.py | 258 +- scripts_calibrate/calibrate_camera.py | 8 +- 21 files changed, 2556 insertions(+), 2500 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 docs/source/camera.rst diff --git a/.gitignore b/.gitignore index c1ba82d..43f7914 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,213 @@ Default*Settings cameranetwork.wpr cameranetwork.wpu +### VirtualEnv template +# Virtualenv +# http://iamzed.com/2009/05/07/a-primer-on-virtualenv/ +.Python +[Bb]in +[Ii]nclude +[Ll]ib +[Ll]ib64 +[Ll]ocal +[Ss]cripts +pyvenv.cfg +.venv +pip-selfcheck.json + +### JetBrains template +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +### Python template +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +.python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# celery beat schedule file +celerybeat-schedule + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..0e40fe8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ + +# Default ignored files +/workspace.xml \ No newline at end of file diff --git a/CameraNetwork/__init__.py b/CameraNetwork/__init__.py index af6284e..6bc5195 100644 --- a/CameraNetwork/__init__.py +++ b/CameraNetwork/__init__.py @@ -33,12 +33,14 @@ ## LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE ## OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ## ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.## -from CameraNetwork.utils import * -from CameraNetwork.internet import * -from CameraNetwork.client import * -from CameraNetwork.calibration import * -from CameraNetwork.hg import * -import CameraNetwork.mdp as mdp -import CameraNetwork.image_utils as image_utils -import CameraNetwork.integral_sphere as integral_sphere -import CameraNetwork.radiosonde as radiosonde \ No newline at end of file + + +from CameraNetwork.utils import * +from CameraNetwork.internet import * +from CameraNetwork.client import * +from CameraNetwork.calibration import * +from CameraNetwork.hg import * +import CameraNetwork.mdp as mdp +import CameraNetwork.image_utils as image_utils +import CameraNetwork.integral_sphere as integral_sphere +import CameraNetwork.radiosonde as radiosonde diff --git a/CameraNetwork/calibration.py b/CameraNetwork/calibration.py index 67332dd..6788930 100644 --- a/CameraNetwork/calibration.py +++ b/CameraNetwork/calibration.py @@ -33,10 +33,12 @@ ## LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE ## OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ## ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.## + """ Utilities used in the process of calibration. """ +from __future__ import print_function from __future__ import division from CameraNetwork.image_utils import raw2RGB, RGB2raw import cPickle @@ -56,19 +58,19 @@ READY_REPLY = 'READY' -class Gimbal( object ): +class Gimbal(object): """Calibration Gimbal - This class encapsulates the use of the Caliration Gimbal. During + This class encapsulates the use of the Calibration Gimbal. During vignetting calibration, a camera is connected to the gimbal and placed - infront of a light source. The Gimbal rotates the camera in all directions. + in front of a light source. The Gimbal rotates the camera in all directions. This way the spatial response of the camera (vignetting) is captured. Args: com (str, optional): The serial port of the Arduino that controls the gimbal. baudrate (int, optional): Baud rate of serial port. - timeout (int, optional): timeout for tryingto connect to the Arduino. + timeout (int, optional): timeout for trying to connect to the Arduino. Note: To use this class, one needs to first install the gimbal.ino file @@ -80,7 +82,7 @@ class Gimbal( object ): def __init__(self, com='COM13', baudrate=9600, timeout=20): import serial - self._port = serial.Serial(com, baudrate=baudrate, timeout = timeout) + self._port = serial.Serial(com, baudrate=baudrate, timeout=timeout) # # Wait for the motor to finish the reset move @@ -95,12 +97,11 @@ def _finalize(self): # Finalize the serial port. # try: - print self._port.read(size=1000) + print(self._port.read(size=1000)) self._port.close() except: pass - def _waitReady(self): """Wait for a ready reply from the arduino """ @@ -116,7 +117,6 @@ def __del__(self): self._finalize() - def _checkEcho(self, cmd): """Check the answer echo validity. @@ -140,12 +140,11 @@ def _sendCmd(self, cmd): """ - self._port.write( cmd ) + self._port.write(cmd) - self._checkEcho( cmd ) + self._checkEcho(cmd) #self._waitReady() - def flush(self): """Empty the input & output buffers """ @@ -161,7 +160,7 @@ def resetPosition(self): """ cmd = 'z\n' - self._sendCmd( cmd ) + self._sendCmd(cmd) def move(self, x, y): """Move to x, y position @@ -186,7 +185,7 @@ def move(self, x, y): y_str = ('0000' + str(y))[-4:] cmd = 'm'+x_str+y_str+'\n' - self._sendCmd( cmd ) + self._sendCmd(cmd) class GimbalCamera(object): @@ -232,7 +231,7 @@ def meanColor(c): Returns: Mean of non zero values in c. """ - nnz_total = (c>0).sum() + nnz_total = (c > 0).sum() if nnz_total == 0: return 0 @@ -259,7 +258,7 @@ def findSpot(img, threshold=5): # Calculate a spot mask. # kernel = np.ones((3, 3),np.uint8) - mask = (img>threshold) + mask = (img > threshold) mask = cv2.dilate(mask.astype(np.uint8), kernel) mask = cv2.erode(mask.astype(np.uint8), kernel, iterations=2) @@ -349,7 +348,7 @@ def calibrate(self, color_measurements): self._calcRatio() def _calcRatio(self): - """Calc the vignnetting ratios in each pixel of the image.""" + """Calc the vignetting ratios in each pixel of the image.""" # # The models were learnt for RGB (600x800) images therefore @@ -420,7 +419,7 @@ def processSpotImages(base_path, color_index=None): pass # - # Arrange the mesurements as a list of colors + # Arrange the measurements as a list of colors # measurements = zip(*measurements) @@ -455,7 +454,7 @@ def readMeasurements(base_path, *args, **kwds): # x, y, vals = zip(*data) measurements.append( - [(i/2, j/2, k[color_index]) for i, j, k in zip(x, y, vals) if i is not None] + [(i/2, j/2, k[color_index]) for i, j, k in zip(x, y, vals) if i is not None] ) vc = VignettingCalibration(*args, **kwds) diff --git a/CameraNetwork/client.py b/CameraNetwork/client.py index edfdd74..c3d5c23 100644 --- a/CameraNetwork/client.py +++ b/CameraNetwork/client.py @@ -49,6 +49,7 @@ import CameraNetwork.global_settings as gs from CameraNetwork.mdp import * +from CameraNetwork.mdp import MDP from CameraNetwork.server import Server from CameraNetwork.utils import extractImgArray @@ -134,7 +135,9 @@ def handle_server_failure(self, server): pass def handle_receive(self, msg_extra, service, status, cmd, args, kwds): - """Callback to handle receive. This is called only if there are no other callbacks to handle the message. Derived classes should override this method.""" + """Callback to handle receive. + This is called only if there are no other callbacks to handle the message. + Derived classes should override this method.""" raise Warning('Unattended message: ', str((status, cmd, args, kwds))) @@ -267,7 +270,7 @@ def __getattr__(self, name): """Dynamically create messages.""" if not hasattr(Server, 'handle_{}'.format(name)): - raise AttributeError("Unkown server command: {}".format(name)) + raise AttributeError("Unknown server command: {}".format(name)) # # Create sendmessage method. @@ -310,9 +313,9 @@ def __getitem__(self, servers_id): servers_id = [servers_id] unknown_servers = set(servers_id).difference(set(self.client_instance.servers)) - if len(unknown_servers) > 0: + if len(unknown_servers) > 0: raise IndexError( - 'Unkown servers: {}. List of known servers: {}.'.format( + 'Unknown servers: {}. List of known servers: {}.'.format( unknown_servers, self.client_instance.servers ) ) @@ -322,7 +325,7 @@ def __getitem__(self, servers_id): def __getattr__(self, name): if not hasattr(Server, 'handle_{}'.format(name)): - raise AttributeError("Unkown server command: {}".format(name)) + raise AttributeError("Unknown server command: {}".format(name)) def proxy_func(servers_id, *args, **kwds): return getattr(self[servers_id], name)(*args, **kwds) @@ -463,7 +466,7 @@ def sunshader( angle, ): - assert angle >= 20 and angle <= 160, \ + assert 20 <= angle <= 160, \ 'angle must be between 20-160, got {}'.format(angle) self.send_message( @@ -529,7 +532,7 @@ def seek( return img_arrays, img_datas -def main (): +def main(): import CameraNetwork from CameraNetwork.sunphotometer import findClosestImageTime diff --git a/CameraNetwork/controller.py b/CameraNetwork/controller.py index 3e6caf6..2ec705d 100644 --- a/CameraNetwork/controller.py +++ b/CameraNetwork/controller.py @@ -1,38 +1,40 @@ -## -## Copyright (C) 2017, Amit Aides, all rights reserved. -## -## This file is part of Camera Network -## (see https://bitbucket.org/amitibo/cameranetwork_git). -## -## Redistribution and use in source and binary forms, with or without modification, -## are permitted provided that the following conditions are met: -## -## 1) The software is provided under the terms of this license strictly for -## academic, non-commercial, not-for-profit purposes. -## 2) Redistributions of source code must retain the above copyright notice, this -## list of conditions (license) and the following disclaimer. -## 3) Redistributions in binary form must reproduce the above copyright notice, -## this list of conditions (license) and the following disclaimer in the -## documentation and/or other materials provided with the distribution. -## 4) The name of the author may not be used to endorse or promote products derived -## from this software without specific prior written permission. -## 5) As this software depends on other libraries, the user must adhere to and keep -## in place any licensing terms of those libraries. -## 6) Any publications arising from the use of this software, including but not -## limited to academic journal and conference publications, technical reports and -## manuals, must cite the following works: -## Dmitry Veikherman, Amit Aides, Yoav Y. Schechner and Aviad Levis, "Clouds in The Cloud" Proc. ACCV, pp. 659-674 (2014). -## -## THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED -## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -## EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -## INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -## BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -## LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -## OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -## ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.## +# +# Copyright (C) 2017, Amit Aides, all rights reserved. +# +# This file is part of Camera Network +# (see https://bitbucket.org/amitibo/cameranetwork_git). +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# 1) The software is provided under the terms of this license strictly for +# academic, non-commercial, not-for-profit purposes. +# 2) Redistributions of source code must retain the above copyright notice, this +# list of conditions (license) and the following disclaimer. +# 3) Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions (license) and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 4) The name of the author may not be used to endorse or promote products derived +# from this software without specific prior written permission. +# 5) As this software depends on other libraries, the user must adhere to and keep +# in place any licensing terms of those libraries. +# 6) Any publications arising from the use of this software, including but not +# limited to academic journal and conference publications, technical reports and +# manuals, must cite the following works: +# Dmitry Veikherman, Amit Aides, Yoav Y. Schechner and Aviad Levis, +# "Clouds in The Cloud" Proc. ACCV, pp. 659-674 (2014). +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + from __future__ import division import bisect from CameraNetwork.arduino_utils import ArduinoAPI @@ -62,6 +64,7 @@ from datetime import timedelta import ephem import fisheye + try: import futures except: @@ -131,7 +134,7 @@ def interpolate_dark_images(exposure, exposures, dark_images): def time2seconds(dt): """Convert datetime object to seconds.""" - seconds = (dt.hour*60 + dt.minute)*60 + dt.second + dt.microsecond*1e-6 + seconds = (dt.hour * 60 + dt.minute) * 60 + dt.second + dt.microsecond * 1e-6 return seconds @@ -180,7 +183,7 @@ def __init__(self, offline=False, local_path=None): self.loadDarkImages() # - # Load todays celestial position measurements + # Load today's celestial position measurements # if not os.path.exists(gs.SUN_POSITIONS_PATH): os.makedirs(gs.SUN_POSITIONS_PATH) @@ -291,7 +294,7 @@ def loadCameraCalibration(self, capture_date=None, serial_num=None): logging.debug("Calibration path is: {}".format(calibration_path)) if self._last_calibration_path is not None and \ - self._last_calibration_path == calibration_path: + self._last_calibration_path == calibration_path: # # No need to load new calibration data. # @@ -306,14 +309,14 @@ def loadCameraCalibration(self, capture_date=None, serial_num=None): # If so, the data is copied to the home folder. # Note: # This is done to support old cameras that were not calibrated - # using the testbench. + # using the test bench. # if os.path.exists(self.base_calibration_path): for base_path, file_name, dst_path in zip( - (calibration_path, calibration_path, self.base_calibration_path), - (gs.INTRINSIC_SETTINGS_FILENAME, gs.VIGNETTING_SETTINGS_FILENAME, gs.RADIOMETRIC_SETTINGS_FILENAME), - (gs.INTRINSIC_SETTINGS_PATH, gs.VIGNETTING_SETTINGS_PATH, gs.RADIOMETRIC_SETTINGS_PATH) - ): + (calibration_path, calibration_path, self.base_calibration_path), + (gs.INTRINSIC_SETTINGS_FILENAME, gs.VIGNETTING_SETTINGS_FILENAME, gs.RADIOMETRIC_SETTINGS_FILENAME), + (gs.INTRINSIC_SETTINGS_PATH, gs.VIGNETTING_SETTINGS_PATH, gs.RADIOMETRIC_SETTINGS_PATH) + ): try: shutil.copyfile( os.path.join(base_path, file_name), @@ -388,8 +391,8 @@ def loadDarkImages(self): di_paths = sorted(glob.glob(os.path.join(gs.DARK_IMAGES_PATH, '*.mat'))) if di_paths: self._dark_images = { - False:{'exposures':[], 'images':[]}, - True:{'exposures':[], 'images':[]}, + False: {'exposures': [], 'images': []}, + True: {'exposures': [], 'images': []}, } # @@ -397,7 +400,7 @@ def loadDarkImages(self): # for path in di_paths: d = sio.loadmat(path) - gain_boost = d['gain_boost'][0][0] == 1 + gain_boost = d['gain_boost'][0][0] == 1 self._dark_images[gain_boost]['exposures'].append(d['exposure'][0][0]) self._dark_images[gain_boost]['images'].append(d['image']) @@ -440,16 +443,16 @@ def loadSunMeasurements(self): # # Limit the data to sun measurements only. # - data = data[data['object']=='Sun'] + data = data[data['object'] == 'Sun'] # # Limit the data to angles between a range of "valid" # angles. # data = data[ - (data['sunshader_angle']>gs.SUNSHADER_MIN_MEASURED)&\ - (data['sunshader_angle'] gs.SUNSHADER_MIN_MEASURED) & + (data['sunshader_angle'] < gs.SUNSHADER_MAX_MEASURED) + ] data.index = data.index.time angles.append(data['sunshader_angle']) @@ -506,7 +509,7 @@ def safe_capture(self, settings, frames_num=1, except Exception as e: if retries <= 0: logging.exception( - 'The camera failed too many consequtive times. Reboot.' + 'The camera failed too many consecutive times. Reboot.' ) logging.shutdown() os.system('sudo reboot') @@ -547,7 +550,7 @@ def handle_sunshader_update(self, sunshader_min, sunshader_max): # # Take value large enough to force scan # - dt = timedelta(seconds=2*gs.SUNSHADER_SCAN_PERIOD_LONG) + dt = timedelta(seconds=2 * gs.SUNSHADER_SCAN_PERIOD_LONG) # # current_time_only is without date, and used for interpolating @@ -565,10 +568,10 @@ def handle_sunshader_update(self, sunshader_min, sunshader_max): # current_angle = self._arduino_api.getAngle() sunshader_scan_min = max( - current_angle-gs.SUNSHADER_SCAN_DELTA_ANGLE, sunshader_min + current_angle - gs.SUNSHADER_SCAN_DELTA_ANGLE, sunshader_min ) sunshader_scan_max = min( - current_angle+gs.SUNSHADER_SCAN_DELTA_ANGLE, sunshader_max + current_angle + gs.SUNSHADER_SCAN_DELTA_ANGLE, sunshader_max ) sunshader_scan_period = gs.SUNSHADER_SCAN_PERIOD_LONG else: @@ -580,7 +583,7 @@ def handle_sunshader_update(self, sunshader_min, sunshader_max): # Is it time to do a scan? # measured_angle = None - if dt > timedelta(seconds=sunshader_scan_period): + if dt > timedelta(seconds=sunshader_scan_period): self.last_sunshader_time = current_time logging.info('Time to scan') @@ -590,18 +593,17 @@ def handle_sunshader_update(self, sunshader_min, sunshader_max): # future = Future() yield self.handle_sunshader_scan(future, reply=False, - sunshader_min=sunshader_scan_min, - sunshader_max=sunshader_scan_max - ) + sunshader_min=sunshader_scan_min, + sunshader_max=sunshader_scan_max + ) measured_angle, _ = future.result() logging.info("Measured angle: {}".format(measured_angle)) # - # Update datebase with new measurment - # First, add new measurment to dataframe of angles. + # Update database with new measurement + # First, add new measurement to dataframe of angles. # - if measured_angle > gs.SUNSHADER_MIN_MEASURED and \ - measured_angle < gs.SUNSHADER_MAX_MEASURED: + if gs.SUNSHADER_MIN_MEASURED < measured_angle < gs.SUNSHADER_MAX_MEASURED: self.sunshader_angles_df.loc[current_time_only] = measured_angle self.sunshader_angles_df = self.sunshader_angles_df.sort_index() @@ -621,11 +623,11 @@ def handle_sunshader_update(self, sunshader_min, sunshader_max): self.sunshader_fit = False # - # If model fitting failed or there are not enough measurments for + # If model fitting failed or there are not enough measurements for # interpolation angle use measured angle. # if (not self.sunshader_fit) or \ - len(self.sunshader_angles_df) < gs.SUNSHADER_MIN_ANGLES: + len(self.sunshader_angles_df) < gs.SUNSHADER_MIN_ANGLES: logging.info("Either failed fitting or not enough measurements") if measured_angle is not None: logging.info("Using measured angle: {}".format(measured_angle)) @@ -688,7 +690,8 @@ def handle_sunshader_scan(self, reply, sunshader_min, sunshader_max): "color_mode": gs.COLOR_RGB } ) - val = img[img>128].sum() / img.size + # TODO CONST 128 and why 128 and not something else? + val = img[img > 128].sum() / img.size logging.debug( "Exp.: {}, Gain: {}, image range: [{}, {}], Value: {}".format( @@ -724,7 +727,7 @@ def handle_sunshader_scan(self, reply, sunshader_min, sunshader_max): # saturated_array = pd.Series(saturated_array).fillna(method='bfill').values - N = min(8, int((len(saturated_array)-1)/3)-1) + N = min(8, int((len(saturated_array) - 1) / 3) - 1) if N >= 4: b, a = signal.butter(N, 0.125) sun_signal = signal.filtfilt(b, a, saturated_array) @@ -757,8 +760,7 @@ def handle_sunshader_scan(self, reply, sunshader_min, sunshader_max): # if reply: angles = np.arange(sunshader_min, sunshader_max) - return angles, np.array(saturated_array), sun_signal, \ - measured_angle, centroid + return angles, np.array(saturated_array), sun_signal, measured_angle, centroid return measured_angle, centroid @@ -773,13 +775,13 @@ def update_sky_mask(self, img): # Calculate the mask factor # mat = img.astype(np.float) - r = mat[...,0] - g = mat[...,1] - b = mat[...,2] - new_mask = (b>30) & (b>1.5*r) + r = mat[..., 0] + g = mat[..., 1] + b = mat[..., 2] + new_mask = (b > 30) & (b > 1.5 * r) # - # Accomulate the mask factor + # Accumulate the mask factor # if self.sky_mask_base is None: self.sky_mask_base = new_mask @@ -804,8 +806,7 @@ def update_sky_mask(self, img): contour = sorted(contours, key=cv2.contourArea, reverse=True)[0] self.sky_mask = np.zeros_like(mask) - self.sky_mask = cv2.drawContours( - self.sky_mask, [contour], -1, 255, -1) + self.sky_mask = cv2.drawContours(self.sky_mask, [contour], -1, 255, -1) # # Store the masks @@ -849,7 +850,7 @@ def handle_calibration(self, nx, ny, imgs_num, delay, exposure_us, # imgs = [] for i in range(imgs_num): - self._arduino_api.setAngle(sunshader_min+2) + self._arduino_api.setAngle(sunshader_min + 2) img, real_exposure_us, real_gain_db = self._camera.capture( settings={ "exposure_us": exposure_us, @@ -902,7 +903,7 @@ def handle_calibration(self, nx, ny, imgs_num, delay, exposure_us, def handle_sunshader(self, angle, sunshader_min, sunshader_max): """Set the sunshader to an angle""" - if anglesunshader_max: + if angle < sunshader_min or angle > sunshader_max: raise ValueError( "Sunshader angle ({}) not in range ({},{})".format( angle, sunshader_min, sunshader_max @@ -954,13 +955,13 @@ def handle_moon(self, sunshader_min): @cmd_callback @run_on_executor def handle_extrinsic( - self, - date, - latitude, - longitude, - altitude, - residual_threshold, - save): + self, + date, + latitude, + longitude, + altitude, + residual_threshold, + save): """Handle extrinsic calibration""" # @@ -973,11 +974,11 @@ def handle_extrinsic( except: logging.warn( "Failed loading calibration for extrinsic date {}\n{}".format( - date, traceback.format_exc()) + date, traceback.format_exc()) ) # - # Load sun measurments. + # Load sun measurements. # today_positions_path = os.path.join( gs.SUN_POSITIONS_PATH, "{}.csv".format(date)) @@ -986,10 +987,10 @@ def handle_extrinsic( raise Exception('No sun positions for date: {}'.format(date)) # - # Calibratoin is done using the sun position. + # Calibration is done using the sun position. # positions_df = pd.read_csv(today_positions_path, index_col=0, parse_dates=True) - positions_df = positions_df[positions_df['object']=='Sun'] + positions_df = positions_df[positions_df['object'] == 'Sun'] positions_df = positions_df.dropna() if positions_df.shape[0] < gs.EXTRINSIC_CALIBRATION_MIN_PTS: @@ -997,17 +998,15 @@ def handle_extrinsic( positions_df.shape[0])) # - # Convert sun measurments to directions. + # Convert sun measurements to directions. # - measured_postions = \ - positions_df[['pos_x', 'pos_y']].as_matrix() - phi, theta, mask = self._normalization._fisheye_model.undistortDirections( - measured_postions) + measured_positions = positions_df[['pos_x', 'pos_y']].as_matrix() + phi, theta, mask = self._normalization._fisheye_model.undistortDirections(measured_positions) measured_directions = np.array( ( - np.sin(theta)*np.cos(phi), - -np.sin(theta)*np.sin(phi), + np.sin(theta) * np.cos(phi), + -np.sin(theta) * np.sin(phi), np.cos(theta) ) ).T @@ -1029,7 +1028,7 @@ def handle_extrinsic( calculated_directions = np.array(calculated_directions) # - # Estimate oreintation + # Estimate orientation # R, rotated_directions = find_camera_orientation_ransac( calculated_directions, measured_directions, residual_threshold) @@ -1049,7 +1048,7 @@ def handle_extrinsic( os.path.join( calibration_day_path, gs.EXTRINSIC_SETTINGS_FILENAME - ), + ), R ) else: @@ -1064,10 +1063,7 @@ def handle_extrinsic( @cmd_callback @gen.coroutine - def handle_save_extrinsic( - self, - date - ): + def handle_save_extrinsic(self, date): """Handle save extrinsic calibration command This command saves the current extrinsic calibration on a specific @@ -1082,19 +1078,19 @@ def handle_save_extrinsic( gs.CAPTURE_PATH, date, gs.EXTRINSIC_SETTINGS_FILENAME - ), + ), self._normalization.R ) @cmd_callback @run_on_executor def handle_radiometric( - self, - date, - time_index, - residual_threshold, - save, - camera_settings): + self, + date, + time_index, + residual_threshold, + save, + camera_settings): """Handle radiometric calibration""" # @@ -1117,7 +1113,7 @@ def handle_radiometric( # df = spm.parseSunPhotoMeter(path[0]) spm_df = df[date.strftime("%Y-%m-%d")] - spm_df = [spm_df[spm_df["Wavelength(um)"]==wl] for wl in (0.6744, 0.5000, 0.4405)] + spm_df = [spm_df[spm_df["Wavelength(um)"] == wl] for wl in (0.6744, 0.5000, 0.4405)] # # Get the image list for this day. @@ -1189,7 +1185,7 @@ def sampleAlmucantarData(self, spm_df, t, camera_df, camera_settings, resolution correct_radiometric=False ) almucantar_samples, almucantar_angles, almucantar_coords, \ - _, _, _ = spm.sampleImage(img, img_datas[0], almucantar_angles=angles) + _, _, _ = spm.sampleImage(img, img_datas[0], almucantar_angles=angles) return angles, values, almucantar_samples @@ -1242,7 +1238,7 @@ def handle_array(self, capture_settings, frames_num, normalize, jpeg, # Average the images. # if frames_num > 1: - img_array = img_array.mean(axis=img_array.ndim-1) + img_array = img_array.mean(axis=img_array.ndim - 1) logging.debug('Averaged %d arrays' % frames_num) # @@ -1265,18 +1261,18 @@ def handle_array(self, capture_settings, frames_num, normalize, jpeg, return img_array, img_data def seekImageArray( - self, - df, - seek_time, - hdr_index, - normalize, - resolution, - jpeg, - camera_settings, - correct_radiometric=True, - ignore_date_extrinsic=False, - timedelta_threshold=60 - ): + self, + df, + seek_time, + hdr_index, + normalize, + resolution, + jpeg, + camera_settings, + correct_radiometric=True, + ignore_date_extrinsic=False, + timedelta_threshold=60 + ): """Seek an image array. Args: @@ -1342,7 +1338,7 @@ def seekImageArray( img_array = sio.loadmat(mat_path)['img_array'] base_path = os.path.splitext(mat_path)[0] - if os.path.exists(base_path+'.json'): + if os.path.exists(base_path + '.json'): # # Support old json data files. # @@ -1357,11 +1353,11 @@ def seekImageArray( with open(data_path, mode='rb') as f: img_data.update(**json.load(f)) - elif os.path.exists(base_path+'.pkl'): + elif os.path.exists(base_path + '.pkl'): # # New pickle data files. # - with open(base_path+'.pkl', 'rb') as f: + with open(base_path + '.pkl', 'rb') as f: img_data = cPickle.load(f) img_arrays.append(img_array) @@ -1390,9 +1386,9 @@ def preprocess_array( jpeg=False, correct_radiometric=True, ignore_date_extrinsic=False - ): + ): """Apply preprocessing to the raw array: - dark_image substraction, normalization, vignetting, HDR... + dark_image subtraction, normalization, vignetting, HDR... Args: ... @@ -1433,7 +1429,7 @@ def preprocess_array( except: logging.error( "Failed loading extrinsic data from {}\n{}".format( - extrinsic_path, traceback.format_exc()) + extrinsic_path, traceback.format_exc()) ) # @@ -1475,7 +1471,7 @@ def preprocess_array( else: if len(img_arrays) == 1: img_array = \ - img_arrays[0].astype(np.float) / (img_datas[0].exposure_us / 1000) + img_arrays[0].astype(np.float) / (img_datas[0].exposure_us / 1000) else: img_exposures = [img_data.exposure_us / 1000 for img_data in img_datas] img_array = calcHDR(img_arrays, img_exposures) @@ -1517,7 +1513,7 @@ def preprocess_array( # Scale to Watts. # img_array = \ - self._radiometric.applyRadiometric(img_array).astype(np.float32) + self._radiometric.applyRadiometric(img_array).astype(np.float32) return np.ascontiguousarray(img_array) @@ -1559,11 +1555,11 @@ def handle_dark_images(self): frames_num=FRAMES_NUM ) - img_array = img_array.mean(axis=img_array.ndim-1) + img_array = img_array.mean(axis=img_array.ndim - 1) sio.savemat( os.path.join(gs.DARK_IMAGES_PATH, '{}_{}.mat'.format(img_index, gain_boost)), - {'image': img_array, 'exposure': exposure_us, 'gain_boost':gain_boost}, + {'image': img_array, 'exposure': exposure_us, 'gain_boost': gain_boost}, do_compression=True ) img_index += 1 @@ -1603,7 +1599,7 @@ def handle_loop(self, capture_settings, frames_num, hdr_mode, img_data): # Average the images. # if frames_num > 1: - img_array = img_array.mean(axis=img_array.ndim-1) + img_array = img_array.mean(axis=img_array.ndim - 1) logging.debug('Averaged %d arrays' % frames_num) # @@ -1620,7 +1616,7 @@ def handle_loop(self, capture_settings, frames_num, hdr_mode, img_data): break # - # Mutliply the next exposure for HDR. + # Multiply the next exposure for HDR. # if capture_settings['exposure_us'] >= 6000000: break @@ -1706,9 +1702,9 @@ def process_cmds(self): # cb = getattr(self, 'handle_{}'.format(cmd), None) if cb is None: - logging.debug("Controller received unkown command: {}".format(cmd)) + logging.debug("Controller received unknown command: {}".format(cmd)) future.set_exception( - Exception("Controller received unkown command: {}".format(cmd))) + Exception("Controller received unknown command: {}".format(cmd))) else: try: try: @@ -1727,4 +1723,4 @@ def process_cmds(self): future.set_exception(e) self._in_queue.task_done() - logging.debug("Finished procesing cmd: {}".format(cmd)) + logging.debug("Finished processing cmd: {}".format(cmd)) diff --git a/CameraNetwork/global_settings.py b/CameraNetwork/global_settings.py index ca82ce0..ae554e4 100644 --- a/CameraNetwork/global_settings.py +++ b/CameraNetwork/global_settings.py @@ -1,38 +1,40 @@ -## -## Copyright (C) 2017, Amit Aides, all rights reserved. -## -## This file is part of Camera Network -## (see https://bitbucket.org/amitibo/cameranetwork_git). -## -## Redistribution and use in source and binary forms, with or without modification, -## are permitted provided that the following conditions are met: -## -## 1) The software is provided under the terms of this license strictly for -## academic, non-commercial, not-for-profit purposes. -## 2) Redistributions of source code must retain the above copyright notice, this -## list of conditions (license) and the following disclaimer. -## 3) Redistributions in binary form must reproduce the above copyright notice, -## this list of conditions (license) and the following disclaimer in the -## documentation and/or other materials provided with the distribution. -## 4) The name of the author may not be used to endorse or promote products derived -## from this software without specific prior written permission. -## 5) As this software depends on other libraries, the user must adhere to and keep -## in place any licensing terms of those libraries. -## 6) Any publications arising from the use of this software, including but not -## limited to academic journal and conference publications, technical reports and -## manuals, must cite the following works: -## Dmitry Veikherman, Amit Aides, Yoav Y. Schechner and Aviad Levis, "Clouds in The Cloud" Proc. ACCV, pp. 659-674 (2014). -## -## THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED -## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -## EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -## INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -## BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -## LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -## OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -## ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.## +# +# Copyright (C) 2017, Amit Aides, all rights reserved. +# +# This file is part of Camera Network +# (see https://bitbucket.org/amitibo/cameranetwork_git). +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# 1) The software is provided under the terms of this license strictly for +# academic, non-commercial, not-for-profit purposes. +# 2) Redistributions of source code must retain the above copyright notice, this +# list of conditions (license) and the following disclaimer. +# 3) Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions (license) and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 4) The name of the author may not be used to endorse or promote products derived +# from this software without specific prior written permission. +# 5) As this software depends on other libraries, the user must adhere to and keep +# in place any licensing terms of those libraries. +# 6) Any publications arising from the use of this software, including but not +# limited to academic journal and conference publications, technical reports and +# manuals, must cite the following works: +# Dmitry Veikherman, Amit Aides, Yoav Y. Schechner and Aviad Levis, +# "Clouds in The Cloud" Proc. ACCV, pp. 659-674 (2014). +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + """ Globals """ @@ -73,8 +75,8 @@ # Configuration server # CONFIGURATION_SERVER = 'tx.technion.ac.il' -CONFIGURATION_SERVER_USER = 'amitibo' -CONFIGURATION_SERVER_URL_BASE = 'http://%s/~amitibo/cameras_settings/' % CONFIGURATION_SERVER +CONFIGURATION_SERVER_USER = 'amitibo' # TODO Update? +CONFIGURATION_SERVER_URL_BASE = 'http://%s/~amitibo/cameras_settings/' % CONFIGURATION_SERVER # TODO Update? CONFIGURATION_SERVER_BASE_PATH = 'public_html/cameras_settings' PROXY_SETTINGS_FILE_NAME = 'proxy_server_{timestamp}.json' @@ -120,7 +122,7 @@ SSH_TUNNEL_WAIT_TIME = 2 # -# Identities of the proxy sockets used for rounting the messages. +# Identities of the proxy sockets used for routing the messages. # PROXY_DEALER_IDENTITY = 'PROXY_DEALER' PROXY_ROUTER_IDENTITY = 'PROXY_ROUTER' @@ -150,9 +152,15 @@ # without the exec, the shell=True option causes the shell to open a separate process with a different # pid. # -REVERSE_AUTOSSH_CMD = 'AUTOSSH_DEBUG=1 exec autossh -M 0 -v -i {identity_file} -o "ExitOnForwardFailure yes" -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -N -R {tunnel_port}:localhost:{local_port} {server_user}@{server_ip}' -REVERSE_SSH_CMD = "exec ssh -i {identity_file} -oExitOnForwardFailure=yes -oServerAliveInterval=60 -N -R {tunnel_port}:localhost:{local_port} {server_user}@{server_ip}" +REVERSE_AUTOSSH_CMD = 'AUTOSSH_DEBUG=1 exec autossh -M 0 -v -i {identity_file} -o "ExitOnForwardFailure yes" -o' \ + ' "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -N -R' \ + ' {tunnel_port}:localhost:{local_port} {server_user}@{server_ip}' + +REVERSE_SSH_CMD = "exec ssh -i {identity_file} -oExitOnForwardFailure=yes -oServerAliveInterval=60 -N -R" \ + " {tunnel_port}:localhost:{local_port} {server_user}@{server_ip}" + SCP_CMD = "scp -i {identity_file} {src_path} {server_user}@{server_ip}:{dst_path}" + TUNNEL_DESCRIPTION = "{tunnel_port}:localhost:{local_port} {server_user}@{server_ip}" # @@ -299,7 +307,6 @@ MSG_TYPE_TUNNEL_CHECK = 'tunnel_details' MSG_TYPE_LOCAL = 'local_ip' MSG_TYPE_UPDATE = 'update' -MSG_TYPE_UPDATE = 'update' MSG_STATUS_FIELD = 'status' MSG_STATUS_OK = 'ok' @@ -382,6 +389,7 @@ SUN_ALTITUDE_SUNSHADER_THRESH = 0 SUN_ALTITUDE_EXPOSURE_THRESH = 0.001 + # # Setup paths # @@ -420,7 +428,7 @@ def initPaths(HOME_PATH=None): SUN_POSITIONS_PATH = os.path.join(HOME_PATH, 'sun_positions') DARK_IMAGES_PATH = os.path.join(HOME_PATH, 'dark_images') - UPLOAD_CMD = os.path.join(HOME_PATH, ".local/bin/dropbox_uploader.sh -k upload {capture_path} {upload_path}") + UPLOAD_CMD = os.path.join(HOME_PATH, ".local/bin/dropbox_uploader.sh -k upload {capture_path} {upload_path}") ################################################################################ @@ -433,4 +441,4 @@ def initPaths(HOME_PATH=None): # Visualization stuff ################################################################################ LOS_PTS_NUM = 300 -LOS_LENGTH = 8000 \ No newline at end of file +LOS_LENGTH = 8000 diff --git a/CameraNetwork/mdp/__init__.py b/CameraNetwork/mdp/__init__.py index eaddb76..619bc2c 100644 --- a/CameraNetwork/mdp/__init__.py +++ b/CameraNetwork/mdp/__init__.py @@ -77,6 +77,7 @@ __author__ = 'Guido Goldstein' __email__ = 'gst-py@a-nugget.de' + from client import MDPClient from worker import MDPWorker from broker import MDPBroker diff --git a/CameraNetwork/server.py b/CameraNetwork/server.py index de2483b..23076e8 100644 --- a/CameraNetwork/server.py +++ b/CameraNetwork/server.py @@ -611,7 +611,7 @@ def loop_timer(self): ########################################################### - # Message handlders + # Message handlers ########################################################### @gen.coroutine diff --git a/CameraNetwork/transformation_matrices.py b/CameraNetwork/transformation_matrices.py index 4b0bd1a..e2f2a27 100644 --- a/CameraNetwork/transformation_matrices.py +++ b/CameraNetwork/transformation_matrices.py @@ -1,1919 +1,1919 @@ -# -*- coding: utf-8 -*- -# transformations.py - -# Copyright (c) 2006-2015, Christoph Gohlke -# Copyright (c) 2006-2015, The Regents of the University of California -# Produced at the Laboratory for Fluorescence Dynamics -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of the copyright holders nor the names of any -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. - -"""Homogeneous Transformation Matrices and Quaternions. - -A library for calculating 4x4 matrices for translating, rotating, reflecting, -scaling, shearing, projecting, orthogonalizing, and superimposing arrays of -3D homogeneous coordinates as well as for converting between rotation matrices, -Euler angles, and quaternions. Also includes an Arcball control object and -functions to decompose transformation matrices. - -:Author: - `Christoph Gohlke `_ - -:Organization: - Laboratory for Fluorescence Dynamics, University of California, Irvine - -:Version: 2015.07.18 - -Requirements ------------- -* `CPython 2.7 or 3.4 `_ -* `Numpy 1.9 `_ -* `Transformations.c 2015.07.18 `_ - (recommended for speedup of some functions) - -Notes ------ -The API is not stable yet and is expected to change between revisions. - -This Python code is not optimized for speed. Refer to the transformations.c -module for a faster implementation of some functions. - -Documentation in HTML format can be generated with epydoc. - -Matrices (M) can be inverted using numpy.linalg.inv(M), be concatenated using -numpy.dot(M0, M1), or transform homogeneous coordinate arrays (v) using -numpy.dot(M, v) for shape (4, \*) column vectors, respectively -numpy.dot(v, M.T) for shape (\*, 4) row vectors ("array of points"). - -This module follows the "column vectors on the right" and "row major storage" -(C contiguous) conventions. The translation components are in the right column -of the transformation matrix, i.e. M[:3, 3]. -The transpose of the transformation matrices may have to be used to interface -with other graphics systems, e.g. with OpenGL's glMultMatrixd(). See also [16]. - -Calculations are carried out with numpy.float64 precision. - -Vector, point, quaternion, and matrix function arguments are expected to be -"array like", i.e. tuple, list, or numpy arrays. - -Return types are numpy arrays unless specified otherwise. - -Angles are in radians unless specified otherwise. - -Quaternions w+ix+jy+kz are represented as [w, x, y, z]. - -A triple of Euler angles can be applied/interpreted in 24 ways, which can -be specified using a 4 character string or encoded 4-tuple: - - *Axes 4-string*: e.g. 'sxyz' or 'ryxy' - - - first character : rotations are applied to 's'tatic or 'r'otating frame - - remaining characters : successive rotation axis 'x', 'y', or 'z' - - *Axes 4-tuple*: e.g. (0, 0, 0, 0) or (1, 1, 1, 1) - - - inner axis: code of axis ('x':0, 'y':1, 'z':2) of rightmost matrix. - - parity : even (0) if inner axis 'x' is followed by 'y', 'y' is followed - by 'z', or 'z' is followed by 'x'. Otherwise odd (1). - - repetition : first and last axis are same (1) or different (0). - - frame : rotations are applied to static (0) or rotating (1) frame. - -Other Python packages and modules for 3D transformations and quaternions: - -* `Transforms3d `_ - includes most code of this module. -* `Blender.mathutils `_ -* `numpy-dtypes `_ - -References ----------- -(1) Matrices and transformations. Ronald Goldman. - In "Graphics Gems I", pp 472-475. Morgan Kaufmann, 1990. -(2) More matrices and transformations: shear and pseudo-perspective. - Ronald Goldman. In "Graphics Gems II", pp 320-323. Morgan Kaufmann, 1991. -(3) Decomposing a matrix into simple transformations. Spencer Thomas. - In "Graphics Gems II", pp 320-323. Morgan Kaufmann, 1991. -(4) Recovering the data from the transformation matrix. Ronald Goldman. - In "Graphics Gems II", pp 324-331. Morgan Kaufmann, 1991. -(5) Euler angle conversion. Ken Shoemake. - In "Graphics Gems IV", pp 222-229. Morgan Kaufmann, 1994. -(6) Arcball rotation control. Ken Shoemake. - In "Graphics Gems IV", pp 175-192. Morgan Kaufmann, 1994. -(7) Representing attitude: Euler angles, unit quaternions, and rotation - vectors. James Diebel. 2006. -(8) A discussion of the solution for the best rotation to relate two sets - of vectors. W Kabsch. Acta Cryst. 1978. A34, 827-828. -(9) Closed-form solution of absolute orientation using unit quaternions. - BKP Horn. J Opt Soc Am A. 1987. 4(4):629-642. -(10) Quaternions. Ken Shoemake. - http://www.sfu.ca/~jwa3/cmpt461/files/quatut.pdf -(11) From quaternion to matrix and back. JMP van Waveren. 2005. - http://www.intel.com/cd/ids/developer/asmo-na/eng/293748.htm -(12) Uniform random rotations. Ken Shoemake. - In "Graphics Gems III", pp 124-132. Morgan Kaufmann, 1992. -(13) Quaternion in molecular modeling. CFF Karney. - J Mol Graph Mod, 25(5):595-604 -(14) New method for extracting the quaternion from a rotation matrix. - Itzhack Y Bar-Itzhack, J Guid Contr Dynam. 2000. 23(6): 1085-1087. -(15) Multiple View Geometry in Computer Vision. Hartley and Zissermann. - Cambridge University Press; 2nd Ed. 2004. Chapter 4, Algorithm 4.7, p 130. -(16) Column Vectors vs. Row Vectors. - http://steve.hollasch.net/cgindex/math/matrix/column-vec.html - -Examples --------- ->>> alpha, beta, gamma = 0.123, -1.234, 2.345 ->>> origin, xaxis, yaxis, zaxis = [0, 0, 0], [1, 0, 0], [0, 1, 0], [0, 0, 1] ->>> I = identity_matrix() ->>> Rx = rotation_matrix(alpha, xaxis) ->>> Ry = rotation_matrix(beta, yaxis) ->>> Rz = rotation_matrix(gamma, zaxis) ->>> R = concatenate_matrices(Rx, Ry, Rz) ->>> euler = euler_from_matrix(R, 'rxyz') ->>> numpy.allclose([alpha, beta, gamma], euler) -True ->>> Re = euler_matrix(alpha, beta, gamma, 'rxyz') ->>> is_same_transform(R, Re) -True ->>> al, be, ga = euler_from_matrix(Re, 'rxyz') ->>> is_same_transform(Re, euler_matrix(al, be, ga, 'rxyz')) -True ->>> qx = quaternion_about_axis(alpha, xaxis) ->>> qy = quaternion_about_axis(beta, yaxis) ->>> qz = quaternion_about_axis(gamma, zaxis) ->>> q = quaternion_multiply(qx, qy) ->>> q = quaternion_multiply(q, qz) ->>> Rq = quaternion_matrix(q) ->>> is_same_transform(R, Rq) -True ->>> S = scale_matrix(1.23, origin) ->>> T = translation_matrix([1, 2, 3]) ->>> Z = shear_matrix(beta, xaxis, origin, zaxis) ->>> R = random_rotation_matrix(numpy.random.rand(3)) ->>> M = concatenate_matrices(T, R, Z, S) ->>> scale, shear, angles, trans, persp = decompose_matrix(M) ->>> numpy.allclose(scale, 1.23) -True ->>> numpy.allclose(trans, [1, 2, 3]) -True ->>> numpy.allclose(shear, [0, math.tan(beta), 0]) -True ->>> is_same_transform(R, euler_matrix(axes='sxyz', *angles)) -True ->>> M1 = compose_matrix(scale, shear, angles, trans, persp) ->>> is_same_transform(M, M1) -True ->>> v0, v1 = random_vector(3), random_vector(3) ->>> M = rotation_matrix(angle_between_vectors(v0, v1), vector_product(v0, v1)) ->>> v2 = numpy.dot(v0, M[:3,:3].T) ->>> numpy.allclose(unit_vector(v1), unit_vector(v2)) -True - -""" - -from __future__ import division, print_function - -import math - -import numpy - -__version__ = '2015.07.18' -__docformat__ = 'restructuredtext en' -__all__ = () - - -def identity_matrix(): - """Return 4x4 identity/unit matrix. - - >>> I = identity_matrix() - >>> numpy.allclose(I, numpy.dot(I, I)) - True - >>> numpy.sum(I), numpy.trace(I) - (4.0, 4.0) - >>> numpy.allclose(I, numpy.identity(4)) - True - - """ - return numpy.identity(4) - - -def translation_matrix(direction): - """Return matrix to translate by direction vector. - - >>> v = numpy.random.random(3) - 0.5 - >>> numpy.allclose(v, translation_matrix(v)[:3, 3]) - True - - """ - M = numpy.identity(4) - M[:3, 3] = direction[:3] - return M - - -def translation_from_matrix(matrix): - """Return translation vector from translation matrix. - - >>> v0 = numpy.random.random(3) - 0.5 - >>> v1 = translation_from_matrix(translation_matrix(v0)) - >>> numpy.allclose(v0, v1) - True - - """ - return numpy.array(matrix, copy=False)[:3, 3].copy() - - -def reflection_matrix(point, normal): - """Return matrix to mirror at plane defined by point and normal vector. - - >>> v0 = numpy.random.random(4) - 0.5 - >>> v0[3] = 1. - >>> v1 = numpy.random.random(3) - 0.5 - >>> R = reflection_matrix(v0, v1) - >>> numpy.allclose(2, numpy.trace(R)) - True - >>> numpy.allclose(v0, numpy.dot(R, v0)) - True - >>> v2 = v0.copy() - >>> v2[:3] += v1 - >>> v3 = v0.copy() - >>> v2[:3] -= v1 - >>> numpy.allclose(v2, numpy.dot(R, v3)) - True - - """ - normal = unit_vector(normal[:3]) - M = numpy.identity(4) - M[:3, :3] -= 2.0 * numpy.outer(normal, normal) - M[:3, 3] = (2.0 * numpy.dot(point[:3], normal)) * normal - return M - - -def reflection_from_matrix(matrix): - """Return mirror plane point and normal vector from reflection matrix. - - >>> v0 = numpy.random.random(3) - 0.5 - >>> v1 = numpy.random.random(3) - 0.5 - >>> M0 = reflection_matrix(v0, v1) - >>> point, normal = reflection_from_matrix(M0) - >>> M1 = reflection_matrix(point, normal) - >>> is_same_transform(M0, M1) - True - - """ - M = numpy.array(matrix, dtype=numpy.float64, copy=False) - # normal: unit eigenvector corresponding to eigenvalue -1 - w, V = numpy.linalg.eig(M[:3, :3]) - i = numpy.where(abs(numpy.real(w) + 1.0) < 1e-8)[0] - if not len(i): - raise ValueError("no unit eigenvector corresponding to eigenvalue -1") - normal = numpy.real(V[:, i[0]]).squeeze() - # point: any unit eigenvector corresponding to eigenvalue 1 - w, V = numpy.linalg.eig(M) - i = numpy.where(abs(numpy.real(w) - 1.0) < 1e-8)[0] - if not len(i): - raise ValueError("no unit eigenvector corresponding to eigenvalue 1") - point = numpy.real(V[:, i[-1]]).squeeze() - point /= point[3] - return point, normal - - -def rotation_matrix(angle, direction, point=None): - """Return matrix to rotate about axis defined by point and direction. - - >>> R = rotation_matrix(math.pi/2, [0, 0, 1], [1, 0, 0]) - >>> numpy.allclose(numpy.dot(R, [0, 0, 0, 1]), [1, -1, 0, 1]) - True - >>> angle = (random.random() - 0.5) * (2*math.pi) - >>> direc = numpy.random.random(3) - 0.5 - >>> point = numpy.random.random(3) - 0.5 - >>> R0 = rotation_matrix(angle, direc, point) - >>> R1 = rotation_matrix(angle-2*math.pi, direc, point) - >>> is_same_transform(R0, R1) - True - >>> R0 = rotation_matrix(angle, direc, point) - >>> R1 = rotation_matrix(-angle, -direc, point) - >>> is_same_transform(R0, R1) - True - >>> I = numpy.identity(4, numpy.float64) - >>> numpy.allclose(I, rotation_matrix(math.pi*2, direc)) - True - >>> numpy.allclose(2, numpy.trace(rotation_matrix(math.pi/2, - ... direc, point))) - True - - """ - sina = math.sin(angle) - cosa = math.cos(angle) - direction = unit_vector(direction[:3]) - # rotation matrix around unit vector - R = numpy.diag([cosa, cosa, cosa]) - R += numpy.outer(direction, direction) * (1.0 - cosa) - direction *= sina - R += numpy.array([[ 0.0, -direction[2], direction[1]], - [ direction[2], 0.0, -direction[0]], - [-direction[1], direction[0], 0.0]]) - M = numpy.identity(4) - M[:3, :3] = R - if point is not None: - # rotation not around origin - point = numpy.array(point[:3], dtype=numpy.float64, copy=False) - M[:3, 3] = point - numpy.dot(R, point) - return M - - -def rotation_from_matrix(matrix): - """Return rotation angle and axis from rotation matrix. - - >>> angle = (random.random() - 0.5) * (2*math.pi) - >>> direc = numpy.random.random(3) - 0.5 - >>> point = numpy.random.random(3) - 0.5 - >>> R0 = rotation_matrix(angle, direc, point) - >>> angle, direc, point = rotation_from_matrix(R0) - >>> R1 = rotation_matrix(angle, direc, point) - >>> is_same_transform(R0, R1) - True - - """ - R = numpy.array(matrix, dtype=numpy.float64, copy=False) - R33 = R[:3, :3] - # direction: unit eigenvector of R33 corresponding to eigenvalue of 1 - w, W = numpy.linalg.eig(R33.T) - i = numpy.where(abs(numpy.real(w) - 1.0) < 1e-8)[0] - if not len(i): - raise ValueError("no unit eigenvector corresponding to eigenvalue 1") - direction = numpy.real(W[:, i[-1]]).squeeze() - # point: unit eigenvector of R33 corresponding to eigenvalue of 1 - w, Q = numpy.linalg.eig(R) - i = numpy.where(abs(numpy.real(w) - 1.0) < 1e-8)[0] - if not len(i): - raise ValueError("no unit eigenvector corresponding to eigenvalue 1") - point = numpy.real(Q[:, i[-1]]).squeeze() - point /= point[3] - # rotation angle depending on direction - cosa = (numpy.trace(R33) - 1.0) / 2.0 - if abs(direction[2]) > 1e-8: - sina = (R[1, 0] + (cosa-1.0)*direction[0]*direction[1]) / direction[2] - elif abs(direction[1]) > 1e-8: - sina = (R[0, 2] + (cosa-1.0)*direction[0]*direction[2]) / direction[1] - else: - sina = (R[2, 1] + (cosa-1.0)*direction[1]*direction[2]) / direction[0] - angle = math.atan2(sina, cosa) - return angle, direction, point - - -def scale_matrix(factor, origin=None, direction=None): - """Return matrix to scale by factor around origin in direction. - - Use factor -1 for point symmetry. - - >>> v = (numpy.random.rand(4, 5) - 0.5) * 20 - >>> v[3] = 1 - >>> S = scale_matrix(-1.234) - >>> numpy.allclose(numpy.dot(S, v)[:3], -1.234*v[:3]) - True - >>> factor = random.random() * 10 - 5 - >>> origin = numpy.random.random(3) - 0.5 - >>> direct = numpy.random.random(3) - 0.5 - >>> S = scale_matrix(factor, origin) - >>> S = scale_matrix(factor, origin, direct) - - """ - if direction is None: - # uniform scaling - M = numpy.diag([factor, factor, factor, 1.0]) - if origin is not None: - M[:3, 3] = origin[:3] - M[:3, 3] *= 1.0 - factor - else: - # nonuniform scaling - direction = unit_vector(direction[:3]) - factor = 1.0 - factor - M = numpy.identity(4) - M[:3, :3] -= factor * numpy.outer(direction, direction) - if origin is not None: - M[:3, 3] = (factor * numpy.dot(origin[:3], direction)) * direction - return M - - -def scale_from_matrix(matrix): - """Return scaling factor, origin and direction from scaling matrix. - - >>> factor = random.random() * 10 - 5 - >>> origin = numpy.random.random(3) - 0.5 - >>> direct = numpy.random.random(3) - 0.5 - >>> S0 = scale_matrix(factor, origin) - >>> factor, origin, direction = scale_from_matrix(S0) - >>> S1 = scale_matrix(factor, origin, direction) - >>> is_same_transform(S0, S1) - True - >>> S0 = scale_matrix(factor, origin, direct) - >>> factor, origin, direction = scale_from_matrix(S0) - >>> S1 = scale_matrix(factor, origin, direction) - >>> is_same_transform(S0, S1) - True - - """ - M = numpy.array(matrix, dtype=numpy.float64, copy=False) - M33 = M[:3, :3] - factor = numpy.trace(M33) - 2.0 - try: - # direction: unit eigenvector corresponding to eigenvalue factor - w, V = numpy.linalg.eig(M33) - i = numpy.where(abs(numpy.real(w) - factor) < 1e-8)[0][0] - direction = numpy.real(V[:, i]).squeeze() - direction /= vector_norm(direction) - except IndexError: - # uniform scaling - factor = (factor + 2.0) / 3.0 - direction = None - # origin: any eigenvector corresponding to eigenvalue 1 - w, V = numpy.linalg.eig(M) - i = numpy.where(abs(numpy.real(w) - 1.0) < 1e-8)[0] - if not len(i): - raise ValueError("no eigenvector corresponding to eigenvalue 1") - origin = numpy.real(V[:, i[-1]]).squeeze() - origin /= origin[3] - return factor, origin, direction - - -def projection_matrix(point, normal, direction=None, - perspective=None, pseudo=False): - """Return matrix to project onto plane defined by point and normal. - - Using either perspective point, projection direction, or none of both. - - If pseudo is True, perspective projections will preserve relative depth - such that Perspective = dot(Orthogonal, PseudoPerspective). - - >>> P = projection_matrix([0, 0, 0], [1, 0, 0]) - >>> numpy.allclose(P[1:, 1:], numpy.identity(4)[1:, 1:]) - True - >>> point = numpy.random.random(3) - 0.5 - >>> normal = numpy.random.random(3) - 0.5 - >>> direct = numpy.random.random(3) - 0.5 - >>> persp = numpy.random.random(3) - 0.5 - >>> P0 = projection_matrix(point, normal) - >>> P1 = projection_matrix(point, normal, direction=direct) - >>> P2 = projection_matrix(point, normal, perspective=persp) - >>> P3 = projection_matrix(point, normal, perspective=persp, pseudo=True) - >>> is_same_transform(P2, numpy.dot(P0, P3)) - True - >>> P = projection_matrix([3, 0, 0], [1, 1, 0], [1, 0, 0]) - >>> v0 = (numpy.random.rand(4, 5) - 0.5) * 20 - >>> v0[3] = 1 - >>> v1 = numpy.dot(P, v0) - >>> numpy.allclose(v1[1], v0[1]) - True - >>> numpy.allclose(v1[0], 3-v1[1]) - True - - """ - M = numpy.identity(4) - point = numpy.array(point[:3], dtype=numpy.float64, copy=False) - normal = unit_vector(normal[:3]) - if perspective is not None: - # perspective projection - perspective = numpy.array(perspective[:3], dtype=numpy.float64, - copy=False) - M[0, 0] = M[1, 1] = M[2, 2] = numpy.dot(perspective-point, normal) - M[:3, :3] -= numpy.outer(perspective, normal) - if pseudo: - # preserve relative depth - M[:3, :3] -= numpy.outer(normal, normal) - M[:3, 3] = numpy.dot(point, normal) * (perspective+normal) - else: - M[:3, 3] = numpy.dot(point, normal) * perspective - M[3, :3] = -normal - M[3, 3] = numpy.dot(perspective, normal) - elif direction is not None: - # parallel projection - direction = numpy.array(direction[:3], dtype=numpy.float64, copy=False) - scale = numpy.dot(direction, normal) - M[:3, :3] -= numpy.outer(direction, normal) / scale - M[:3, 3] = direction * (numpy.dot(point, normal) / scale) - else: - # orthogonal projection - M[:3, :3] -= numpy.outer(normal, normal) - M[:3, 3] = numpy.dot(point, normal) * normal - return M - - -def projection_from_matrix(matrix, pseudo=False): - """Return projection plane and perspective point from projection matrix. - - Return values are same as arguments for projection_matrix function: - point, normal, direction, perspective, and pseudo. - - >>> point = numpy.random.random(3) - 0.5 - >>> normal = numpy.random.random(3) - 0.5 - >>> direct = numpy.random.random(3) - 0.5 - >>> persp = numpy.random.random(3) - 0.5 - >>> P0 = projection_matrix(point, normal) - >>> result = projection_from_matrix(P0) - >>> P1 = projection_matrix(*result) - >>> is_same_transform(P0, P1) - True - >>> P0 = projection_matrix(point, normal, direct) - >>> result = projection_from_matrix(P0) - >>> P1 = projection_matrix(*result) - >>> is_same_transform(P0, P1) - True - >>> P0 = projection_matrix(point, normal, perspective=persp, pseudo=False) - >>> result = projection_from_matrix(P0, pseudo=False) - >>> P1 = projection_matrix(*result) - >>> is_same_transform(P0, P1) - True - >>> P0 = projection_matrix(point, normal, perspective=persp, pseudo=True) - >>> result = projection_from_matrix(P0, pseudo=True) - >>> P1 = projection_matrix(*result) - >>> is_same_transform(P0, P1) - True - - """ - M = numpy.array(matrix, dtype=numpy.float64, copy=False) - M33 = M[:3, :3] - w, V = numpy.linalg.eig(M) - i = numpy.where(abs(numpy.real(w) - 1.0) < 1e-8)[0] - if not pseudo and len(i): - # point: any eigenvector corresponding to eigenvalue 1 - point = numpy.real(V[:, i[-1]]).squeeze() - point /= point[3] - # direction: unit eigenvector corresponding to eigenvalue 0 - w, V = numpy.linalg.eig(M33) - i = numpy.where(abs(numpy.real(w)) < 1e-8)[0] - if not len(i): - raise ValueError("no eigenvector corresponding to eigenvalue 0") - direction = numpy.real(V[:, i[0]]).squeeze() - direction /= vector_norm(direction) - # normal: unit eigenvector of M33.T corresponding to eigenvalue 0 - w, V = numpy.linalg.eig(M33.T) - i = numpy.where(abs(numpy.real(w)) < 1e-8)[0] - if len(i): - # parallel projection - normal = numpy.real(V[:, i[0]]).squeeze() - normal /= vector_norm(normal) - return point, normal, direction, None, False - else: - # orthogonal projection, where normal equals direction vector - return point, direction, None, None, False - else: - # perspective projection - i = numpy.where(abs(numpy.real(w)) > 1e-8)[0] - if not len(i): - raise ValueError( - "no eigenvector not corresponding to eigenvalue 0") - point = numpy.real(V[:, i[-1]]).squeeze() - point /= point[3] - normal = - M[3, :3] - perspective = M[:3, 3] / numpy.dot(point[:3], normal) - if pseudo: - perspective -= normal - return point, normal, None, perspective, pseudo - - -def clip_matrix(left, right, bottom, top, near, far, perspective=False): - """Return matrix to obtain normalized device coordinates from frustum. - - The frustum bounds are axis-aligned along x (left, right), - y (bottom, top) and z (near, far). - - Normalized device coordinates are in range [-1, 1] if coordinates are - inside the frustum. - - If perspective is True the frustum is a truncated pyramid with the - perspective point at origin and direction along z axis, otherwise an - orthographic canonical view volume (a box). - - Homogeneous coordinates transformed by the perspective clip matrix - need to be dehomogenized (divided by w coordinate). - - >>> frustum = numpy.random.rand(6) - >>> frustum[1] += frustum[0] - >>> frustum[3] += frustum[2] - >>> frustum[5] += frustum[4] - >>> M = clip_matrix(perspective=False, *frustum) - >>> numpy.dot(M, [frustum[0], frustum[2], frustum[4], 1]) - array([-1., -1., -1., 1.]) - >>> numpy.dot(M, [frustum[1], frustum[3], frustum[5], 1]) - array([ 1., 1., 1., 1.]) - >>> M = clip_matrix(perspective=True, *frustum) - >>> v = numpy.dot(M, [frustum[0], frustum[2], frustum[4], 1]) - >>> v / v[3] - array([-1., -1., -1., 1.]) - >>> v = numpy.dot(M, [frustum[1], frustum[3], frustum[4], 1]) - >>> v / v[3] - array([ 1., 1., -1., 1.]) - - """ - if left >= right or bottom >= top or near >= far: - raise ValueError("invalid frustum") - if perspective: - if near <= _EPS: - raise ValueError("invalid frustum: near <= 0") - t = 2.0 * near - M = [[t/(left-right), 0.0, (right+left)/(right-left), 0.0], - [0.0, t/(bottom-top), (top+bottom)/(top-bottom), 0.0], - [0.0, 0.0, (far+near)/(near-far), t*far/(far-near)], - [0.0, 0.0, -1.0, 0.0]] - else: - M = [[2.0/(right-left), 0.0, 0.0, (right+left)/(left-right)], - [0.0, 2.0/(top-bottom), 0.0, (top+bottom)/(bottom-top)], - [0.0, 0.0, 2.0/(far-near), (far+near)/(near-far)], - [0.0, 0.0, 0.0, 1.0]] - return numpy.array(M) - - -def shear_matrix(angle, direction, point, normal): - """Return matrix to shear by angle along direction vector on shear plane. - - The shear plane is defined by a point and normal vector. The direction - vector must be orthogonal to the plane's normal vector. - - A point P is transformed by the shear matrix into P" such that - the vector P-P" is parallel to the direction vector and its extent is - given by the angle of P-P'-P", where P' is the orthogonal projection - of P onto the shear plane. - - >>> angle = (random.random() - 0.5) * 4*math.pi - >>> direct = numpy.random.random(3) - 0.5 - >>> point = numpy.random.random(3) - 0.5 - >>> normal = numpy.cross(direct, numpy.random.random(3)) - >>> S = shear_matrix(angle, direct, point, normal) - >>> numpy.allclose(1, numpy.linalg.det(S)) - True - - """ - normal = unit_vector(normal[:3]) - direction = unit_vector(direction[:3]) - if abs(numpy.dot(normal, direction)) > 1e-6: - raise ValueError("direction and normal vectors are not orthogonal") - angle = math.tan(angle) - M = numpy.identity(4) - M[:3, :3] += angle * numpy.outer(direction, normal) - M[:3, 3] = -angle * numpy.dot(point[:3], normal) * direction - return M - - -def shear_from_matrix(matrix): - """Return shear angle, direction and plane from shear matrix. - - >>> angle = (random.random() - 0.5) * 4*math.pi - >>> direct = numpy.random.random(3) - 0.5 - >>> point = numpy.random.random(3) - 0.5 - >>> normal = numpy.cross(direct, numpy.random.random(3)) - >>> S0 = shear_matrix(angle, direct, point, normal) - >>> angle, direct, point, normal = shear_from_matrix(S0) - >>> S1 = shear_matrix(angle, direct, point, normal) - >>> is_same_transform(S0, S1) - True - - """ - M = numpy.array(matrix, dtype=numpy.float64, copy=False) - M33 = M[:3, :3] - # normal: cross independent eigenvectors corresponding to the eigenvalue 1 - w, V = numpy.linalg.eig(M33) - i = numpy.where(abs(numpy.real(w) - 1.0) < 1e-4)[0] - if len(i) < 2: - raise ValueError("no two linear independent eigenvectors found %s" % w) - V = numpy.real(V[:, i]).squeeze().T - lenorm = -1.0 - for i0, i1 in ((0, 1), (0, 2), (1, 2)): - n = numpy.cross(V[i0], V[i1]) - w = vector_norm(n) - if w > lenorm: - lenorm = w - normal = n - normal /= lenorm - # direction and angle - direction = numpy.dot(M33 - numpy.identity(3), normal) - angle = vector_norm(direction) - direction /= angle - angle = math.atan(angle) - # point: eigenvector corresponding to eigenvalue 1 - w, V = numpy.linalg.eig(M) - i = numpy.where(abs(numpy.real(w) - 1.0) < 1e-8)[0] - if not len(i): - raise ValueError("no eigenvector corresponding to eigenvalue 1") - point = numpy.real(V[:, i[-1]]).squeeze() - point /= point[3] - return angle, direction, point, normal - - -def decompose_matrix(matrix): - """Return sequence of transformations from transformation matrix. - - matrix : array_like - Non-degenerative homogeneous transformation matrix - - Return tuple of: - scale : vector of 3 scaling factors - shear : list of shear factors for x-y, x-z, y-z axes - angles : list of Euler angles about static x, y, z axes - translate : translation vector along x, y, z axes - perspective : perspective partition of matrix - - Raise ValueError if matrix is of wrong type or degenerative. - - >>> T0 = translation_matrix([1, 2, 3]) - >>> scale, shear, angles, trans, persp = decompose_matrix(T0) - >>> T1 = translation_matrix(trans) - >>> numpy.allclose(T0, T1) - True - >>> S = scale_matrix(0.123) - >>> scale, shear, angles, trans, persp = decompose_matrix(S) - >>> scale[0] - 0.123 - >>> R0 = euler_matrix(1, 2, 3) - >>> scale, shear, angles, trans, persp = decompose_matrix(R0) - >>> R1 = euler_matrix(*angles) - >>> numpy.allclose(R0, R1) - True - - """ - M = numpy.array(matrix, dtype=numpy.float64, copy=True).T - if abs(M[3, 3]) < _EPS: - raise ValueError("M[3, 3] is zero") - M /= M[3, 3] - P = M.copy() - P[:, 3] = 0.0, 0.0, 0.0, 1.0 - if not numpy.linalg.det(P): - raise ValueError("matrix is singular") - - scale = numpy.zeros((3, )) - shear = [0.0, 0.0, 0.0] - angles = [0.0, 0.0, 0.0] - - if any(abs(M[:3, 3]) > _EPS): - perspective = numpy.dot(M[:, 3], numpy.linalg.inv(P.T)) - M[:, 3] = 0.0, 0.0, 0.0, 1.0 - else: - perspective = numpy.array([0.0, 0.0, 0.0, 1.0]) - - translate = M[3, :3].copy() - M[3, :3] = 0.0 - - row = M[:3, :3].copy() - scale[0] = vector_norm(row[0]) - row[0] /= scale[0] - shear[0] = numpy.dot(row[0], row[1]) - row[1] -= row[0] * shear[0] - scale[1] = vector_norm(row[1]) - row[1] /= scale[1] - shear[0] /= scale[1] - shear[1] = numpy.dot(row[0], row[2]) - row[2] -= row[0] * shear[1] - shear[2] = numpy.dot(row[1], row[2]) - row[2] -= row[1] * shear[2] - scale[2] = vector_norm(row[2]) - row[2] /= scale[2] - shear[1:] /= scale[2] - - if numpy.dot(row[0], numpy.cross(row[1], row[2])) < 0: - numpy.negative(scale, scale) - numpy.negative(row, row) - - angles[1] = math.asin(-row[0, 2]) - if math.cos(angles[1]): - angles[0] = math.atan2(row[1, 2], row[2, 2]) - angles[2] = math.atan2(row[0, 1], row[0, 0]) - else: - #angles[0] = math.atan2(row[1, 0], row[1, 1]) - angles[0] = math.atan2(-row[2, 1], row[1, 1]) - angles[2] = 0.0 - - return scale, shear, angles, translate, perspective - - -def compose_matrix(scale=None, shear=None, angles=None, translate=None, - perspective=None): - """Return transformation matrix from sequence of transformations. - - This is the inverse of the decompose_matrix function. - - Sequence of transformations: - scale : vector of 3 scaling factors - shear : list of shear factors for x-y, x-z, y-z axes - angles : list of Euler angles about static x, y, z axes - translate : translation vector along x, y, z axes - perspective : perspective partition of matrix - - >>> scale = numpy.random.random(3) - 0.5 - >>> shear = numpy.random.random(3) - 0.5 - >>> angles = (numpy.random.random(3) - 0.5) * (2*math.pi) - >>> trans = numpy.random.random(3) - 0.5 - >>> persp = numpy.random.random(4) - 0.5 - >>> M0 = compose_matrix(scale, shear, angles, trans, persp) - >>> result = decompose_matrix(M0) - >>> M1 = compose_matrix(*result) - >>> is_same_transform(M0, M1) - True - - """ - M = numpy.identity(4) - if perspective is not None: - P = numpy.identity(4) - P[3, :] = perspective[:4] - M = numpy.dot(M, P) - if translate is not None: - T = numpy.identity(4) - T[:3, 3] = translate[:3] - M = numpy.dot(M, T) - if angles is not None: - R = euler_matrix(angles[0], angles[1], angles[2], 'sxyz') - M = numpy.dot(M, R) - if shear is not None: - Z = numpy.identity(4) - Z[1, 2] = shear[2] - Z[0, 2] = shear[1] - Z[0, 1] = shear[0] - M = numpy.dot(M, Z) - if scale is not None: - S = numpy.identity(4) - S[0, 0] = scale[0] - S[1, 1] = scale[1] - S[2, 2] = scale[2] - M = numpy.dot(M, S) - M /= M[3, 3] - return M - - -def orthogonalization_matrix(lengths, angles): - """Return orthogonalization matrix for crystallographic cell coordinates. - - Angles are expected in degrees. - - The de-orthogonalization matrix is the inverse. - - >>> O = orthogonalization_matrix([10, 10, 10], [90, 90, 90]) - >>> numpy.allclose(O[:3, :3], numpy.identity(3, float) * 10) - True - >>> O = orthogonalization_matrix([9.8, 12.0, 15.5], [87.2, 80.7, 69.7]) - >>> numpy.allclose(numpy.sum(O), 43.063229) - True - - """ - a, b, c = lengths - angles = numpy.radians(angles) - sina, sinb, _ = numpy.sin(angles) - cosa, cosb, cosg = numpy.cos(angles) - co = (cosa * cosb - cosg) / (sina * sinb) - return numpy.array([ - [ a*sinb*math.sqrt(1.0-co*co), 0.0, 0.0, 0.0], - [-a*sinb*co, b*sina, 0.0, 0.0], - [ a*cosb, b*cosa, c, 0.0], - [ 0.0, 0.0, 0.0, 1.0]]) - - -def affine_matrix_from_points(v0, v1, shear=True, scale=True, usesvd=True): - """Return affine transform matrix to register two point sets. - - v0 and v1 are shape (ndims, \*) arrays of at least ndims non-homogeneous - coordinates, where ndims is the dimensionality of the coordinate space. - - If shear is False, a similarity transformation matrix is returned. - If also scale is False, a rigid/Euclidean transformation matrix - is returned. - - By default the algorithm by Hartley and Zissermann [15] is used. - If usesvd is True, similarity and Euclidean transformation matrices - are calculated by minimizing the weighted sum of squared deviations - (RMSD) according to the algorithm by Kabsch [8]. - Otherwise, and if ndims is 3, the quaternion based algorithm by Horn [9] - is used, which is slower when using this Python implementation. - - The returned matrix performs rotation, translation and uniform scaling - (if specified). - - >>> v0 = [[0, 1031, 1031, 0], [0, 0, 1600, 1600]] - >>> v1 = [[675, 826, 826, 677], [55, 52, 281, 277]] - >>> affine_matrix_from_points(v0, v1) - array([[ 0.14549, 0.00062, 675.50008], - [ 0.00048, 0.14094, 53.24971], - [ 0. , 0. , 1. ]]) - >>> T = translation_matrix(numpy.random.random(3)-0.5) - >>> R = random_rotation_matrix(numpy.random.random(3)) - >>> S = scale_matrix(random.random()) - >>> M = concatenate_matrices(T, R, S) - >>> v0 = (numpy.random.rand(4, 100) - 0.5) * 20 - >>> v0[3] = 1 - >>> v1 = numpy.dot(M, v0) - >>> v0[:3] += numpy.random.normal(0, 1e-8, 300).reshape(3, -1) - >>> M = affine_matrix_from_points(v0[:3], v1[:3]) - >>> numpy.allclose(v1, numpy.dot(M, v0)) - True - - More examples in superimposition_matrix() - - """ - v0 = numpy.array(v0, dtype=numpy.float64, copy=True) - v1 = numpy.array(v1, dtype=numpy.float64, copy=True) - - ndims = v0.shape[0] - if ndims < 2 or v0.shape[1] < ndims or v0.shape != v1.shape: - raise ValueError("input arrays are of wrong shape or type") - - # move centroids to origin - t0 = -numpy.mean(v0, axis=1) - M0 = numpy.identity(ndims+1) - M0[:ndims, ndims] = t0 - v0 += t0.reshape(ndims, 1) - t1 = -numpy.mean(v1, axis=1) - M1 = numpy.identity(ndims+1) - M1[:ndims, ndims] = t1 - v1 += t1.reshape(ndims, 1) - - if shear: - # Affine transformation - A = numpy.concatenate((v0, v1), axis=0) - u, s, vh = numpy.linalg.svd(A.T) - vh = vh[:ndims].T - B = vh[:ndims] - C = vh[ndims:2*ndims] - t = numpy.dot(C, numpy.linalg.pinv(B)) - t = numpy.concatenate((t, numpy.zeros((ndims, 1))), axis=1) - M = numpy.vstack((t, ((0.0,)*ndims) + (1.0,))) - elif usesvd or ndims != 3: - # Rigid transformation via SVD of covariance matrix - u, s, vh = numpy.linalg.svd(numpy.dot(v1, v0.T)) - # rotation matrix from SVD orthonormal bases - R = numpy.dot(u, vh) - if numpy.linalg.det(R) < 0.0: - # R does not constitute right handed system - R -= numpy.outer(u[:, ndims-1], vh[ndims-1, :]*2.0) - s[-1] *= -1.0 - # homogeneous transformation matrix - M = numpy.identity(ndims+1) - M[:ndims, :ndims] = R - else: - # Rigid transformation matrix via quaternion - # compute symmetric matrix N - xx, yy, zz = numpy.sum(v0 * v1, axis=1) - xy, yz, zx = numpy.sum(v0 * numpy.roll(v1, -1, axis=0), axis=1) - xz, yx, zy = numpy.sum(v0 * numpy.roll(v1, -2, axis=0), axis=1) - N = [[xx+yy+zz, 0.0, 0.0, 0.0], - [yz-zy, xx-yy-zz, 0.0, 0.0], - [zx-xz, xy+yx, yy-xx-zz, 0.0], - [xy-yx, zx+xz, yz+zy, zz-xx-yy]] - # quaternion: eigenvector corresponding to most positive eigenvalue - w, V = numpy.linalg.eigh(N) - q = V[:, numpy.argmax(w)] - q /= vector_norm(q) # unit quaternion - # homogeneous transformation matrix - M = quaternion_matrix(q) - - if scale and not shear: - # Affine transformation; scale is ratio of RMS deviations from centroid - v0 *= v0 - v1 *= v1 - M[:ndims, :ndims] *= math.sqrt(numpy.sum(v1) / numpy.sum(v0)) - - # move centroids back - M = numpy.dot(numpy.linalg.inv(M1), numpy.dot(M, M0)) - M /= M[ndims, ndims] - return M - - -def superimposition_matrix(v0, v1, scale=False, usesvd=True): - """Return matrix to transform given 3D point set into second point set. - - v0 and v1 are shape (3, \*) or (4, \*) arrays of at least 3 points. - - The parameters scale and usesvd are explained in the more general - affine_matrix_from_points function. - - The returned matrix is a similarity or Euclidean transformation matrix. - This function has a fast C implementation in transformations.c. - - >>> v0 = numpy.random.rand(3, 10) - >>> M = superimposition_matrix(v0, v0) - >>> numpy.allclose(M, numpy.identity(4)) - True - >>> R = random_rotation_matrix(numpy.random.random(3)) - >>> v0 = [[1,0,0], [0,1,0], [0,0,1], [1,1,1]] - >>> v1 = numpy.dot(R, v0) - >>> M = superimposition_matrix(v0, v1) - >>> numpy.allclose(v1, numpy.dot(M, v0)) - True - >>> v0 = (numpy.random.rand(4, 100) - 0.5) * 20 - >>> v0[3] = 1 - >>> v1 = numpy.dot(R, v0) - >>> M = superimposition_matrix(v0, v1) - >>> numpy.allclose(v1, numpy.dot(M, v0)) - True - >>> S = scale_matrix(random.random()) - >>> T = translation_matrix(numpy.random.random(3)-0.5) - >>> M = concatenate_matrices(T, R, S) - >>> v1 = numpy.dot(M, v0) - >>> v0[:3] += numpy.random.normal(0, 1e-9, 300).reshape(3, -1) - >>> M = superimposition_matrix(v0, v1, scale=True) - >>> numpy.allclose(v1, numpy.dot(M, v0)) - True - >>> M = superimposition_matrix(v0, v1, scale=True, usesvd=False) - >>> numpy.allclose(v1, numpy.dot(M, v0)) - True - >>> v = numpy.empty((4, 100, 3)) - >>> v[:, :, 0] = v0 - >>> M = superimposition_matrix(v0, v1, scale=True, usesvd=False) - >>> numpy.allclose(v1, numpy.dot(M, v[:, :, 0])) - True - - """ - v0 = numpy.array(v0, dtype=numpy.float64, copy=False)[:3] - v1 = numpy.array(v1, dtype=numpy.float64, copy=False)[:3] - return affine_matrix_from_points(v0, v1, shear=False, - scale=scale, usesvd=usesvd) - - -def euler_matrix(ai, aj, ak, axes='sxyz'): - """Return homogeneous rotation matrix from Euler angles and axis sequence. - - ai, aj, ak : Euler's roll, pitch and yaw angles - axes : One of 24 axis sequences as string or encoded tuple - - >>> R = euler_matrix(1, 2, 3, 'syxz') - >>> numpy.allclose(numpy.sum(R[0]), -1.34786452) - True - >>> R = euler_matrix(1, 2, 3, (0, 1, 0, 1)) - >>> numpy.allclose(numpy.sum(R[0]), -0.383436184) - True - >>> ai, aj, ak = (4*math.pi) * (numpy.random.random(3) - 0.5) - >>> for axes in _AXES2TUPLE.keys(): - ... R = euler_matrix(ai, aj, ak, axes) - >>> for axes in _TUPLE2AXES.keys(): - ... R = euler_matrix(ai, aj, ak, axes) - - """ - try: - firstaxis, parity, repetition, frame = _AXES2TUPLE[axes] - except (AttributeError, KeyError): - _TUPLE2AXES[axes] # validation - firstaxis, parity, repetition, frame = axes - - i = firstaxis - j = _NEXT_AXIS[i+parity] - k = _NEXT_AXIS[i-parity+1] - - if frame: - ai, ak = ak, ai - if parity: - ai, aj, ak = -ai, -aj, -ak - - si, sj, sk = math.sin(ai), math.sin(aj), math.sin(ak) - ci, cj, ck = math.cos(ai), math.cos(aj), math.cos(ak) - cc, cs = ci*ck, ci*sk - sc, ss = si*ck, si*sk - - M = numpy.identity(4) - if repetition: - M[i, i] = cj - M[i, j] = sj*si - M[i, k] = sj*ci - M[j, i] = sj*sk - M[j, j] = -cj*ss+cc - M[j, k] = -cj*cs-sc - M[k, i] = -sj*ck - M[k, j] = cj*sc+cs - M[k, k] = cj*cc-ss - else: - M[i, i] = cj*ck - M[i, j] = sj*sc-cs - M[i, k] = sj*cc+ss - M[j, i] = cj*sk - M[j, j] = sj*ss+cc - M[j, k] = sj*cs-sc - M[k, i] = -sj - M[k, j] = cj*si - M[k, k] = cj*ci - return M - - -def euler_from_matrix(matrix, axes='sxyz'): - """Return Euler angles from rotation matrix for specified axis sequence. - - axes : One of 24 axis sequences as string or encoded tuple - - Note that many Euler angle triplets can describe one matrix. - - >>> R0 = euler_matrix(1, 2, 3, 'syxz') - >>> al, be, ga = euler_from_matrix(R0, 'syxz') - >>> R1 = euler_matrix(al, be, ga, 'syxz') - >>> numpy.allclose(R0, R1) - True - >>> angles = (4*math.pi) * (numpy.random.random(3) - 0.5) - >>> for axes in _AXES2TUPLE.keys(): - ... R0 = euler_matrix(axes=axes, *angles) - ... R1 = euler_matrix(axes=axes, *euler_from_matrix(R0, axes)) - ... if not numpy.allclose(R0, R1): print(axes, "failed") - - """ - try: - firstaxis, parity, repetition, frame = _AXES2TUPLE[axes.lower()] - except (AttributeError, KeyError): - _TUPLE2AXES[axes] # validation - firstaxis, parity, repetition, frame = axes - - i = firstaxis - j = _NEXT_AXIS[i+parity] - k = _NEXT_AXIS[i-parity+1] - - M = numpy.array(matrix, dtype=numpy.float64, copy=False)[:3, :3] - if repetition: - sy = math.sqrt(M[i, j]*M[i, j] + M[i, k]*M[i, k]) - if sy > _EPS: - ax = math.atan2( M[i, j], M[i, k]) - ay = math.atan2( sy, M[i, i]) - az = math.atan2( M[j, i], -M[k, i]) - else: - ax = math.atan2(-M[j, k], M[j, j]) - ay = math.atan2( sy, M[i, i]) - az = 0.0 - else: - cy = math.sqrt(M[i, i]*M[i, i] + M[j, i]*M[j, i]) - if cy > _EPS: - ax = math.atan2( M[k, j], M[k, k]) - ay = math.atan2(-M[k, i], cy) - az = math.atan2( M[j, i], M[i, i]) - else: - ax = math.atan2(-M[j, k], M[j, j]) - ay = math.atan2(-M[k, i], cy) - az = 0.0 - - if parity: - ax, ay, az = -ax, -ay, -az - if frame: - ax, az = az, ax - return ax, ay, az - - -def euler_from_quaternion(quaternion, axes='sxyz'): - """Return Euler angles from quaternion for specified axis sequence. - - >>> angles = euler_from_quaternion([0.99810947, 0.06146124, 0, 0]) - >>> numpy.allclose(angles, [0.123, 0, 0]) - True - - """ - return euler_from_matrix(quaternion_matrix(quaternion), axes) - - -def quaternion_from_euler(ai, aj, ak, axes='sxyz'): - """Return quaternion from Euler angles and axis sequence. - - ai, aj, ak : Euler's roll, pitch and yaw angles - axes : One of 24 axis sequences as string or encoded tuple - - >>> q = quaternion_from_euler(1, 2, 3, 'ryxz') - >>> numpy.allclose(q, [0.435953, 0.310622, -0.718287, 0.444435]) - True - - """ - try: - firstaxis, parity, repetition, frame = _AXES2TUPLE[axes.lower()] - except (AttributeError, KeyError): - _TUPLE2AXES[axes] # validation - firstaxis, parity, repetition, frame = axes - - i = firstaxis + 1 - j = _NEXT_AXIS[i+parity-1] + 1 - k = _NEXT_AXIS[i-parity] + 1 - - if frame: - ai, ak = ak, ai - if parity: - aj = -aj - - ai /= 2.0 - aj /= 2.0 - ak /= 2.0 - ci = math.cos(ai) - si = math.sin(ai) - cj = math.cos(aj) - sj = math.sin(aj) - ck = math.cos(ak) - sk = math.sin(ak) - cc = ci*ck - cs = ci*sk - sc = si*ck - ss = si*sk - - q = numpy.empty((4, )) - if repetition: - q[0] = cj*(cc - ss) - q[i] = cj*(cs + sc) - q[j] = sj*(cc + ss) - q[k] = sj*(cs - sc) - else: - q[0] = cj*cc + sj*ss - q[i] = cj*sc - sj*cs - q[j] = cj*ss + sj*cc - q[k] = cj*cs - sj*sc - if parity: - q[j] *= -1.0 - - return q - - -def quaternion_about_axis(angle, axis): - """Return quaternion for rotation about axis. - - >>> q = quaternion_about_axis(0.123, [1, 0, 0]) - >>> numpy.allclose(q, [0.99810947, 0.06146124, 0, 0]) - True - - """ - q = numpy.array([0.0, axis[0], axis[1], axis[2]]) - qlen = vector_norm(q) - if qlen > _EPS: - q *= math.sin(angle/2.0) / qlen - q[0] = math.cos(angle/2.0) - return q - - -def quaternion_matrix(quaternion): - """Return homogeneous rotation matrix from quaternion. - - >>> M = quaternion_matrix([0.99810947, 0.06146124, 0, 0]) - >>> numpy.allclose(M, rotation_matrix(0.123, [1, 0, 0])) - True - >>> M = quaternion_matrix([1, 0, 0, 0]) - >>> numpy.allclose(M, numpy.identity(4)) - True - >>> M = quaternion_matrix([0, 1, 0, 0]) - >>> numpy.allclose(M, numpy.diag([1, -1, -1, 1])) - True - - """ - q = numpy.array(quaternion, dtype=numpy.float64, copy=True) - n = numpy.dot(q, q) - if n < _EPS: - return numpy.identity(4) - q *= math.sqrt(2.0 / n) - q = numpy.outer(q, q) - return numpy.array([ - [1.0-q[2, 2]-q[3, 3], q[1, 2]-q[3, 0], q[1, 3]+q[2, 0], 0.0], - [ q[1, 2]+q[3, 0], 1.0-q[1, 1]-q[3, 3], q[2, 3]-q[1, 0], 0.0], - [ q[1, 3]-q[2, 0], q[2, 3]+q[1, 0], 1.0-q[1, 1]-q[2, 2], 0.0], - [ 0.0, 0.0, 0.0, 1.0]]) - - -def quaternion_from_matrix(matrix, isprecise=False): - """Return quaternion from rotation matrix. - - If isprecise is True, the input matrix is assumed to be a precise rotation - matrix and a faster algorithm is used. - - >>> q = quaternion_from_matrix(numpy.identity(4), True) - >>> numpy.allclose(q, [1, 0, 0, 0]) - True - >>> q = quaternion_from_matrix(numpy.diag([1, -1, -1, 1])) - >>> numpy.allclose(q, [0, 1, 0, 0]) or numpy.allclose(q, [0, -1, 0, 0]) - True - >>> R = rotation_matrix(0.123, (1, 2, 3)) - >>> q = quaternion_from_matrix(R, True) - >>> numpy.allclose(q, [0.9981095, 0.0164262, 0.0328524, 0.0492786]) - True - >>> R = [[-0.545, 0.797, 0.260, 0], [0.733, 0.603, -0.313, 0], - ... [-0.407, 0.021, -0.913, 0], [0, 0, 0, 1]] - >>> q = quaternion_from_matrix(R) - >>> numpy.allclose(q, [0.19069, 0.43736, 0.87485, -0.083611]) - True - >>> R = [[0.395, 0.362, 0.843, 0], [-0.626, 0.796, -0.056, 0], - ... [-0.677, -0.498, 0.529, 0], [0, 0, 0, 1]] - >>> q = quaternion_from_matrix(R) - >>> numpy.allclose(q, [0.82336615, -0.13610694, 0.46344705, -0.29792603]) - True - >>> R = random_rotation_matrix() - >>> q = quaternion_from_matrix(R) - >>> is_same_transform(R, quaternion_matrix(q)) - True - >>> R = euler_matrix(0.0, 0.0, numpy.pi/2.0) - >>> numpy.allclose(quaternion_from_matrix(R, isprecise=False), - ... quaternion_from_matrix(R, isprecise=True)) - True - - """ - M = numpy.array(matrix, dtype=numpy.float64, copy=False)[:4, :4] - if isprecise: - q = numpy.empty((4, )) - t = numpy.trace(M) - if t > M[3, 3]: - q[0] = t - q[3] = M[1, 0] - M[0, 1] - q[2] = M[0, 2] - M[2, 0] - q[1] = M[2, 1] - M[1, 2] - else: - i, j, k = 1, 2, 3 - if M[1, 1] > M[0, 0]: - i, j, k = 2, 3, 1 - if M[2, 2] > M[i, i]: - i, j, k = 3, 1, 2 - t = M[i, i] - (M[j, j] + M[k, k]) + M[3, 3] - q[i] = t - q[j] = M[i, j] + M[j, i] - q[k] = M[k, i] + M[i, k] - q[3] = M[k, j] - M[j, k] - q *= 0.5 / math.sqrt(t * M[3, 3]) - else: - m00 = M[0, 0] - m01 = M[0, 1] - m02 = M[0, 2] - m10 = M[1, 0] - m11 = M[1, 1] - m12 = M[1, 2] - m20 = M[2, 0] - m21 = M[2, 1] - m22 = M[2, 2] - # symmetric matrix K - K = numpy.array([[m00-m11-m22, 0.0, 0.0, 0.0], - [m01+m10, m11-m00-m22, 0.0, 0.0], - [m02+m20, m12+m21, m22-m00-m11, 0.0], - [m21-m12, m02-m20, m10-m01, m00+m11+m22]]) - K /= 3.0 - # quaternion is eigenvector of K that corresponds to largest eigenvalue - w, V = numpy.linalg.eigh(K) - q = V[[3, 0, 1, 2], numpy.argmax(w)] - if q[0] < 0.0: - numpy.negative(q, q) - return q - - -def quaternion_multiply(quaternion1, quaternion0): - """Return multiplication of two quaternions. - - >>> q = quaternion_multiply([4, 1, -2, 3], [8, -5, 6, 7]) - >>> numpy.allclose(q, [28, -44, -14, 48]) - True - - """ - w0, x0, y0, z0 = quaternion0 - w1, x1, y1, z1 = quaternion1 - return numpy.array([-x1*x0 - y1*y0 - z1*z0 + w1*w0, - x1*w0 + y1*z0 - z1*y0 + w1*x0, - -x1*z0 + y1*w0 + z1*x0 + w1*y0, - x1*y0 - y1*x0 + z1*w0 + w1*z0], dtype=numpy.float64) - - -def quaternion_conjugate(quaternion): - """Return conjugate of quaternion. - - >>> q0 = random_quaternion() - >>> q1 = quaternion_conjugate(q0) - >>> q1[0] == q0[0] and all(q1[1:] == -q0[1:]) - True - - """ - q = numpy.array(quaternion, dtype=numpy.float64, copy=True) - numpy.negative(q[1:], q[1:]) - return q - - -def quaternion_inverse(quaternion): - """Return inverse of quaternion. - - >>> q0 = random_quaternion() - >>> q1 = quaternion_inverse(q0) - >>> numpy.allclose(quaternion_multiply(q0, q1), [1, 0, 0, 0]) - True - - """ - q = numpy.array(quaternion, dtype=numpy.float64, copy=True) - numpy.negative(q[1:], q[1:]) - return q / numpy.dot(q, q) - - -def quaternion_real(quaternion): - """Return real part of quaternion. - - >>> quaternion_real([3, 0, 1, 2]) - 3.0 - - """ - return float(quaternion[0]) - - -def quaternion_imag(quaternion): - """Return imaginary part of quaternion. - - >>> quaternion_imag([3, 0, 1, 2]) - array([ 0., 1., 2.]) - - """ - return numpy.array(quaternion[1:4], dtype=numpy.float64, copy=True) - - -def quaternion_slerp(quat0, quat1, fraction, spin=0, shortestpath=True): - """Return spherical linear interpolation between two quaternions. - - >>> q0 = random_quaternion() - >>> q1 = random_quaternion() - >>> q = quaternion_slerp(q0, q1, 0) - >>> numpy.allclose(q, q0) - True - >>> q = quaternion_slerp(q0, q1, 1, 1) - >>> numpy.allclose(q, q1) - True - >>> q = quaternion_slerp(q0, q1, 0.5) - >>> angle = math.acos(numpy.dot(q0, q)) - >>> numpy.allclose(2, math.acos(numpy.dot(q0, q1)) / angle) or \ - numpy.allclose(2, math.acos(-numpy.dot(q0, q1)) / angle) - True - - """ - q0 = unit_vector(quat0[:4]) - q1 = unit_vector(quat1[:4]) - if fraction == 0.0: - return q0 - elif fraction == 1.0: - return q1 - d = numpy.dot(q0, q1) - if abs(abs(d) - 1.0) < _EPS: - return q0 - if shortestpath and d < 0.0: - # invert rotation - d = -d - numpy.negative(q1, q1) - angle = math.acos(d) + spin * math.pi - if abs(angle) < _EPS: - return q0 - isin = 1.0 / math.sin(angle) - q0 *= math.sin((1.0 - fraction) * angle) * isin - q1 *= math.sin(fraction * angle) * isin - q0 += q1 - return q0 - - -def random_quaternion(rand=None): - """Return uniform random unit quaternion. - - rand: array like or None - Three independent random variables that are uniformly distributed - between 0 and 1. - - >>> q = random_quaternion() - >>> numpy.allclose(1, vector_norm(q)) - True - >>> q = random_quaternion(numpy.random.random(3)) - >>> len(q.shape), q.shape[0]==4 - (1, True) - - """ - if rand is None: - rand = numpy.random.rand(3) - else: - assert len(rand) == 3 - r1 = numpy.sqrt(1.0 - rand[0]) - r2 = numpy.sqrt(rand[0]) - pi2 = math.pi * 2.0 - t1 = pi2 * rand[1] - t2 = pi2 * rand[2] - return numpy.array([numpy.cos(t2)*r2, numpy.sin(t1)*r1, - numpy.cos(t1)*r1, numpy.sin(t2)*r2]) - - -def random_rotation_matrix(rand=None): - """Return uniform random rotation matrix. - - rand: array like - Three independent random variables that are uniformly distributed - between 0 and 1 for each returned quaternion. - - >>> R = random_rotation_matrix() - >>> numpy.allclose(numpy.dot(R.T, R), numpy.identity(4)) - True - - """ - return quaternion_matrix(random_quaternion(rand)) - - -class Arcball(object): - """Virtual Trackball Control. - - >>> ball = Arcball() - >>> ball = Arcball(initial=numpy.identity(4)) - >>> ball.place([320, 320], 320) - >>> ball.down([500, 250]) - >>> ball.drag([475, 275]) - >>> R = ball.matrix() - >>> numpy.allclose(numpy.sum(R), 3.90583455) - True - >>> ball = Arcball(initial=[1, 0, 0, 0]) - >>> ball.place([320, 320], 320) - >>> ball.setaxes([1, 1, 0], [-1, 1, 0]) - >>> ball.constrain = True - >>> ball.down([400, 200]) - >>> ball.drag([200, 400]) - >>> R = ball.matrix() - >>> numpy.allclose(numpy.sum(R), 0.2055924) - True - >>> ball.next() - - """ - def __init__(self, initial=None): - """Initialize virtual trackball control. - - initial : quaternion or rotation matrix - - """ - self._axis = None - self._axes = None - self._radius = 1.0 - self._center = [0.0, 0.0] - self._vdown = numpy.array([0.0, 0.0, 1.0]) - self._constrain = False - if initial is None: - self._qdown = numpy.array([1.0, 0.0, 0.0, 0.0]) - else: - initial = numpy.array(initial, dtype=numpy.float64) - if initial.shape == (4, 4): - self._qdown = quaternion_from_matrix(initial) - elif initial.shape == (4, ): - initial /= vector_norm(initial) - self._qdown = initial - else: - raise ValueError("initial not a quaternion or matrix") - self._qnow = self._qpre = self._qdown - - def place(self, center, radius): - """Place Arcball, e.g. when window size changes. - - center : sequence[2] - Window coordinates of trackball center. - radius : float - Radius of trackball in window coordinates. - - """ - self._radius = float(radius) - self._center[0] = center[0] - self._center[1] = center[1] - - def setaxes(self, *axes): - """Set axes to constrain rotations.""" - if axes is None: - self._axes = None - else: - self._axes = [unit_vector(axis) for axis in axes] - - @property - def constrain(self): - """Return state of constrain to axis mode.""" - return self._constrain - - @constrain.setter - def constrain(self, value): - """Set state of constrain to axis mode.""" - self._constrain = bool(value) - - def down(self, point): - """Set initial cursor window coordinates and pick constrain-axis.""" - self._vdown = arcball_map_to_sphere(point, self._center, self._radius) - self._qdown = self._qpre = self._qnow - if self._constrain and self._axes is not None: - self._axis = arcball_nearest_axis(self._vdown, self._axes) - self._vdown = arcball_constrain_to_axis(self._vdown, self._axis) - else: - self._axis = None - - def drag(self, point): - """Update current cursor window coordinates.""" - vnow = arcball_map_to_sphere(point, self._center, self._radius) - if self._axis is not None: - vnow = arcball_constrain_to_axis(vnow, self._axis) - self._qpre = self._qnow - t = numpy.cross(self._vdown, vnow) - if numpy.dot(t, t) < _EPS: - self._qnow = self._qdown - else: - q = [numpy.dot(self._vdown, vnow), t[0], t[1], t[2]] - self._qnow = quaternion_multiply(q, self._qdown) - - def next(self, acceleration=0.0): - """Continue rotation in direction of last drag.""" - q = quaternion_slerp(self._qpre, self._qnow, 2.0+acceleration, False) - self._qpre, self._qnow = self._qnow, q - - def matrix(self): - """Return homogeneous rotation matrix.""" - return quaternion_matrix(self._qnow) - - -def arcball_map_to_sphere(point, center, radius): - """Return unit sphere coordinates from window coordinates.""" - v0 = (point[0] - center[0]) / radius - v1 = (center[1] - point[1]) / radius - n = v0*v0 + v1*v1 - if n > 1.0: - # position outside of sphere - n = math.sqrt(n) - return numpy.array([v0/n, v1/n, 0.0]) - else: - return numpy.array([v0, v1, math.sqrt(1.0 - n)]) - - -def arcball_constrain_to_axis(point, axis): - """Return sphere point perpendicular to axis.""" - v = numpy.array(point, dtype=numpy.float64, copy=True) - a = numpy.array(axis, dtype=numpy.float64, copy=True) - v -= a * numpy.dot(a, v) # on plane - n = vector_norm(v) - if n > _EPS: - if v[2] < 0.0: - numpy.negative(v, v) - v /= n - return v - if a[2] == 1.0: - return numpy.array([1.0, 0.0, 0.0]) - return unit_vector([-a[1], a[0], 0.0]) - - -def arcball_nearest_axis(point, axes): - """Return axis, which arc is nearest to point.""" - point = numpy.array(point, dtype=numpy.float64, copy=False) - nearest = None - mx = -1.0 - for axis in axes: - t = numpy.dot(arcball_constrain_to_axis(point, axis), point) - if t > mx: - nearest = axis - mx = t - return nearest - - -# epsilon for testing whether a number is close to zero -_EPS = numpy.finfo(float).eps * 4.0 - -# axis sequences for Euler angles -_NEXT_AXIS = [1, 2, 0, 1] - -# map axes strings to/from tuples of inner axis, parity, repetition, frame -_AXES2TUPLE = { - 'sxyz': (0, 0, 0, 0), 'sxyx': (0, 0, 1, 0), 'sxzy': (0, 1, 0, 0), - 'sxzx': (0, 1, 1, 0), 'syzx': (1, 0, 0, 0), 'syzy': (1, 0, 1, 0), - 'syxz': (1, 1, 0, 0), 'syxy': (1, 1, 1, 0), 'szxy': (2, 0, 0, 0), - 'szxz': (2, 0, 1, 0), 'szyx': (2, 1, 0, 0), 'szyz': (2, 1, 1, 0), - 'rzyx': (0, 0, 0, 1), 'rxyx': (0, 0, 1, 1), 'ryzx': (0, 1, 0, 1), - 'rxzx': (0, 1, 1, 1), 'rxzy': (1, 0, 0, 1), 'ryzy': (1, 0, 1, 1), - 'rzxy': (1, 1, 0, 1), 'ryxy': (1, 1, 1, 1), 'ryxz': (2, 0, 0, 1), - 'rzxz': (2, 0, 1, 1), 'rxyz': (2, 1, 0, 1), 'rzyz': (2, 1, 1, 1)} - -_TUPLE2AXES = dict((v, k) for k, v in _AXES2TUPLE.items()) - - -def vector_norm(data, axis=None, out=None): - """Return length, i.e. Euclidean norm, of ndarray along axis. - - >>> v = numpy.random.random(3) - >>> n = vector_norm(v) - >>> numpy.allclose(n, numpy.linalg.norm(v)) - True - >>> v = numpy.random.rand(6, 5, 3) - >>> n = vector_norm(v, axis=-1) - >>> numpy.allclose(n, numpy.sqrt(numpy.sum(v*v, axis=2))) - True - >>> n = vector_norm(v, axis=1) - >>> numpy.allclose(n, numpy.sqrt(numpy.sum(v*v, axis=1))) - True - >>> v = numpy.random.rand(5, 4, 3) - >>> n = numpy.empty((5, 3)) - >>> vector_norm(v, axis=1, out=n) - >>> numpy.allclose(n, numpy.sqrt(numpy.sum(v*v, axis=1))) - True - >>> vector_norm([]) - 0.0 - >>> vector_norm([1]) - 1.0 - - """ - data = numpy.array(data, dtype=numpy.float64, copy=True) - if out is None: - if data.ndim == 1: - return math.sqrt(numpy.dot(data, data)) - data *= data - out = numpy.atleast_1d(numpy.sum(data, axis=axis)) - numpy.sqrt(out, out) - return out - else: - data *= data - numpy.sum(data, axis=axis, out=out) - numpy.sqrt(out, out) - - -def unit_vector(data, axis=None, out=None): - """Return ndarray normalized by length, i.e. Euclidean norm, along axis. - - >>> v0 = numpy.random.random(3) - >>> v1 = unit_vector(v0) - >>> numpy.allclose(v1, v0 / numpy.linalg.norm(v0)) - True - >>> v0 = numpy.random.rand(5, 4, 3) - >>> v1 = unit_vector(v0, axis=-1) - >>> v2 = v0 / numpy.expand_dims(numpy.sqrt(numpy.sum(v0*v0, axis=2)), 2) - >>> numpy.allclose(v1, v2) - True - >>> v1 = unit_vector(v0, axis=1) - >>> v2 = v0 / numpy.expand_dims(numpy.sqrt(numpy.sum(v0*v0, axis=1)), 1) - >>> numpy.allclose(v1, v2) - True - >>> v1 = numpy.empty((5, 4, 3)) - >>> unit_vector(v0, axis=1, out=v1) - >>> numpy.allclose(v1, v2) - True - >>> list(unit_vector([])) - [] - >>> list(unit_vector([1])) - [1.0] - - """ - if out is None: - data = numpy.array(data, dtype=numpy.float64, copy=True) - if data.ndim == 1: - data /= math.sqrt(numpy.dot(data, data)) - return data - else: - if out is not data: - out[:] = numpy.array(data, copy=False) - data = out - length = numpy.atleast_1d(numpy.sum(data*data, axis)) - numpy.sqrt(length, length) - if axis is not None: - length = numpy.expand_dims(length, axis) - data /= length - if out is None: - return data - - -def random_vector(size): - """Return array of random doubles in the half-open interval [0.0, 1.0). - - >>> v = random_vector(10000) - >>> numpy.all(v >= 0) and numpy.all(v < 1) - True - >>> v0 = random_vector(10) - >>> v1 = random_vector(10) - >>> numpy.any(v0 == v1) - False - - """ - return numpy.random.random(size) - - -def vector_product(v0, v1, axis=0): - """Return vector perpendicular to vectors. - - >>> v = vector_product([2, 0, 0], [0, 3, 0]) - >>> numpy.allclose(v, [0, 0, 6]) - True - >>> v0 = [[2, 0, 0, 2], [0, 2, 0, 2], [0, 0, 2, 2]] - >>> v1 = [[3], [0], [0]] - >>> v = vector_product(v0, v1) - >>> numpy.allclose(v, [[0, 0, 0, 0], [0, 0, 6, 6], [0, -6, 0, -6]]) - True - >>> v0 = [[2, 0, 0], [2, 0, 0], [0, 2, 0], [2, 0, 0]] - >>> v1 = [[0, 3, 0], [0, 0, 3], [0, 0, 3], [3, 3, 3]] - >>> v = vector_product(v0, v1, axis=1) - >>> numpy.allclose(v, [[0, 0, 6], [0, -6, 0], [6, 0, 0], [0, -6, 6]]) - True - - """ - return numpy.cross(v0, v1, axis=axis) - - -def angle_between_vectors(v0, v1, directed=True, axis=0): - """Return angle between vectors. - - If directed is False, the input vectors are interpreted as undirected axes, - i.e. the maximum angle is pi/2. - - >>> a = angle_between_vectors([1, -2, 3], [-1, 2, -3]) - >>> numpy.allclose(a, math.pi) - True - >>> a = angle_between_vectors([1, -2, 3], [-1, 2, -3], directed=False) - >>> numpy.allclose(a, 0) - True - >>> v0 = [[2, 0, 0, 2], [0, 2, 0, 2], [0, 0, 2, 2]] - >>> v1 = [[3], [0], [0]] - >>> a = angle_between_vectors(v0, v1) - >>> numpy.allclose(a, [0, 1.5708, 1.5708, 0.95532]) - True - >>> v0 = [[2, 0, 0], [2, 0, 0], [0, 2, 0], [2, 0, 0]] - >>> v1 = [[0, 3, 0], [0, 0, 3], [0, 0, 3], [3, 3, 3]] - >>> a = angle_between_vectors(v0, v1, axis=1) - >>> numpy.allclose(a, [1.5708, 1.5708, 1.5708, 0.95532]) - True - - """ - v0 = numpy.array(v0, dtype=numpy.float64, copy=False) - v1 = numpy.array(v1, dtype=numpy.float64, copy=False) - dot = numpy.sum(v0 * v1, axis=axis) - dot /= vector_norm(v0, axis=axis) * vector_norm(v1, axis=axis) - return numpy.arccos(dot if directed else numpy.fabs(dot)) - - -def inverse_matrix(matrix): - """Return inverse of square transformation matrix. - - >>> M0 = random_rotation_matrix() - >>> M1 = inverse_matrix(M0.T) - >>> numpy.allclose(M1, numpy.linalg.inv(M0.T)) - True - >>> for size in range(1, 7): - ... M0 = numpy.random.rand(size, size) - ... M1 = inverse_matrix(M0) - ... if not numpy.allclose(M1, numpy.linalg.inv(M0)): print(size) - - """ - return numpy.linalg.inv(matrix) - - -def concatenate_matrices(*matrices): - """Return concatenation of series of transformation matrices. - - >>> M = numpy.random.rand(16).reshape((4, 4)) - 0.5 - >>> numpy.allclose(M, concatenate_matrices(M)) - True - >>> numpy.allclose(numpy.dot(M, M.T), concatenate_matrices(M, M.T)) - True - - """ - M = numpy.identity(4) - for i in matrices: - M = numpy.dot(M, i) - return M - - -def is_same_transform(matrix0, matrix1): - """Return True if two matrices perform same transformation. - - >>> is_same_transform(numpy.identity(4), numpy.identity(4)) - True - >>> is_same_transform(numpy.identity(4), random_rotation_matrix()) - False - - """ - matrix0 = numpy.array(matrix0, dtype=numpy.float64, copy=True) - matrix0 /= matrix0[3, 3] - matrix1 = numpy.array(matrix1, dtype=numpy.float64, copy=True) - matrix1 /= matrix1[3, 3] - return numpy.allclose(matrix0, matrix1) - - -def _import_module(name, package=None, warn=True, prefix='_py_', ignore='_'): - """Try import all public attributes from module into global namespace. - - Existing attributes with name clashes are renamed with prefix. - Attributes starting with underscore are ignored by default. - - Return True on successful import. - - """ - import warnings - from importlib import import_module - try: - if not package: - module = import_module(name) - else: - module = import_module('.' + name, package=package) - except ImportError: - if warn: - warnings.warn("failed to import module %s" % name) - else: - for attr in dir(module): - if ignore and attr.startswith(ignore): - continue - if prefix: - if attr in globals(): - globals()[prefix + attr] = globals()[attr] - elif warn: - warnings.warn("no Python implementation of " + attr) - globals()[attr] = getattr(module, attr) - return True - - -_import_module('_transformations') - -if __name__ == "__main__": - import doctest - import random # used in doctests - numpy.set_printoptions(suppress=True, precision=5) - doctest.testmod() \ No newline at end of file +# -*- coding: utf-8 -*- +# transformations.py + +# Copyright (c) 2006-2015, Christoph Gohlke +# Copyright (c) 2006-2015, The Regents of the University of California +# Produced at the Laboratory for Fluorescence Dynamics +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of the copyright holders nor the names of any +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +"""Homogeneous Transformation Matrices and Quaternions. + +A library for calculating 4x4 matrices for translating, rotating, reflecting, +scaling, shearing, projecting, orthogonalizing, and superimposing arrays of +3D homogeneous coordinates as well as for converting between rotation matrices, +Euler angles, and quaternions. Also includes an Arcball control object and +functions to decompose transformation matrices. + +:Author: + `Christoph Gohlke `_ + +:Organization: + Laboratory for Fluorescence Dynamics, University of California, Irvine + +:Version: 2015.07.18 + +Requirements +------------ +* `CPython 2.7 or 3.4 `_ +* `Numpy 1.9 `_ +* `Transformations.c 2015.07.18 `_ + (recommended for speedup of some functions) + +Notes +----- +The API is not stable yet and is expected to change between revisions. + +This Python code is not optimized for speed. Refer to the transformations.c +module for a faster implementation of some functions. + +Documentation in HTML format can be generated with epydoc. + +Matrices (M) can be inverted using numpy.linalg.inv(M), be concatenated using +numpy.dot(M0, M1), or transform homogeneous coordinate arrays (v) using +numpy.dot(M, v) for shape (4, \*) column vectors, respectively +numpy.dot(v, M.T) for shape (\*, 4) row vectors ("array of points"). + +This module follows the "column vectors on the right" and "row major storage" +(C contiguous) conventions. The translation components are in the right column +of the transformation matrix, i.e. M[:3, 3]. +The transpose of the transformation matrices may have to be used to interface +with other graphics systems, e.g. with OpenGL's glMultMatrixd(). See also [16]. + +Calculations are carried out with numpy.float64 precision. + +Vector, point, quaternion, and matrix function arguments are expected to be +"array like", i.e. tuple, list, or numpy arrays. + +Return types are numpy arrays unless specified otherwise. + +Angles are in radians unless specified otherwise. + +Quaternions w+ix+jy+kz are represented as [w, x, y, z]. + +A triple of Euler angles can be applied/interpreted in 24 ways, which can +be specified using a 4 character string or encoded 4-tuple: + + *Axes 4-string*: e.g. 'sxyz' or 'ryxy' + + - first character : rotations are applied to 's'tatic or 'r'otating frame + - remaining characters : successive rotation axis 'x', 'y', or 'z' + + *Axes 4-tuple*: e.g. (0, 0, 0, 0) or (1, 1, 1, 1) + + - inner axis: code of axis ('x':0, 'y':1, 'z':2) of rightmost matrix. + - parity : even (0) if inner axis 'x' is followed by 'y', 'y' is followed + by 'z', or 'z' is followed by 'x'. Otherwise odd (1). + - repetition : first and last axis are same (1) or different (0). + - frame : rotations are applied to static (0) or rotating (1) frame. + +Other Python packages and modules for 3D transformations and quaternions: + +* `Transforms3d `_ + includes most code of this module. +* `Blender.mathutils `_ +* `numpy-dtypes `_ + +References +---------- +(1) Matrices and transformations. Ronald Goldman. + In "Graphics Gems I", pp 472-475. Morgan Kaufmann, 1990. +(2) More matrices and transformations: shear and pseudo-perspective. + Ronald Goldman. In "Graphics Gems II", pp 320-323. Morgan Kaufmann, 1991. +(3) Decomposing a matrix into simple transformations. Spencer Thomas. + In "Graphics Gems II", pp 320-323. Morgan Kaufmann, 1991. +(4) Recovering the data from the transformation matrix. Ronald Goldman. + In "Graphics Gems II", pp 324-331. Morgan Kaufmann, 1991. +(5) Euler angle conversion. Ken Shoemake. + In "Graphics Gems IV", pp 222-229. Morgan Kaufmann, 1994. +(6) Arcball rotation control. Ken Shoemake. + In "Graphics Gems IV", pp 175-192. Morgan Kaufmann, 1994. +(7) Representing attitude: Euler angles, unit quaternions, and rotation + vectors. James Diebel. 2006. +(8) A discussion of the solution for the best rotation to relate two sets + of vectors. W Kabsch. Acta Cryst. 1978. A34, 827-828. +(9) Closed-form solution of absolute orientation using unit quaternions. + BKP Horn. J Opt Soc Am A. 1987. 4(4):629-642. +(10) Quaternions. Ken Shoemake. + http://www.sfu.ca/~jwa3/cmpt461/files/quatut.pdf +(11) From quaternion to matrix and back. JMP van Waveren. 2005. + http://www.intel.com/cd/ids/developer/asmo-na/eng/293748.htm +(12) Uniform random rotations. Ken Shoemake. + In "Graphics Gems III", pp 124-132. Morgan Kaufmann, 1992. +(13) Quaternion in molecular modeling. CFF Karney. + J Mol Graph Mod, 25(5):595-604 +(14) New method for extracting the quaternion from a rotation matrix. + Itzhack Y Bar-Itzhack, J Guid Contr Dynam. 2000. 23(6): 1085-1087. +(15) Multiple View Geometry in Computer Vision. Hartley and Zissermann. + Cambridge University Press; 2nd Ed. 2004. Chapter 4, Algorithm 4.7, p 130. +(16) Column Vectors vs. Row Vectors. + http://steve.hollasch.net/cgindex/math/matrix/column-vec.html + +Examples +-------- +>>> alpha, beta, gamma = 0.123, -1.234, 2.345 +>>> origin, xaxis, yaxis, zaxis = [0, 0, 0], [1, 0, 0], [0, 1, 0], [0, 0, 1] +>>> I = identity_matrix() +>>> Rx = rotation_matrix(alpha, xaxis) +>>> Ry = rotation_matrix(beta, yaxis) +>>> Rz = rotation_matrix(gamma, zaxis) +>>> R = concatenate_matrices(Rx, Ry, Rz) +>>> euler = euler_from_matrix(R, 'rxyz') +>>> numpy.allclose([alpha, beta, gamma], euler) +True +>>> Re = euler_matrix(alpha, beta, gamma, 'rxyz') +>>> is_same_transform(R, Re) +True +>>> al, be, ga = euler_from_matrix(Re, 'rxyz') +>>> is_same_transform(Re, euler_matrix(al, be, ga, 'rxyz')) +True +>>> qx = quaternion_about_axis(alpha, xaxis) +>>> qy = quaternion_about_axis(beta, yaxis) +>>> qz = quaternion_about_axis(gamma, zaxis) +>>> q = quaternion_multiply(qx, qy) +>>> q = quaternion_multiply(q, qz) +>>> Rq = quaternion_matrix(q) +>>> is_same_transform(R, Rq) +True +>>> S = scale_matrix(1.23, origin) +>>> T = translation_matrix([1, 2, 3]) +>>> Z = shear_matrix(beta, xaxis, origin, zaxis) +>>> R = random_rotation_matrix(numpy.random.rand(3)) +>>> M = concatenate_matrices(T, R, Z, S) +>>> scale, shear, angles, trans, persp = decompose_matrix(M) +>>> numpy.allclose(scale, 1.23) +True +>>> numpy.allclose(trans, [1, 2, 3]) +True +>>> numpy.allclose(shear, [0, math.tan(beta), 0]) +True +>>> is_same_transform(R, euler_matrix(axes='sxyz', *angles)) +True +>>> M1 = compose_matrix(scale, shear, angles, trans, persp) +>>> is_same_transform(M, M1) +True +>>> v0, v1 = random_vector(3), random_vector(3) +>>> M = rotation_matrix(angle_between_vectors(v0, v1), vector_product(v0, v1)) +>>> v2 = numpy.dot(v0, M[:3,:3].T) +>>> numpy.allclose(unit_vector(v1), unit_vector(v2)) +True + +""" + +from __future__ import division, print_function + +import math + +import numpy + +__version__ = '2015.07.18' +__docformat__ = 'restructuredtext en' +__all__ = () + + +def identity_matrix(): + """Return 4x4 identity/unit matrix. + + >>> I = identity_matrix() + >>> numpy.allclose(I, numpy.dot(I, I)) + True + >>> numpy.sum(I), numpy.trace(I) + (4.0, 4.0) + >>> numpy.allclose(I, numpy.identity(4)) + True + + """ + return numpy.identity(4) + + +def translation_matrix(direction): + """Return matrix to translate by direction vector. + + >>> v = numpy.random.random(3) - 0.5 + >>> numpy.allclose(v, translation_matrix(v)[:3, 3]) + True + + """ + M = numpy.identity(4) + M[:3, 3] = direction[:3] + return M + + +def translation_from_matrix(matrix): + """Return translation vector from translation matrix. + + >>> v0 = numpy.random.random(3) - 0.5 + >>> v1 = translation_from_matrix(translation_matrix(v0)) + >>> numpy.allclose(v0, v1) + True + + """ + return numpy.array(matrix, copy=False)[:3, 3].copy() + + +def reflection_matrix(point, normal): + """Return matrix to mirror at plane defined by point and normal vector. + + >>> v0 = numpy.random.random(4) - 0.5 + >>> v0[3] = 1. + >>> v1 = numpy.random.random(3) - 0.5 + >>> R = reflection_matrix(v0, v1) + >>> numpy.allclose(2, numpy.trace(R)) + True + >>> numpy.allclose(v0, numpy.dot(R, v0)) + True + >>> v2 = v0.copy() + >>> v2[:3] += v1 + >>> v3 = v0.copy() + >>> v2[:3] -= v1 + >>> numpy.allclose(v2, numpy.dot(R, v3)) + True + + """ + normal = unit_vector(normal[:3]) + M = numpy.identity(4) + M[:3, :3] -= 2.0 * numpy.outer(normal, normal) + M[:3, 3] = (2.0 * numpy.dot(point[:3], normal)) * normal + return M + + +def reflection_from_matrix(matrix): + """Return mirror plane point and normal vector from reflection matrix. + + >>> v0 = numpy.random.random(3) - 0.5 + >>> v1 = numpy.random.random(3) - 0.5 + >>> M0 = reflection_matrix(v0, v1) + >>> point, normal = reflection_from_matrix(M0) + >>> M1 = reflection_matrix(point, normal) + >>> is_same_transform(M0, M1) + True + + """ + M = numpy.array(matrix, dtype=numpy.float64, copy=False) + # normal: unit eigenvector corresponding to eigenvalue -1 + w, V = numpy.linalg.eig(M[:3, :3]) + i = numpy.where(abs(numpy.real(w) + 1.0) < 1e-8)[0] + if not len(i): + raise ValueError("no unit eigenvector corresponding to eigenvalue -1") + normal = numpy.real(V[:, i[0]]).squeeze() + # point: any unit eigenvector corresponding to eigenvalue 1 + w, V = numpy.linalg.eig(M) + i = numpy.where(abs(numpy.real(w) - 1.0) < 1e-8)[0] + if not len(i): + raise ValueError("no unit eigenvector corresponding to eigenvalue 1") + point = numpy.real(V[:, i[-1]]).squeeze() + point /= point[3] + return point, normal + + +def rotation_matrix(angle, direction, point=None): + """Return matrix to rotate about axis defined by point and direction. + + >>> R = rotation_matrix(math.pi/2, [0, 0, 1], [1, 0, 0]) + >>> numpy.allclose(numpy.dot(R, [0, 0, 0, 1]), [1, -1, 0, 1]) + True + >>> angle = (random.random() - 0.5) * (2*math.pi) + >>> direc = numpy.random.random(3) - 0.5 + >>> point = numpy.random.random(3) - 0.5 + >>> R0 = rotation_matrix(angle, direc, point) + >>> R1 = rotation_matrix(angle-2*math.pi, direc, point) + >>> is_same_transform(R0, R1) + True + >>> R0 = rotation_matrix(angle, direc, point) + >>> R1 = rotation_matrix(-angle, -direc, point) + >>> is_same_transform(R0, R1) + True + >>> I = numpy.identity(4, numpy.float64) + >>> numpy.allclose(I, rotation_matrix(math.pi*2, direc)) + True + >>> numpy.allclose(2, numpy.trace(rotation_matrix(math.pi/2, + ... direc, point))) + True + + """ + sina = math.sin(angle) + cosa = math.cos(angle) + direction = unit_vector(direction[:3]) + # rotation matrix around unit vector + R = numpy.diag([cosa, cosa, cosa]) + R += numpy.outer(direction, direction) * (1.0 - cosa) + direction *= sina + R += numpy.array([[ 0.0, -direction[2], direction[1]], + [ direction[2], 0.0, -direction[0]], + [-direction[1], direction[0], 0.0]]) + M = numpy.identity(4) + M[:3, :3] = R + if point is not None: + # rotation not around origin + point = numpy.array(point[:3], dtype=numpy.float64, copy=False) + M[:3, 3] = point - numpy.dot(R, point) + return M + + +def rotation_from_matrix(matrix): + """Return rotation angle and axis from rotation matrix. + + >>> angle = (random.random() - 0.5) * (2*math.pi) + >>> direc = numpy.random.random(3) - 0.5 + >>> point = numpy.random.random(3) - 0.5 + >>> R0 = rotation_matrix(angle, direc, point) + >>> angle, direc, point = rotation_from_matrix(R0) + >>> R1 = rotation_matrix(angle, direc, point) + >>> is_same_transform(R0, R1) + True + + """ + R = numpy.array(matrix, dtype=numpy.float64, copy=False) + R33 = R[:3, :3] + # direction: unit eigenvector of R33 corresponding to eigenvalue of 1 + w, W = numpy.linalg.eig(R33.T) + i = numpy.where(abs(numpy.real(w) - 1.0) < 1e-8)[0] + if not len(i): + raise ValueError("no unit eigenvector corresponding to eigenvalue 1") + direction = numpy.real(W[:, i[-1]]).squeeze() + # point: unit eigenvector of R33 corresponding to eigenvalue of 1 + w, Q = numpy.linalg.eig(R) + i = numpy.where(abs(numpy.real(w) - 1.0) < 1e-8)[0] + if not len(i): + raise ValueError("no unit eigenvector corresponding to eigenvalue 1") + point = numpy.real(Q[:, i[-1]]).squeeze() + point /= point[3] + # rotation angle depending on direction + cosa = (numpy.trace(R33) - 1.0) / 2.0 + if abs(direction[2]) > 1e-8: + sina = (R[1, 0] + (cosa-1.0)*direction[0]*direction[1]) / direction[2] + elif abs(direction[1]) > 1e-8: + sina = (R[0, 2] + (cosa-1.0)*direction[0]*direction[2]) / direction[1] + else: + sina = (R[2, 1] + (cosa-1.0)*direction[1]*direction[2]) / direction[0] + angle = math.atan2(sina, cosa) + return angle, direction, point + + +def scale_matrix(factor, origin=None, direction=None): + """Return matrix to scale by factor around origin in direction. + + Use factor -1 for point symmetry. + + >>> v = (numpy.random.rand(4, 5) - 0.5) * 20 + >>> v[3] = 1 + >>> S = scale_matrix(-1.234) + >>> numpy.allclose(numpy.dot(S, v)[:3], -1.234*v[:3]) + True + >>> factor = random.random() * 10 - 5 + >>> origin = numpy.random.random(3) - 0.5 + >>> direct = numpy.random.random(3) - 0.5 + >>> S = scale_matrix(factor, origin) + >>> S = scale_matrix(factor, origin, direct) + + """ + if direction is None: + # uniform scaling + M = numpy.diag([factor, factor, factor, 1.0]) + if origin is not None: + M[:3, 3] = origin[:3] + M[:3, 3] *= 1.0 - factor + else: + # nonuniform scaling + direction = unit_vector(direction[:3]) + factor = 1.0 - factor + M = numpy.identity(4) + M[:3, :3] -= factor * numpy.outer(direction, direction) + if origin is not None: + M[:3, 3] = (factor * numpy.dot(origin[:3], direction)) * direction + return M + + +def scale_from_matrix(matrix): + """Return scaling factor, origin and direction from scaling matrix. + + >>> factor = random.random() * 10 - 5 + >>> origin = numpy.random.random(3) - 0.5 + >>> direct = numpy.random.random(3) - 0.5 + >>> S0 = scale_matrix(factor, origin) + >>> factor, origin, direction = scale_from_matrix(S0) + >>> S1 = scale_matrix(factor, origin, direction) + >>> is_same_transform(S0, S1) + True + >>> S0 = scale_matrix(factor, origin, direct) + >>> factor, origin, direction = scale_from_matrix(S0) + >>> S1 = scale_matrix(factor, origin, direction) + >>> is_same_transform(S0, S1) + True + + """ + M = numpy.array(matrix, dtype=numpy.float64, copy=False) + M33 = M[:3, :3] + factor = numpy.trace(M33) - 2.0 + try: + # direction: unit eigenvector corresponding to eigenvalue factor + w, V = numpy.linalg.eig(M33) + i = numpy.where(abs(numpy.real(w) - factor) < 1e-8)[0][0] + direction = numpy.real(V[:, i]).squeeze() + direction /= vector_norm(direction) + except IndexError: + # uniform scaling + factor = (factor + 2.0) / 3.0 + direction = None + # origin: any eigenvector corresponding to eigenvalue 1 + w, V = numpy.linalg.eig(M) + i = numpy.where(abs(numpy.real(w) - 1.0) < 1e-8)[0] + if not len(i): + raise ValueError("no eigenvector corresponding to eigenvalue 1") + origin = numpy.real(V[:, i[-1]]).squeeze() + origin /= origin[3] + return factor, origin, direction + + +def projection_matrix(point, normal, direction=None, + perspective=None, pseudo=False): + """Return matrix to project onto plane defined by point and normal. + + Using either perspective point, projection direction, or none of both. + + If pseudo is True, perspective projections will preserve relative depth + such that Perspective = dot(Orthogonal, PseudoPerspective). + + >>> P = projection_matrix([0, 0, 0], [1, 0, 0]) + >>> numpy.allclose(P[1:, 1:], numpy.identity(4)[1:, 1:]) + True + >>> point = numpy.random.random(3) - 0.5 + >>> normal = numpy.random.random(3) - 0.5 + >>> direct = numpy.random.random(3) - 0.5 + >>> persp = numpy.random.random(3) - 0.5 + >>> P0 = projection_matrix(point, normal) + >>> P1 = projection_matrix(point, normal, direction=direct) + >>> P2 = projection_matrix(point, normal, perspective=persp) + >>> P3 = projection_matrix(point, normal, perspective=persp, pseudo=True) + >>> is_same_transform(P2, numpy.dot(P0, P3)) + True + >>> P = projection_matrix([3, 0, 0], [1, 1, 0], [1, 0, 0]) + >>> v0 = (numpy.random.rand(4, 5) - 0.5) * 20 + >>> v0[3] = 1 + >>> v1 = numpy.dot(P, v0) + >>> numpy.allclose(v1[1], v0[1]) + True + >>> numpy.allclose(v1[0], 3-v1[1]) + True + + """ + M = numpy.identity(4) + point = numpy.array(point[:3], dtype=numpy.float64, copy=False) + normal = unit_vector(normal[:3]) + if perspective is not None: + # perspective projection + perspective = numpy.array(perspective[:3], dtype=numpy.float64, + copy=False) + M[0, 0] = M[1, 1] = M[2, 2] = numpy.dot(perspective-point, normal) + M[:3, :3] -= numpy.outer(perspective, normal) + if pseudo: + # preserve relative depth + M[:3, :3] -= numpy.outer(normal, normal) + M[:3, 3] = numpy.dot(point, normal) * (perspective+normal) + else: + M[:3, 3] = numpy.dot(point, normal) * perspective + M[3, :3] = -normal + M[3, 3] = numpy.dot(perspective, normal) + elif direction is not None: + # parallel projection + direction = numpy.array(direction[:3], dtype=numpy.float64, copy=False) + scale = numpy.dot(direction, normal) + M[:3, :3] -= numpy.outer(direction, normal) / scale + M[:3, 3] = direction * (numpy.dot(point, normal) / scale) + else: + # orthogonal projection + M[:3, :3] -= numpy.outer(normal, normal) + M[:3, 3] = numpy.dot(point, normal) * normal + return M + + +def projection_from_matrix(matrix, pseudo=False): + """Return projection plane and perspective point from projection matrix. + + Return values are same as arguments for projection_matrix function: + point, normal, direction, perspective, and pseudo. + + >>> point = numpy.random.random(3) - 0.5 + >>> normal = numpy.random.random(3) - 0.5 + >>> direct = numpy.random.random(3) - 0.5 + >>> persp = numpy.random.random(3) - 0.5 + >>> P0 = projection_matrix(point, normal) + >>> result = projection_from_matrix(P0) + >>> P1 = projection_matrix(*result) + >>> is_same_transform(P0, P1) + True + >>> P0 = projection_matrix(point, normal, direct) + >>> result = projection_from_matrix(P0) + >>> P1 = projection_matrix(*result) + >>> is_same_transform(P0, P1) + True + >>> P0 = projection_matrix(point, normal, perspective=persp, pseudo=False) + >>> result = projection_from_matrix(P0, pseudo=False) + >>> P1 = projection_matrix(*result) + >>> is_same_transform(P0, P1) + True + >>> P0 = projection_matrix(point, normal, perspective=persp, pseudo=True) + >>> result = projection_from_matrix(P0, pseudo=True) + >>> P1 = projection_matrix(*result) + >>> is_same_transform(P0, P1) + True + + """ + M = numpy.array(matrix, dtype=numpy.float64, copy=False) + M33 = M[:3, :3] + w, V = numpy.linalg.eig(M) + i = numpy.where(abs(numpy.real(w) - 1.0) < 1e-8)[0] + if not pseudo and len(i): + # point: any eigenvector corresponding to eigenvalue 1 + point = numpy.real(V[:, i[-1]]).squeeze() + point /= point[3] + # direction: unit eigenvector corresponding to eigenvalue 0 + w, V = numpy.linalg.eig(M33) + i = numpy.where(abs(numpy.real(w)) < 1e-8)[0] + if not len(i): + raise ValueError("no eigenvector corresponding to eigenvalue 0") + direction = numpy.real(V[:, i[0]]).squeeze() + direction /= vector_norm(direction) + # normal: unit eigenvector of M33.T corresponding to eigenvalue 0 + w, V = numpy.linalg.eig(M33.T) + i = numpy.where(abs(numpy.real(w)) < 1e-8)[0] + if len(i): + # parallel projection + normal = numpy.real(V[:, i[0]]).squeeze() + normal /= vector_norm(normal) + return point, normal, direction, None, False + else: + # orthogonal projection, where normal equals direction vector + return point, direction, None, None, False + else: + # perspective projection + i = numpy.where(abs(numpy.real(w)) > 1e-8)[0] + if not len(i): + raise ValueError( + "no eigenvector not corresponding to eigenvalue 0") + point = numpy.real(V[:, i[-1]]).squeeze() + point /= point[3] + normal = - M[3, :3] + perspective = M[:3, 3] / numpy.dot(point[:3], normal) + if pseudo: + perspective -= normal + return point, normal, None, perspective, pseudo + + +def clip_matrix(left, right, bottom, top, near, far, perspective=False): + """Return matrix to obtain normalized device coordinates from frustum. + + The frustum bounds are axis-aligned along x (left, right), + y (bottom, top) and z (near, far). + + Normalized device coordinates are in range [-1, 1] if coordinates are + inside the frustum. + + If perspective is True the frustum is a truncated pyramid with the + perspective point at origin and direction along z axis, otherwise an + orthographic canonical view volume (a box). + + Homogeneous coordinates transformed by the perspective clip matrix + need to be dehomogenized (divided by w coordinate). + + >>> frustum = numpy.random.rand(6) + >>> frustum[1] += frustum[0] + >>> frustum[3] += frustum[2] + >>> frustum[5] += frustum[4] + >>> M = clip_matrix(perspective=False, *frustum) + >>> numpy.dot(M, [frustum[0], frustum[2], frustum[4], 1]) + array([-1., -1., -1., 1.]) + >>> numpy.dot(M, [frustum[1], frustum[3], frustum[5], 1]) + array([ 1., 1., 1., 1.]) + >>> M = clip_matrix(perspective=True, *frustum) + >>> v = numpy.dot(M, [frustum[0], frustum[2], frustum[4], 1]) + >>> v / v[3] + array([-1., -1., -1., 1.]) + >>> v = numpy.dot(M, [frustum[1], frustum[3], frustum[4], 1]) + >>> v / v[3] + array([ 1., 1., -1., 1.]) + + """ + if left >= right or bottom >= top or near >= far: + raise ValueError("invalid frustum") + if perspective: + if near <= _EPS: + raise ValueError("invalid frustum: near <= 0") + t = 2.0 * near + M = [[t/(left-right), 0.0, (right+left)/(right-left), 0.0], + [0.0, t/(bottom-top), (top+bottom)/(top-bottom), 0.0], + [0.0, 0.0, (far+near)/(near-far), t*far/(far-near)], + [0.0, 0.0, -1.0, 0.0]] + else: + M = [[2.0/(right-left), 0.0, 0.0, (right+left)/(left-right)], + [0.0, 2.0/(top-bottom), 0.0, (top+bottom)/(bottom-top)], + [0.0, 0.0, 2.0/(far-near), (far+near)/(near-far)], + [0.0, 0.0, 0.0, 1.0]] + return numpy.array(M) + + +def shear_matrix(angle, direction, point, normal): + """Return matrix to shear by angle along direction vector on shear plane. + + The shear plane is defined by a point and normal vector. The direction + vector must be orthogonal to the plane's normal vector. + + A point P is transformed by the shear matrix into P" such that + the vector P-P" is parallel to the direction vector and its extent is + given by the angle of P-P'-P", where P' is the orthogonal projection + of P onto the shear plane. + + >>> angle = (random.random() - 0.5) * 4*math.pi + >>> direct = numpy.random.random(3) - 0.5 + >>> point = numpy.random.random(3) - 0.5 + >>> normal = numpy.cross(direct, numpy.random.random(3)) + >>> S = shear_matrix(angle, direct, point, normal) + >>> numpy.allclose(1, numpy.linalg.det(S)) + True + + """ + normal = unit_vector(normal[:3]) + direction = unit_vector(direction[:3]) + if abs(numpy.dot(normal, direction)) > 1e-6: + raise ValueError("direction and normal vectors are not orthogonal") + angle = math.tan(angle) + M = numpy.identity(4) + M[:3, :3] += angle * numpy.outer(direction, normal) + M[:3, 3] = -angle * numpy.dot(point[:3], normal) * direction + return M + + +def shear_from_matrix(matrix): + """Return shear angle, direction and plane from shear matrix. + + >>> angle = (random.random() - 0.5) * 4*math.pi + >>> direct = numpy.random.random(3) - 0.5 + >>> point = numpy.random.random(3) - 0.5 + >>> normal = numpy.cross(direct, numpy.random.random(3)) + >>> S0 = shear_matrix(angle, direct, point, normal) + >>> angle, direct, point, normal = shear_from_matrix(S0) + >>> S1 = shear_matrix(angle, direct, point, normal) + >>> is_same_transform(S0, S1) + True + + """ + M = numpy.array(matrix, dtype=numpy.float64, copy=False) + M33 = M[:3, :3] + # normal: cross independent eigenvectors corresponding to the eigenvalue 1 + w, V = numpy.linalg.eig(M33) + i = numpy.where(abs(numpy.real(w) - 1.0) < 1e-4)[0] + if len(i) < 2: + raise ValueError("no two linear independent eigenvectors found %s" % w) + V = numpy.real(V[:, i]).squeeze().T + lenorm = -1.0 + for i0, i1 in ((0, 1), (0, 2), (1, 2)): + n = numpy.cross(V[i0], V[i1]) + w = vector_norm(n) + if w > lenorm: + lenorm = w + normal = n + normal /= lenorm + # direction and angle + direction = numpy.dot(M33 - numpy.identity(3), normal) + angle = vector_norm(direction) + direction /= angle + angle = math.atan(angle) + # point: eigenvector corresponding to eigenvalue 1 + w, V = numpy.linalg.eig(M) + i = numpy.where(abs(numpy.real(w) - 1.0) < 1e-8)[0] + if not len(i): + raise ValueError("no eigenvector corresponding to eigenvalue 1") + point = numpy.real(V[:, i[-1]]).squeeze() + point /= point[3] + return angle, direction, point, normal + + +def decompose_matrix(matrix): + """Return sequence of transformations from transformation matrix. + + matrix : array_like + Non-degenerative homogeneous transformation matrix + + Return tuple of: + scale : vector of 3 scaling factors + shear : list of shear factors for x-y, x-z, y-z axes + angles : list of Euler angles about static x, y, z axes + translate : translation vector along x, y, z axes + perspective : perspective partition of matrix + + Raise ValueError if matrix is of wrong type or degenerative. + + >>> T0 = translation_matrix([1, 2, 3]) + >>> scale, shear, angles, trans, persp = decompose_matrix(T0) + >>> T1 = translation_matrix(trans) + >>> numpy.allclose(T0, T1) + True + >>> S = scale_matrix(0.123) + >>> scale, shear, angles, trans, persp = decompose_matrix(S) + >>> scale[0] + 0.123 + >>> R0 = euler_matrix(1, 2, 3) + >>> scale, shear, angles, trans, persp = decompose_matrix(R0) + >>> R1 = euler_matrix(*angles) + >>> numpy.allclose(R0, R1) + True + + """ + M = numpy.array(matrix, dtype=numpy.float64, copy=True).T + if abs(M[3, 3]) < _EPS: + raise ValueError("M[3, 3] is zero") + M /= M[3, 3] + P = M.copy() + P[:, 3] = 0.0, 0.0, 0.0, 1.0 + if not numpy.linalg.det(P): + raise ValueError("matrix is singular") + + scale = numpy.zeros((3, )) + shear = [0.0, 0.0, 0.0] + angles = [0.0, 0.0, 0.0] + + if any(abs(M[:3, 3]) > _EPS): + perspective = numpy.dot(M[:, 3], numpy.linalg.inv(P.T)) + M[:, 3] = 0.0, 0.0, 0.0, 1.0 + else: + perspective = numpy.array([0.0, 0.0, 0.0, 1.0]) + + translate = M[3, :3].copy() + M[3, :3] = 0.0 + + row = M[:3, :3].copy() + scale[0] = vector_norm(row[0]) + row[0] /= scale[0] + shear[0] = numpy.dot(row[0], row[1]) + row[1] -= row[0] * shear[0] + scale[1] = vector_norm(row[1]) + row[1] /= scale[1] + shear[0] /= scale[1] + shear[1] = numpy.dot(row[0], row[2]) + row[2] -= row[0] * shear[1] + shear[2] = numpy.dot(row[1], row[2]) + row[2] -= row[1] * shear[2] + scale[2] = vector_norm(row[2]) + row[2] /= scale[2] + shear[1:] /= scale[2] + + if numpy.dot(row[0], numpy.cross(row[1], row[2])) < 0: + numpy.negative(scale, scale) + numpy.negative(row, row) + + angles[1] = math.asin(-row[0, 2]) + if math.cos(angles[1]): + angles[0] = math.atan2(row[1, 2], row[2, 2]) + angles[2] = math.atan2(row[0, 1], row[0, 0]) + else: + #angles[0] = math.atan2(row[1, 0], row[1, 1]) + angles[0] = math.atan2(-row[2, 1], row[1, 1]) + angles[2] = 0.0 + + return scale, shear, angles, translate, perspective + + +def compose_matrix(scale=None, shear=None, angles=None, translate=None, + perspective=None): + """Return transformation matrix from sequence of transformations. + + This is the inverse of the decompose_matrix function. + + Sequence of transformations: + scale : vector of 3 scaling factors + shear : list of shear factors for x-y, x-z, y-z axes + angles : list of Euler angles about static x, y, z axes + translate : translation vector along x, y, z axes + perspective : perspective partition of matrix + + >>> scale = numpy.random.random(3) - 0.5 + >>> shear = numpy.random.random(3) - 0.5 + >>> angles = (numpy.random.random(3) - 0.5) * (2*math.pi) + >>> trans = numpy.random.random(3) - 0.5 + >>> persp = numpy.random.random(4) - 0.5 + >>> M0 = compose_matrix(scale, shear, angles, trans, persp) + >>> result = decompose_matrix(M0) + >>> M1 = compose_matrix(*result) + >>> is_same_transform(M0, M1) + True + + """ + M = numpy.identity(4) + if perspective is not None: + P = numpy.identity(4) + P[3, :] = perspective[:4] + M = numpy.dot(M, P) + if translate is not None: + T = numpy.identity(4) + T[:3, 3] = translate[:3] + M = numpy.dot(M, T) + if angles is not None: + R = euler_matrix(angles[0], angles[1], angles[2], 'sxyz') + M = numpy.dot(M, R) + if shear is not None: + Z = numpy.identity(4) + Z[1, 2] = shear[2] + Z[0, 2] = shear[1] + Z[0, 1] = shear[0] + M = numpy.dot(M, Z) + if scale is not None: + S = numpy.identity(4) + S[0, 0] = scale[0] + S[1, 1] = scale[1] + S[2, 2] = scale[2] + M = numpy.dot(M, S) + M /= M[3, 3] + return M + + +def orthogonalization_matrix(lengths, angles): + """Return orthogonalization matrix for crystallographic cell coordinates. + + Angles are expected in degrees. + + The de-orthogonalization matrix is the inverse. + + >>> O = orthogonalization_matrix([10, 10, 10], [90, 90, 90]) + >>> numpy.allclose(O[:3, :3], numpy.identity(3, float) * 10) + True + >>> O = orthogonalization_matrix([9.8, 12.0, 15.5], [87.2, 80.7, 69.7]) + >>> numpy.allclose(numpy.sum(O), 43.063229) + True + + """ + a, b, c = lengths + angles = numpy.radians(angles) + sina, sinb, _ = numpy.sin(angles) + cosa, cosb, cosg = numpy.cos(angles) + co = (cosa * cosb - cosg) / (sina * sinb) + return numpy.array([ + [ a*sinb*math.sqrt(1.0-co*co), 0.0, 0.0, 0.0], + [-a*sinb*co, b*sina, 0.0, 0.0], + [ a*cosb, b*cosa, c, 0.0], + [ 0.0, 0.0, 0.0, 1.0]]) + + +def affine_matrix_from_points(v0, v1, shear=True, scale=True, usesvd=True): + """Return affine transform matrix to register two point sets. + + v0 and v1 are shape (ndims, \*) arrays of at least ndims non-homogeneous + coordinates, where ndims is the dimensionality of the coordinate space. + + If shear is False, a similarity transformation matrix is returned. + If also scale is False, a rigid/Euclidean transformation matrix + is returned. + + By default the algorithm by Hartley and Zissermann [15] is used. + If usesvd is True, similarity and Euclidean transformation matrices + are calculated by minimizing the weighted sum of squared deviations + (RMSD) according to the algorithm by Kabsch [8]. + Otherwise, and if ndims is 3, the quaternion based algorithm by Horn [9] + is used, which is slower when using this Python implementation. + + The returned matrix performs rotation, translation and uniform scaling + (if specified). + + >>> v0 = [[0, 1031, 1031, 0], [0, 0, 1600, 1600]] + >>> v1 = [[675, 826, 826, 677], [55, 52, 281, 277]] + >>> affine_matrix_from_points(v0, v1) + array([[ 0.14549, 0.00062, 675.50008], + [ 0.00048, 0.14094, 53.24971], + [ 0. , 0. , 1. ]]) + >>> T = translation_matrix(numpy.random.random(3)-0.5) + >>> R = random_rotation_matrix(numpy.random.random(3)) + >>> S = scale_matrix(random.random()) + >>> M = concatenate_matrices(T, R, S) + >>> v0 = (numpy.random.rand(4, 100) - 0.5) * 20 + >>> v0[3] = 1 + >>> v1 = numpy.dot(M, v0) + >>> v0[:3] += numpy.random.normal(0, 1e-8, 300).reshape(3, -1) + >>> M = affine_matrix_from_points(v0[:3], v1[:3]) + >>> numpy.allclose(v1, numpy.dot(M, v0)) + True + + More examples in superimposition_matrix() + + """ + v0 = numpy.array(v0, dtype=numpy.float64, copy=True) + v1 = numpy.array(v1, dtype=numpy.float64, copy=True) + + ndims = v0.shape[0] + if ndims < 2 or v0.shape[1] < ndims or v0.shape != v1.shape: + raise ValueError("input arrays are of wrong shape or type") + + # move centroids to origin + t0 = -numpy.mean(v0, axis=1) + M0 = numpy.identity(ndims+1) + M0[:ndims, ndims] = t0 + v0 += t0.reshape(ndims, 1) + t1 = -numpy.mean(v1, axis=1) + M1 = numpy.identity(ndims+1) + M1[:ndims, ndims] = t1 + v1 += t1.reshape(ndims, 1) + + if shear: + # Affine transformation + A = numpy.concatenate((v0, v1), axis=0) + u, s, vh = numpy.linalg.svd(A.T) + vh = vh[:ndims].T + B = vh[:ndims] + C = vh[ndims:2*ndims] + t = numpy.dot(C, numpy.linalg.pinv(B)) + t = numpy.concatenate((t, numpy.zeros((ndims, 1))), axis=1) + M = numpy.vstack((t, ((0.0,)*ndims) + (1.0,))) + elif usesvd or ndims != 3: + # Rigid transformation via SVD of covariance matrix + u, s, vh = numpy.linalg.svd(numpy.dot(v1, v0.T)) + # rotation matrix from SVD orthonormal bases + R = numpy.dot(u, vh) + if numpy.linalg.det(R) < 0.0: + # R does not constitute right handed system + R -= numpy.outer(u[:, ndims-1], vh[ndims-1, :]*2.0) + s[-1] *= -1.0 + # homogeneous transformation matrix + M = numpy.identity(ndims+1) + M[:ndims, :ndims] = R + else: + # Rigid transformation matrix via quaternion + # compute symmetric matrix N + xx, yy, zz = numpy.sum(v0 * v1, axis=1) + xy, yz, zx = numpy.sum(v0 * numpy.roll(v1, -1, axis=0), axis=1) + xz, yx, zy = numpy.sum(v0 * numpy.roll(v1, -2, axis=0), axis=1) + N = [[xx+yy+zz, 0.0, 0.0, 0.0], + [yz-zy, xx-yy-zz, 0.0, 0.0], + [zx-xz, xy+yx, yy-xx-zz, 0.0], + [xy-yx, zx+xz, yz+zy, zz-xx-yy]] + # quaternion: eigenvector corresponding to most positive eigenvalue + w, V = numpy.linalg.eigh(N) + q = V[:, numpy.argmax(w)] + q /= vector_norm(q) # unit quaternion + # homogeneous transformation matrix + M = quaternion_matrix(q) + + if scale and not shear: + # Affine transformation; scale is ratio of RMS deviations from centroid + v0 *= v0 + v1 *= v1 + M[:ndims, :ndims] *= math.sqrt(numpy.sum(v1) / numpy.sum(v0)) + + # move centroids back + M = numpy.dot(numpy.linalg.inv(M1), numpy.dot(M, M0)) + M /= M[ndims, ndims] + return M + + +def superimposition_matrix(v0, v1, scale=False, usesvd=True): + """Return matrix to transform given 3D point set into second point set. + + v0 and v1 are shape (3, \*) or (4, \*) arrays of at least 3 points. + + The parameters scale and usesvd are explained in the more general + affine_matrix_from_points function. + + The returned matrix is a similarity or Euclidean transformation matrix. + This function has a fast C implementation in transformations.c. + + >>> v0 = numpy.random.rand(3, 10) + >>> M = superimposition_matrix(v0, v0) + >>> numpy.allclose(M, numpy.identity(4)) + True + >>> R = random_rotation_matrix(numpy.random.random(3)) + >>> v0 = [[1,0,0], [0,1,0], [0,0,1], [1,1,1]] + >>> v1 = numpy.dot(R, v0) + >>> M = superimposition_matrix(v0, v1) + >>> numpy.allclose(v1, numpy.dot(M, v0)) + True + >>> v0 = (numpy.random.rand(4, 100) - 0.5) * 20 + >>> v0[3] = 1 + >>> v1 = numpy.dot(R, v0) + >>> M = superimposition_matrix(v0, v1) + >>> numpy.allclose(v1, numpy.dot(M, v0)) + True + >>> S = scale_matrix(random.random()) + >>> T = translation_matrix(numpy.random.random(3)-0.5) + >>> M = concatenate_matrices(T, R, S) + >>> v1 = numpy.dot(M, v0) + >>> v0[:3] += numpy.random.normal(0, 1e-9, 300).reshape(3, -1) + >>> M = superimposition_matrix(v0, v1, scale=True) + >>> numpy.allclose(v1, numpy.dot(M, v0)) + True + >>> M = superimposition_matrix(v0, v1, scale=True, usesvd=False) + >>> numpy.allclose(v1, numpy.dot(M, v0)) + True + >>> v = numpy.empty((4, 100, 3)) + >>> v[:, :, 0] = v0 + >>> M = superimposition_matrix(v0, v1, scale=True, usesvd=False) + >>> numpy.allclose(v1, numpy.dot(M, v[:, :, 0])) + True + + """ + v0 = numpy.array(v0, dtype=numpy.float64, copy=False)[:3] + v1 = numpy.array(v1, dtype=numpy.float64, copy=False)[:3] + return affine_matrix_from_points(v0, v1, shear=False, + scale=scale, usesvd=usesvd) + + +def euler_matrix(ai, aj, ak, axes='sxyz'): + """Return homogeneous rotation matrix from Euler angles and axis sequence. + + ai, aj, ak : Euler's roll, pitch and yaw angles + axes : One of 24 axis sequences as string or encoded tuple + + >>> R = euler_matrix(1, 2, 3, 'syxz') + >>> numpy.allclose(numpy.sum(R[0]), -1.34786452) + True + >>> R = euler_matrix(1, 2, 3, (0, 1, 0, 1)) + >>> numpy.allclose(numpy.sum(R[0]), -0.383436184) + True + >>> ai, aj, ak = (4*math.pi) * (numpy.random.random(3) - 0.5) + >>> for axes in _AXES2TUPLE.keys(): + ... R = euler_matrix(ai, aj, ak, axes) + >>> for axes in _TUPLE2AXES.keys(): + ... R = euler_matrix(ai, aj, ak, axes) + + """ + try: + firstaxis, parity, repetition, frame = _AXES2TUPLE[axes] + except (AttributeError, KeyError): + _TUPLE2AXES[axes] # validation + firstaxis, parity, repetition, frame = axes + + i = firstaxis + j = _NEXT_AXIS[i+parity] + k = _NEXT_AXIS[i-parity+1] + + if frame: + ai, ak = ak, ai + if parity: + ai, aj, ak = -ai, -aj, -ak + + si, sj, sk = math.sin(ai), math.sin(aj), math.sin(ak) + ci, cj, ck = math.cos(ai), math.cos(aj), math.cos(ak) + cc, cs = ci*ck, ci*sk + sc, ss = si*ck, si*sk + + M = numpy.identity(4) + if repetition: + M[i, i] = cj + M[i, j] = sj*si + M[i, k] = sj*ci + M[j, i] = sj*sk + M[j, j] = -cj*ss+cc + M[j, k] = -cj*cs-sc + M[k, i] = -sj*ck + M[k, j] = cj*sc+cs + M[k, k] = cj*cc-ss + else: + M[i, i] = cj*ck + M[i, j] = sj*sc-cs + M[i, k] = sj*cc+ss + M[j, i] = cj*sk + M[j, j] = sj*ss+cc + M[j, k] = sj*cs-sc + M[k, i] = -sj + M[k, j] = cj*si + M[k, k] = cj*ci + return M + + +def euler_from_matrix(matrix, axes='sxyz'): + """Return Euler angles from rotation matrix for specified axis sequence. + + axes : One of 24 axis sequences as string or encoded tuple + + Note that many Euler angle triplets can describe one matrix. + + >>> R0 = euler_matrix(1, 2, 3, 'syxz') + >>> al, be, ga = euler_from_matrix(R0, 'syxz') + >>> R1 = euler_matrix(al, be, ga, 'syxz') + >>> numpy.allclose(R0, R1) + True + >>> angles = (4*math.pi) * (numpy.random.random(3) - 0.5) + >>> for axes in _AXES2TUPLE.keys(): + ... R0 = euler_matrix(axes=axes, *angles) + ... R1 = euler_matrix(axes=axes, *euler_from_matrix(R0, axes)) + ... if not numpy.allclose(R0, R1): print(axes, "failed") + + """ + try: + firstaxis, parity, repetition, frame = _AXES2TUPLE[axes.lower()] + except (AttributeError, KeyError): + _TUPLE2AXES[axes] # validation + firstaxis, parity, repetition, frame = axes + + i = firstaxis + j = _NEXT_AXIS[i+parity] + k = _NEXT_AXIS[i-parity+1] + + M = numpy.array(matrix, dtype=numpy.float64, copy=False)[:3, :3] + if repetition: + sy = math.sqrt(M[i, j]*M[i, j] + M[i, k]*M[i, k]) + if sy > _EPS: + ax = math.atan2( M[i, j], M[i, k]) + ay = math.atan2( sy, M[i, i]) + az = math.atan2( M[j, i], -M[k, i]) + else: + ax = math.atan2(-M[j, k], M[j, j]) + ay = math.atan2( sy, M[i, i]) + az = 0.0 + else: + cy = math.sqrt(M[i, i]*M[i, i] + M[j, i]*M[j, i]) + if cy > _EPS: + ax = math.atan2( M[k, j], M[k, k]) + ay = math.atan2(-M[k, i], cy) + az = math.atan2( M[j, i], M[i, i]) + else: + ax = math.atan2(-M[j, k], M[j, j]) + ay = math.atan2(-M[k, i], cy) + az = 0.0 + + if parity: + ax, ay, az = -ax, -ay, -az + if frame: + ax, az = az, ax + return ax, ay, az + + +def euler_from_quaternion(quaternion, axes='sxyz'): + """Return Euler angles from quaternion for specified axis sequence. + + >>> angles = euler_from_quaternion([0.99810947, 0.06146124, 0, 0]) + >>> numpy.allclose(angles, [0.123, 0, 0]) + True + + """ + return euler_from_matrix(quaternion_matrix(quaternion), axes) + + +def quaternion_from_euler(ai, aj, ak, axes='sxyz'): + """Return quaternion from Euler angles and axis sequence. + + ai, aj, ak : Euler's roll, pitch and yaw angles + axes : One of 24 axis sequences as string or encoded tuple + + >>> q = quaternion_from_euler(1, 2, 3, 'ryxz') + >>> numpy.allclose(q, [0.435953, 0.310622, -0.718287, 0.444435]) + True + + """ + try: + firstaxis, parity, repetition, frame = _AXES2TUPLE[axes.lower()] + except (AttributeError, KeyError): + _TUPLE2AXES[axes] # validation + firstaxis, parity, repetition, frame = axes + + i = firstaxis + 1 + j = _NEXT_AXIS[i+parity-1] + 1 + k = _NEXT_AXIS[i-parity] + 1 + + if frame: + ai, ak = ak, ai + if parity: + aj = -aj + + ai /= 2.0 + aj /= 2.0 + ak /= 2.0 + ci = math.cos(ai) + si = math.sin(ai) + cj = math.cos(aj) + sj = math.sin(aj) + ck = math.cos(ak) + sk = math.sin(ak) + cc = ci*ck + cs = ci*sk + sc = si*ck + ss = si*sk + + q = numpy.empty((4, )) + if repetition: + q[0] = cj*(cc - ss) + q[i] = cj*(cs + sc) + q[j] = sj*(cc + ss) + q[k] = sj*(cs - sc) + else: + q[0] = cj*cc + sj*ss + q[i] = cj*sc - sj*cs + q[j] = cj*ss + sj*cc + q[k] = cj*cs - sj*sc + if parity: + q[j] *= -1.0 + + return q + + +def quaternion_about_axis(angle, axis): + """Return quaternion for rotation about axis. + + >>> q = quaternion_about_axis(0.123, [1, 0, 0]) + >>> numpy.allclose(q, [0.99810947, 0.06146124, 0, 0]) + True + + """ + q = numpy.array([0.0, axis[0], axis[1], axis[2]]) + qlen = vector_norm(q) + if qlen > _EPS: + q *= math.sin(angle/2.0) / qlen + q[0] = math.cos(angle/2.0) + return q + + +def quaternion_matrix(quaternion): + """Return homogeneous rotation matrix from quaternion. + + >>> M = quaternion_matrix([0.99810947, 0.06146124, 0, 0]) + >>> numpy.allclose(M, rotation_matrix(0.123, [1, 0, 0])) + True + >>> M = quaternion_matrix([1, 0, 0, 0]) + >>> numpy.allclose(M, numpy.identity(4)) + True + >>> M = quaternion_matrix([0, 1, 0, 0]) + >>> numpy.allclose(M, numpy.diag([1, -1, -1, 1])) + True + + """ + q = numpy.array(quaternion, dtype=numpy.float64, copy=True) + n = numpy.dot(q, q) + if n < _EPS: + return numpy.identity(4) + q *= math.sqrt(2.0 / n) + q = numpy.outer(q, q) + return numpy.array([ + [1.0-q[2, 2]-q[3, 3], q[1, 2]-q[3, 0], q[1, 3]+q[2, 0], 0.0], + [ q[1, 2]+q[3, 0], 1.0-q[1, 1]-q[3, 3], q[2, 3]-q[1, 0], 0.0], + [ q[1, 3]-q[2, 0], q[2, 3]+q[1, 0], 1.0-q[1, 1]-q[2, 2], 0.0], + [ 0.0, 0.0, 0.0, 1.0]]) + + +def quaternion_from_matrix(matrix, isprecise=False): + """Return quaternion from rotation matrix. + + If isprecise is True, the input matrix is assumed to be a precise rotation + matrix and a faster algorithm is used. + + >>> q = quaternion_from_matrix(numpy.identity(4), True) + >>> numpy.allclose(q, [1, 0, 0, 0]) + True + >>> q = quaternion_from_matrix(numpy.diag([1, -1, -1, 1])) + >>> numpy.allclose(q, [0, 1, 0, 0]) or numpy.allclose(q, [0, -1, 0, 0]) + True + >>> R = rotation_matrix(0.123, (1, 2, 3)) + >>> q = quaternion_from_matrix(R, True) + >>> numpy.allclose(q, [0.9981095, 0.0164262, 0.0328524, 0.0492786]) + True + >>> R = [[-0.545, 0.797, 0.260, 0], [0.733, 0.603, -0.313, 0], + ... [-0.407, 0.021, -0.913, 0], [0, 0, 0, 1]] + >>> q = quaternion_from_matrix(R) + >>> numpy.allclose(q, [0.19069, 0.43736, 0.87485, -0.083611]) + True + >>> R = [[0.395, 0.362, 0.843, 0], [-0.626, 0.796, -0.056, 0], + ... [-0.677, -0.498, 0.529, 0], [0, 0, 0, 1]] + >>> q = quaternion_from_matrix(R) + >>> numpy.allclose(q, [0.82336615, -0.13610694, 0.46344705, -0.29792603]) + True + >>> R = random_rotation_matrix() + >>> q = quaternion_from_matrix(R) + >>> is_same_transform(R, quaternion_matrix(q)) + True + >>> R = euler_matrix(0.0, 0.0, numpy.pi/2.0) + >>> numpy.allclose(quaternion_from_matrix(R, isprecise=False), + ... quaternion_from_matrix(R, isprecise=True)) + True + + """ + M = numpy.array(matrix, dtype=numpy.float64, copy=False)[:4, :4] + if isprecise: + q = numpy.empty((4, )) + t = numpy.trace(M) + if t > M[3, 3]: + q[0] = t + q[3] = M[1, 0] - M[0, 1] + q[2] = M[0, 2] - M[2, 0] + q[1] = M[2, 1] - M[1, 2] + else: + i, j, k = 1, 2, 3 + if M[1, 1] > M[0, 0]: + i, j, k = 2, 3, 1 + if M[2, 2] > M[i, i]: + i, j, k = 3, 1, 2 + t = M[i, i] - (M[j, j] + M[k, k]) + M[3, 3] + q[i] = t + q[j] = M[i, j] + M[j, i] + q[k] = M[k, i] + M[i, k] + q[3] = M[k, j] - M[j, k] + q *= 0.5 / math.sqrt(t * M[3, 3]) + else: + m00 = M[0, 0] + m01 = M[0, 1] + m02 = M[0, 2] + m10 = M[1, 0] + m11 = M[1, 1] + m12 = M[1, 2] + m20 = M[2, 0] + m21 = M[2, 1] + m22 = M[2, 2] + # symmetric matrix K + K = numpy.array([[m00-m11-m22, 0.0, 0.0, 0.0], + [m01+m10, m11-m00-m22, 0.0, 0.0], + [m02+m20, m12+m21, m22-m00-m11, 0.0], + [m21-m12, m02-m20, m10-m01, m00+m11+m22]]) + K /= 3.0 + # quaternion is eigenvector of K that corresponds to largest eigenvalue + w, V = numpy.linalg.eigh(K) + q = V[[3, 0, 1, 2], numpy.argmax(w)] + if q[0] < 0.0: + numpy.negative(q, q) + return q + + +def quaternion_multiply(quaternion1, quaternion0): + """Return multiplication of two quaternions. + + >>> q = quaternion_multiply([4, 1, -2, 3], [8, -5, 6, 7]) + >>> numpy.allclose(q, [28, -44, -14, 48]) + True + + """ + w0, x0, y0, z0 = quaternion0 + w1, x1, y1, z1 = quaternion1 + return numpy.array([-x1*x0 - y1*y0 - z1*z0 + w1*w0, + x1*w0 + y1*z0 - z1*y0 + w1*x0, + -x1*z0 + y1*w0 + z1*x0 + w1*y0, + x1*y0 - y1*x0 + z1*w0 + w1*z0], dtype=numpy.float64) + + +def quaternion_conjugate(quaternion): + """Return conjugate of quaternion. + + >>> q0 = random_quaternion() + >>> q1 = quaternion_conjugate(q0) + >>> q1[0] == q0[0] and all(q1[1:] == -q0[1:]) + True + + """ + q = numpy.array(quaternion, dtype=numpy.float64, copy=True) + numpy.negative(q[1:], q[1:]) + return q + + +def quaternion_inverse(quaternion): + """Return inverse of quaternion. + + >>> q0 = random_quaternion() + >>> q1 = quaternion_inverse(q0) + >>> numpy.allclose(quaternion_multiply(q0, q1), [1, 0, 0, 0]) + True + + """ + q = numpy.array(quaternion, dtype=numpy.float64, copy=True) + numpy.negative(q[1:], q[1:]) + return q / numpy.dot(q, q) + + +def quaternion_real(quaternion): + """Return real part of quaternion. + + >>> quaternion_real([3, 0, 1, 2]) + 3.0 + + """ + return float(quaternion[0]) + + +def quaternion_imag(quaternion): + """Return imaginary part of quaternion. + + >>> quaternion_imag([3, 0, 1, 2]) + array([ 0., 1., 2.]) + + """ + return numpy.array(quaternion[1:4], dtype=numpy.float64, copy=True) + + +def quaternion_slerp(quat0, quat1, fraction, spin=0, shortestpath=True): + """Return spherical linear interpolation between two quaternions. + + >>> q0 = random_quaternion() + >>> q1 = random_quaternion() + >>> q = quaternion_slerp(q0, q1, 0) + >>> numpy.allclose(q, q0) + True + >>> q = quaternion_slerp(q0, q1, 1, 1) + >>> numpy.allclose(q, q1) + True + >>> q = quaternion_slerp(q0, q1, 0.5) + >>> angle = math.acos(numpy.dot(q0, q)) + >>> numpy.allclose(2, math.acos(numpy.dot(q0, q1)) / angle) or \ + numpy.allclose(2, math.acos(-numpy.dot(q0, q1)) / angle) + True + + """ + q0 = unit_vector(quat0[:4]) + q1 = unit_vector(quat1[:4]) + if fraction == 0.0: + return q0 + elif fraction == 1.0: + return q1 + d = numpy.dot(q0, q1) + if abs(abs(d) - 1.0) < _EPS: + return q0 + if shortestpath and d < 0.0: + # invert rotation + d = -d + numpy.negative(q1, q1) + angle = math.acos(d) + spin * math.pi + if abs(angle) < _EPS: + return q0 + isin = 1.0 / math.sin(angle) + q0 *= math.sin((1.0 - fraction) * angle) * isin + q1 *= math.sin(fraction * angle) * isin + q0 += q1 + return q0 + + +def random_quaternion(rand=None): + """Return uniform random unit quaternion. + + rand: array like or None + Three independent random variables that are uniformly distributed + between 0 and 1. + + >>> q = random_quaternion() + >>> numpy.allclose(1, vector_norm(q)) + True + >>> q = random_quaternion(numpy.random.random(3)) + >>> len(q.shape), q.shape[0]==4 + (1, True) + + """ + if rand is None: + rand = numpy.random.rand(3) + else: + assert len(rand) == 3 + r1 = numpy.sqrt(1.0 - rand[0]) + r2 = numpy.sqrt(rand[0]) + pi2 = math.pi * 2.0 + t1 = pi2 * rand[1] + t2 = pi2 * rand[2] + return numpy.array([numpy.cos(t2)*r2, numpy.sin(t1)*r1, + numpy.cos(t1)*r1, numpy.sin(t2)*r2]) + + +def random_rotation_matrix(rand=None): + """Return uniform random rotation matrix. + + rand: array like + Three independent random variables that are uniformly distributed + between 0 and 1 for each returned quaternion. + + >>> R = random_rotation_matrix() + >>> numpy.allclose(numpy.dot(R.T, R), numpy.identity(4)) + True + + """ + return quaternion_matrix(random_quaternion(rand)) + + +class Arcball(object): + """Virtual Trackball Control. + + >>> ball = Arcball() + >>> ball = Arcball(initial=numpy.identity(4)) + >>> ball.place([320, 320], 320) + >>> ball.down([500, 250]) + >>> ball.drag([475, 275]) + >>> R = ball.matrix() + >>> numpy.allclose(numpy.sum(R), 3.90583455) + True + >>> ball = Arcball(initial=[1, 0, 0, 0]) + >>> ball.place([320, 320], 320) + >>> ball.setaxes([1, 1, 0], [-1, 1, 0]) + >>> ball.constrain = True + >>> ball.down([400, 200]) + >>> ball.drag([200, 400]) + >>> R = ball.matrix() + >>> numpy.allclose(numpy.sum(R), 0.2055924) + True + >>> ball.next() + + """ + def __init__(self, initial=None): + """Initialize virtual trackball control. + + initial : quaternion or rotation matrix + + """ + self._axis = None + self._axes = None + self._radius = 1.0 + self._center = [0.0, 0.0] + self._vdown = numpy.array([0.0, 0.0, 1.0]) + self._constrain = False + if initial is None: + self._qdown = numpy.array([1.0, 0.0, 0.0, 0.0]) + else: + initial = numpy.array(initial, dtype=numpy.float64) + if initial.shape == (4, 4): + self._qdown = quaternion_from_matrix(initial) + elif initial.shape == (4, ): + initial /= vector_norm(initial) + self._qdown = initial + else: + raise ValueError("initial not a quaternion or matrix") + self._qnow = self._qpre = self._qdown + + def place(self, center, radius): + """Place Arcball, e.g. when window size changes. + + center : sequence[2] + Window coordinates of trackball center. + radius : float + Radius of trackball in window coordinates. + + """ + self._radius = float(radius) + self._center[0] = center[0] + self._center[1] = center[1] + + def setaxes(self, *axes): + """Set axes to constrain rotations.""" + if axes is None: + self._axes = None + else: + self._axes = [unit_vector(axis) for axis in axes] + + @property + def constrain(self): + """Return state of constrain to axis mode.""" + return self._constrain + + @constrain.setter + def constrain(self, value): + """Set state of constrain to axis mode.""" + self._constrain = bool(value) + + def down(self, point): + """Set initial cursor window coordinates and pick constrain-axis.""" + self._vdown = arcball_map_to_sphere(point, self._center, self._radius) + self._qdown = self._qpre = self._qnow + if self._constrain and self._axes is not None: + self._axis = arcball_nearest_axis(self._vdown, self._axes) + self._vdown = arcball_constrain_to_axis(self._vdown, self._axis) + else: + self._axis = None + + def drag(self, point): + """Update current cursor window coordinates.""" + vnow = arcball_map_to_sphere(point, self._center, self._radius) + if self._axis is not None: + vnow = arcball_constrain_to_axis(vnow, self._axis) + self._qpre = self._qnow + t = numpy.cross(self._vdown, vnow) + if numpy.dot(t, t) < _EPS: + self._qnow = self._qdown + else: + q = [numpy.dot(self._vdown, vnow), t[0], t[1], t[2]] + self._qnow = quaternion_multiply(q, self._qdown) + + def next(self, acceleration=0.0): + """Continue rotation in direction of last drag.""" + q = quaternion_slerp(self._qpre, self._qnow, 2.0+acceleration, False) + self._qpre, self._qnow = self._qnow, q + + def matrix(self): + """Return homogeneous rotation matrix.""" + return quaternion_matrix(self._qnow) + + +def arcball_map_to_sphere(point, center, radius): + """Return unit sphere coordinates from window coordinates.""" + v0 = (point[0] - center[0]) / radius + v1 = (center[1] - point[1]) / radius + n = v0*v0 + v1*v1 + if n > 1.0: + # position outside of sphere + n = math.sqrt(n) + return numpy.array([v0/n, v1/n, 0.0]) + else: + return numpy.array([v0, v1, math.sqrt(1.0 - n)]) + + +def arcball_constrain_to_axis(point, axis): + """Return sphere point perpendicular to axis.""" + v = numpy.array(point, dtype=numpy.float64, copy=True) + a = numpy.array(axis, dtype=numpy.float64, copy=True) + v -= a * numpy.dot(a, v) # on plane + n = vector_norm(v) + if n > _EPS: + if v[2] < 0.0: + numpy.negative(v, v) + v /= n + return v + if a[2] == 1.0: + return numpy.array([1.0, 0.0, 0.0]) + return unit_vector([-a[1], a[0], 0.0]) + + +def arcball_nearest_axis(point, axes): + """Return axis, which arc is nearest to point.""" + point = numpy.array(point, dtype=numpy.float64, copy=False) + nearest = None + mx = -1.0 + for axis in axes: + t = numpy.dot(arcball_constrain_to_axis(point, axis), point) + if t > mx: + nearest = axis + mx = t + return nearest + + +# epsilon for testing whether a number is close to zero +_EPS = numpy.finfo(float).eps * 4.0 + +# axis sequences for Euler angles +_NEXT_AXIS = [1, 2, 0, 1] + +# map axes strings to/from tuples of inner axis, parity, repetition, frame +_AXES2TUPLE = { + 'sxyz': (0, 0, 0, 0), 'sxyx': (0, 0, 1, 0), 'sxzy': (0, 1, 0, 0), + 'sxzx': (0, 1, 1, 0), 'syzx': (1, 0, 0, 0), 'syzy': (1, 0, 1, 0), + 'syxz': (1, 1, 0, 0), 'syxy': (1, 1, 1, 0), 'szxy': (2, 0, 0, 0), + 'szxz': (2, 0, 1, 0), 'szyx': (2, 1, 0, 0), 'szyz': (2, 1, 1, 0), + 'rzyx': (0, 0, 0, 1), 'rxyx': (0, 0, 1, 1), 'ryzx': (0, 1, 0, 1), + 'rxzx': (0, 1, 1, 1), 'rxzy': (1, 0, 0, 1), 'ryzy': (1, 0, 1, 1), + 'rzxy': (1, 1, 0, 1), 'ryxy': (1, 1, 1, 1), 'ryxz': (2, 0, 0, 1), + 'rzxz': (2, 0, 1, 1), 'rxyz': (2, 1, 0, 1), 'rzyz': (2, 1, 1, 1)} + +_TUPLE2AXES = dict((v, k) for k, v in _AXES2TUPLE.items()) + + +def vector_norm(data, axis=None, out=None): + """Return length, i.e. Euclidean norm, of ndarray along axis. + + >>> v = numpy.random.random(3) + >>> n = vector_norm(v) + >>> numpy.allclose(n, numpy.linalg.norm(v)) + True + >>> v = numpy.random.rand(6, 5, 3) + >>> n = vector_norm(v, axis=-1) + >>> numpy.allclose(n, numpy.sqrt(numpy.sum(v*v, axis=2))) + True + >>> n = vector_norm(v, axis=1) + >>> numpy.allclose(n, numpy.sqrt(numpy.sum(v*v, axis=1))) + True + >>> v = numpy.random.rand(5, 4, 3) + >>> n = numpy.empty((5, 3)) + >>> vector_norm(v, axis=1, out=n) + >>> numpy.allclose(n, numpy.sqrt(numpy.sum(v*v, axis=1))) + True + >>> vector_norm([]) + 0.0 + >>> vector_norm([1]) + 1.0 + + """ + data = numpy.array(data, dtype=numpy.float64, copy=True) + if out is None: + if data.ndim == 1: + return math.sqrt(numpy.dot(data, data)) + data *= data + out = numpy.atleast_1d(numpy.sum(data, axis=axis)) + numpy.sqrt(out, out) + return out + else: + data *= data + numpy.sum(data, axis=axis, out=out) + numpy.sqrt(out, out) + + +def unit_vector(data, axis=None, out=None): + """Return ndarray normalized by length, i.e. Euclidean norm, along axis. + + >>> v0 = numpy.random.random(3) + >>> v1 = unit_vector(v0) + >>> numpy.allclose(v1, v0 / numpy.linalg.norm(v0)) + True + >>> v0 = numpy.random.rand(5, 4, 3) + >>> v1 = unit_vector(v0, axis=-1) + >>> v2 = v0 / numpy.expand_dims(numpy.sqrt(numpy.sum(v0*v0, axis=2)), 2) + >>> numpy.allclose(v1, v2) + True + >>> v1 = unit_vector(v0, axis=1) + >>> v2 = v0 / numpy.expand_dims(numpy.sqrt(numpy.sum(v0*v0, axis=1)), 1) + >>> numpy.allclose(v1, v2) + True + >>> v1 = numpy.empty((5, 4, 3)) + >>> unit_vector(v0, axis=1, out=v1) + >>> numpy.allclose(v1, v2) + True + >>> list(unit_vector([])) + [] + >>> list(unit_vector([1])) + [1.0] + + """ + if out is None: + data = numpy.array(data, dtype=numpy.float64, copy=True) + if data.ndim == 1: + data /= math.sqrt(numpy.dot(data, data)) + return data + else: + if out is not data: + out[:] = numpy.array(data, copy=False) + data = out + length = numpy.atleast_1d(numpy.sum(data*data, axis)) + numpy.sqrt(length, length) + if axis is not None: + length = numpy.expand_dims(length, axis) + data /= length + if out is None: + return data + + +def random_vector(size): + """Return array of random doubles in the half-open interval [0.0, 1.0). + + >>> v = random_vector(10000) + >>> numpy.all(v >= 0) and numpy.all(v < 1) + True + >>> v0 = random_vector(10) + >>> v1 = random_vector(10) + >>> numpy.any(v0 == v1) + False + + """ + return numpy.random.random(size) + + +def vector_product(v0, v1, axis=0): + """Return vector perpendicular to vectors. + + >>> v = vector_product([2, 0, 0], [0, 3, 0]) + >>> numpy.allclose(v, [0, 0, 6]) + True + >>> v0 = [[2, 0, 0, 2], [0, 2, 0, 2], [0, 0, 2, 2]] + >>> v1 = [[3], [0], [0]] + >>> v = vector_product(v0, v1) + >>> numpy.allclose(v, [[0, 0, 0, 0], [0, 0, 6, 6], [0, -6, 0, -6]]) + True + >>> v0 = [[2, 0, 0], [2, 0, 0], [0, 2, 0], [2, 0, 0]] + >>> v1 = [[0, 3, 0], [0, 0, 3], [0, 0, 3], [3, 3, 3]] + >>> v = vector_product(v0, v1, axis=1) + >>> numpy.allclose(v, [[0, 0, 6], [0, -6, 0], [6, 0, 0], [0, -6, 6]]) + True + + """ + return numpy.cross(v0, v1, axis=axis) + + +def angle_between_vectors(v0, v1, directed=True, axis=0): + """Return angle between vectors. + + If directed is False, the input vectors are interpreted as undirected axes, + i.e. the maximum angle is pi/2. + + >>> a = angle_between_vectors([1, -2, 3], [-1, 2, -3]) + >>> numpy.allclose(a, math.pi) + True + >>> a = angle_between_vectors([1, -2, 3], [-1, 2, -3], directed=False) + >>> numpy.allclose(a, 0) + True + >>> v0 = [[2, 0, 0, 2], [0, 2, 0, 2], [0, 0, 2, 2]] + >>> v1 = [[3], [0], [0]] + >>> a = angle_between_vectors(v0, v1) + >>> numpy.allclose(a, [0, 1.5708, 1.5708, 0.95532]) + True + >>> v0 = [[2, 0, 0], [2, 0, 0], [0, 2, 0], [2, 0, 0]] + >>> v1 = [[0, 3, 0], [0, 0, 3], [0, 0, 3], [3, 3, 3]] + >>> a = angle_between_vectors(v0, v1, axis=1) + >>> numpy.allclose(a, [1.5708, 1.5708, 1.5708, 0.95532]) + True + + """ + v0 = numpy.array(v0, dtype=numpy.float64, copy=False) + v1 = numpy.array(v1, dtype=numpy.float64, copy=False) + dot = numpy.sum(v0 * v1, axis=axis) + dot /= vector_norm(v0, axis=axis) * vector_norm(v1, axis=axis) + return numpy.arccos(dot if directed else numpy.fabs(dot)) + + +def inverse_matrix(matrix): + """Return inverse of square transformation matrix. + + >>> M0 = random_rotation_matrix() + >>> M1 = inverse_matrix(M0.T) + >>> numpy.allclose(M1, numpy.linalg.inv(M0.T)) + True + >>> for size in range(1, 7): + ... M0 = numpy.random.rand(size, size) + ... M1 = inverse_matrix(M0) + ... if not numpy.allclose(M1, numpy.linalg.inv(M0)): print(size) + + """ + return numpy.linalg.inv(matrix) + + +def concatenate_matrices(*matrices): + """Return concatenation of series of transformation matrices. + + >>> M = numpy.random.rand(16).reshape((4, 4)) - 0.5 + >>> numpy.allclose(M, concatenate_matrices(M)) + True + >>> numpy.allclose(numpy.dot(M, M.T), concatenate_matrices(M, M.T)) + True + + """ + M = numpy.identity(4) + for i in matrices: + M = numpy.dot(M, i) + return M + + +def is_same_transform(matrix0, matrix1): + """Return True if two matrices perform same transformation. + + >>> is_same_transform(numpy.identity(4), numpy.identity(4)) + True + >>> is_same_transform(numpy.identity(4), random_rotation_matrix()) + False + + """ + matrix0 = numpy.array(matrix0, dtype=numpy.float64, copy=True) + matrix0 /= matrix0[3, 3] + matrix1 = numpy.array(matrix1, dtype=numpy.float64, copy=True) + matrix1 /= matrix1[3, 3] + return numpy.allclose(matrix0, matrix1) + + +def _import_module(name, package=None, warn=True, prefix='_py_', ignore='_'): + """Try import all public attributes from module into global namespace. + + Existing attributes with name clashes are renamed with prefix. + Attributes starting with underscore are ignored by default. + + Return True on successful import. + + """ + import warnings + from importlib import import_module + try: + if not package: + module = import_module(name) + else: + module = import_module('.' + name, package=package) + except ImportError: + if warn: + warnings.warn("failed to import module %s" % name) + else: + for attr in dir(module): + if ignore and attr.startswith(ignore): + continue + if prefix: + if attr in globals(): + globals()[prefix + attr] = globals()[attr] + elif warn: + warnings.warn("no Python implementation of " + attr) + globals()[attr] = getattr(module, attr) + return True + + +# _import_module('_transformations') + +if __name__ == "__main__": + import doctest + import random # used in doctests + numpy.set_printoptions(suppress=True, precision=5) + doctest.testmod() diff --git a/CameraNetwork/visualization.py b/CameraNetwork/visualization.py index 0c12d67..d4a22a6 100644 --- a/CameraNetwork/visualization.py +++ b/CameraNetwork/visualization.py @@ -44,16 +44,11 @@ def loadMapData(): """Load height data for map visualization.""" -# TODO more rebust linux / windows solution + remove absolute path - relpath = os.path.dirname(os.path.realpath(__file__)) - if platform.system()=='Windows': - path1 = os.path.abspath(os.path.join(relpath , r"..\data\reconstructions\N32E034.hgt")) - path2 = os.path.abspath(os.path.join(relpath , r"..\data\reconstructions\N32E035.hgt")) - path3 = os.path.abspath(os.path.join(relpath , r"..\data\reconstructions\haifa_map.jpg")) - if platform.system()=='Linux': - path1 = os.path.abspath(os.path.join(relpath, r"../data/reconstructions/N32E034.hgt")) - path2 = os.path.abspath(os.path.join(relpath, r"../data/reconstructions/N32E035.hgt")) - path3 = os.path.abspath(os.path.join(relpath, r"../data/reconstructions/haifa_map.jpg")) + relpath = os.path.dirname(os.path.realpath(__file__)) + path1 = os.path.abspath(os.path.join(relpath, r'..', r'data', r'reconstructions', r'N32E034.hgt')) + path2 = os.path.abspath(os.path.join(relpath, r'..', r'data', r'reconstructions', r'N32E035.hgt')) + path3 = os.path.abspath(os.path.join(relpath, r'..', r'data', r'reconstructions', r'haifa_map.jpg')) + with open(path1) as hgt_data: hgt1 = np.fromfile(hgt_data, np.dtype('>i2')).reshape((1201, 1201))[:1200, :1200] diff --git a/docs/Makefile b/docs/Makefile index e3e5445..69fe55e 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -1,225 +1,19 @@ -# Makefile for Sphinx documentation +# Minimal makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build -PAPER = +SOURCEDIR = source BUILDDIR = build -# Internal variables. -PAPEROPT_a4 = -D latex_paper_size=a4 -PAPEROPT_letter = -D latex_paper_size=letter -ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source -# the i18n builder cannot share the environment and doctrees with the others -I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source - -.PHONY: help +# Put it first so that "make" without argument is like "make help". help: - @echo "Please use \`make ' where is one of" - @echo " html to make standalone HTML files" - @echo " dirhtml to make HTML files named index.html in directories" - @echo " singlehtml to make a single large HTML file" - @echo " pickle to make pickle files" - @echo " json to make JSON files" - @echo " htmlhelp to make HTML files and a HTML help project" - @echo " qthelp to make HTML files and a qthelp project" - @echo " applehelp to make an Apple Help Book" - @echo " devhelp to make HTML files and a Devhelp project" - @echo " epub to make an epub" - @echo " epub3 to make an epub3" - @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" - @echo " latexpdf to make LaTeX files and run them through pdflatex" - @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" - @echo " text to make text files" - @echo " man to make manual pages" - @echo " texinfo to make Texinfo files" - @echo " info to make Texinfo files and run them through makeinfo" - @echo " gettext to make PO message catalogs" - @echo " changes to make an overview of all changed/added/deprecated items" - @echo " xml to make Docutils-native XML files" - @echo " pseudoxml to make pseudoxml-XML files for display purposes" - @echo " linkcheck to check all external links for integrity" - @echo " doctest to run all doctests embedded in the documentation (if enabled)" - @echo " coverage to run coverage check of the documentation (if enabled)" - @echo " dummy to check syntax errors of document sources" - -.PHONY: clean -clean: - rm -rf $(BUILDDIR)/* - -.PHONY: html -html: - $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." - -.PHONY: dirhtml -dirhtml: - $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." - -.PHONY: singlehtml -singlehtml: - $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml - @echo - @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." - -.PHONY: pickle -pickle: - $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle - @echo - @echo "Build finished; now you can process the pickle files." - -.PHONY: json -json: - $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json - @echo - @echo "Build finished; now you can process the JSON files." - -.PHONY: htmlhelp -htmlhelp: - $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp - @echo - @echo "Build finished; now you can run HTML Help Workshop with the" \ - ".hhp project file in $(BUILDDIR)/htmlhelp." - -.PHONY: qthelp -qthelp: - $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp - @echo - @echo "Build finished; now you can run "qcollectiongenerator" with the" \ - ".qhcp project file in $(BUILDDIR)/qthelp, like this:" - @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/CameraNetwork.qhcp" - @echo "To view the help file:" - @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/CameraNetwork.qhc" - -.PHONY: applehelp -applehelp: - $(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp - @echo - @echo "Build finished. The help book is in $(BUILDDIR)/applehelp." - @echo "N.B. You won't be able to view it unless you put it in" \ - "~/Library/Documentation/Help or install it in your application" \ - "bundle." - -.PHONY: devhelp -devhelp: - $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp - @echo - @echo "Build finished." - @echo "To view the help file:" - @echo "# mkdir -p $$HOME/.local/share/devhelp/CameraNetwork" - @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/CameraNetwork" - @echo "# devhelp" - -.PHONY: epub -epub: - $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub - @echo - @echo "Build finished. The epub file is in $(BUILDDIR)/epub." - -.PHONY: epub3 -epub3: - $(SPHINXBUILD) -b epub3 $(ALLSPHINXOPTS) $(BUILDDIR)/epub3 - @echo - @echo "Build finished. The epub3 file is in $(BUILDDIR)/epub3." - -.PHONY: latex -latex: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo - @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." - @echo "Run \`make' in that directory to run these through (pdf)latex" \ - "(use \`make latexpdf' here to do that automatically)." - -.PHONY: latexpdf -latexpdf: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo "Running LaTeX files through pdflatex..." - $(MAKE) -C $(BUILDDIR)/latex all-pdf - @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." - -.PHONY: latexpdfja -latexpdfja: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo "Running LaTeX files through platex and dvipdfmx..." - $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja - @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." - -.PHONY: text -text: - $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text - @echo - @echo "Build finished. The text files are in $(BUILDDIR)/text." - -.PHONY: man -man: - $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man - @echo - @echo "Build finished. The manual pages are in $(BUILDDIR)/man." - -.PHONY: texinfo -texinfo: - $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo - @echo - @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." - @echo "Run \`make' in that directory to run these through makeinfo" \ - "(use \`make info' here to do that automatically)." - -.PHONY: info -info: - $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo - @echo "Running Texinfo files through makeinfo..." - make -C $(BUILDDIR)/texinfo info - @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." - -.PHONY: gettext -gettext: - $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale - @echo - @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." - -.PHONY: changes -changes: - $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes - @echo - @echo "The overview file is in $(BUILDDIR)/changes." - -.PHONY: linkcheck -linkcheck: - $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck - @echo - @echo "Link check complete; look for any errors in the above output " \ - "or in $(BUILDDIR)/linkcheck/output.txt." - -.PHONY: doctest -doctest: - $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest - @echo "Testing of doctests in the sources finished, look at the " \ - "results in $(BUILDDIR)/doctest/output.txt." - -.PHONY: coverage -coverage: - $(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage - @echo "Testing of coverage in the sources finished, look at the " \ - "results in $(BUILDDIR)/coverage/python.txt." - -.PHONY: xml -xml: - $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml - @echo - @echo "Build finished. The XML files are in $(BUILDDIR)/xml." + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) -.PHONY: pseudoxml -pseudoxml: - $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml - @echo - @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." +.PHONY: help Makefile -.PHONY: dummy -dummy: - $(SPHINXBUILD) -b dummy $(ALLSPHINXOPTS) $(BUILDDIR)/dummy - @echo - @echo "Build finished. Dummy builder generates no files." +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) \ No newline at end of file diff --git a/docs/make.bat b/docs/make.bat index 2a45dd8..69aea4a 100644 --- a/docs/make.bat +++ b/docs/make.bat @@ -1,10 +1,19 @@ @ECHO OFF +pushd %~dp0 + + REM Command file for Sphinx documentation if "%SPHINXBUILD%" == "" ( set SPHINXBUILD=sphinx-build ) +set SOURCEDIR=source +set BUILDDIR=build + +if "%1" == "" goto help + +%SPHINXBUILD% >NUL 2>NUL set BUILDDIR=build set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% source set I18NSPHINXOPTS=%SPHINXOPTS% source @@ -71,6 +80,14 @@ if errorlevel 9009 ( exit /b 1 ) +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% + +:end +popd :sphinx_ok diff --git a/docs/source/camera.rst b/docs/source/camera.rst new file mode 100644 index 0000000..4635f39 --- /dev/null +++ b/docs/source/camera.rst @@ -0,0 +1,3 @@ +****** +Camera +****** \ No newline at end of file diff --git a/docs/source/conf.py b/docs/source/conf.py index 0c9d27f..d55f05a 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -54,11 +54,17 @@ import os import sys sys.path.insert(0, os.path.abspath('../..')) +sys.path.insert(0, os.path.abspath('../../CameraNetwork')) +sys.path.insert(0, os.path.abspath('../../CameraNetwork/gui')) +sys.path.insert(0, os.path.abspath('../../CameraNetwork/mdp')) sys.path.insert(0, os.path.abspath('../../scripts')) sys.path.insert(0, os.path.abspath('../../scripts_calibrate')) sys.path.insert(0, os.path.abspath('../../scripts_client')) sys.path.insert(0, os.path.abspath('../../scripts_proxy')) sys.path.insert(0, os.path.abspath('../../scripts_sunphotometer')) +# TODO Change to more Robust solution numpy +sys.path.insert(0, os.path.abspath('../../../../.local/lib/python2.7/site-packages/sphinx/ext')) + # -- General configuration ------------------------------------------------ @@ -70,7 +76,7 @@ # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ -# 'numfig', + 'numfig', 'sphinx.ext.autodoc', 'sphinx.ext.intersphinx', 'sphinx.ext.todo', diff --git a/docs/source/index.rst b/docs/source/index.rst index ae5e908..7631652 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -1,15 +1,11 @@ -.. Camera Network documentation master file, created by - sphinx-quickstart on Tue Dec 27 09:54:15 2016. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - Welcome to Camera Network's documentation! ========================================== + Contents: .. toctree:: - :maxdepth: 2 + :maxdepth: 5 introduction install @@ -17,6 +13,8 @@ Contents: camera usage modules + CameraNetwork + Indices and tables ================== diff --git a/docs/source/install.rst b/docs/source/install.rst index 4557542..e339cae 100644 --- a/docs/source/install.rst +++ b/docs/source/install.rst @@ -185,3 +185,16 @@ Installation - NEW .. note:: without --user it installs the scripts for all users (Windows: C:\ProgramData\Anaconda2\Scripts) + + +Circuit Board connections +========================= +Savox SunShader Servo: +#. Brown (Gnd) = Gnd +#. Red (5V) = 5V +#. Orange (Signal) = PIN NUM + +Installation - Old Reference +============================ +TODO Add + diff --git a/docs/source/usage.rst b/docs/source/usage.rst index 62b3310..20d8f1a 100644 --- a/docs/source/usage.rst +++ b/docs/source/usage.rst @@ -70,3 +70,5 @@ Useful commands - ``ps -ef | grep python`` to view running python processes (should see start_proxy.py!) - Press ctrl+a then ctrl+d to detach the *start_proxy.py* from the terminal - ``screen -ls`` to see detached processes. then``screen -r `` to bring it back. +- ``sudo netstat -a -nlp -o | grep 198`` to see status of relevant ports + diff --git a/playground/atom_pyqtgraph.py b/playground/atom_pyqtgraph.py index 1cfb946..bf6ec14 100644 --- a/playground/atom_pyqtgraph.py +++ b/playground/atom_pyqtgraph.py @@ -34,6 +34,8 @@ ## OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ## ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.## # -*- coding: utf-8 -*- +from __future__ import print_function + """ Created on Sat Jul 20 14:27:48 2013 @@ -80,12 +82,12 @@ def mouseReleaseEvent(self, ev): super(MyGLViewWidget, self).mouseReleaseEvent(ev) if self._downpos == ev.pos(): if ev.button() == 2: - print 'show context menu' + print('show context menu') elif ev.button() == 1: x = ev.pos().x() - self.width() / 2 y = ev.pos().y() - self.height() / 2 self.pan(-x, -y, 0, relative=True) - print self.opts['center'] + print(self.opts['center']) self._prev_zoom_pos = None self._prev_pan_pos = None self.sigUpdate.emit() diff --git a/scripts_calibrate/analyze_vignetting_measurements.py b/scripts_calibrate/analyze_vignetting_measurements.py index 02c631a..bc14b58 100644 --- a/scripts_calibrate/analyze_vignetting_measurements.py +++ b/scripts_calibrate/analyze_vignetting_measurements.py @@ -33,131 +33,133 @@ ## LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE ## OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ## ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.## -from __future__ import division -import numpy as np -from numpy.polynomial import polynomial -from mayavi import mlab -import matplotlib.pyplot as plt -import cv2 -import time -from mpl_toolkits.mplot3d import Axes3D -import scipy.interpolate as interp -from skimage.morphology import convex_hull_image -import fisheye -from CameraNetwork.image_utils import FisheyeProxy, Normalization -import cPickle -import os -from sklearn import linear_model -from sklearn.neighbors import KNeighborsRegressor -from sklearn.pipeline import make_pipeline -from sklearn.preprocessing import PolynomialFeatures -import math -import itertools - -COLORS = ('blue', 'green', 'red') -COLOR_INDICES = {'blue': 2, 'green': 1, 'red': 0} - - -def skFit(base_path, x, y, z, img_shape): - model = make_pipeline( - PolynomialFeatures(2), - linear_model.RANSACRegressor(random_state=0, residual_threshold=5) - ) - - # - # Interpolate a second order polynomial - # - X = np.hstack([coord.reshape(-1, 1) for coord in (x, y)]) - model.fit(X, z) - - # - # Visualize the error - # - ygrid, xgrid = np.mgrid[0:img_shape[0]:10, 0:img_shape[1]:10] - grid = np.hstack([coord.reshape(-1, 1) for coord in (xgrid, ygrid)]) - - zgrid = model.predict(grid).reshape(ygrid.shape) - - fig = plt.figure() - ax = fig.add_subplot(111, projection='3d') - ax.plot_surface(xgrid, ygrid, zgrid) - ax.scatter(x, y, z) - - - z_estim = model.predict(X).reshape(y.shape) - fig = plt.figure() - ax = fig.add_subplot(111, projection='3d') - ax.scatter(x, y, z-z_estim) - - plt.show() - - # - # Visualize the error in the normalized image. - # - z_err = np.abs(z-z_estim) - - img_out = np.ones(shape=img_shape) * 100 - - for threshold in np.logspace(-2, 2, 20)[::-1]: - print threshold - img_tmp = np.zeros(shape=img_shape) - indices = z_err < threshold - if not np.any(indices): - break - img_tmp[y[indices], x[indices]] = threshold - chull = convex_hull_image(img_tmp) - - img_out[chull] = threshold - - plt.figure() - plt.imshow(img_out) - plt.colorbar() - - fe = fisheye.load_model(os.path.join(base_path, 'fisheye.pkl')) - normalization = Normalization(1001, FisheyeProxy(fe)) - img_normalized = normalization.normalize(img_out) - - plt.figure() - plt.imshow(img_normalized) - plt.colorbar() - plt.show() - - -def main(base_path): - # - # Load the measurements - # - base_path1 = r'vignetting_calibration\4102820388' - - color = 'blue' - color_index = COLOR_INDICES[color] - - with open(os.path.join(base_path1, 'measurements_{}.pkl'.format(color)), 'rb') as f: - measurements1 = cPickle.load(f) - with open(os.path.join(base_path1, 'spec_{}.pkl'.format(color)), 'rb') as f: - spec1 = cPickle.load(f) - - x1, y1, z1 = [np.array(a) for a in zip(*measurements1)] - - plt.figure() - for c in COLORS: - plt.plot(spec1[0], spec1[1], label='camera1') - plt.legend() - plt.show() - - for c in COLORS: - mlab.figure(bgcolor=(1, 1, 1), ) - mlab.points3d(x1, y1, z1[..., COLOR_INDICES[c]], mode='sphere', scale_mode='none', scale_factor=5, color=(0, 0, 1)) - mlab.outline(color=(0, 0, 0), extent=(0, 1600, 0, 1200, 0, 255)) - mlab.title(c, color=(0, 0, 0)) - mlab.show() - - img_rgb = np.zeros(shape=(1200, 1600, 3)) - for x, y, val in measurements1: - img_rgb[y, x, ...] = val - - img = img_rgb[..., 2][1::2, 1::2] - y, x = np.nonzero(img) - z = img[np.nonzero(img)] - - skFit(base_path, x, y, z, img.shape) + +from __future__ import print_function +from __future__ import division +import numpy as np +from numpy.polynomial import polynomial +from mayavi import mlab +import matplotlib.pyplot as plt +import cv2 +import time +from mpl_toolkits.mplot3d import Axes3D +import scipy.interpolate as interp +from skimage.morphology import convex_hull_image +import fisheye +from CameraNetwork.image_utils import FisheyeProxy, Normalization +import cPickle +import os +from sklearn import linear_model +from sklearn.neighbors import KNeighborsRegressor +from sklearn.pipeline import make_pipeline +from sklearn.preprocessing import PolynomialFeatures +import math +import itertools + +COLORS = ('blue', 'green', 'red') +COLOR_INDICES = {'blue': 2, 'green': 1, 'red': 0} + + +def skFit(base_path, x, y, z, img_shape): + model = make_pipeline( + PolynomialFeatures(2), + linear_model.RANSACRegressor(random_state=0, residual_threshold=5) + ) + + # + # Interpolate a second order polynomial + # + X = np.hstack([coord.reshape(-1, 1) for coord in (x, y)]) + model.fit(X, z) + + # + # Visualize the error + # + ygrid, xgrid = np.mgrid[0:img_shape[0]:10, 0:img_shape[1]:10] + grid = np.hstack([coord.reshape(-1, 1) for coord in (xgrid, ygrid)]) + + zgrid = model.predict(grid).reshape(ygrid.shape) + + fig = plt.figure() + ax = fig.add_subplot(111, projection='3d') + ax.plot_surface(xgrid, ygrid, zgrid) + ax.scatter(x, y, z) + + + z_estim = model.predict(X).reshape(y.shape) + fig = plt.figure() + ax = fig.add_subplot(111, projection='3d') + ax.scatter(x, y, z-z_estim) + + plt.show() + + # + # Visualize the error in the normalized image. + # + z_err = np.abs(z-z_estim) + + img_out = np.ones(shape=img_shape) * 100 + + for threshold in np.logspace(-2, 2, 20)[::-1]: + print(threshold) + img_tmp = np.zeros(shape=img_shape) + indices = z_err < threshold + if not np.any(indices): + break + img_tmp[y[indices], x[indices]] = threshold + chull = convex_hull_image(img_tmp) + + img_out[chull] = threshold + + plt.figure() + plt.imshow(img_out) + plt.colorbar() + + fe = fisheye.load_model(os.path.join(base_path, 'fisheye.pkl')) + normalization = Normalization(1001, FisheyeProxy(fe)) + img_normalized = normalization.normalize(img_out) + + plt.figure() + plt.imshow(img_normalized) + plt.colorbar() + plt.show() + + +def main(base_path): + # + # Load the measurements + # + base_path1 = r'vignetting_calibration\4102820388' + + color = 'blue' + color_index = COLOR_INDICES[color] + + with open(os.path.join(base_path1, 'measurements_{}.pkl'.format(color)), 'rb') as f: + measurements1 = cPickle.load(f) + with open(os.path.join(base_path1, 'spec_{}.pkl'.format(color)), 'rb') as f: + spec1 = cPickle.load(f) + + x1, y1, z1 = [np.array(a) for a in zip(*measurements1)] + + plt.figure() + for c in COLORS: + plt.plot(spec1[0], spec1[1], label='camera1') + plt.legend() + plt.show() + + for c in COLORS: + mlab.figure(bgcolor=(1, 1, 1), ) + mlab.points3d(x1, y1, z1[..., COLOR_INDICES[c]], mode='sphere', scale_mode='none', scale_factor=5, color=(0, 0, 1)) + mlab.outline(color=(0, 0, 0), extent=(0, 1600, 0, 1200, 0, 255)) + mlab.title(c, color=(0, 0, 0)) + mlab.show() + + img_rgb = np.zeros(shape=(1200, 1600, 3)) + for x, y, val in measurements1: + img_rgb[y, x, ...] = val + + img = img_rgb[..., 2][1::2, 1::2] + y, x = np.nonzero(img) + z = img[np.nonzero(img)] + + skFit(base_path, x, y, z, img.shape) diff --git a/scripts_calibrate/calibrate_camera.py b/scripts_calibrate/calibrate_camera.py index c0a2f0d..a6d58e2 100644 --- a/scripts_calibrate/calibrate_camera.py +++ b/scripts_calibrate/calibrate_camera.py @@ -33,6 +33,7 @@ ## LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE ## OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ## ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.## + """Intrinsic and Vignetting calibration This scripts does calibration of the camera. There are three steps: @@ -44,6 +45,7 @@ the camera serial number. After successful run, the results should be added, commited and pushed into the repository. """ +from __future__ import print_function from __future__ import division import CameraNetwork from CameraNetwork.calibration import VignettingCalibration @@ -334,12 +336,12 @@ def main(): try: measurement = findSpot(np.clip(img-black_img, 0, 255)) except: - print 'FAIL' - print traceback.format_exc() + print('FAIL') + print(traceback.format_exc()) measurement = None, None, None measurements.append(measurement) - print measurement + print(measurement) # # Store the measurement image. From 36697db40fedba4b3d7cbdbb8661199efa718041 Mon Sep 17 00:00:00 2001 From: Omer S Date: Mon, 16 Sep 2019 16:45:24 +0300 Subject: [PATCH 09/90] Shubi (#22) * sphinx fix WIP * Update drone_camera.py * Update README.md * Update install.rst traits-enaml clone brande update-frame-table to fix a bug * Update conf.py Workaround for #9 * Update install.rst * Added images for docs, tmp solution for linux/windows map file path * Update usage.rst Added TOC * Update install.rst * global setting cleanup * controller typo fixes and format * Non-critical changes * Close Branch * client.py typo fix * fixes issue #4 Uncomment (and add file) if transformations is required * Closes #9 * closes #12 * Delete Makefile * Delete make.bat * Update install.rst * calibration.py typo fixes * Documentation fixed! closes #11 * Added client.yml and installation instructions (commmit before) --- CameraNetwork/__init__.py | 1 + client_venv.yml | 172 ++++++++++++++++++++++++++++++++++++++ docs/source/index.rst | 1 + docs/source/install.rst | 86 ++++++++++++++++--- docs/source/usage.rst | 10 +++ 5 files changed, 258 insertions(+), 12 deletions(-) create mode 100644 client_venv.yml diff --git a/CameraNetwork/__init__.py b/CameraNetwork/__init__.py index 6bc5195..33b70e3 100644 --- a/CameraNetwork/__init__.py +++ b/CameraNetwork/__init__.py @@ -40,6 +40,7 @@ from CameraNetwork.client import * from CameraNetwork.calibration import * from CameraNetwork.hg import * +from CameraNetwork.global_settings import * import CameraNetwork.mdp as mdp import CameraNetwork.image_utils as image_utils import CameraNetwork.integral_sphere as integral_sphere diff --git a/client_venv.yml b/client_venv.yml new file mode 100644 index 0000000..6c2b6d8 --- /dev/null +++ b/client_venv.yml @@ -0,0 +1,172 @@ +name: cnvenv15092019 +channels: + - conda-forge + - defaults +dependencies: + - _libgcc_mutex=0.1=main + - apptools=4.4.0=py27_1002 + - asn1crypto=0.24.0=py27_1003 + - atom=0.4.3=py27h6bb024c_0 + - backports=1.0=py_2 + - backports.functools_lru_cache=1.5=py_1 + - backports.shutil_get_terminal_size=1.0.0=py_3 + - backports_abc=0.5=py_1 + - bcrypt=3.1.6=py27h516909a_1 + - beautifulsoup4=4.8.0=py27_0 + - blas=1.1=openblas + - bzip2=1.0.8=h516909a_1 + - ca-certificates=2019.9.11=hecc5488_0 + - cairo=1.16.0=h18b612c_1001 + - certifi=2019.9.11=py27_0 + - cffi=1.12.3=py27h8022711_0 + - cloudpickle=1.2.2=py_0 + - configobj=5.0.6=py_0 + - cryptography=2.7=py27h72c5cf5_0 + - curl=7.65.3=hf8cf82a_0 + - cycler=0.10.0=py_1 + - cython=0.29.13=py27he1b5a44_0 + - cytoolz=0.10.0=py27h516909a_0 + - dask-core=0.15.2=py27_0 + - dbus=1.13.6=he372182_0 + - decorator=4.4.0=py_0 + - enaml=0.10.3=py27hc9558a2_1 + - enum34=1.1.6=py27_1001 + - envisage=4.8.0=py_0 + - ephem=3.7.7.0=py27h516909a_0 + - expat=2.2.5=he1b5a44_1003 + - ffmpeg=4.1.3=h167e202_0 + - fontconfig=2.13.1=he4413a7_1000 + - freetype=2.10.0=he983fc9_1 + - functools32=3.2.3.2=py_3 + - future=0.17.1=py27_1000 + - futures=3.3.0=py27_0 + - gettext=0.19.8.1=hc5be6a0_1002 + - giflib=5.1.9=h516909a_0 + - glib=2.58.3=h6f030ca_1002 + - gmp=6.1.2=hf484d3e_1000 + - gnutls=3.6.5=hd3a4fd2_1002 + - graphite2=1.3.13=hf484d3e_1000 + - gst-plugins-base=1.14.5=h0935bb2_0 + - gstreamer=1.14.5=h36ae1b5_0 + - harfbuzz=2.4.0=h37c48d4_1 + - hdf4=4.2.13=h9a582f1_1002 + - hdf5=1.10.5=nompi_h3c11f04_1103 + - icu=58.2=hf484d3e_1000 + - idna=2.8=py27_1000 + - imageio=2.5.0=py27_0 + - ipaddress=1.0.22=py_1 + - ipython=5.8.0=py27_0 + - ipython_genutils=0.2.0=py_1 + - jasper=1.900.1=h07fcdf6_1006 + - joblib=0.13.2=py_0 + - jpeg=9c=h14c3975_1001 + - jsoncpp=1.8.4=hc9558a2_1001 + - kiwisolver=1.1.0=py27hc9558a2_0 + - krb5=1.16.3=h05b26f9_1001 + - lame=3.100=h14c3975_1001 + - libblas=3.8.0=11_openblas + - libcblas=3.8.0=11_openblas + - libcurl=7.65.3=hda55be3_0 + - libedit=3.1.20170329=hf8c457e_1001 + - libffi=3.2.1=he1b5a44_1006 + - libgcc-ng=9.1.0=hdf63c60_0 + - libgfortran-ng=7.3.0=hdf63c60_0 + - libiconv=1.15=h516909a_1005 + - liblapack=3.8.0=11_openblas + - liblapacke=3.8.0=11_openblas + - libnetcdf=4.6.2=h303dfb8_1003 + - libopenblas=0.3.6=h5a2b251_1 + - libpng=1.6.37=hed695b0_0 + - libssh2=1.8.2=h22169c7_2 + - libstdcxx-ng=9.1.0=hdf63c60_0 + - libtiff=4.0.10=h57b8799_1003 + - libuuid=2.32.1=h14c3975_1000 + - libwebp=1.0.2=h576950b_1 + - libxcb=1.13=h14c3975_1002 + - libxml2=2.9.9=h13577e0_2 + - lz4-c=1.8.3=he1b5a44_1001 + - matplotlib=2.2.3=py27hb69df0a_0 + - mayavi=4.7.1=py27h7eb8c7e_2 + - ncurses=6.1=hf484d3e_1002 + - nettle=3.4.1=h1bed415_1002 + - networkx=2.1=py27_0 + - numpy=1.16.4=py27h95a1406_0 + - olefile=0.46=py_0 + - openblas=0.3.3=h9ac9557_1001 + - opencv=4.1.1=py27ha799480_1 + - openh264=1.8.0=hdbcaa40_1000 + - openssl=1.1.1c=h516909a_0 + - pandas=0.24.2=py27hb3f55d8_0 + - paramiko=2.6.0=py27_0 + - pathlib2=2.3.4=py27_0 + - pcre=8.41=hf484d3e_1003 + - pexpect=4.7.0=py27_0 + - pickleshare=0.7.5=py27_1000 + - pillow=6.1.0=py27h6b7be26_1 + - pip=19.2.3=py27_0 + - pixman=0.38.0=h516909a_1003 + - ply=3.11=py_1 + - prompt_toolkit=1.0.15=py_1 + - pthread-stubs=0.4=h14c3975_1001 + - ptyprocess=0.6.0=py_1001 + - pycparser=2.19=py27_1 + - pyface=6.1.2=py_0 + - pyfirmata=1.1.0=py_0 + - pygments=2.4.2=py_0 + - pynacl=1.3.0=py27h14c3975_1000 + - pyopengl=3.1.3b2=py_1 + - pyparsing=2.4.2=py_0 + - pyqt=5.9.2=py27hcca6a23_4 + - pyqtgraph=0.10.0=py_5 + - pyserial=3.4=py_2 + - python=2.7.15=h5a48372_1009 + - python-dateutil=2.8.0=py_0 + - pytz=2019.2=py_0 + - pywavelets=1.0.3=py27hd352d35_1 + - qt=5.9.7=h52cfd70_2 + - qtpy=1.9.0=py_0 + - readline=8.0=hf8c457e_0 + - scandir=1.10.0=py27h14c3975_0 + - scikit-image=0.14.2=py27he6710b0_0 + - scikit-learn=0.20.4=py27_blas_openblashebff5e3_0 + - scipy=1.2.1=py27_blas_openblash1522bff_0 + - setuptools=41.2.0=py27_0 + - simplegeneric=0.8.1=py_1 + - singledispatch=3.4.0.3=py27_1000 + - sip=4.19.8=py27hf484d3e_1000 + - six=1.12.0=py27_1000 + - soupsieve=1.9.3=py27_0 + - sqlite=3.29.0=hcee41ef_1 + - subprocess32=3.5.4=py27h516909a_0 + - tbb=2019.8=hc9558a2_0 + - tk=8.6.9=hed695b0_1003 + - toolz=0.10.0=py_0 + - tornado=4.5.3=py27h14c3975_1001 + - traitlets=4.3.2=py27_1000 + - traits=5.1.2=py27h516909a_0 + - traitsui=6.1.3=py_0 + - vtk=8.2.0=py27hfdee58b_203 + - wcwidth=0.1.7=py_1 + - wheel=0.33.6=py27_0 + - x264=1!152.20180806=h14c3975_0 + - xorg-kbproto=1.0.7=h14c3975_1002 + - xorg-libice=1.0.10=h516909a_0 + - xorg-libsm=1.2.3=h84519dc_1000 + - xorg-libx11=1.6.8=h516909a_0 + - xorg-libxau=1.0.9=h14c3975_0 + - xorg-libxdmcp=1.1.3=h516909a_0 + - xorg-libxext=1.3.4=h516909a_0 + - xorg-libxrender=0.9.10=h516909a_1002 + - xorg-libxt=1.2.0=h516909a_0 + - xorg-renderproto=0.11.1=h14c3975_1002 + - xorg-xextproto=7.3.0=h14c3975_1002 + - xorg-xproto=7.0.31=h14c3975_1007 + - xz=5.2.4=h14c3975_1001 + - zlib=1.2.11=h516909a_1006 + - zstd=1.4.0=h3b9ef0a_0 + - pip: + - pymap3d==1.8.1 + - pyzmq==18.1.0 + - git+git://github.com/enthought/traits-enaml.git@update-data-frame-table +prefix: /home/shubi/.conda/envs/cnvenv15092019 + diff --git a/docs/source/index.rst b/docs/source/index.rst index 7631652..c55e052 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -16,6 +16,7 @@ Contents: CameraNetwork + Indices and tables ================== diff --git a/docs/source/install.rst b/docs/source/install.rst index e339cae..0df2d5d 100644 --- a/docs/source/install.rst +++ b/docs/source/install.rst @@ -23,6 +23,47 @@ three components but differs due to the different platforms. The ``CameraNetwork`` is implemented completely in `Python _`. + +Installation - Client +===================== +#. Install conda. Tested on conda 4.7.11 +#. Clone the cameranetwork package:: + + git clone https://github.com/Addalin/cameranetwork.git +#. Navigate to it:: + + cd cameranetwork + +#. Create conda virtual environment from `client_env.yml` + + :: + + conda env create -f client_env.yml + + .. note:: + + The first line of the yml file sets the new environment's name + +#. Activate the environment:: + + conda activate + + +#. Install the cameranetwork package + + :: + + python setup.py develop --user + + .. note:: + + without --user it installs the scripts for all users (Windows: C:\ProgramData\Anaconda2\Scripts) + +#. Verify successful installation by opening the GUI:: + + python scripts_client/camera_client.py + + Installing the Server ===================== @@ -35,6 +76,20 @@ In the following we detail the procedure of installing the required prerequisite once the package is installed on one compture, it is much more time effective to create an image of the Odroid memory card and duplicate it as needed. + + +Others +====== +Circuit Board connections +------------------------- +Savox SunShader Servo pins: + +#. Brown (Gnd) = Gnd +#. Red (5V) = 5V +#. Orange (Signal) = PIN NUM + +Installation - Old Reference +============================ Prerequisites ------------- @@ -151,15 +206,26 @@ Install the ``CameraNetwork`` package:: -Installation - NEW -===================== -#. Install conda. Tested on conda 4.7.11 -#. Clone the cameranetwork package:: +Shubi reference +--------------- - git clone https://github.com/Addalin/cameranetwork.git -#. Navigate to it:: +#. Create conda virtual environment:: + + conda create --name --no-default-packages + conda config --add channels conda-forge + conda activate cnvenv + + + +#. Install prerequisites:: + + conda install python=2.7 pip paramiko cython tornado=4.5.3 futures numpy scipy matplotlib beautifulsoup4 scikit-learn scikit-image ephem pandas ipython pyfirmata joblib + pip install pyzmq --install-option="--zmq=bundled" + pip install pymap3d + conda install enaml pillow traits pyqtgraph pyopengl vtk mayavi opencv + +#. Install traits-enaml - cd cameranetwork #. Install additional modules:: pip install ephem @@ -187,14 +253,10 @@ Installation - NEW without --user it installs the scripts for all users (Windows: C:\ProgramData\Anaconda2\Scripts) + Circuit Board connections ========================= Savox SunShader Servo: #. Brown (Gnd) = Gnd #. Red (5V) = 5V #. Orange (Signal) = PIN NUM - -Installation - Old Reference -============================ -TODO Add - diff --git a/docs/source/usage.rst b/docs/source/usage.rst index 20d8f1a..28d9737 100644 --- a/docs/source/usage.rst +++ b/docs/source/usage.rst @@ -26,6 +26,16 @@ pressing on the camera ID should lead to the camera interface screen .. image:: images/GUI_main_status.png +sun Shader +---------- + +.. image:: images/gui_sunshader.png + +The angle slider allows manual setting of sunshader angle. +The scan button moves the sunshader throughout it's whole range, +then according to the point with least sunlight (as shown in the graph) +determines the sunshader optimal angel. + Camera (server) =============== From e9850027aeab7ddec11f10b8db9bcd148cec7813 Mon Sep 17 00:00:00 2001 From: Omer S Date: Mon, 16 Sep 2019 17:04:35 +0300 Subject: [PATCH 10/90] Update install.rst --- docs/source/install.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/source/install.rst b/docs/source/install.rst index 0df2d5d..f26ba02 100644 --- a/docs/source/install.rst +++ b/docs/source/install.rst @@ -34,7 +34,8 @@ Installation - Client cd cameranetwork -#. Create conda virtual environment from `client_env.yml` +#. Create conda virtual environment from client_venv.yml_. +.. _client_venv.yml: https://github.com/Addalin/cameranetwork/blob/master/client_venv.yml :: From 9c0ca3a0d1df7a928a522283f8abc78177fdbfba Mon Sep 17 00:00:00 2001 From: Omer S Date: Mon, 16 Sep 2019 17:07:10 +0300 Subject: [PATCH 11/90] Update install.rst --- docs/source/install.rst | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/source/install.rst b/docs/source/install.rst index f26ba02..99253d9 100644 --- a/docs/source/install.rst +++ b/docs/source/install.rst @@ -34,8 +34,7 @@ Installation - Client cd cameranetwork -#. Create conda virtual environment from client_venv.yml_. -.. _client_venv.yml: https://github.com/Addalin/cameranetwork/blob/master/client_venv.yml +#. Create conda virtual environment from client_venv.yml :: From be5d37387e8defa96e352d45a8e1cf1eca0536db Mon Sep 17 00:00:00 2001 From: Omer S Date: Wed, 18 Sep 2019 09:54:22 +0300 Subject: [PATCH 12/90] Update conf.py --- docs/source/conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index d55f05a..e1abec2 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -76,7 +76,7 @@ # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ - 'numfig', +# 'numfig', 'sphinx.ext.autodoc', 'sphinx.ext.intersphinx', 'sphinx.ext.todo', From f8384c4211824e49506bace20c043662ce715515 Mon Sep 17 00:00:00 2001 From: Omer S Date: Wed, 18 Sep 2019 15:34:54 +0300 Subject: [PATCH 13/90] Update install.rst --- docs/source/install.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/install.rst b/docs/source/install.rst index 99253d9..35b0ca5 100644 --- a/docs/source/install.rst +++ b/docs/source/install.rst @@ -38,7 +38,7 @@ Installation - Client :: - conda env create -f client_env.yml + conda env create -f client_venv.yml .. note:: From 088eb6985652b6388e60177dcb1478f61a5cd4fd Mon Sep 17 00:00:00 2001 From: Omer S Date: Wed, 18 Sep 2019 15:40:29 +0300 Subject: [PATCH 14/90] Update README.md Added docs badge --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index e66795e..0759b43 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,8 @@ Code for running and analyzing the Camera Network Documentation ------------- +[![Documentation Status](https://readthedocs.org/projects/camera-network/badge/?version=latest)](https://camera-network.readthedocs.io/en/latest/?badge=latest) + Documentation is provided using [sphinx](http://www.sphinx-doc.org/). To compile the documentation:
From b0da69282ba4fec450778206d07ae9b9f59ff4d5 Mon Sep 17 00:00:00 2001 From: Omer S Date: Wed, 18 Sep 2019 15:57:34 +0300 Subject: [PATCH 15/90] Update index.rst --- docs/source/index.rst | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/source/index.rst b/docs/source/index.rst index c55e052..38aab65 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -13,8 +13,6 @@ Contents: camera usage modules - CameraNetwork - Indices and tables From 46061fc2f7b8bb16bd1adbf3812523f2d3170acf Mon Sep 17 00:00:00 2001 From: Omer S Date: Wed, 18 Sep 2019 15:59:05 +0300 Subject: [PATCH 16/90] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0759b43..268fab7 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ CameraNetwork Code for running and analyzing the Camera Network -~~Latest version can be downloaded from [bitbucket](http://bitbucket.org/amitibo/CameraNetwork_git).~~ +Latest version can be downloaded from [github](https://github.com/Addalin/cameranetwork.git). [Installation Instructions](docs/source/install.rst) From 9beab0ef31fff2501b00f5d7f9738e18a03257a8 Mon Sep 17 00:00:00 2001 From: Addalin Date: Fri, 20 Sep 2019 15:45:35 +0300 Subject: [PATCH 17/90] edit installation of client: before running, changed "prefix" name to be similar as the env_name. --- docs/source/install.rst | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/source/install.rst b/docs/source/install.rst index 35b0ca5..596908d 100644 --- a/docs/source/install.rst +++ b/docs/source/install.rst @@ -40,10 +40,13 @@ Installation - Client conda env create -f client_venv.yml - .. note:: - - The first line of the yml file sets the new environment's name + .. notes:: + Before run, edit client_venv.yml: + The first line of sets the new environment's name + The last line sets the environment prefix + Make sure the prefix folder and the environment share the same name + #. Activate the environment:: conda activate From 2e65f35fa7f3850fd8a1148953a25b3587554995 Mon Sep 17 00:00:00 2001 From: Addalin Date: Fri, 20 Sep 2019 17:26:47 +0300 Subject: [PATCH 18/90] arranging steps of installation arranging steps of installation --- .idea/cameranetwork.iml | 11 +++++++++++ .idea/inspectionProfiles/profiles_settings.xml | 6 ++++++ .idea/misc.xml | 7 +++++++ .idea/modules.xml | 8 ++++++++ .idea/vcs.xml | 6 ++++++ .../__enamlcache__/docks.enaml-py27-cv26.enamlc | Bin 0 -> 56688 bytes .../__enamlcache__/extra.enaml-py27-cv26.enamlc | Bin 0 -> 17406 bytes .../main_view.enaml-py27-cv26.enamlc | Bin 0 -> 22454 bytes .../popups.enaml-py27-cv26.enamlc | Bin 0 -> 11778 bytes .../server_pages.enaml-py27-cv26.enamlc | Bin 0 -> 63340 bytes .../settings.enaml-py27-cv26.enamlc | Bin 0 -> 94143 bytes client_venv.yml | 4 ++-- docs/source/install.rst | 11 +++++++---- .../client_logs/cameralog_190920_165337.txt | 2 ++ 14 files changed, 49 insertions(+), 6 deletions(-) create mode 100644 .idea/cameranetwork.iml create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 CameraNetwork/gui/enaml_files/__enamlcache__/docks.enaml-py27-cv26.enamlc create mode 100644 CameraNetwork/gui/enaml_files/__enamlcache__/extra.enaml-py27-cv26.enamlc create mode 100644 CameraNetwork/gui/enaml_files/__enamlcache__/main_view.enaml-py27-cv26.enamlc create mode 100644 CameraNetwork/gui/enaml_files/__enamlcache__/popups.enaml-py27-cv26.enamlc create mode 100644 CameraNetwork/gui/enaml_files/__enamlcache__/server_pages.enaml-py27-cv26.enamlc create mode 100644 CameraNetwork/gui/enaml_files/__enamlcache__/settings.enaml-py27-cv26.enamlc create mode 100644 scripts_client/client_logs/cameralog_190920_165337.txt diff --git a/.idea/cameranetwork.iml b/.idea/cameranetwork.iml new file mode 100644 index 0000000..6711606 --- /dev/null +++ b/.idea/cameranetwork.iml @@ -0,0 +1,11 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..e76b483 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..76ba28b --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/CameraNetwork/gui/enaml_files/__enamlcache__/docks.enaml-py27-cv26.enamlc b/CameraNetwork/gui/enaml_files/__enamlcache__/docks.enaml-py27-cv26.enamlc new file mode 100644 index 0000000000000000000000000000000000000000..f61414c932fbf79ce38b33ce2cb69e0cf2d62d3d GIT binary patch literal 56688 zcmd^oX>cS*c3w7)0S0s51m|FLE`rB^!*j{ukOJl&at0h0Kyulf+1^4|0aHL<>?+I< z>!q*pt^HwJwrt6kb``Og*Ro_sNV27M*s`satz92KUv32@O3+e3DuD(m&@mq%s3eDBMb{r`R2$nSh(@m5Khe|`8nflv6$IiR+ zsY*^2aw-=n<@QN#zbf~u89pCSpzc zg%O>L?{3lG-K5G}Rb`thY*Ur(s<2%@A5!HVs*Y~mRN*OAIi(7x^fz~@^0=xztqM=8%4te|-H3K!)>SdID{dvJBR;d+5zjdancZ~K0f z$|dahTQ_R;rTQ348SNB)K^0XVHEQMX27Xa8h1lduCQC5w`-|DUz06yxhPPeMZ>)Gw zZv@pvw0rA=tN5v)8V04-2NyqV^I$)I!$GNP6(3Kt-x(Xgqlm?xY&6{EX;ZJd@gvG6 z`C-cg*6ew=9xXL|L&|PDU3W|VdAD%~P1F1Z8NS$0+5gVt6P`g5DfN+3pOtZJ^d4?x zIKx}^*_^tUQy<}t=;sUa**@Op@W&faqYF8_CG2QZ(yuD+qF=1dF8HOW#D?UruxrY% zlyJpg0b}$Xq&c-0Y{4Jn<|w#FIkmh?4KM?&`}i~OR!3BSU+xe0scKGraxSMZsz&(f zLG|Lje);MqP57Q>TJ~i0ABo+kv8AmqRwg-qYDFSVNm#OQKJ+F?`~)L z?#FX$8=hMY&!N@v+!mK{yXFZtshryl&*3%l+@X1bP0DkJ;kntC=T2#hM9y7pch#E6+ub2{^;f1e^r}ncJz~1yq8HbtC~N z&Vch{K)oxV0uyXzB6OmtQ9lx$u{>KWRlI;D68&`4aoEy<|QLKB0YNxde{K(X9_ z;)#|A77f2%UJiCKhd)FnI*Xd^*ghl#x_` zS-&irY^osNSPE}zeK2BKm+I1ZfhYAIY7Ly#R(wA!LC-EO`pdU;d%kZJ_FJMr7vEAJA@u;1T;+>{=0;J zw+%fe^Z~39DbGG@`u#$Gz?%Lcp~p1yVEHl840s2H{*X2OVWB@_P5+3{=WXa8r94N4 z9_{#G`Gx+t(4VlTKPmK&S<{ax?{VclVMG5U<$p@}pR%SO7y75I=}!y&GdA?kQXZHn z(BGc7ribYQ^eNumkSFGvJD(_Y0y=G1Seaf3q-lPrvIo8j4k^h1< z{Y9a_WKDlr=&#t&U!^>+3;i3`^w)&`x;6cj(7$O-e?#csvY~e<|FqE0Sku2P^zYcv zzf1m~6#DmU=nJHOUwJo`cgu$UQ=~5n|4&=fyULqYUde{uBY$7`&so#YEAO`Q0vq}T z@?RAGWgGem>8r}CDX-q19`o|_*aw*SwSfitNHL6R4Qh|bRHDd0Q-MB9Wfi*80CL?Z zYKVSko&=sV851{_szq8KU2qZ2R0ty%+GDg__MuQH^=b);{No+J8j`KZ!W^;n)EoYs z5B;y?hpG0IUahYlC7R+{t)9O|RVt*a4b7QyioO^HQQ3b`IY@oo4XUZw>DBrcz`2Z{ zejFboxK^plwU8FmCb1_-L_vLa1y=u*Hi2^WaLFx)ek!wEbwThaD3h*nSsG<~V9`o? zX96s`FZh$G;IjI1t{|gH;5NOT6)ooD7J0i>+vBOw&g-r6PVixy?%}+F2Q313p=Ufz zadgjcuHm|=ZYTJ#oveJ&eOXUa95Zfk5o^^MC_dc=E#h{oFFcpZyy5%8^BGw;dS7@U zl~s%}Hhm$anFj8n{IvLsdekFcN+sX$J>unztQ);Y&?y$raWssDv0t$0R_9?9gxL^Y zQw|?z&#oNhXsf}5E&ee*XOmK9y@)ojlv~69U@2($o@U$9iMlXizd~uuC^$?RuOMkE zP@5@{gww_!+9I;tc0umfQn@#LzyH3BtQ)=GPo%PnG1{s>(3qUK!F$vp&ZmNJ_zrO) zBkM-*5EoNfW#Q+4Sg(Zu8x)tq)ee7LHwcfpxnj(wrMGlp`u~>BJe|rKY{j)zXXXrJP@O&M$nT_L%j8|ERl}%(881pZ z1*M!I9gS63`1m>H_bI<$&G##RK>35p-^6PVW@Px20n+PN_xkz(1Dw{dN7hHFR$i)9 zi}1M5SH*~XH}Im{VxVr+?wb5z5Z);Qj*6Z+#-A0F_k06J?k92QJjLV`6WXF28hIQF z)lzv~m=lO32x(XX5Hhzlr?DHfA4UF$QTx{k)uU~^VkSFZ@y@h}Ew^2eeHLPx*D4^y z#G$;Bai-ZjFu{B_!~Isf{dflCN=rGqPz2OvQUn4;qzDhFcIivgfU>lR+pTJ!OJx=e zPpKS~7JW}w{Fy{}F4xbIl$aV+{5`QWEXWH-q-xTQru56j39(VDMFyKIUL&x^J7l~@ zeEWzVDq^4~eq0O{Ep@QIO(u?~xp~UL(!rIp6Nz=35eD8OZ@1cvjyNN;leFI%-B>jJ z@CA^@BJKx`h4BxgBO2?T$}M0N6yUYA7z;ino}fxNUnF=d9UHHQ^DLu4-KBLz;}`Ij zP)g4YZ`bao&Y`-%;=xmoee2tP&H{diA6*qW0h!q}pNxne%VDj*In9qU$W z*&D>SrAb=4;yPFTW&CU{ErjeF(KtR1%zB%K2F5wGnmMl`F%UQ`U1b+X*aHaM48+)- zd#dlLq0{}RbNFv%+MGw4)|~#+eWyq8>BAF#a4(+mOeL^Y7RzpEs(__;&N5+Tq%F11 zjdUD8#u32bFUm;Hfq}35d3?SndoY}%WF3z=)I5YW-$)G?#3-|IHeLWhh`}(~w9#pk zg!RUYZOuG8ZIZCwc(Frx?u<8Hm<%`+*x+0XzsDF{8@(6CmXWWSByZC)U~kia z2ZZrX@M8)~EL;8p|Mi}7P~} zK)sz2y;=F6RRr~RM)YRsf#}5^{DxsLj!Og(zn zOaAwLr1#uV-_+a6ojbUc-%7P>xmsrxo9m$8Pw7|y6pw$LKY%1D8D*cq=YAF|ep|lL zeZl__#nOUH)mh8j!^-|+sm#(@gUWnScRChi6{}~~yX@xjg0Nn8mkEcVGT8lQ_~V%( z4dA-shKtfHuf1m7B2pTvniaRYga`@b(fyKqE>jZj_?s+OmP&3lavO+XQEPas_TJ0O z@kha_`(^nvnX(X!bprtxNVVMn>_T)psdO2J;+{Zjlu zrWCZWU#ti98n)1WoRa*Bo|NRzWlF-8C{Udrrx1U#Cx!U)nL=QV2V6@9BhM;FVosON zpX!PHKb(=DOItV?eS}qsme*8<@9#+&{!&XBXpt|{Ik~1Xa0u`IYyFqol_8l2S23%z zFNtACYC$-3zcfFRDa|mi*&@!HSJ%=YqU0nDx?h$bZC4gTiP!Ryb58Ak5k8+O0JV{KSK-#Daa~3%%YNTGVOjrzL+TpN2`xl22Q2jFTU3q82_LK26;4;}BTCGOtD$mw+ZvZ5P0JCk=>;<)<^x%x^X<~@6vzK+5nOJ&uq6M9M0(Y>t!SA(N17Lq z=(d8b7+WWRAfkgDcp-p@a6LdPGcN|=WawW&yb8D)q`*{nro@ubY?+W26jO;ng`6Xx zbN(QcWYwIK^r&%v65{B_9TX>p005#|tqj~<{Xva9iZ5RTAiELeVSC9pd=1W8Dlwd2 zkJ|fhCIzy?Z_se0%g`f%|5hrnM%~cE<6}#?`IlIYXb?aLZQ6#*yqU&Q4|d`HEPh#c z9F=;zod$BXSL!ufiLc)YnTL-~*7ucf`8hnuO+^KnjP3nN(X`+@{JK$RY4F)IxHYv|l0|i=m8lXTE&s75jT6h|uKoidx zD6rPDo5+VvJmbiRYi%O~K4@yAIP&3I6(MX*WhGmfTc9g$T>Q%v4X6HT${eUGClS_4^hG{uCciKYlP zshn{%MeC@fI+|j_(?nAQo0O-CrpRH7;Fv8bIOb8zVN)6;c?_3gCYhwmBW#C`p^eyh z^IG6BGV^F~3|FCsD4M+_-mex=j76|PjZ)A29u&$*AmFK=F@$r*cXgz}gi>%jp`doh z2q)H4^)tMB7KxZn7$6z@2K+{fvk`@B2HNg9w;{hUDXOauB1p|p--}XAyv`(k*%4Ks z=kOaYgwrPbdEA9ZkqG`~80ecEV)+dtmLDVh#eX+3e+mOb!;Z9dI_e6lViK z4rtp(^wW_7O+-Ipa)yb*L;uA5+8&dWp+%%I{NI*V<7N;mnOL7V^51sO*PU&IbIC+t8mNJ#aRl?;L5*$RqS)LjSlm|0fhcIf%DsA^$1LGcNp} zwx$Ot2l98uG`(hUAGdgW5lOPn z?Z?doK7#weIv1c1SX=J(aeWc5c}XLC4elTwszX#)2a7#zBFp0fEtBk_Gq@bpr+1QQ zYZ!Zhv4*uPtmqo-B^nu|?VV)o(0k>4nMrT#oc|m@t?OgJ-p(rTg-I%|U2(O&4 z#@A*a5N_3)+mNnxt!E@f)EFhUv-1cOX}B-(sy7YytN7`-;rLG4I1*%s=lQblHd+Rc zZjB(nkqF(s!Kh`PBaPW*2aEJQ7@X(v2KK3<>}8EdMQI7vzu8)cLKz^GjJl%a>T@w# zgC(x>NVx!+{u9eU2~}<+CwP4A$Moxrc3x|g_=x{H**Tpb0zpedt+VWx@r&Qa$Bd9V z8V!YQ5_pmnES(n{X2W6JU8}iX9zMAik-OEmzC)?lf$%Q;Ad&}(%t1^j!EhcNkT$Y>f5CP=}qje^883diCejk*7u;^;mj)*ze7 zJfxB$9Vdyz)2kuuyQ%nALoXF5k-W6j;CU8#L}$?FdF5->JRkx7c-mjmt1i5}?B(&x z`*B|awvW67N$FbKXPpbgS0R@aD7TS3mLm|Y#gO+DvUby5$xlCa80St8na`j&Cv&Ga z(KU%{x+*uGi*jX|y6>a>7Mgnl`Y82jVz9+)f8zIW<8i|Cd${p9;c0x7O@0uVO{r{0cJdB& z-mQyPZR;7(R{23~mB)tJ0dBz+bAMYaquKpx=y5>e06Gilx3;%RwxO4EVIN@i&+^As zIPmYh8#hb8Tj=-L$OD)20Q>{w-+4E#;V<;?5`ez5m%z}&&pALB0qEhh?6A8wOMghw zQE(qGfh=OFk+fQQ@y_5qYu&rI(uPax%LG2*AtcZzwG9`6xO5b*dknjkwdabp<}09e zej15bc5lP7E0*PuXNWeOpW#!2x>DswuGU#$;PPcJUlEFEjJ(uJMMj=R)}%vE;z^4c zfMWrNfm4VphC>x#>1ZiHw@Pu4rO*ns=+biC4o9CFni@OJT6$UoALC`gAj+g0pUng2LpY)*~RsN%CIc%1k zV#J(@^@bkFd^DBW+5_c$4Rzlmc~7MBw#8!Ov9@`4wyVgv!?8#-w3f20^9ZwmpFNor zW5X>ZTlBlVkQNKc{?meF#Zr+$uJ8$vpM~vWozz=Q>q_0U`wPZeKc=&dcSN`bOiFMW zu8Ov4;2Z&6$r0fQ?;r~?>qu2N4-+bT!qb3S!6xOoYEY{_dOP810H{qoV*si(Xb@=9SOa8v8o*=|&s75^ zA8zJ(Q1_)Ko(E0Yt>r`{psbvS+weTBd9wSm-)0u|+!8aTeHzDbDU15+JkPh?qFxYs z6?rOnzs&kxMhmmZ9|EIF$*tZ&*b-6MnZaGK$?BdNbaOF-mTy^aTzhkx_ncQ`a+lL~ z!(x3_?~9>AX0kv<4&qmx^|5ISG{a39pdh`4&A_2qW20FK(iRx!RL5CFtOUDoBCtLy zcnE)oR@w`Ss7*bD_RwCim4l?kdRXiWfJkBe+!-Zk*3U6Y5cHiy zNO^D`FXZWb9m@+jU;~ zvQu42i{j7(D7M5^L`+~eaz2NoMgA^`el;UH?P*OmwMmwRnxKp@pwuzuqyaAXuDV}O zW!Cl`8!#8OwWQ~iV5x4ny~K1~Ps_0OF7u~RrtWu{sf_5W>M}iq(7l<;tbL_6U50Cr z)-HqPP)m(>Ymjl$BCNT`hz}y<1hKLlT^MYpGexlJIm2-StdzD}wLX)IEDK&6BX~&Q z=rsLw`SWh$PEeiiQI~l)6~3)uxgT<#!zZ)}$l`F8()$t~#g+35Ol0Qj4ZQu6N#Xi+ zJad~@ngvZ>>E|xw#haQh=~n6$r0i2kNz~fkY=U;>&6Xk+O_5qUUKif+Vx}-Q?>Oa_ z7TE|d%%@Y~#dKx$w$r2~F!6IRdbLz|w}vU&oMLbG9D4#SeBU#OxbqX>=KLfRzVNc* z5fC`dd=h)u`5VYj%f8P2jNT^fwrT=^vlXnItlWK-9RhmTY5?jdt+v*6gEWS`_|h0C zT=&|6YoEnT8EoEnwv$wU59__0%DmAauPrv_anzQ0Dt8$#W%E%x^jm7kYjPFf8yn7t z*<7mb`!MHW;n{#b%>M^Luhza+d(f*rkQVquObiK-)&#t10@B6-Z>)oqAd*3rrwLBe z#1nA|#4l`~iY<#M%A&jfvJjXDNTm*5XhV-dU;zGk(gTHLNpEvzmf;_tnf1WfJceFk?ErNTc{-!+ zv-CExc?`Y8+5zMq{O^OhH@g_J^oY#^`n*m32!D9pLEqWyZulQ#{U7InS%}bMQU5|O z2WG*SZbAP9`NNA2c{<1DG4h-u{kYI~j?I&$M{FMO?;M*aOAnVj=%2HZ|9Q%TGqXVd zq7D5gNRKnKK>xBe{TZQu#hM-mY=Qr)HuSGi9(dhBKVeOeGqyl~&YJ$b&|k2jzess5 z3H@bj`YS@;`Aja;zQX@?p?|}g|25^wv0N7Y`Ay1yL-@aC!(Zqfp`W&j zJnstqC#~t<6Z(QR{rf_H(}w;Q<@uD*7p>_(tvpwGv+e1{2TKb}2IZmS0!<=Q0=Gm| zvmU%1i5kHKKH*g)emlI!y+MI|Ak$;Q9;p=5J7|dOWyt~CjXkrzhNSfkbldoUt#jAO#U5{Ut{v?On!q&5lL!T zl&f{NF4C&?8LAvq@VLimU#@@ikv`Ewtqj7f-?v45MKu29)-B!LD#G`(2y7EnVyj7* znS68(pYSk}dFcqS-E(J?>`P-j_vTaUp-L&|zaSBn9%^`4EC*pEeK4XzIom*BkdhnX z0DFC6y*?&3jHu&YpT1n2dGE%>;)TigT3x8?+@LfUe~z`mMS{w0?$_%FYQ6zZnqBpo zTdV`;zar^=zx;u;QLVSO$k6Z>*G?_+cB?1;U@COmo;ZxEl%Du9E-)UMm`>TQh+zf; z4^AKe5^VuUJ9N>_O3pRzyO+ylBCN^Yw#B<%D46MZ#TfZg39>fS=M766{(Uy&mzn$~ zlW!x@o0a3f`qtYQo%e*L7nC9y!n6zB=iWu%(?c0e_bpZ1g&zGE(jGlxBD2|eK)KYs z#5Hmrk)}fUrV&kJIWOlohrM!uem>JdSecyVuBxdxz6GEKDG`#Jt2iApnbvryjBx0FiN2JUNCO&dx)*f~CoyWB zX_2~H{p+h4(T5?CSgR^QHK;6A?(>2$dMP{8R4{?GM{<8Hm0OGKerP4~xBGi0@?Xt} zObzCaTVA@~uKTo(PvKiVs^cF|1=i6586P3(6jaG3@CgaF!%*Xk3W~J_Rv4KGwea*{EZLCBGf|dHN9YrCOy94@KC! zW1@aGEyF5$#}A&b-%Bnl9A)-$@JN{IAwBOtK8DX{^}d3H}CdTg2>ErT^WG ztpC$SRLl9bDgzn7Lk2dT6f0ofJaz3pQ|Pa_}I z^4P~*Ue0Hnq!<;&af(5)SL@SXNXxZ~QL#63<~K63T8xSkl4`O;o%iU){l&Bx;{Uc% zvreNcT@^Qap8LZtCNV=x@Z!%Rt~Mj;FyN+~%ScbV*Q+k|OKJI5(WQDb(S9={t4){M zpEkn<)N$Gly)uO}=A|)(3wFZBitkLJ6g}$v|1_0%g~1e$6fyJX@CmtRu+?Dtk2vC?vi=z@I$>FLMGLU=H&5Nx6W@8+PYY78QR5F!R4cK2c%Gh97Lw;NE%oyuQyC=9(DHI6xGM!7_WU-zs9RyM&ymcdin>RzKW<<{wpu8T;iSeIi$>s z(a-VUBv1NRrntcT^fq$SisE)3^n47RVZ(x+5kx>o`rV?zg-wB*aK00Lj{w_Qf;IIZ zmIN;{!Jxn<4cvriKI92#g8&xc!j2>85=b|tx1b-xrG&nn_8WKnhC#!fK(2F=$zx17 zDO{2cCoyzo2%8b_@Ypb)y0rK4mp7kzw8Evfk!FJ@2RBmN+5=R|kR zdR4@F6-EvDfwUvY)jIbEuHC-F-asiK`5Y3tHap1ranG6k9P@t+36%<^_CwX6OO{tT z>KF53zr~BSpbv>x>cXuZ>LchLa!~xI`qT$csKp`G_z@~6po34hs6&g$F+TVjJiBaF zj14)eCv^HE{0MSD22~?B2yU$h?^EwjIKZpy^CuT}M3T99bHAKVaL7SqSc)Sw`f#xQ#m(8fi zh*t@SS4ReMj`J6&!3!S3;G4_tat)YUii?vp-RLTRnDw2JZwol49b%pP0@aA$Vqai` ztGkDJ~Sg26P<%wG-#KvD~+`U-F+}K_4Rs+Zu|1FVr4h; z&_!~*C^ih%ZSMu%8)2JU-5nDZ}qaVGu?{l zvD07Fir%dXfy*NYW@TGf=nUao&M<%Bq2&99(m-~LJVBV+sKYnS;SlO@+Hhzdb2#!uhmlm= zW%o`n&MSk+zgtR0Kp}(FiyhW-Y9x0kw;u+?{e9zoJNtI#YGq4+K(<^-PT<+} z%d-Dy_b=?H{WbgS57@ouj?DmdVG?hIQ}cK{9v@wuxtgmvlID{7Pfyps|GB+Z5Y<-; zea_H3`U@3~A)FTB3sE%0iXjY72)l(_Q^HS)W&EBNep(b;#Y(FvwuzNCVW72D`0b+D zAyzs>u~V#ciei^o>5{+Ew%xRCoA{d$dt~v9aN2A29+9UV2(gsyp#3j;|D{*fplW=9 z3d<@4#j@wSp|$DyWjBoEZvfoQf_jY2o|NJR&-I^~pE`T-mf*tc-{@yP4LWYIdpwbY1WR~pHQ5YcWu_1PQ zMH&rcx&^y=Ug{F57UQoiqGX64)(t_&D5hPviU)fs-n5O7+g;oCjCdqX3~Z&vRx8^(BL+Z*e0V&+U$faGZIT&fv!_9uXY1HJ+n~*Jb!?ui z+I(Aop0DH2^9}Osl{U$Y@@H>@JTKJYd7(j`7o|-yqj+9ykY`^Vo_!7Syd-Us8O8Hb zgFO4|@a%7p=VfV=%qX6h8{~PV4$mtM@*I#h$&BJT&>+vNb$DKFkmogNlgucd*Baz` zy$;Xo4f4DpZIT(q^G1U_Z`R>?vq7G>q)jrTc;0G|XQmF%OoKdcOPgdy@w_c<*5&9g$M28L0))i z6p$bul!iwlLwJx$UMC9ZArI2TJA(op@Xn$*hXOnBdQm`sdFYG>=H4X~{Zz0}GpQm> z?1%-JWl`^myotSXOJURVose7r3U;~dmK+n+7<;Ld*$JM*{3EH;z{YwJ6@s#BZM(Z` z(l0Nnx^FF(zr!Jx??v%imhgg$=trs*rdKNw3B*;~amdT1RVNI}`CwvEd@Qp<-wTd1XFUj^c@NEJxO23pgA+@mo@3UGIjm7F04pyEgirb!Hv1SFM518|Qt z_hA`W2j9kcl7T1VJ7B+)@m<>ZZpNR{!IQ8{J7*bxP8)xo@x3~DQWI(CBIEnC@s}9i zuY;!vHSJts{D3z8D&wzdD}2R{h=zhnG|+W3zc|FI4} z3;TB%e^(oSkMTn~_+i)|Vf-iB_#ER$wee$&zpsNI2cHSXKhVZMWc;KKehT)d8ULv^ z{t@Fp)4_iZ`(H4AMjJoN_&FW?JnVnT_^-6_3ygoPjsKeQPjv9V2cK^k|5O|Q2gWbz z;J=0a?->8RHr{0Xk`8_u_W#KEXWIDZjQ>Fg|0C?LF#d%$ewFcS+W0>)-qOMU8GLNU z=e6+##ydKA7xvc~zoCQQ1m0u(mNtHy@xBhe2>T_*2RisN@INs=)W%1QkL%;!_1z)~KoT`Vd{&@>U-&jl?+D_N?VyFl-glK~Qz~Yq z?NsgEsyr60kE96y98xoao+e^Y$`NiKTBO*c=!AYmkhdFE^*@|v`LDX5YVWo)=2c<= zVPEY8UmNh9&vo1;J)sXQ+4Di@xS=AfY6(z>6Knp*6$M>3RooL;N4RJiE$?KafUdDJ zgSq?TQ&Z!LwyGu20bE7Ze4nDad7X+AI>0egrmGjPw4unVS^~6j$ycRq-qc`>u1%D8 z6h~D{fGw`eYEH(v7u@Sj1ruV-yjNqF}LI%&Mhn`#;TS8cet(QYsjo-kH}k!uU15&PaFB+JWct^ zud0@Shck*X-#676%`9N^c42!X3@Rl@@l~}1nB&Iun~dw92v7G)T|2C4*6hycbS5{H z*&Usxa%T+X?%4F`P$r6lGX0bpoS2`TTA1B$7#W|+430mX%6<8jYMUV3*!<*}Y8xd< zHa;;wH+x5UMAZ`T&7krP-w1E^xcOM|eNW;BhqE^N;O!G+f)u==8%6GE#mgPVn4gR2 zM7sGQZKOu7swFUn?e`=#``CuR8JZJU5w}%pGiN z!g=n#@(n-SZT5J1sQA7&@iKXUv&KwkenfZ`(5jX|Xiq7s{FuMlL;F+3S1YuC3sc-9 z)n{IX(d;4nh2pCfvbZHcQ(SmzI&Vf1<`pi@9t3lWuT~Je-TXE?F+VYXcz!EPj!%tG zsW!}ST^Yvv%WA~1RwtmKgip@TtaN}$U&r5 z7Ynaj)t{SVvG6J}yU>y|a!22XThfG(Evf3~@h#FCl^(ouz(06iyNyLFyujMzQy3na zv!9YWe#b4JHW3PZmpDZgEVyBD_y0(~Gw~Q{f2}nxK-l!ZXt7Z&Q~BtUgc9D~X~x}2 z*?UK_bflN>D-qQV_bU84j(w8F#can-*C0)Ux=h*>PlMYv1M@XUEay=gA(Vhq~g)U{q!|@M{o}1 zE>trW_G1Ns!?E&WKUP#;!mT5D2}n!e%mm6aJ(`p73v4U$7buIN4p!znQ06MeLOa$g zcHmf3KI(D#3spRgm9#@i#f0zC##255;g8QpIB1{p5eR>LK0*~=%SY%F&ZYW%c-@XJk!bGKSDey_BdQs_AEw<_KsJq6i=l558CdOC~qC5?3J`A z(`Khdd0SEDb1;ilcKh_&bDjcF zGwQ4oP$dI4J2 z@o`RabW)X6<(%Xpl{_YIsZ{cu+e<1Bsmk9;FJs7LEnFG9sRHWSi4t|^rwLTv$*2FwM0Biyn=)xktJnItU$yqh}S1xzl41f^-H;5 zq5&xnNHi$rL5YT>JS5Sul!wLQ(*qKYNQt>Y2}dQ`BIPX-jY)Y-qODTiYM_QB+$Pbu zl*c8Skn%+H+3n`pVF`Cgv{TAECE6wBU8a6S!rc;0N_kSEJyPBy(OxOLchM5m;DN}|(JK5gE;O~Nx0y(Q(d=6+nl zwUNF4pVrv%?Qw*YwAuYU~`dOw2uQV{uiXI@Cmr;2?@lOZJ6tCeuW^AkQfSF3tK64a`0 zm<-~6p;iOpBIPU@R@mf9;D??PaV4y|=GFj=1K@JthPBm88%a{DUaEbQjCGV5j<%t+ z~1TXt3{Dp^)A+Z_oNowQT3?CCka<&|iMw z`$>_EDFcgs9J{MN>10E@D>cwfHY;^BLIrKWHVLZtYxT$_UakCU!;kfbjrYi{SA*)R zX;`+kb`)FQG%z{69^oaI-Ne0FTi;mMCRvPEvjX;S>A^;{qV>go+$JRcYFJxw!(~57 z@P^p5RYHUvMcYwi`;}VCe+oE((m6Ns>+V7jC#KMl$$nZ@+)kV#Hx(3##mhHUy)e&i zpTiZON0NwqC-Mu`GgD7+qv{6o{tHW!tT(w9LD?j79a+JNG;g~w7?I&HihAySn_zg^s@k{3w+HN)lumySidSr z)smmyw**=*!K(-4gC~9Z=pZ1yAtiiRp7fJGZ$vI6eb2$gw~X@HE$z>a$pwRA>S4b; z98i2?GDTuAWS&i56X(`;oZGtK+?L`T%8PTn9p^+BoD(U|;k-Dvx8vN=1?P?w=SW_h zJKJ&Y>Vk8Z!P#i%QR-Jp)N+w(VkyuOycJoMC%@`Oq37Q>WBT#sT4k-N0KRs^z;hGd z@%&2Y)-j5|_7%=?qMEl6`i_$jQ3Holtw9x{07{c-!eP|%tf}V+a#bTc9^Mutex&+3 zVFmObbaPgr%9F!3p&HK0Df{|Bq}n^HPzAvE#zv24H5^Dq>LeSN(a241ska;lO#zl{ zomf)KL*r%c91fl+}wcj5}>0cXvBe9tuA zophGEr`pW9!&Y-b=$U&(z>6mFJ>)9q?{0vN_^#`D=!)uHuU=bUseN;|64o}n=}L09 zqB^STCy#3NwYx@REv0v>8^K-e8RtIc#`tdJ236;4DA%)EYM;Ox_Th?29s7RRtr>6I#2crz(gp7^ZHMhm*nZeAuw1-ds>}zUYKu1b-7?kh zO)C7J-0*u9ekwQoK84?(8~%X8AIuGZNZ}z5n7p3D?=<;6qVPv^!yi-l6p{yp*wlN|6L9pKZN~@eSVES=mwL%p}=aJYxjas#S?OEiMg!)F+;j+gC(K>I2?qjYDIH`V8L83pL zU1xE{XOZ~$gS}`nFffsaCMk%Iye`0zPyZSQu`W531v59RIiU-(blNwsR$~IjslA`! zgR*&NamB1bgDz{gESaSVF=QgsbC&D{y#Fl{N8<@b(>#(~l-r*Ia&zdVV5aoy7^7|2 zM)O4iu(ct$rnQx?4r+TOHQK~)w~!2j4JLCEK96P{C%Wv8H<9w07RrZ_hkYBnD;>no z5~!Palh-S582cR@^uUIuWS=8lMzRC`v#%m)6O~y)bfMh-7!{jC^m`;J9ga7UZ=<)1 zXp^T7O7*r!ZTx-nOH_e2hlxhy!h9)fXgiNEQwhR5)X}!R zqCQ*#rkzTQIh>mbRW zXY{IrmNXleukrqw9e$fOlTAY}-OIo4q}7|WmrrwOhjpg$TR2mg8J)4x-@cCj)=Wo< zZZWm6%OSiLx^c=Z`Lt<@E8Cec^reL z(dP|B@Uh0~e_C9=>Xg2`Iq%r>mu}oB8D~EIMJwvYx7#h_SKm_VNf zlEfOb#;qT}^{8QN`1ReoX+E3IEBj|m93<)nY-y+E(nZ@el5k);Tj5hlJ>bh6|7=6iGySSR+A$u{`eMdMz z>beJ-EF9p4UH2V0#|@o8li?hHNjlSTfHs^zQaAw6WOO#d0dj{ebnw2@@D4N?&Ydam zKNM#gV$jBW8e)JA_naXc9dz#Q(noNGsx19boReK}PQE10Jza3_c}bjmyWrgWk~pWj z;GB9%ocp@q-1m|=_jkd$|0QuA=z{Y=iZgdeQHOjUG&tMz(!rOc^N_&_G}+iZl;X@C z{$uED>g2-)=SVBg!zs?uykm2^J*4P}!3i`OokvofTk_)Upz~-KI*+C}$9^ErV+JSC zWON=&ac+GvoXya-;|3?tWH^tfIJf1+d7`~NPjD`xNhK8edWWp!y+#KHLXt$udZ*QVTbtsuOBZYCy|g zBf$b1ZviY22}YRER~XQ19MCZu@X25s6B5^;V$~sjZ1Fbeut3nvXo4))Of2j zO4a7Ol>mg@Ccxs?HKIw2mJ>JGh=D@`uFTza#F^>N+Jd_Rzd2dFnG(jA(IKK9Vza=} zr4AQ&y=fOB{#gM@P2Oi`wG9B2mS&14HW)i9{4rFhvG%zRlCDuzF98T zFbOW%bW{bn%rb?GpPmZ?gtBK8XSp8H&JDo^?LR?YH~ust(f*9L z50EHP_H6T(9iq1;v?dSBG*nNT<3H0E)mGfh(56*T)9{G(ks0>j^LmZ;^DRA4FkRZH zR{by@nM>;7>7}gCvRsdPkHaTrL~ZP(9`LA!?`h%r^G%+(WqOIgTnhNuh_@KYneM#n zm}I9e=|;PXfG!eZ9IkMpD6o&BQmymF#p_P#*3#1a!g9u}=3YI=8m@XDE`$clx{k`_ zG^W*^c3KD7J)&LpMASk$*LvEUNffp0S zee`XUMN79d?LS08uHkS03Xr`gnvvwc-z3^>!R8h$v%_fwYq5j&UJBM9WDInjYhFgM zXx29eKSBsfw|Z|D+8p|nq{i^4^^>cYNPXkW1E!xksqbY!{kqA*(+Ys|$uKTe(u>F# zgAfJ*toSFEMMJ(32T{MSrhUKo1M(32!8o&p)4Djb1>*{Zup!}E5qxXFvZ`utrJpk} zrX%OxwMU+bqp9d3wfRj2jTx!9>&ZslZx$9u@PvJk2?;Y;29Wc=@heWtM8Wk_CM)wL zXL-IxpLP+-e2hD88)j^UEGFHANas zH9e<;B97le8NSLejgyqqF-C-D9=X+II;l;kkxbKW7*3l}6n~~)4Y6r+*dSeObtpE+ zjFEc|zm=rgvQF!f(Ek-)toExE4)v>FF_-ihZWyCygh!pAn>17ZHCZs?|I|eHYJ`XG zK>IgLe#_*~NPrnnY>}pDrM^ILXw~L_Ie~tVSJjll0bskXBJ6cs&f z0Se(i;4;&5-|oVor4bH#Xp^d3e>m7@am7^eXaoIZ6AO*cz%X?c_ZjV)>rof}BS|wd zXkS47#pu4hX>|Wn3*Dc*Fx{6ojqZPLp__KYi?#RsrqTT`Ep&g>m2O%Kknh%wGBbct z-Xh#RlIwrPOB=d%68Sv3RgEmOQtlXxy&RGM)D)DBh0FUxgPb%zh`{uF1Utx*=S>8oF0_1%PhlXl2=dO(@|BQ9FZB<+%WD&G?yKz8JH>Pj(7{tcgR{F62mT!ru6*0%u_sT zaA1*M*JM8u{Q}t8O0DiAY5#VncAUzUa|cd~^^hNc!)ereDyfY2i}ed>=1XYGCv}5< z6HQm`2Dka_%UO3l&=V;wFGP{e+0q_n!Xys z(e?B6Q|SR92OnXxNwm#fY@6E+wyGhHXk$b3^O~x0*7@Da*xtt)(reStlDa(2$0^N@ z#v#_JAv8?@Qf-!h>G$01BLr|*M*`dG&PLw4eUw!LNU9sr`eQw#R9)8%4}K^|gCp$~ zRGSsyedMxHsJT}^6jchT*W%+yL?)$J7_|;qlh&v;Stu6H7AA0a6zK$xD($^6GWdUi CZ#HfK literal 0 HcmV?d00001 diff --git a/CameraNetwork/gui/enaml_files/__enamlcache__/popups.enaml-py27-cv26.enamlc b/CameraNetwork/gui/enaml_files/__enamlcache__/popups.enaml-py27-cv26.enamlc new file mode 100644 index 0000000000000000000000000000000000000000..262c480bfd2974af71decc0f9797551418f3d81e GIT binary patch literal 11778 zcmdT~YjfMi6EuH>=_M8inASgJ3tcX&m!D_L%xHxzB?tKB}|ISSQ=U@9fb=CQm z@P7?QypP5)lv7f^QcXiWHI(5gWtU{Mto*Xt+U-v$XRO?+ftLM;IRy}Bjp6^E1GuIE@C{C`C z;NvQxYTou;OF#Bp-_esedF%&vaw;;FF+{>gIO2zBv{EmXdLhCs0@_QF5inmE>ex^( z0jErKFG@T$@Xx8J#XSQMM{xVPoOUSRIg#e);&(0obC5r@3^~q8Y55Q#-D6${}6=jP%mKM!1g`I)~@Bab>EI` z?H#zX=$6$CoVM>;mayt_v08!SVkwl`#C+m8H_-ImE7u=;TtSaYB1&kYqx1wCdGL>( zdnj6FS-{38@Y188rERa}MslhC%=4YdZDHb|>tX1&98Kw-w0-UQAWPKqI)>Vz2;e#L z?6@l8Q&?*&t_PuO?Yl=iiA-A^o!^nku(l|S<$JN-se)cf6F)_-{&2e;V{>fVj)NI$ zZ97pA)`I8Tbw6l3OLe_n2lB{nx%x1O_O~C&*?Q-!(e}1w!mM5Fw0Jw@bjQmw6b~)~ zWsfQ4y!vr;)95Mx7=}do|BX(f{LpeNH5C8oo+z-P7OA}00u}55Xg-u1dTy5&q*n{@54TdC+=nlb_^0MJ&_GnNiNQeBR)*QRTX=%OXVWmW4%v<^@rr zQ8YQbLF6`~pp8|hDt%c;BR`(~5l37>Bdj>0X-5v9dD>0aG3{OOii*CjCcEV;f{&^A z0L6aIuJ0#;oFYPe3)E4gW>-I5d9c(yR+hi`?4wkYw0FTWnQsCO&2m>3_OTbN7|Ucg zT#>mMH!N&DTXQXJts~j-a;DwqT5erk&B(n*mLzwn1zfsyY0Y=gO{J6GFhraso@BYi z`6ZT$Td&~I`lR5V*!S(YBLm@^ z^K2+hI@cFG&AIl@#yLQ!E%H2vqC>tn0{X97Yftg6#83* z>2E9N4dpE6(@P*hm$z=x4T~i;Z=+|vfhOa@P6i()wIj8sY43t9tN3Vw?l>^>t<$ky z!6<{M`=g9QujK@XmOcvIQzl+4jSd3e(q5QOd)gbu0=%8VH`zz_2nA|3%y;=;f>WBt zdeDk>g#1RwJ*nvT)^Nl$hzN*WNtcn{b|WJaNH}$X)Wf`wvs5vbDmzU)znj3K1FJbEW$d1~iQMI{5 zFl97pQeeKvF&s&A!73f+geHuaBn@C9P+qAZA;8~2LSWt{LVjphCOo_KbL_cp z{hY!7x+h7hWWP*OB`fU}&5LBf5++F%-eV->iPvK#!ehSZjk96;?9m*0j1H@kO{1gI z3|S(k$3fKW%aY0Id%NcPQt*@#_!Y>NPtMXZaK=oXP}3gSEa9)5Jx*rO0UXnLGw3A4 z#cQ2zhC3!1t{ByytXfYnW1Womk{z5+| z^z%jNu}dn>88YJAq(?do{IAG}v-pMnO`(6Q2%fje{~e)!w+Q_m(k}`9dxh!m3Oy^5z{S^-;8$~J}VtwSLRvPuDy$g-;oq~$Yc7NYO&#EUX=-BKNL zJ7QVwI2C1RI`k#cCaYmSME^>w&Q~c|kHKqp^7Ac{?AmWp{9-7X4(+6Ghu#EpY ztIjZ|6P>B$$TSSK`8E~j>Z{G4Q?QZ^7g3w!Rf5+Xe3dXXh51V#Xa*)((1jF6-V))3 zP~w@Wb@C;gJ}K2OROb6spsTMkPg1Z~sx1GCD#(4nMQNU8`4axn%WplC)i zrX`p0;ZD9lQn0U5?KR)r$~TS6b$qUeCi`J=@+}o#xLI4;ZH7KSGi}=8j(jtk-00g! zL0d1|p{Mz2QZg88$MyZit-Ho2cnPK1^Wf?u;PA9@bHL5q2xDY3~t60M*aa3UAI TduZ+H+~RRGO5IYE#x3Ljwoc?p literal 0 HcmV?d00001 diff --git a/CameraNetwork/gui/enaml_files/__enamlcache__/server_pages.enaml-py27-cv26.enamlc b/CameraNetwork/gui/enaml_files/__enamlcache__/server_pages.enaml-py27-cv26.enamlc new file mode 100644 index 0000000000000000000000000000000000000000..a278c0c555c395e32141447ac79b4c5292477914 GIT binary patch literal 63340 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 l5)!WEJCL5S)H8;x)V)LVEq=+RK)IUTCs7~P$Y z>W6cHmh&p1`oTu?yh^D4M0tj&eqbZS%VUW~X0AoA98@8jd5#sV#HCj@Vg@`v9hhl< z8#KexpKaNJ=65`9D5xEWQngYpyVd;?Y*3>2NgkFmvQZ<$Ifp@kX)2&24_>=y;L{V& zvLz?H%*08cqhKe8gmX{TE!zAw6}h>Cck6Mi*YI5atz@b6q+i*dC9XAQiR0 z&kH?xGxpm(qZNr+qI)P9wXiqwvXPg^_zW*~ne)9d>Aq8@T}sPlEgria+n3S+m!U2u zd^cqj;YIEZcq?km2jRtv?&6dlNOZ38;#hfWsZw=u8JqB6BNWcKWf%p%O#T6liNe!? zJ2p`+25w=jIPpxt$hTXuYv{ef*ng9R* literal 0 HcmV?d00001 diff --git a/client_venv.yml b/client_venv.yml index 6c2b6d8..0e80d91 100644 --- a/client_venv.yml +++ b/client_venv.yml @@ -1,4 +1,4 @@ -name: cnvenv15092019 +name: cameranetwork_client channels: - conda-forge - defaults @@ -168,5 +168,5 @@ dependencies: - pymap3d==1.8.1 - pyzmq==18.1.0 - git+git://github.com/enthought/traits-enaml.git@update-data-frame-table -prefix: /home/shubi/.conda/envs/cnvenv15092019 +prefix: C:/ProgramData/Anaconda2/envs/cameranetwork_client diff --git a/docs/source/install.rst b/docs/source/install.rst index 596908d..1e9e2e8 100644 --- a/docs/source/install.rst +++ b/docs/source/install.rst @@ -40,7 +40,7 @@ Installation - Client conda env create -f client_venv.yml - .. notes:: + .. Notes:: Before run, edit client_venv.yml: The first line of sets the new environment's name @@ -227,8 +227,6 @@ Shubi reference pip install pymap3d conda install enaml pillow traits pyqtgraph pyopengl vtk mayavi opencv -#. Install traits-enaml - #. Install additional modules:: pip install ephem @@ -237,11 +235,16 @@ Shubi reference conda install -c anaconda traits pyqtgraph pyopengl conda install -c anaconda vtk pip install mayavi -#. Clone, navigate to and install traits-enaml:: + +#. Install traits-enaml:: git clone https://github.com/enthought/traits-enaml.git --branch update-data-frame-table cd traits-enaml python setup.py install + cd.. + + + #. Install the cameranetwork package #. Navigate back to cameranetwork:: diff --git a/scripts_client/client_logs/cameralog_190920_165337.txt b/scripts_client/client_logs/cameralog_190920_165337.txt new file mode 100644 index 0000000..17ce641 --- /dev/null +++ b/scripts_client/client_logs/cameralog_190920_165337.txt @@ -0,0 +1,2 @@ +2019-09-20 16:53:37,372 [MainThread ] [DEBUG] Proxy parameters: +{u'tunnel_port': 20000, u'autossh_monitor_port': 10000, u'ip': u'3.123.49.101', u'proxy_port': 1980, u'client_port': 1981, u'hb_port': 1985, u'user': u'ubuntu'} From 632daa589de2af4d614f9ff1c48903854044b3dd Mon Sep 17 00:00:00 2001 From: Omer S Date: Mon, 23 Sep 2019 10:53:35 +0300 Subject: [PATCH 19/90] Update install.rst --- docs/source/install.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/install.rst b/docs/source/install.rst index 1e9e2e8..0f6dd28 100644 --- a/docs/source/install.rst +++ b/docs/source/install.rst @@ -40,7 +40,7 @@ Installation - Client conda env create -f client_venv.yml - .. Notes:: + .. Note:: Before run, edit client_venv.yml: The first line of sets the new environment's name From d7436a93ea63d352b638ab13e2f5150fa84a07dd Mon Sep 17 00:00:00 2001 From: Omer S Date: Tue, 24 Sep 2019 12:29:16 +0300 Subject: [PATCH 20/90] Delete .idea &enamlcache folder (#26) * Delete vcs.xml * Delete .gitignore * Delete cameranetwork.iml * Delete misc.xml * Delete modules.xml * Delete profiles_settings.xml * Delete enamlcache folder (#25) * Delete docks.enaml-py27-cv26.enamlc * Delete extra.enaml-py27-cv26.enamlc * Delete main_view.enaml-py27-cv26.enamlc * Delete server_pages.enaml-py27-cv26.enamlc * Delete settings.enaml-py27-cv26.enamlc * Delete popups.enaml-py27-cv26.enamlc --- .idea/.gitignore | 3 --- .idea/cameranetwork.iml | 11 ----------- .idea/inspectionProfiles/profiles_settings.xml | 6 ------ .idea/misc.xml | 7 ------- .idea/modules.xml | 8 -------- .idea/vcs.xml | 6 ------ .../__enamlcache__/docks.enaml-py27-cv26.enamlc | Bin 56688 -> 0 bytes .../__enamlcache__/extra.enaml-py27-cv26.enamlc | Bin 17406 -> 0 bytes .../main_view.enaml-py27-cv26.enamlc | Bin 22454 -> 0 bytes .../popups.enaml-py27-cv26.enamlc | Bin 11778 -> 0 bytes .../server_pages.enaml-py27-cv26.enamlc | Bin 63340 -> 0 bytes .../settings.enaml-py27-cv26.enamlc | Bin 94143 -> 0 bytes 12 files changed, 41 deletions(-) delete mode 100644 .idea/.gitignore delete mode 100644 .idea/cameranetwork.iml delete mode 100644 .idea/inspectionProfiles/profiles_settings.xml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/vcs.xml delete mode 100644 CameraNetwork/gui/enaml_files/__enamlcache__/docks.enaml-py27-cv26.enamlc delete mode 100644 CameraNetwork/gui/enaml_files/__enamlcache__/extra.enaml-py27-cv26.enamlc delete mode 100644 CameraNetwork/gui/enaml_files/__enamlcache__/main_view.enaml-py27-cv26.enamlc delete mode 100644 CameraNetwork/gui/enaml_files/__enamlcache__/popups.enaml-py27-cv26.enamlc delete mode 100644 CameraNetwork/gui/enaml_files/__enamlcache__/server_pages.enaml-py27-cv26.enamlc delete mode 100644 CameraNetwork/gui/enaml_files/__enamlcache__/settings.enaml-py27-cv26.enamlc diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 0e40fe8..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ - -# Default ignored files -/workspace.xml \ No newline at end of file diff --git a/.idea/cameranetwork.iml b/.idea/cameranetwork.iml deleted file mode 100644 index 6711606..0000000 --- a/.idea/cameranetwork.iml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml deleted file mode 100644 index 105ce2d..0000000 --- a/.idea/inspectionProfiles/profiles_settings.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index e76b483..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 76ba28b..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/CameraNetwork/gui/enaml_files/__enamlcache__/docks.enaml-py27-cv26.enamlc b/CameraNetwork/gui/enaml_files/__enamlcache__/docks.enaml-py27-cv26.enamlc deleted file mode 100644 index f61414c932fbf79ce38b33ce2cb69e0cf2d62d3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56688 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 CZ#HfK diff --git a/CameraNetwork/gui/enaml_files/__enamlcache__/popups.enaml-py27-cv26.enamlc b/CameraNetwork/gui/enaml_files/__enamlcache__/popups.enaml-py27-cv26.enamlc deleted file mode 100644 index 262c480bfd2974af71decc0f9797551418f3d81e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11778 zcmdT~YjfMi6EuH>=_M8inASgJ3tcX&m!D_L%xHxzB?tKB}|ISSQ=U@9fb=CQm z@P7?QypP5)lv7f^QcXiWHI(5gWtU{Mto*Xt+U-v$XRO?+ftLM;IRy}Bjp6^E1GuIE@C{C`C z;NvQxYTou;OF#Bp-_esedF%&vaw;;FF+{>gIO2zBv{EmXdLhCs0@_QF5inmE>ex^( z0jErKFG@T$@Xx8J#XSQMM{xVPoOUSRIg#e);&(0obC5r@3^~q8Y55Q#-D6${}6=jP%mKM!1g`I)~@Bab>EI` z?H#zX=$6$CoVM>;mayt_v08!SVkwl`#C+m8H_-ImE7u=;TtSaYB1&kYqx1wCdGL>( zdnj6FS-{38@Y188rERa}MslhC%=4YdZDHb|>tX1&98Kw-w0-UQAWPKqI)>Vz2;e#L z?6@l8Q&?*&t_PuO?Yl=iiA-A^o!^nku(l|S<$JN-se)cf6F)_-{&2e;V{>fVj)NI$ zZ97pA)`I8Tbw6l3OLe_n2lB{nx%x1O_O~C&*?Q-!(e}1w!mM5Fw0Jw@bjQmw6b~)~ zWsfQ4y!vr;)95Mx7=}do|BX(f{LpeNH5C8oo+z-P7OA}00u}55Xg-u1dTy5&q*n{@54TdC+=nlb_^0MJ&_GnNiNQeBR)*QRTX=%OXVWmW4%v<^@rr zQ8YQbLF6`~pp8|hDt%c;BR`(~5l37>Bdj>0X-5v9dD>0aG3{OOii*CjCcEV;f{&^A z0L6aIuJ0#;oFYPe3)E4gW>-I5d9c(yR+hi`?4wkYw0FTWnQsCO&2m>3_OTbN7|Ucg zT#>mMH!N&DTXQXJts~j-a;DwqT5erk&B(n*mLzwn1zfsyY0Y=gO{J6GFhraso@BYi z`6ZT$Td&~I`lR5V*!S(YBLm@^ z^K2+hI@cFG&AIl@#yLQ!E%H2vqC>tn0{X97Yftg6#83* z>2E9N4dpE6(@P*hm$z=x4T~i;Z=+|vfhOa@P6i()wIj8sY43t9tN3Vw?l>^>t<$ky z!6<{M`=g9QujK@XmOcvIQzl+4jSd3e(q5QOd)gbu0=%8VH`zz_2nA|3%y;=;f>WBt zdeDk>g#1RwJ*nvT)^Nl$hzN*WNtcn{b|WJaNH}$X)Wf`wvs5vbDmzU)znj3K1FJbEW$d1~iQMI{5 zFl97pQeeKvF&s&A!73f+geHuaBn@C9P+qAZA;8~2LSWt{LVjphCOo_KbL_cp z{hY!7x+h7hWWP*OB`fU}&5LBf5++F%-eV->iPvK#!ehSZjk96;?9m*0j1H@kO{1gI z3|S(k$3fKW%aY0Id%NcPQt*@#_!Y>NPtMXZaK=oXP}3gSEa9)5Jx*rO0UXnLGw3A4 z#cQ2zhC3!1t{ByytXfYnW1Womk{z5+| z^z%jNu}dn>88YJAq(?do{IAG}v-pMnO`(6Q2%fje{~e)!w+Q_m(k}`9dxh!m3Oy^5z{S^-;8$~J}VtwSLRvPuDy$g-;oq~$Yc7NYO&#EUX=-BKNL zJ7QVwI2C1RI`k#cCaYmSME^>w&Q~c|kHKqp^7Ac{?AmWp{9-7X4(+6Ghu#EpY ztIjZ|6P>B$$TSSK`8E~j>Z{G4Q?QZ^7g3w!Rf5+Xe3dXXh51V#Xa*)((1jF6-V))3 zP~w@Wb@C;gJ}K2OROb6spsTMkPg1Z~sx1GCD#(4nMQNU8`4axn%WplC)i zrX`p0;ZD9lQn0U5?KR)r$~TS6b$qUeCi`J=@+}o#xLI4;ZH7KSGi}=8j(jtk-00g! zL0d1|p{Mz2QZg88$MyZit-Ho2cnPK1^Wf?u;PA9@bHL5q2xDY3~t60M*aa3UAI TduZ+H+~RRGO5IYE#x3Ljwoc?p diff --git a/CameraNetwork/gui/enaml_files/__enamlcache__/server_pages.enaml-py27-cv26.enamlc b/CameraNetwork/gui/enaml_files/__enamlcache__/server_pages.enaml-py27-cv26.enamlc deleted file mode 100644 index a278c0c555c395e32141447ac79b4c5292477914..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63340 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 l5)!WEJCL5S)H8;x)V)LVEq=+RK)IUTCs7~P$Y z>W6cHmh&p1`oTu?yh^D4M0tj&eqbZS%VUW~X0AoA98@8jd5#sV#HCj@Vg@`v9hhl< z8#KexpKaNJ=65`9D5xEWQngYpyVd;?Y*3>2NgkFmvQZ<$Ifp@kX)2&24_>=y;L{V& zvLz?H%*08cqhKe8gmX{TE!zAw6}h>Cck6Mi*YI5atz@b6q+i*dC9XAQiR0 z&kH?xGxpm(qZNr+qI)P9wXiqwvXPg^_zW*~ne)9d>Aq8@T}sPlEgria+n3S+m!U2u zd^cqj;YIEZcq?km2jRtv?&6dlNOZ38;#hfWsZw=u8JqB6BNWcKWf%p%O#T6liNe!? zJ2p`+25w=jIPpxt$hTXuYv{ef*ng9R* From 60cac9d8f41dfdd949018cf2a797d3dcb7368832 Mon Sep 17 00:00:00 2001 From: Shubi Date: Tue, 24 Sep 2019 12:38:28 +0300 Subject: [PATCH 21/90] Image import fix and docs WIP --- CameraNetwork/controller.py | 9 ++++++++- docs/source/images/gui_sprinkler.png | Bin 0 -> 25325 bytes docs/source/images/gui_sunshader.png | Bin 0 -> 71623 bytes docs/source/install.rst | 8 ++++---- docs/source/usage.rst | 15 ++++++++++++--- 5 files changed, 24 insertions(+), 8 deletions(-) create mode 100644 docs/source/images/gui_sprinkler.png create mode 100644 docs/source/images/gui_sunshader.png diff --git a/CameraNetwork/controller.py b/CameraNetwork/controller.py index 2ec705d..a9517d7 100644 --- a/CameraNetwork/controller.py +++ b/CameraNetwork/controller.py @@ -72,9 +72,16 @@ # Support also python 2.7 # from concurrent import futures + import glob import json -import Image + +try: + from PIL import Image +except: + # In case of old version + import Image + import logging import numpy as np import os diff --git a/docs/source/images/gui_sprinkler.png b/docs/source/images/gui_sprinkler.png new file mode 100644 index 0000000000000000000000000000000000000000..45ce70888cf67fcf89d297c6dcb228ba12436946 GIT binary patch literal 25325 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 literal 0 HcmV?d00001 diff --git a/docs/source/images/gui_sunshader.png b/docs/source/images/gui_sunshader.png new file mode 100644 index 0000000000000000000000000000000000000000..0c4b468b80cb3ef80003c3d490e380ffb41a1b28 GIT binary patch literal 71623 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

I$_x>I*lC4d0b0~Jh~uw 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%0Dd=5xJ@fB7G@TbIC7eVIHe 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�W5HMe1t61go8L9GamB}$#MrlBX%kP<7%00f z$0{@nK|udHeu%s@X!jJ}R2ec-heq?$S@zuyPw8odE(RUkb~?R-O{v*eJ?sHy$gk=I zQgSF4b?0nZ8rL25z3Y{5dxlpg{}tT)?OAQQG>Y6l{4M8nZj|9*qeBAMn*6eT?@gQ^ z5@_Y_3T)V7&Ivk=X>$_VA^)-dlR|>LWj-S|{OE2L_s&u2qVwuW2?4B3iK6p%_K!_i z=aVv*d}3uv%xcX?fI7#ENxb$qrbfTF6%GMXmh_|_^RS(+>z z)g5`Pdwr8+;J5B-Dol3`7()~=*O|7vuu9wMxlXW1hm6p!{~0ucn(u30H}0&-p19H> zf3Y3&nB_nGmB33raqmRA->YgO8VUGLMfbc`?$=eG{MyI8^%kJfxrg%FYD)5j)!ITk z8r{1lEaE>yT*k3`<5^6yXT_!Olcmk10$v0DK%i6JIgStjw%5@teMd|Z0wJ7!VsXeW z?MJ$kg_N#2@esg_?^`4#k}?;K7TB>93N+#0UXKUsD7^s{m62D*mVna0Hj_X1$q!X) zS~AK~!~)ZW;K<>)v6MHHs8+b}Hpds?nxb~I1AyMop9~)-WZ1X0Y7qR1|L)25!UAoS z15LE$-lkoKYS!nf!fUB*eWm>&8bdG(w1{Puwn z*TpoL?kQ*f*^4C!HPfHIH3U_az)24HcY)!t;l(|P%V}UM|Jq)fI7H8U>=3#mfsTxH z{TSqiuf2cE^uNPlZKO`kh9gaWJX4n$73HDVEF&Q(2`PcP(U7-Z3`I^X z`)kL;khS5>IF~*l{!(P=^ z<=){S#bQY9(gHXTfQ72hHqq|1R^cX1M8apOv*EB8;h}FfX_b@ilGIjBp(?d(&xY&w z%9H&?C4fvgtF>SFMW}m!D$Sjrr%{a)`c^Vthdp`Ys|_U4n5We?*zH=ozZDgVsM{z5 zJNc-mIr_UlM-!&Yt##hj=nS8-WBd2R{1-sjBlpo%J(B;PvYZlG4&-J5E%wrl*I=2} zGmrzW_jtPEOOceW_W8~`q*2*y8XILJ?CYJ&p_kkRwwa5sJzRH-V4M1A8G)UHru1RT z=prsqKa7gNR!k>B>dRITa+3nh8EE_v{udy$RvaIctvwFfVuE7$90wanl19 zemyACrgi7UdWiRwg2%H_{1j=In8SvcNS0`CAa2cB)@2O0`VmCXp*u_)Ayefs_x{Gc z@jz3AVQJr$?0qu$AuFw_!_XW@&8CuUsJfuMr BXLq&hXL;1%8Rfwz==x+^RPJp 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. #. Via SSH #. Via GUI (as mentioned in the client section) @@ -56,7 +65,7 @@ To connect to the proxy .. note:: ``sudo chmod 400 `` - if encounter permission error + if permission error is encountered. .. note:: ** is the path and name of the proxy's private key From b054e0d834f2dbe274dad22a9cc3bf9240c6220a Mon Sep 17 00:00:00 2001 From: Shubi Date: Tue, 24 Sep 2019 16:37:53 +0300 Subject: [PATCH 22/90] docs WIP --- client_venv.yml => cn_client_ubuntu18.yml | 4 +--- docs/source/conf.py | 2 +- docs/source/install.rst | 18 ++++++++---------- docs/source/usage.rst | 10 +++++++++- scripts/listusb.sh | 4 ++-- 5 files changed, 21 insertions(+), 17 deletions(-) rename client_venv.yml => cn_client_ubuntu18.yml (98%) diff --git a/client_venv.yml b/cn_client_ubuntu18.yml similarity index 98% rename from client_venv.yml rename to cn_client_ubuntu18.yml index 0e80d91..062c534 100644 --- a/client_venv.yml +++ b/cn_client_ubuntu18.yml @@ -1,4 +1,4 @@ -name: cameranetwork_client +name: cn_client channels: - conda-forge - defaults @@ -168,5 +168,3 @@ dependencies: - pymap3d==1.8.1 - pyzmq==18.1.0 - git+git://github.com/enthought/traits-enaml.git@update-data-frame-table -prefix: C:/ProgramData/Anaconda2/envs/cameranetwork_client - diff --git a/docs/source/conf.py b/docs/source/conf.py index e1abec2..d55f05a 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -76,7 +76,7 @@ # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ -# 'numfig', + 'numfig', 'sphinx.ext.autodoc', 'sphinx.ext.intersphinx', 'sphinx.ext.todo', diff --git a/docs/source/install.rst b/docs/source/install.rst index 5b14eff..a433094 100644 --- a/docs/source/install.rst +++ b/docs/source/install.rst @@ -34,18 +34,16 @@ Installation - Client cd cameranetwork -#. Create conda virtual environment from client_venv.yml +#. Create conda virtual environment from *cn_client_ubuntu18.yml* :: - conda env create -f client_venv.yml + conda env create -f cn_client_ubuntu18.yml .. Note:: - | Before run, edit client_venv.yml: - | The first line of sets the new environment's name - | The last line sets the environment prefix - | Make sure the prefix folder and the environment share the same name + The first line of sets the new environment's name (currently *cn_client*) + #. Activate the environment:: @@ -71,12 +69,12 @@ Installing the Server ===================== The server software is run on an `Odroid U3 `_ -as at the time of selection it offered a unique balance between capabilites and cost. Nonetheless it should be straight -forward to install the ``CameraNetwork`` pacakge and its prerequisites on other platforms like newer Oroids and even +as at the time of selection it offered a unique balance between capabilities and cost. Nonetheless it should be straight +forward to install the ``CameraNetwork`` package and its prerequisites on other platforms like newer Oroids and even on the RaspberrPi. -In the following we detail the procedure of installing the required prerequisites and main pacakge. Note that -once the package is installed on one compture, it is much more time effective to create an image of the Odroid +In the following we detail the procedure of installing the required prerequisites and main package. Note that +once the package is installed on one computer, it is much more time effective to create an image of the Odroid memory card and duplicate it as needed. diff --git a/docs/source/usage.rst b/docs/source/usage.rst index d67ee57..8f68505 100644 --- a/docs/source/usage.rst +++ b/docs/source/usage.rst @@ -51,7 +51,15 @@ There are options to connect to the camera Serial connection ----------------- -#. `Driver Installation `_. +On the Client's PC, from cameranetwork folder: +#. ``bash scripts/listusb.sh`` to list all connected usb devices and to find the relevant one. +Should be /dev/tty/USB0 (replace '0' with relevant number) +#. Follow `driver installation instructions by Odroid`_. +#. Linux: Run ``sudo minicom`` in Client PC's terminal. +#. Windows: Use Teraterm. +#. Enter odroid username +#. Enter odroid password + #. Via SSH #. Via GUI (as mentioned in the client section) diff --git a/scripts/listusb.sh b/scripts/listusb.sh index c018e70..221fef9 100644 --- a/scripts/listusb.sh +++ b/scripts/listusb.sh @@ -38,9 +38,9 @@ for sysdevpath in $(find /sys/bus/usb/devices/usb*/ -name dev); do ( syspath="${sysdevpath%/dev}" - devname="$(udevadm info -q name -p $syspath)" + devname="$(udevadm info -q name -p "$syspath")" [[ "$devname" == "bus/"* ]] && continue - eval "$(udevadm info -q property --export -p $syspath)" + eval "$(udevadm info -q property --export -p "$syspath")" [[ -z "$ID_SERIAL" ]] && continue echo "/dev/$devname - $ID_SERIAL" ) From b1790944894c8ff013192e8825a4480f119c4fdb Mon Sep 17 00:00:00 2001 From: Omer S Date: Tue, 24 Sep 2019 16:44:37 +0300 Subject: [PATCH 23/90] Update conf.py --- docs/source/conf.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index d55f05a..fde73ac 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -62,7 +62,7 @@ sys.path.insert(0, os.path.abspath('../../scripts_client')) sys.path.insert(0, os.path.abspath('../../scripts_proxy')) sys.path.insert(0, os.path.abspath('../../scripts_sunphotometer')) -# TODO Change to more Robust solution numpy +# TODO Change to more Robust solution numfig sys.path.insert(0, os.path.abspath('../../../../.local/lib/python2.7/site-packages/sphinx/ext')) @@ -76,7 +76,7 @@ # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ - 'numfig', +# 'numfig', 'sphinx.ext.autodoc', 'sphinx.ext.intersphinx', 'sphinx.ext.todo', @@ -88,6 +88,8 @@ 'sphinx.ext.napoleon' ] +numfig = True + # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] From 54c18445509eacc3c0d3a4f9066b573cd7a47d3e Mon Sep 17 00:00:00 2001 From: Shubi Date: Tue, 24 Sep 2019 16:55:21 +0300 Subject: [PATCH 24/90] docs WIP --- docs/source/usage.rst | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/docs/source/usage.rst b/docs/source/usage.rst index 8f68505..50d2e1a 100644 --- a/docs/source/usage.rst +++ b/docs/source/usage.rst @@ -52,16 +52,26 @@ There are options to connect to the camera Serial connection ----------------- On the Client's PC, from cameranetwork folder: + #. ``bash scripts/listusb.sh`` to list all connected usb devices and to find the relevant one. Should be /dev/tty/USB0 (replace '0' with relevant number) + #. Follow `driver installation instructions by Odroid`_. -#. Linux: Run ``sudo minicom`` in Client PC's terminal. -#. Windows: Use Teraterm. + +#. Linux: Run ``sudo minicom`` in Client PC's terminal. Windows: Use Teraterm. + #. Enter odroid username + #. Enter odroid password +SSH +--- + #. Via SSH +GUI +--- + #. Via GUI (as mentioned in the client section) From 826758571ac1cf7cf3473819daacfeefc785bb84 Mon Sep 17 00:00:00 2001 From: Shubi Date: Tue, 24 Sep 2019 16:56:19 +0300 Subject: [PATCH 25/90] docs WIP --- scripts_client/start_local.py | 122 +++++++++++++++++----------------- 1 file changed, 62 insertions(+), 60 deletions(-) diff --git a/scripts_client/start_local.py b/scripts_client/start_local.py index 07ac699..81ee6d1 100644 --- a/scripts_client/start_local.py +++ b/scripts_client/start_local.py @@ -33,63 +33,65 @@ ## LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE ## OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ## ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.## -"""Start Cameras, Proxy and Client locally. - -This script will run cameras, a proxy and a client locally on a -single computer. It is helpfull for replaying saved images. -Given a folder where the camera's data was saved, it will -start the right number of cameras and point their home -folder to the corresponding stored data. -""" - -from __future__ import division, absolute_import, print_function -import argparse -import CameraNetwork -from glob import glob -import os -import subprocess as sbp - - -def main(base_path, debug_mode=False, local_proxy=False): - camera_paths = sorted(glob(os.path.join(base_path, '*'))) - camera_paths = filter(lambda p: os.path.isdir(p), camera_paths) - - - # - # Start the proxy. - # - if local_proxy: - proxy = sbp.Popen(['python'] + ['../scripts_proxy/start_proxy.py']) - - # - # Start the client. - # - if not debug_mode: - client = sbp.Popen(['python'] + - ['../scripts_client/camera_client.py', '--local']) - - # - # Start all cameras. - # - servers = [] - for path in camera_paths: - servers.append(sbp.Popen(['python'] + - ['../scripts/start_server.py','--local_path', path] + (["--local_proxy"] if local_proxy else []))) - - - for server in servers: - server.wait() - - -if __name__ == '__main__': - parser = argparse.ArgumentParser(description='Start a local session.') - parser.add_argument( - '--debug_mode', '-d', action='store_true', - help="Do not start the client. The client will be started from a debugger.") - parser.add_argument( - '--local_proxy', '-l', action='store_true', - help="Start a local proxy.") - parser.add_argument('base_path', help='Base path of cameras data.') - args = parser.parse_args() - - main(args.base_path, args.debug_mode, args.local_proxy) +"""Start Cameras, Proxy and Client locally. + +This script will run cameras, a proxy and a client locally on a +single computer. It is helpfull for replaying saved images. +Given a folder where the camera's data was saved, it will +start the right number of cameras and point their home +folder to the corresponding stored data. +""" + +from __future__ import division, absolute_import, print_function +import argparse +import CameraNetwork +from glob import glob +import os +import subprocess as sbp + + +def main(base_path, debug_mode=False, local_proxy=False): + camera_paths = sorted(glob(os.path.join(base_path, '*'))) + camera_paths = filter(lambda p: os.path.isdir(p), camera_paths) + print(camera_paths) # added for debug + + # + # Start the proxy. + # + if local_proxy: + proxy = sbp.Popen(['python'] + ['../scripts_proxy/start_proxy.py']) + + # + # Start the client. + # + if not debug_mode: + client = sbp.Popen(['python'] + + ['../scripts_client/camera_client.py', '--local']) + + # + # Start all cameras. + # + servers = [] + for path in camera_paths: + servers.append(sbp.Popen(['python'] + + ['../scripts/start_server.py','--local_path', path] + + (["--local_proxy"] if local_proxy else []))) + print(servers) # added for debug + + for server in servers: + #print('pid:'+server.pid) # added for debug + server.wait() + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Start a local session.') + parser.add_argument( + '--debug_mode', '-d', action='store_true', + help="Do not start the client. The client will be started from a debugger.") + parser.add_argument( + '--local_proxy', '-l', action='store_true', + help="Start a local proxy.") + parser.add_argument('base_path', help='Base path of cameras data.') + args = parser.parse_args() + + main(args.base_path, args.debug_mode, args.local_proxy) From bdff9181f1a17aa406d0a19893831144a76a6704 Mon Sep 17 00:00:00 2001 From: Shubi Date: Tue, 24 Sep 2019 16:57:24 +0300 Subject: [PATCH 26/90] Docs WIP --- docs/source/usage.rst | 14 ++------------ scripts_client/start_local.py | 3 --- 2 files changed, 2 insertions(+), 15 deletions(-) diff --git a/docs/source/usage.rst b/docs/source/usage.rst index 50d2e1a..8f68505 100644 --- a/docs/source/usage.rst +++ b/docs/source/usage.rst @@ -52,26 +52,16 @@ There are options to connect to the camera Serial connection ----------------- On the Client's PC, from cameranetwork folder: - #. ``bash scripts/listusb.sh`` to list all connected usb devices and to find the relevant one. Should be /dev/tty/USB0 (replace '0' with relevant number) - #. Follow `driver installation instructions by Odroid`_. - -#. Linux: Run ``sudo minicom`` in Client PC's terminal. Windows: Use Teraterm. - +#. Linux: Run ``sudo minicom`` in Client PC's terminal. +#. Windows: Use Teraterm. #. Enter odroid username - #. Enter odroid password -SSH ---- - #. Via SSH -GUI ---- - #. Via GUI (as mentioned in the client section) diff --git a/scripts_client/start_local.py b/scripts_client/start_local.py index 81ee6d1..0cfb230 100644 --- a/scripts_client/start_local.py +++ b/scripts_client/start_local.py @@ -53,7 +53,6 @@ def main(base_path, debug_mode=False, local_proxy=False): camera_paths = sorted(glob(os.path.join(base_path, '*'))) camera_paths = filter(lambda p: os.path.isdir(p), camera_paths) - print(camera_paths) # added for debug # # Start the proxy. @@ -76,10 +75,8 @@ def main(base_path, debug_mode=False, local_proxy=False): servers.append(sbp.Popen(['python'] + ['../scripts/start_server.py','--local_path', path] + (["--local_proxy"] if local_proxy else []))) - print(servers) # added for debug for server in servers: - #print('pid:'+server.pid) # added for debug server.wait() From fc79193552ea783f52b0dd5fea54b29bfdb844b5 Mon Sep 17 00:00:00 2001 From: Shubi Date: Tue, 24 Sep 2019 17:02:50 +0300 Subject: [PATCH 27/90] Docs WIP --- docs/source/usage.rst | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/docs/source/usage.rst b/docs/source/usage.rst index 8f68505..50d2e1a 100644 --- a/docs/source/usage.rst +++ b/docs/source/usage.rst @@ -52,16 +52,26 @@ There are options to connect to the camera Serial connection ----------------- On the Client's PC, from cameranetwork folder: + #. ``bash scripts/listusb.sh`` to list all connected usb devices and to find the relevant one. Should be /dev/tty/USB0 (replace '0' with relevant number) + #. Follow `driver installation instructions by Odroid`_. -#. Linux: Run ``sudo minicom`` in Client PC's terminal. -#. Windows: Use Teraterm. + +#. Linux: Run ``sudo minicom`` in Client PC's terminal. Windows: Use Teraterm. + #. Enter odroid username + #. Enter odroid password +SSH +--- + #. Via SSH +GUI +--- + #. Via GUI (as mentioned in the client section) From c2b51bb6b7e484adecba5f016812633866af595f Mon Sep 17 00:00:00 2001 From: Shubi Date: Tue, 24 Sep 2019 17:06:57 +0300 Subject: [PATCH 28/90] Docs WIP --- docs/source/usage.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/source/usage.rst b/docs/source/usage.rst index 50d2e1a..db0151c 100644 --- a/docs/source/usage.rst +++ b/docs/source/usage.rst @@ -53,10 +53,10 @@ Serial connection ----------------- On the Client's PC, from cameranetwork folder: -#. ``bash scripts/listusb.sh`` to list all connected usb devices and to find the relevant one. +``bash scripts/listusb.sh`` to list all connected usb devices and to find the relevant one. Should be /dev/tty/USB0 (replace '0' with relevant number) -#. Follow `driver installation instructions by Odroid`_. +#. Follow `driver installation instructions by Odroid `_. #. Linux: Run ``sudo minicom`` in Client PC's terminal. Windows: Use Teraterm. From 7a57d715526f1d94aa56f3a1a5f48ca472ba580c Mon Sep 17 00:00:00 2001 From: Shubi Date: Wed, 25 Sep 2019 16:42:52 +0300 Subject: [PATCH 29/90] yml updates + gitattribute added --- .gitattributes | 14 ++ CameraNetwork/client.py | 4 +- cn_client_ubuntu18.yml | 327 ++++++++++++++++++++-------------------- 3 files changed, 179 insertions(+), 166 deletions(-) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9fb85ec --- /dev/null +++ b/.gitattributes @@ -0,0 +1,14 @@ +# Set the default behavior, in case people don't have core.autocrlf set. +* text=auto + +# Explicitly declare text files you want to always be normalized and converted +# to native line endings on checkout. +*.c text +*.h text + +# Declare files that will always have CRLF line endings on checkout. +*.sln text eol=crlf + +# Denote all files that are truly binary and should not be modified. +*.png binary +*.jpg binary \ No newline at end of file diff --git a/CameraNetwork/client.py b/CameraNetwork/client.py index c3d5c23..9e7e1b9 100644 --- a/CameraNetwork/client.py +++ b/CameraNetwork/client.py @@ -163,12 +163,12 @@ def on_message(self, msg): status, cmd, args, kwds = cPickle.loads(msg[0]) # - # Call the coresponding cmd callback. + # Call the corresponding cmd callback. # self.handle_receive(msg_extra, service, status, cmd, args, kwds) def on_timeout(self): - """Public method called when a timeout occured. + """Public method called when a timeout occurred. .. note:: Does nothing. Should be overloaded! """ diff --git a/cn_client_ubuntu18.yml b/cn_client_ubuntu18.yml index 062c534..f5c8ed1 100644 --- a/cn_client_ubuntu18.yml +++ b/cn_client_ubuntu18.yml @@ -1,170 +1,169 @@ name: cn_client channels: - - conda-forge - defaults dependencies: - - _libgcc_mutex=0.1=main - - apptools=4.4.0=py27_1002 - - asn1crypto=0.24.0=py27_1003 - - atom=0.4.3=py27h6bb024c_0 - - backports=1.0=py_2 - - backports.functools_lru_cache=1.5=py_1 - - backports.shutil_get_terminal_size=1.0.0=py_3 - - backports_abc=0.5=py_1 - - bcrypt=3.1.6=py27h516909a_1 - - beautifulsoup4=4.8.0=py27_0 - - blas=1.1=openblas - - bzip2=1.0.8=h516909a_1 - - ca-certificates=2019.9.11=hecc5488_0 - - cairo=1.16.0=h18b612c_1001 - - certifi=2019.9.11=py27_0 - - cffi=1.12.3=py27h8022711_0 - - cloudpickle=1.2.2=py_0 - - configobj=5.0.6=py_0 - - cryptography=2.7=py27h72c5cf5_0 - - curl=7.65.3=hf8cf82a_0 - - cycler=0.10.0=py_1 - - cython=0.29.13=py27he1b5a44_0 - - cytoolz=0.10.0=py27h516909a_0 - - dask-core=0.15.2=py27_0 - - dbus=1.13.6=he372182_0 - - decorator=4.4.0=py_0 - - enaml=0.10.3=py27hc9558a2_1 - - enum34=1.1.6=py27_1001 - - envisage=4.8.0=py_0 - - ephem=3.7.7.0=py27h516909a_0 - - expat=2.2.5=he1b5a44_1003 - - ffmpeg=4.1.3=h167e202_0 - - fontconfig=2.13.1=he4413a7_1000 - - freetype=2.10.0=he983fc9_1 - - functools32=3.2.3.2=py_3 - - future=0.17.1=py27_1000 - - futures=3.3.0=py27_0 - - gettext=0.19.8.1=hc5be6a0_1002 - - giflib=5.1.9=h516909a_0 - - glib=2.58.3=h6f030ca_1002 - - gmp=6.1.2=hf484d3e_1000 - - gnutls=3.6.5=hd3a4fd2_1002 - - graphite2=1.3.13=hf484d3e_1000 - - gst-plugins-base=1.14.5=h0935bb2_0 - - gstreamer=1.14.5=h36ae1b5_0 - - harfbuzz=2.4.0=h37c48d4_1 - - hdf4=4.2.13=h9a582f1_1002 - - hdf5=1.10.5=nompi_h3c11f04_1103 - - icu=58.2=hf484d3e_1000 - - idna=2.8=py27_1000 - - imageio=2.5.0=py27_0 - - ipaddress=1.0.22=py_1 - - ipython=5.8.0=py27_0 - - ipython_genutils=0.2.0=py_1 - - jasper=1.900.1=h07fcdf6_1006 - - joblib=0.13.2=py_0 - - jpeg=9c=h14c3975_1001 - - jsoncpp=1.8.4=hc9558a2_1001 - - kiwisolver=1.1.0=py27hc9558a2_0 - - krb5=1.16.3=h05b26f9_1001 - - lame=3.100=h14c3975_1001 - - libblas=3.8.0=11_openblas - - libcblas=3.8.0=11_openblas - - libcurl=7.65.3=hda55be3_0 - - libedit=3.1.20170329=hf8c457e_1001 - - libffi=3.2.1=he1b5a44_1006 - - libgcc-ng=9.1.0=hdf63c60_0 - - libgfortran-ng=7.3.0=hdf63c60_0 - - libiconv=1.15=h516909a_1005 - - liblapack=3.8.0=11_openblas - - liblapacke=3.8.0=11_openblas - - libnetcdf=4.6.2=h303dfb8_1003 - - libopenblas=0.3.6=h5a2b251_1 - - libpng=1.6.37=hed695b0_0 - - libssh2=1.8.2=h22169c7_2 - - libstdcxx-ng=9.1.0=hdf63c60_0 - - libtiff=4.0.10=h57b8799_1003 - - libuuid=2.32.1=h14c3975_1000 - - libwebp=1.0.2=h576950b_1 - - libxcb=1.13=h14c3975_1002 - - libxml2=2.9.9=h13577e0_2 - - lz4-c=1.8.3=he1b5a44_1001 - - matplotlib=2.2.3=py27hb69df0a_0 - - mayavi=4.7.1=py27h7eb8c7e_2 - - ncurses=6.1=hf484d3e_1002 - - nettle=3.4.1=h1bed415_1002 - - networkx=2.1=py27_0 - - numpy=1.16.4=py27h95a1406_0 - - olefile=0.46=py_0 - - openblas=0.3.3=h9ac9557_1001 - - opencv=4.1.1=py27ha799480_1 - - openh264=1.8.0=hdbcaa40_1000 - - openssl=1.1.1c=h516909a_0 - - pandas=0.24.2=py27hb3f55d8_0 - - paramiko=2.6.0=py27_0 - - pathlib2=2.3.4=py27_0 - - pcre=8.41=hf484d3e_1003 - - pexpect=4.7.0=py27_0 - - pickleshare=0.7.5=py27_1000 - - pillow=6.1.0=py27h6b7be26_1 - - pip=19.2.3=py27_0 - - pixman=0.38.0=h516909a_1003 - - ply=3.11=py_1 - - prompt_toolkit=1.0.15=py_1 - - pthread-stubs=0.4=h14c3975_1001 - - ptyprocess=0.6.0=py_1001 - - pycparser=2.19=py27_1 - - pyface=6.1.2=py_0 - - pyfirmata=1.1.0=py_0 - - pygments=2.4.2=py_0 - - pynacl=1.3.0=py27h14c3975_1000 - - pyopengl=3.1.3b2=py_1 - - pyparsing=2.4.2=py_0 - - pyqt=5.9.2=py27hcca6a23_4 - - pyqtgraph=0.10.0=py_5 - - pyserial=3.4=py_2 - - python=2.7.15=h5a48372_1009 - - python-dateutil=2.8.0=py_0 - - pytz=2019.2=py_0 - - pywavelets=1.0.3=py27hd352d35_1 - - qt=5.9.7=h52cfd70_2 - - qtpy=1.9.0=py_0 - - readline=8.0=hf8c457e_0 - - scandir=1.10.0=py27h14c3975_0 - - scikit-image=0.14.2=py27he6710b0_0 - - scikit-learn=0.20.4=py27_blas_openblashebff5e3_0 - - scipy=1.2.1=py27_blas_openblash1522bff_0 - - setuptools=41.2.0=py27_0 - - simplegeneric=0.8.1=py_1 - - singledispatch=3.4.0.3=py27_1000 - - sip=4.19.8=py27hf484d3e_1000 - - six=1.12.0=py27_1000 - - soupsieve=1.9.3=py27_0 - - sqlite=3.29.0=hcee41ef_1 - - subprocess32=3.5.4=py27h516909a_0 - - tbb=2019.8=hc9558a2_0 - - tk=8.6.9=hed695b0_1003 - - toolz=0.10.0=py_0 - - tornado=4.5.3=py27h14c3975_1001 - - traitlets=4.3.2=py27_1000 - - traits=5.1.2=py27h516909a_0 - - traitsui=6.1.3=py_0 - - vtk=8.2.0=py27hfdee58b_203 - - wcwidth=0.1.7=py_1 - - wheel=0.33.6=py27_0 - - x264=1!152.20180806=h14c3975_0 - - xorg-kbproto=1.0.7=h14c3975_1002 - - xorg-libice=1.0.10=h516909a_0 - - xorg-libsm=1.2.3=h84519dc_1000 - - xorg-libx11=1.6.8=h516909a_0 - - xorg-libxau=1.0.9=h14c3975_0 - - xorg-libxdmcp=1.1.3=h516909a_0 - - xorg-libxext=1.3.4=h516909a_0 - - xorg-libxrender=0.9.10=h516909a_1002 - - xorg-libxt=1.2.0=h516909a_0 - - xorg-renderproto=0.11.1=h14c3975_1002 - - xorg-xextproto=7.3.0=h14c3975_1002 - - xorg-xproto=7.0.31=h14c3975_1007 - - xz=5.2.4=h14c3975_1001 - - zlib=1.2.11=h516909a_1006 - - zstd=1.4.0=h3b9ef0a_0 +# - _libgcc_mutex=0.1=main +# - apptools=4.4.0=py27_1002 +# - asn1crypto=0.24.0=py27_1003 +# - atom=0.4.3=py27h6bb024c_0 +# - backports=1.0=py_2 +# - backports.functools_lru_cache=1.5=py_1 +# - backports.shutil_get_terminal_size=1.0.0=py_3 +# - backports_abc=0.5=py_1 +# - bcrypt=3.1.6=py27h516909a_1 + - beautifulsoup4=4.8 +# - blas=1.1=openblas +# - bzip2=1.0.8=h516909a_1 +# - ca-certificates=2019.9.11=hecc5488_0 +# - cairo=1.16.0=h18b612c_1001 +# - certifi=2019.9.11=py27_0 +# - cffi=1.12.3=py27h8022711_0 +# - cloudpickle=1.2.2=py_0 +# - configobj=5.0.6=py_0 +# - cryptography=2.7=py27h72c5cf5_0 +# - curl=7.65.3=hf8cf82a_0 +# - cycler=0.10.0=py_1 + - cython=0.29 +# - cytoolz=0.10.0=py27h516909a_0 +# - dask-core=0.15.2=py27_0 +# - dbus=1.13.6=he372182_0 +# - decorator=4.4.0=py_0 + - enaml=0.10 +# - enum34=1.1.6=py27_1001 +# - envisage=4.8.0=py_0 + - ephem=3.7 +# - expat=2.2.5=he1b5a44_1003 +# - ffmpeg=4.1.3=h167e202_0 +# - fontconfig=2.13.1=he4413a7_1000 +# - freetype=2.10.0=he983fc9_1 +# - functools32=3.2.3.2=py_3 +# - future=0.17.1=py27_1000 + - futures=3.3 +# - gettext=0.19.8.1=hc5be6a0_1002 +# - giflib=5.1.9=h516909a_0 +# - glib=2.58.3=h6f030ca_1002 +# - gmp=6.1.2=hf484d3e_1000 +# - gnutls=3.6.5=hd3a4fd2_1002 +# - graphite2=1.3.13=hf484d3e_1000 +# - gst-plugins-base=1.14.5=h0935bb2_0 +# - gstreamer=1.14.5=h36ae1b5_0 +# - harfbuzz=2.4.0=h37c48d4_1 +# - hdf4=4.2.13=h9a582f1_1002 +# - hdf5=1.10.5=nompi_h3c11f04_1103 +# - icu=58.2=hf484d3e_1000 +# - idna=2.8=py27_1000 +# - imageio=2.5.0=py27_0 +# - ipaddress=1.0.22=py_1 + - ipython=5.8 +# - ipython_genutils=0.2.0=py_1 +# - jasper=1.900.1=h07fcdf6_1006 + - joblib=0.13 +# - jpeg=9c=h14c3975_1001 +# - jsoncpp=1.8.4=hc9558a2_1001 +# - kiwisolver=1.1.0=py27hc9558a2_0 +# - krb5=1.16.3=h05b26f9_1001 +# - lame=3.100=h14c3975_1001 +# - libblas=3.8.0=11_openblas +# - libcblas=3.8.0=11_openblas +# - libcurl=7.65.3=hda55be3_0 +# - libedit=3.1.20170329=hf8c457e_1001 +# - libffi=3.2.1=he1b5a44_1006 +# - libgcc-ng=9.1.0=hdf63c60_0 +# - libgfortran-ng=7.3.0=hdf63c60_0 +# - libiconv=1.15=h516909a_1005 +# - liblapack=3.8.0=11_openblas +# - liblapacke=3.8.0=11_openblas +# - libnetcdf=4.6.2=h303dfb8_1003 +# - libopenblas=0.3.6=h5a2b251_1 +# - libpng=1.6.37=hed695b0_0 +# - libssh2=1.8.2=h22169c7_2 +# - libstdcxx-ng=9.1.0=hdf63c60_0 +# - libtiff=4.0.10=h57b8799_1003 +# - libuuid=2.32.1=h14c3975_1000 +# - libwebp=1.0.2=h576950b_1 +# - libxcb=1.13=h14c3975_1002 +# - libxml2=2.9.9=h13577e0_2 +# - lz4-c=1.8.3=he1b5a44_1001 + - matplotlib=2.2 + - mayavi=4.7 +# - ncurses=6.1=hf484d3e_1002 +# - nettle=3.4.1=h1bed415_1002 +# - networkx=2.1=py27_0 + - numpy=1.16 +# - olefile=0.46=py_0 +# - openblas=0.3.3=h9ac9557_1001 + - opencv=4.1 +# - openh264=1.8.0=hdbcaa40_1000 +# - openssl=1.1.1c=h516909a_0 + - pandas=0.24.2 + - paramiko=2.6 +# - pathlib2=2.3.4=py27_0 +# - pcre=8.41=hf484d3e_1003 +# - pexpect=4.7.0=py27_0 +# - pickleshare=0.7.5=py27_1000 + - pillow=6.1 + - pip=19.2 +# - pixman=0.38.0=h516909a_1003 +# - ply=3.11=py_1 +# - prompt_toolkit=1.0.15=py_1 +# - pthread-stubs=0.4=h14c3975_1001 +# - ptyprocess=0.6.0=py_1001 +# - pycparser=2.19=py27_1 +# - pyface=6.1.2=py_0 + - pyfirmata=1.1 +# - pygments=2.4.2=py_0 +# - pynacl=1.3.0=py27h14c3975_1000 + - pyopengl=3.1. +# - pyparsing=2.4.2=py_0 +# - pyqt=5.9.2=py27hcca6a23_4 + - pyqtgraph=0.10 +# - pyserial=3.4=py_2 + - python=2.7 +# - python-dateutil=2.8.0=py_0 +# - pytz=2019.2=py_0 +# - pywavelets=1.0.3=py27hd352d35_1 +# - qt=5.9.7=h52cfd70_2 +# - qtpy=1.9.0=py_0 +# - readline=8.0=hf8c457e_0 +# - scandir=1.10.0=py27h14c3975_0 + - scikit-image=0.14 + - scikit-learn=0.20 + - scipy=1.2 +# - setuptools=41.2.0=py27_0 +# - simplegeneric=0.8.1=py_1 +# - singledispatch=3.4.0.3=py27_1000 +# - sip=4.19.8=py27hf484d3e_1000 +# - six=1.12.0=py27_1000 +# - soupsieve=1.9.3=py27_0 +# - sqlite=3.29.0=hcee41ef_1 +# - subprocess32=3.5.4=py27h516909a_0 +# - tbb=2019.8=hc9558a2_0 +# - tk=8.6.9=hed695b0_1003 +# - toolz=0.10.0=py_0 + - tornado=4.5.3 +# - traitlets=4.3.2=py27_1000 + - traits=5.1 +# - traitsui=6.1.3=py_0 + - vtk=8.2 +# - wcwidth=0.1.7=py_1 +# - wheel=0.33.6=py27_0 +# - x264=1!152.20180806=h14c3975_0 +# - xorg-kbproto=1.0.7=h14c3975_1002 +# - xorg-libice=1.0.10=h516909a_0 +# - xorg-libsm=1.2.3=h84519dc_1000 +# - xorg-libx11=1.6.8=h516909a_0 +# - xorg-libxau=1.0.9=h14c3975_0 +# - xorg-libxdmcp=1.1.3=h516909a_0 +# - xorg-libxext=1.3.4=h516909a_0 +# - xorg-libxrender=0.9.10=h516909a_1002 +# - xorg-libxt=1.2.0=h516909a_0 +# - xorg-renderproto=0.11.1=h14c3975_1002 +# - xorg-xextproto=7.3.0=h14c3975_1002 +# - xorg-xproto=7.0.31=h14c3975_1007 +# - xz=5.2.4=h14c3975_1001 +# - zlib=1.2.11=h516909a_1006 +# - zstd=1.4.0=h3b9ef0a_0 - pip: - - pymap3d==1.8.1 - - pyzmq==18.1.0 + - pymap3d==1.8 + - pyzmq==18.1 - git+git://github.com/enthought/traits-enaml.git@update-data-frame-table From ae393e49aaea7a1e6809d90c0c245723b80d9bb7 Mon Sep 17 00:00:00 2001 From: Adi Vainiger Date: Wed, 25 Sep 2019 19:41:47 +0300 Subject: [PATCH 30/90] Update conf.py --- docs/source/conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index fde73ac..fde9abf 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -76,7 +76,7 @@ # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ -# 'numfig', + 'sphinx.ext.numfig', 'sphinx.ext.autodoc', 'sphinx.ext.intersphinx', 'sphinx.ext.todo', From 5a9922c658e9c04086d93a94d0bb342c2cc11f1b Mon Sep 17 00:00:00 2001 From: Adi Vainiger Date: Wed, 25 Sep 2019 19:49:43 +0300 Subject: [PATCH 31/90] Update conf.py --- docs/source/conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index fde9abf..d83904f 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -76,7 +76,7 @@ # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ - 'sphinx.ext.numfig', +# 'sphinx.ext.numfig', # Commented so that readthedocs will work 'sphinx.ext.autodoc', 'sphinx.ext.intersphinx', 'sphinx.ext.todo', From cde45f296f9f5e31b2adf196e82110a647eb7b8d Mon Sep 17 00:00:00 2001 From: Shubi Date: Sun, 29 Sep 2019 10:47:23 +0300 Subject: [PATCH 32/90] Added windows installation instructions --- docs/source/install.rst | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/docs/source/install.rst b/docs/source/install.rst index a433094..c44fec7 100644 --- a/docs/source/install.rst +++ b/docs/source/install.rst @@ -34,7 +34,9 @@ Installation - Client cd cameranetwork -#. Create conda virtual environment from *cn_client_ubuntu18.yml* +#. Create virtual env: + + LINUX: Create conda virtual environment from *cn_client_ubuntu18.yml* :: @@ -44,6 +46,28 @@ Installation - Client The first line of sets the new environment's name (currently *cn_client*) + WINDOWS:: + + # Create new environment with name: cn_client + + conda create -n cn_client --yes + + conda activate cn_client + + conda config --env --set restore_free_channel true + + conda config --env --append channels conda-forge + + conda install python=2.7 pip paramiko cython tornado=4.5.3 futures numpy scipy matplotlib beautifulsoup4 scikit-learn scikit-image pyside requests ephem pandas ipython pyfirmata joblib pyzmq enaml pillow traits pyqtgraph pyopengl vtk mayavi opencv git mercurial + + + + # pip install pymap3d, traits-enaml and pyfisheye + # Note, this installs pyfisheye without cloning it. For development of pyfisheye clone and install manually from https://bitbucket.org/amitibo/pyfisheye (TODO: migrate pyfisheye codebase to github) + + python -m pip install pymap3d==1.8.1 git+https://github.com/enthought/traits-enaml.git@update-data-frame-table hg+https://bitbucket.org/amitibo/pyfisheye + + #. Activate the environment:: From 24e97bf96c739f20d05eae1b42e47f9e89aa2c5f Mon Sep 17 00:00:00 2001 From: Shubi Date: Wed, 2 Oct 2019 14:50:50 +0300 Subject: [PATCH 33/90] added scp file transfer instructions linux --- docs/source/usage.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/source/usage.rst b/docs/source/usage.rst index db0151c..82a5296 100644 --- a/docs/source/usage.rst +++ b/docs/source/usage.rst @@ -108,4 +108,6 @@ Useful commands - Press ctrl+a then ctrl+d to detach the *start_proxy.py* from the terminal - ``screen -ls`` to see detached processes. then``screen -r `` to bring it back. - ``sudo netstat -a -nlp -o | grep 198`` to see status of relevant ports - +- `adding ssh key to ssh-agent `_. +- `How to use scp to transfer files `_. + For example to retrieve proxy log from proxy to client: ``scp ubuntu@3.123.49.101:/home/ubuntu/proxy_logs/cameralog_190929_092735_proxy.txt /home/shubi/Desktop/log`` From 073117588b808c4c00ecbb17ee7445f7077669dd Mon Sep 17 00:00:00 2001 From: Shubi Date: Thu, 3 Oct 2019 19:22:19 +0300 Subject: [PATCH 34/90] 2 Warnings fixed & docs WIP --- CameraNetwork/controller.py | 4 +- CameraNetwork/gui/main.py | 2 +- docs/source/install.rst | 53 +++++++++++++------------- docs/source/usage.rst | 31 +++++++++++++++ particle_spectrometer/visualize_map.py | 4 +- 5 files changed, 61 insertions(+), 33 deletions(-) diff --git a/CameraNetwork/controller.py b/CameraNetwork/controller.py index a9517d7..5c5a43a 100644 --- a/CameraNetwork/controller.py +++ b/CameraNetwork/controller.py @@ -464,9 +464,7 @@ def loadSunMeasurements(self): data.index = data.index.time angles.append(data['sunshader_angle']) - self.sunshader_angles_df = pd.concat( - angles, axis=1 - ).mean(axis=1).to_frame(name='angle') + self.sunshader_angles_df = pd.concat(angles, axis=1, sort=True).mean(axis=1).to_frame(name='angle') else: self.sunshader_angles_df = pd.DataFrame(dict(angle=[])) diff --git a/CameraNetwork/gui/main.py b/CameraNetwork/gui/main.py index d4a2d89..4fbd4cb 100644 --- a/CameraNetwork/gui/main.py +++ b/CameraNetwork/gui/main.py @@ -727,7 +727,7 @@ def updateTimes(self, server_id, images_df): if server_id in self.images_df.columns: new_df.drop(server_id, axis=1, inplace=True) new_df = pd.concat((new_df, images_series), axis=1) - new_df = new_df.reindex_axis(sorted(new_df.columns), axis=1) + new_df = new_df.reindex(sorted(new_df.columns), axis=1) self.images_df = new_df diff --git a/docs/source/install.rst b/docs/source/install.rst index c44fec7..33ede2a 100644 --- a/docs/source/install.rst +++ b/docs/source/install.rst @@ -6,7 +6,7 @@ Installation .. contents:: Table of Contents -Introduction +Installation ============ The ``CameraNetwork`` system is made of three logical parts: @@ -25,7 +25,7 @@ The ``CameraNetwork`` is implemented completely in `Python `_ as at the time of selection it offered a unique balance between capabilities and cost. Nonetheless it should be straight @@ -102,17 +102,35 @@ once the package is installed on one computer, it is much more time effective to memory card and duplicate it as needed. +Installation - Proxy +-------------------- + +Currently the code assumes that the proxy server is run on an ec2 instance. +Installation on the proxy follows the same steps of installation on the +client. + +To run the proxy program, do:: + + start_proxy.py + +Installation - Calibration Station +---------------------------------- + + +Camera setup +------------ + +Arduino connections +````````````````````````` -Others -====== -Circuit Board connections -------------------------- Savox SunShader Servo pins: #. Brown (Gnd) = Gnd #. Red (5V) = 5V #. Orange (Signal) = PIN NUM + + Installation - Old Reference ============================ Prerequisites @@ -197,16 +215,6 @@ Run the camera setup script to setup the camera environment. You will be asked for a camera id. Enter a unique camera id number. -Installing the Proxy -==================== - -Currently the code assumes that the proxy server is run on an ec2 instance. -Installation on the proxy follows the same steps of installation on the -client. - -To run the proxy program, do: - - > start_proxy.py Installing the Client @@ -279,12 +287,3 @@ Shubi reference .. note:: without --user it installs the scripts for all users (Windows: C:\ProgramData\Anaconda2\Scripts) - - - -Circuit Board connections -========================= -Savox SunShader Servo: -#. Brown (Gnd) = Gnd -#. Red (5V) = 5V -#. Orange (Signal) = PIN NUM diff --git a/docs/source/usage.rst b/docs/source/usage.rst index 82a5296..e165538 100644 --- a/docs/source/usage.rst +++ b/docs/source/usage.rst @@ -111,3 +111,34 @@ Useful commands - `adding ssh key to ssh-agent `_. - `How to use scp to transfer files `_. For example to retrieve proxy log from proxy to client: ``scp ubuntu@3.123.49.101:/home/ubuntu/proxy_logs/cameralog_190929_092735_proxy.txt /home/shubi/Desktop/log`` +- gparted for microsd / eMMC partitioning & direct copying. +- ``sudo dd if=/dev/sdb of=~/xu4_lab.img status=progress`` to create an image of odroid +- `etcher `_ to flash image onto the SD card + + +Analyzing Results +================= +On Client PC:: + + cd /cameranetwork/scripts_client + python start_local.py + +.. note:: + + - Make sure to activate environment beforehand: ``conda activate cn_client`` + - -l flag is used for local proxy (instead of real proxy server) + - -d flag is for opening gui separately. + +workflow + data structure: + +#. Run ``python start_local.py -d /home/shubi/Desktop/experiment_23_09_2019`` in the background +where `experiment_date` is a folder containing `cam_ID` folder for each camera involved. +Each `cam_ID` consists of + + #. `captured_images` folder which stores inside a folder with images(.jpg, .mat & .pkl versions) and database.pkl for each day that the camera recorded. + #. `dark_images` folder + #. `sun_positions` folder, containing a folder with .csv containing the positions of the sun (and moon!) with format: timestamp, object, pos_x, pos_y, sunshader_angle, row each 6 minutes for sun and every 1 minute for moon. + #. Additional pkl's and json's and other (important!) files. + +#. Run ``python camera_client.py`` +#. You should see a list of all real & virtual cameras. \ No newline at end of file diff --git a/particle_spectrometer/visualize_map.py b/particle_spectrometer/visualize_map.py index 158377e..2b6e99f 100644 --- a/particle_spectrometer/visualize_map.py +++ b/particle_spectrometer/visualize_map.py @@ -69,8 +69,8 @@ def load_path(flight_path, lat0=32.775776, lon0=35.024963, alt0=229): def loadMapData(): """Load height data for map visualization.""" - path1 = r"..\data\reconstructions\N32E034.hgt" - path2 = r"..\data\reconstructions\N32E035.hgt" + path1 = os.path.abspath(os.path.join(r'..', r'data', r'reconstructions', r'N32E034.hgt')) + path2 = os.path.abspath(os.path.join(r'..', r'data', r'reconstructions', r'N32E035.hgt')) with open(path1) as hgt_data: hgt1 = np.fromfile(hgt_data, np.dtype('>i2')).reshape((1201, 1201))[:1200, :1200] with open(path2) as hgt_data: From 9ed065f904667b7893db70fe36a01a3b23eb66ae Mon Sep 17 00:00:00 2001 From: Shubi Date: Thu, 3 Oct 2019 19:32:54 +0300 Subject: [PATCH 35/90] docs WIP --- docs/source/install.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/source/install.rst b/docs/source/install.rst index 33ede2a..6c44e60 100644 --- a/docs/source/install.rst +++ b/docs/source/install.rst @@ -131,7 +131,7 @@ Savox SunShader Servo pins: -Installation - Old Reference +Installation - OLD ============================ Prerequisites ------------- @@ -218,7 +218,7 @@ You will be asked for a camera id. Enter a unique camera id number. Installing the Client -===================== +--------------------- It is recommended to install python using the `Anaconda `_ distribution. Install the ``CameraNetwork`` package:: @@ -228,7 +228,7 @@ Install the ``CameraNetwork`` package:: > python setup.py develop --user Installing the Calibration Station -================================== +---------------------------------- It is recommended to install python using the `Anaconda `_ distribution. Install the ``CameraNetwork`` package:: From 19efb5bbf0350d6cbd3b6d01efaaa08347b15327 Mon Sep 17 00:00:00 2001 From: Shubi Date: Sun, 6 Oct 2019 12:45:11 +0300 Subject: [PATCH 36/90] docs WIP --- CameraNetwork/gui/data_frame_table.py | 50 ++-- CameraNetwork/gui/enaml_files/docks.enaml | 3 +- CameraNetwork/gui/main.py | 2 +- cn_client_amit.yml | 348 ++++++++++++++++++++++ docs/source/install.rst | 4 +- 5 files changed, 370 insertions(+), 37 deletions(-) create mode 100644 cn_client_amit.yml diff --git a/CameraNetwork/gui/data_frame_table.py b/CameraNetwork/gui/data_frame_table.py index 1e5ee71..edf933e 100644 --- a/CameraNetwork/gui/data_frame_table.py +++ b/CameraNetwork/gui/data_frame_table.py @@ -33,7 +33,7 @@ ## LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE ## OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ## ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.## -#---------------------------------------------------------------------------- +# ---------------------------------------------------------------------------- # # Copyright (c) 2014, Enthought, Inc. # All rights reserved. @@ -45,7 +45,7 @@ # # Thanks for using Enthought open source! # -#---------------------------------------------------------------------------- +# ---------------------------------------------------------------------------- import numpy as np from pandas import DataFrame, datetime @@ -53,17 +53,14 @@ from enaml.core.declarative import d_ from enaml.widgets.api import RawWidget from enaml.qt.QtCore import QAbstractTableModel, QModelIndex, Qt -# fixing import from enaml.qt.QtGui. During the transision from Qt4 to Qt5: QtGui was split into QtGui and QtWidgets -#from enaml.qt.QtGui import ( - #QTableView, QHeaderView, QAbstractItemView, QFontMetrics) # ADI - fixing import of QTableView in Qt5. This line was relevant to Qt4 -from enaml.qt.QtGui import QFontMetrics # ADI - preserving include of QFontMetrics in Qt5 -from enaml.qt.QtWidgets import (QTableView,QHeaderView, QAbstractItemView) # ADI - fixing import of (QTableView,QHeaderView, QAbstractItemView) in Qt5 +from enaml.qt.QtGui import ( + QTableView, QHeaderView, QAbstractItemView, QFontMetrics) + from traits_enaml.utils import get_unicode_string, format_value class ColumnCache(object): """ Pull out a view for each column for quick element access. - """ def __init__(self, data_frame): @@ -75,7 +72,6 @@ def __getitem__(self, ij): def reset(self, new_data_frame=None): """ Reset the cache. - """ if new_data_frame is not None: self.data_frame = new_data_frame @@ -169,13 +165,12 @@ def sort(self, column, order=Qt.AscendingOrder): def _emit_all_data_changed(self): """ Emit signals to note that all data has changed, e.g. by sorting. - """ self.dataChanged.emit( self.index(0, 0), self.index( len(self.data_frame.index) - 1, - len(self.data_frame.columns) - 1),) + len(self.data_frame.columns) - 1), ) self.headerDataChanged.emit( Qt.Vertical, 0, len(self.data_frame.index) - 1) @@ -202,7 +197,6 @@ def __init__(self, df_model, parent=None, **kwds): @classmethod def from_data_frame(cls, df, **kwds): """ Instantiate a DataFrameTableView directly from a DataFrame. - """ df_model = QDataFrameModel(df) self = cls(df_model, **kwds) @@ -214,7 +208,7 @@ def _setup_sorting(self): def _setup_selection(self): self.selection_model = self.selectionModel() - #self.selection_model.currentRowChanged.connect(self._current_row_changed) + # self.selection_model.currentRowChanged.connect(self._current_row_changed) self.setSelectionMode(QAbstractItemView.ContiguousSelection) self.setSelectionBehavior(QAbstractItemView.SelectItems) @@ -230,23 +224,14 @@ def _setup_headers(self): max_width = fmetrics.width(u" {0} ".format( unicode(self.df_model.rowCount()))) self.vheader.setMinimumWidth(max_width) - - # self.vheader.setClickable(True) # ADI - this comment is relevant for Qt 4 - self.vheader.setSectionsClickable(True) # ADI - this is relevant for Qt > 4 - + self.vheader.setClickable(True) self.vheader.setStretchLastSection(False) - - # self.vheader.setResizeMode(QHeaderView.Fixed) # ADI - this comment is relevant for Qt 4 - self.vheader.setSectionResizeMode(QHeaderView.Fixed) # ADI - this is relevant for Qt > 4 - + self.vheader.setResizeMode(QHeaderView.Fixed) + self.hheader = self.horizontalHeader() self.hheader.setStretchLastSection(False) - - # self.vheader.setClickable(True) # ADI - this comment is relevant for Qt 4 - self.vheader.setSectionsClickable(True) # ADI - this is relevant for Qt > 4 - - # self.hheader.setMovable(True) # ADI - this comment is relevant for Qt 4 - self.hheader.setSectionsMovable(True) # ADI - this is relevant for Qt > 4 + self.hheader.setClickable(True) + self.hheader.setMovable(True) def _setup_style(self): self.setWordWrap(False) @@ -257,14 +242,14 @@ def _current_row_changed(self, model_index): class DataFrameTable(RawWidget): """ A widget that displays a table view tied to a pandas DataFrame.""" - + # # The data frame to display # data_frame = d_(Typed(DataFrame)) selected_row = d_(Int()) selected_index = d_(Typed(object)) - + # # Expand the table by default # @@ -273,19 +258,19 @@ class DataFrameTable(RawWidget): def create_widget(self, parent): """Create the DataFrameTable Qt widget.""" - + widget = QDataFrameTableView.from_data_frame( self.data_frame, parent=parent ) widget.currentChanged = self.current_changed - + return widget @observe('data_frame') def _data_frame_changed(self, change): """ Proxy changes in `data_frame` down to the Qt widget.""" - + table = self.get_widget() if table is not None: df_model = QDataFrameModel(change['value']) @@ -294,6 +279,5 @@ def _data_frame_changed(self, change): table.setModel(df_model) def current_changed(self, current_item, previous_item): - self.selected_row = current_item.row() self.selected_index = self.data_frame.index[current_item.row()] diff --git a/CameraNetwork/gui/enaml_files/docks.enaml b/CameraNetwork/gui/enaml_files/docks.enaml index a882162..7f1c2dc 100644 --- a/CameraNetwork/gui/enaml_files/docks.enaml +++ b/CameraNetwork/gui/enaml_files/docks.enaml @@ -461,11 +461,12 @@ enamldef TimesView(DockItem): PushButton: seek_pb: text = 'Seek' clicked :: - main.create_map() +# main.create_map() TODO Uncomment index = times.img_index main.broadcast_message( gs.MSG_TYPE_SEEK, kwds=dict( +# seek_time="2017-04-06 12:00:00", seek_time=index[0], hdr_index=-1 if HDR_cb.checked else index[1], normalize=True, diff --git a/CameraNetwork/gui/main.py b/CameraNetwork/gui/main.py index 4fbd4cb..f929765 100644 --- a/CameraNetwork/gui/main.py +++ b/CameraNetwork/gui/main.py @@ -36,7 +36,7 @@ ## """Run a GUI Client. -A GUI client allows easy access to cameras thier settings and their +A GUI client allows easy access to cameras their settings and their measurements. """ from __future__ import division diff --git a/cn_client_amit.yml b/cn_client_amit.yml new file mode 100644 index 0000000..bccc793 --- /dev/null +++ b/cn_client_amit.yml @@ -0,0 +1,348 @@ +name: cn_client_amit +channels: + - defaults + - free + - conda-forge +dependencies: + - beautifulsoup4=4.5.1 + - cython=0.24.1 +# - enaml=0.10 + - ephem=3.7.6.0 + - futures=3.0.5 + - ipython=5.4.1 + - joblib=0.10.3 + - matplotlib=2.0.0 + - mayavi=4.5.0 + - numpy=1.12.1 + - opencv=3.2.0 + - pandas=0.19.2 + - paramiko=2.2.1 + - pillow=4.1.1 + - pip=19.2 +# - pyfirmata=1.1 + - pyopengl=3.1.0 + - pyqtgraph=0.10 + - python=2.7 + - scikit-image=0.12.3 + - scikit-learn=0.19 + - scipy=0.19.1 + - tornado=4.4.1 + - traits=4.6.0 + - vtk=6.3.0 + - pyzmq=15.4.0 + # - _libgcc_mutex=0.1=main + # - apptools=4.4.0=py27_1002 + # - asn1crypto=0.24.0=py27_1003 + # - atom=0.4.3=py27h6bb024c_0 + # - backports=1.0=py_2 + # - backports.functools_lru_cache=1.5=py_1 + # - backports.shutil_get_terminal_size=1.0.0=py_3 + # - backports_abc=0.5=py_1 + # - bcrypt=3.1.6=py27h516909a_1 + # - blas=1.1=openblas + # - bzip2=1.0.8=h516909a_1 + # - ca-certificates=2019.9.11=hecc5488_0 + # - cairo=1.16.0=h18b612c_1001 + # - certifi=2019.9.11=py27_0 + # - cffi=1.12.3=py27h8022711_0 + # - cloudpickle=1.2.2=py_0 + # - configobj=5.0.6=py_0 + # - cryptography=2.7=py27h72c5cf5_0 + # - curl=7.65.3=hf8cf82a_0 + # - cycler=0.10.0=py_1 + # - cytoolz=0.10.0=py27h516909a_0 + # - dask-core=0.15.2=py27_0 + # - dbus=1.13.6=he372182_0 + # - decorator=4.4.0=py_0 + # - enum34=1.1.6=py27_1001 + # - envisage=4.8.0=py_0 + # - expat=2.2.5=he1b5a44_1003 + # - ffmpeg=4.1.3=h167e202_0 + # - fontconfig=2.13.1=he4413a7_1000 + # - freetype=2.10.0=he983fc9_1 + # - functools32=3.2.3.2=py_3 + # - future=0.17.1=py27_1000 + # - gettext=0.19.8.1=hc5be6a0_1002 + # - giflib=5.1.9=h516909a_0 + # - glib=2.58.3=h6f030ca_1002 + # - gmp=6.1.2=hf484d3e_1000 + # - gnutls=3.6.5=hd3a4fd2_1002 + # - graphite2=1.3.13=hf484d3e_1000 + # - gst-plugins-base=1.14.5=h0935bb2_0 + # - gstreamer=1.14.5=h36ae1b5_0 + # - harfbuzz=2.4.0=h37c48d4_1 + # - hdf4=4.2.13=h9a582f1_1002 + # - hdf5=1.10.5=nompi_h3c11f04_1103 + # - icu=58.2=hf484d3e_1000 + # - idna=2.8=py27_1000 + # - imageio=2.5.0=py27_0 + # - ipaddress=1.0.22=py_1 + # - ipython_genutils=0.2.0=py_1 + # - jasper=1.900.1=h07fcdf6_1006 + # - jpeg=9c=h14c3975_1001 + # - jsoncpp=1.8.4=hc9558a2_1001 + # - kiwisolver=1.1.0=py27hc9558a2_0 + # - krb5=1.16.3=h05b26f9_1001 + # - lame=3.100=h14c3975_1001 + # - libblas=3.8.0=11_openblas + # - libcblas=3.8.0=11_openblas + # - libcurl=7.65.3=hda55be3_0 + # - libedit=3.1.20170329=hf8c457e_1001 + # - libffi=3.2.1=he1b5a44_1006 + # - libgcc-ng=9.1.0=hdf63c60_0 + # - libgfortran-ng=7.3.0=hdf63c60_0 + # - libiconv=1.15=h516909a_1005 + # - liblapack=3.8.0=11_openblas + # - liblapacke=3.8.0=11_openblas + # - libnetcdf=4.6.2=h303dfb8_1003 + # - libopenblas=0.3.6=h5a2b251_1 + # - libpng=1.6.37=hed695b0_0 + # - libssh2=1.8.2=h22169c7_2 + # - libstdcxx-ng=9.1.0=hdf63c60_0 + # - libtiff=4.0.10=h57b8799_1003 + # - libuuid=2.32.1=h14c3975_1000 + # - libwebp=1.0.2=h576950b_1 + # - libxcb=1.13=h14c3975_1002 + # - libxml2=2.9.9=h13577e0_2 + # - lz4-c=1.8.3=he1b5a44_1001 + # - ncurses=6.1=hf484d3e_1002 + # - nettle=3.4.1=h1bed415_1002 + # - networkx=2.1=py27_0 + # - olefile=0.46=py_0 + # - openblas=0.3.3=h9ac9557_1001 + # - openh264=1.8.0=hdbcaa40_1000 + # - openssl=1.1.1c=h516909a_0 + # - pathlib2=2.3.4=py27_0 + # - pcre=8.41=hf484d3e_1003 + # - pexpect=4.7.0=py27_0 + # - pickleshare=0.7.5=py27_1000 + # - pixman=0.38.0=h516909a_1003 + # - ply=3.11=py_1 + # - prompt_toolkit=1.0.15=py_1 + # - pthread-stubs=0.4=h14c3975_1001 + # - ptyprocess=0.6.0=py_1001 + # - pycparser=2.19=py27_1 + # - pyface=6.1.2=py_0 + # - pygments=2.4.2=py_0 + # - pynacl=1.3.0=py27h14c3975_1000 + # - pyparsing=2.4.2=py_0 + # - pyqt=5.9.2=py27hcca6a23_4 + # - pyserial=3.4=py_2 + # - python-dateutil=2.8.0=py_0 + # - pytz=2019.2=py_0 + # - pywavelets=1.0.3=py27hd352d35_1 + # - qt=5.9.7=h52cfd70_2 + # - qtpy=1.9.0=py_0 + # - readline=8.0=hf8c457e_0 + # - scandir=1.10.0=py27h14c3975_0 + # - setuptools=41.2.0=py27_0 + # - simplegeneric=0.8.1=py_1 + # - singledispatch=3.4.0.3=py27_1000 + # - sip=4.19.8=py27hf484d3e_1000 + # - six=1.12.0=py27_1000 + # - soupsieve=1.9.3=py27_0 + # - sqlite=3.29.0=hcee41ef_1 + # - subprocess32=3.5.4=py27h516909a_0 + # - tbb=2019.8=hc9558a2_0 + # - tk=8.6.9=hed695b0_1003 + # - toolz=0.10.0=py_0 + # - traitlets=4.3.2=py27_1000 + # - traitsui=6.1.3=py_0 + # - wcwidth=0.1.7=py_1 + # - wheel=0.33.6=py27_0 + # - x264=1!152.20180806=h14c3975_0 + # - xorg-kbproto=1.0.7=h14c3975_1002 + # - xorg-libice=1.0.10=h516909a_0 + # - xorg-libsm=1.2.3=h84519dc_1000 + # - xorg-libx11=1.6.8=h516909a_0 + # - xorg-libxau=1.0.9=h14c3975_0 + # - xorg-libxdmcp=1.1.3=h516909a_0 + # - xorg-libxext=1.3.4=h516909a_0 + # - xorg-libxrender=0.9.10=h516909a_1002 + # - xorg-libxt=1.2.0=h516909a_0 + # - xorg-renderproto=0.11.1=h14c3975_1002 + # - xorg-xextproto=7.3.0=h14c3975_1002 + # - xorg-xproto=7.0.31=h14c3975_1007 + # - xz=5.2.4=h14c3975_1001 + # - zlib=1.2.11=h516909a_1006 + # - zstd=1.4.0=h3b9ef0a_0 + - pip: + - pymap3d==1.2.4 + - git+git://github.com/enthought/traits-enaml.git@update-data-frame-table + + + + +# +#name: cn_client_amit +#channels: +# - defaults +# - free +# - conda-forge +#dependencies: +# - beautifulsoup4=4.5.1 +# - cython=0.24.1 +## - enaml=0.10 +# - ephem=3.7.6.0 +# - futures=3.0.5 +# - ipython=5.4.1 +# - joblib=0.10.3 +# - matplotlib=2.0.0 +# - mayavi=4.5.0 +# - numpy=1.12.1 +# - opencv=3.2.0 +# - pandas=0.19.2 +# - paramiko=2.2.1 +# - pillow=4.1.1 +# - pip=19.2 +## - pyfirmata=1.1 +# - pyopengl=3.1.0 +# - pyqtgraph=0.10 +# - python=2.7 +# - scikit-image=0.12.3 +# - scikit-learn=0.19 +# - scipy=0.19.1 +# - tornado=4.4.1 +# - traits=4.6.0 +# - vtk=6.3.0 +# - pyzmq=15.4.0 +# # - _libgcc_mutex=0.1=main +# # - apptools=4.4.0=py27_1002 +# # - asn1crypto=0.24.0=py27_1003 +# # - atom=0.4.3=py27h6bb024c_0 +# # - backports=1.0=py_2 +# # - backports.functools_lru_cache=1.5=py_1 +# # - backports.shutil_get_terminal_size=1.0.0=py_3 +# # - backports_abc=0.5=py_1 +# # - bcrypt=3.1.6=py27h516909a_1 +# # - blas=1.1=openblas +# # - bzip2=1.0.8=h516909a_1 +# # - ca-certificates=2019.9.11=hecc5488_0 +# # - cairo=1.16.0=h18b612c_1001 +# # - certifi=2019.9.11=py27_0 +# # - cffi=1.12.3=py27h8022711_0 +# # - cloudpickle=1.2.2=py_0 +# # - configobj=5.0.6=py_0 +# # - cryptography=2.7=py27h72c5cf5_0 +# # - curl=7.65.3=hf8cf82a_0 +# # - cycler=0.10.0=py_1 +# # - cytoolz=0.10.0=py27h516909a_0 +# # - dask-core=0.15.2=py27_0 +# # - dbus=1.13.6=he372182_0 +# # - decorator=4.4.0=py_0 +# # - enum34=1.1.6=py27_1001 +# # - envisage=4.8.0=py_0 +# # - expat=2.2.5=he1b5a44_1003 +# # - ffmpeg=4.1.3=h167e202_0 +# # - fontconfig=2.13.1=he4413a7_1000 +# # - freetype=2.10.0=he983fc9_1 +# # - functools32=3.2.3.2=py_3 +# # - future=0.17.1=py27_1000 +# # - gettext=0.19.8.1=hc5be6a0_1002 +# # - giflib=5.1.9=h516909a_0 +# # - glib=2.58.3=h6f030ca_1002 +# # - gmp=6.1.2=hf484d3e_1000 +# # - gnutls=3.6.5=hd3a4fd2_1002 +# # - graphite2=1.3.13=hf484d3e_1000 +# # - gst-plugins-base=1.14.5=h0935bb2_0 +# # - gstreamer=1.14.5=h36ae1b5_0 +# # - harfbuzz=2.4.0=h37c48d4_1 +# # - hdf4=4.2.13=h9a582f1_1002 +# # - hdf5=1.10.5=nompi_h3c11f04_1103 +# # - icu=58.2=hf484d3e_1000 +# # - idna=2.8=py27_1000 +# # - imageio=2.5.0=py27_0 +# # - ipaddress=1.0.22=py_1 +# # - ipython_genutils=0.2.0=py_1 +# # - jasper=1.900.1=h07fcdf6_1006 +# # - jpeg=9c=h14c3975_1001 +# # - jsoncpp=1.8.4=hc9558a2_1001 +# # - kiwisolver=1.1.0=py27hc9558a2_0 +# # - krb5=1.16.3=h05b26f9_1001 +# # - lame=3.100=h14c3975_1001 +# # - libblas=3.8.0=11_openblas +# # - libcblas=3.8.0=11_openblas +# # - libcurl=7.65.3=hda55be3_0 +# # - libedit=3.1.20170329=hf8c457e_1001 +# # - libffi=3.2.1=he1b5a44_1006 +# # - libgcc-ng=9.1.0=hdf63c60_0 +# # - libgfortran-ng=7.3.0=hdf63c60_0 +# # - libiconv=1.15=h516909a_1005 +# # - liblapack=3.8.0=11_openblas +# # - liblapacke=3.8.0=11_openblas +# # - libnetcdf=4.6.2=h303dfb8_1003 +# # - libopenblas=0.3.6=h5a2b251_1 +# # - libpng=1.6.37=hed695b0_0 +# # - libssh2=1.8.2=h22169c7_2 +# # - libstdcxx-ng=9.1.0=hdf63c60_0 +# # - libtiff=4.0.10=h57b8799_1003 +# # - libuuid=2.32.1=h14c3975_1000 +# # - libwebp=1.0.2=h576950b_1 +# # - libxcb=1.13=h14c3975_1002 +# # - libxml2=2.9.9=h13577e0_2 +# # - lz4-c=1.8.3=he1b5a44_1001 +# # - ncurses=6.1=hf484d3e_1002 +# # - nettle=3.4.1=h1bed415_1002 +# # - networkx=2.1=py27_0 +# # - olefile=0.46=py_0 +# # - openblas=0.3.3=h9ac9557_1001 +# # - openh264=1.8.0=hdbcaa40_1000 +# # - openssl=1.1.1c=h516909a_0 +# # - pathlib2=2.3.4=py27_0 +# # - pcre=8.41=hf484d3e_1003 +# # - pexpect=4.7.0=py27_0 +# # - pickleshare=0.7.5=py27_1000 +# # - pixman=0.38.0=h516909a_1003 +# # - ply=3.11=py_1 +# # - prompt_toolkit=1.0.15=py_1 +# # - pthread-stubs=0.4=h14c3975_1001 +# # - ptyprocess=0.6.0=py_1001 +# # - pycparser=2.19=py27_1 +# # - pyface=6.1.2=py_0 +# # - pygments=2.4.2=py_0 +# # - pynacl=1.3.0=py27h14c3975_1000 +# # - pyparsing=2.4.2=py_0 +# # - pyqt=5.9.2=py27hcca6a23_4 +# # - pyserial=3.4=py_2 +# # - python-dateutil=2.8.0=py_0 +# # - pytz=2019.2=py_0 +# # - pywavelets=1.0.3=py27hd352d35_1 +# # - qt=5.9.7=h52cfd70_2 +# # - qtpy=1.9.0=py_0 +# # - readline=8.0=hf8c457e_0 +# # - scandir=1.10.0=py27h14c3975_0 +# # - setuptools=41.2.0=py27_0 +# # - simplegeneric=0.8.1=py_1 +# # - singledispatch=3.4.0.3=py27_1000 +# # - sip=4.19.8=py27hf484d3e_1000 +# # - six=1.12.0=py27_1000 +# # - soupsieve=1.9.3=py27_0 +# # - sqlite=3.29.0=hcee41ef_1 +# # - subprocess32=3.5.4=py27h516909a_0 +# # - tbb=2019.8=hc9558a2_0 +# # - tk=8.6.9=hed695b0_1003 +# # - toolz=0.10.0=py_0 +# # - traitlets=4.3.2=py27_1000 +# # - traitsui=6.1.3=py_0 +# # - wcwidth=0.1.7=py_1 +# # - wheel=0.33.6=py27_0 +# # - x264=1!152.20180806=h14c3975_0 +# # - xorg-kbproto=1.0.7=h14c3975_1002 +# # - xorg-libice=1.0.10=h516909a_0 +# # - xorg-libsm=1.2.3=h84519dc_1000 +# # - xorg-libx11=1.6.8=h516909a_0 +# # - xorg-libxau=1.0.9=h14c3975_0 +# # - xorg-libxdmcp=1.1.3=h516909a_0 +# # - xorg-libxext=1.3.4=h516909a_0 +# # - xorg-libxrender=0.9.10=h516909a_1002 +# # - xorg-libxt=1.2.0=h516909a_0 +# # - xorg-renderproto=0.11.1=h14c3975_1002 +# # - xorg-xextproto=7.3.0=h14c3975_1002 +# # - xorg-xproto=7.0.31=h14c3975_1007 +# # - xz=5.2.4=h14c3975_1001 +# # - zlib=1.2.11=h516909a_1006 +# # - zstd=1.4.0=h3b9ef0a_0 +# - pip: +# - pymap3d==1.2.4 +# - git+git://github.com/enthought/traits-enaml.git@update-data-frame-table +# diff --git a/docs/source/install.rst b/docs/source/install.rst index 6c44e60..8f845b2 100644 --- a/docs/source/install.rst +++ b/docs/source/install.rst @@ -11,13 +11,13 @@ Installation The ``CameraNetwork`` system is made of three logical parts: -#. *Server*: The camera unit. The server performs the actual measuremetns. +#. *Server*: The camera unit. The server performs the actual measurements. #. *Client*: A program that enables remote control of servers. #. *Proxy*: A program that bridges and manages the communication between the *Servers* and *Clients*. There can be multiple *Servers* and *Clients* but only one *proxy*. -The ``CameraNetwork`` pacakge contains the code for both the *Server*, *Client* and *Proxy* subsystems. +The ``CameraNetwork`` package contains the code for both the *Server*, *Client* and *Proxy* subsystems. This simplifies the deployment and enables code reuse. The installation procedures is similar for the three components but differs due to the different platforms. From 945e9e8519216d2bd8a75afa6e650367d8f7ee88 Mon Sep 17 00:00:00 2001 From: Addalin Date: Sun, 6 Oct 2019 12:46:50 +0300 Subject: [PATCH 37/90] Typo fixes --- CameraNetwork/image_utils.py | 2 +- scripts/clean_memory.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CameraNetwork/image_utils.py b/CameraNetwork/image_utils.py index 3ba93f3..8b57d7b 100644 --- a/CameraNetwork/image_utils.py +++ b/CameraNetwork/image_utils.py @@ -270,7 +270,7 @@ def undistortDirections(self, distorted): class Normalization(object): """Normalized Image Class - This class encapsulates the conversion between caputered image and + This class encapsulates the conversion between captured image and the normalized image. """ diff --git a/scripts/clean_memory.py b/scripts/clean_memory.py index 6e33afa..1a56580 100755 --- a/scripts/clean_memory.py +++ b/scripts/clean_memory.py @@ -37,7 +37,7 @@ """ Clean memory of the odroid. -The script moves cpatured date to a backup folder. To remove +The script moves captured date to a backup folder. To remove the backup folder (and clear the memory) use the ``--delete`` flag. """ From 238d5a72d815b6358f3b186694641fed0089b20c Mon Sep 17 00:00:00 2001 From: Adi Vainiger Date: Sun, 6 Oct 2019 12:48:08 +0300 Subject: [PATCH 38/90] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 38 +++++++++++++++++++++++ .github/ISSUE_TEMPLATE/feature_request.md | 20 ++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..dd84ea7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,38 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: '' +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Desktop (please complete the following information):** + - OS: [e.g. iOS] + - Browser [e.g. chrome, safari] + - Version [e.g. 22] + +**Smartphone (please complete the following information):** + - Device: [e.g. iPhone6] + - OS: [e.g. iOS8.1] + - Browser [e.g. stock browser, safari] + - Version [e.g. 22] + +**Additional context** +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..bbcbbe7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,20 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: '' +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. From 060ae561a12a5d621146c81782fb6dc46301cc1a Mon Sep 17 00:00:00 2001 From: Shubi Date: Mon, 7 Oct 2019 13:22:55 +0300 Subject: [PATCH 39/90] docs (Data structure) WIP --- CameraNetwork/controller.py | 4 +--- CameraNetwork/global_settings.py | 8 ++++---- CameraNetwork/server.py | 6 ++---- CameraNetwork/utils.py | 8 +++----- docs/source/images/img_data_sample.png | Bin 0 -> 137301 bytes docs/source/usage.rst | 26 +++++++++++++++++++++++++ 6 files changed, 36 insertions(+), 16 deletions(-) create mode 100644 docs/source/images/img_data_sample.png diff --git a/CameraNetwork/controller.py b/CameraNetwork/controller.py index 5c5a43a..dd9e443 100644 --- a/CameraNetwork/controller.py +++ b/CameraNetwork/controller.py @@ -1586,9 +1586,7 @@ def handle_loop(self, capture_settings, frames_num, hdr_mode, img_data): # # Capture the array. # - img_array, exposure_us, gain_db = self.safe_capture( - capture_settings, frames_num - ) + img_array, exposure_us, gain_db = self.safe_capture(capture_settings, frames_num) # # update image data object. diff --git a/CameraNetwork/global_settings.py b/CameraNetwork/global_settings.py index ae554e4..3961d85 100644 --- a/CameraNetwork/global_settings.py +++ b/CameraNetwork/global_settings.py @@ -220,8 +220,8 @@ UPLOAD_JPG_FILE: False, UPLOAD_MAT_FILE: False, DAY_SETTINGS: { - LOOP_DELAY: 300, - IMAGE_EXPOSURE: 50, + LOOP_DELAY: 300, # [sec] + IMAGE_EXPOSURE: 50, # [usec] IMAGE_GAIN: 0, GAIN_BOOST: False, FRAMES_NUM: 5, @@ -229,8 +229,8 @@ HDR_MODE: 4 }, NIGHT_SETTINGS: { - LOOP_DELAY: 1800, - IMAGE_EXPOSURE: 8000000, + LOOP_DELAY: 1800, # [sec] + IMAGE_EXPOSURE: 8000000, # [usec] IMAGE_GAIN: 0, GAIN_BOOST: True, FRAMES_NUM: 1, diff --git a/CameraNetwork/server.py b/CameraNetwork/server.py index 23076e8..8761ce1 100644 --- a/CameraNetwork/server.py +++ b/CameraNetwork/server.py @@ -509,7 +509,7 @@ def loop_timer(self): # Store time here so that hopefully it will be as synchronized # as possible. # - name_time=datetime.utcnow() + name_time = datetime.utcnow() # # Select capture settings according day night. @@ -548,9 +548,7 @@ def loop_timer(self): # capture_delay = max(1, capture_settings[gs.LOOP_DELAY]) - next_capture_time = ( - int(time.time() / capture_delay) + 1 - ) * capture_delay - time.time() + next_capture_time = (int(time.time() / capture_delay) + 1) * capture_delay - time.time() nxt = gen.sleep(next_capture_time) diff --git a/CameraNetwork/utils.py b/CameraNetwork/utils.py index 447a89f..bc48732 100755 --- a/CameraNetwork/utils.py +++ b/CameraNetwork/utils.py @@ -240,15 +240,13 @@ def upload_file_to_proxy( return scp_proc -def save_camera_data( - general_settings_path, - capture_settings_path, - camera_settings=None, - capture_settings=None): +def save_camera_data(general_settings_path, capture_settings_path, + camera_settings=None, capture_settings=None): if camera_settings is not None: with open(general_settings_path, 'wb') as f: json.dump(camera_settings, f, sort_keys=True, indent=4, separators=(',', ': ')) + if capture_settings is not None: with open(capture_settings_path, 'wb') as f: json.dump(capture_settings, f, sort_keys=True, indent=4, separators=(',', ': ')) diff --git a/docs/source/images/img_data_sample.png b/docs/source/images/img_data_sample.png new file mode 100644 index 0000000000000000000000000000000000000000..544447ffe751945a75e903914e88497e9d364f98 GIT binary patch literal 137301 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 to flash image onto the SD card +Data Structures +=============== +When looking at a specific camera, under `captured_images`, +for each that the camera recorded a folder `<%Y-%M-%D>` is created. +Inside, the images are stored as `.mat` files. In addition there is a thumbnail `.jpg` version, add metadata as `.pkl`. +The name is `utctime_date+exact time`. +The `.pkl` file stores the following data:: + + img = pd.read_pickle('/media/shubi/rootfs/home/odroid/captured_images/2019_10_02/1570011900.0_2019_10_02_10_25_00_3.pkl') + +.. image:: images/img_data_sample.png + +In addition, one `database.pkl` is created and stored per day:: + + database = pd.read_pickle('/media/shubi/rootfs/home/odroid/captured_images/2019_10_02/database.pkl') + database.head() + + Time hdr path longitude latitude altitude serial_num + 2019-10-02 00:00:00 0 /home/odroid/captured_images/2019_10_02/1569974400.05_2019_10_02_00_00_00_0.mat 35.024963 32.775776 229 4103098529 + 2019-10-02 00:30:00 0 /home/odroid/captured_images/2019_10_02/1569976200.05_2019_10_02_00_30_00_0.mat 35.024963 32.775776 229 4103098529 + 2019-10-02 01:00:00 0 /home/odroid/captured_images/2019_10_02/1569978000.05_2019_10_02_01_00_00_0.mat 35.024963 32.775776 229 4103098529 + 2019-10-02 01:30:00 0 /home/odroid/captured_images/2019_10_02/1569979800.05_2019_10_02_01_30_00_0.mat 35.024963 32.775776 229 4103098529 + 2019-10-02 08:48:03 0 /home/odroid/captured_images/2019_10_02/1570006083.33_2019_10_02_08_48_03_0.mat 35.024963 32.775776 229 4103098529 + + + Analyzing Results ================= From 549301a354b1bf6f36578b85cb5eea0efe19d87e Mon Sep 17 00:00:00 2001 From: Shubi Date: Mon, 7 Oct 2019 13:52:55 +0300 Subject: [PATCH 40/90] Docs - added image acquisition flow --- docs/source/usage.rst | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/docs/source/usage.rst b/docs/source/usage.rst index a82946c..9477353 100644 --- a/docs/source/usage.rst +++ b/docs/source/usage.rst @@ -102,6 +102,15 @@ Noticable stuff */proxy_logs/cameralog__proxy.txt* is a log. Mainly shows Heartbeats from connected cameras and notification of message transmissions to/from the client. +Others +====== + +Image Acquisition flow +---------------------- +On Odroid: rc.local --> main(start_server.py) --> start(server.py).278 --> +loop_timer(server.py) --> handle_loop(controller.py) --> safe_capture(controller.py) +--> IDSCamera.capture (cameras.py) + Useful commands --------------- - ``ps -ef | grep python`` to view running python processes (should see start_proxy.py!) @@ -116,20 +125,20 @@ Useful commands - `etcher `_ to flash image onto the SD card Data Structures -=============== +--------------- When looking at a specific camera, under `captured_images`, for each that the camera recorded a folder `<%Y-%M-%D>` is created. Inside, the images are stored as `.mat` files. In addition there is a thumbnail `.jpg` version, add metadata as `.pkl`. The name is `utctime_date+exact time`. The `.pkl` file stores the following data:: - img = pd.read_pickle('/media/shubi/rootfs/home/odroid/captured_images/2019_10_02/1570011900.0_2019_10_02_10_25_00_3.pkl') + img = pd.read_pickle('~/captured_images/2019_10_02/1570011900.0_2019_10_02_10_25_00_3.pkl') .. image:: images/img_data_sample.png In addition, one `database.pkl` is created and stored per day:: - database = pd.read_pickle('/media/shubi/rootfs/home/odroid/captured_images/2019_10_02/database.pkl') + database = pd.read_pickle('~/captured_images/2019_10_02/database.pkl') database.head() Time hdr path longitude latitude altitude serial_num @@ -143,7 +152,7 @@ In addition, one `database.pkl` is created and stored per day:: Analyzing Results -================= +----------------- On Client PC:: cd /cameranetwork/scripts_client @@ -157,9 +166,9 @@ On Client PC:: workflow + data structure: -#. Run ``python start_local.py -d /home/shubi/Desktop/experiment_23_09_2019`` in the background +#. Run ``python start_local.py -d ~/experiment_23_09_2019`` in the background where `experiment_date` is a folder containing `cam_ID` folder for each camera involved. -Each `cam_ID` consists of +Each `cam_ID` should consist of #. `captured_images` folder which stores inside a folder with images(.jpg, .mat & .pkl versions) and database.pkl for each day that the camera recorded. #. `dark_images` folder From 3e0092e17fd18ce6502e3208ceed0618ee8dfba8 Mon Sep 17 00:00:00 2001 From: Shubi Date: Thu, 10 Oct 2019 10:44:03 +0300 Subject: [PATCH 41/90] Added reboot to log --- CameraNetwork/controller.py | 2 +- scripts/start_server.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CameraNetwork/controller.py b/CameraNetwork/controller.py index dd9e443..a1b1603 100644 --- a/CameraNetwork/controller.py +++ b/CameraNetwork/controller.py @@ -532,7 +532,7 @@ def safe_capture(self, settings, frames_num=1, self.start_camera() except Exception as e: logging.exception( - 'The camera failed restarting. Reboot.' + 'The camera failed restarting. Rebooting.' ) logging.shutdown() time.sleep(120) diff --git a/scripts/start_server.py b/scripts/start_server.py index 7646630..fd67e12 100755 --- a/scripts/start_server.py +++ b/scripts/start_server.py @@ -146,7 +146,7 @@ def main(): # I delay the reboot so that the tunnel will stay open and # enable debugging. # - logging.exception('Unkown error:\n{}'.format(repr(e))) + logging.exception('Rebooting. Unkown error:\n{}'.format(repr(e))) logging.shutdown() time.sleep(120) os.system('sudo reboot') @@ -186,7 +186,7 @@ def main(): # I delay the reboot so that the tunnel will stay open and # enable debugging. # - logging.exception('Unkown error:\n{}'.format(repr(e))) + logging.exception('Rebooting. Unkown error:\n{}'.format(repr(e))) logging.shutdown() time.sleep(120) os.system('sudo reboot') From 4f6a0b01111725799e6796dbf206f624a99c231b Mon Sep 17 00:00:00 2001 From: Shubi Date: Thu, 10 Oct 2019 10:55:36 +0300 Subject: [PATCH 42/90] forcing sudo reboot. References #10 --- CameraNetwork/server.py | 3 ++- scripts/start_server.py | 16 ++++++++++------ scripts/start_tunnel.py | 8 +++++--- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/CameraNetwork/server.py b/CameraNetwork/server.py index 8761ce1..a90f9b6 100644 --- a/CameraNetwork/server.py +++ b/CameraNetwork/server.py @@ -1353,4 +1353,5 @@ def handle_reboot(self): logging.info("Performing reboot") logging.shutdown() - os.system('sudo reboot') + # TODO Long term fix + os.system('sync; sudo reboot -f') # Changed from 'sudo reboot', workaround for reboot hanging diff --git a/scripts/start_server.py b/scripts/start_server.py index fd67e12..a85f5e4 100755 --- a/scripts/start_server.py +++ b/scripts/start_server.py @@ -35,8 +35,8 @@ ## OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ## ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.## """ -This script statrts the camera activity. -Should be run at startup of the raspberry Pi. +This script starts the camera activity. +Should be run at startup of the raspberry Pi / Odroid XU4. """ import argparse @@ -138,7 +138,8 @@ def main(): logging.exception('Failed starting the camera. Rebooting.') logging.shutdown() time.sleep(120) - os.system('sudo reboot') + # TODO Long term fix + os.system('sync; sudo reboot -f') # Changed from 'sudo reboot', workaround for reboot hanging except Exception as e: # # Failed starting the camera, might be some USB problem. @@ -149,7 +150,8 @@ def main(): logging.exception('Rebooting. Unkown error:\n{}'.format(repr(e))) logging.shutdown() time.sleep(120) - os.system('sudo reboot') + # TODO Long term fix + os.system('sync; sudo reboot -f') # Changed from 'sudo reboot', workaround for reboot hanging if __name__ == '__main__': @@ -178,7 +180,8 @@ def main(): logging.exception('Failed starting the camera. Rebooting.') logging.shutdown() time.sleep(120) - os.system('sudo reboot') + # TODO Long term fix + os.system('sync; sudo reboot -f') # Changed from 'sudo reboot', workaround for reboot hanging except Exception as e: # # Failed starting the camera, might be some USB problem. @@ -189,4 +192,5 @@ def main(): logging.exception('Rebooting. Unkown error:\n{}'.format(repr(e))) logging.shutdown() time.sleep(120) - os.system('sudo reboot') + # TODO Long term fix + os.system('sync; sudo reboot -f') # Changed from 'sudo reboot', workaround for reboot hanging diff --git a/scripts/start_tunnel.py b/scripts/start_tunnel.py index 8d150ab..b5cc593 100644 --- a/scripts/start_tunnel.py +++ b/scripts/start_tunnel.py @@ -59,7 +59,7 @@ def main(): help='Skip starting the default tunnel') parser.add_argument( '--log_level', - default='INFO', + default='DEBUG', help='Set the log level (possible values: info, debug, ...)') args = parser.parse_args() @@ -109,7 +109,8 @@ def main(): if failures_cnt > camera_settings[gs.INTERNET_FAILURE_THRESH]: logging.error('Failed to connect 3G modem. Will reboot...') - os.system('sudo reboot') + # TODO Long term fix + os.system('sync; sudo reboot -f') # Changed from 'sudo reboot', workaround for reboot hanging logging.error( 'Failed to retrieve proxy parameters. will sleep and try again later.') @@ -148,7 +149,8 @@ def main(): logging.debug('Internet watchdog: failure number: %d.' % failures_cnt) if failures_cnt > camera_settings[gs.INTERNET_FAILURE_THRESH]: logging.error('Failed to connect 3G modem. Will reboot...') - os.system('sudo reboot') + # TODO Long term fix + os.system('sync; sudo reboot -f') # Changed from 'sudo reboot', workaround for reboot hanging else: logging.debug('Internet watchdog: succeed.') failures_cnt = 0 From b46ee958d2b63d5a7202c793c338e1f8663563c5 Mon Sep 17 00:00:00 2001 From: Shubi Date: Thu, 10 Oct 2019 10:57:11 +0300 Subject: [PATCH 43/90] More flexible internet failure handling --- CameraNetwork/global_settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CameraNetwork/global_settings.py b/CameraNetwork/global_settings.py index 3961d85..ecc9fe5 100644 --- a/CameraNetwork/global_settings.py +++ b/CameraNetwork/global_settings.py @@ -57,7 +57,7 @@ # Internet watchdog # WD_TEST_INTERNET_PERIOD = 120 -WD_INTERNET_FAILURE_THRESH = 0 +WD_INTERNET_FAILURE_THRESH = 2 # Changed from 0 DEFAULT_PROXY_PARAMS = """ { From 5063258e666cb558c3bb6dd364d0f05bef528916 Mon Sep 17 00:00:00 2001 From: Shubi Date: Thu, 17 Oct 2019 13:59:58 +0300 Subject: [PATCH 44/90] Docs - Camera Field Deployment --- docs/source/usage.rst | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/docs/source/usage.rst b/docs/source/usage.rst index 9477353..3437800 100644 --- a/docs/source/usage.rst +++ b/docs/source/usage.rst @@ -47,10 +47,32 @@ in order to clean the camera len dome. Period Refers to activation time in secon Camera (server) =============== + + +Field Deployment +---------- + +#. Verify Case Screws fully tightened. + +#. Verify plugs fully screwed. + +#. Verify sprinklers are pointing in the right direction + +#. Verify camera alignment with north-south + +Code +---- + +After changing any global_setting.py parameter, need to run setup_camera.py again. + +Connection +---------- + There are options to connect to the camera Serial connection ------------------ +````````````````` + On the Client's PC, from cameranetwork folder: ``bash scripts/listusb.sh`` to list all connected usb devices and to find the relevant one. @@ -65,12 +87,12 @@ Should be /dev/tty/USB0 (replace '0' with relevant number) #. Enter odroid password SSH ---- +``` #. Via SSH GUI ---- +``` #. Via GUI (as mentioned in the client section) From 46dd4489f73d807a0b277a02f8fe57da597b28d4 Mon Sep 17 00:00:00 2001 From: Shubi Date: Tue, 22 Oct 2019 12:31:15 +0300 Subject: [PATCH 45/90] More indepth `start_proxy` docs --- docs/source/usage.rst | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/docs/source/usage.rst b/docs/source/usage.rst index 3437800..a974aaf 100644 --- a/docs/source/usage.rst +++ b/docs/source/usage.rst @@ -50,7 +50,7 @@ Camera (server) Field Deployment ----------- +---------------- #. Verify Case Screws fully tightened. @@ -113,7 +113,14 @@ To connect to the proxy If this is the initial setup of the proxy server:: - python ./code/cameranetwork/scripts_proxy/start_proxy.py --log_level debug + screen _S session_name + python ./code/cameranetwork/scripts_proxy/start_proxy.py --log_level info + +Should be run from the root of the server, otherwise the logs would be put in a different location each time. +Also, make sure to run it inside a screen. + +- Press *ctrl+a* then *ctrl+d* to detach the *start_proxy.py* from the terminal +- ``screen -ls`` to see detached processes. then ``screen -r `` to bring it back. @@ -136,8 +143,6 @@ loop_timer(server.py) --> handle_loop(controller.py) --> safe_capture(controller Useful commands --------------- - ``ps -ef | grep python`` to view running python processes (should see start_proxy.py!) -- Press ctrl+a then ctrl+d to detach the *start_proxy.py* from the terminal -- ``screen -ls`` to see detached processes. then``screen -r `` to bring it back. - ``sudo netstat -a -nlp -o | grep 198`` to see status of relevant ports - `adding ssh key to ssh-agent `_. - `How to use scp to transfer files `_. From 6092162d1ff008a716c558c511854403cdb7ea87 Mon Sep 17 00:00:00 2001 From: Shubi Date: Tue, 22 Oct 2019 12:33:15 +0300 Subject: [PATCH 46/90] References #14 --- docs/source/usage.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/usage.rst b/docs/source/usage.rst index a974aaf..d012612 100644 --- a/docs/source/usage.rst +++ b/docs/source/usage.rst @@ -117,7 +117,7 @@ If this is the initial setup of the proxy server:: python ./code/cameranetwork/scripts_proxy/start_proxy.py --log_level info Should be run from the root of the server, otherwise the logs would be put in a different location each time. -Also, make sure to run it inside a screen. +Screen is used to be able to detach and retrieve when ever needed. - Press *ctrl+a* then *ctrl+d* to detach the *start_proxy.py* from the terminal - ``screen -ls`` to see detached processes. then ``screen -r `` to bring it back. From 30d96c8292c610dcecda42232dbf10ebcb044057 Mon Sep 17 00:00:00 2001 From: Shubi Date: Tue, 22 Oct 2019 17:54:47 +0300 Subject: [PATCH 47/90] Related to #6. Need to check if fixes --- CameraNetwork/gui/enaml_files/docks.enaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CameraNetwork/gui/enaml_files/docks.enaml b/CameraNetwork/gui/enaml_files/docks.enaml index 7f1c2dc..f16b25f 100644 --- a/CameraNetwork/gui/enaml_files/docks.enaml +++ b/CameraNetwork/gui/enaml_files/docks.enaml @@ -14,7 +14,8 @@ from CameraNetwork.gui.image_analysis import ImageAnalysis from CameraNetwork.gui.mayavi_canvas import MayaviCanvas from .extra import GradientButtonSheet -from .popups import ImageDataPopup +from .popups import (ImageDataPopup, MsgDataPopup) +#from .popups import ImageDataPopup TODO Check if fixes issue #6 from .server_pages import (MainControlsPage, ImageControlPage, SeekControlPage, SunshaderControlPage, SprinklerControlPage, IntrinsicControlPage, ExtrinsicControlPage, RadiometricControlPage) From 139ffb8858a5a9f05b16446d2770c8caba9621f3 Mon Sep 17 00:00:00 2001 From: Shubi Date: Tue, 22 Oct 2019 19:24:36 +0300 Subject: [PATCH 48/90] docs - seeing (un)registration of server --- docs/source/usage.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/source/usage.rst b/docs/source/usage.rst index d012612..4fed687 100644 --- a/docs/source/usage.rst +++ b/docs/source/usage.rst @@ -150,6 +150,9 @@ Useful commands - gparted for microsd / eMMC partitioning & direct copying. - ``sudo dd if=/dev/sdb of=~/xu4_lab.img status=progress`` to create an image of odroid - `etcher `_ to flash image onto the SD card +- ``grep -a -e "Unregistering worker 236" -e "Registering new worker 236" cameralog_190929_092735_proxy.txt`` + to see connections and disconnections. replace log.txt with * for all logs in folder. + Data Structures --------------- From f8e3497ba9aacf93e84782599fedca85e3990ab5 Mon Sep 17 00:00:00 2001 From: Shubi Date: Sun, 3 Nov 2019 09:25:33 +0200 Subject: [PATCH 49/90] Closes #8. require pymap3d=1.1.1 and pandas=0.19.2. Closes #28 --- docs/source/install.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/source/install.rst b/docs/source/install.rst index 8f845b2..14afc21 100644 --- a/docs/source/install.rst +++ b/docs/source/install.rst @@ -46,7 +46,7 @@ Installation - Client The first line of sets the new environment's name (currently *cn_client*) - WINDOWS:: + WINDOWS (exact procedure):: # Create new environment with name: cn_client @@ -58,14 +58,14 @@ Installation - Client conda config --env --append channels conda-forge - conda install python=2.7 pip paramiko cython tornado=4.5.3 futures numpy scipy matplotlib beautifulsoup4 scikit-learn scikit-image pyside requests ephem pandas ipython pyfirmata joblib pyzmq enaml pillow traits pyqtgraph pyopengl vtk mayavi opencv git mercurial + conda install python=2.7 pip paramiko cython tornado=4.5.3 futures numpy scipy matplotlib beautifulsoup4 scikit-learn scikit-image pyside requests ephem pandas=0.19.2 ipython pyfirmata joblib pyzmq enaml pillow traits pyqtgraph pyopengl vtk mayavi opencv git mercurial # pip install pymap3d, traits-enaml and pyfisheye # Note, this installs pyfisheye without cloning it. For development of pyfisheye clone and install manually from https://bitbucket.org/amitibo/pyfisheye (TODO: migrate pyfisheye codebase to github) - python -m pip install pymap3d==1.8.1 git+https://github.com/enthought/traits-enaml.git@update-data-frame-table hg+https://bitbucket.org/amitibo/pyfisheye + python -m pip install pymap3d==1.1.1 git+https://github.com/enthought/traits-enaml.git@update-data-frame-table hg+https://bitbucket.org/amitibo/pyfisheye From db7f6e9bbae7a096a2bb91dd4053b25de1428a1e Mon Sep 17 00:00:00 2001 From: Shubi Date: Sun, 3 Nov 2019 09:37:42 +0200 Subject: [PATCH 50/90] Return map creation --- CameraNetwork/gui/enaml_files/docks.enaml | 3 +-- CameraNetwork/mdp/worker.py | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/CameraNetwork/gui/enaml_files/docks.enaml b/CameraNetwork/gui/enaml_files/docks.enaml index f16b25f..552bb42 100644 --- a/CameraNetwork/gui/enaml_files/docks.enaml +++ b/CameraNetwork/gui/enaml_files/docks.enaml @@ -462,12 +462,11 @@ enamldef TimesView(DockItem): PushButton: seek_pb: text = 'Seek' clicked :: -# main.create_map() TODO Uncomment + main.create_map() index = times.img_index main.broadcast_message( gs.MSG_TYPE_SEEK, kwds=dict( -# seek_time="2017-04-06 12:00:00", seek_time=index[0], hdr_index=-1 if HDR_cb.checked else index[1], normalize=True, diff --git a/CameraNetwork/mdp/worker.py b/CameraNetwork/mdp/worker.py index 70b7934..b2d8cf7 100644 --- a/CameraNetwork/mdp/worker.py +++ b/CameraNetwork/mdp/worker.py @@ -158,7 +158,7 @@ def _tick(self): # logging.debug('Worker lost connection') self.shutdown() - + logging.debug() # # try to recreate the connection # From abb5cfb456ddda508a48f649004bb90303796e4f Mon Sep 17 00:00:00 2001 From: Shubi Date: Sun, 3 Nov 2019 10:42:59 +0200 Subject: [PATCH 51/90] update data_frame_table --- CameraNetwork/gui/data_frame_table.py | 38 +++++++++++++++++++-------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/CameraNetwork/gui/data_frame_table.py b/CameraNetwork/gui/data_frame_table.py index edf933e..39b3998 100644 --- a/CameraNetwork/gui/data_frame_table.py +++ b/CameraNetwork/gui/data_frame_table.py @@ -33,7 +33,7 @@ ## LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE ## OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ## ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.## -# ---------------------------------------------------------------------------- +#---------------------------------------------------------------------------- # # Copyright (c) 2014, Enthought, Inc. # All rights reserved. @@ -45,7 +45,7 @@ # # Thanks for using Enthought open source! # -# ---------------------------------------------------------------------------- +#---------------------------------------------------------------------------- import numpy as np from pandas import DataFrame, datetime @@ -53,14 +53,17 @@ from enaml.core.declarative import d_ from enaml.widgets.api import RawWidget from enaml.qt.QtCore import QAbstractTableModel, QModelIndex, Qt -from enaml.qt.QtGui import ( - QTableView, QHeaderView, QAbstractItemView, QFontMetrics) - +# fixing import from enaml.qt.QtGui. During the transision from Qt4 to Qt5: QtGui was split into QtGui and QtWidgets +#from enaml.qt.QtGui import ( + #QTableView, QHeaderView, QAbstractItemView, QFontMetrics) # ADI - fixing import of QTableView in Qt5. This line was relevant to Qt4 +from enaml.qt.QtGui import QFontMetrics # ADI - preserving include of QFontMetrics in Qt5 +from enaml.qt.QtWidgets import (QTableView,QHeaderView, QAbstractItemView) # ADI - fixing import of (QTableView,QHeaderView, QAbstractItemView) in Qt5 from traits_enaml.utils import get_unicode_string, format_value class ColumnCache(object): """ Pull out a view for each column for quick element access. + """ def __init__(self, data_frame): @@ -72,6 +75,7 @@ def __getitem__(self, ij): def reset(self, new_data_frame=None): """ Reset the cache. + """ if new_data_frame is not None: self.data_frame = new_data_frame @@ -165,12 +169,13 @@ def sort(self, column, order=Qt.AscendingOrder): def _emit_all_data_changed(self): """ Emit signals to note that all data has changed, e.g. by sorting. + """ self.dataChanged.emit( self.index(0, 0), self.index( len(self.data_frame.index) - 1, - len(self.data_frame.columns) - 1), ) + len(self.data_frame.columns) - 1),) self.headerDataChanged.emit( Qt.Vertical, 0, len(self.data_frame.index) - 1) @@ -197,6 +202,7 @@ def __init__(self, df_model, parent=None, **kwds): @classmethod def from_data_frame(cls, df, **kwds): """ Instantiate a DataFrameTableView directly from a DataFrame. + """ df_model = QDataFrameModel(df) self = cls(df_model, **kwds) @@ -208,7 +214,7 @@ def _setup_sorting(self): def _setup_selection(self): self.selection_model = self.selectionModel() - # self.selection_model.currentRowChanged.connect(self._current_row_changed) + #self.selection_model.currentRowChanged.connect(self._current_row_changed) self.setSelectionMode(QAbstractItemView.ContiguousSelection) self.setSelectionBehavior(QAbstractItemView.SelectItems) @@ -224,14 +230,23 @@ def _setup_headers(self): max_width = fmetrics.width(u" {0} ".format( unicode(self.df_model.rowCount()))) self.vheader.setMinimumWidth(max_width) - self.vheader.setClickable(True) + + # self.vheader.setClickable(True) # ADI - this comment is relevant for Qt 4 + self.vheader.setSectionsClickable(True) # ADI - this is relevant for Qt > 4 + self.vheader.setStretchLastSection(False) - self.vheader.setResizeMode(QHeaderView.Fixed) + + # self.vheader.setResizeMode(QHeaderView.Fixed) # ADI - this comment is relevant for Qt 4 + self.vheader.setSectionResizeMode(QHeaderView.Fixed) # ADI - this is relevant for Qt > 4 self.hheader = self.horizontalHeader() self.hheader.setStretchLastSection(False) - self.hheader.setClickable(True) - self.hheader.setMovable(True) + + # self.vheader.setClickable(True) # ADI - this comment is relevant for Qt 4 + self.vheader.setSectionsClickable(True) # ADI - this is relevant for Qt > 4 + + # self.hheader.setMovable(True) # ADI - this comment is relevant for Qt 4 + self.hheader.setSectionsMovable(True) # ADI - this is relevant for Qt > 4 def _setup_style(self): self.setWordWrap(False) @@ -279,5 +294,6 @@ def _data_frame_changed(self, change): table.setModel(df_model) def current_changed(self, current_item, previous_item): + self.selected_row = current_item.row() self.selected_index = self.data_frame.index[current_item.row()] From 71f61e58880939d7155489683ed26c41cb106023 Mon Sep 17 00:00:00 2001 From: Shubi Date: Sun, 3 Nov 2019 10:49:31 +0200 Subject: [PATCH 52/90] delete WIP --- CameraNetwork/mdp/worker.py | 1 - 1 file changed, 1 deletion(-) diff --git a/CameraNetwork/mdp/worker.py b/CameraNetwork/mdp/worker.py index b2d8cf7..bde1755 100644 --- a/CameraNetwork/mdp/worker.py +++ b/CameraNetwork/mdp/worker.py @@ -158,7 +158,6 @@ def _tick(self): # logging.debug('Worker lost connection') self.shutdown() - logging.debug() # # try to recreate the connection # From 2c7a337d088154c89f42e23d299a97bacbbea5bb Mon Sep 17 00:00:00 2001 From: addalin Date: Sun, 3 Nov 2019 10:57:09 +0200 Subject: [PATCH 53/90] Typo fixes --- scripts_client/camera_client.py | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts_client/camera_client.py b/scripts_client/camera_client.py index f490c36..aa4d7e5 100644 --- a/scripts_client/camera_client.py +++ b/scripts_client/camera_client.py @@ -38,6 +38,7 @@ A GUI client allows easy access to cameras thier settings and their measurements. """ + from __future__ import division import pickle From 5d3fb76be4b70f189dc3471873a1cbbd2ac605fb Mon Sep 17 00:00:00 2001 From: Shubi Date: Thu, 7 Nov 2019 14:15:08 +0200 Subject: [PATCH 54/90] reindex --- CameraNetwork/gui/main.py | 2 +- meeting_summary_amit_071119.md | 61 ++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 meeting_summary_amit_071119.md diff --git a/CameraNetwork/gui/main.py b/CameraNetwork/gui/main.py index f929765..fd9be91 100644 --- a/CameraNetwork/gui/main.py +++ b/CameraNetwork/gui/main.py @@ -727,7 +727,7 @@ def updateTimes(self, server_id, images_df): if server_id in self.images_df.columns: new_df.drop(server_id, axis=1, inplace=True) new_df = pd.concat((new_df, images_series), axis=1) - new_df = new_df.reindex(sorted(new_df.columns), axis=1) + new_df = new_df.reindex_axis(sorted(new_df.columns), axis=1) # TODO allow also reindex for newer pandas version self.images_df = new_df diff --git a/meeting_summary_amit_071119.md b/meeting_summary_amit_071119.md new file mode 100644 index 0000000..d77a43f --- /dev/null +++ b/meeting_summary_amit_071119.md @@ -0,0 +1,61 @@ + - DLL files - core.so . Just keep what is working ! He used the core.so that was compiled in SIPL, in AWS. Recompilation - could be not trivial. +- Suggesting : use Mitzuba. +- Suggesting to use AWS EC2 . + - Run SHDOM on optimized memory machines (at least 100 GB) .Check compute 2,3 or R . + - Spot instance. + - EFS for file storage (similar to dropbox) not S3. allows multi connection from several instances. + - Ask for grant/discount. + - Names of folders - YYMMDDHHmm(dateTime)_hash/code vesion/commit id + + +- GUI : + + - Map , TODO: ask Vadim where he got it . Amit had to do hand stitching. + - 2 level of cropping : 1) ROI - rectangle to remove irrelevant parts (e.g. if the camera is not seeing fully the reconstructed volume). 2) mask - circle to remove constant obstacles (buildings, trees) , note - do it once when installing/opening the camera . Saved under /data folder. 3) Grabcat - for sunshader (use high valuew e.g. 40-60) , can be seen under "mask" view . + - grid change can be done in export settings. + - use load and save of ROI . possible solution is to open *.pkl that were save and to convert them to a new version of pandas. + - Space carving - the "dilate" is possibly extrude operation. TODO: Check it in the code. + - score of space carving: the first is related (in 2D - inside "image settings"/"view settings" ) to images segmentation of cloud, + the second (in 3D - inside inside "space carving" in the map view) is related to the + probability that a voxel contains cloud. TODO: check it once in the GUI and second in the pyshdom usage. + - Resolution can be controoled in the main view or in view settings. TODO: check that it affects also on the masks, this is for doing upsampling later. + - suggested to image one in 5 min in regular days, in good days every 1 minute. + - radiometric calibration according to fitting with sunphotometer measurments (p.74-78 ). TODO: check this. + - extrinsic calibration - according to sun position and sunshader, do it in a sunny day. (p.69-71). TODO: check this. + - dropbox is legacy. + - GUI intrinsic calibration is legacy (before the gimbal) + - SSH: try to do ssh from camera to proxy once, and then it suppose to save the reverse tunnle properties. + +- SHDOM: we went throught the: camera array retrival.py + - TODO: check the calling to shdom to make sure what are the parameters. should be particles extinction coeeficient, dansity ... need to check + pose and + - mie table - is the SHDOM particle parameters. + - beta is only water particles. + - If the scripts is not for RGB, then it's only Red channles ( they assume the bluew is noiseir) + - shdom is solving the volume seperated to the frequency/channels . and the differences between are the input each + proccess is recoveing (e.g. cross section in blue or red ..) + - It is better to debug procces id = 0 ( The main thread ) + - The RGB runs was using modulo . TODO: Assure the following : each proccess is runinng on a single shannel of a camera. + e.g. if we have 10 cameras, and we want to solve in RGB that we get 30 proccess . + - visibility.pkl - probably space carving . TODO - need to check . + - TODO: learn mpi4py with relating to the scripts. + - SHDOM doesn't care about units,and coordinate system - the input is controlled by us. + - Coordinate system was hard and tough, what is working now - try to follow it. + - modle.particles - in [km] + - layered particles - this is probaly the lidar readings + - subsample - to take several pixels measurments (reducing power of computation) , Amit used 1:2 or 1:4. + TODO: debug to see if this is a flag or number. + - TODO: understand the inverse model and camera model. the inverse model is inharent from "forward model". + - When they included aerosols, that they didn't used space carving. They initiaited the aerosol accoring to lidar readings, and then solving the clouds accordingly. + TODO: Ask Aviad about the mixture sollution he did . Aviad also wrote the gradient of shdom, and added an option to + do optimization phisical propeties, and created the mie table. + - The solution in each voxel is a linear combination of several solutions of the mie table. + + + + + +Ask from amit to send us: +- Code that her saved on EFS +- Cameranetwork notebook +- check history on bitbucket. From 3552f2453f3d42942ae6f90c2245b9ccb7c3dbce Mon Sep 17 00:00:00 2001 From: Shubi Date: Thu, 21 Nov 2019 17:59:16 +0200 Subject: [PATCH 55/90] Closes #50 --- CameraNetwork/controller.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/CameraNetwork/controller.py b/CameraNetwork/controller.py index a1b1603..728220d 100644 --- a/CameraNetwork/controller.py +++ b/CameraNetwork/controller.py @@ -463,8 +463,11 @@ def loadSunMeasurements(self): data.index = data.index.time angles.append(data['sunshader_angle']) - - self.sunshader_angles_df = pd.concat(angles, axis=1, sort=True).mean(axis=1).to_frame(name='angle') + # pandas backwards compatibility + silence sort warning + if pd.__version__ < '0.23.0': + self.sunshader_angles_df = pd.concat(angles, axis=1).mean(axis=1).to_frame(name='angle') + else: + self.sunshader_angles_df = pd.concat(angles, axis=1, sort=True).mean(axis=1).to_frame(name='angle') else: self.sunshader_angles_df = pd.DataFrame(dict(angle=[])) From 7ceda520b899b852458f111e224824fdeedac16a Mon Sep 17 00:00:00 2001 From: Shubi Date: Thu, 21 Nov 2019 18:02:06 +0200 Subject: [PATCH 56/90] Updated Proxy IP --- CameraNetwork/global_settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CameraNetwork/global_settings.py b/CameraNetwork/global_settings.py index ecc9fe5..67bf6ca 100644 --- a/CameraNetwork/global_settings.py +++ b/CameraNetwork/global_settings.py @@ -62,7 +62,7 @@ DEFAULT_PROXY_PARAMS = """ { "autossh_monitor_port": 10000, - "ip": "3.123.49.101", + "ip": "3.123.47.23", "proxy_port": 1980, "client_port": 1981, "hb_port": 1985, From 02f1e7f8c0f7d88b9e603daf7ddb0b6c55a8f237 Mon Sep 17 00:00:00 2001 From: Shubi Date: Thu, 21 Nov 2019 18:17:52 +0200 Subject: [PATCH 57/90] reindex pandas compatibility fix --- CameraNetwork/gui/main.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/CameraNetwork/gui/main.py b/CameraNetwork/gui/main.py index fd9be91..619cf03 100644 --- a/CameraNetwork/gui/main.py +++ b/CameraNetwork/gui/main.py @@ -727,7 +727,12 @@ def updateTimes(self, server_id, images_df): if server_id in self.images_df.columns: new_df.drop(server_id, axis=1, inplace=True) new_df = pd.concat((new_df, images_series), axis=1) - new_df = new_df.reindex_axis(sorted(new_df.columns), axis=1) # TODO allow also reindex for newer pandas version + # Pandas backwards compatibility + if pd.__version__ < '0.21.0': + new_df = new_df.reindex_axis(sorted(new_df.columns), axis=1) + else: + new_df = new_df.reindex(sorted(new_df.columns), axis=1) + self.images_df = new_df From 9c4a18a035aa610d37d76ac7d8765e24051fcefc Mon Sep 17 00:00:00 2001 From: Adi Vainiger Date: Thu, 21 Nov 2019 19:16:00 +0200 Subject: [PATCH 58/90] Delete meeting_summary_amit_071119.md already added to trello --- meeting_summary_amit_071119.md | 61 ---------------------------------- 1 file changed, 61 deletions(-) delete mode 100644 meeting_summary_amit_071119.md diff --git a/meeting_summary_amit_071119.md b/meeting_summary_amit_071119.md deleted file mode 100644 index d77a43f..0000000 --- a/meeting_summary_amit_071119.md +++ /dev/null @@ -1,61 +0,0 @@ - - DLL files - core.so . Just keep what is working ! He used the core.so that was compiled in SIPL, in AWS. Recompilation - could be not trivial. -- Suggesting : use Mitzuba. -- Suggesting to use AWS EC2 . - - Run SHDOM on optimized memory machines (at least 100 GB) .Check compute 2,3 or R . - - Spot instance. - - EFS for file storage (similar to dropbox) not S3. allows multi connection from several instances. - - Ask for grant/discount. - - Names of folders - YYMMDDHHmm(dateTime)_hash/code vesion/commit id - - -- GUI : - - - Map , TODO: ask Vadim where he got it . Amit had to do hand stitching. - - 2 level of cropping : 1) ROI - rectangle to remove irrelevant parts (e.g. if the camera is not seeing fully the reconstructed volume). 2) mask - circle to remove constant obstacles (buildings, trees) , note - do it once when installing/opening the camera . Saved under /data folder. 3) Grabcat - for sunshader (use high valuew e.g. 40-60) , can be seen under "mask" view . - - grid change can be done in export settings. - - use load and save of ROI . possible solution is to open *.pkl that were save and to convert them to a new version of pandas. - - Space carving - the "dilate" is possibly extrude operation. TODO: Check it in the code. - - score of space carving: the first is related (in 2D - inside "image settings"/"view settings" ) to images segmentation of cloud, - the second (in 3D - inside inside "space carving" in the map view) is related to the - probability that a voxel contains cloud. TODO: check it once in the GUI and second in the pyshdom usage. - - Resolution can be controoled in the main view or in view settings. TODO: check that it affects also on the masks, this is for doing upsampling later. - - suggested to image one in 5 min in regular days, in good days every 1 minute. - - radiometric calibration according to fitting with sunphotometer measurments (p.74-78 ). TODO: check this. - - extrinsic calibration - according to sun position and sunshader, do it in a sunny day. (p.69-71). TODO: check this. - - dropbox is legacy. - - GUI intrinsic calibration is legacy (before the gimbal) - - SSH: try to do ssh from camera to proxy once, and then it suppose to save the reverse tunnle properties. - -- SHDOM: we went throught the: camera array retrival.py - - TODO: check the calling to shdom to make sure what are the parameters. should be particles extinction coeeficient, dansity ... need to check - pose and - - mie table - is the SHDOM particle parameters. - - beta is only water particles. - - If the scripts is not for RGB, then it's only Red channles ( they assume the bluew is noiseir) - - shdom is solving the volume seperated to the frequency/channels . and the differences between are the input each - proccess is recoveing (e.g. cross section in blue or red ..) - - It is better to debug procces id = 0 ( The main thread ) - - The RGB runs was using modulo . TODO: Assure the following : each proccess is runinng on a single shannel of a camera. - e.g. if we have 10 cameras, and we want to solve in RGB that we get 30 proccess . - - visibility.pkl - probably space carving . TODO - need to check . - - TODO: learn mpi4py with relating to the scripts. - - SHDOM doesn't care about units,and coordinate system - the input is controlled by us. - - Coordinate system was hard and tough, what is working now - try to follow it. - - modle.particles - in [km] - - layered particles - this is probaly the lidar readings - - subsample - to take several pixels measurments (reducing power of computation) , Amit used 1:2 or 1:4. - TODO: debug to see if this is a flag or number. - - TODO: understand the inverse model and camera model. the inverse model is inharent from "forward model". - - When they included aerosols, that they didn't used space carving. They initiaited the aerosol accoring to lidar readings, and then solving the clouds accordingly. - TODO: Ask Aviad about the mixture sollution he did . Aviad also wrote the gradient of shdom, and added an option to - do optimization phisical propeties, and created the mie table. - - The solution in each voxel is a linear combination of several solutions of the mie table. - - - - - -Ask from amit to send us: -- Code that her saved on EFS -- Cameranetwork notebook -- check history on bitbucket. From dfbbdc7e174c4a9f32dbcafd0ef0fb0f556b01d9 Mon Sep 17 00:00:00 2001 From: addalin Date: Thu, 21 Nov 2019 19:23:40 +0200 Subject: [PATCH 59/90] typos update proxy ip update ROI pickle --- CameraNetwork/controller.py | 3 +- CameraNetwork/global_settings.py | 2 +- CameraNetwork/gui/main.py | 2 +- CameraNetwork/sunphotometer.py | 398 ++++++------- data/ROIS/2017_05_19_10_35_00.pkl | 950 +++++++++++++++--------------- 5 files changed, 694 insertions(+), 661 deletions(-) diff --git a/CameraNetwork/controller.py b/CameraNetwork/controller.py index a1b1603..183135a 100644 --- a/CameraNetwork/controller.py +++ b/CameraNetwork/controller.py @@ -1177,6 +1177,7 @@ def handle_radiometric( def sampleAlmucantarData(self, spm_df, t, camera_df, camera_settings, resolution=301): """Samples almucantar rgb values of some camera at specific time.""" + angles, values = spm.readSunPhotoMeter(spm_df, t) closest_time = spm.findClosestImageTime(camera_df, t, hdr='2') img_datas, img = self.seekImageArray( @@ -1191,7 +1192,7 @@ def sampleAlmucantarData(self, spm_df, t, camera_df, camera_settings, resolution ) almucantar_samples, almucantar_angles, almucantar_coords, \ _, _, _ = spm.sampleImage(img, img_datas[0], almucantar_angles=angles) - + # values- are sunphotometer measurments, almucantar_samples are the corresponding samples on the image plane. return angles, values, almucantar_samples @cmd_callback diff --git a/CameraNetwork/global_settings.py b/CameraNetwork/global_settings.py index ecc9fe5..67bf6ca 100644 --- a/CameraNetwork/global_settings.py +++ b/CameraNetwork/global_settings.py @@ -62,7 +62,7 @@ DEFAULT_PROXY_PARAMS = """ { "autossh_monitor_port": 10000, - "ip": "3.123.49.101", + "ip": "3.123.47.23", "proxy_port": 1980, "client_port": 1981, "hb_port": 1985, diff --git a/CameraNetwork/gui/main.py b/CameraNetwork/gui/main.py index f929765..e705d2e 100644 --- a/CameraNetwork/gui/main.py +++ b/CameraNetwork/gui/main.py @@ -727,7 +727,7 @@ def updateTimes(self, server_id, images_df): if server_id in self.images_df.columns: new_df.drop(server_id, axis=1, inplace=True) new_df = pd.concat((new_df, images_series), axis=1) - new_df = new_df.reindex(sorted(new_df.columns), axis=1) + new_df = new_df.reindex_axis(sorted(new_df.columns), axis=1) self.images_df = new_df diff --git a/CameraNetwork/sunphotometer.py b/CameraNetwork/sunphotometer.py index 78c75f3..5257fcc 100644 --- a/CameraNetwork/sunphotometer.py +++ b/CameraNetwork/sunphotometer.py @@ -1,38 +1,38 @@ -## -## Copyright (C) 2017, Amit Aides, all rights reserved. -## -## This file is part of Camera Network -## (see https://bitbucket.org/amitibo/cameranetwork_git). -## -## Redistribution and use in source and binary forms, with or without modification, -## are permitted provided that the following conditions are met: -## -## 1) The software is provided under the terms of this license strictly for -## academic, non-commercial, not-for-profit purposes. -## 2) Redistributions of source code must retain the above copyright notice, this -## list of conditions (license) and the following disclaimer. -## 3) Redistributions in binary form must reproduce the above copyright notice, -## this list of conditions (license) and the following disclaimer in the -## documentation and/or other materials provided with the distribution. -## 4) The name of the author may not be used to endorse or promote products derived -## from this software without specific prior written permission. -## 5) As this software depends on other libraries, the user must adhere to and keep -## in place any licensing terms of those libraries. -## 6) Any publications arising from the use of this software, including but not -## limited to academic journal and conference publications, technical reports and -## manuals, must cite the following works: -## Dmitry Veikherman, Amit Aides, Yoav Y. Schechner and Aviad Levis, "Clouds in The Cloud" Proc. ACCV, pp. 659-674 (2014). -## -## THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED -## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -## EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -## INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -## BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -## LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -## OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -## ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.## +## +## Copyright (C) 2017, Amit Aides, all rights reserved. +## +## This file is part of Camera Network +## (see https://bitbucket.org/amitibo/cameranetwork_git). +## +## Redistribution and use in source and binary forms, with or without modification, +## are permitted provided that the following conditions are met: +## +## 1) The software is provided under the terms of this license strictly for +## academic, non-commercial, not-for-profit purposes. +## 2) Redistributions of source code must retain the above copyright notice, this +## list of conditions (license) and the following disclaimer. +## 3) Redistributions in binary form must reproduce the above copyright notice, +## this list of conditions (license) and the following disclaimer in the +## documentation and/or other materials provided with the distribution. +## 4) The name of the author may not be used to endorse or promote products derived +## from this software without specific prior written permission. +## 5) As this software depends on other libraries, the user must adhere to and keep +## in place any licensing terms of those libraries. +## 6) Any publications arising from the use of this software, including but not +## limited to academic journal and conference publications, technical reports and +## manuals, must cite the following works: +## Dmitry Veikherman, Amit Aides, Yoav Y. Schechner and Aviad Levis, "Clouds in The Cloud" Proc. ACCV, pp. 659-674 (2014). +## +## THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +## EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +## INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +## BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +## LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +## OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +## ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.## from __future__ import division, print_function, absolute_import import cv2 import datetime @@ -43,7 +43,7 @@ import pandas as pd WAVELENGTHS = ['0.4405', '0.5000', '0.6744'] -SUNPHOTOMETER_WAVELENGTHS = (0.4405, 0.5000, 0.6744) +SUNPHOTOMETER_WAVELENGTHS = (0.4405, 0.5000, 0.6744) def calcAlmucantarPrinciplePlanes( @@ -223,90 +223,90 @@ def sampleImage(img, img_data, almucantar_angles=None, principleplane_angles=Non #cv2.circle(img, (int(x), int(y)), 2, (255, 255, 0)) #return angles, values, almucantar_samples, img, closest_time - - -def sampleData( - camera_client, - spm_dfs, - QEs, - ch_index, - time_index, - camera_df, - camera_id, - resolution=301, - overlay_angles=True): - """Samples almucantar values of some camera at specific time and color channel. - - Args: - camera_client (camera client object): Client to access the camera servers. - spm_dfs (list of DataFrames): Sunphotometer readings (one for each visible - in the order BGR). - QEs (list of DataFrames): Quantum Efficiency graphs of the camera in RGB order. - ch_index (int): Color channel to process (in order [R, G, B]) - time_index (int): Time index for the spm dataframes. - camera_df (DataFrame): DataFrames of images captured for the specific day. - camera_id (str): The camera to read from. - resoluiton (int): The resolution in which to sample the image. - overlay_angles (boolean): Overlay almucantar angles on the image. - - Returns: - angles, values, almucantar_samples, img, closest_time: Almacuntar angles, - sunphotometer values, image values measured at the spm angles, etc. - - Note: - This function is supposed to be used from a notebook (it uses the camera - clinet object). - """ - - # - # Read the SunPhotometer values at specific time. - # - angles_blue, values_blue = readSunPhotoMeter(spm_dfs[0], spm_dfs[0].index[time_index]) - angles_green, values_green = readSunPhotoMeter(spm_dfs[1], spm_dfs[1].index[time_index]) - angles_red, values_red = readSunPhotoMeter(spm_dfs[2], spm_dfs[2].index[time_index]) - - # - # Join all datasets. This is important as not all datasets are sampled - # at all angles. Therefore I use dropna() at the end. - # Note: - # The sun-photometer Dataframe is created in the order BGR to allow for the integration - # along the visual spectrum. - # - blue_df = pd.DataFrame(data={SUNPHOTOMETER_WAVELENGTHS[0]: values_blue}, index=angles_blue) - green_df = pd.DataFrame(data={SUNPHOTOMETER_WAVELENGTHS[1]: values_green}, index=angles_green) - red_df = pd.DataFrame(data={SUNPHOTOMETER_WAVELENGTHS[2]: values_red}, index=angles_red) - SPM_df = pd.concat((blue_df, green_df, red_df), axis=1).dropna() - - angles, values = integrate_QE_SP(SPM_df, QEs[ch_index]) - - # - # Get the closest image time. - # - t = spm_dfs[ch_index].index[time_index] - closest_time = findClosestImageTime(camera_df, t, hdr='2') - img, img_data = camera_client.seek( - server_id=camera_id, - seek_time=closest_time, - hdr_index=-1, - jpeg=False, - resolution=resolution, - correct_radiometric=False - ) - img = img[0] - img_data = img_data[0] - - almucantar_samples, almucantar_angles, almucantar_coords, \ - _, _, _ = sampleImage(img, img_data, almucantar_angles=angles) - - # - # Visualize the sampling positions on the image. - # - if overlay_angles: - import cv2 - for x, y in zip(almucantar_coords[0], almucantar_coords[1]): - cv2.circle(img, (int(x), int(y)), 2, (255, 255, 0)) - - return angles, values, almucantar_samples, img, closest_time, img_data + + +def sampleData( + camera_client, + spm_dfs, + QEs, + ch_index, + time_index, + camera_df, + camera_id, + resolution=301, + overlay_angles=True): + """Samples almucantar values of some camera at specific time and color channel. + + Args: + camera_client (camera client object): Client to access the camera servers. + spm_dfs (list of DataFrames): Sunphotometer readings (one for each visible + in the order BGR). + QEs (list of DataFrames): Quantum Efficiency graphs of the camera in RGB order. + ch_index (int): Color channel to process (in order [R, G, B]) + time_index (int): Time index for the spm dataframes. + camera_df (DataFrame): DataFrames of images captured for the specific day. + camera_id (str): The camera to read from. + resoluiton (int): The resolution in which to sample the image. + overlay_angles (boolean): Overlay almucantar angles on the image. + + Returns: + angles, values, almucantar_samples, img, closest_time: Almacuntar angles, + sunphotometer values, image values measured at the spm angles, etc. + + Note: + This function is supposed to be used from a notebook (it uses the camera + clinet object). + """ + + # + # Read the SunPhotometer values at specific time. + # + angles_blue, values_blue = readSunPhotoMeter(spm_dfs[0], spm_dfs[0].index[time_index]) + angles_green, values_green = readSunPhotoMeter(spm_dfs[1], spm_dfs[1].index[time_index]) + angles_red, values_red = readSunPhotoMeter(spm_dfs[2], spm_dfs[2].index[time_index]) + + # + # Join all datasets. This is important as not all datasets are sampled + # at all angles. Therefore I use dropna() at the end. + # Note: + # The sun-photometer Dataframe is created in the order BGR to allow for the integration + # along the visual spectrum. + # + blue_df = pd.DataFrame(data={SUNPHOTOMETER_WAVELENGTHS[0]: values_blue}, index=angles_blue) + green_df = pd.DataFrame(data={SUNPHOTOMETER_WAVELENGTHS[1]: values_green}, index=angles_green) + red_df = pd.DataFrame(data={SUNPHOTOMETER_WAVELENGTHS[2]: values_red}, index=angles_red) + SPM_df = pd.concat((blue_df, green_df, red_df), axis=1).dropna() + + angles, values = integrate_QE_SP(SPM_df, QEs[ch_index]) + + # + # Get the closest image time. + # + t = spm_dfs[ch_index].index[time_index] + closest_time = findClosestImageTime(camera_df, t, hdr='2') + img, img_data = camera_client.seek( + server_id=camera_id, + seek_time=closest_time, + hdr_index=-1, + jpeg=False, + resolution=resolution, + correct_radiometric=False + ) + img = img[0] + img_data = img_data[0] + + almucantar_samples, almucantar_angles, almucantar_coords, \ + _, _, _ = sampleImage(img, img_data, almucantar_angles=angles) + + # + # Visualize the sampling positions on the image. + # + if overlay_angles: + import cv2 + for x, y in zip(almucantar_coords[0], almucantar_coords[1]): + cv2.circle(img, (int(x), int(y)), 2, (255, 255, 0)) + + return angles, values, almucantar_samples, img, closest_time, img_data def readSunPhotoMeter(df, timestamp, sun_angles=5): @@ -348,7 +348,7 @@ def readSunPhotoMeter(df, timestamp, sun_angles=5): def calcSunphometerCoords(img_data, resolution): - """Calculate the Almucantar and PrinciplePlanes for a specifica datetime.""" + """Calculate the Almucantar and PrinciplePlanes for a specific datetime.""" Almucantar_coords, PrincipalPlane_coords, _, _ = \ calcAlmucantarPrinciplePlanes( @@ -360,81 +360,81 @@ def calcSunphometerCoords(img_data, resolution): return Almucantar_coords.T.tolist(), PrincipalPlane_coords.T.tolist() -def calcSunCoords(img_data, resolution): - """Calculate the Sun coords for a specifica datetime.""" - - # Create an Sun/observer at camera position - # - observer = ephem.Observer() - observer.lat, observer.long, observer.date = \ - str(img_data.latitude), str(img_data.longitude), img_data.capture_time - - sun = ephem.Sun(observer) - - # - # Calculate sun angles. - # - sun_az = np.array([sun.az]) - sun_alts = np.array([sun.alt]) - - # - # Convert sun angles to image coords. - # - sun_radius = (np.pi/2 - sun_alts)/(np.pi/2) - sun_x = (sun_radius * np.sin(sun_az) + 1) * resolution / 2 - sun_y = (sun_radius * np.cos(sun_az) + 1) * resolution / 2 - Sun_coords = np.array((sun_x, sun_y)) - - return Sun_coords.T.tolist() - - -def integrate_QE_SP(SPM_df, QE): - """Caclulate the argument: - \int_{\lambda} \mathrm{QE}_{\lambda} \, \lambda \, L^{\mathrm{S-P}}_{\lambda} \, d{\lambda} - - This integral is calculated for each almacuntar angle (for specfic day time). - - Args: - SPM_df (pandas dataframe): Dataframe of Sun Photometer readings, arranged - in BGR order. - QE (pandas Dataframe): Dataframe of Quantum Efficieny of a specific channel. - - Returns: - Integration of the Sun Photometer radiances (per SP almacuntar angle) - scaled by the Quantum Efficiency of the specific channel. - """ - - from scipy.interpolate import InterpolatedUnivariateSpline - - # - # Limits and density of the integraion. - # - start, end = 0.4, 0.7 - dlambda = 0.005 - xspl = np.linspace(start, end, int((end - start) / dlambda)) - - interp = [] - for angle, row, in SPM_df.iterrows(): - # - # Interpolate the sun photometer values along the wavelengths axis. - # - sp_vals = row.values - isp = InterpolatedUnivariateSpline(SUNPHOTOMETER_WAVELENGTHS, sp_vals, k=2) - sp_ipol = isp(xspl) - - # - # Interpolate the Quantum Efficiencies along the wavelenghts axis - # Note: - # The QE wavelengths are given in nm, and values are given in 100 percent. - # So I scale these by 1/1000 and 1/100 respectively. - # - QEp = InterpolatedUnivariateSpline(QE["wavelength"].values/1000, QE["QE"]/100) - QE_ipol = QEp(xspl) - - # - # Integrate the value: - # \int_{\lambda} \mathrm{QE}_{\lambda} \, \lambda \, L^{\mathrm{S-P}}_{\lambda} \, d{\lambda} - # - interp.append(np.trapz(QE_ipol * xspl * sp_ipol, xspl)) - - return SPM_df.index.values, interp +def calcSunCoords(img_data, resolution): + """Calculate the Sun coords for a specifica datetime.""" + + # Create an Sun/observer at camera position + # + observer = ephem.Observer() + observer.lat, observer.long, observer.date = \ + str(img_data.latitude), str(img_data.longitude), img_data.capture_time + + sun = ephem.Sun(observer) + + # + # Calculate sun angles. + # + sun_az = np.array([sun.az]) + sun_alts = np.array([sun.alt]) + + # + # Convert sun angles to image coords. + # + sun_radius = (np.pi/2 - sun_alts)/(np.pi/2) + sun_x = (sun_radius * np.sin(sun_az) + 1) * resolution / 2 + sun_y = (sun_radius * np.cos(sun_az) + 1) * resolution / 2 + Sun_coords = np.array((sun_x, sun_y)) + + return Sun_coords.T.tolist() + + +def integrate_QE_SP(SPM_df, QE): + """Caclulate the argument: + \int_{\lambda} \mathrm{QE}_{\lambda} \, \lambda \, L^{\mathrm{S-P}}_{\lambda} \, d{\lambda} + + This integral is calculated for each almacuntar angle (for specfic day time). + + Args: + SPM_df (pandas dataframe): Dataframe of Sun Photometer readings, arranged + in BGR order. + QE (pandas Dataframe): Dataframe of Quantum Efficieny of a specific channel. + + Returns: + Integration of the Sun Photometer radiances (per SP almacuntar angle) + scaled by the Quantum Efficiency of the specific channel. + """ + + from scipy.interpolate import InterpolatedUnivariateSpline + + # + # Limits and density of the integraion. + # + start, end = 0.4, 0.7 + dlambda = 0.005 + xspl = np.linspace(start, end, int((end - start) / dlambda)) + + interp = [] + for angle, row, in SPM_df.iterrows(): + # + # Interpolate the sun photometer values along the wavelengths axis. + # + sp_vals = row.values + isp = InterpolatedUnivariateSpline(SUNPHOTOMETER_WAVELENGTHS, sp_vals, k=2) + sp_ipol = isp(xspl) + + # + # Interpolate the Quantum Efficiencies along the wavelenghts axis + # Note: + # The QE wavelengths are given in nm, and values are given in 100 percent. + # So I scale these by 1/1000 and 1/100 respectively. + # + QEp = InterpolatedUnivariateSpline(QE["wavelength"].values/1000, QE["QE"]/100) + QE_ipol = QEp(xspl) + + # + # Integrate the value: + # \int_{\lambda} \mathrm{QE}_{\lambda} \, \lambda \, L^{\mathrm{S-P}}_{\lambda} \, d{\lambda} + # + interp.append(np.trapz(QE_ipol * xspl * sp_ipol, xspl)) + + return SPM_df.index.values, interp diff --git a/data/ROIS/2017_05_19_10_35_00.pkl b/data/ROIS/2017_05_19_10_35_00.pkl index 4a98a58..119c950 100644 --- a/data/ROIS/2017_05_19_10_35_00.pkl +++ b/data/ROIS/2017_05_19_10_35_00.pkl @@ -20,1192 +20,1224 @@ p9 (dp10 S'angle' p11 -F0 -sS'pos' +cnumpy.core.multiarray +scalar p12 -(F137.03205548763216 -F5.1526496769421897 -tp13 -sS'size' -p14 -(F150.13265871385977 -F287.25230581504087 -tp15 -ssS'cam_118bL' +(cnumpy +dtype +p13 +(S'f8' +I0 +I1 +tRp14 +(I3 +S'<' +NNNI-1 +I-1 +I0 +tbS'\xc4\x19;\xb6f\xbb\xc7?' +tRp15 +sS'pos' p16 -(dp17 -sS'cam_109bL' +(F137.49721538619269 +F4.9104908630096418 +tp17 +sS'size' p18 -(dp19 +(F160.61308642222153 +F287.21839151023318 +tp19 +ssS'cam_118bL' +p20 +(dp21 +g11 +g12 +(g14 +S'I\xe5%\xcb\xe1\x8bf\xc0' +tRp22 +sg16 +(F302.63137974877225 +F302.02119042717544 +tp23 +sg18 +(F303.54699649074058 +F297.99673510093362 +tp24 +ssS'cam_109bL' +p25 +(dp26 g4 F0 sg5 (F3.4059025801118992 F13.013011612678639 -tp20 +tp27 sg7 (F276.77182323405879 F255.81085807209487 -tp21 +tp28 ssS'cam_115bL' -p22 -(dp23 -g11 +p29 +(dp30 +S'angle' +p31 F0 -sg12 +sS'pos' +p32 (F0.65526829877950377 F12.139638064263522 -tp24 -sg14 +tp33 +sS'size' +p34 (F281.13869097613463 F276.77182323405884 -tp25 +tp35 ssS'cam_111cL' -p26 -(dp27 +p36 +(dp37 S'angle' -p28 +p38 F0 sS'pos' -p29 +p39 (F20.018054858070677 F22.638175503316234 -tp30 +tp40 sS'size' -p31 +p41 (F273.27832904039815 F272.404955491983 -tp32 +tp42 ssS'cam_119bL' -p33 -(dp34 +p43 +(dp44 S'angle' -p35 +p45 F0 sS'pos' -p36 +p46 (F5.1526496769421897 F5.1526496769421897 -tp37 +tp47 sS'size' -p38 +p48 (F289.87242646028631 F290.74580000870151 -tp39 +tp49 ssS'cam_120L' -p40 -(dp41 -S'angle' -p42 -F0 -sS'pos' -p43 -(F12.113264313193042 -F5.1211633818986115 -tp44 -sS'size' -p45 -(F277.3010798417439 -F278.62555334077001 -tp46 +p50 +(dp51 +g11 +g12 +(g14 +S'\xff\x1dD\x90\x8ca\xe3?' +tRp52 +sg16 +(F0.49857108920244286 +F6.2332560357255886 +tp53 +sg18 +(F307.15948329281343 +F295.00535104992105 +tp54 ssS'cam_112bL' -p47 -(dp48 +p55 +(dp56 S'angle' -p49 +p57 F0 sS'pos' -p50 +p58 (F20.873373548415145 F12.139638064263465 -tp51 +tp59 sS'size' -p52 +p60 (F265.41796710466195 F256.68423162050999 -tp53 -ss(dp54 +tp61 +ss(dp62 g2 -(dp55 +(dp63 S'points' -p56 -(lp57 +p64 +(lp65 (F297.30385612939716 F161.85385612939717 -tp58 +tp66 a(F288.49302064959625 F188.92843613026733 -tp59 +tp67 a(F251.5363653874808 F219.80837600781416 -tp60 +tp68 a(F232.06124909370166 F241.55547386955192 -tp61 +tp69 a(F209.01602774381618 F260.54506710031097 -tp62 +tp70 a(F210.76277484064653 F271.02554968129294 -tp63 +tp71 a(F196.63617446839746 F285.72853819103864 -tp64 +tp72 a(F169.77703245857862 F287.91888086038847 -tp65 +tp73 a(F134.93062374625219 F291.60098441665957 -tp66 +tp74 a(F96.090354730755294 F277.16161774067302 -tp67 +tp75 a(F64.875825962199556 F248.40705660384538 -tp68 +tp76 a(F36.615521689572049 F209.72683309638063 -tp69 +tp77 a(F23.88434984142258 F164.06060176937379 -tp70 +tp78 a(F29.124591131913562 F126.4589156496443 -tp71 +tp79 a(F42.729136528478207 F88.653046258373877 -tp72 +tp80 a(F58.762211123293298 F63.946799525551853 -tp73 +tp81 a(F74.256016020376038 F45.672720969706177 -tp74 +tp82 a(F117.48028894539337 F35.600222035795412 -tp75 +tp83 a(F147.94269374819942 F23.561601720593501 -tp76 +tp84 a(F196.63617446839734 F34.485679874095013 -tp77 +tp85 a(F247.78197296517462 F66.431514517769301 -tp78 +tp86 a(F278.61094538835101 F106.51945689622559 -tp79 +tp87 a(F291.19024129049097 F135.65264967694216 -tp80 +tp88 asg4 F0 sg5 (F0 F0 -tp81 +tp89 sS'closed' -p82 +p90 I01 sg7 (F1 F1 -tp83 +tp91 ssg9 -(dp84 +(dp92 S'points' -p85 -(lp86 +p93 +(lp94 (F274.14137049982764 F191.91237547213302 -tp87 +tp95 a(F260.27010087163251 F213.75832510255316 -tp88 +tp96 a(F254.46797866078995 F209.72039584346209 -tp89 +tp97 a(F214.59377812539839 F248.54246225687331 -tp90 +tp98 a(F208.86340414620977 F265.64094657748984 -tp91 +tp99 a(F183.75100923322125 F281.80526602148234 -tp92 +tp100 a(F140.18800120418777 F281.9938753840928 -tp93 +tp101 a(F98.710475376000787 F270.17462935335169 -tp94 +tp102 a(F58.762211123293397 F250.1538037006757 -tp95 +tp103 a(F31.375280399081067 F214.96707438687164 -tp96 +tp104 a(F16.897361454101254 F172.79433725352544 -tp97 +tp105 a(F11.657120163610241 F121.21867435915328 -tp98 +tp106 a(F31.375280399081049 F86.032925613128384 -tp99 +tp107 a(F52.648596284387139 F49.972822750909188 -tp100 +tp108 a(F94.343607633924861 F19.471514517251194 -tp101 +tp109 a(F136.69450701052702 F8.5256420349252267 -tp102 +tp110 a(F186.37112987846672 F11.334372042781183 -tp103 +tp111 a(F232.5929591350972 F30.522445837016306 -tp104 +tp112 a(F224.58412801768267 F36.23242697092536 -tp105 +tp113 a(F245.69771677725308 F70.149633545804761 -tp106 +tp114 a(F247.78197296517462 F88.265853228148416 -tp107 +tp115 a(F256.77660667797187 F110.01295108988626 -tp108 +tp116 a(F264.111260886492 F109.43026069616113 -tp109 +tp117 a(F270.86155844448342 F124.85951225728438 -tp110 +tp118 a(F279.54051244761513 F123.41301992342909 -tp111 +tp119 a(F282.84771524346934 F150.53617319313514 -tp112 +tp120 asS'angle' -p113 +p121 F0 sS'pos' -p114 +p122 (F-0.87337354841525894 F0.87337354841508841 -tp115 +tp123 sS'closed' -p116 +p124 I01 sS'size' -p117 +p125 (F1 F1 -tp118 -ssg16 -(dp119 +tp126 +ssg20 +(dp127 S'points' -p120 -(lp121 +p128 +(lp129 (F285.94999999999999 F150.5 -tp122 +tp130 a(F278.61094538835096 F194.48054310377438 -tp123 +tp131 a(F257.38908199774153 F233.6951119338155 -tp124 +tp132 a(F224.58412801768273 F263.89419948065949 -tp125 +tp133 a(F183.75100923322125 F281.80526602148234 -tp126 +tp134 a(F139.3146276557726 F285.48736957775344 -tp127 +tp135 a(F96.090354730755308 F274.54149709542753 -tp128 +tp136 a(F58.762211123293397 F250.1538037006757 -tp129 +tp137 a(F31.375280399081067 F214.96707438687164 -tp130 +tp138 a(F16.897361454101254 F172.79433725352544 -tp131 +tp139 a(F16.897361454101237 F128.20566274647462 -tp132 +tp140 a(F26.05301077294623 F77.669359057773647 -tp133 +tp141 a(F51.919293032548538 F49.325547834714399 -tp134 +tp142 a(F96.090354730755223 F26.458502904572491 -tp135 +tp143 a(F139.31462765577254 F15.512630422246559 -tp136 +tp144 a(F183.75100923322123 F19.194733978517689 -tp137 +tp145 a(F224.5841280176827 F37.105800519340477 -tp138 +tp146 a(F257.38908199774147 F67.304888066184461 -tp139 +tp147 a(F278.61094538835096 F106.51945689622558 -tp140 +tp148 a(F285.94999999999999 F150.49999999999997 -tp141 -asg35 +tp149 +asg45 F0 -sg36 +sg46 (F0 F0 -tp142 +tp150 sS'closed' -p143 +p151 I01 -sg38 +sg48 (F1 F1 -tp144 -ssg18 -(dp145 +tp152 +ssg25 +(dp153 S'points' -p146 -(lp147 +p154 +(lp155 (F277.21626451584831 F153.12012064524549 -tp148 +tp156 a(F271.62395700102968 F200.59415794268054 -tp149 +tp157 a(F242.54173167468369 F228.45487064332448 -tp150 +tp158 a(F204.49653640413393 F253.41371689967752 -tp151 +tp159 a(F160.16992342601176 F263.46442150476383 -tp152 +tp160 a(F106.99980636441146 F260.1595366737136 -tp153 +tp161 a(F57.661918600487965 F240.47992870723604 -tp154 +tp162 a(F31.687631122423252 F213.47211466723869 -tp155 +tp163 a(F33.995401044326556 F193.13273567649247 -tp156 +tp164 a(F17.770735002516414 F155.32686628522211 -tp157 +tp165 a(F5.5435053247040749 F148.29325436002344 -tp158 +tp166 a(F11.527596664334343 F105.38413348094355 -tp159 +tp167 a(F24.262828872901913 F76.517479722910181 -tp160 +tp168 a(F49.434959941361797 F48.505933504714221 -tp161 +tp169 a(F84.422840754213524 F23.433061269833871 -tp162 +tp170 a(F107.70469612765686 F20.367341286140288 -tp163 +tp171 a(F115.56505806339337 F27.354329673461621 -tp164 +tp172 a(F139.31462765577254 F15.512630422246559 -tp165 +tp173 a(F160.16992342601174 F20.941481075348008 -tp166 +tp174 a(F216.72376608194617 F45.839536003492185 -tp167 +tp175 a(F241.66835812626843 F71.671755808260286 -tp168 +tp176 a(F264.63696861370835 F106.51945689622559 -tp169 +tp177 a(F271.10264967694218 F129.539034838036 -tp170 -asg28 +tp178 +asg38 F0 -sg29 +sg39 (F0 F0 -tp171 +tp179 sS'closed' -p172 +p180 I01 -sg31 +sg41 (F1 F1 -tp173 -ssg22 -(dp174 -g146 -(lp175 +tp181 +ssg29 +(dp182 +g154 +(lp183 (F273.76618883225251 F144.95950394653397 -tp176 +tp184 a(F270.19706355155313 F168.19820781242376 -tp177 +tp185 a(F254.84944791020803 F218.61108463434971 -tp178 +tp186 a(F241.10257110254736 F213.6984749944217 -tp179 +tp187 a(F209.50064791357107 F251.01804039159236 -tp180 +tp188 a(F177.61772330845912 F264.33779505317909 -tp181 +tp189 a(F158.21239693491282 F282.57139251344915 -tp182 +tp190 a(F149.40327303943334 F276.45777767454297 -tp183 +tp191 a(F120.82890465624899 F288.1074902229991 -tp184 +tp192 a(F96.090354730755308 F274.54149709542753 -tp185 +tp193 a(F68.359333201022253 F265.10392154514579 -tp186 +tp194 a(F58.795777416407546 F250.06458451932889 -tp187 +tp195 a(F43.877166594571662 F230.93958563554204 -tp188 +tp196 a(F21.210559470024272 F216.00301613113743 -tp189 +tp197 a(F39.581559351273896 F202.02903935649482 -tp190 +tp198 a(F33.467944512367737 F187.18168903343695 -tp191 +tp199 a(F14.781182979192909 F194.00610922490762 -tp192 +tp200 a(F5.5435053247040962 F136.9860217685036 -tp193 +tp201 a(F19.517482099346733 F94.144094358283127 -tp194 +tp202 a(F40.109015883232715 F57.211598515427852 -tp195 +tp203 a(F80.270613623185596 F81.503489675201934 -tp196 +tp204 a(F86.08066630722989 F46.47932855724855 -tp197 +tp205 a(F87.279918434249936 F27.331876452987672 -tp198 +tp206 a(F112.00634357978622 F12.892509777001067 -tp199 +tp207 a(F162.61695888265257 F11.825592504747647 -tp200 +tp208 a(F167.02152083039232 F17.939207343653834 -tp201 +tp209 a(F177.58462250638559 F15.701239784857023 -tp202 +tp210 a(F227.85678242400024 F38.403659341850101 -tp203 +tp211 a(F256.02882434649609 F69.925008711429911 -tp204 +tp212 a(F273.51755249200073 F105.64608334781042 -tp205 +tp213 a(F277.80674455240285 F140.92906416056832 -tp206 -asg28 +tp214 +asg38 F0 -sg29 +sg39 (F-0.87337354841515946 F-0.87337354841505999 -tp207 -sg172 +tp215 +sg180 I01 -sg31 +sg41 (F1 F1 -tp208 -ssg26 -(dp209 -g146 -(lp210 +tp216 +ssg36 +(dp217 +g154 +(lp218 (F292.93698838732132 F153.99349419366069 -tp211 +tp219 a(F282.99586798849754 F190.30248901543624 -tp212 +tp220 a(F274.56535499587369 F196.61546187460763 -tp213 +tp221 a(F275.94188822913316 F210.82085778001795 -tp214 +tp222 a(F269.39122486435554 F226.10573896449918 -tp215 +tp223 a(F268.51780308238517 F235.27666767518781 -tp216 +tp224 a(F259.57234705133635 F241.99223299409238 -tp217 +tp225 a(F242.05169545309644 F245.99011408848139 -tp218 +tp226 a(F226.48349871211946 F257.05157290665022 -tp219 +tp227 a(F220.86950562475374 F270.88812078307035 -tp220 +tp228 a(F204.04580912264657 F278.14634936702362 -tp221 +tp229 a(F188.26731622863366 F286.97832853766346 -tp222 +tp230 a(F161.09515491023313 F290.53297232536823 -tp223 +tp231 a(F147.00650580633931 F287.40762882587262 -tp224 +tp232 a(F136.34678951161052 F289.48835076819091 -tp225 +tp233 a(F120.75507679354152 F283.03660757450723 -tp226 +tp234 a(F116.99155993055935 F275.50957384854286 -tp227 +tp235 a(F96.090354730755308 F274.54149709542753 -tp228 +tp236 a(F80.208635954594527 F265.50229663741516 -tp229 +tp237 a(F77.102669771570405 F257.14030975244526 -tp230 +tp238 a(F76.263248384710863 F247.44446387408351 -tp231 +tp239 a(F68.417441897994806 F248.9072827799784 -tp232 +tp240 a(F59.683224078291296 F244.10346297914154 -tp233 +tp241 a(F58.841654435331044 F235.91722331973492 -tp234 +tp242 a(F58.405377646342551 F227.62034342723399 -tp235 +tp243 a(F46.581897348736028 F221.39449664791238 -tp236 +tp244 a(F38.721101311002869 F220.08436397495683 -tp237 +tp245 a(F40.467944874943569 F213.97041150116436 -tp238 +tp246 a(F34.741749522265678 F209.48977747388804 -tp239 +tp247 a(F38.731748398035585 F202.05213407443523 -tp240 +tp248 a(F29.584002315086884 F197.92578748178389 -tp241 +tp249 a(F26.504470486668062 F187.59506403870594 -tp242 +tp250 a(F30.457375863502044 F176.09144877140474 -tp243 +tp251 a(F21.723640379350385 F165.61096619042274 -tp244 +tp252 a(F22.690319129223784 F142.675747780405 -tp245 +tp253 a(F37.762592822160684 F126.95502390893202 -tp246 +tp254 a(F33.122027495911361 F117.47437335607435 -tp247 +tp255 a(F44.431352638144709 F114.95530038234307 -tp248 +tp256 a(F37.444364250823376 F100.10795005928526 -tp249 +tp257 a(F53.251947163480807 F92.566209639386955 -tp250 +tp258 a(F56.722839439119369 F76.508417761055767 -tp251 +tp259 a(F61.347792376196999 F72.229708852407271 -tp252 +tp260 a(F65.951249588898563 F64.421549133495887 -tp253 +tp261 a(F80.630116126786703 F61.415898061653081 -tp254 +tp262 a(F91.648243973909018 F49.32247968225019 -tp255 +tp263 a(F105.13915326822134 F40.941379161416194 -tp256 +tp264 a(F118.18517870863883 F40.454932899689084 -tp257 +tp265 a(F166.93198844345397 F29.972359361661717 -tp258 +tp266 a(F181.35847663567216 F31.289723608753491 -tp259 +tp267 a(F191.73063006822983 F31.865954355006693 -tp260 +tp268 a(F202.7497893073035 F35.359053422510158 -tp261 +tp269 a(F209.59378320207921 F35.323338832525934 -tp262 +tp270 a(F223.99955185840929 F42.238107787564417 -tp263 +tp271 a(F235.52416678347339 F52.610261220122055 -tp264 +tp272 a(F241.63224841012703 F52.439482885055924 -tp265 +tp273 a(F246.47255096228429 F59.525030175160509 -tp266 +tp274 a(F253.963550663576 F57.796337936400903 -tp267 +tp275 a(F257.99716588734839 F71.625875846477811 -tp268 +tp276 a(F267.79308857365288 F75.659491070250255 -tp269 +tp277 a(F269.52178081241254 F82.574260025288737 -tp270 +tp278 a(F282.10443958201159 F94.292227218413302 -tp271 +tp279 a(F288.57012064524548 F119.93192580546921 -tp272 -asg28 +tp280 +asg38 F0 -sg29 +sg39 (F0 F0 -tp273 -sg172 +tp281 +sg180 I01 -sg31 +sg41 (F1 F1 -tp274 -ssg33 -(dp275 -g146 -(lp276 +tp282 +ssg43 +(dp283 +g154 +(lp284 (F272.84939677377253 F71.89638064263508 -tp277 +tp285 a(F289.96480151774819 F126.3574063273914 -tp278 +tp286 a(F262.29181419714126 F131.28578193486638 -tp279 +tp287 a(F264.03856129397161 F146.13313225792419 -tp280 +tp288 a(F284.12615290752046 F140.8928909674332 -tp281 +tp289 a(F288.49302064959625 F180.19470064611568 -tp282 +tp290 a(F267.86956457872355 F224.96137644966382 -tp283 +tp291 a(F224.58412801768273 F263.89419948065949 -tp284 +tp292 a(F176.76402084589992 F289.66562795721882 -tp285 +tp293 a(F128.8341450747906 F288.98086377141408 -tp286 +tp294 a(F90.850113440264295 F279.78173838591852 -tp287 +tp295 a(F47.408354993896225 F254.52067144275151 -tp288 +tp296 a(F19.148050721268735 F214.09370083845644 -tp289 +tp297 a(F8.1636259699495959 F168.4274695114496 -tp290 +tp298 a(F8.1636259699495817 F130.82578339172011 -tp291 +tp299 a(F16.000473544064416 F103.33782838558105 -tp292 +tp300 a(F28.755159753835553 F82.539431419467718 -tp293 +tp301 a(F64.875825962199457 F54.339690492985028 -tp294 +tp302 a(F110.06433150539786 F20.344888065666339 -tp295 +tp303 a(F134.0743863652815 F9.3990155833404287 -tp296 +tp304 a(F173.27052665223923 F27.928469462669341 -tp297 +tp305 a(F220.21726027560683 F41.472668261416345 -tp298 +tp306 a(F186.30831548502178 F86.743730965692919 -tp299 +tp307 a(F164.8114858657338 F100.49308290596076 -tp300 +tp308 a(F133.90590258011184 F102.4644548371659 -tp301 +tp309 a(F95.477466449844528 F133.0325290316967 -tp302 +tp310 a(F90.237225159353514 F161.8538561293972 -tp303 +tp311 a(F92.857345804599035 F171.46096516196403 -tp304 +tp312 a(F88.490478062523195 F181.94144774294602 -tp305 +tp313 a(F91.110598707768702 F198.53554516283413 -tp306 +tp314 a(F97.224213546674832 F222.99000451845879 -tp307 +tp315 a(F129.539034838036 F248.31783742249866 -tp308 +tp316 a(F175.82783290403981 F247.44446387408345 -tp309 +tp317 a(F218.34817054770446 F220.93139173861238 -tp310 +tp318 a(F236.96398129310145 F197.66217161441901 -tp311 +tp319 a(F245.69771677725308 F167.09409741988819 -tp312 +tp320 a(F229.97699290578012 F124.29879354754505 -tp313 +tp321 a(F194.16867742075831 F96.350839998259744 -tp314 +tp322 a(F239.66120193399618 F41.328306448104229 -tp315 -asg28 +tp323 +asg38 F0 -sg29 +sg39 (F0 F0 -tp316 -sg172 +tp324 +sg180 I01 -sg31 +sg41 (F1 F1 -tp317 -ssg40 -(dp318 -g85 -(lp319 +tp325 +ssg50 +(dp326 +g93 +(lp327 (F295.91353741968646 F116.53971116850289 -tp320 +tp328 a(F290.07317271839321 F119.13542881352214 -tp321 +tp329 a(F291.37103154090283 F141.84795820744046 -tp322 +tp330 a(F284.32518387179522 F143.61803215359396 -tp323 +tp331 a(F281.7892039434588 F177.89459349378018 -tp324 +tp332 a(F275.62050881390667 F201.30856018154299 -tp325 +tp333 a(F243.99918451930179 F241.13415812942628 -tp326 +tp334 a(F198.29500906165947 F268.27032789774819 -tp327 +tp335 a(F150.73064967242681 F275.66146216252605 -tp328 +tp336 a(F132.56062615729212 F267.87430922746842 -tp329 +tp337 a(F115.5576881103096 F254.45832011733233 -tp330 +tp338 a(F95.637654554804456 F252.75644100700219 -tp331 +tp339 a(F73.786010569077362 F250.96089419060397 -tp332 +tp340 a(F61.42655672945007 F241.73551366987954 -tp333 +tp341 a(F55.315103865266465 F233.86215788468985 -tp334 +tp342 a(F62.428413036876279 F222.7655518373291 -tp335 +tp343 a(F49.99089157289562 F207.66530619262582 -tp336 +tp344 a(F38.371565471339579 F215.05978539382556 -tp337 +tp345 a(F19.092878236922534 F171.298501222939 -tp338 +tp346 a(F15.592647576255089 F142.06671831123856 -tp339 +tp347 a(F19.239801888602571 F139.00219636093269 -tp340 +tp348 a(F20.142008510375291 F126.73692948995921 -tp341 +tp349 a(F26.1362027115035 F127.05662698517474 -tp342 +tp350 a(F28.516687555657271 F121.67303025898383 -tp343 +tp351 a(F20.295838010210218 F116.67375640509781 -tp344 +tp352 a(F24.189414477739078 F100.45052112372758 -tp345 +tp353 a(F31.976567412796769 F99.152662301217958 -tp346 +tp354 a(F39.114790936599675 F88.769791721141019 -tp347 +tp355 a(F30.678708590287158 F80.982638786083299 -tp348 +tp356 a(F34.572285057816018 F75.142274084790017 -tp349 +tp357 a(F43.008367404128521 F79.684779963573675 -tp350 +tp358 a(F55.878597174119662 F64.694754287712783 -tp351 +tp359 a(F52.272917010745246 F55.388702178108019 -tp352 +tp360 a(F83.16045086099578 F27.63394871091424 -tp353 +tp361 a(F140.3211009963367 F7.0097243402844924 -tp354 +tp362 a(F163.74019414418345 F2.5323967267171383 -tp355 +tp363 a(F195.47723091541113 F8.4096257584259888 -tp356 +tp364 a(F197.74842934214868 F20.960002425373659 -tp357 +tp365 a(F215.45031025966284 F26.425276801424417 -tp358 +tp366 a(F221.93558453663815 F17.902440657771905 -tp359 +tp367 a(F253.73312568812378 F41.912828874199846 -tp360 +tp368 a(F247.29498927264098 F48.259638867632134 -tp361 +tp369 a(F260.87134921192666 F63.976428856863379 -tp362 +tp370 a(F269.30743155823939 F58.136064155570068 -tp363 +tp371 a(F274.71736892082208 F77.317633389759152 -tp364 +tp372 a(F283.3542823549808 F85.879894987441162 -tp365 -asg113 +tp373 +asg121 F0 -sg114 +sg122 (F-1.7467470968303473 F4.3668677420758968 -tp366 -sg116 +tp374 +sg124 I01 -sg117 +sg125 (F1 F1 -tp367 -ssg47 -(dp368 -g146 -(lp369 +tp375 +ssg55 +(dp376 +g154 +(lp377 (F278.08963806426351 F181.941447742946 -tp370 +tp378 a(F261.1434744200476 F218.06162891098387 -tp371 +tp379 a(F225.94763425479553 F256.40282419260978 -tp372 +tp380 a(F194.16867742075831 F274.51904387495364 -tp373 +tp381 a(F176.54858285484855 F274.37468206164152 -tp374 +tp382 a(F152.30956149027526 F268.70466279525482 -tp375 +tp383 a(F148.92173668833942 F257.53941602846817 -tp376 +tp384 a(F90.850113440264323 F228.2526990294237 -tp377 +tp385 a(F72.769754191050311 F246.57109032566831 -tp378 +tp386 a(F59.635584671708564 F244.91356241018471 -tp379 +tp387 a(F42.729136528478243 F220.20731567736266 -tp380 +tp388 a(F31.744711777159079 F197.24879660915013 -tp381 +tp389 a(F16.89736145410124 F155.2802427473448 -tp382 +tp390 a(F19.493967737725075 F115.56505806339339 -tp383 +tp391 a(F30.501906850665879 F99.133528839355876 -tp384 +tp392 a(F33.467944512367737 F83.250236772032252 -tp385 +tp393 a(F58.762211123293319 F57.833184686645723 -tp386 +tp394 a(F76.170647010601101 F42.24194418013019 -tp387 +tp395 a(F89.744171219340075 F34.753103237377644 -tp388 +tp396 a(F97.701064721014632 F35.689208355221723 -tp389 +tp397 a(F99.834775202131496 F29.734870817026717 -tp390 +tp398 a(F139.31462765577254 F15.512630422246559 -tp391 +tp399 a(F183.75100923322123 F19.194733978517689 -tp392 +tp400 a(F221.09063382402206 F40.5992947130012 -tp393 +tp401 a(F254.76896135249598 F67.304888066184446 -tp394 +tp402 a(F278.61094538835096 F106.51945689622558 -tp395 +tp403 a(F282.45650580633935 F138.27277032218768 -tp396 -asg28 +tp404 +asg38 F0 -sg29 +sg39 (F0 F0 -tp397 -sg172 +tp405 +sg180 I01 -sg31 +sg41 (F1 F1 -tp398 -ss(dp399 +tp406 +ss(dp407 g2 (L301L L301L -tp400 +tp408 sg9 (L301L L301L -tp401 -sg16 +tp409 +sg20 (L301L L301L -tp402 -sg18 +tp410 +sg25 (L301L L301L -tp403 -sg22 +tp411 +sg29 (L301L L301L -tp404 -sg26 +tp412 +sg36 (L301L L301L -tp405 -sg33 +tp413 +sg43 (L301L L301L -tp406 -sg40 +tp414 +sg50 (L301L L301L -tp407 -sg47 +tp415 +sg55 (L301L L301L -tp408 +tp416 st. \ No newline at end of file From fa7d2b2f29d5217cdc2b216ae55d147393e9db0d Mon Sep 17 00:00:00 2001 From: Addalin Date: Sun, 8 Dec 2019 15:19:35 +0200 Subject: [PATCH 60/90] typos update proxy ip update ROI pickle Adding and updating Image_pipline.md --- CameraNetwork/image_utils.py | 5 +- CameraNetwork/server.py | 2 +- Image_pipeline.md | 83 ++++++++++++++++++++++ scripts/start_server.py | 8 +-- scripts_calibrate/calibrate_camera.py | 2 +- scripts_client/Sessions/Default%20Settings | 6 +- 6 files changed, 92 insertions(+), 14 deletions(-) create mode 100644 Image_pipeline.md diff --git a/CameraNetwork/image_utils.py b/CameraNetwork/image_utils.py index 8b57d7b..cf0101e 100644 --- a/CameraNetwork/image_utils.py +++ b/CameraNetwork/image_utils.py @@ -300,7 +300,7 @@ def calc_normalization_map(self, resolution): # # Create a grid of directions. # The coordinates create a 'linear' fisheye, where the distance - # from the center ranges between 0-pi/2 linearily. + # from the center ranges between 0-pi/2 linearly. # X, Y = np.meshgrid( np.linspace(-1, 1, self.resolution), @@ -410,8 +410,7 @@ def normalize(self, img): ).astype(np.bool) # - # TODO: - # Implement radiometric correction + # TODO: Implement radiometric correction compare with RadiometricCalibration.applyRadiometric() in calibration.py # #normalized_img = radiometric_correction(normalized_img, self._radiometric_model).astype(np.uint8) normalized_img = normalized_img.astype(img_dtype) diff --git a/CameraNetwork/server.py b/CameraNetwork/server.py index a90f9b6..0832f46 100644 --- a/CameraNetwork/server.py +++ b/CameraNetwork/server.py @@ -829,7 +829,7 @@ def handle_array( gain_boost (bool, optional): Analog gain boost. Default False. color_mode (int, optional): Color mode of image. Default RAW. frames_num (int, optional): Number of frames to capture. Default 1. - jpeg (bool, optional): Whether to whether to compress as jpeg. Default False. + jpeg (bool, optional): Whether to compress as jpeg. Default False. normalize (bool, optional): Whether to normalize the image. Default True. Returns: diff --git a/Image_pipeline.md b/Image_pipeline.md new file mode 100644 index 0000000..6d36f96 --- /dev/null +++ b/Image_pipeline.md @@ -0,0 +1,83 @@ +# Image pipeline of *cameranetwork* +This document describes the operations that are being done on images, +and prepares the inputs required to run 3D reconstructions using. + +## Prepossessing on board: +1. [Image capturing]('CameraNetwork/controller.py#L1578-1649'): multi shot averaging (for SNR enhancement), +and for several exposure times (for HDR). +2. [Camera prepossessing]('CameraNetwork/controller.py#L1388-1527'): dark image subtraction, normalization (according to fisheye model), +HDR calculation, and vignetting correction. +Note: This function is called from [seekImageArray()]('CameraNetwork/controller.py#1272), and [handle_array()]('CameraNetwork/controller.py#1221), +that means that the saved images are before prepossessing, and one needs to call one of these in order to apply the prepossessing. + +## Prepossessing using GUI: +###1. Masking & Space carving: +1. 2D *grabcut*: choose under "Arrays" tab: "view settings"-> space carving. it creates a cloud mask based on dilation operation (Applied by a maximum filter). This operation is done in ArrayModel._update_cloud_weights() ([here](https://github.com/Addalin/cameranetwork/blob/f26cdd785dabfc6f8d217a0e9b16fa1870d26fa9/CameraNetwork/gui/main.py#L954)) +2. 2D *sunshader*: choose under "Arrays" tab: view settings-> sun shader. it creates a sunshader mask based on *erosiom* operation (Since the mask is an inversion of the sunshader.) This is done in calcSunshaderMask() ([here](https://github.com/Addalin/cameranetwork/blob/945e9e8519216d2bd8a75afa6e650367d8f7ee88/CameraNetwork/image_utils.py#L544)). + +3. 2D *ROI*: choose under "Arrays" tab:"view settings"-> ,Widgets" -> show ROI. This is a rectangular mask that determines what is the relevant area in the image that observes on the volume of interest. Currently, it is manually set. Choosing the option "Show Grid", presents the inspected volume (on the map shown as a blue cube) and it's voxel as grid projection (red scatter plot on each of the images), thus helps to set the ROI. The ROI can be uploaded from earlier sessions or saved (as .pkl file). + +4. 2D and 3D space carving: This operation is done in Map3dModel.do_space_carving() ([here](https://github.com/Addalin/cameranetwork/blob/19efb5bbf0350d6cbd3b6d01efaaa08347b15327/CameraNetwork/gui/main.py#L317)) + +Finally,[exportData()](https://github.com/Addalin/cameranetwork/blob/02f1e7f8c0f7d88b9e603daf7ddb0b6c55a8f237/CameraNetwork/gui/main.py#L1807-L1895) saves space_carve.pkl and call to export to shdom. +[exportToShdom()](https://github.com/Addalin/cameranetwork/blob/c85e88bd0cf35bbd095744e2b2dc92600eb6e0c5/CameraNetwork/export.py#L51-L168) : includes final masking of ROI and sunshader, and it saves the sun mask separately +##### Questions regarding space carving: +3. what is the difference between a mask that is saved to the space_carve.pkl? + + +#### Notes and questions regarding ROI: +1. In the class [image_analysis](https://github.com/Addalin/cameranetwork/blob/994af1ad6f7d465ec5bff38d3ca22e338225e9fe/CameraNetwork/gui/image_analysis.py#L129-L228), +there exist the following objects: +*"ROI"* object is based on [a generic region-of-interest widget](http://www.pyqtgraph.org/documentation/graphicsItems/roi.html#pyqtgraph.ROI). +The projected grid, *"grid_scatter"* is of [ScatterPlotItem](http://www.pyqtgraph.org/documentation/graphicsItems/scatterplotitem.html#pyqtgraph.ScatterPlotItem). +The *"mask_ROI"* is of [pg.PolyLineROI](http://www.pyqtgraph.org/documentation/graphicsItems/roi.html#pyqtgraph.PolyLineROI). + What is the relation between ROI and ROI_mask? +Which of the objects is being used in the final mask calculation of the image? + +2. When [drawing the camera](https://github.com/Addalin/cameranetwork/blob/c69dda2adc041dc2dc98660b34e57769213f23a9/CameraNetwork/gui/main.py#L266-L315) there is an option to add the drow of + ["roi_mesh"](https://github.com/Addalin/cameranetwork/blob/c69dda2adc041dc2dc98660b34e57769213f23a9/CameraNetwork/gui/main.py#L301-L310), the 3D projection of cameras' ROIs. + Currently, it is not visually clear and it seems that these objects are not perfectly calculated on the 2D ROIs. + It requires a farther investigation. E.g. how and when the 3D mesh is calculated? + Also, maybe we need to update the mesh visualization of ROI in 3D. + +3. ***TODO*** Find a way to calculate the ROI automatically based on the grid projection? +###2. Extrinsic calibration +This proccess is done according to sun position and sunshader. +The process should apply for a sunny day having clear sky, and requires two steps: +1. [handle_sunshader_scan()](https://github.com/Addalin/cameranetwork/blob/4f6a0b01111725799e6796dbf206f624a99c231b/CameraNetwork/server.py#L1066-L1088) - +calculates sun position on the image plane (`measured_positions`), sun shader angle, the color value, and then save all to `sun_positions.csv`(under sun_positions folder). +This process is done every ~6 min. +2. [handle_extrinsic()](https://github.com/Addalin/cameranetwork/blob/3552f2453f3d42942ae6f90c2245b9ccb7c3dbce/CameraNetwork/controller.py#L965-L1070) - +loads `measured_positions` from `sun_positions.csv`, and calculates the `measured_directions` according to the fisheye model (undistortion) the on a unit sphere. +The fisheye model is pre-determined during intrinsic calibration process (add link). +Using the measurements times in `sun_positions.csv` and *ephem*, the function calculates sun directions `calculated_directions`. +And then estimates camera orientation, by doing fit of `measured_directions` to `calculated_directions`. +This process gives as well the rotation matrix *R* (camera-to-world transform ). + +To apply the extrinsic calibration from the GUI: "severs"--> "choose camera" --> "Exrinsic" tab --> "extrinsic calibrate" (also saves the extrinsic_data.npy in camera folder). + +To save all cameras extrinsic calibration: "Arrays" --> "Save Extrinsic" (saves in a specific day of captured_images folder). + + + +###3. Radiometric calibration: +To make radiometric calibration with a sunphotometer, the camera should stay close to the sunphotometer, and make the measurements in a clear sky day. + +To get the sunphotometer measurements: download files from NASA's [AERONET site](https://aeronet.gsfc.nasa.gov/cgi-bin/webtool_inv_v3?stage=3®ion=Middle_East&state=Israel&site=Technion_Haifa_IL&place_code=10&if_polarized=0). +All the files can be found under `.../data/aeronet`). + +The meaning of numbers and measurements can be found [here](https://aeronet.gsfc.nasa.gov/new_web/units.html). Specifically: irradiance sunphotometer units are [uW/cm^2/sr/nm]. +The function [handle_radiometric()](https://github.com/Addalin/cameranetwork/blob/3552f2453f3d42942ae6f90c2245b9ccb7c3dbce/CameraNetwork/controller.py#L1095-L1178): +reads the sunphotometer measurements according to 3 channels at the requested day and hour. +Then estimates the location of the pixel on the image plane corresponding to Almucantar measurement angles. +Then the radiometric fit is estimated between sunphotometer measurements to camera samples. + +The radiometric results are saved to radiometric.pkl under the camera's folder. +##### Questions regarding radiometric calibration: +1. What are the final conversion units? +2. What inputs/changes are required for a new experiment? + +### TODO: Other issues to cover regarding image pipeline: +1. Space curving - the transition from 2d and 3d. +2. Calculate pixels phase function.? +3. Intrinsic calibration. \ No newline at end of file diff --git a/scripts/start_server.py b/scripts/start_server.py index a85f5e4..95f8a45 100755 --- a/scripts/start_server.py +++ b/scripts/start_server.py @@ -101,8 +101,8 @@ def main(): # # Setup. # Note: - # The controller is intialized first, for some reasons: - # - Initialize and get camera infor. + # The controller is initialized first, for some reasons: + # - Initialize and get camera info. # - Pass a pointer to the controller to the server. # controller = Controller(offline=offline, local_path=args.local_path) @@ -147,7 +147,7 @@ def main(): # I delay the reboot so that the tunnel will stay open and # enable debugging. # - logging.exception('Rebooting. Unkown error:\n{}'.format(repr(e))) + logging.exception('Rebooting. Unknown error:\n{}'.format(repr(e))) logging.shutdown() time.sleep(120) # TODO Long term fix @@ -189,7 +189,7 @@ def main(): # I delay the reboot so that the tunnel will stay open and # enable debugging. # - logging.exception('Rebooting. Unkown error:\n{}'.format(repr(e))) + logging.exception('Rebooting. Unknown error:\n{}'.format(repr(e))) logging.shutdown() time.sleep(120) # TODO Long term fix diff --git a/scripts_calibrate/calibrate_camera.py b/scripts_calibrate/calibrate_camera.py index a6d58e2..2b84b1b 100644 --- a/scripts_calibrate/calibrate_camera.py +++ b/scripts_calibrate/calibrate_camera.py @@ -205,7 +205,7 @@ def main(): img, _, _ = cam.capture(settings, frames_num=1) # - # Save image for debuging the calibration process. + # Save image for debugging the calibration process. # cv2.imwrite( os.path.join(results_path, 'geometric', 'img_{:03}.jpg'.format(img_index)), diff --git a/scripts_client/Sessions/Default%20Settings b/scripts_client/Sessions/Default%20Settings index 237a709..fd2c7a2 100644 --- a/scripts_client/Sessions/Default%20Settings +++ b/scripts_client/Sessions/Default%20Settings @@ -3,11 +3,7 @@ SCPAutoPwd\0\ ACSinUTF\0\ Comment\\ CtrlTabSwitch\0\ -<<<<<<< HEAD -Password\6b2p3\ -======= -Password\4v131\ ->>>>>>> bitbucket/master +Password\bv03p\ ForegroundOnBell\0\ SaveWindowPos\0\ WindowState\0\ From 66df21adb4ae2661595cd569d6fa02215a815270 Mon Sep 17 00:00:00 2001 From: Addalin Date: Sun, 8 Dec 2019 16:45:34 +0200 Subject: [PATCH 61/90] typos --- CameraNetwork/image_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CameraNetwork/image_utils.py b/CameraNetwork/image_utils.py index 8b57d7b..99d620d 100644 --- a/CameraNetwork/image_utils.py +++ b/CameraNetwork/image_utils.py @@ -300,7 +300,7 @@ def calc_normalization_map(self, resolution): # # Create a grid of directions. # The coordinates create a 'linear' fisheye, where the distance - # from the center ranges between 0-pi/2 linearily. + # from the center ranges between 0-pi/2 linearly. # X, Y = np.meshgrid( np.linspace(-1, 1, self.resolution), From f4661db30b1fbebaf69c5730842e84cddaffd10b Mon Sep 17 00:00:00 2001 From: Adi Vainiger Date: Sun, 8 Dec 2019 16:50:05 +0200 Subject: [PATCH 62/90] Update Image_pipeline.md --- Image_pipeline.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Image_pipeline.md b/Image_pipeline.md index 6d36f96..51c5298 100644 --- a/Image_pipeline.md +++ b/Image_pipeline.md @@ -11,7 +11,7 @@ Note: This function is called from [seekImageArray()]('CameraNetwork/controller. that means that the saved images are before prepossessing, and one needs to call one of these in order to apply the prepossessing. ## Prepossessing using GUI: -###1. Masking & Space carving: +### 1. Masking & Space carving: 1. 2D *grabcut*: choose under "Arrays" tab: "view settings"-> space carving. it creates a cloud mask based on dilation operation (Applied by a maximum filter). This operation is done in ArrayModel._update_cloud_weights() ([here](https://github.com/Addalin/cameranetwork/blob/f26cdd785dabfc6f8d217a0e9b16fa1870d26fa9/CameraNetwork/gui/main.py#L954)) 2. 2D *sunshader*: choose under "Arrays" tab: view settings-> sun shader. it creates a sunshader mask based on *erosiom* operation (Since the mask is an inversion of the sunshader.) This is done in calcSunshaderMask() ([here](https://github.com/Addalin/cameranetwork/blob/945e9e8519216d2bd8a75afa6e650367d8f7ee88/CameraNetwork/image_utils.py#L544)). @@ -41,7 +41,7 @@ Which of the objects is being used in the final mask calculation of the image? Also, maybe we need to update the mesh visualization of ROI in 3D. 3. ***TODO*** Find a way to calculate the ROI automatically based on the grid projection? -###2. Extrinsic calibration +### 2. Extrinsic calibration This proccess is done according to sun position and sunshader. The process should apply for a sunny day having clear sky, and requires two steps: 1. [handle_sunshader_scan()](https://github.com/Addalin/cameranetwork/blob/4f6a0b01111725799e6796dbf206f624a99c231b/CameraNetwork/server.py#L1066-L1088) - @@ -60,7 +60,7 @@ To save all cameras extrinsic calibration: "Arrays" --> "Save Extrinsic" (saves -###3. Radiometric calibration: +### 3. Radiometric calibration: To make radiometric calibration with a sunphotometer, the camera should stay close to the sunphotometer, and make the measurements in a clear sky day. To get the sunphotometer measurements: download files from NASA's [AERONET site](https://aeronet.gsfc.nasa.gov/cgi-bin/webtool_inv_v3?stage=3®ion=Middle_East&state=Israel&site=Technion_Haifa_IL&place_code=10&if_polarized=0). @@ -80,4 +80,4 @@ The radiometric results are saved to radiometric.pkl under the camera's folder. ### TODO: Other issues to cover regarding image pipeline: 1. Space curving - the transition from 2d and 3d. 2. Calculate pixels phase function.? -3. Intrinsic calibration. \ No newline at end of file +3. Intrinsic calibration. From f56b7dbbeb27643d9f50324a32eef08dc494a1a4 Mon Sep 17 00:00:00 2001 From: Shubi Date: Tue, 17 Dec 2019 18:55:12 +0200 Subject: [PATCH 63/90] Fix Radiometric Calibrate unknown radiometric_day --- CameraNetwork/gui/enaml_files/server_pages.enaml | 2 +- CameraNetwork/image_utils.py | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CameraNetwork/gui/enaml_files/server_pages.enaml b/CameraNetwork/gui/enaml_files/server_pages.enaml index 8bdb173..502075b 100644 --- a/CameraNetwork/gui/enaml_files/server_pages.enaml +++ b/CameraNetwork/gui/enaml_files/server_pages.enaml @@ -580,7 +580,7 @@ enamldef RadiometricControlPage(Page): server_model_, gs.MSG_TYPE_RADIOMETRIC, kwds=dict( - date=radiometric_day.date, + date=query_day.selected, # date=radiometric_day.date time_index=time_combo.items.index(time_combo.selected), residual_threshold=residual_threshold.value, save=cb_save.checked diff --git a/CameraNetwork/image_utils.py b/CameraNetwork/image_utils.py index 3ba93f3..20d3761 100644 --- a/CameraNetwork/image_utils.py +++ b/CameraNetwork/image_utils.py @@ -247,8 +247,9 @@ def undistortDirections(self, distorted): Args: distorted (array): nx2 array of distorted image coords (x, y). - Retruns: + Returns: Phi, Theta (array): Phi and Theta undistorted directions. + TODO: mask is also returned... """ if self._ocamcalib_flag: @@ -534,7 +535,7 @@ def calcSunshaderMask( # # Dilate the mask. # Note: - # The actual action is ersion, as the mask is inversion of the sunshader. + # The actual action is erosion, as the mask is inversion of the sunshader. # if dilate_size > 1: kernel = cv2.getStructuringElement( From 9a17a614d46c85f618ffc7b090b0f88a9b9ac704 Mon Sep 17 00:00:00 2001 From: Omer S Date: Thu, 26 Dec 2019 14:42:06 +0200 Subject: [PATCH 64/90] Img pipeline (#55) * Image_pipeline.md formatting and images * Update Image_pipeline.md Added link to intrinsic calibration --- Image_pipeline.md | 112 ++++++++++++++---- .../source/images/radiometric_calibration.png | Bin 0 -> 96962 bytes docs/source/images/snapshot_extrinsic.png | Bin 0 -> 16440 bytes 3 files changed, 86 insertions(+), 26 deletions(-) create mode 100644 docs/source/images/radiometric_calibration.png create mode 100644 docs/source/images/snapshot_extrinsic.png diff --git a/Image_pipeline.md b/Image_pipeline.md index 51c5298..08aa23f 100644 --- a/Image_pipeline.md +++ b/Image_pipeline.md @@ -1,26 +1,52 @@ # Image pipeline of *cameranetwork* This document describes the operations that are being done on images, -and prepares the inputs required to run 3D reconstructions using. +and prepares the inputs required to run 3D reconstructions. ## Prepossessing on board: 1. [Image capturing]('CameraNetwork/controller.py#L1578-1649'): multi shot averaging (for SNR enhancement), and for several exposure times (for HDR). 2. [Camera prepossessing]('CameraNetwork/controller.py#L1388-1527'): dark image subtraction, normalization (according to fisheye model), HDR calculation, and vignetting correction. -Note: This function is called from [seekImageArray()]('CameraNetwork/controller.py#1272), and [handle_array()]('CameraNetwork/controller.py#1221), + >Note: This function is called from [seekImageArray()]('CameraNetwork/controller.py#1272), and [handle_array()]('CameraNetwork/controller.py#1221), that means that the saved images are before prepossessing, and one needs to call one of these in order to apply the prepossessing. ## Prepossessing using GUI: ### 1. Masking & Space carving: -1. 2D *grabcut*: choose under "Arrays" tab: "view settings"-> space carving. it creates a cloud mask based on dilation operation (Applied by a maximum filter). This operation is done in ArrayModel._update_cloud_weights() ([here](https://github.com/Addalin/cameranetwork/blob/f26cdd785dabfc6f8d217a0e9b16fa1870d26fa9/CameraNetwork/gui/main.py#L954)) -2. 2D *sunshader*: choose under "Arrays" tab: view settings-> sun shader. it creates a sunshader mask based on *erosiom* operation (Since the mask is an inversion of the sunshader.) This is done in calcSunshaderMask() ([here](https://github.com/Addalin/cameranetwork/blob/945e9e8519216d2bd8a75afa6e650367d8f7ee88/CameraNetwork/image_utils.py#L544)). +1. 2D *grabcut*: + + - Choose under `Arrays` tab: `view settings` -> `space carving`. -3. 2D *ROI*: choose under "Arrays" tab:"view settings"-> ,Widgets" -> show ROI. This is a rectangular mask that determines what is the relevant area in the image that observes on the volume of interest. Currently, it is manually set. Choosing the option "Show Grid", presents the inspected volume (on the map shown as a blue cube) and it's voxel as grid projection (red scatter plot on each of the images), thus helps to set the ROI. The ROI can be uploaded from earlier sessions or saved (as .pkl file). + - It creates a cloud mask based on dilation operation (Applied by a maximum filter). -4. 2D and 3D space carving: This operation is done in Map3dModel.do_space_carving() ([here](https://github.com/Addalin/cameranetwork/blob/19efb5bbf0350d6cbd3b6d01efaaa08347b15327/CameraNetwork/gui/main.py#L317)) + - This operation is done in [ArrayModel._update_cloud_weights()](https://github.com/Addalin/cameranetwork/blob/f26cdd785dabfc6f8d217a0e9b16fa1870d26fa9/CameraNetwork/gui/main.py#L954) +2. 2D *sunshader*: -Finally,[exportData()](https://github.com/Addalin/cameranetwork/blob/02f1e7f8c0f7d88b9e603daf7ddb0b6c55a8f237/CameraNetwork/gui/main.py#L1807-L1895) saves space_carve.pkl and call to export to shdom. -[exportToShdom()](https://github.com/Addalin/cameranetwork/blob/c85e88bd0cf35bbd095744e2b2dc92600eb6e0c5/CameraNetwork/export.py#L51-L168) : includes final masking of ROI and sunshader, and it saves the sun mask separately + - choose under `Arrays` tab: `view settings` -> `sun shader`. + + - It creates a sunshader mask based on *erosion* operation Since the mask is an inversion of the sunshader.) + + - This is done in [calcSunshaderMask()](https://github.com/Addalin/cameranetwork/blob/945e9e8519216d2bd8a75afa6e650367d8f7ee88/CameraNetwork/image_utils.py#L544). + +3. 2D *ROI*: + + - Choose under `Arrays` tab: `view settings` -> `Widgets` -> `show ROI`. + + - This is a rectangular mask that determines what is the relevant area in the image that observes on the volume of interest. +Currently, it is manually set. + + - Choosing the option `Show Grid` presents the inspected volume (on the map shown as a blue cube) and it's voxel as grid projection +(red scatter plot on each of the images), thus helps to set the ROI. + + - The ROI can be uploaded from earlier sessions or saved (as .pkl file). + +4. 2D and 3D space carving: + - This operation is done in [Map3dModel.do_space_carving()](https://github.com/Addalin/cameranetwork/blob/19efb5bbf0350d6cbd3b6d01efaaa08347b15327/CameraNetwork/gui/main.py#L317) + +Finally, [exportData()](https://github.com/Addalin/cameranetwork/blob/02f1e7f8c0f7d88b9e603daf7ddb0b6c55a8f237/CameraNetwork/gui/main.py#L1807-L1895) +saves space_carve.pkl and call export to shdom. + +[exportToShdom()](https://github.com/Addalin/cameranetwork/blob/c85e88bd0cf35bbd095744e2b2dc92600eb6e0c5/CameraNetwork/export.py#L51-L168): +includes final masking of ROI and sunshader, and it saves the sun mask separately. ##### Questions regarding space carving: 3. what is the difference between a mask that is saved to the space_carve.pkl? @@ -44,35 +70,69 @@ Which of the objects is being used in the final mask calculation of the image? ### 2. Extrinsic calibration This proccess is done according to sun position and sunshader. The process should apply for a sunny day having clear sky, and requires two steps: -1. [handle_sunshader_scan()](https://github.com/Addalin/cameranetwork/blob/4f6a0b01111725799e6796dbf206f624a99c231b/CameraNetwork/server.py#L1066-L1088) - -calculates sun position on the image plane (`measured_positions`), sun shader angle, the color value, and then save all to `sun_positions.csv`(under sun_positions folder). -This process is done every ~6 min. +1. [handle_sunshader_scan()](https://github.com/Addalin/cameranetwork/blob/4f6a0b01111725799e6796dbf206f624a99c231b/CameraNetwork/server.py#L1066-L1088) + + - calculates sun position on the image plane (`measured_positions`), sun shader angle, the color value, and then save all to `sun_positions.csv`(under sun_positions folder). + + - This process is done every ~6 min. 2. [handle_extrinsic()](https://github.com/Addalin/cameranetwork/blob/3552f2453f3d42942ae6f90c2245b9ccb7c3dbce/CameraNetwork/controller.py#L965-L1070) - -loads `measured_positions` from `sun_positions.csv`, and calculates the `measured_directions` according to the fisheye model (undistortion) the on a unit sphere. -The fisheye model is pre-determined during intrinsic calibration process (add link). -Using the measurements times in `sun_positions.csv` and *ephem*, the function calculates sun directions `calculated_directions`. + + - loads `measured_positions` from `sun_positions.csv` +and calculates the `measured_directions` according to the fisheye model (undistortion) +on a unit sphere. + + - The fisheye model is pre-determined during [intrinsic calibration process](https://github.com/Addalin/cameranetwork/blob/3552f2453f3d42942ae6f90c2245b9ccb7c3dbce/CameraNetwork/controller.py#L888-L901). + + - Using the measurements times in `sun_positions.csv` and *ephem*, the function calculates sun directions `calculated_directions`. And then estimates camera orientation, by doing fit of `measured_directions` to `calculated_directions`. -This process gives as well the rotation matrix *R* (camera-to-world transform ). -To apply the extrinsic calibration from the GUI: "severs"--> "choose camera" --> "Exrinsic" tab --> "extrinsic calibrate" (also saves the extrinsic_data.npy in camera folder). + - This process gives as well the rotation matrix *R* (camera-to-world transform ). + +To apply the extrinsic calibration from the GUI: + + - `severs` -> + `choose camera` -> `Exrinsic` tab -> + `extrinsic calibrate` + - Also saves the extrinsic_data.npy in camera folder. -To save all cameras extrinsic calibration: "Arrays" --> "Save Extrinsic" (saves in a specific day of captured_images folder). +To save all cameras extrinsic calibration: + - `Arrays` --> `Save Extrinsic` + + - Saves in a specific day of captured_images folder. +Graphical Result: + +[extrinsic](docs/source/images/snapshot_extrinsic.png) ### 3. Radiometric calibration: -To make radiometric calibration with a sunphotometer, the camera should stay close to the sunphotometer, and make the measurements in a clear sky day. +To perform radiometric calibration with a sunphotometer, +the camera should be close to the sunphotometer, and the measurements should be done in a clear sky day. + +To get the sunphotometer measurements: +1. download files from NASA's [AERONET site](https://aeronet.gsfc.nasa.gov/cgi-bin/webtool_inv_v3?stage=3®ion=Middle_East&state=Israel&site=Technion_Haifa_IL&place_code=10&if_polarized=0). + + - All the current files can be found under `.../data/aeronet`. + + - Some manipulation, such as deleting first rows, might be needed for new data. + + - The meaning of numbers and measurements can be found [here](https://aeronet.gsfc.nasa.gov/new_web/units.html). + - Specifically: irradiance sunphotometer units are [uW/cm^2/sr/nm]. + +2. The function [handle_radiometric()](https://github.com/Addalin/cameranetwork/blob/3552f2453f3d42942ae6f90c2245b9ccb7c3dbce/CameraNetwork/controller.py#L1095-L1178): + + - reads the sunphotometer measurements according to 3 channels at the requested day and hour. + + - Then estimates the location of the pixel on the image plane corresponding to Almucantar measurement angles. + + - Then the radiometric fit is estimated between sunphotometer measurements to camera samples. + +3. The radiometric results are saved to radiometric.pkl under the camera's folder. -To get the sunphotometer measurements: download files from NASA's [AERONET site](https://aeronet.gsfc.nasa.gov/cgi-bin/webtool_inv_v3?stage=3®ion=Middle_East&state=Israel&site=Technion_Haifa_IL&place_code=10&if_polarized=0). -All the files can be found under `.../data/aeronet`). +For example: -The meaning of numbers and measurements can be found [here](https://aeronet.gsfc.nasa.gov/new_web/units.html). Specifically: irradiance sunphotometer units are [uW/cm^2/sr/nm]. -The function [handle_radiometric()](https://github.com/Addalin/cameranetwork/blob/3552f2453f3d42942ae6f90c2245b9ccb7c3dbce/CameraNetwork/controller.py#L1095-L1178): -reads the sunphotometer measurements according to 3 channels at the requested day and hour. -Then estimates the location of the pixel on the image plane corresponding to Almucantar measurement angles. -Then the radiometric fit is estimated between sunphotometer measurements to camera samples. +[Radiometric](docs/source/images/radiometric_calibration.png) -The radiometric results are saved to radiometric.pkl under the camera's folder. ##### Questions regarding radiometric calibration: 1. What are the final conversion units? 2. What inputs/changes are required for a new experiment? diff --git a/docs/source/images/radiometric_calibration.png b/docs/source/images/radiometric_calibration.png new file mode 100644 index 0000000000000000000000000000000000000000..886c255f6af404c60b0c2c6cef7fbcbe060b559d GIT binary patch literal 96962 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 S?DGU|$(6P57b!h_{(k|rPlUz* literal 0 HcmV?d00001 diff --git a/docs/source/images/snapshot_extrinsic.png b/docs/source/images/snapshot_extrinsic.png new file mode 100644 index 0000000000000000000000000000000000000000..cf2f7024bbc2b58270a5c7bd849020d95e753a8e GIT binary patch literal 16440 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 Date: Thu, 26 Dec 2019 14:44:30 +0200 Subject: [PATCH 65/90] Update Image_pipeline.md --- Image_pipeline.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Image_pipeline.md b/Image_pipeline.md index 08aa23f..bce93cf 100644 --- a/Image_pipeline.md +++ b/Image_pipeline.md @@ -103,7 +103,7 @@ To save all cameras extrinsic calibration: Graphical Result: -[extrinsic](docs/source/images/snapshot_extrinsic.png) +![extrinsic](docs/source/images/snapshot_extrinsic.png) ### 3. Radiometric calibration: To perform radiometric calibration with a sunphotometer, @@ -131,7 +131,7 @@ To get the sunphotometer measurements: For example: -[Radiometric](docs/source/images/radiometric_calibration.png) +![Radiometric](docs/source/images/radiometric_calibration.png) ##### Questions regarding radiometric calibration: 1. What are the final conversion units? From aabeb2c3fc608b9db0c8f247539b6eb72a8863cf Mon Sep 17 00:00:00 2001 From: Addalin Date: Wed, 1 Jan 2020 15:17:04 +0200 Subject: [PATCH 66/90] typos update proxy ip update ROI pickle Adding and updating Image_pipline.md --- Image_pipeline.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Image_pipeline.md b/Image_pipeline.md index 6d36f96..c7e85ef 100644 --- a/Image_pipeline.md +++ b/Image_pipeline.md @@ -77,6 +77,9 @@ The radiometric results are saved to radiometric.pkl under the camera's folder. 1. What are the final conversion units? 2. What inputs/changes are required for a new experiment? +###4. 3D grid and space curving: + + ### TODO: Other issues to cover regarding image pipeline: 1. Space curving - the transition from 2d and 3d. 2. Calculate pixels phase function.? From 2583c47e52d937ba70c5d7f9293d970c0fcba428 Mon Sep 17 00:00:00 2001 From: Addalin Date: Thu, 2 Jan 2020 19:59:07 +0200 Subject: [PATCH 67/90] typos adding comments adding TODO's updateing image_pipline regarding 3D grid and space carving fixing bug: color_consistency - adding to the decision machine eps. --- CameraNetwork/export.py | 72 ++++++++++++++++---------------- CameraNetwork/global_settings.py | 2 +- CameraNetwork/gui/main.py | 17 ++++---- CameraNetwork/image_utils.py | 14 ++++--- Image_pipeline.md | 26 ++++++++++++ 5 files changed, 82 insertions(+), 49 deletions(-) diff --git a/CameraNetwork/export.py b/CameraNetwork/export.py index 74eb4ae..ecd7690 100644 --- a/CameraNetwork/export.py +++ b/CameraNetwork/export.py @@ -1,38 +1,38 @@ -## -## Copyright (C) 2017, Amit Aides, all rights reserved. -## -## This file is part of Camera Network -## (see https://bitbucket.org/amitibo/cameranetwork_git). -## -## Redistribution and use in source and binary forms, with or without modification, -## are permitted provided that the following conditions are met: -## -## 1) The software is provided under the terms of this license strictly for -## academic, non-commercial, not-for-profit purposes. -## 2) Redistributions of source code must retain the above copyright notice, this -## list of conditions (license) and the following disclaimer. -## 3) Redistributions in binary form must reproduce the above copyright notice, -## this list of conditions (license) and the following disclaimer in the -## documentation and/or other materials provided with the distribution. -## 4) The name of the author may not be used to endorse or promote products derived -## from this software without specific prior written permission. -## 5) As this software depends on other libraries, the user must adhere to and keep -## in place any licensing terms of those libraries. -## 6) Any publications arising from the use of this software, including but not -## limited to academic journal and conference publications, technical reports and -## manuals, must cite the following works: -## Dmitry Veikherman, Amit Aides, Yoav Y. Schechner and Aviad Levis, "Clouds in The Cloud" Proc. ACCV, pp. 659-674 (2014). -## -## THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED -## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -## EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -## INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -## BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -## LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -## OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -## ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.## +## +## Copyright (C) 2017, Amit Aides, all rights reserved. +## +## This file is part of Camera Network +## (see https://bitbucket.org/amitibo/cameranetwork_git). +## +## Redistribution and use in source and binary forms, with or without modification, +## are permitted provided that the following conditions are met: +## +## 1) The software is provided under the terms of this license strictly for +## academic, non-commercial, not-for-profit purposes. +## 2) Redistributions of source code must retain the above copyright notice, this +## list of conditions (license) and the following disclaimer. +## 3) Redistributions in binary form must reproduce the above copyright notice, +## this list of conditions (license) and the following disclaimer in the +## documentation and/or other materials provided with the distribution. +## 4) The name of the author may not be used to endorse or promote products derived +## from this software without specific prior written permission. +## 5) As this software depends on other libraries, the user must adhere to and keep +## in place any licensing terms of those libraries. +## 6) Any publications arising from the use of this software, including but not +## limited to academic journal and conference publications, technical reports and +## manuals, must cite the following works: +## Dmitry Veikherman, Amit Aides, Yoav Y. Schechner and Aviad Levis, "Clouds in The Cloud" Proc. ACCV, pp. 659-674 (2014). +## +## THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +## EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +## INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +## BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +## LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +## OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +## ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.## """Utilites for handling export to solver. """ from __future__ import division @@ -63,7 +63,7 @@ def exportToShdom( base_path (str): Path to store export data. array_items (list): List of array items. grid (list): List of grid array. This is the grid to reconstruct. - lat, lon, lat (float): The latitude, longitude and altitude of the center + lat, lon, alt (float): The latitude, longitude and altitude of the center of the grid. progress_callback (function): Callback function to update the (GUI) with the progress of the export. diff --git a/CameraNetwork/global_settings.py b/CameraNetwork/global_settings.py index 67bf6ca..ca5ff8f 100644 --- a/CameraNetwork/global_settings.py +++ b/CameraNetwork/global_settings.py @@ -264,7 +264,7 @@ # # Amit: # The default radiometric settings were taken from camera 109. -# +# TODO: what are the units? DEFAULT_RADIOMETRIC_SETTINGS = \ [0.077523644728250449, 0.11163146919636868, 0.11847859109577621] diff --git a/CameraNetwork/gui/main.py b/CameraNetwork/gui/main.py index ec457a8..fc8f278 100644 --- a/CameraNetwork/gui/main.py +++ b/CameraNetwork/gui/main.py @@ -883,7 +883,7 @@ def projectECEF(self, ECEF_pts, filter_fov=True, errstate='warn'): Args: ECEF_pts (tuple of arrays): points in ECEF coords. - fiter_fov (bool, optional): If True, points below the horizion + filter_fov (bool, optional): If True, points below the horizion will not be returned. If false, the indices of these points will be returned. @@ -938,17 +938,20 @@ def _update_cloud_weights(self, change): if change["value"] is None: return + # The following calculation is based on page 23 in Amit's thesis (Computation of cloud scores maps) + # TODO: consider to change cloud score in 2D . r = self.img_array[..., 0].astype(np.float) b = self.img_array[..., 2].astype(np.float) cloud_weights = np.zeros_like(r) eps = np.finfo(b.dtype).eps - threshold = self.cloud_weight_threshold + threshold = self.cloud_weight_threshold # currently 0.8 ratio = r / (b+eps) ratio_mask = ratio>threshold cloud_weights[ratio_mask] = \ (2-threshold)/(1-threshold)*(ratio[ratio_mask]-threshold)/(ratio[ratio_mask]+1-threshold) + #The current calculation: ( 1.2 / 0.2 ) * (r - 0.8 ) / (r + 0.2 ) # # Limit cloud_weights to 1. @@ -1403,15 +1406,15 @@ class MainModel(Atom): # # Reconstruction Grid parameters. # Note: - # There are two grids used: + # There are three grids used: # - GRID_VIS_ECEF: Used for visualization on the camera array. # - GRID_ECEF: Used for the visual hull algorithm. # - GRID_NED: The grid exported for reconstruction. # - delx = Float(150) - dely = Float(150) - delz = Float(100) - TOG = Float(12000) + delx = Float(150) # [meters] + dely = Float(150) # [meters] + delz = Float(100) # [meters] + TOG = Float(12000) # [meters] GRID_VIS_ECEF = Tuple() GRID_ECEF = Tuple() GRID_NED = Tuple() diff --git a/CameraNetwork/image_utils.py b/CameraNetwork/image_utils.py index cf0101e..e647e47 100644 --- a/CameraNetwork/image_utils.py +++ b/CameraNetwork/image_utils.py @@ -33,7 +33,8 @@ ## LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE ## OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ## ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.## -"""General utilities for image processing. +""" +General utilities for image processing. """ from __future__ import division, absolute_import, print_function from CameraNetwork.utils import obj @@ -701,23 +702,26 @@ def calc_visual_hull( # Calculate the collective clouds weight. # weights = np.array(grid_scores).prod(axis=0) - + # TODO: Consider to change the prod to other arithmethic calculation. (maybe OR ?) (I think this removes clouds edges from the space carving) # # voxels that are not seen (outside the fov/sun_mask) by at least two cameras # are zeroed. # grid_masks = np.array(grid_masks).sum(axis=0) weights[grid_masks<2] = 0 + + # + # More cameras viewing the voxel increase it's own score. + # nzi = weights > 0 weights[nzi] = weights[nzi]**(1/grid_masks[nzi]) # - # Calculate color consistency as described in the article + # Calculate color consistency as described in the article. (see Equation 5.5 in p.54 , Amit's thesis) # std_rgb = np.dstack(cloud_rgb).std(axis=2).mean(axis=1) mean_rgb = np.dstack(cloud_rgb).mean(axis=2).mean(axis=1) - color_consistency = np.exp(-(std_rgb/mean_rgb)/color_consistency_sigma) - + color_consistency = np.exp(-(std_rgb/(mean_rgb + np.finfo(float).eps))/color_consistency_sigma) # # Take into account both the clouds weights and photo consistency. # diff --git a/Image_pipeline.md b/Image_pipeline.md index 263288a..e9d6772 100644 --- a/Image_pipeline.md +++ b/Image_pipeline.md @@ -138,7 +138,33 @@ For example: 2. What inputs/changes are required for a new experiment? ###4. 3D grid and space curving: +The [geographic coordinate systems](https://en.wikipedia.org/wiki/Geographic_coordinate_system) that are used here are: +1. The ECEF is version used as the common 3D grid that is being used for moving the view-of-point arround the grid conveniently according to cameras positions. +2. The NED (X,Y,Z) is used for visualization and reconstruction grid. +See their definitions in the project [here](https://github.com/Addalin/cameranetwork/blob/c69dda2adc041dc2dc98660b34e57769213f23a9/CameraNetwork/gui/main.py#L1393-L1420). + +There are several conversion processes that are being done: + +1. [ProjectGrid()](https://github.com/Addalin/cameranetwork/blob/fa7d2b2f29d5217cdc2b216ae55d147393e9db0d/CameraNetwork/image_utils.py#L615-L645) - Projecting the 3D grid of the interest volume, onto image plane. Which uses ecef2ned in [projectECEF()](https://github.com/Addalin/cameranetwork/blob/c69dda2adc041dc2dc98660b34e57769213f23a9/CameraNetwork/gui/main.py#L881-L933). +The 3D NED grid is of size 12 X 12 X 10 [km^3], having 81 X 81 X 121 voxels, each voxel size is of 150 X 150 X 100 [m^3]. +The grid is projected to a 2d grid, shown as red dots on image plane). +This is done when choosing: `View settings`-->`Widgets`--> `show grid`. +// TODO : add snapshots of the 3d view and image with red dotted grid. +This method is also being used when computing the [space carve](https://github.com/Addalin/cameranetwork/blob/fa7d2b2f29d5217cdc2b216ae55d147393e9db0d/CameraNetwork/image_utils.py#L738-L810) score per each view. +This is done when choosing in the map view `Space carving`-->`Show space carving`. +// TODO : add snapshots of the map with the space carving. +Another usage of this method is when applying [Update LOS](https://github.com/Addalin/cameranetwork/blob/c69dda2adc041dc2dc98660b34e57769213f23a9/CameraNetwork/gui/main.py#L620-L667). Ths function converts the also uses +LOS of a single image to the epipolar lines on all other images. +// TODO : add snapshot of this optsion and how to get to it. + +2. [Space carving](https://github.com/Addalin/cameranetwork/blob/c69dda2adc041dc2dc98660b34e57769213f23a9/CameraNetwork/gui/main.py#L317-L337) - for the grid. (// TODOL add snapshot and explantaion here.). Calls for space carve on each view separatly using proccess pool. + +[Space carving](https://github.com/Addalin/cameranetwork/blob/fa7d2b2f29d5217cdc2b216ae55d147393e9db0d/CameraNetwork/image_utils.py#L739-L810) - for each view, projecting the the 3d grid onto the image plane. +This process is done according to the no. of pertubations chosen by the user (// TODOL add snapshot and explantaion here.). At the end receiving mean of scores for the voxels that are seen from this view (a.k.a `grid_score`). The grid score is based on cloud score that is done on the 2D image. +[The cloud scoring](https://github.com/Addalin/cameranetwork/blob/c69dda2adc041dc2dc98660b34e57769213f23a9/CameraNetwork/gui/main.py#L936-L987) in the image plane is based on page 23 in Amit's thesis (Computation of cloud scores maps) ( cloud sore is caled `cloud_weights`) + +Then the grid level method, collects scores from all servers. ### TODO: Other issues to cover regarding image pipeline: 1. Space curving - the transition from 2d and 3d. From 2b306dde29cc867beb6956291a4b06e5b87e9b7c Mon Sep 17 00:00:00 2001 From: Addalin Date: Sun, 5 Jan 2020 17:40:46 +0200 Subject: [PATCH 68/90] updating image_pipline.md --- Image_pipeline.md | 41 ++++++++++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/Image_pipeline.md b/Image_pipeline.md index e9d6772..26735b8 100644 --- a/Image_pipeline.md +++ b/Image_pipeline.md @@ -110,14 +110,14 @@ To perform radiometric calibration with a sunphotometer, the camera should be close to the sunphotometer, and the measurements should be done in a clear sky day. To get the sunphotometer measurements: -1. download files from NASA's [AERONET site](https://aeronet.gsfc.nasa.gov/cgi-bin/webtool_inv_v3?stage=3®ion=Middle_East&state=Israel&site=Technion_Haifa_IL&place_code=10&if_polarized=0). +1. Download files from NASA's [AERONET site](https://aeronet.gsfc.nasa.gov/cgi-bin/webtool_inv_v3?stage=3®ion=Middle_East&state=Israel&site=Technion_Haifa_IL&place_code=10&if_polarized=0). - All the current files can be found under `.../data/aeronet`. - Some manipulation, such as deleting first rows, might be needed for new data. - The meaning of numbers and measurements can be found [here](https://aeronet.gsfc.nasa.gov/new_web/units.html). - - Specifically: irradiance sunphotometer units are [uW/cm^2/sr/nm]. + - Specifically: irradiance sunphotometer units are [uW/cm^2/sr/nm]. (\\TODO : check how to write this in a letex way...) 2. The function [handle_radiometric()](https://github.com/Addalin/cameranetwork/blob/3552f2453f3d42942ae6f90c2245b9ccb7c3dbce/CameraNetwork/controller.py#L1095-L1178): @@ -137,10 +137,10 @@ For example: 1. What are the final conversion units? 2. What inputs/changes are required for a new experiment? -###4. 3D grid and space curving: +### 4. 3D grid and space curving: The [geographic coordinate systems](https://en.wikipedia.org/wiki/Geographic_coordinate_system) that are used here are: -1. The ECEF is version used as the common 3D grid that is being used for moving the view-of-point arround the grid conveniently according to cameras positions. -2. The NED (X,Y,Z) is used for visualization and reconstruction grid. +1. The ECEF (earth-centered, earth-fixed frame) is the common 3D grid that is being used for moving the point-of-view (the observing camera) around the grid conveniently according to cameras' locations. +2. The NED (North East Down) grid (X,Y,Z) is used for visualization and reconstruction grid. See their definitions in the project [here](https://github.com/Addalin/cameranetwork/blob/c69dda2adc041dc2dc98660b34e57769213f23a9/CameraNetwork/gui/main.py#L1393-L1420). @@ -148,25 +148,36 @@ There are several conversion processes that are being done: 1. [ProjectGrid()](https://github.com/Addalin/cameranetwork/blob/fa7d2b2f29d5217cdc2b216ae55d147393e9db0d/CameraNetwork/image_utils.py#L615-L645) - Projecting the 3D grid of the interest volume, onto image plane. Which uses ecef2ned in [projectECEF()](https://github.com/Addalin/cameranetwork/blob/c69dda2adc041dc2dc98660b34e57769213f23a9/CameraNetwork/gui/main.py#L881-L933). The 3D NED grid is of size 12 X 12 X 10 [km^3], having 81 X 81 X 121 voxels, each voxel size is of 150 X 150 X 100 [m^3]. -The grid is projected to a 2d grid, shown as red dots on image plane). +The 3D grid is projected to a 2D grid on the image plane, shown as red dots on image plane). This is done when choosing: `View settings`-->`Widgets`--> `show grid`. + // TODO : add snapshots of the 3d view and image with red dotted grid. + This method is also being used when computing the [space carve](https://github.com/Addalin/cameranetwork/blob/fa7d2b2f29d5217cdc2b216ae55d147393e9db0d/CameraNetwork/image_utils.py#L738-L810) score per each view. This is done when choosing in the map view `Space carving`-->`Show space carving`. + // TODO : add snapshots of the map with the space carving. + Another usage of this method is when applying [Update LOS](https://github.com/Addalin/cameranetwork/blob/c69dda2adc041dc2dc98660b34e57769213f23a9/CameraNetwork/gui/main.py#L620-L667). Ths function converts the also uses LOS of a single image to the epipolar lines on all other images. -// TODO : add snapshot of this optsion and how to get to it. -2. [Space carving](https://github.com/Addalin/cameranetwork/blob/c69dda2adc041dc2dc98660b34e57769213f23a9/CameraNetwork/gui/main.py#L317-L337) - for the grid. (// TODOL add snapshot and explantaion here.). Calls for space carve on each view separatly using proccess pool. +// TODO : add snapshot of showing LOS and how to get to it. + +2. The main process [do_space_carving()](https://github.com/Addalin/cameranetwork/blob/c69dda2adc041dc2dc98660b34e57769213f23a9/CameraNetwork/gui/main.py#L317-L337) of the 3D grid, calls visual hall calculation, using a process pool. +[calc_visual_hull()](https://github.com/Addalin/cameranetwork/blob/2583c47e52d937ba70c5d7f9293d970c0fcba428/CameraNetwork/image_utils.py#L655-L739) runs space carve per each view separately, and collects their results. + +(// TODOL add snapshot and explanation here.). + +[space_carve_view()](https://github.com/Addalin/cameranetwork/blob/fa7d2b2f29d5217cdc2b216ae55d147393e9db0d/CameraNetwork/image_utils.py#L739-L810), projects the the 3D grid onto the corresponding image plane. +This process is done according to the number of perturbations chosen by the user. The final `grid_score` is the mean value throughout the perturbations, for the voxels that are seen from this view. + +// TODOL add snapshot and explanation here.). + +The `grid score` is based on the `cloud_weights`. This is done at [_update_cloud_weights()](https://github.com/Addalin/cameranetwork/blob/c69dda2adc041dc2dc98660b34e57769213f23a9/CameraNetwork/gui/main.py#L936-L985), on the 2D image plane (see section *Computation of cloud scores maps*, p.23, Amit's Aides thesis). -[Space carving](https://github.com/Addalin/cameranetwork/blob/fa7d2b2f29d5217cdc2b216ae55d147393e9db0d/CameraNetwork/image_utils.py#L739-L810) - for each view, projecting the the 3d grid onto the image plane. -This process is done according to the no. of pertubations chosen by the user (// TODOL add snapshot and explantaion here.). At the end receiving mean of scores for the voxels that are seen from this view (a.k.a `grid_score`). The grid score is based on cloud score that is done on the 2D image. -[The cloud scoring](https://github.com/Addalin/cameranetwork/blob/c69dda2adc041dc2dc98660b34e57769213f23a9/CameraNetwork/gui/main.py#L936-L987) in the image plane is based on page 23 in Amit's thesis (Computation of cloud scores maps) ( cloud sore is caled `cloud_weights`) -Then the grid level method, collects scores from all servers. +Following that, [calc_visual_hull()](https://github.com/Addalin/cameranetwork/blob/2583c47e52d937ba70c5d7f9293d970c0fcba428/CameraNetwork/image_utils.py#L655-L739), collects scores from all servers/ subprocesses. ### TODO: Other issues to cover regarding image pipeline: -1. Space curving - the transition from 2d and 3d. -2. Calculate pixels phase function.? -3. Intrinsic calibration. +1. Calculate pixels phase function.? +2. Intrinsic calibration. From 54682865e6333b192e2225691ef603acad82de91 Mon Sep 17 00:00:00 2001 From: Omer S Date: Wed, 8 Jan 2020 11:09:10 +0200 Subject: [PATCH 69/90] Img pipeline (#63) * Image_pipeline.md formatting and images * Update Image_pipeline.md Added link to intrinsic calibration * typos and images --- CameraNetwork/mdp/__init__.py | 2 +- CameraNetwork/mdp/broker.py | 6 +++--- CameraNetwork/mdp/worker.py | 2 +- Image_pipeline.md | 9 +++++++-- .../161001_161031_Technion_Haifa_IL.alm | 3 --- .../170501_170531_Technion_Haifa_IL.alm | 3 --- .../Screenshot from 2019-12-02 09-06-41.png | Bin 0 -> 716567 bytes docs/source/images/beta_map.png | Bin 0 -> 148608 bytes docs/source/images/camera_array.png | Bin 0 -> 716135 bytes docs/source/images/los2.png | Bin 0 -> 695391 bytes docs/source/images/map_los_roi_grid.png | Bin 0 -> 137356 bytes .../images/roi_grid_los_and_settings.png | Bin 0 -> 902205 bytes .../images/server_settings_capture_tab.png | Bin 0 -> 29254 bytes .../images/server_settings_general_tab.png | Bin 0 -> 25896 bytes docs/source/images/space_carving.png | Bin 0 -> 227377 bytes docs/source/images/square_roi_and_LOS.png | Bin 0 -> 725414 bytes docs/source/images/square_roi_grid_LOS.png | Bin 0 -> 946955 bytes scripts_client/start_local.py | 3 ++- 18 files changed, 14 insertions(+), 14 deletions(-) create mode 100644 docs/source/images/Screenshot from 2019-12-02 09-06-41.png create mode 100644 docs/source/images/beta_map.png create mode 100644 docs/source/images/camera_array.png create mode 100644 docs/source/images/los2.png create mode 100644 docs/source/images/map_los_roi_grid.png create mode 100644 docs/source/images/roi_grid_los_and_settings.png create mode 100644 docs/source/images/server_settings_capture_tab.png create mode 100644 docs/source/images/server_settings_general_tab.png create mode 100644 docs/source/images/space_carving.png create mode 100644 docs/source/images/square_roi_and_LOS.png create mode 100644 docs/source/images/square_roi_grid_LOS.png diff --git a/CameraNetwork/mdp/__init__.py b/CameraNetwork/mdp/__init__.py index 619bc2c..7854c7d 100644 --- a/CameraNetwork/mdp/__init__.py +++ b/CameraNetwork/mdp/__init__.py @@ -46,7 +46,7 @@ process offering exactly one service in request/reply fashion. client - independant process using a service in request/reply fashion. + independent process using a service in request/reply fashion. broker process routing messages from a client to a worker and back. diff --git a/CameraNetwork/mdp/broker.py b/CameraNetwork/mdp/broker.py index 0e62011..bbe918c 100644 --- a/CameraNetwork/mdp/broker.py +++ b/CameraNetwork/mdp/broker.py @@ -81,7 +81,7 @@ class MDPBroker(object): requested service. This base class defines the overall functionality and the API. Subclasses are - ment to implement additional features (like logging). + meant to implement additional features (like logging). The broker uses ZMQ ROUTER sockets to deal with clients and workers. These sockets are wrapped in pyzmq streams to fit well into IOLoop. @@ -628,7 +628,7 @@ class WorkerRep(object): """Helper class to represent a worker in the broker. Instances of this class are used to track the state of the attached worker - and carry the timers for incomming and outgoing heartbeats. + and carry the timers for incoming and outgoing heartbeats. :param proto: the worker protocol id. :type wid: str @@ -655,7 +655,7 @@ def __init__(self, proto, wid, service, stream): def send_uniqueid(self): """Called on W_READY from worker. - Sends unique id tu worker. + Sends unique id to worker. """ logging.debug('Broker to Worker {} sending unique id: {}'.format( diff --git a/CameraNetwork/mdp/worker.py b/CameraNetwork/mdp/worker.py index bde1755..fa59cdd 100644 --- a/CameraNetwork/mdp/worker.py +++ b/CameraNetwork/mdp/worker.py @@ -277,7 +277,7 @@ def _on_message(self, msg): self.curr_liveness = 0 elif msg_type == W_READY: # - # The message contains the unique id attahced to the worker. + # The message contains the unique id attached to the worker. # if len(msg) > 0: # diff --git a/Image_pipeline.md b/Image_pipeline.md index 26735b8..fabc7ca 100644 --- a/Image_pipeline.md +++ b/Image_pipeline.md @@ -95,6 +95,7 @@ To apply the extrinsic calibration from the GUI: `extrinsic calibrate` - Also saves the extrinsic_data.npy in camera folder. + To save all cameras extrinsic calibration: - `Arrays` --> `Save Extrinsic` @@ -105,11 +106,13 @@ Graphical Result: ![extrinsic](docs/source/images/snapshot_extrinsic.png) + ### 3. Radiometric calibration: To perform radiometric calibration with a sunphotometer, the camera should be close to the sunphotometer, and the measurements should be done in a clear sky day. To get the sunphotometer measurements: + 1. Download files from NASA's [AERONET site](https://aeronet.gsfc.nasa.gov/cgi-bin/webtool_inv_v3?stage=3®ion=Middle_East&state=Israel&site=Technion_Haifa_IL&place_code=10&if_polarized=0). - All the current files can be found under `.../data/aeronet`. @@ -117,7 +120,8 @@ To get the sunphotometer measurements: - Some manipulation, such as deleting first rows, might be needed for new data. - The meaning of numbers and measurements can be found [here](https://aeronet.gsfc.nasa.gov/new_web/units.html). - - Specifically: irradiance sunphotometer units are [uW/cm^2/sr/nm]. (\\TODO : check how to write this in a letex way...) + + - Specifically: irradiance sunphotometer units are ![formula](https://render.githubusercontent.com/render/math?math=uW/cm^2/sr/nm). 2. The function [handle_radiometric()](https://github.com/Addalin/cameranetwork/blob/3552f2453f3d42942ae6f90c2245b9ccb7c3dbce/CameraNetwork/controller.py#L1095-L1178): @@ -131,7 +135,8 @@ To get the sunphotometer measurements: For example: -![Radiometric](docs/source/images/radiometric_calibration.png) +[Radiometric](docs/source/images/radiometric_calibration.png) + ##### Questions regarding radiometric calibration: 1. What are the final conversion units? diff --git a/data/aeronet/2016_10/161001_161031_Technion_Haifa_IL.alm b/data/aeronet/2016_10/161001_161031_Technion_Haifa_IL.alm index 5b10a36..c9f7dc3 100644 --- a/data/aeronet/2016_10/161001_161031_Technion_Haifa_IL.alm +++ b/data/aeronet/2016_10/161001_161031_Technion_Haifa_IL.alm @@ -1,6 +1,3 @@ -These data are raw data with calibration applied. -Location=Technion_Haifa_IL,long=35.025,lat=32.776,elev=230,Nmeas=60,PI=Yoav_Y._Schechner_and_Dietrich_Althausen,Email=yoav@ee.technion.ac.il_and_dietrich@tropos.de -Almucantars,All Points,UNITS can be found at,,, http://aeronet.gsfc.nasa.gov/data_menu.html Date(dd-mm-yyyy),Time(hh:mm:ss),Wavelength(um),SolarZenithAngle(degrees),0.000000,-6.000000,-5.000000,-4.000000,-3.500000,-3.000000,-2.500000,-2.000000,2.000000,2.500000,3.000000,3.500000,4.000000,5.000000,6.000000,6.000000,7.000000,8.000000,10.000000,12.000000,14.000000,16.000000,18.000000,20.000000,25.000000,30.000000,35.000000,40.000000,45.000000,50.000000,60.000000,70.000000,80.000000,90.000000,100.000000,120.000000,140.000000,160.000000,180.000000,-180.000000,-160.000000,-140.000000,-120.000000,-100.000000,-90.000000,-80.000000,-70.000000,-60.000000,-50.000000,-45.000000,-40.000000,-35.000000,-30.000000,-25.000000,-20.000000,-18.000000,-16.000000,-14.000000,-12.000000,-10.000000,-8.000000,-7.000000,-6.000000,-6.000000,-5.000000,-4.000000,-3.500000,-3.000000,-2.500000,-2.000000,2.000000,2.500000,3.000000,3.500000,4.000000,5.000000,6.000000 01:10:2016,04:49:59,1.020200,75.043157,-100,19.089889,26.014818,37.202538,45.492234,56.578859,-100.000000,-100.000000,-100.000000,-100.000000,57.825684,46.469474,38.044986,26.537136,19.393171,19.468594,14.723387,11.586547,7.789540,5.731251,4.509734,3.740241,3.199914,2.815167,2.163411,1.766050,1.465401,1.236235,1.059630,0.929278,0.719034,0.412078,0.294342,0.021024,0.027332,0.365825,0.401566,0.443615,0.460434,0.456229,0.433103,0.395259,0.365825,0.393156,0.433103,0.496176,0.594991,0.750571,0.962918,1.105883,1.276181,1.494835,1.782869,2.180230,2.821474,3.208323,3.736036,4.499222,5.684998,7.709647,11.443581,14.538372,19.146921,19.089889,26.014818,37.202538,45.492234,56.578859,-100.000000,-100.000000,-100.000000,-100.000000,-100.000000,-100.000000,-100.000000,-100.000000,-100.000000 01:10:2016,04:51:16,1.641700,74.782756,-100,5.617560,7.206432,9.523260,11.068920,12.946980,-100.000000,-100.000000,-100.000000,-100.000000,13.259436,11.261712,9.652896,7.299504,5.674068,5.694012,4.524795,3.670527,2.541198,1.869750,1.442616,1.155921,0.954819,0.806901,0.574221,0.427134,0.334893,0.270906,0.221877,0.183651,0.132960,0.091410,0.221046,0.004986,0.007479,0.051522,0.054015,0.058170,0.060663,0.059001,0.056508,0.053184,0.053184,0.059001,0.068142,0.081438,0.099720,0.140439,0.191130,0.226032,0.275061,0.338217,0.429627,0.566742,0.806901,0.953157,1.155921,1.449264,1.888032,2.565297,3.671358,4.503189,5.641659,5.617560,7.206432,9.523260,11.068920,12.946980,-100.000000,-100.000000,-100.000000,-100.000000,-100.000000,-100.000000,-100.000000,-100.000000,-100.000000 diff --git a/data/aeronet/2017_05/170501_170531_Technion_Haifa_IL.alm b/data/aeronet/2017_05/170501_170531_Technion_Haifa_IL.alm index 770d294..cad0c36 100644 --- a/data/aeronet/2017_05/170501_170531_Technion_Haifa_IL.alm +++ b/data/aeronet/2017_05/170501_170531_Technion_Haifa_IL.alm @@ -1,6 +1,3 @@ -These data are raw data with calibration applied. -Location=Technion_Haifa_IL,long=35.025,lat=32.776,elev=230,Nmeas=48,PI=Yoav_Y._Schechner_and_Dietrich_Althausen,Email=yoav@ee.technion.ac.il_and_dietrich@tropos.de -Almucantars,All Points,UNITS can be found at,,, http://aeronet.gsfc.nasa.gov/data_menu.html Date(dd-mm-yyyy),Time(hh:mm:ss),Wavelength(um),SolarZenithAngle(degrees),0.000000,-6.000000,-5.000000,-4.000000,-3.500000,-3.000000,-2.500000,-2.000000,2.000000,2.500000,3.000000,3.500000,4.000000,5.000000,6.000000,6.000000,7.000000,8.000000,10.000000,12.000000,14.000000,16.000000,18.000000,20.000000,25.000000,30.000000,35.000000,40.000000,45.000000,50.000000,60.000000,70.000000,80.000000,90.000000,100.000000,120.000000,140.000000,160.000000,180.000000,-180.000000,-160.000000,-140.000000,-120.000000,-100.000000,-90.000000,-80.000000,-70.000000,-60.000000,-50.000000,-45.000000,-40.000000,-35.000000,-30.000000,-25.000000,-20.000000,-18.000000,-16.000000,-14.000000,-12.000000,-10.000000,-8.000000,-7.000000,-6.000000,-6.000000,-5.000000,-4.000000,-3.500000,-3.000000,-2.500000,-2.000000,2.000000,2.500000,3.000000,3.500000,4.000000,5.000000,6.000000 01:05:2017,04:10:41,1.020200,74.869557,-100,64.666408,77.606518,95.668044,109.000796,128.052462,-100.000000,-100.000000,-100.000000,-100.000000,132.252023,118.236415,106.815658,90.546628,78.408873,-100.000000,67.545013,59.395854,44.204238,35.967820,30.602443,26.056451,23.049201,20.912414,17.662541,13.738005,10.924427,9.260118,8.383269,5.599487,0.097901,0.095772,0.095772,0.114927,1.619616,1.413174,1.389763,1.464252,1.853726,1.787750,1.843085,2.204891,1.887779,2.055912,2.358127,2.698651,3.145588,3.916023,5.454765,6.408231,7.610706,9.751749,12.920748,16.777179,21.240169,23.806866,26.441669,30.383231,36.176391,42.884709,50.586930,56.258779,64.814438,64.666408,77.606518,95.668044,109.000796,128.052462,-100.000000,-100.000000,-100.000000,-100.000000,-100.000000,-100.000000,-100.000000,-100.000000,-100.000000 01:05:2017,04:11:53,1.641700,74.620836,-100,21.326784,25.338852,29.866140,32.970756,38.043180,-100.000000,-100.000000,-100.000000,-100.000000,34.579572,30.354768,27.180348,22.673004,19.588332,19.659798,17.249898,15.538038,12.814851,10.915185,9.440991,8.386452,7.786470,7.377618,5.809521,4.681023,3.639780,3.002403,2.893542,2.030133,0.042381,0.039888,0.034902,0.035733,0.393894,0.311625,0.284202,0.306639,0.379767,0.364809,0.413007,0.452064,0.422148,0.466191,0.586686,0.661476,0.787788,1.035426,1.493307,1.880553,2.196333,2.808780,3.922320,5.563545,7.229700,7.961811,9.141831,10.203018,11.921526,14.310651,16.663212,18.319395,21.394926,21.326784,25.338852,29.866140,32.970756,38.043180,-100.000000,-100.000000,-100.000000,-100.000000,-100.000000,-100.000000,-100.000000,-100.000000,-100.000000 diff --git a/docs/source/images/Screenshot from 2019-12-02 09-06-41.png b/docs/source/images/Screenshot from 2019-12-02 09-06-41.png new file mode 100644 index 0000000000000000000000000000000000000000..aca36b4253682c94a8487ded038768b53b85fda3 GIT binary patch literal 716567 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

)K4G`2`NO~P4N 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ð~1Xt1e=vpc$OXA0KvtWi|@a6s{ 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

    %kh_dtu%}@ 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 B4=Vrw literal 0 HcmV?d00001 diff --git a/docs/source/images/beta_map.png b/docs/source/images/beta_map.png new file mode 100644 index 0000000000000000000000000000000000000000..63f3641f91830f3db92805ca2e7069f2a66a4336 GIT binary patch literal 148608 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

Oi+g)V-C4E zD~<2%jfcH5H7v+evdKRjcW5DOtF-K)W+RGS@~sV_Ytky4&bn&7x9{wJyK&CvRu`N5 ztrxh1v+&izEogQ;-rkYd8pNZvHHE@NbdGoQd~qq_3?VwpVO^v=_h(IFD3jcrZyOMv~Lft-+_2nkUm?o)T|d?B94Lj~g{YRpmzc)oW`u2_}~)FVA^GPD(# z#0it1J%ltOE}ZM@;n);gZ34(4Fp#N{?9@KmTTW%1TiFMtMiMppFEm#YQK`ud8=L=8 zomhhe0&RxXb*&30Wk>Uv$$7VPow z*Exi$eo;M(+Rn4jmEy9dBd_4WrwWP!_l;aZub#o2k#^eRgVP>>=ICgMFqP5e7RkaJ zNzf1dy($_?@11ZgYmY~5)rO8y;FHT%=G>*77!C{!$MBMuB?6MmCEsy>_Kd5J|sAJ$V#rUo*B#?^Y2p0+qpSDcNE-A?U~TP-t}uXw?ZSuk_wV0N&=VYZ-K6X zA|*9fept;C5FhZ$_^MZKKfpRECQR(ZTry*%?gL+K_Cj5ILUv^@Nml*BaiqP~c z+Xh9^zn1;&=U$jQv`YTN03?b2|6u?kN&fxqTt=C$dAo}Uo-Ve6_t|Xyi4G*8sq|S# z_E)W!u*W!@=kcMKd@~_iCT(yQfwP7!XRdh%OHvm)MdF~ZW&3stopdDzo`@|d~n!VW&#F0{j!lB!> zLTsTCuirbFn3`dS+9Ro_$s`q^cZ%a>k1V0IptYDpKJ}+wEf1(b%;l;By&~qeN9HLk zm6&{p$U_mS^iQVY`S!L5An8K{10}^DIf2cXRT2xdzS;T$y z%t4PgU~B!G|NhhVg+;H&4QZV>tZi;x!qXJ)UN<|!UDB6E03jh1a~<#D!LY68>6DUH zdI6c3rZ_TKG2DWsqh`Agm&0Mb_v_@^`=bG@@~0<$mm3wdFzSggF%75U4XOMnwQ zDV;e7aAl({VtRy>ZHc|+L}qr);Z{jl>r3GG>o!K*P89S^2IIzA4+dN-O{hJ_uoL9+ z#^|_=mg?xFL-i0xwFMWQ-=cKy;M>)@_@7|RTbkd)PV){GE0Mv;^SjJ2DlwSO*s8{H z#a)l+T9BQ4`D))CLVjA)fyLG~XCBI?n7=lCCx3k36^Ij7&)jmwg%0s9VNQXoMfVE6 zkL!1&hBZldz1neZM_^>RmO>U&P_N71hT5PTrSSPD7-Ng4@A)@)Aban;z@)L0$cT@? zjlXtjM)F%@k3L9R2KZo?L0CWH>v3;I3^1T%#E!YqB;Tgk;%r$tguLXp$eMfo@H2KK z{)S(T11*yH;;eKpJy93(``IvHJg@lfJ&a9IM;IMQhnXW$*m2M9tBSe%@v7x}imIVl z6MLktw#(}t*sR0R#G?~SR%rhdiW)8=0+SbSo?{IfS_`=jhDu8#^y}V(n{NrG&Fi#v zc~1yJ_*02OCYH=(-muGXn3DopFo;Pl%mn9fbadVMBv2j*0I^lr*76DRNe$wjokd2} z3eDHgR{iI^Xc6jq2dFZJlS+kS(}Cp615x2bDcO*&hCv|32R~~7h&kC4ITU31Lu^DK ztoYqiVsGJlTKg2yDu^~+H&E%$_@gWaZQj9O4j#0>*!E5I%;2YVMhZs^)Rkyme&pOG z$TJ`-+F?*C{5Fy)4saXf3NTtU%l>-AjxW(D{lR{DC~?K=NGDH%oRBWeYrDEW*NV$b zGzBHn$4+XnoJZ^+2TgUy>g@Txbor%mh_BPYtGsO9lQ{A=-l}n{mi&TJsLj z&z@RH#&FNC+|#5*6NM1Wvoh|szUWcL517!qXkz__Xz3Z`E?^PSH>lNUT@ zCwt7U*{fm;KLY2`?&Ekye<_KKu6~wdGx9mMrX!S**4oPvi23_b1vEO4i<7U1qlek^lp*I+oO&MB#YZAbi9@RRqYS2 zlk5vwBSuI!yHL1LMHO{XG|^H-Z?hC+_1WnIkb5Q-GPuhghy5j+Bp@!5a0@p5-4}jC z?1mGTDwA}3!Ji5+yb_Y3ZPaa8j4plr=il?}%^q-O)OyUx9Bd^*3mI==-wO94RrYOHqG#H<71CAM9Kx(|3-QsalImo-;53U7uw>D*X}# ze%(`(lFJ>(iuA6Yael;6N%H;{i1x0~nzjYsVjm$c?X2Ttr2wDm(YL>?AC+?FmN(WR zaNJ9GJj@o#X>(fQmifh!P}Dg?U`i?^>OvBxKdgs4NeFJ~fx6sQBc*je3uX2jLllje zIgjciU4xpvf^@_?zVky%d2X&+HGGNRe*%XJuL0V!kbE#9UbnZdoXq6q%>AlB%k1Ls zefmE%9$%eE!iG~Ar}jDIf#=8TNA&euFh~o2=iZ}beGkut(S#v~L*J}#miV)yyQf zT};w0c6jZY6PP@7w>uYhD z($}BJ%ubJN$vZ39UAJ2N4+nM4c1Yt;*V>Cq;^puniae(ru_U$%%Z>sz-^R)Ox4QD- z7xU@<^Qb~QR{pz^AN0gL$JVERkhDb)W_fpyMiY>CDK*-Hje>%j4sCJ&ZL_Y~Bs5o5 z{#lb16;sKiMWz3B2qD8{N-=IG)XJ}8X3 zy4l(aYQJo{cTs$QDh`>}=8|TR&h&=VlZ#jJ_=||?h|{0+5?1<5o(OQE{P;^iCPhgi z{Fqx=l?EE0P7#70Gt;cp+K>&Ti*LH0Fm|%=rRj#7eumN|w##1|#)KS4o{i`=Ma~-V zL7qaGFKuZy@-)(NjV&o+SM2>6z$rVj8qPe?`0MrtF+1g5mhhkR!N1uC{twh?dwOi} z6~XKCMt#|kwf8jjuovExNeyVHM!!>4BTmDv(Z+sZpjbO;OQVQ_7QY>h zl)7zD+G6*2DsKW~i%4tTf5vTi;ED_3j8vl~pPT6~E6zI;=;i(PU)ZxYvo7j?Go4U# zw$#7>M$5GiPOg6I!~TkY`25~6!7=m?OLCsXJociAem7(atJtWvO02Q{55P&_PBdSa zpF9jc_s6oMFXn09-^_LO0U0~duZ4^y+bqa2bRT$TglaE9IL0gab=Ih%A zYjD0~4!Vzq$6$%RfZZRr8@kWW&aoYW&-sYN3Z1d^fdLaTteIgwaaz8Hd3?jI7o6#b z%mT9FeVp;AGlS!IXzv6Du=E#F2JM*TC!*wR5Tfd=+%2~UU)CeQ{PZ;=#u<)ATgz@+ zL)60$xE}~prTnHN^e`qAS27kp)J`P%XsCA}jtx->T2G(-efN$u9veP$Y zTIDK(8yG{f&H`bs$j(%>rCLLWYzKv>f4I4VdeOP!G0RkJ=P2Wp-vv50MMy`sxn$!HMuJTC0a*aRo54?Fu0Oy!=5JJ61 zXM0)lkX)Kv6;hF8NCXp|6Yn1(@>5kE5A=Y1n3CJ~TRN!_9e4V~a`9E|Z8Qa6kh zq^a+zCCBv#j$S~RMT!#&4#4TqLJoM<6NNmY!~2+qvk%4f&Ruq+MzL8$rxUa^WR(Va zqp`7a<^uF7>>HVgLf=QJZ*g64t^URtq(7inLQsziV{_GsAlL7k=N(4A6C$c>3@rA} z_^xQnI~7}@k4e^nMy&)I+Iz2H)~Q)fu zbNr?WP2CZMr^ETm1&KpJuk!0|@n+wNXGCfiso`nX{g*(_!u<|jWpF>))6H`+a=cOF zupZ6E!_c$4A70R0wTpZ}XakvctCbHISA>?ZEe_wp)!pfhmBOD_aGvMOKn>&{-#7E% zC-K(D0?ghl+EV)fM>&Ppy;1My*ME-f%Kyd8!QX1U&=MzYKWTARiqI7XpF<@_)G1mJw&ngMnhN$X(5Fc$_Rx zi{hNfv^<@>QC+@<=lD&t?ijhD<-}xHRZ(Skn3wNCd1f{V%-L_Ww8yzdC)&0H*Dwm1 z7&iUYpmwvZr@|j3u)BAxjkAk$W`@y5@Dt9UwvVmyU*8F(Owq=tqz3(A?}|vgpHDnq zt9j|J_skZFFf<|4pxG`2t3t6J)7t%?7)mS(P zYy34MTHVbx_rNN*ymk!{IbC8xvdTReqf7F-&uTxveKShfkJ5ha8-4i!*YHH-lz>as zye9IH#!{i*et2rPU_QC+y2VQtEKz9kY4fg<2B=TLc|IdTu=ru{L_}m<|8zb3B2Vj^ zwj8X}rCpoY?Y#D^7X>S&n2?ewo7|p8kWDaHz+Bha5h$Rudtl+j@@2mgg_zRk6or20 z*IvQ9b}lIVf4}Wp$3`zKQQ5XRkiekTn8|%;B_3l=pa+g*U9^sWbudP2&({{_X4?Iv z>+{?OvumxI0MnlG_-t5_hJt$C07FU>_+tOG3`kayb9qmqlk^mao~qIi3AGOH&zgiaScqgvTY9u1rJN>;kJ#>V5BYDh{TxYYkao+HB+dHy@Wuu6pT)yn##`UR^ zbA2XGlb7nz|0Y4c%w}SBa2$bt-h=6=W^FbX^tAK7@;kF`vXCqykLBuCZKBlMw*(K% zICX2m#Lhcfm*#us#@Dx;AJ8Uhwx(|)JU5@aKjk$aOp+60PdP^*bDH*q!&WWD(yd8^ z1fi_9f2SdWBi%@|Yl_F4rse@kmW+cx;S@@SB7EBNTr0Sh9q-c2c_!O)oOdu{_N$ir z2OSakAn*wSQ1M7FvqDw}W!d8flt387J%Ho8^P0kLf=1m!mP=&+WIN`7%Fa2>{+S)w? z2=w3Kf$NPCgZh_w-4;A<$J$ZT`QqBpEOy0$Nn^KURABVoLpwL}^I&HA-L10^ ztdeHyBJgmQA;?{2KV^T={am<#yKM47bmu5I{4O zd>AE$mZj$i`!Lbed8KNx*y!eQph9Zlw&`qj)s}L5kaf3(Jd8U?cK|wd4RF&pX8c;W zd_7=&$Z&L|G`%Lf*3wF1W^?#rS54#*>2FZu@Ko6OotUYNs(-KeLfTs+OV-v5u4)qd zlxGMRDFeqwntNb}yI7i>fdgJaoepD-f^P#Bgqf%tvcxLin4~?6^T2yn#TfHAqeDPq zpyL+YWGqMrAI1rG8ol1tg?y5w`gSp|N@=51bQCleOJ2=}$x7Yap!yT-3ik{rEBvAp zY&XaBsLiyH9pBV|_IF8Tx(J(bLgW7nF-s;iuq@aa{k+154c!%6&&Y^4+-Ll>zfcG; z2p^zyKVfT}vwZyau|$^v0ijiDg`YGqUrqJ}yfhKY3s6~PRBC1f+fbuTb{I1=O5JiP zs?bameG2$8xblExp59=H|9Oju28&#V4{HV)#%=NI3a&eIyLB8=;AP0tR2gl(C+B?u zZ!g$-H_OjEtnJUZGjAon%U#LUl$6!{#>D+G1E2)-_Yc2jf)zNxl~@On|2S#5}!HbV;k> z>kMJJNyjAWqTi91waQDa%e;fd)wfB6=K@K$xsERt`uESibuZu_L3yUd0tP1|1G6*V zrHKqh$ej0mwsHv*(MI?fEzI`!P^eR7$$vtPc9YbDazed!mSnNDn0+0Xyyysox$^X) zD5t&Lxa5e1qn#cARZ7&|;~SK9pCfnxzJL%VYx}?|&IU`?MPJHYBgu)P|EArtQ2B;fsBk&rWJu0=|!@3 zL@@VfF5!k@3*)9~&~;m4DFn$DjZn|M@@v0e>!O!Za}_+XS6scwT82q-d(%q4Dl925DkVa!5K8Ro7)>lkm#ZP`Qb-6J$Q>=JXM8e8$-fOgfpO(4NR`vpP&zA9T^Pw0o zRSXYNjEk(-#!bg45Tp9zF9L`xvsmL|!_`W4b8N!!EeR%1I|kcqUs8&%5!Z&!bjWxr ze$zcWy}ohYjjOl&$4M>oc_?qtw}7&ITMj^KqI{d0$SmLp%dZk$EH17^1I+C3kDNs5 z6IivM=gF!b!pfLEqJbHAwmdNI4W*OB#rQ%tk7J5aWbd5I=A$0JyWSvP=N9hb8=`ac zHu;YNA&_>sX9w;NC`-@#@9u}w^v&@GYv%9wLpcGtMEv!MjXamzpSsw*0&lTqcKd(F z<@uV*lpBGr{LLREUp)^)~H$q?@6`-9r$8QI5PU##nf zU3^Vh?_WgJGN436SR&HIv)7j1JE+A9ZLR+sHLI`M8~pp+j^Pt}l!Ms&#i&uk#*g5wW*Ev7|Ri!(t}F0we0+Hxv6a zV$jXfR*|emk1eg4m?joE!f!j(JD!o{`ar(EzVP1+tx%5Pa&XF>;zSQ$Lu=%nB#Tw{ z;hG34yiU|&(v?Sk>*lu%3^NoJjmL4`Lh0G#T~C*-xG+0C17<>)blw-7EK4>NOof1=%?JYgnYF|Vhv;Ge!C1-%`?BT?|M z4p-7$5?7jE?(Z&yD?Flewe`+w8}h#C zk|IM7DXJsv!?7l$930RysGoEUX;$*Ftk#3)`f_?g)a9;s8ec}k46KNImScdS{h zhX0F4nVsSx3Vj!vK5tKi!5(>+zlO-b_8O4H><)UF$FJTNnjbXd{DV=t@ z)e-D*z_H?SC9b8nu5g6AGG%p9WYzmS)RmqcP-8OkOU=B=q4X-b6T`PpvWa}X3lDP^ z7OD&u5wEdjW3EMs|19Op#g>JS~OoHZhe~ zU0i{UaA^ss{GzQE3yLGhV&_1+BB|V-+49jhsCO<mlN9%d8mIA4ZmS{^11$&D3u>)Y-_9woQn~N3XU|Z&JH1 z1e}N>{WTM6eZSVhnJEM_drMj4VwliyT!b{P#t=>|x_^ySq!=EXD_#Ka^yI*y;$sL3 ztoDh``V5+Xd}T6WC?YiLDAoH9nDZ6Z$pHiwv>`X;lyA;gc9Lnnbun!2Z@6>3B`1M> zM}aaSBtl6Y8O`u!@eqlZ!i<-_&4?XGME)KiD>)7uAh`U4-96<%ETi#C`8SzMv*%US z!J9}t-AcSx@`b+xpP$svg`;e*Q?(71zfE};MuU2wzxNhm8#*A=5s;L5d>XMDbxyoXas z%2`h12^6$g#V|(gnoe-AMcr&Z(K&ZtYbM%)luUh0Wd?`Co~eDyRFJhSg?#2MS`{ZI zCX9pTfT{KIrbIKUT*vxYEno%ETvKh9I#tygryzBuJa74>n{lA zmGwED`O_=@q>M{&D*i&}3k&)zz$`S796hP(uueJPatVH}GZqemD7&ulrv@%)^eY;i zLmI7SH_Vv^X!XNz+!T(}isJ)wVxQl3R<=?vfP?bw{XwVu2CUn+{z-L>MSEmqECW3R zt{vhyO{bQUI_`X3r}zc69Kj2ScZJ1}fq2obSHym`XWjMSstk`;TstKt$cC7ZC~Edad(f|zC$O1)DUq_ed%j)x)O(Zbj$JAyf)tP^4h>F5@DkEk?TBr( zU?GQxpx$!j+pyp=9xXckdssUUtDU@yJblrf^_Z&}l^wN{#`D3qRO6%O4$0q?lAyuY zqX84iV@2Diobr{bf`;PXWE>w#l|j_qNZ3noyu4UC4?_0UXo>WpnHRkRi6pjpp9_Un z_54DQipE;4A0F1RE1B6Dqbuxx>C!I9eRz3MwY!onRoIlg45&eDexUe4*%-f-TfN9u z0RC8T41L`~x-J4K+Vdf5-Q0F4D-VsEbwY)HFtN|~eB#;Fw|jWk$l)41>gh4+KVp`h+1@>7Id9>S+jM0_4%+S;|=#Cc%FZ1MG1)k6;0>|rBRIxU{c)zB+ z(bm-T$0pG6q^F0L6)9W*Bg#RU%P$=8n>8^m1np^Zh8!P|`h|IYY-cywS$_WyYwsK# zY1k$DcDj>vY}>YN+qT)UosMm@Vs>oXwrzBr3QxXoX72gs&a89pT6gxUe+#SL_jzhR zzx~_04lK9TnrODihL=SNLpq}#@l1C9!r*S$Ojs{%(KK>NV>d5O8H)EgE&t>N?~K?! zkHiShzVj8OGRJex)b7G*eb*x(+KL5pNO|NMe=LN---(qEUTO0nt@u+u07(4{_hf%x zl)BomrX0m`W7FTZ81QhoaldE{!T;)% zW0!qgU{k(R{8}yic}D-dZG1g^i-(0yS`5YKvb|VJ|DM3lKEcMTBfO8aN90S!_ZN{e z8XnW?o1FrQts;~|4&uh$>f>P+;!LKIMgs-jEdM}d|7OH*#MFTDF{ruFjM`{0`N$qf zlH^JPaU9cyOK~QWxNb*gQmLQxP5L_UT|=*te6+tsyU6q`7uTXgz;!mJgV5sJAP{6Y z-=4>cDsvo?ly^^VvNx7}Z*0g7B}Vc)IFKt03LXt!pJ@)E!x6-1%Lfao;XJjpPn@Ut zUVe@0PCuwuljyr;mEdhkZnG3*P^`R2R#!_A@{vI)-ZHK&PvpC8?HX+Vq`*S$j9R~H zPZ8RbAvbN)f3@><>v;&sI`W|;gy>tfO?GC?ZxoCMv#;et&LDPSB)}L6V@2lGhHKas z);}?FC}5%E0HhBbaL6z>p(n?A1u5n>5mpa@iCF)}N<~m{TEy>27j zrEG%M==a>XG4F95ZU0ZmfQw3_C1CpsqvK0pCKf)PvxzB64dKQh^W%(%_8$rSOhHLS zGPT*M+WyYC6wwGKk@iV9!(|bqD3W8;8j1yB<8BFG7t*p@icMSF`&Rm%M9Kk$4hQVR ztd?98nOz|Dgj~P>RO?DD_UQexvzI$DDx~U8nm#J7<5&vPyPdZ=-KaNT z=#NVh>{Ku?u8zJsxK<9c^+MAhkR^4Krn3h*E9Dyu6ayR9+kvvW(64XiL*jdh)X$?C z-xIu^9Oh>Y55itrC38yN(psGP)Z!+G4nXT%*zmmHDZEgJvTroc(O0`pn1Q>ji#BQH z1#{EgT`K+SV>%D1mcMLw1}huij0JzbX6hVw0hC#!a-j%w6SqLn zgHdNipm#X;UBzqf=bvt7_vT$x9IpH#K0Q0dBbh8MvdHNu#idkDzh}#iIFuDs%8bmJ$`@bVS3_4qSf@~!QJ9q5dIVyCdM+-$W`yt z9Xvfa2YV@g7wXOXol@=T+R~3Ko>wMFNOV^_ewQz8vQv_v2110rbG1Mu|NRe+tA_k=DN>1K+3886^jKRpNm z@TfK5n0~f;o(1|7l;UU6(x{+{A{=i_>fxxRH`!GhpqhOmN6i6%7AF#RJY@;?F7+Mks#SfW+U7~ z+_H^tPX_i!S&+RFs=l00D20l@&>Y%BJsMl%hhKR?OLWX6sg8DS7gfa0A%WQ)^GiK{ zxUyP?gX2;*za;5e4Mjg%<~Hf+5=yunM&(U;`{ip)~tY9k#{CR z6l}JPu_dDMzd)PKgHo~2pD*+5-k|ksZV$(o|FLSObJIqKk>;PLSg9pS{eJ&(mRl3d zE45*^O9i1=SnQrmT{Gj{Iuk_%l+sZhPi3J*&~kPB;-+U?xH(YxhDl5M z*!Oj-M@b!1Q`cdZ^ABWlp10cGK3RdjhtX`C&>prQisfwAN16}GS$i891-%3xH~i5C z>op(2lIL*23faPp4GgRjy2!E{E+GwVTTXn?G*#Bhx znu6fA{{4=Jm4%Lo4)bdjqYAy_im2NSrDerXQGM@vipBYjG5nsWN=nerZ+ne2N^UpNa`;eGa_acq+-uRig-FP`lj!9sxBk7o9G*dh@&3nNpj~#mmK`%T}n%ZzPqJP=Xd21lM+UrD?2+suAStZ z92CUc2g`FJ)UAtFRFd;gMOoa*)D}o+8gi=7OgC$1gM!RvNhE9LPw|Z%m|@kKr}cjz zHIWbIpJRuYZc~zf7Z3+X#_l~ZF?eW%9St3-Cc)qxZRzo=A5EzBGCxGpZ1;rp>C~a( zYpea*#|JordJ}iJ0&<3bdXLPs^=Jk7+7&0Wq35?>v`S+HCQ(HQvchv6Rp4|b9 zOBl|=$4oayLb9rYoK>sPfT)W08bx;G3?Q}VdjL6*|$)}ajLuxv+!Cwb%__$O0q^hUohHLDSW-J{+rD0};{6D7P z+J64_zg%FbFH3W&sJy>=v(w`~69e4*3v=N?hY$x?VXmx3<%=L-T=!&jFssIRm#Oyya zjEQYgoZlN+7K|iGNYNVL9mJ%G2`9n|_opC=Ib+B&mji@!+=m#1&xZA^aw^@4qT`C^>xn<^U3S#Ek2xszpqUC~u|aUzm5H1ZQjD8d z)w662q;8#(vC^euOGyENT+b!Ewhhv3z85o0gW96WVgd>ybPFuP&Ivf*%LoZ3)d1wWoMLooFNt!6lBIXBbvM%(H{zITdaX4M0O9a=j| zM`uOOdyHd9)zF7_)3CB}K648-j9hlIhgowlg)FUl#D)dX7EP%&0ayDYJLz~e8{Mh= zU31P<;!>~-R3Il36k5ZN4~Hh?!-h&ff?T+Q^msiv_JQgzRvyh&NfmrP>}Ap7Wt=+F zKGV;Ci!5YG7cF``7dvGhRz(y|XxP9(CgbOx?VUzBl)j~mHM+-kN$0hr7Pug$^bN-Q zv0w-K!=avDCw(Iz^5@!u4X*`z+g1(6@WOtM_5A5N*b`FDx>1YJ8}PDT)*NIsRE$z30zGz0N;l4R*^m1-YEN@$oF5!qaV38#? z1Z}GiD;%fonLy3jOiJ~bTbphtb;&`3Vhjo-Nd6>mw?$SXZqe!Wm|{YfnARHdqmwP% zJ<;=BIp;m4`5G1Hls+0*^GNk8twRf8mb7a3@Y(EYYf~tctKB#Lpdum=lmruo0mzvT zjsYW(H41T8xvlfa>w;`@5u=C4iPc{&>tQ2_%WFSGry%^SB5`UDAoJqhEVr#Gyg+oc`ftvd~ zpmpzJce{t(88vD)R{hM9X+|xLcQljx5xUeNrBGy!h(w-%Ve%(Ztt^gov=-x{Ivl+#plI}F=QPiyDMy*1)=?41UCT1L7Xe#7erHde zyp3~59VA|+8;X2+JYDaXi3xZ}J1}=wPmfM(82J#W$ner{9$l`x4{e_d9xPl&4VhYiZ-J%4Ysl z(?XW$;r*q|81iO;fpdd+`*W(xmwD|eO8Te-|C`wyz`){QBL7c4=9)4o{$sUoRyvSG z1bQW_-d!>I@G*|=vpR6J*!HSrlX^7%IiN<>+wFzxVbInvoXxd7I&||;}Bok97AXSQ|RnQ z9V%|S(nqG0SYW^OnDxqpjD>}cnfj$CkE)Pc<(KAz`+j}#W6I>={Cv^VPRd*C8p(<(P4vyM{z zniUaMV{E2}s=rfU&!&RFW8b9N%h;o7^Bl6LBw8gil!ABiY~B5$%A(R#?8OkyF~A!` z0M%9y0Vk)=_oa)FzqM{NgU91iKr_e=4lIE=@*0UOCZ0S`OIOK_48;jsVq2U<*+Qy< z4y)YDXM$_BHo`B4T>Js{_ntyQtop z+^e#jU;;*}-#Cx+`_S3WTxN^(0B`m`&M~*6gGJt*93#lWOh6#2PMO=^b3F9AzKw@S z6aC(aApi|hhuljb6`3@VI_hyE?#Xc~@fgqj4@Rm0DCsn^&?lJTOPi3#A@~@2_Pop^ zcgPbO2NF^$iNN@l1)SR|B;ki2?y3S zS<-XyT>KI^mFv^+2U2{>HBtEDy>b1~g$#_;;0ixF7B~8aioo8S;5Mh zV7eWp++`E};Np~sEyzZO{?dR$Y<{z-qSR4J4tM2`kTox9;Bfz_@oun`QfG!*yFi6t92a~&2RPp43yQ9@b{Zwhl z!pBAd7i;tQtARXxba*nTn4U*GrZP6&B$K_D_xCYh{du_y2$3$_?J;tFUbzdROZs%A zekYOcKh8UV{Cd8^SbH?D^MD+MctL#<9xJl1#v9)W4%h|KTAR5b07BmYQ(DNi{dB0~PlaZ+ZTXY76(u59mydmN@CVW>tqehWs@ z9oain(6CAt>UZoAjWw{eC@W=&RH6(2Tt4Kdy@{Z({Pd%2^c$1^oMyHdZ{LGav+@O< zAOZJM9xAW>V!5%i?=m+z(T$*_*^&sBuZw&S-lxAP==h2XDh4`#qej0k?P9yUY-MOq%coM=bORIu;tv+;SK*P{yzF1*RUPA2I zt4HM}4~OEnf8uw;FZ^EYv@v{}h42O6CACpvPoA7!xQf1@vY&oKekWJ~F)L%XyyyJm{^#4IiT5n1|QOgI#mRpxWW19N5O-+}{{R#xQy z3cLYd7v{LAso6ed?;9$fV(2i<%7;O3Y0$GrIwEO zKe6p+wSQsT*-_c>y+Sl#i^+v!1itlD?p{s=viVvy zUNppG^Cxoj7+d;Q!^rn@DRb%h)gWAUzxoihl0An!K!}CYG+3kmeS!UPH+?>Q4iVLy zl+p}uJFh%-Yl!T{gu19mb6{eD#l=I%?UNli*W`R@+JV6GYU%y$UqN(jOgA^8t(}3e zB_e4x8s9Q{8d@}yi22{eM(HxFmGMj1sT)|$FYci~X6~e{iDNB9543D@xv|jY78l;{ zEH#ihNK{SUNJ5jZLjd$|P1>DhtnMo#P6FR9ZmCjoZ;sSXEw(0)v2;fQB^NZpmRs7{R z&n2_+dxkc)JEJx2r^Zb02O0VtW;cg4DD z6yF!VUkn|i)4A2@O>M1owSniqx>7EXLL(tgI^w7__zDm&(WD2du9G6Jw(Hb#hg&$F?uNGCCli1?&^|@ci z%$_f7TUIWUR}Z<$9KuNY!&r+>YDC^558HA=(0S1c)UfF~gMe5N)tsOZ7W;iOef<$Y z8W~&C&mHP{lItE28G^BNoNTY|zys2;Vi-ze`Bg!2{2CZLy#TX= zMzhgk1pB06!{hju!$k^4U7hC0%Ua}WeNnTckD9U0ZzM8Mz-$Z3 zSHybq_)}FBQN(N`Oa5W^hU&TF zxJx$CK&sf}(9}j(T`mIhOO7*OGExyQ1Nu!nS(x1BfZLDU@%Z7z{d}z7e>kFi{ZUS_ z6~CHIVa$d7t1G?g6lBdB{_j||;`hMxfd(8Vfb+=ltS=T8^kITyq4z^*9FA)gW~=)- zTpkq@mlF-4HvH}^p;5Woea%c;?SBFSrLpd z;tb$;H6fY50_Z<)x-$~Sm4^e1W30`0Ot54NFCQoQ4;R1)4J9iFQSVpfe)I3H z@INyWx6vwxsZR2OSchha&0cBhnb;m3+rkLn{yVnK`YLU$=LuP8O240ft5OGWrXa+B zc%OVT_rce_O=qGB4BX`Gso(rn$5f|b9!(fPF!?^o<6W8ABx!n7w~X188zJCmg_S&q zFuhWgIIL7h)yl8D_ouNDr&?ob&9Xbb)RtH7@}RrF02G-Twr;Zy!T zk9q1h^vhu*jaJH7?8MBn=HL^D?6n?QhT{KGGJa{I9i4|Ce+Ui!gAw%9F>02nzq*CY znsS?#{q`+KmxtNaGcsen>lYzopif_^(;|FwKmbSvb;L>*NuA$`w_83Dqh)Z?Q4s=u zkvQzD!vl-r`elxV-}hP|^=b}(b!5c@L8vDQ(w!8AL^Ltkn7q!a}lF2KkYdk0X^S>e5 z$ois0heZ`06#7TOUw!3=h!mq0J6o!Y?ps^qxjvqb2?-(+qnB|%EYmr1WedkB)7NZ;tGNM>U4oZ<2Jgu+*sMLkLVW{?zQ z%l6mNFfB;X3e8oS&cx>pS4;b9G}5Tv)@f62j6@kLo?&HfaU#7Fs`fAl-(o%h3UWi2 zPd(eEki^8nCn9D_4|@|?PJ{)i`fu5mpliED^25P!I-+e3r7H?0HO(>93(&P9k$@lr zxr~W=VO2ccyK_9p5bjlaB?l$6+KvR^TatzI4L6*OH)46b=fIFK13Oh+k;y&H%j;by zomm@fdcltGRtM@|^=k`0@pr*N)jJse3PnK~^VcQJ zGmCICtvE#4S`C0oD++il{P5M8jX+6A@#S z@Ss(8o8uN~p+T3kLc-|(O{<+;&vd^ZMyl1(ZuZsN?x%uv7F;yLBZFIIbD`U*F#EMLTvMHg!W{u{#Xd!?}IQw9IW`Il(;QeT6Vro^QQZ3g}ru z;2tLXO0f`AGe+4fAw_lv*&R3zoa`;!gBXZe&Xrc0`UZA$_`XWs7fAWWhK)4$g{2 zk!puB!ogqw9JWDX3`JjK#;=RZw`Lk9f zcrlac@vTUK z4b+&CPYNcNs8lA>_H8~4tVt9%BB zjboFQ-HatY)qjEEU^syp?V{ma$^PW&u(_{Dspmo*?Pu=CjoCQ3P?P%|u}AFsyDPf6 z2QTNKA$3p=9j_!_p;J@Ai-)?S{C?+S%0Cb2J|0K#IT(tG&SWv}`+_JCO(p&VY(8b5Q7Ah@)# zJ&!5?iMJuw3H)lpvn;Hz2+cv>0X)(e5GF=M5D`|u1yer)0rtib-ftD;ATMpiLLrzH zfC2K=Wy7jYA}gMR7g*=Lq`X_SOV)KS$6n?zx}l&nHoe@-e`#5uTX!=qJn8MFNgAum zT&=)ClaG~0$H6KuO+ZW?+qm-VJB@;C9>qgL@+n5Z>H`U{UNYlqgU{a_4Q~ro4AZ4x zWoSN`e?zjPNlrBd&<6#6%g^`x<=5#;1W1~qjjVV+(!w?7j;#?7BU=6TF3fv@gXiY0 zeSS_UsXKkB8UE(!yaAaz*|mvy!Tjf?jL8=>iVK%3?J+-Z1^#w;n`PqJQTg|jCFI7? zz0^`NDbfk=*v^1)S=-Agj%=~XsFYC%_~|)*&ym)10@nWvg1^>>w=8^cb-xUr6JUf% z)0@7lsypsag1^OnBp(SJ+&!vr58h-94#9ajI-%D@zd>QQP%yPkD}bZ$0kpzBj=;kb=86Lz?J z`^dhKpE?){{C?G58K=!<-SU|h%?Jw0I#F%xd$9ee4 zn_iuYq22STs~T3@9PnA{W}psZQ>xXE>m;dwLL$IkB%Fi_mR4#l;x!p8Bk;XIE^9M4 zO_rWgpoID>=}PM7`ypRNzf-UT=gU>OgY)a?+^zx1I)+FK7FkNG@4CXc)Csgigb=Wr zk?cRcG}cAwQ-B1)5D`F<2q$M{*JlNqO3g8?Y4-h8bNqR_D4Ydna~$5QlRP^(sKJJg zSrcJNZxA+79h#`EkhKG6dt$R)`$WNfnLgp|R4k#E+tcH~0;YoPu$ENvpmX=;HQj{a z8?rE+m4ENIf%GWylKg42?Ofn-lf1K*!@)~FvDDA}IBzp^yhjF`$hb@vkFtM-;LtzH zW4HEyVoK_Wn3<6kjn|J{+8x;6K@f6y<*vkuxRxWj$rDfZ$6s|tk^BJv0iMQZJ#CW3 z;TIDVjAd5Y9kcwABGQ{pT{^NfyFoO)-w~g*;XIN5O-Ttd+48mKA-hN!1FN5nfk8MX zNoG5T|K^!-Q$&QS=fobzQZOK)K@`KmLh;MOqxoW~rVZ!xZ!@&?y>g13uJdxK2059exr=y%d-6$zz~3>($7lW__BkWSq1ofka! zh!C3$B4o=U>K*(e=j_z;=Q~llFY1(`EIw&M=aCRB(}{W*TP%EMG@S}0>VJ#7lajGS zouI7uP2ifN7+8NB^Z1FISW6Kd`EvUTpeKqniWd7i`vQ3s!;9VwESai?pR#rjT3%uu zhr_N^n2}_3y1Z%eA8_|Sz_B|M`u&dldky*0c(8%|G`7i#doG)ZWT+GZ4}Fpm4kDyp2ECMa?W z>Z*yVggAk{^K*&#e;9Y`qiCMfL@YeA>J1s_=x7>DIm-xh_Ag((maOYh+75<`LGrYbm=w+x z%YsjwL*mtE;a7}U6!p7Hdt`bJlexKw7IN96&9&+qo>b@tI@6W?;!IH;{an3Zo`cYdJ^mg#dpyj-r6eozyW!u8z*wa^!CwMv}x_{oZ8HpWRmu zgyMB}psyp297gX0rJz(ah8Z|p%sBI31r2O|jxL^nUwt=7fJzfGDECf5k|>e^3`7%l zLokIOExbq`k&Yuyk2@++B9z83T*och060Wc4?W}GOuVc=Pc-YY&-sZBd1odRW(ELr zi#lplGw*ALZRiP_^aILGO;C}>{)*j!gmj6d=jw*I);o=OoVOmvblTN=A&$@R9rMgm zD>vY#x!pPE>^VEjc8@uZ1Cwfwx3_6rp>!8mdFHp!;G1$*Yw$Pr zCDA#Ss3;PV;k^{?C(v27V??~Tp}>^t2tO*VsaRO3AH%jcaHaar7|;!rc{UK z+EOK13hu8n)Nj_?-a!-j`Xs=2&pl)1ma@Dsn#3@i+j*{yDK{+gPzco*E^BuI_0dk? zB99W;jwAfdzz3JBy9%f=$!ku54}wNgikzl<*e7oK?oV^Z2KEAHWtd1urf_y_1l9Ds zWkGRa?)?gDiIw%tQ(AhGW+OD@Q(tu0~eZwSX+^a*Va+>0ULt{vRFEFM@M z#!pCBt=`xbF>g7%#QTFMO6oVG+9h68l%+ zHf!baU#TBg!(})NA83$!Nm;aJ;}-Hr%IDM*K4e2^&R zK>Gc$gNlxTT?DDEA`f7D8sIQR}C+2V>%QL|dDZhrDOv zlNEbH?9r!Jgpcb?_gU_1F_TbCjZiOfxHm>uJhafu^V$+rJd&=O*j_f)l>dC0+@gg? zv1t?Pf7)V7sE}qrAjDFR(CnkXW=yaG;(D^RtM}x`mBM**9p#%3VNQ&0fkO#ADQWaG zSL0at7&Nt(8;u=-4?}k(3Snd=l?c`?xi3R}JWgDST!6hwlEI1nOr?jp^%ap^o1zAm z$h7o~V!GJ#t4}ihwUm#KE_6N$PYVm3?>b0`Wp{z)2ucDBO?zo1 z0NSr3GA&?WvG4e$*sjkeY-*>%I#r3aCUqS<3prkZSQS|0&BmTQSW9-FkZY!m9=p`& z@HnSV%M2j<_-ssdIEY6F8e8r2;a%ZZdGkfy2& zI)G<%8929=UthU}j>P}fg!btM!-Op7_>nJdo+kP5w=e(6eYXQTXFcU#$nZ(2h%n6g zom5K&N49sTz;=T^1%~s?oa!{38-}qARvgINzl+(YiuMX-&v&UA%*OuM)dDoBt4^=RPT~n|(!Ua$yJ( zQroleQ-)_Z*9T+vZSTR~oGArF-o-qc=0{;gJt{3Y$3C1cU%@~G6%-et8!Ug910aZ) ze~p#A{B=k5*29Ma(TZ)}qoy`=_{eN%mf4&aBdBgj&~b=!JG-Fp|4(?>iHgub_eSy8 z7LNQYx8LEUA+u>_(@nU1Z({eRWGss+{MRl5{r_2^KJ~zg{lov^V*qrIe(R3~AYm|GLTw=U= zd->Mh80xicRp=lDqI|~m(ZLmiYj=Gl*$gFwvM74Ek)9}2D;m0NdpsDzm4gFCU~FP~ zigYz5MKWzfBn3OW(veHg?lm%5z4MU(Q%>VqSQ8u4q}8>wCxQk5P7Kj{k2U6I#=ymj z7lD4Q#={NeII&jEflIuj#UnAi>n8-9~5C8J(G zK;Ziz|EO!uMwr=chywyyD`~f+<@=p^zsinuIH^&@MdeWWA78xoCiotFbu zU0El$R$14bNP>YAIR)2s#|;IB*9h{>YZxj~Du>B;t;yr|7aQZbolvlkir+cIRkT3Q zI;a9?#}YK+O*jKk43j`mk&uu_lf<8^jH{=FkJ4;|1k{+QjX|+C_vyFxP^cNVeBsX@II~4TC|L}Y#^+4TdFUOi*_X5^W3rJc~c?7WGahVMVfEdp}*8+KJXnqTv zGkz3phnh6R5dqDC5vY`OdXw_fQ5XD*!_8SpWtO5FokqBpeZTN7pz|R9D{Ou*)LqcD z<!0C*XsYFBXIHHY{;9iTL4I}6{G@N!Z5Z>s z-Jb|!n@)O(NJ33<0(8sL-nTV5iH1PUz#<_JY4))c2pc+QRMj4)F01rD^5Cq0+WdGKYM^$=)XeP4_J^$9c zJ?nkD{VQgHTeGVp!N>`Dm>h) zUYtIWu8C<*GSr$_b+s%ER(Jm4D`jah_!r-~K=q%#a}E&Me%;;Jo=3}Rpve3bHBvLx z$Rw0K%x*v~TT8TYu_w2Ka6(ctY0U7ugCq@O12e*0JqIUp68lGi7-v{pd+}E{9e{romRqv&%+sDOh{>ID?j;pTkj%Dg zviIpAQI{{IPS72k40(QEUf&o*I_ZRL0zd1Ya&8>5O+TKVvQ7*5&N|&jMXzG^6Ql?r z^Fbvn2ru~K6mDruA^&Q+v&99!B^G(R{%Bt{IfV`|8Qm9P6X*%YbsMjqcm@HYl7dniQpZn%T~Bka<+&vqVoz z_qDmd)!FokGQ?TW?L2}1rQymS$eJx0*X+N;hL%J^*?5%eGH{s^8|9gA5FcCBQyakF z6m}LDrI92{_?AsUH#P$iqQj?S1bDw!gq!A+WWlIK$Y*Y;@q%YY4OICJLW>aH-_?p$ zbFgqHpqGRm3pZ0Tfj3TXd7#(N0FRsA7wUld)ba61S^Gv_Tt}zdpX8Kf?sW+xCNdUr z_Wb&gIdio=o;YBv?;rlnBvUqw22IImiw>{F9Qst+WV0Z<`*`-43q7g=iP6+7E-JSR zc%$vf>j~hYkZDG2rR?~Av&56J}XQ@cIKW~3esN;mo+B^lS^@X;ISPUi_? zM$bKzCRl9^)$EZnWIX|b`mUTT1@>uIAlfP-y^s)5xKNzpbs#_7VC?cA134*yA68QG zqK7Vf<%mjOIgJ&%00i!Y&-U!*G=XFc@K|WDIhRJ%d0uY=w$9c$n>88CbJd(P_ z!RfnrF(#?Cvw%bSM;5l?$cEe|dUE}vu^f|F-92m0Rg;GYWBIAw3{d_*QEg_*L6D}sDeSP+s(P~$=6J3HB9{sR}Eoz-iry7*=f z?fob~@1uy#&t-OaZhhu)mZEtqLZpa-+YpQvGmkVvO<~B)*2R0l?d3f>(mxp0jW{x; zJ7_GMexJiL0B>7gCfge~Tv9Q4VaX>J>YV?w#qk=p%P*QK6aqIy7P`8hhI+$$d8uM* zcNh}L;>*;gqIYKF9vsrtPn~da0itm4r65^goXw0d&m$yO6c$8i(cQc!B0ZdTRITJ)>Y5j)X>~Cldu$X4dlN+7GbX1? zQdtAd?cH6Op0>b^2KjK6ay>l^^&))1E}fMyT>uJUrDvf@)>@W_9-03NulUvKWfDyZzu`^wJh9;L8%8cG>Xt4UfZX{`_$h=f*3UIn4{v{%xh$UxZ6l~R zrDw9xXKj0Cb`-R@Z1Z9#1NWxiU?$rzJ_#weB(%uC=Z}YTQ&dTj_G1V?`WgEoQMI2n zZ7G+tz64pPKBa_dS^0)6RZPi~i>uZcwc)cUl)sPjPNR2AAfy8#0%W}`nOqrNCyoMw z0__yIB>RxhH>b=VHC#U(%A?W0paMk((`putLxi1DNKsL`nea6?A}WGpU_2zpffzE(4aXstk;~4d(w4N64}YnJkJ%lgCuJ4v zIm-C-CH+3-;F*OSg<56iWQmvlLpe%}ghW%IBJ%T(f{YBI=sv)0CV+p+oNvV`EAa}x z-c^@2CrB&m_n$e(-ciz8#f^ff35zmnT7hj&?iHN|6y*dYLuYp-+4Hi}ju;(PA*-BV zqBAMtpFsy}9k7 zenZ6m++^=ZPL}oNog4gBA|fXTmOB>jUS(?U+A&S~CzsOLr7fQ-nradubWah)h^kpl zGpxm|MzqI9ZohcUsP0Gqo2}=Pu$eN`pc(RDip`d$mV~WykhoUJ6x<_tlqDL~&EN9# zEGbj+=_lE{sTZ-Xy-R~;@#&Z~s4;Khw{v%r82^xX>~d*J=cn5sZDC2N+jM5UPZ;F* zZ^F>YkqD+*-zkv{R`B_Vt-dxxBj9wu^pE+D?%E7`^^oV)LJ><#Tz1Rsx8oXYNwQ)e z0An(jQxM%Ta5gEq@X-u@icUT+9a%4MR>(KQe;S=AB4> zRA9w~S@~BqJ9mO6sE76T@WuBj52737!*}_EX9LXe=Dso&OJw;4h!)<&w+nmh>8UD> z)()TVnw+f*B4oga1tjo41dYuofrRmu0BUX{?S0P^hUy@zai@&V^Svrxv&1L+I~)0Lwrq<>8!T%uU&i2B7N|n`FyR z`M><#elE2X>WYf3dl2ic7fRw3*aB4@N;}Fz(gG*G1&EU(XXK?2FgwrR8;D`XKXT5c0zp}Ym4LlMG>!e zQD?$0O=5)|l{wrE#ypE&m?9|tNCW6dl9OX3t9hOGHg}ky4Iw0sbxH_7K;FuGzCMqj z>}97V0*ok+@4OWoT^W{%mi*=JosasoE4-pSer(R1Z&j-5{a`u6_zIs4v&d;d9VWTY}iRjTT(HP(8c`OG;l7|J@M5#oU0 zKHo+7J?U3mtKBfTcqN2PFl8%|%{kXY-yOp62*VSWq7TRA-l~Y*lnILq3Ia0LJ?{xl zN2Qr)*X3;pKmAhYZkC7&mH!djSY?Ri?9fs{b(qdcWf6bHxE7@IOZY#21>6xWfTBeG zXCz08pej=R9q8dyMgM#XWo0@f6^Zh)e}*=R+E5km?Qv}FsmH54e}_;CjQ~S^aeK;D zzAoN%tew#sJHKWH)I^(Z+U^+Pvx#M*fPo;X7EmA$H)^}(@?87d?2kCL;pS0-nbm=x zm+%<)>qR^jRCje@E^>JI>T91a=t2?&RpmL>78&{5x?;R`v3j+D*Et06jQ2$+cO%(* zBK4Mw3)*Nv&&#LBjCA^swB27}#b)a&S_53o()K-n?cbD>)g}3=tMpSXYz#|Nq4#Db z4Un%a*QxlXL!ls1R8Wo}VHS2dqFmP#Nd+>l33(XeT&G0D#!u6UkwPymfs)WYnp;Y_ ztpw`rF|QnTzkV6-NHtfKbwajL0eCN{C>f2gvZ@hLYIGXkQeAa>0F^6yE{0AgWj!5X zEWNF+?7)j4-}YWcq|cefU!7-$)>z0eXT^ZkZ321Lmc^~yn$b}oEINDgbGRK9M-loT zHbULnr^dhc1ejADfwQyxdg|O3$=_*@m3L~72jQ)x#(L4VU@P`W|2cvnpTjk!n+p?W zY?ka`XM(7;Fqw9Q;Qd6HV|#J@Lm+&j`)I=z^K#|*K3gkewfP3iJ<9jPh`Dyuk1QP9 z>f*&*kPDP6{S1@4gM0n8*n9bFVhMla^XP-v;OcBQIAH1{x84WNwN0b3^kIk~O_E`Z z<9+z&o6(1Dut>!Dg(NorbR#y_U!@P-+dv3%r&~_$tEgrV1bxkUwbGS8a`F>(@ zTaqQH82T1r;ex=kKKG0V(J8Xyi-ZpC4%)}&7Eg>ggX4ROWZu#ASb%903QP3(OmaPT@x#>>d1Zs}%xkZQPweWT|()12JvKgkqE zOnxa-(U~unDVe46IJ-Xtq=nsqa{*NRCOPn9*-o?Dhce_(2F7Q6iMws@kPRwn)rIZR zP4UwOpdAAR#W-pLMMMBi7!9VP>W7;*lh4javmDX!BFp50xcl*pDo_EQqZHc`cC-D& z*4k;#Cn7Sx2Ws3<$yE|8&`!t%o7 zrgv(*y&of(PvGNqB*t9hTofmFAI9T#q-n^@0lzQ&$S)2)aJE|OJk6n?{8b^`=T$PV$kFTa>d!Q0_kuy8VumnT zjcvZzdaw6E=_Y&xXD%d2#?!3)_e~wwU=%hpObm?6{S{<9gINw0(oB+!mI_4QHwSbYVcd^%`2CCKAGP(M z@^*i7j@Ru`SdgkDnUE)%FXk%{0nTl6Jf}L{R6~K@{V{8Z>RueDhEB#P_}>7@?DMg& zL(>QcXPhi3V4(6!+k={HRCT0B3PEz>t9SR?S{sf6E-E`uKX|mPL-Mb>&^gZMG}W!K zogSqD>905Jn0I8#EiYW|m87`r0`kk#QumqMwUrCOVVSk2mR}8oxsxc&TthRfRy{|h z@1-e?fMb}HuLg^-n1X4q&Ic*OC2wX_G~QT<*qg+z(?4jPO#59gLLp$#e|d$&{BdV2wUmn-=yUakP|UB`&>2aksZ{iP zJV9|47dFy9T|8ckk#IQg(UuRbqP$`X-fW(pSxPxIH>ifBlY%OG+34uS9DpZ}uRLO_92^wc8uf^{+_a z!dsmUdIlVm)2=o0=sQ|Al7eZNg%?p$%D*1*_kjOEMZ}GJH%&BY37cAeZ!xvRz^G#^ z^2=L@7eH}6th!9%vGpLKEgmBi$#nIn7quL>YKv#=-aa4#2`gd2l3}uWvN-O*8N1kZ z%Zs>JNSuq3qeX!HhBXhPX`CB->zKTc^fY9-Q@jpOa1L8UR5*tzIS2An8X6Xw;attl z%#^K|7te!KLQ1+&-R0gh6-Dh&U3aefXFRanIxrWTCeoaY?i&e=V0?P5A_Mvlwd`<~ z&8eTB-$bqY2|&@q-M-AZOT~aG{7~QuAjA^p7bIa|7Ywq=h|Cd%8%{t)#RMaN9o}?7 zEPwr>T!z*pE07;A@X$fE*fWTUp0^%SVEU)K#pTPt~w6E-X81NGWuA_w+QhF z31dn6kwM15Rs2o!4(c9(ESBMPC86g}pqIH$(1EYFe~%30A)C%j^tC5@U#ZWKL23ME z1QZi*sM}t#j~B+QNA@VAjf#STMogu+glOSteNV{nAkPa%P%){jg zwhkRya?#YW@Dbqd)ydxPHb)n9!Ua0K3Yr4rNvR#AqajcE(F^?^?}%h|{3mYC<20gv z6jfQWm1<^tFE=L_>qw)J!%MI3EL%cU_=TUV^R-jQ-lC>p?a#MYzuVyK#-%lFzx%T5 zmD7d7CzH-E-?HamWT3`g+4`?nJ!+>~9k=C}h~()LtQ7TK!|rN0359c}h@>`zoUo%M zkWjQM+d7}tD!J);9 zQV*NO)L!ihO@|V!=<`EEi@HGkH?-H%dkVddUg$kf3iw7?qIBkq@Ht#PZqiFd$wuEa zC}n?K%b=j}cgQ!-wbuEQyO{nO!7HYt4^ONXcU!I`usA5^e|m1{^aYXuA=t1MGOmk5 zx_7zl<<*kVBYMZX`rwV_TWRb4A}X1LNw{5L$9G@2m_r`gbK1WX@pmkgf>Px0TRGw0 z05kaAx)VHbru)!IGhVrf$>bw{mJqg z#YUJcN$tKji*m8U;Z0U;2^i-V{{ve(WmUo5u;UU0r9!EAW|EM3Bl?^%84F+7bb|BT zkp+@c`ErQG&&e!u^XaSxdLHzWq2D1P$`y^X=v@zev!sB9>??c3MIk{63g)v ze%x?cV8{uSOFoln2OOtXNON1CFP&=3BFWN)@w>X%eksRS zuNbtwe(!c!SmP2^Feal!G@#2bD=2VqZ?g#mmt$)9+so_q?G|69z{U^v`j|ObK}+5T&*I=(6FBoWjrr2#}Xl5<_+ud$R%E z3UFZQV&d(B18b{^-y`uhf6s0r`fmoXdigqI;Z}pcPKRCdy4=9tJ=<+I|$~4 z@C1gszLfSncCA{wp8opi+>fcb_>M%tfL7q+$T*58L$IC-H zk9u|>$I@^lw5lbFY`V2v3dc5YQ<+Y~fvbp%Nr?eg1M)YP@H3Wl()Ciag&)I>mUtT3 zf-~j7(h+4Zmytt5Ydukrj?bhDC9(4dyxbx5SZO5#@Yl?lv%Bfs-Clnt5I6YA9HJOF zoqZ~-Ny~Xj&qw$;La2L^7D2veT5a=%`#EOeoq!mLR<3Dhh#&W&6e2=OqRpP~e@UYt zD@n|?p5i*~_N?xd<_+Yb3q}xq&zRJ%ANr}g?HaI+2|BBPJF3s+DcxEdoXCuC@OWak&;|W9PLj{xepxa0=UA+iD$&qH`<|F#Kid1)dv5ooJWQiL~ zq55eyA1W`C*Wa72;VEStUShle28B!l2lrRD#=O3Tag`jqaJV6H)B+v<9RpHupgers97vdKfn;32OY57sT#Y@|xoYzo$6$Jxcfi(=w#MJDER z`u0W{!BRY(=UkI|yG~c!GVSuuH`#?Vj%a)%hex z)*!tHxduWJHhMI4V?KR@O{kznZ`x5IC@{w?wly@x3>?F;CC0`U5vF>qu8VB5H8Ast z%RdsdhB^|7SX^gHruWOg`Uh|1K}3wGoR1-NUSSzPx@bbt=$R~#Z>U{<{DuyPQ?jw z>2tSM#ZaWjg>ABI9h#Lwr2>vWbTRG6g^)-#*`covts$O~R~HvaZgs;ADqY6$4bI#T@Y1Qy1e3(IGOs`r*2a=V*#2K5F8oBb1fu0%bTxW`_*Pm5BYa34#OH z4oDQ6U10pJs62@vV7#nm1Gvu_K{yvKGvdI+(APha;hjbo&R%6>L1GaI4>JsNdm02Z zs3n@QvrR|5i=HvFTpai-kqn(D>>uMjk=a(Rx7)O0gJH2}@r6)0OS~^0`Jy5+TdwNT z&$rbAZ(MXG6vy>7%Wn$HuE@K;`5i=Sq3Vc=if(C29!<%lsdac@{!;$wo1@^ZzOx*b zl)B^?>JnAzK_3_f^dsO!h^Sm6odlciBqs$(Qy7U;gEGwj+ewX;$I)y;Lb9-_>Gx>% z?Qt|CY|ji8#NvWGvBHw4?R|(4BD@|8R_s(|Os4A6r<>RAmfy?&LX9>YPfb*ICLl$A zfnR)cGuso7I@EX}a_|X1G{hFpK{R8Y_PTK@ge3}$or&A(6ZtM6a#p0r!p^F?uZS;4 z71J_$);Zn1 zKpdb(lgQ5+UTZJ=Qv!0L5}4}y2b^NUlh~FLX=RxgHzvx+bD~L9l$E!u0Ql4mk@;nR z>Uuxbx!imk0hr~m$fS-@^m%!8P)FiuJDdG}gLRDruo1!GTP8`lgRhiQH}Q~m6Ffp< zAV0bpYjU<;(klT928pm7uM-(Izs4DgjA`r?x>JOy9k7!UcMv19Afu(=6XWW@NTyL% zLys%t8wZ?7ENUXc7EJ`>Atw-$ck(d8;`*~M*k@T9V@+Ly*uS`~Q9@TH;`ouiT<{sa ztBkaqK~;X+@-eo%5u51<;puI5W`x`ZdUX!4p5XJs7B6{KabymY0I!>WtF(zD-*_{J zof*al@y5EgEBmY6B~uW?pT8htgF|mEL59?8A1rJY@3ph=|3)Eq_StA`awS|;DW6r* z>R6|uG~njU@b}M}ZQ($tV`Gbq7jNk^$44TYlJG&xrn`k+BGU-?b`;QV$#zTO^17hy=$Px$#1 zeef_r(5c|-%Vf|K8UK_0$QhCZVpr$I8G6k6?etG);VDopazy4p&kG|xZ27G^YBD>p zT5_BsO8Bk-dV(vMw<+FRmf@kj-^~lc940v=EH+{gH0YU-OfZUe->(e02=Jka-$w6i zT?Lsb&voW>yIpNJ=XD0d$6R;{siVsYRD2rg(&ei9PII_ST(C~?&G%L00ep<1v5QN0 zHhnW&QwMG!%q_JWgQb&fIUF7lY@G3~i>!CmvP8K%8Vdi62a%V`|T&H?1S9yQf9N151reE>!&$#}V--ddTT7B%MMGkZX6IelD{LG@{2 z6BdiB-6`2XSsig*Ged6UACOYp=w0`LF8&&z8me(y_pZ)7GgAplI=-4tuU=H-M!Qok zYie#BXD0v1gapGt0W5RB=@+>{C8fTyHNGe9?TG*aA}FY^O_Iq;0aZ`npvxh1J9k^E zXT%KUCt!KN-C8|8MBT$Z`U?iZK8KGUQ3t3nv5Z&>3{7jD0(V!;|x%m?Mg?V$C}b7B!7 zlou~|ld-;~H$SPp$i%{HFw83}OmvB+D`&92@VMxnnjf4b3X(ij)#?tBL(fw%Vlz+~ za8-xCW-Z|oR}>f4G^V_dJCw0s%#I?Gc{2ktJN-TKK|c(eL?w2ATe;qSe>V7S?To-V zqDLk;e3ZREG|l#D)z6P@!!a`gjW{|wozKTL#{6`eZj=uC$diVD1W!wgQ>!&`Ecz^B zamFb+@gY9KlE27<*Hjco9CaW)dZ2^(>w1;a$1WDg_Dzng-p3QN#Z29zB^c8sck4xV z*6jX=Bv$h_Fb^xLC?aiV>86nW3&qzaujDuLr?c`cjcIU44|DuzI=kG%-5uREVdWgV zYTQuHL~F&vXhKT(U zz*L!DO!Rchjwdu1w!_49L$T5qOwX&9kB7VzZ2T97VshX9L{D^s@$Lw+*4);1(Nhx z3H&i^JA(XX$d%7j!z6;Ad5^4clfEd8D8;3TCoOmO7cAdpf!LSX?7u1qYBj2PwsA!y zsCJbeqrH|+4*4pJ|3LY818^Jr4lb#w*edxBO-oxAA^BX6t0-EsHCR9sq1 z1$6Ov%*P<(zQxfG=N1E4C|S3jQBhMzpdAO0h!duln+>Q{q7wu%VG@Q7XYB{4?-6*r z`{5yr&s=Xsf+kBQpcLd5`R@QF(EYO~E)Kl%Pj3&VjJfi(r)*S(|3H+l z142M8wKjQ{`yB95Ag$%6La?1oPqZieb2uGd4`7P%bEi>7<^iq6!B>DxSZA8h+RXIh z%B@0SNS<#5f3EEb`GF6SACCPz-fZ1mLYS$;ae~r%01+|;s369|xVv_hG!D59V~%O76oGh!St9L849Y$UTT#&T z9O2FzMSeaQ^Da4Krh`@u>CY$lyL@NFn6F3BPbSj14JTgq?&~d(+&9$F(j5{+Zq(!! z2({R_2(fq*Oa*ps2Nf2K_`=j~ah=uc!!)A^2qksabnTYu-rGF|xEECW$+)cSnbZZ^ zqJ0A_h-sO6Gt=LuCzr3jzlsb8#ntUdq9HqXYN zK8KNo8xBI&w}6^7F52i;CLOyPQiD6;o;FJNv1^N__G=6y_RrVyCQto)W*WHvo@A4$uaZJKQfbr1apwZ`q=K>%zWdKnp{(D&tm22 zsf!~K?6bK(gjOXd{5HdK74OiTih3*ljIgDED4h^aB0wGy$wU`GmeZ@&4VmKChMXaj#Q9$f^D}NjsDt*ok%rGGVX=JL$}=mBEh+GLAhu6>_=&yg;1De z>$Sg;qbfWUgCX)*r5ir1N;wYaVP`!vhKlmGsWz*S)Z*D3Suq0El_*O(WHfw1gR#ys zSAX9(x`et@164_pbU0B$4e^3+3lS1>E}*#;lZA|P5t zqOYq6^e}LDE9C@xCg+PJBuX_)KUUp%>DlQx=%7}kzy>wOei5+%JVOiOtTd;oh%!=* zZraA_`8kXqp^y(gd}6K~t+QPd5SP8wv42k!JxQ^^R({>Pln)tL|2K!x}`G z;qdm%lG!sOc8*Y|tee_yC-{RMMf`Pd%!ThW^{FjPmCluw?Iw8&%k(L0*H52B7~Cjv z;PU5WH^@U{i&An|GB(uw%Zvp$q9_r8ziy!*aHKAX@w@{V`N&j0}l7VURNccBck!?MIs=7Z4l~_068a6{hFPq+DFy^Vct_( zjkF1Dqn$<|6b&*cb2KN01R7u%RasK(fFB@0GRA+0e)j{5S^a;Ei{?5<= z%-2m_)!~y`%99#^tioe40EvDI3<^Tpznuu~W@&lLZNq{@&@O{=5C8#$g;FrlNior zv&t7yB_f+?(0(}yeKkQUA1(M$v&Xgm5h{7q;eKpznHbu?eY`A)M)kyb>xQ84!k&ej<4DI!hu6}kBL0gndSw2s3YO)@|3C2} zvze#DT+-OFarnWOQY4Ynf5#UOuxE^9Dv#rrFdwqGeo2UYZynKWGm~Yn2bQ5Xapir>7=w< zHDO(;z~?g1sP#@-QWoJ?8(m%k2=G~o$PMg4ydb38jZ|<^2`LfR3Ao{fgtRos7lkfm zx7G1RmpxBXTAEPAu;_Ij@R!Mgf={Q9#I%I?%wPhdiTip8tsw#TKv<>8%Y16`4~4dI zfWo=R11-9EAvt(q5JqELPNQ${2G&BOXpS)bK=WTLzqI&oL!nE!M+5H3Ud9!vi3$GJ z?iu`RLM-x6rVay_O_X zwf5ZLwo{|8JAA3zneEu$-*-I_qQg(amNGn;n%V3rX9f}vGb z6-u&zERygu@O_CoZ8v-xy3?z=14Uj@MTt9iWW-WrNLy%at553R#o*6K5WKya?`65R zt2&-YCiG#WRM6BMk<}#s;^g73RAwnrG>e%%ddMc91gu;pFGt6wpK1IJ(rj9yq9;uxFtN@m`igwM^_kPCD8{b12pCMylb6dk`CDybk#G@#+zd(6 z0Qe4ir~)uV&@+b+KNR#WRqPHI>ysy|-Ip?S$z17rH#Sp=Uzx&FaD2^YE_?{y(Z}D( z2^sw#8X>%=csZ6jb0WqgTB(8;v4eRQCR(&$dDJyVT&11NQ6cRp1fI?9*+|W03_aa3 zb0udB$s@dn`(`q^-Dsf@j+&+uKYVO(@wHphV=Y_I5vMcdBOd zY`7OvLsV*#y+IJ2aPCaj;-& zNkVGUVvf0QYAXuI=n~*O8D(D{Tj_M+L;{7esM;OJ^8`c2Mjm$?@v!L|xhVjHI3OX< zN!yAAo;)!?{eO#tZT1*F|0xcRuc2@FGLEA+7Lk}Zm}!85f+14k7b?Xl%#tKb_S9V#NHAFe1#V{`^AZYNM6@ufxznBu`!Mj*yR zcx1!0IL}_E;ipp^VDbz>mS^1sSS}|)i2&P@acP}3O_ll{w2DC*VB-)qwELa+Tj1!R z<0?fjQQ(B;p7_eJJ8liT-Vru{aUPnPI{2}jd<5bexXswTB>SRsul(Nc(uxX0#9ts5 z$KdPxMHiYhUTUT)dJ1fm@46-SAB@6kUWs)2eIcNurzCn*9ofE; zGmZp-a+Ks?rAt=1pjbXJdQfO(wMwuI<~S9$t~Z36np!8b5G5#kKSrf;e|`VCCg|EEu4X9#oz6F5MvwS zM8?j=98Ac)ml1g?;uIC!r2%xZMhpbkU9v>fvypZX|Aq-m)e-ie)?wWbVnsD#fUKCl zVs^{_4^)`k!hFtv{C{UC{`HUk8Eq0Z5gMNRQ}}vwk9WB~F2OWy38!WBHTs!6{YnEl zksEPOvKqDjX(%eXmiTTI0N_NFO}t=ET`2uVLG8c$iTcM5C^RGr%gXZ2EK@)1=nHdJ zu2)J53hs`Dqa}tS)B4cue9(KUq($$=HtJCVa+ZcnHVqlIKT@fR9ImG`U#~K(6X>kE zupH*=SJMi#Iy0Pb_?G?y8Xhd?tGavtPt;Hv$>gHNLDu;VYMX!+Baya)mT`V< zsLVLOz1>gbaZXvGt>WJtMIY`FkphlR-H?y?i3ZXU9w8{#njL|KS-y;|_y&c_f43K5 z=_16=knUdgkC#}Y@DC4gYucC|S&~%m>-Md&5@E~>zgIO2=2%}8vhrX9fcpPxFY<_% z&Dw2^kaKNG06qa!Sg#tEOvSFrR--U-`E1i#yPw!8&GIDNl}Vn|k*gV|!!)6%4e+;4 zTI``fC!tb`Oy@7DvL?n+IQ!G8;EFQuJjR1mdYLn>wibpP{Y;09pSQ77o%MN;;bU!` zrB!iO%!-tYt8Op!)i_DtWs%sImv83+oS>YT7MNXJTpRDDJrOudzEZ7vf|^PL(V^Jx zeaGK8H;=j>rfNZ%A;~b!b~xmEU;<)(^v3cx2H3;|{io^ZVVb!AYiDS*HS?|=1PSDZ zPAQM9I>y!eG#e%76P5pS<7Lyaim=!kn7dX()+-Tqu4;>uo+GVkDh`oTJ5nw| zMFGqUu~PrveJ(kVBD3VjH}UP7-Lx-l9qu@>`o~YsnJ-Ce!^qFp}MXtytxD>+!XS_7wR@{b@*{J8#KA)$5XP zdGh|gs|U&CauS_DQL!`SdXbEog=w^*)B_U|3?u1#qqXhkpjyKwkN5t!P#{gLaqO4P zVX}Z)oWquGjL%q;T$U+EU^+nCQ3D-7>vnn-cnCoI&OD0ys|V(FpZzSeW27G_#)5}J znNN@*Fcr&s12wcw##p^=H$^pZ)$BE-<<}VWxLIOS)%q7PHl1Ip^!%UB(6*wz^}pfx z8i|9u)xLW505*TK-pD)OH~z0$UKnx1>>llCKz1X1NQJcM<7y;~>+1AA;HaKL(%jEUFgb?a2>TwNRXm3^7%-hvj(pt5Xhp-7Z!0LvYjhQ_t| z@L~!hA+djM;(qmeXK-!iIxbM;I+wC)tECC`Xn>2xF_>o`sMMkTco#XH%=Di0KrAa; z>!W7<#$w+ z!3A%xl9B?-T)*cyEl5c0-ON@Zh@WY0&U*Hd7ei_2)7w%Ey;R|4}7p z@?e^eyRxSHfXwca)-q!_m-YxzgEnQd8@)RLD4-^ z@Y~?_049jRR=ST~?=$oAX(Qu$*&S+jcU7cx)#eniSNhMGfxirOZ?}q|2n@21 z)p}UVjCx>6S-uXwv2r})9J+R|ElSxuis8{FuWoJk$94g!kUI1H%7?tB20+TM&3O?j zD)!qySj5#^xLyN@1O*ej16I`PnMK0t1Vt&e=mG|1J?VCEZt?yCv$0Y2tEDH4I)5`w zYdQq2FGRlC+B}HzO|_0FVi4H$a?s6;as⩔n}RPe-KSo0tq~J-h`BSW8{LV4gw}J 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⪚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