summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSuren A. Chilingaryan <csa@suren.me>2018-12-13 06:13:04 +0100
committerSuren A. Chilingaryan <csa@suren.me>2018-12-13 06:13:04 +0100
commit493ce5439af6a008ff170f4bca0ee7031e32231b (patch)
tree3b0b42878bbdfa64b27c3d34435cfdb41c53d546
parent9c3d5c48694db1018d50aa85acad434f47e5ed0b (diff)
downloadbiomedisa-master.tar.gz
biomedisa-master.tar.bz2
biomedisa-master.tar.xz
biomedisa-master.zip
Windows port (unsuccessful as the external part does not running on Windows due to multiple reasons)HEADmaster
-rw-r--r--docker-compose.win.yml23
-rw-r--r--external/install.bat11
-rw-r--r--external/run.bat20
-rw-r--r--external/win/stdint.h247
-rw-r--r--win/prepare.bat7
-rw-r--r--win/run.bat2
6 files changed, 310 insertions, 0 deletions
diff --git a/docker-compose.win.yml b/docker-compose.win.yml
new file mode 100644
index 0000000..f5b673c
--- /dev/null
+++ b/docker-compose.win.yml
@@ -0,0 +1,23 @@
+version: '2.4'
+
+services:
+ redis:
+ ports:
+ - 127.0.0.1:6379:6379
+ mysql:
+ ports:
+ - 127.0.0.1:3306:3306
+ biomedisa:
+ runtime: ""
+ build:
+ context: ./biomedisa
+ args:
+ TENSORFLOW_DEVICE: cpu
+ TENSORFLOW_APPEND:
+ volumes:
+ - ${BIOMEDISA_HOST_SRC_PATH}:/biomedisa
+ - ${BIOMEDISA_HOST_SRC_PATH}:${BIOMEDISA_HOST_SRC_PATH}
+ django:
+ volumes:
+ - ${BIOMEDISA_HOST_SRC_PATH}:/biomedisa
+ - ${BIOMEDISA_HOST_SRC_PATH}:${BIOMEDISA_HOST_SRC_PATH}
diff --git a/external/install.bat b/external/install.bat
new file mode 100644
index 0000000..7784b87
--- /dev/null
+++ b/external/install.bat
@@ -0,0 +1,11 @@
+python -m pip install --user --upgrade pip
+pip install --user "pycuda-2018.1+cuda92148-cp27-cp27m-win_amd64.whl"
+pip install --user MySQL_python-1.2.5-cp27-none-win_amd64.whl
+
+pip --no-cache-dir install --user setuptools==39.1.0 numpy==1.14.5 tifffile==0.14.0 SimpleParse==2.1.1 redis==2.10.6 rq==0.12
+pip --no-cache-dir install --user weave scikit-image opencv-python h5py pydicom Pillow django mpi4py pycuda
+
+REM Needs fixing, doesn't work with recent versions of RQ
+REM pip install --user git+https://github.com/michaelbrooks/rq-win.git#egg=rq-win
+
+COPY stdint.h "C:\Users\csa\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\VC\include"
diff --git a/external/run.bat b/external/run.bat
new file mode 100644
index 0000000..47f5dd1
--- /dev/null
+++ b/external/run.bat
@@ -0,0 +1,20 @@
+REM No grep in batch, but Powershell supports it. We can convert script to powershell
+REM path=$(cat ../.env | grep -oP 'BIOMEDISA_HOST_SRC_PATH=\K.*')
+
+SET BIOMEDISA_PATH=C:/Users/csa/biomedisa/
+SET PYTHON_PATH="C:\Users\csa\AppData\Roaming\Python\Scripts"
+
+SET PATH=%PATH%;%PYTHON_PATH%;
+SET PYTHONPATH=%BIOMEDISA_PATH%;%PYTHONPATH%
+SET DJANGO_SETTINGS_MODULE=biomedisa.settings
+SET BIOMEDISA_SRC_PATH="%BIOMEDISA_PATH%"
+SET MYSQL_HOST=127.0.0.1
+SET REDIS_HOST="localhost"
+
+REM RQ is not working on Windows due to absent (clone). RQ-win project doesn't work with current version of RQ (but probably easy to fix)
+REM cd "%BIOMEDISA_PATH%" || exit -1
+REM %PYTHON_PATH%\rqworker -w rq_win.WindowsWorker -u http://localhost first_queue
+
+REM This fails since different paths are written to MySQL database from the containers....
+REM cd biomedisa_features/random_walk
+REM python rw_main.py C:\Users\csa\biomedisa\media\images\tumor.tif C:\Users\csa\biomedisa\media\images\labels.tumor.tif
diff --git a/external/win/stdint.h b/external/win/stdint.h
new file mode 100644
index 0000000..d02608a
--- /dev/null
+++ b/external/win/stdint.h
@@ -0,0 +1,247 @@
+// ISO C9x compliant stdint.h for Microsoft Visual Studio
+// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124
+//
+// Copyright (c) 2006-2008 Alexander Chemeris
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// 2. 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.
+//
+// 3. The name of the author may be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// 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 AUTHOR 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.
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef _MSC_VER // [
+#error "Use this header only with Microsoft Visual C++ compilers!"
+#endif // _MSC_VER ]
+
+#ifndef _MSC_STDINT_H_ // [
+#define _MSC_STDINT_H_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#include <limits.h>
+
+// For Visual Studio 6 in C++ mode and for many Visual Studio versions when
+// compiling for ARM we should wrap <wchar.h> include with 'extern "C++" {}'
+// or compiler give many errors like this:
+// error C2733: second C linkage of overloaded function 'wmemchr' not allowed
+#ifdef __cplusplus
+extern "C" {
+#endif
+# include <wchar.h>
+#ifdef __cplusplus
+}
+#endif
+
+// Define _W64 macros to mark types changing their size, like intptr_t.
+#ifndef _W64
+# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300
+# define _W64 __w64
+# else
+# define _W64
+# endif
+#endif
+
+
+// 7.18.1 Integer types
+
+// 7.18.1.1 Exact-width integer types
+
+// Visual Studio 6 and Embedded Visual C++ 4 doesn't
+// realize that, e.g. char has the same size as __int8
+// so we give up on __intX for them.
+#if (_MSC_VER < 1300)
+ typedef signed char int8_t;
+ typedef signed short int16_t;
+ typedef signed int int32_t;
+ typedef unsigned char uint8_t;
+ typedef unsigned short uint16_t;
+ typedef unsigned int uint32_t;
+#else
+ typedef signed __int8 int8_t;
+ typedef signed __int16 int16_t;
+ typedef signed __int32 int32_t;
+ typedef unsigned __int8 uint8_t;
+ typedef unsigned __int16 uint16_t;
+ typedef unsigned __int32 uint32_t;
+#endif
+typedef signed __int64 int64_t;
+typedef unsigned __int64 uint64_t;
+
+
+// 7.18.1.2 Minimum-width integer types
+typedef int8_t int_least8_t;
+typedef int16_t int_least16_t;
+typedef int32_t int_least32_t;
+typedef int64_t int_least64_t;
+typedef uint8_t uint_least8_t;
+typedef uint16_t uint_least16_t;
+typedef uint32_t uint_least32_t;
+typedef uint64_t uint_least64_t;
+
+// 7.18.1.3 Fastest minimum-width integer types
+typedef int8_t int_fast8_t;
+typedef int16_t int_fast16_t;
+typedef int32_t int_fast32_t;
+typedef int64_t int_fast64_t;
+typedef uint8_t uint_fast8_t;
+typedef uint16_t uint_fast16_t;
+typedef uint32_t uint_fast32_t;
+typedef uint64_t uint_fast64_t;
+
+// 7.18.1.4 Integer types capable of holding object pointers
+#ifdef _WIN64 // [
+ typedef signed __int64 intptr_t;
+ typedef unsigned __int64 uintptr_t;
+#else // _WIN64 ][
+ typedef _W64 signed int intptr_t;
+ typedef _W64 unsigned int uintptr_t;
+#endif // _WIN64 ]
+
+// 7.18.1.5 Greatest-width integer types
+typedef int64_t intmax_t;
+typedef uint64_t uintmax_t;
+
+
+// 7.18.2 Limits of specified-width integer types
+
+#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and footnote 221 at page 259
+
+// 7.18.2.1 Limits of exact-width integer types
+#define INT8_MIN ((int8_t)_I8_MIN)
+#define INT8_MAX _I8_MAX
+#define INT16_MIN ((int16_t)_I16_MIN)
+#define INT16_MAX _I16_MAX
+#define INT32_MIN ((int32_t)_I32_MIN)
+#define INT32_MAX _I32_MAX
+#define INT64_MIN ((int64_t)_I64_MIN)
+#define INT64_MAX _I64_MAX
+#define UINT8_MAX _UI8_MAX
+#define UINT16_MAX _UI16_MAX
+#define UINT32_MAX _UI32_MAX
+#define UINT64_MAX _UI64_MAX
+
+// 7.18.2.2 Limits of minimum-width integer types
+#define INT_LEAST8_MIN INT8_MIN
+#define INT_LEAST8_MAX INT8_MAX
+#define INT_LEAST16_MIN INT16_MIN
+#define INT_LEAST16_MAX INT16_MAX
+#define INT_LEAST32_MIN INT32_MIN
+#define INT_LEAST32_MAX INT32_MAX
+#define INT_LEAST64_MIN INT64_MIN
+#define INT_LEAST64_MAX INT64_MAX
+#define UINT_LEAST8_MAX UINT8_MAX
+#define UINT_LEAST16_MAX UINT16_MAX
+#define UINT_LEAST32_MAX UINT32_MAX
+#define UINT_LEAST64_MAX UINT64_MAX
+
+// 7.18.2.3 Limits of fastest minimum-width integer types
+#define INT_FAST8_MIN INT8_MIN
+#define INT_FAST8_MAX INT8_MAX
+#define INT_FAST16_MIN INT16_MIN
+#define INT_FAST16_MAX INT16_MAX
+#define INT_FAST32_MIN INT32_MIN
+#define INT_FAST32_MAX INT32_MAX
+#define INT_FAST64_MIN INT64_MIN
+#define INT_FAST64_MAX INT64_MAX
+#define UINT_FAST8_MAX UINT8_MAX
+#define UINT_FAST16_MAX UINT16_MAX
+#define UINT_FAST32_MAX UINT32_MAX
+#define UINT_FAST64_MAX UINT64_MAX
+
+// 7.18.2.4 Limits of integer types capable of holding object pointers
+#ifdef _WIN64 // [
+# define INTPTR_MIN INT64_MIN
+# define INTPTR_MAX INT64_MAX
+# define UINTPTR_MAX UINT64_MAX
+#else // _WIN64 ][
+# define INTPTR_MIN INT32_MIN
+# define INTPTR_MAX INT32_MAX
+# define UINTPTR_MAX UINT32_MAX
+#endif // _WIN64 ]
+
+// 7.18.2.5 Limits of greatest-width integer types
+#define INTMAX_MIN INT64_MIN
+#define INTMAX_MAX INT64_MAX
+#define UINTMAX_MAX UINT64_MAX
+
+// 7.18.3 Limits of other integer types
+
+#ifdef _WIN64 // [
+# define PTRDIFF_MIN _I64_MIN
+# define PTRDIFF_MAX _I64_MAX
+#else // _WIN64 ][
+# define PTRDIFF_MIN _I32_MIN
+# define PTRDIFF_MAX _I32_MAX
+#endif // _WIN64 ]
+
+#define SIG_ATOMIC_MIN INT_MIN
+#define SIG_ATOMIC_MAX INT_MAX
+
+#ifndef SIZE_MAX // [
+# ifdef _WIN64 // [
+# define SIZE_MAX _UI64_MAX
+# else // _WIN64 ][
+# define SIZE_MAX _UI32_MAX
+# endif // _WIN64 ]
+#endif // SIZE_MAX ]
+
+// WCHAR_MIN and WCHAR_MAX are also defined in <wchar.h>
+#ifndef WCHAR_MIN // [
+# define WCHAR_MIN 0
+#endif // WCHAR_MIN ]
+#ifndef WCHAR_MAX // [
+# define WCHAR_MAX _UI16_MAX
+#endif // WCHAR_MAX ]
+
+#define WINT_MIN 0
+#define WINT_MAX _UI16_MAX
+
+#endif // __STDC_LIMIT_MACROS ]
+
+
+// 7.18.4 Limits of other integer types
+
+#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260
+
+// 7.18.4.1 Macros for minimum-width integer constants
+
+#define INT8_C(val) val##i8
+#define INT16_C(val) val##i16
+#define INT32_C(val) val##i32
+#define INT64_C(val) val##i64
+
+#define UINT8_C(val) val##ui8
+#define UINT16_C(val) val##ui16
+#define UINT32_C(val) val##ui32
+#define UINT64_C(val) val##ui64
+
+// 7.18.4.2 Macros for greatest-width integer constants
+#define INTMAX_C INT64_C
+#define UINTMAX_C UINT64_C
+
+#endif // __STDC_CONSTANT_MACROS ]
+
+
+#endif // _MSC_STDINT_H_ ]
diff --git a/win/prepare.bat b/win/prepare.bat
new file mode 100644
index 0000000..a4000b9
--- /dev/null
+++ b/win/prepare.bat
@@ -0,0 +1,7 @@
+REM Enable Shared Drivers in Docker Configuration
+REM Local driver does not work on windows, volumes should be specified inside services
+REM The path C:\Users\... should look like:
+REM BIOMEDISA_HOST_SRC_PATH=/C/Users/csa/biomedisa
+cd ..
+docker-compose -p biomedisa -f docker-compose.yml -f docker-compose.win.yml build
+docker-compose -p biomedisa -f docker-compose.yml -f docker-compose.win.yml run --rm django /run-bootstrap.sh
diff --git a/win/run.bat b/win/run.bat
new file mode 100644
index 0000000..60a3b28
--- /dev/null
+++ b/win/run.bat
@@ -0,0 +1,2 @@
+cd ..
+docker-compose -p biomedisa -f docker-compose.yml -f docker-compose.cpu.yml up