From e187cd6f1c549f94a7cff3b10d18d39e3391ac63 Mon Sep 17 00:00:00 2001 From: mgravey Date: Tue, 3 Oct 2023 12:14:45 +0000 Subject: [PATCH] jekyll build from Action 1245098f9d8887bc0471bda627ef7189f1891360 --- .nojekyll | 0 404.html | 387 +++++ about/index.html | 10 + algorithms.html | 376 +++++ algorithms/AutoQS.html | 384 +++++ algorithms/NarrowDistributionSelection.html | 472 ++++++ algorithms/QuickSampling.html | 1546 +++++++++++++++++++ assets/css/g2s.css | 366 +++++ assets/css/print.css | 1 + assets/css/style.css | 1 + assets/images/Matlab.png | Bin 0 -> 136266 bytes assets/images/Python.svg | 113 ++ assets/images/Rlogo.svg | 14 + assets/images/Windows.png | Bin 0 -> 18617 bytes assets/images/apple.png | Bin 0 -> 10569 bytes assets/images/body-bg.jpg | Bin 0 -> 2281 bytes assets/images/cloudGear.svg | 72 + assets/images/content_copy.svg | 1 + assets/images/download-button.png | Bin 0 -> 27151 bytes assets/images/github-button.png | Bin 0 -> 1550 bytes assets/images/header-bg.jpg | Bin 0 -> 9461 bytes assets/images/highlight-bg.jpg | Bin 0 -> 30991 bytes assets/images/linux.png | Bin 0 -> 7666 bytes assets/images/sidebar-bg.jpg | Bin 0 -> 2270 bytes assets/js/codeblock.js | 16 + assets/js/tabManager.js | 26 + autoqs.html | 11 + briefOverview.html | 394 +++++ feed.xml | 1 + index.html | 11 + installation.html | 398 +++++ installation/cluster.html | 496 ++++++ installation/cluster.md | 119 ++ installation/interfaces.html | 485 ++++++ installation/server.html | 496 ++++++ nds.html | 11 + qs.html | 11 + redirects.json | 1 + runTheServer.html | 434 ++++++ usingTheInterfaces.html | 503 ++++++ 40 files changed, 7156 insertions(+) create mode 100644 .nojekyll create mode 100644 404.html create mode 100644 about/index.html create mode 100644 algorithms.html create mode 100644 algorithms/AutoQS.html create mode 100644 algorithms/NarrowDistributionSelection.html create mode 100644 algorithms/QuickSampling.html create mode 100644 assets/css/g2s.css create mode 100644 assets/css/print.css create mode 100644 assets/css/style.css create mode 100644 assets/images/Matlab.png create mode 100644 assets/images/Python.svg create mode 100644 assets/images/Rlogo.svg create mode 100644 assets/images/Windows.png create mode 100644 assets/images/apple.png create mode 100644 assets/images/body-bg.jpg create mode 100644 assets/images/cloudGear.svg create mode 100644 assets/images/content_copy.svg create mode 100644 assets/images/download-button.png create mode 100644 assets/images/github-button.png create mode 100644 assets/images/header-bg.jpg create mode 100644 assets/images/highlight-bg.jpg create mode 100644 assets/images/linux.png create mode 100644 assets/images/sidebar-bg.jpg create mode 100644 assets/js/codeblock.js create mode 100644 assets/js/tabManager.js create mode 100644 autoqs.html create mode 100644 briefOverview.html create mode 100644 feed.xml create mode 100644 index.html create mode 100644 installation.html create mode 100644 installation/cluster.html create mode 100644 installation/cluster.md create mode 100644 installation/interfaces.html create mode 100644 installation/server.html create mode 100644 nds.html create mode 100644 qs.html create mode 100644 redirects.json create mode 100644 runTheServer.html create mode 100644 usingTheInterfaces.html diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/404.html b/404.html new file mode 100644 index 0000000..56ab065 --- /dev/null +++ b/404.html @@ -0,0 +1,387 @@ + + + + + + + + + + + + + + + + + + + + +G2S: The GeoStatistical Server | A free and flexible multiple point (geo)statistics framework including state-of-the-art algorithms: QuickSampling and Narrow Distribution Selection + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +

G2S: The GeoStatistical Server

+
+

A free and flexible multiple point (geo)statistics framework including state-of-the-art algorithms: QuickSampling and Narrow Distribution Selection

+ +
+
+ +
+
+ +
+ + +
+

404

+ +

Page not found :(

+

The requested page could not be found.

+
+ +
+
+
+ + + \ No newline at end of file diff --git a/about/index.html b/about/index.html new file mode 100644 index 0000000..d5a2b78 --- /dev/null +++ b/about/index.html @@ -0,0 +1,10 @@ +

This is the base Jekyll theme. You can find out more info about customizing your Jekyll theme, as well as basic Jekyll usage documentation at jekyllrb.com

+ +

You can find the source code for Minima at GitHub: +jekyll / +minima

+ +

You can find the source code for Jekyll at GitHub: +jekyll / +jekyll

+ diff --git a/algorithms.html b/algorithms.html new file mode 100644 index 0000000..f1c8877 --- /dev/null +++ b/algorithms.html @@ -0,0 +1,376 @@ + + + + + + + + + + + + + + + + + + + + +Algorithms | G2S: The GeoStatistical Server + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +

G2S: The GeoStatistical Server

+
+

A free and flexible multiple point (geo)statistics framework including state-of-the-art algorithms: QuickSampling and Narrow Distribution Selection

+ +
+
+ +
+
+ +
+

Algorithms

+ +
    +
  • QuickSampling (QS) (aka. Quantile Sampling) is a general-purpose pixel-based MPS algorithm that is designed to be robust, efficient, and run in constant time. QS was designed to adapt to your problem; it can be used to do (un)conditional simulation, gap filling, or even downscaling, using continuous or categorical variables or a combination of both. The code was developed without restrictions regarding the dimensionality of the data (e.g. 1D, 2D, 3D, nD).
  • +
  • Narrow Distribution Selection (NDS) is an algorithm specifically targeted to simulate spectrally enhanced remote-sensed imagery. It requires an external variable (for example, a grayscale image) to control the simulation (of colors).
  • +
+ +

The framework can be easily extended to handle most codes that use gridded data. Currently, any compiled code or Python code can be handled.

+ +
+
+
+ + + \ No newline at end of file diff --git a/algorithms/AutoQS.html b/algorithms/AutoQS.html new file mode 100644 index 0000000..2c958a4 --- /dev/null +++ b/algorithms/AutoQS.html @@ -0,0 +1,384 @@ + + + + + + + + + + + + + + + + + + + + +QuickSampling | G2S: The GeoStatistical Server + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +

G2S: The GeoStatistical Server

+
+

A free and flexible multiple point (geo)statistics framework including state-of-the-art algorithms: QuickSampling and Narrow Distribution Selection

+ +
+
+ +
+
+ +
+

AutoQS

+ +

Parameters for AutoQS

+ +

TODO

+ +

Examples

+ +

TODO

+ +

Publication

+ +

**

+ + +
+
+
+ + + \ No newline at end of file diff --git a/algorithms/NarrowDistributionSelection.html b/algorithms/NarrowDistributionSelection.html new file mode 100644 index 0000000..0c58979 --- /dev/null +++ b/algorithms/NarrowDistributionSelection.html @@ -0,0 +1,472 @@ + + + + + + + + + + + + + + + + + + + + +QuickSampling | G2S: The GeoStatistical Server + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +

G2S: The GeoStatistical Server

+
+

A free and flexible multiple point (geo)statistics framework including state-of-the-art algorithms: QuickSampling and Narrow Distribution Selection

+ +
+
+ +
+
+ +
+

+Parameters for NDS

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FlagDescriptionMandatory
-tiTraining images (one or more images). If multivariate, the last dimension should be the same size as the number of variables, and should also match the size of the array given for the parameter dt. NaN values in the training image will be ignored. Unlike other MPS-algorithms, if there are multiple variables they will not be automatically normalized to be in the same range.
-diDestination image (one image, aka simulation grid). The size of di will be the size of the simulation grid. di can be identical as ti for gap-filing. NaN values will be simulated. Non-NaN values will be considered as conditioning data.
-dtData type. 0 -> continuous and 1 -> categorical. This is where the number of variables is defined. If multiple variables, use a single N value if identical for all variables or use an array of N values if each variable has a different N.
-kNumber of best candidates to consider to compute the narrowness, range [5, inf].
-nN closest neighbors to consider.
-kiImage of the weighting kernel. Can be used to normalize the variables. If multiple variables, use a single kernel value if identical for all variables. If each variable has a different kernel, stack all kernels along the last dimension. The number of kernels should then match the size of the array given for the parameter dt. 
-nwNarrowness range: 0 -> max-min, 1 -> median, default IQR -> 0.5. 
-nwvNumber of variables to consider in the narrowness (start from the end), default: 1. 
-csChunk size, the number of pixels to simulate at the same time, at each iteration, default: 1. 
-udsArea to update around each simulated pixel, the M closest pixel default: 10. 
-mpPartial simulation, 0 -> empty, 1 -> 100%. 
-sSeed value. 
-jTo run in parallel (default is single core). To use as follows: -j, N1, N2, N3 (all three are optional but N3 needs N2, which in turn needs N1). Use integer values to specify a number of threads (or logical cores). Use decimal values ∈ ]0,1[ to indicate fraction of the maximum number of available logical cores (e.g., 0.5=50% of all available logical cores). N1 threads used to parallelize the path (path-level) Default: the maximum number of threads available. N2 threads used to parallelize over training images (if many TIs are available, each is scanned on a different core). Default: 1. N3 threads used to parallelize FFTs (node-level). Default: 1. N1 and N2 are recommended over N3. N1 is usually more efficient than N2, but requires more memory. 
-W_GPUUse integrated GPU if available. 
-nVNo Verbatim (experimental). 
+ +

+Examples

+ +

+Publication

+ +

Gravey, M., Rasera, L. G., & Mariethoz, G. (2019). Analogue-based colorization of remote sensing images using textural information. ISPRS Journal of Photogrammetry and Remote Sensing, 147, 242–254. https://doi.org/10.1016/j.isprsjprs.2018.11.003

+ + +
+
+
+ + + \ No newline at end of file diff --git a/algorithms/QuickSampling.html b/algorithms/QuickSampling.html new file mode 100644 index 0000000..e9aa354 --- /dev/null +++ b/algorithms/QuickSampling.html @@ -0,0 +1,1546 @@ + + + + + + + + + + + + + + + + + + + + +QuickSampling | G2S: The GeoStatistical Server + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +

G2S: The GeoStatistical Server

+
+

A free and flexible multiple point (geo)statistics framework including state-of-the-art algorithms: QuickSampling and Narrow Distribution Selection

+ +
+
+ +
+
+ +
+

QuickSampling QS

+ +

+Parameters for QS

+ +

Usage: [sim,index,time,finalprogress,jobid] = g2s(flag1,value1, flag2,value2, ...) +Outputs: sim = simulation, index = index of the simulated values in the flattened TI, time = simulation time, finalprogress = final progression of the simulation (normally 100), jobid = job ID.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FlagDescriptionMandatory
-tiTraining images (one or more images). If multivariate, the last dimension should be the same size as the number of variables, and should also match the size of the array given for the parameter dt. NaN values in the training image will be ignored. Unlike other MPS-algorithms, if there are multiple variables they will not be automatically normalized to be in the same range.
-diDestination image (one image, aka simulation grid). The size of di will be the size of the simulation grid. di can be identical as ti for gap-filing. NaN values will be simulated. Non-NaN values will be considered as conditioning data.
-dtData type. 0 → continuous and 1 → categorical. This is where the number of variables is defined. Provide a list containing zeros or ones representing the data type of each variable.
-kNumber of best candidates to consider ∈ [1 ∞].
-nN closest neighbors to consider. If multiple variables: use a single N value if identical for all variables or use an array of N values if each variable has a different N.
-kiImage of the weighting kernel. Can be used to normalize the variables. If multiple variables: use a single kernel value if identical for all variables or if each variable has a different kernel, stack all kernels along the last dimension. The number of kernels should then match the size of the array given for the parameter dt. 
-ff=1/k equivalent to f of DS with a threshold to 0. 
-jTo run in parallel (default is single core). To use as follows ‘-j’, N1, N2, N3 (all three are optional but N3 needs N2, which in turn needs N1). Use integer values to specify a number of threads (or logical cores). Use decimal values ∈]0,1[ to indicate fraction of the maximum number of available logical cores (e.g., 0.5=50% of all available logical cores). N1 threads used to parallelize the path (path-level) Default: the maximum number of threads available. N2 threads used to parallelize over training images (if many TIs are available, each is scanned on a different core). Default: 1. N3 threads used to parallelize FFTs (node-level). Default: 1. N1 and N2 are recommended over N3. N1 is usually more efficient than N2, but requires more memory. 
-spSimulation path, array of the size of the simulation grid containing values that specify the simulation path (from low to high). Default is a random path. Equal values are accepted but will always be ordered in the same way (i.e. not random). -∞ values are not simulated. In case of multiple variables, a vector simulation is default (same path for all variables) and the simulation path should be one dimension less than the number of variables. If you prefer a full simulation, provide an array containing the path for each variable and use the “-fs” flag below. 
-sRandom seed value. 
-W_GPUUse integrated GPU if available. 
-W_CUDAUse Nvidia Cuda compatible GPU: specify the device id. (e.g., '-W_CUDA',0,1 to use the first two GPUs). 
+ +

+Advanced parameters

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FlagDescriptionMandatory
-iiArray that specifies for each pixel which training image to sample from. Default: all training images are searched for the best match. 
-farFast and risky 😄, like -ii but with a random input (experimental). 
-ctiWith this flag QS will treat the training image(s) as periodic (aka circular or cyclic) over each dimension. 
-csimWith this flag QS will make sure to create a periodic (aka circular or cyclic) simulation over each dimension. 
-adsimAugmented dimentionality simulation: allows for 3D simulation using 2D training image, only for categories (Coming maybe some day!). 
-fsFull simulation: follows a different simulation path for each variable (as opposed to vector simulation, where the same simulation path is used for all variables). 
-nVNo Verbatim, i.e. prohibits neighbors in the training image to be neighbors in the simulation. (experimental). 
+ +

+Examples

+

Below are several examples showcasing different applications of QS. For these examples the G2S server should be installed and running, either on your own machine or remotely. A Google Colab notebook with more examples and an automatic installation of G2S can be found here.

+ +

+Unconditional simulation

+ +
+

+ +

+
+
+
+
#This code requires the G2S server to be running
+
+import numpy
+from PIL import Image
+import requests
+from io import BytesIO
+from g2s import g2s
+import matplotlib.pyplot as plt
+
+# load example training image ('stone')
+ti = numpy.array(Image.open(BytesIO(requests.get(
+    'https://raw.githubusercontent.com/GAIA-UNIL/TrainingImagesTIFF/master/stone.tiff').content)));
+
+# QS call using G2S
+simulation,*_=g2s('-a','qs',
+                 '-ti',ti,
+                 '-di',numpy.zeros((200,200))*numpy.nan,
+                 '-dt',[0], #Zero for continuous variables
+                 '-k',1.2,
+                 '-n',50,
+                 '-j',0.5);
+
+#Display results 
+fig, (ax1, ax2) = plt.subplots(1, 2,figsize=(7,4))
+fig.suptitle('QS Unconditional simulation',size='xx-large')
+ax1.imshow(ti)
+ax1.set_title('Training image');
+ax1.axis('off');
+ax2.imshow(simulation)
+ax2.set_title('Simulation');
+ax2.axis('off');
+plt.show()
+
+
+
+
+
+
%This code requires the G2S server to be running
+
+%load data
+ti=imread('https://raw.githubusercontent.com/GAIA-UNIL/TrainingImagesTIFF/master/stone.tiff');
+
+% QS call using G2S
+simulation=g2s('-a','qs','-ti',ti,'-di',nan(200,200),'-dt',[0],'-k',1.2,'-n',50,'-j',0.5);
+
+%Display results 
+sgtitle('Unconditional simulation');
+subplot(1,2,1);
+imshow(ti);
+title('Training image');
+subplot(1,2,2);
+imshow(simulation);
+title('Simulation');
+
+
+
+ +

+Conditional simulation

+ +
+

+ +

+
+
+
+
#This code requires the G2S server to be running
+
+import numpy
+from PIL import Image
+import requests
+from io import BytesIO
+from g2s import g2s
+import matplotlib.pyplot as plt
+
+# load example training image ('stone')
+ti = numpy.array(Image.open(BytesIO(requests.get(
+    'https://raw.githubusercontent.com/GAIA-UNIL/TrainingImagesTIFF/master/stone.tiff').content)));
+
+# create empty grid and add conditioning data
+conditioning = numpy.zeros((200,200))*numpy.nan; 
+# fill the grid with 50 random points
+conditioning.flat[numpy.random.permutation(conditioning.size)[:50]]=ti.flat[numpy.random.permutation(ti.size)[:50]];
+
+# QS call using G2S
+simulation,*_=g2s('-a','qs', 
+                 '-ti',ti,
+                 '-di',conditioning,
+                 '-dt',[0],
+                 '-k',1.2,
+                 '-n',30,
+                 '-j',0.5);
+
+# Display results 
+fig, (ax1, ax2, ax3) = plt.subplots(1, 3,figsize=(7,4),subplot_kw={'aspect':'equal'})
+fig.suptitle('QS Conditional simulation',size='xx-large',y=0.9)
+ax1.imshow(ti)
+ax1.set_title('Training image');
+ax1.axis('off');
+ax2.scatter(*numpy.meshgrid(numpy.arange(200),numpy.arange(200,0,-1)),s=5,c=conditioning,marker='.')
+ax2.set_title('Conditioning');
+ax2.axis('off');
+ax3.imshow(simulation)
+ax3.set_title('Simulation');
+ax3.axis('off');
+plt.show()
+
+
+
+
+
+
%This code requires the G2S server to be running
+
+%load data
+ti=imread('https://raw.githubusercontent.com/GAIA-UNIL/TrainingImagesTIFF/master/stone.tiff');
+% empty grid 
+conditioning=nan(200,200); 
+% fill the grid with 50 random points
+conditioning(randperm(numel(conditioning),50))=ti(randperm(numel(ti),50));
+
+% QS call using G2S
+simulation=g2s('-a','qs','-ti',ti,'-di',conditioning,'-dt',[0],'-k',1.2,'-n',50,'-j',0.5);
+
+%Display results 
+sgtitle('Conditional simulation');
+subplot(1,3,1);
+imshow(ti);
+title('Training image');
+subplot(1,3,2);
+imshow(conditioning);
+title('Conditioning');
+subplot(1,3,3);
+imshow(simulation);
+title('Simulation');
+
+
+
+ +

+Simulation with multiple Training Images

+ +
+

+ +

+
+
+
+
#This code requires the G2S server to be running
+
+import numpy
+from PIL import Image
+import requests
+from io import BytesIO
+from g2s import g2s
+import matplotlib.pyplot as plt
+
+#ti1 contains horizontal lines and ti2 vertical lines
+ti1 = numpy.tile(numpy.sin(range(150)),(150,1))
+ti2 = ti1.transpose()
+
+# QS call using only the horizontal lines as TI
+simulation1,index1,*_ = g2s('-a','qs',
+                         '-ti',ti1,
+                         '-di',numpy.zeros((150,150))*numpy.nan,
+                         '-dt',[1], #1 for categorical variable
+                         '-k',1.2,
+                         '-n',25,
+                         '-j',0.5);
+
+# QS call using both horizontal and vertical lines as TI's
+simulation2,index2,*_ = g2s('-a','qs',
+                         '-ti',[ti1,ti2],
+                         '-di',numpy.zeros((150,150))*numpy.nan,
+                         '-dt',[1],
+                         '-k',1.2,
+                         '-n',25,
+                         '-j',0.5);
+
+#Display results
+fig, ([[ax1,ax2],[ax3,ax4]]) = plt.subplots(2,2,figsize=(10,10),sharex = True,sharey = True)
+fig.suptitle('QS Multiple TI simulation',size='xx-large')
+ax1.imshow(ti1)
+ax1.set_title('Training image 1');
+ax1.axis('off');
+ax2.imshow(ti2)
+ax2.set_title('Training image 2');
+ax2.axis('off');
+ax3.imshow(simulation1)
+ax3.set_title('Simulation 1');
+ax3.axis('off');
+ax4.imshow(simulation2)
+ax4.set_title('Simulation 2');
+ax4.axis('off');
+
+
+
+
+
+
%This code requires the G2S server to be running
+
+%ti1 contains horizontal lines and ti2 vertical lines
+ti=repmat((sin(1:150)>0)',1,150);
+ti1=ti;
+ti2=rot90(ti,1);
+
+%QS call using only the horizontal lines as TI
+simulation1=g2s('-a','qs', ...
+            '-di',nan(150,150,1), ...
+            '-ti',{ti1}, ...
+            '-dt',[1], ...
+            '-k',1.2, ...
+            '-n',25, ...
+            '-j',0.5);
+
+% QS call using both horizontal and vertical lines as TI's
+simulation2=g2s('-a','qs', ...
+            '-di',nan(150,150,1), ...
+            '-ti',{ti1 ti2}, ...
+            '-dt',[1], ...
+            '-k',1.2, ...
+            '-n',25, ...
+            '-j',0.5);
+
+%Display results 
+figure(4);clf
+sgtitle('multi-TI');
+subplot(2,2,1);
+imshow(ti1);
+title('Training image 1');
+subplot(2,2,2);
+imshow(ti2);
+title('Training image 2');
+subplot(2,2,3);
+imshow(simulation1);
+title('Simulation with training image 1');
+subplot(2,2,4);
+imshow(simulation2);
+title('Simulation with training images 1 and 2');
+
+
+
+ +

+Multivariate simulation

+ +
+

+ +

+
+
+
+
#This code requires the G2S server to be running
+
+import numpy
+import requests
+from io import BytesIO
+from g2s import g2s
+import matplotlib.pyplot as plt
+import tifffile as tf
+
+ti = tf.imread(BytesIO(requests.get(
+    'https://raw.githubusercontent.com/GAIA-UNIL/TrainingImagesTIFF/master/ti_3_variables.tiff').content))
+
+###Example 1 - Complete multivariate simulation
+#Here all three variables are entirely unkwown and will be simulated simultaneously
+
+# QS call using G2S (with dt set to two continuous and one categorical variable)
+simulation1,index1,*_=g2s('-a','qs',
+                 '-ti',ti,
+                 '-di',numpy.zeros([400,400,3])*numpy.nan,
+                 '-dt',[0,0,1],
+                 '-k',1.2,
+                 '-n',50,
+                 '-j',0.5);
+
+#Display results 
+fig, ([[ax1,ax2,ax3],[ax4,ax5,ax6],[ax7,ax8,ax9]]) = plt.subplots(3,3,figsize=(15,10),sharex = True,sharey = True)
+fig.suptitle('QS Multivariate simulation - example 2',size='xx-large')
+ax1.imshow(ti[:,:,0])
+ax1.set_title('Training image dim 1');
+ax1.axis('off');
+ax2.imshow(ti[:,:,1])
+ax2.set_title('Training image dim 2');
+ax2.axis('off');
+ax3.imshow(ti[:,:,2])
+ax3.set_title('Training image dim 3');
+ax3.axis('off');
+ax4.imshow(numpy.zeros([400,400])*numpy.nan)
+ax4.set_title('Destination image dim 1')
+ax4.axis('off')
+ax5.imshow(numpy.zeros([400,400])*numpy.nan)
+ax5.set_title('Destination image dim 2')
+ax5.set_aspect('equal')
+ax5.axis('off')
+ax6.imshow(numpy.zeros([400,400])*numpy.nan)
+ax6.set_title('Destination image dim 3')
+ax6.axis('off')
+ax7.imshow(simulation1[:,:,0])
+ax7.set_title('Simulation dim 1');
+ax7.axis('off');
+ax8.imshow(simulation1[:,:,1])
+ax8.set_title('Simulation dim 2');
+ax8.axis('off');
+ax9.imshow(simulation1[:,:,2])
+ax9.set_title('Simulation dim 3');
+ax9.axis('off');
+
+
+
+### Example 2 - Multivariate simulation with partially informed covariables
+#In many situations we will have fully and/or partially informed covariables (e.g. topography + point measurements)
+#To simulate a different environment than the training images, we will use the results from example 1 above
+#Variable 2 is partially informed and variable 3 is fully informed
+
+#Take random values from the previous simulation of variable 2 and add them to the di
+di_var2 = numpy.zeros([400,400])*numpy.nan
+di_var2.flat[numpy.random.permutation(di_var2.size)[:500]] = ti[:,:,1].flat[numpy.random.permutation(ti[:,:,1].size)[:500]]
+di_example2 = numpy.stack([numpy.zeros([400,400])*numpy.nan,
+                                 di_var2,
+                                 simulation1[:,:,2]],axis = 2)
+
+# QS call using G2S (with dt set to two continuous and one categorical variable)
+simulation2,index,*_=g2s('-a','qs',
+                 '-ti',ti,
+                 '-di',di_example2,
+                 '-dt',[0,0,1],
+                 '-k',1.2,
+                 '-n',50,
+                 '-j',0.5);
+
+#Display results 
+fig, ([[ax1,ax2,ax3],[ax4,ax5,ax6],[ax7,ax8,ax9]]) = plt.subplots(3,3,figsize=(15,10),sharex = True,sharey = True)
+fig.suptitle('QS Multivariate simulation - example 2',size='xx-large')
+ax1.imshow(ti[:,:,0])
+ax1.set_title('Training image dim 1');
+ax1.axis('off');
+ax2.imshow(ti[:,:,1])
+ax2.set_title('Training image dim 2');
+ax2.axis('off');
+ax3.imshow(ti[:,:,2])
+ax3.set_title('Training image dim 3');
+ax3.axis('off');
+ax4.imshow(di_example2[:,:,0])
+ax4.set_title('Destination image dim 1')
+ax4.axis('off')
+ax5.scatter(*numpy.meshgrid(numpy.arange(400),numpy.arange(400,0,-1)),s=5,c=di_example2[:,:,1],marker='.')
+ax5.set_title('Destination image dim 2')
+ax5.set_aspect('equal')
+ax5.axis('off')
+ax6.imshow(di_example2[:,:,2])
+ax6.set_title('Destination image dim 3')
+ax6.axis('off')
+ax7.imshow(simulation2[:,:,0])
+ax7.set_title('Simulation dim 1');
+ax7.axis('off');
+ax8.imshow(simulation2[:,:,1])
+ax8.set_title('Simulation dim 2');
+ax8.axis('off');
+ax9.imshow(simulation2[:,:,2])
+ax9.set_title('Simulation dim 3');
+ax9.axis('off');
+
+
+
+
+
+
+
%This code requires the G2S server to be running
+
+%load data
+ti=imread('https://raw.githubusercontent.com/GAIA-UNIL/TrainingImagesTIFF/master/ti_3_variables.tiff');
+
+% QS call using G2S (with dt set to two continuous and one categorical
+% variable)
+simulation=g2s('-a','qs','-ti',ti,'-di',nan(400,400,3),'-dt',[0,0,1],'-k',1.2,'-n',30,'-j',0.5);
+
+%Display results 
+sgtitle('Unconditional simulation');
+subplot(2,3,1);
+imshow(ti(:,:,1));
+title('Training image dim 1');
+subplot(2,3,2);
+imshow(ti(:,:,2));
+title('Training image dim 2');
+subplot(2,3,3);
+imshow(ti(:,:,3));
+title('Training image dim 3');
+subplot(2,3,4);
+imshow(simulation(:,:,1));
+title('Simulation dim 1');
+subplot(2,3,5);
+imshow(simulation(:,:,2));
+title('Simulation dim 2');
+subplot(2,3,6);
+imshow(simulation(:,:,3));
+title('Simulation dim 3');
+colormap winter;
+
+
+
+ +

+Gap filling

+ +
+

+ +

+
+
+
+
#This code requires the G2S server to be running
+
+import numpy
+from PIL import Image
+import requests
+from io import BytesIO
+from g2s import g2s
+import matplotlib.pyplot as plt
+
+# load example training image ('stone') and cut out a part of it
+tiWithGap = numpy.array(Image.open(BytesIO(requests.get(
+    'https://raw.githubusercontent.com/GAIA-UNIL/TrainingImagesTIFF/master/stone.tiff').content)));
+tiWithGap[60:140,60:140]=numpy.nan;
+
+# QS call using G2S
+simulation,*_=g2s('-a','qs',
+                 '-ti',tiWithGap,
+                 '-di',tiWithGap,
+                 '-dt',[0],
+                 '-k',1.2,
+                 '-n',25,
+                 '-j',0.5);
+
+#Display results 
+fig, (ax1, ax2) = plt.subplots(1, 2,figsize=(7,4))
+fig.suptitle('QS Gap filling',size='xx-large')
+ax1.imshow(tiWithGap)
+ax1.set_title('Training image');
+ax1.axis('off');
+ax2.imshow(simulation)
+ax2.set_title('Simulation');
+ax2.axis('off');
+plt.show()
+
+
+
+
+
+
%This code requires the G2S server to be running
+
+%load data
+tiWithGap=imread('https://raw.githubusercontent.com/GAIA-UNIL/TrainingImagesTIFF/master/stone.tiff');
+tiWithGap(60:140,60:140)=nan;
+
+% QS call using G2S
+simulation=g2s('-a','qs','-ti',tiWithGap,'-di',tiWithGap,'-dt',[0],'-k',1.2,'-n',25,'-j',0.5);
+
+%Display results 
+sgtitle('Gap filling');
+subplot(1,2,1);
+imshow(tiWithGap);
+title('Training image');
+subplot(1,2,2);
+imshow(simulation);
+title('Simulation');
+
+
+
+ +

+Downscaling

+ +
+

+ +

+
+
+
+
#This code requires the G2S server to be running
+
+import numpy as np
+from PIL import Image
+from g2s import g2s
+import matplotlib.pyplot as plt
+from matplotlib import colors
+from io import BytesIO
+import requests
+
+#Load example training image "Dunes gobi"
+ti_full = Image.open(BytesIO(requests.get(
+    'https://raw.githubusercontent.com/GAIA-UNIL/TrainingImagesTIFF/master/dunes_gobi.tiff').content))
+#Keep one version at fine resolution
+ti_fine = np.array(ti_full)
+#Make a synthetic coarse resolution image by upscaling and reprojecting to the original grid 
+ti_coarse = np.array(ti_full.resize(
+    (int(ti_full.width/5),int(ti_full.height/5))).resize(
+    (ti_full.width,ti_full.height),resample=Image.NEAREST))
+
+#Display the full training image at both resolutions
+norm =colors.Normalize(vmin=ti_fine.min(),vmax=ti_fine.max())
+f,(ax1,ax2) = plt.subplots(2,1,figsize=(12,12))
+ax1.imshow(ti_fine,norm=norm)
+ax1.set_title('Fine resolution training image')
+ax2.imshow(ti_coarse, norm =norm)
+ax2.set_title('Coarse resolution training image')
+
+#Crop half of the image to be used as ti
+ti = np.stack((ti_fine[:500,:500],ti_coarse[:500,:500]),axis=2)
+#Crop upper right corner to be used as di
+di_coarse = ti_coarse[:200,-200:]
+di_fine   = np.zeros((200,200))*np.nan
+di=np.stack((di_fine,di_coarse),axis=2)
+#dt consists of two zeros representing two continuous variables
+dt = [0]*ti.shape[-1]
+
+# QS call using G2S
+simulation,index,*_=g2s('-a','qs',
+                         '-ti',ti,
+                         '-di',di,
+                         '-dt',dt,
+                         '-k',1.0,
+                         '-n',30,
+                         '-j',0.5)
+
+#Display results 
+norm =colors.Normalize(vmin=ti_fine.min(),vmax=ti_fine.max())
+f,((ax1,ax2),(ax3,ax4)) = plt.subplots(2,2,figsize=(12,12),sharex=True,sharey=True)
+plt.subplots_adjust(wspace=0.1,hspace=0.1)
+plt.suptitle('QS Downscaling',size='xx-large')
+ax1.imshow(di_coarse,norm=norm)
+ax1.set_title('Coarse res di')
+ax2.imshow(simulation[:,:,0], norm =norm)
+ax2.set_title('Simulation')
+ax3.imshow(index)
+ax3.set_title('Index')
+ax4.imshow(ti_fine[:200,-200:],norm=norm)
+ax4.set_title('True image')
+ax4.set_xticks(np.arange(0,200,25),np.arange(ti_full.width-200,ti_full.width,25));
+
+
+
+
+
+
%This code requires the G2S server to be running
+
+%load example training image 'Dunes gobi'
+ti_fine=imread('https://raw.githubusercontent.com/GAIA-UNIL/TrainingImagesTIFF/master/dunes_gobi.tiff');
+
+%create an artificial coarse resolution image on the same grid 
+ti_coarse = imresize(imresize(ti_fine,0.2,'nearest'),5,'nearest');
+
+%display the full training image at both resolutions
+figure(1);
+tiledlayout(2,1);
+nexttile;
+image(ti_fine);
+title('Fine TI');
+nexttile;
+image(ti_coarse);
+title('Coarse TI');
+
+ti_size = 500;
+di_size = 200;
+
+%crop half of the image, to be used as ti
+ti = cat(3,ti_fine(1:ti_size,1:ti_size),ti_coarse(1:ti_size,1:ti_size));
+%crop upper right corner to be used as di
+di_coarse = ti_coarse(1:di_size,(end-di_size+1):end);
+di_fine  = nan(di_size,di_size);
+di = cat(3,di_fine,di_coarse);
+
+
+% QS call using G2S
+[simulation,index,time]=g2s('-a','qs',...
+                '-ti',ti,...
+                '-di',di,...
+                '-dt',[0 0],... #Zero for continuous variables
+                '-k',1.0,...
+                '-n',30,...
+                '-j',0.5);
+
+figure(2);
+tiledlayout(2,2)
+nexttile;
+image(di_coarse);
+title('Coarse DI');
+nexttile;
+image(simulation(:,:,1));
+title('Simulation');
+nexttile;
+image(index(:,:,1),'CDataMapping','scaled');
+title('Index');
+nexttile;
+image(ti_fine(1:di_size,(end-di_size+1):end));
+title('True image');
+
+
+
+
+
+ +

+3D simulation

+ +
+

+ +

+
+
+
+
#This code requires the G2S server to be running
+
+import numpy as np
+import requests
+from io import BytesIO
+from g2s import g2s
+import matplotlib.pyplot as plt
+import tifffile as tf
+from matplotlib import cm
+
+#Load example boolean training image "Damier 3D" and crop it to reduce computational requirements
+dim = 30
+ti = tf.imread(BytesIO(requests.get(
+    'https://raw.githubusercontent.com/GAIA-UNIL/TrainingImagesTIFF/master/Damier3D.tiff').content))[:dim,:dim,:dim]
+
+# QS call using G2S
+simulation,index,time,*_=g2s('-a','qs',
+                             '-ti',ti,
+                             '-di',np.zeros_like(ti)*np.nan,
+                             '-dt',[1], #1 for categorical variables
+                             '-k',1.2,
+                             '-n',30)
+
+#Display results
+fig = plt.figure(figsize=(20,15))
+ax1=fig.add_subplot(121,projection='3d')
+ax1.voxels(ti,alpha=0.9,facecolor='tab:blue',edgecolor='black')
+ax1.view_init(azim=45)
+ax1.set_title('3D Training image')
+ax2=fig.add_subplot(122,projection='3d')
+ax2.voxels(simulation,alpha=0.9,facecolor='tab:blue',edgecolor='black')
+ax2.view_init(azim=45)
+ax2.set_title('QS 3D simulation')
+
+#Display the indices of the ti-values found in the di-image
+viridis = cm.get_cmap('viridis',index.max())
+colormap = viridis(index)
+fig = plt.figure(figsize=(10,10))
+ax1=fig.add_subplot(111,projection='3d')
+ax1.voxels(index,facecolors=colormap)
+ax1.view_init(azim=45);
+
+
+
+
+
+
%This code requires the G2S server to be running
+
+%% 3D multivariate
+
+clear;home;clf
+%download TI (first variable, continuous)
+ti1=imread('https://raw.githubusercontent.com/GAIA-UNIL/TrainingImagesTIFF/master/fold_continuous.tiff');
+%create second variable (categorical) by thresholding the first
+ti2=ti1>0.5;
+ti=cat(4,ti1,ti2);
+ti=double(ti(1:80,1:50,101:120,:));
+
+%display TI
+subplot(2,2,1)
+[X,Y,Z] = meshgrid(1:size(ti,2),1:size(ti,1),1:size(ti,3));
+slice(X,Y,Z,ti(:,:,:,1),[1 size(ti,2)],[1 size(ti,1)],[1 size(ti,3)])
+shading flat
+camproj('perspective')
+axis equal
+title('TI variable 1');
+
+subplot(2,2,2)
+[X,Y,Z] = meshgrid(1:size(ti,2),1:size(ti,1),1:size(ti,3));
+slice(X,Y,Z,ti(:,:,:,2),[1 size(ti,2)],[1 size(ti,1)],[1 size(ti,3)])
+shading flat
+camproj('perspective')
+axis equal
+title('TI variable 2');
+
+% QS call using G2S
+tic
+simulation=g2s('-a','qs','-ti',ti,'-di',nan(80,50,10,2),'-dt',[0,1],'-k',1.2,'-n',{20 10},'-j',0.5);
+toc
+
+%display simulation
+subplot(2,2,3)
+[X,Y,Z] = meshgrid(1:size(simulation,2),1:size(simulation,1),1:size(simulation,3));
+slice(X,Y,Z,simulation(:,:,:,1),[1 size(simulation,2)],[1 size(simulation,1)],[1 size(simulation,3)])
+shading flat
+camproj('perspective')
+axis equal
+title('Simulation variable 1');
+
+subplot(2,2,4)
+[X,Y,Z] = meshgrid(1:size(simulation,2),1:size(simulation,1),1:size(simulation,3));
+slice(X,Y,Z,simulation(:,:,:,2),[1 size(simulation,2)],[1 size(simulation,1)],[1 size(simulation,3)])
+shading flat
+camproj('perspective')
+axis equal
+title('Simulation variable 2');
+sgtitle('3D Simulation with two variables');
+
+
+
+ +

+Asynchronous mode

+ +
+

+ +

+
+
+
+
#This code requires the G2S server to be running
+
+import numpy
+from PIL import Image
+import requests
+from io import BytesIO
+from g2s import g2s
+import matplotlib.pyplot as plt
+import time
+
+# load example training image ('stone')
+ti = numpy.array(Image.open(BytesIO(requests.get(
+    'https://raw.githubusercontent.com/GAIA-UNIL/TrainingImagesTIFF/master/stone.tiff').content)));
+
+
+# asynchronous QS call using G2S with the "-submitOnly" flag
+jobid_1=g2s('-a','qs', 
+                 '-submitOnly',
+                 '-ti',ti,
+                 '-di',numpy.zeros((200,200))*numpy.nan,
+                 '-dt',[0],
+                 '-k',1.2,
+                 '-n',50,
+                 '-j',0.5);
+
+# second asynchronous call that waits for job 1 to finish using the "-after" flag
+jobid_2 = g2s('-a','qs', 
+                  '-after',jobid_1,
+                  '-submitOnly',
+                  '-ti',ti,
+                  '-di',numpy.zeros((200,200))*numpy.nan,
+                  '-dt',[0],
+                  '-k',1.2,
+                  '-n',50,
+                  '-j',0.5);
+
+# check the status of both jobs in 2-second intervals using the "-statusOnly" flag
+status_1 = 0
+status_2 = 0
+while status_2 < 95:
+    time.sleep(2)
+    status_1,*_ = g2s('-statusOnly',jobid_1)
+    status_2,*_ = g2s('-statusOnly',jobid_2)
+    print('Status jobs 1 & 2:   ', status_1,status_2)
+
+# retrieve the simulation results from the server using the "-waitAndDownload" flag
+# if the simulation would not be ready yet this call would wait for it to be ready
+sim1,*_ = g2s('-waitAndDownload',jobid_1)
+sim2,*_ = g2s('-waitAndDownload',jobid_2)
+
+# display results 
+fig, (ax1, ax2,ax3) = plt.subplots(1, 3,figsize=(7,4))
+fig.suptitle('QS Unconditional simulation',size='xx-large')
+ax1.imshow(ti)
+ax1.set_title('Training image');
+ax1.axis('off');
+ax2.imshow(sim1)
+ax2.set_title('Simulation 1');
+ax2.axis('off');
+ax3.imshow(sim2)
+ax3.set_title('Simulation 2');
+ax3.axis('off');
+plt.show()
+
+
+
+
+
+
%This code requires the G2S server to be running
+
+% load example traning image ('stone')
+ti=imread('https://raw.githubusercontent.com/GAIA-UNIL/TrainingImagesTIFF/master/stone.tiff');
+
+% asynchronous QS call using G2S with the "-submitOnly" flag
+jobid_1=g2s('-a','qs','-submitOnly','-ti',ti,'-di',nan(200,200),'-dt',[0],'-k',1.2,'-n',50,'-j',0.5);
+
+% 2nd async call that waits for job 1 to finish using the "-after" flag
+jobid_2=g2s('-a','qs','-after',jobid_1,'-submitOnly','-ti',ti,'-di',nan(200,200),'-dt',[0],'-k',1.2,'-n',50,'-j',0.5);
+
+% check the status of both jobs in 2-second intervals using the
+% "-statusOnly" flag
+status_1 = 0;
+status_2 = 0;
+while status_2 < 95
+    pause(2);
+    status_1=g2s('-statusOnly',jobid_1);
+    status_2=g2s('-statusOnly',jobid_2);
+    fprintf('Status jobs 1 & 2:   %s %s\n', status_1, status_2);
+end
+
+% retrieve the simulation results from the server using the
+%"-waitAndDownload" flag. If the simulation would not be ready yet this
+%call would wait for it to be ready
+sim1=g2s('-waitAndDownload',jobid_1);
+sim2=g2s('-waitAndDownload',jobid_2);
+
+% display results
+sgtitle('Unconditional asynchronous simulation');
+subplot(1,3,1);
+imshow(ti);
+title('Training image');
+subplot(1,3,2);
+imshow(sim1);
+title('Simulation 1');
+subplot(1,3,3);
+imshow(sim2);
+title('Simulation 2');
+
+
+
+
+
+ +

+Publication

+ +

Gravey, M., & Mariethoz, G. (2020). QuickSampling v1.0: a robust and simplified pixel-based multiple-point simulation approach. Geoscientific Model Development, 13(6), 2611–2630. https://doi.org/10.5194/gmd-13-2611-2020

+ +

+Benchmarking

+ +

This code CAN be used for benchmarking (and I invite you to do so 😉), the code needs to run natively on macOS or on Linux using the Intel Compiler with MKL library. The version needs to be reported, and the time needs to be the time reported by the algorithm (that is the true execution time without taking into account interfaces overhead).

+ +

When benchmarking, the code should NOT be used inside a Virtual Machine or through WSL on Windows 10+.

+ +

+Advanced

+ +

This page provides some additional information on how to do common tasks. It also serves as personal note to myself 😁

+ +

+Multiple realization

+ +

A question that is frequently asked is how to do multiple realizations. Currently there are three different ways to do it, each one of them has pros and cons.

+ +

The lazy solution

+ +

The simplest solution is to do a for-loop over the realizations. However, in each step the algorithm needs to wait for the data to load, and this creates an overhead

+ +
sims1=numpy.empty((250,250,numberOfSimulation));
+for i in range(numberOfSimulation):
+  sims1[:,:,i],*_=g2s('-sa',computationServer,'-a','qs','-ti',ti,'-di',numpy.zeros((250,250))*numpy.nan,'-dt',numpy.ones((1,)),'-k',1.2,'-n',50,'-j',0.5,'-s',100+i);
+
+ +

For-loop without overhead

+ +

By using the G2S submission queue, it’s possible to remove most of the overhead. This is the most versatile solution and it is recommended over the first solution, especially in case the computations are run on another machine. Furthermore, in this solution the parameters can be changed for each realization.

+ +
ds=numpy.empty((numberOfSimulation,), dtype='long');
+for i in range(numberOfSimulation):
+  ids[i]=g2s('-sa',computationServer,'-a','qs','-ti',ti,'-di',numpy.zeros((250,250))*numpy.nan,'-dt',numpy.ones((1,)),'-k',1.2,'-n',50,'-j',0.5,'-s',100+i,'-submitOnly');
+
+sims2=numpy.empty((250,250,numberOfSimulation));
+for i in range(numberOfSimulation):
+  sims2[:,:,i],*_=g2s('-sa',computationServer,'-waitAndDownload',ids[i]);
+
+ +

Overdimensioning of the destination image

+ +

This is the third solution to get multiple simulations at once. Although this solution looks easier, it has more limitations (e.g., being limited same size, same parameters, etc.), and therefore it is ⚠️ not guaranteed to stay functional in the future. This last solution should only be considered in case of extremely parallelized simulations (number of threads >50) and/or extremely small simulations (less than 1e4 pixels per simulation)

+ +
sims3,*_=g2s('-sa',computationServer,'-a','qs','-ti',ti,'-di',numpy.zeros((numberOfSimulation,250,250))*numpy.nan,'-dt',numpy.ones((1,)),'-k',1.2,'-n',50,'-j',0.5);
+
+ +

+How to do a simulation by segment

+ +

Although QS tends to reduce issues related to non-stationarity, it won’t remove them completely. Therefore in cases with high non-stationarity, the challenge is to respect each zone separately. Here we assume that we have different training images for each specific zone.

+ +

Using a secondary variable

+ +

The first solution for doing a simulation by segment is to add a secondary variable with the information of non-stationarity. In this case the setting of the algorithm has to be identical for both training images.

+ +
ti1=imread('https://raw.githubusercontent.com/GAIA-UNIL/TrainingImagesTIFF/master/bangladesh.tiff');
+ti2=imread('https://raw.githubusercontent.com/GAIA-UNIL/TrainingImagesTIFF/master/strebelle.tiff');
+
+dt=[0];
+N=300;
+
+ti1_bis=cat(3,ti1,zeros(size(ti1)));
+ti2_bis=cat(3,ti2,ones(size(ti2)));
+
+localKernel=cat(3,kernel,padarray(15,25*[1,1]));
+% localKernel=cat(3,kernel,kernel);
+
+sim=g2s('-a','qs','-ti',ti1_bis,ti2_bis,'-di',cat(3,nan(size(tiSelection)),tiSelection),'-dt',[0,1],'-n',50,'-k',1.5,'-j',0.5,'-ki',localKernel);
+imshow(medfilt2(sim(:,:,1)))
+drawnow;
+pause(5)
+
+ +

Using training image indices

+

The second solution for doing a simulation by segment is to use a training image index map. This requires that each training image represents a stationary subdomain. Also in this case the setting of the algorithm needs to be identical between training images.

+ +

+ti1=imread('https://raw.githubusercontent.com/GAIA-UNIL/TrainingImagesTIFF/master/bangladesh.tiff');
+ti2=imread('https://raw.githubusercontent.com/GAIA-UNIL/TrainingImagesTIFF/master/strebelle.tiff');
+
+dt=[0];
+N=300;
+
+sim=g2s('-a','qs','-ti',ti1,ti2,'-di',nan(size(tiSelection)),'-dt',dt,'-n',50,'-k',1.5,'-j',0.5,'-ki',kernel,'-ii',tiSelection);
+imshow(medfilt2(sim))
+pause(5)
+
+ +

The optimal solution

+ +

Using the -ni and -kii … +TODO!!

+ +

Simulating each subdomain sequentially

+

The last solution for doing a simulation by segment is to do simulations per subdomain. This allows for changing the settings between each subdomain. However each subdomain is simulated sequentially and therefore can be at the origin of some artifacts, regarding the order of simulations.

+ +
ti1=imread('https://raw.githubusercontent.com/GAIA-UNIL/TrainingImagesTIFF/master/bangladesh.tiff');
+ti2=imread('https://raw.githubusercontent.com/GAIA-UNIL/TrainingImagesTIFF/master/strebelle.tiff');
+
+dt=[0];
+N=300;
+
+path=reshape(randperm(numel(tiSelection)),size(tiSelection));
+p1=path;
+p1(tiSelection==0)=-inf;
+p2=path;
+p2(tiSelection==1)=-inf;
+sim=g2s('-a','qs','-ti',ti1,'-di',nan(size(tiSelection)),'-dt',dt,'-n',50,'-k',1.5,'-j',0.5,'-ki',kernel,'-sp',p1);
+sim=g2s('-a','qs','-ti',ti2,'-di',sim,'-dt',dt,'-n',50,'-k',1.5,'-j',0.5,'-ki',kernel,'-sp',p2);
+imshow(medfilt2(sim))
+pause(5)
+
+ + +
+
+
+ + + \ No newline at end of file diff --git a/assets/css/g2s.css b/assets/css/g2s.css new file mode 100644 index 0000000..39fd4df --- /dev/null +++ b/assets/css/g2s.css @@ -0,0 +1,366 @@ +:root { + --mainContentWidth: 690px; + --rightMenuWidth:200px; + --leftMenuWidth: min( calc( 100vw - var(--mainContentWidth) - 116px), 325px); + --titleColor: #474747; + --bgColor: #fafafa; + --code-color: #222; + --code-bg-color: hsla(204,63%,50%,0.05); + --table-color: #424242; + --table-title-color: #292929; + --how2site-bg: #e9e9e9; + --highlight-bg-color: #f8f8f8; + --highlight-in-bg-color: #F2F8FB; + --light-hover-gray:#ddd; + --light-gray:#ccc; + --very-light-gray:#f1f1f1; + --color: hsl(0deg 0% 19%); +} + +@media (prefers-color-scheme: dark) { + + :root{ + --titleColor: #b8b8b8; + --bgColor: hsl(0deg 0% 7%); + --color: hsl(0deg 0% 81%); + --code-color: #ddd; + --table-color: hsl(0, 0%, 85%); + --table-title-color: hsl(0, 0%, 95%); + --how2site-bg: hsl(0, 0%, 20%); + --highlight-bg-color: black; + --highlight-in-bg-color: hsl(200deg, 4%, 5%); + --code-bg-color: hsla(204,63%,50%,0.1); + --light-hover-gray:#666; + --light-gray:#444; + --very-light-gray:#0e0e0e; + } + + code{ + filter: invert(1) hue-rotate(180deg); + background-color: hsl(204 63% 30% / 25%);; + } +} + +body { + background: var(--bgColor); + color: var(--color); + font-size: 18px; + overflow-x: hidden; +} + +.inner { + width: min( calc( var(--mainContentWidth) + 45px), calc( 100% + 45px) ); +} + +#main-content h1, #main-content h2, #main-content h3, #main-content h4, #main-content h5, #main-content h6 { + color: var(--titleColor); +} + +@media only screen and (max-width: 1167px) { + :root { + --leftMenuWidth: auto; + } +} + +@media only screen and (min-width: 1168px) { + + .inner{ + width: calc( var(--leftMenuWidth) + var(--mainContentWidth) + 100px); + } +} + +header { + padding-left: 20px; +} + +header h1 { + width: 700px; +} + +header h2 { + width: 690px; +} + +.sideMenu a{ + color: var(--titleColor); + font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif; + font-size: 25px +} + +nav.sideMenuBar ul{ + margin-bottom:0px; +} + +nav.sideMenu ul *{ + list-style-type: none; +} + +nav.sideMenu ul > li:before { + padding-right: 0.3em; + margin-left: -0.9em; + color: #9ddcff; + content: "/" +} + +nav.sideMenu ul ul > li:before { + padding-right: 0.3em; + margin-left: -1.5em; + content: "//"; + color: #9ddcff; +} + +nav.sideMenu ul ul ul > li:before { + padding-right: 0.3em; + margin-left: -2em; + content: "///"; + color: #9ddcff; +} + +nav.sideMenu ul ul ul ul > li:before { + padding-right: 0.3em; + margin-left: -2em; + content: "●"; + color: #9ddcff; +} + +nav.sideMenu ul ul ul ul ul> li:before { + padding-right: 0.3em; + margin-left: -2em; + content: "●/"; + color: #9ddcff; +} + +nav.sideMenu ul ul ul ul a { + font-size: 20px; +} + + +aside#menuSidebar { + position: sticky; + top: 0px; + float: left; + width: var(--leftMenuWidth); +/* min-height: 504px;*/ +padding-left: 20px; +line-height: 1.3; +} +aside#menuSidebar { + font-weight: bold; +} + +#main-content { + float: left; + width: var(--mainContentWidth); + margin: 0 0 30px 45px; + +} + +#content-wrapper{ + z-index: 1; + position: relative; + background: var(--bgColor); + min-height: calc( 100vh - 340px - 71.5px); +} + +footer { + margin: 0; + position: sticky; + bottom: 0; + left: 0; + width: 100%; + background: #2e7bcf url(../images/header-bg.jpg) 0 0 repeat-x; + display: inline-grid; + place-items: center; + padding: 10px 0; +} + +footer a{ + color: white; + font-weight: bold; +} +footer { + color: #d4d4d4; +} + +footer p{ + margin: 0; +} + +.githubButton{ + position: absolute; + top: 0; + right: 0; + display: flex; + height: 270px; + justify-content: space-between; + flex-direction: column; +} + +header .githubButton a.button{ + position: static; +} + + + +@media only screen and (max-width: 1167px) +{ + .githubButton { + position: relative; + display: flex; + height: 40px; + margin: 15px 0; + width: 100%; + justify-content: space-between; + flex-direction: row; + } +} + +@media only screen and (max-width: 767px){ + .githubButton .download{ + display: none; + } +} + + +header a.button.download { + background: transparent url(../images/download-button.png) 0 0 no-repeat; +} + +.tab { + display: inline-block; + overflow: hidden; + border: 1px solid var(--light-gray); + background-color: var(--very-light-gray); +} + +.tab button { + background-color: inherit; + float: left; + border: none; + outline: none; + cursor: pointer; + padding: 5px 16px; + transition: 0.3s; + font-size: 17px; +} + +.tab button img{ + height: 30px; +} + +.tab button:hover { + background-color: var(--light-hover-gray); +} + +.tab button.active { + background-color: var(--light-gray); +} + +.tabcontent { + display: none; + padding: 6px 12px; + border: 1px solid var(--light-gray); + border-top: none; +} + +.tab.code{ + margin: 0 0 -20px 0; + border-radius: 10px 20px 0 0; +} + +.tab.code button { + padding: 6px 8px 0px 8px; +} + +.tab.code button img{ + height: 20px; +} + +.langcontent.hideClass +{ + display: none; +} + +.highlight{ + background-color: var(--code-bg-color); +} + +pre code{ + background-color: transparent; +} + +pre{ + position: relative; +} + +span.copy{ + cursor: pointer; + position: absolute; + display: block; + right: 5px; + font-size: 30px; + color: var(--color); +} + +@media only screen and (max-width: 767px){ + span.copy{ + right: 45px; + } +} + +nav.sideMenu ul, ol, dl { + margin-bottom: 5px; +} + +tr td{ + font-weight: normal; +} + +tr td:first-child{ + width:75px; + text-align: center; + white-space: nowrap; +} + +tr td:nth-child(2){ + text-align: justify; + padding: 3px 10px ; +} + +th{ + font-weight: 900; + font-style: italic; +} + +@media only screen and (max-width: 1167px) +{ + aside#menuSidebar { + position: relative; + } +} + +@media only screen and (max-width: 767px){ + #main-content{ + width:calc(100vw - 4px) !important; + margin: 2px; + } + + html{ + overflow-x: hidden; + } + + header h2 { + width: calc( 100vw - 40px); + } + + header h1{ + width: calc( 100vw - 40px); + } +} + +red{ + color:red; +} + + + diff --git a/assets/css/print.css b/assets/css/print.css new file mode 100644 index 0000000..c32f17d --- /dev/null +++ b/assets/css/print.css @@ -0,0 +1 @@ +html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{padding:0;margin:0;font:inherit;font-size:100%;vertical-align:baseline;border:0}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}table{border-spacing:0;border-collapse:collapse}body{font-family:'Helvetica Neue', Helvetica, Arial, serif;font-size:13px;line-height:1.5;color:#000}a{font-weight:bold;color:#d5000d}header{padding-top:35px;padding-bottom:10px}header h1{font-size:48px;font-weight:bold;line-height:1.2;color:#303030;letter-spacing:-1px}header h2{font-size:24px;font-weight:normal;line-height:1.3;color:#aaa;letter-spacing:-1px}#downloads{display:none}#main_content{padding-top:20px}code,pre{margin-bottom:30px;font-family:Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal;font-size:12px;color:#222}code{padding:0 3px}pre{padding:20px;overflow:auto;border:solid 1px #ddd}pre code{padding:0}ul,ol,dl{margin-bottom:20px}table{width:100%;border:1px solid #ebebeb}th{font-weight:500}td{font-weight:300;text-align:center;border:1px solid #ebebeb}form{padding:20px;background:#f2f2f2}h1{font-size:2.8em}h2{margin-bottom:8px;font-size:22px;font-weight:bold;color:#303030}h3{margin-bottom:8px;font-size:18px;font-weight:bold;color:#d5000d}h4{font-size:16px;font-weight:bold;color:#303030}h5{font-size:1em;color:#303030}h6{font-size:.8em;color:#303030}p{margin-bottom:20px;font-weight:300}a{text-decoration:none}p a{font-weight:400}blockquote{padding:0 0 0 30px;margin-bottom:20px;font-size:1.6em;border-left:10px solid #e9e9e9}ul li{padding-left:20px;list-style-position:inside;list-style:disc}ol li{padding-left:3px;list-style-position:inside;list-style:decimal}dl dd{font-style:italic;font-weight:100}footer{padding-top:20px;padding-bottom:30px;margin-top:40px;font-size:13px;color:#aaa}footer a{color:#666}.clearfix:after{display:block;height:0;clear:both;visibility:hidden;content:'.'}.clearfix{display:inline-block}* html .clearfix{height:1%}.clearfix{display:block} diff --git a/assets/css/style.css b/assets/css/style.css new file mode 100644 index 0000000..64d835e --- /dev/null +++ b/assets/css/style.css @@ -0,0 +1 @@ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */@import url("https://fonts.googleapis.com/css?family=Architects+Daughter");html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}.highlight table td{padding:5px}.highlight table pre{margin:0}.highlight .cm{color:#999988;font-style:italic}.highlight .cp{color:#999999;font-weight:bold}.highlight .c1{color:#999988;font-style:italic}.highlight .cs{color:#999999;font-weight:bold;font-style:italic}.highlight .c,.highlight .cd{color:#999988;font-style:italic}.highlight .err{color:#a61717;background-color:#e3d2d2}.highlight .gd{color:#000000;background-color:#ffdddd}.highlight .ge{color:#000000;font-style:italic}.highlight .gr{color:#aa0000}.highlight .gh{color:#999999}.highlight .gi{color:#000000;background-color:#ddffdd}.highlight .go{color:#888888}.highlight .gp{color:#555555}.highlight .gs{font-weight:bold}.highlight .gu{color:#aaaaaa}.highlight .gt{color:#aa0000}.highlight .kc{color:#000000;font-weight:bold}.highlight .kd{color:#000000;font-weight:bold}.highlight .kn{color:#000000;font-weight:bold}.highlight .kp{color:#000000;font-weight:bold}.highlight .kr{color:#000000;font-weight:bold}.highlight .kt{color:#445588;font-weight:bold}.highlight .k,.highlight .kv{color:#000000;font-weight:bold}.highlight .mf{color:#009999}.highlight .mh{color:#009999}.highlight .il{color:#009999}.highlight .mi{color:#009999}.highlight .mo{color:#009999}.highlight .m,.highlight .mb,.highlight .mx{color:#009999}.highlight .sb{color:#d14}.highlight .sc{color:#d14}.highlight .sd{color:#d14}.highlight .s2{color:#d14}.highlight .se{color:#d14}.highlight .sh{color:#d14}.highlight .si{color:#d14}.highlight .sx{color:#d14}.highlight .sr{color:#009926}.highlight .s1{color:#d14}.highlight .ss{color:#990073}.highlight .s{color:#d14}.highlight .na{color:#008080}.highlight .bp{color:#999999}.highlight .nb{color:#0086B3}.highlight .nc{color:#445588;font-weight:bold}.highlight .no{color:#008080}.highlight .nd{color:#3c5d5d;font-weight:bold}.highlight .ni{color:#800080}.highlight .ne{color:#990000;font-weight:bold}.highlight .nf{color:#990000;font-weight:bold}.highlight .nl{color:#990000;font-weight:bold}.highlight .nn{color:#555555}.highlight .nt{color:#000080}.highlight .vc{color:#008080}.highlight .vg{color:#008080}.highlight .vi{color:#008080}.highlight .nv{color:#008080}.highlight .ow{color:#000000;font-weight:bold}.highlight .o{color:#000000;font-weight:bold}.highlight .w{color:#bbbbbb}.highlight{background-color:#f8f8f8}body{font-family:'Helvetica Neue', Helvetica, Arial, serif;font-size:15px;font-weight:400;line-height:1.5;color:#666;background:#fafafa url(../images/body-bg.jpg) 0 0 repeat}p{margin-top:0}a{color:#2879d0}a:hover{color:#2268b2}header{padding-top:40px;padding-bottom:40px;font-family:'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;background:#2e7bcf url(../images/header-bg.jpg) 0 0 repeat-x;border-bottom:solid 1px #275da1}header h1{width:540px;margin-top:0;margin-bottom:0.2em;font-size:72px;font-weight:normal;line-height:1;color:#fff;letter-spacing:-1px}header h2{width:540px;margin-top:0;margin-bottom:0;font-size:26px;font-weight:normal;line-height:1.3;color:#9ddcff;letter-spacing:0}.inner{position:relative;width:940px;margin:0 auto}#content-wrapper{padding-top:30px;border-top:solid 1px #fff}#main-content{float:left;width:690px}#main-content img{max-width:100%}aside#sidebar{float:right;width:200px;min-height:504px;padding-left:20px;font-size:12px;line-height:1.3;background:transparent url(../images/sidebar-bg.jpg) 0 0 no-repeat}aside#sidebar p.repo-owner,aside#sidebar p.repo-owner a{font-weight:bold}#downloads{margin-bottom:40px}a.button{width:134px;height:58px;padding-top:22px;padding-left:68px;font-family:'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;font-size:23px;line-height:1.2;color:#fff}a.button small{display:block;font-size:11px}header a.button{position:absolute;top:0;right:0;background:transparent url(../images/github-button.png) 0 0 no-repeat}aside a.button{display:block;width:138px;padding-left:64px;margin-bottom:20px;font-size:21px;background:transparent url(../images/download-button.png) 0 0 no-repeat}code,pre{margin-bottom:30px;font-family:Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace;font-size:13px;color:#222}code{padding:0 3px;background-color:#f2f8fc;border:solid 1px #dbe7f3}pre{padding:20px;overflow:auto;text-shadow:none;background:#fff;border:solid 1px #f2f2f2}pre code{padding:0;color:#2879d0;background-color:#fff;border:none}ul,ol,dl{margin-bottom:20px}hr{height:0;margin-top:1em;margin-bottom:1em;border:0;border-top:solid 1px #ddd}table{width:100%;border:1px solid #ebebeb}th{font-weight:500}td{font-weight:300;text-align:center;border:1px solid #ebebeb}form{padding:20px;background:#f2f2f2}#main-content h1{margin-top:0;margin-bottom:0;font-family:'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;font-size:2.8em;font-weight:normal;color:#474747;text-indent:6px;letter-spacing:-1px}#main-content h1:before{padding-right:0.3em;margin-left:-0.9em;color:#9ddcff;content:"/"}#main-content h2{margin-bottom:8px;font-family:'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;font-size:22px;font-weight:bold;color:#474747;text-indent:4px}#main-content h2:before{padding-right:0.3em;margin-left:-1.5em;content:"//";color:#9ddcff}#main-content h3{margin-top:24px;margin-bottom:8px;font-family:'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;font-size:18px;font-weight:bold;color:#474747;text-indent:3px}#main-content h3:before{padding-right:0.3em;margin-left:-2em;content:"///";color:#9ddcff}#main-content h4{margin-bottom:8px;font-family:'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;font-size:15px;font-weight:bold;color:#474747;text-indent:3px}h4:before{padding-right:0.3em;margin-left:-2.8em;content:"////";color:#9ddcff}#main-content h5{margin-bottom:8px;font-family:'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;font-size:14px;color:#474747;text-indent:3px}h5:before{padding-right:0.3em;margin-left:-3.2em;content:"/////";color:#9ddcff}#main-content h6{margin-bottom:8px;font-family:'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;font-size:.8em;color:#474747;text-indent:3px}h6:before{padding-right:0.3em;margin-left:-3.7em;content:"//////";color:#9ddcff}p{margin-bottom:20px}a{text-decoration:none}p a{font-weight:400}blockquote{padding:0 0 0 30px;margin-bottom:20px;font-size:15px;border-left:10px solid #e9e9e9}ul{list-style-position:inside;list-style:disc;padding-left:20px}ol{list-style-position:inside;list-style:decimal;padding-left:20px}dl dd{font-style:italic;font-weight:100}footer{padding-top:20px;padding-bottom:30px;margin-top:40px;font-size:13px;color:#aaa}footer a{color:#666}footer a:hover{color:#444}.clearfix:after{display:block;height:0;clear:both;visibility:hidden;content:'.'}.clearfix{display:inline-block}* html .clearfix{height:1%}.clearfix{display:block}@media only screen and (min-width: 768px) and (max-width: 959px){.inner{width:740px}header h1,header h2{width:340px}header h1{font-size:60px}header h2{font-size:30px}#main-content{width:490px}#main-content h1:before,#main-content h2:before,#main-content h3:before,#main-content h4:before,#main-content h5:before,#main-content h6:before{padding-right:0;margin-left:0;content:none}}@media only screen and (max-width: 767px){.inner{width:93%}header{padding:20px 0}header .inner{position:relative}header h1,header h2{width:100%}header h1{font-size:48px}header h2{font-size:24px}header a.button{position:relative;display:inline-block;width:auto;height:auto;padding:5px 10px;margin-top:15px;font-size:13px;line-height:1;color:#2879d0;text-align:center;background-color:#9ddcff;background-image:none;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px}header a.button small{display:inline;font-size:13px}#main-content,aside#sidebar{float:none;width:100% !important}aside#sidebar{min-height:0;padding:20px 0;margin-top:20px;background-image:none;border-top:solid 1px #ddd}aside#sidebar a.button{display:none}#main-content h1:before,#main-content h2:before,#main-content h3:before,#main-content h4:before,#main-content h5:before,#main-content h6:before{padding-right:0;margin-left:0;content:none}} diff --git a/assets/images/Matlab.png b/assets/images/Matlab.png new file mode 100644 index 0000000000000000000000000000000000000000..b5a5435917dba0089f2f721ef85eef6b870ae2ac GIT binary patch literal 136266 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 l}&NF{At53-%n-0 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≫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

vSC!<+qEC>;2((&kwaxduKF1X5{`>}CNN26|U? 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 literal 0 HcmV?d00001 diff --git a/assets/images/Python.svg b/assets/images/Python.svg new file mode 100644 index 0000000..366f52f --- /dev/null +++ b/assets/images/Python.svg @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/assets/images/Rlogo.svg b/assets/images/Rlogo.svg new file mode 100644 index 0000000..78281f7 --- /dev/null +++ b/assets/images/Rlogo.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/assets/images/Windows.png b/assets/images/Windows.png new file mode 100644 index 0000000000000000000000000000000000000000..37ebe8dc01cb75eb4a786337e858256b4c4ca6f8 GIT binary patch literal 18617 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 literal 0 HcmV?d00001 diff --git a/assets/images/body-bg.jpg b/assets/images/body-bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..719fb8863848157e6bf4c126884f4d21320a9843 GIT binary patch literal 2281 zcmb_dc~sKd7XBfKk{aM}4YUNwOmiL*a~9Lo>vYX-PB~rCr#@#(ECnuRglTFPV5ZXK zaC0hq*2>I`FpIR3G|DnDt?Xi%1Cj$zt99?{pZmvK?>lRqv-eqh@Ad7o&sv}Cnd~)y z@N)Nb2S6YI0Ie=S_5vUPa(@B5YJnlEI~XDlS%W-O{wttR1qDR~1t<)*ZXFD!{3F(i zfWTm|JVYJ_g~C*nU`i_R^{arxzXpCkl)rgD=Kkf$x&fpj&D z7o}-o?drLQx~pinr&azVoa>1oRRS)+jCc9%-Y2_G`nWwddsGzQ`jl<8iymSaU7Fue zkFFyG1o>>|3`5n#Mf`|b&TJdSRDh_+$A6?O^#aHdi#?qXB44p z@p#%b`uppHoB&1DAQmx&ZphbWq`yCw8>@Nbs^#(QJ*ES*%+@c-xJB$giLN&i7Vc&CY7J@c8pOmy?+`wr{UxQDndz zem$8n-5DMJ^Rf(pjL=<%I#PTg*Mc(|cxXDLR`bO52gO}?rR70YvEhs4-o6F)bK|C( z+Tx!x0VRwNGB#xRrRE{7M_Im2O%%>HEbM0BgGyns`r^$bH1WuumH&nXn5T<2!lRw^&*)U*+QUb(w83f@@oD zi%h%&g0WS#?NpITZ=1wClm9M`Zht}s2rwGiRvcxlHEkiX>5BjF1*Hbrg@kavjo2t~ z;|3Dyk+lPh`7p~u?TUujg4=|_O082!D*A(6_B5$?VLGf6i2&`HEQyF?|@K|-e4NDIqg!x-AlJaJgVZ3v-y}I9EPX`4%FxNv&CXS`AlUw2ahgd zdYhT)}jB_uMwd#Qt$O1Wya8 z99o}>7u>sR;4!lN@HL5I8nA7tI1Y1&uAw4M$hGEsY~62nD%YLToP8YebUL#KD-rxX%}i z1h#Qc2H|aUSds|qnH~wb;bxSzl`5%g`OyE-gq0RN{)|G4TE^r^puh4QOIDI|{0-g+ z0AZ%PZw=(PTLTnBy%2JCU*S$u4g10|ZjDI^vqX-)DcU)UJ6jrmb}daFVscFL z`F18+1_aE>0Afl|>b5r@SUVRAnhLaz$$k;IK@}_M$cCsCS*L9z*@2-X|#?{kp#|s{^j`d4*kC@7|JO& z?pUGFGVsugh#AXJM=YvVuB(ft_fiz9oo7qty`J2kTRSj=tOAQ-N2p5i>VD?MKHiv3 zflC&}E7*ZSeRh55Hvcyv6aEI6E5nZd<<%bz@Aqi)vU|NO^3Ffle1I6jJgb|HIp-Rk z>KEl>Qc-*#HIHbcm1$KEHKm=kS{+7Yzi23K@IO(8?No#WfekUDxu1)R8s#%Vvz5Aa zI+ynDozn4kEQ2ppPG#nH(JlNpHGbi&M2;@@g^3+NmTs>&TUAX{%uetXgRn=P?d@pV zYMX3wXmT$KC|jrIklPG+{3VKbOIs86*1<=3Pz`LuHBL{gQ`?NznGZ&#n7w^R zzIc~p8BhbP6s=nJ=d9<0&M%2XDDo|A5X%v?@61 literal 0 HcmV?d00001 diff --git a/assets/images/cloudGear.svg b/assets/images/cloudGear.svg new file mode 100644 index 0000000..928456c --- /dev/null +++ b/assets/images/cloudGear.svg @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/content_copy.svg b/assets/images/content_copy.svg new file mode 100644 index 0000000..c5f4a8d --- /dev/null +++ b/assets/images/content_copy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/images/download-button.png b/assets/images/download-button.png new file mode 100644 index 0000000000000000000000000000000000000000..c5ffb3a891788af5ceff835cde7d305d723aaf21 GIT binary patch literal 27151 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 t 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 az+X*J7T+u-ZHxU^ZlxJl66tU<@_zu4*#OM| literal 0 HcmV?d00001 diff --git a/assets/images/highlight-bg.jpg b/assets/images/highlight-bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..355e089b2d7d7a6f78caa818e302c8a15c6c0e3c GIT binary patch literal 30991 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 literal 0 HcmV?d00001 diff --git a/assets/images/linux.png b/assets/images/linux.png new file mode 100644 index 0000000000000000000000000000000000000000..f0e289541aef970e04ce62d266d90fce3f26ece2 GIT binary patch literal 7666 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 literal 0 HcmV?d00001 diff --git a/assets/images/sidebar-bg.jpg b/assets/images/sidebar-bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..536ead91e35a69e8e8e2c28021be8ae4eef42b18 GIT binary patch literal 2270 zcmcgtdpz4&7XKv?NhL_U(|Se~m7-ylv|5xjs1ijJwkYw~+3HR-m|6xg-tR}KdXrW? zI!#iYPwBKpy;TTPt6ht38Sz-1iBO~3Ow!K!?CUe1{b%=kKlh$+5pL)fzyB-LP;nSwTTrO-V^%6zZ79nHA?WI&{pCR5DWL`IUrWEABBq-zpvwlpS#%#=KaQ=!p8X5 z)N$}J_G)Px<;^Pyh?zIDp4Gg9gARSy3MB?s<9L0;6JkJi0dmwVER7h>LO`tClDU;^ z@W@i?W0nTyFCUm)^XuQ>V9HU{klw%kP0Z}8vTxy-W$>oi+KFY-D84RD+ZcTw%(3fq zxP4Vj;b_*bQx2az^#wI7=ZANIa`{vjY)r`OXpeTU3+SV&PKMaCTky)?t zsU^drHQ50WtCWhdvogixrA;9|ul2K+-#k7by(%(tTg2UYBF&XC3INH0q|Y6I{GB`y z+Tf@oihPNl!Y!)*LBIP)!K*!QQSK<3$Ut~eKzcMlzZ<5ub(}hQ>k0o5aqG~#P*1+e z1D(b<0h8}Bmb*1+pJ{lj`W5VuW?0eIBJ&L;oc`*<4Gjj}M115t%ZP7dtI~iS-?GyZ zoZpU3$TjW%NpFSEPa_rgozcZ)A7`uY`_{5;f#j4!{fVIVmARWpeM3A^S_>> zty95wbrfy&=uzK2=wGta3fPyXNsqHn3d`#n6n4fR?dPq2fR93yoAwjDmNF*0mgl3} z;7j1fDg)EJONOqAx_Z!Fk_VyKD@Lbty2H`)nRgbA{ADj&hY}I!a*J-sbQ;`!oEvYn z71*zDsP5shwSby;lX-B=ZlO?7}Q;_TZ(lb~79M$K@Ue zld=~Y2E%pwrf*D6H`#?KcE~w<7WzS#Z3(w_+TE|*{Z)!i$0a+>#c)XD6RJl z&}x8tE*~blc$V~5&Ce{5H#T>1mGjXfE>CMaR8vI-y_&}U9=gX-E7yzKYU{*~zwesK z^7m5~{_c_G;&9|cvapOXbeJ1?wOV`8r2YfcOJ>* zCwu2?&zFq1^$dRSs!l8y#;jRKi=%OxHw$~w%$D3AI}+=Ni>HrVKGq%YnPReVA(B^8 z!n*eyUWxiQ8cYm#FBoZ@wp=&wovP`x8$qv;oSi2Ubg~&4u{b@qc!SVG)@&^1bx5x5 zs#8m|Qm)9&tLaWI8N5Hq)%l-jI3nsHu!RqBm$jT`)yl|BI_tN4Dqoav?)kFK8J zw{J8dXm?>$`wA5-mgrJi6zZJfN5&IuiXxoeHWaQ#Va6}^AHd8JoduOV7O&GF;YtMa zUpY`spkzU-Dty8%9WA;$cU78oiJGCi=roa){(t7c`vSq0kF<9*&&Z2aM>;u{4Q63? vtA!HaK&Ic~GUPov+*4K(&>su=-cJkwg`X-D2y_ZKD*=9Gi}YXowB^OmrRYZ> literal 0 HcmV?d00001 diff --git a/assets/js/codeblock.js b/assets/js/codeblock.js new file mode 100644 index 0000000..7df33b1 --- /dev/null +++ b/assets/js/codeblock.js @@ -0,0 +1,16 @@ +document.addEventListener('DOMContentLoaded', function() { + var codeBlocks = document.querySelectorAll('pre.highlight'); + + codeBlocks.forEach(function (codeBlock) { + var copyButton = document.createElement('span'); + copyButton.classList.add("material-symbols-outlined","copy"); + copyButton.innerText = 'content_copy'; + + codeBlock.parentElement.prepend(copyButton); + + copyButton.addEventListener('click', function () { + var code = codeBlock.querySelector('code').innerText.trim(); + window.navigator.clipboard.writeText(code); + }); + }); +}); \ No newline at end of file diff --git a/assets/js/tabManager.js b/assets/js/tabManager.js new file mode 100644 index 0000000..097797f --- /dev/null +++ b/assets/js/tabManager.js @@ -0,0 +1,26 @@ +function openTab(evt, tabName, type) { + var i, tabcontent, tablinks, activeTabcontent, allButton; + tabcontent = document.getElementsByClassName("langcontent "+type); + for (i = 0; i < tabcontent.length; i++) { + tabcontent[i].classList.add("hideClass"); + } + tablinks = document.getElementsByClassName("tablinks"); + for (i = 0; i < tablinks.length; i++) { + tablinks[i].classList.remove("active"); + } + console.log(tabName) + activeTabcontent=document.getElementsByClassName("langcontent "+tabName) + + for (i = 0; i < activeTabcontent.length; i++) { + activeTabcontent[i].classList.remove("hideClass"); + } + allButton=document.getElementsByClassName("tablinks "+tabName); + console.log(allButton) + for (i = 0; i < activeTabcontent.length; i++) { + allButton[i].classList.add("active"); + } +} + +document.addEventListener('DOMContentLoaded', function() { + openTab(null, "python", "code interface"); +}); diff --git a/autoqs.html b/autoqs.html new file mode 100644 index 0000000..3675c2a --- /dev/null +++ b/autoqs.html @@ -0,0 +1,11 @@ + + + + Redirecting… + + + + +

Redirecting…

+ Click here if you are not redirected. + diff --git a/briefOverview.html b/briefOverview.html new file mode 100644 index 0000000..68d0c83 --- /dev/null +++ b/briefOverview.html @@ -0,0 +1,394 @@ + + + + + + + + + + + + + + + + + + + + +Brief overview | G2S: The GeoStatistical Server + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +

G2S: The GeoStatistical Server

+
+

A free and flexible multiple point (geo)statistics framework including state-of-the-art algorithms: QuickSampling and Narrow Distribution Selection

+ +
+
+ +
+
+ +
+

Brief overview

+ +

The GeoStatistical Server (G2S) is a framework that allows you to use state-of-the-art Multiple Point Statistics (MPS) algorithms to run stochastic simulations.

+ +

G2S is designed to run simulations in a generic way, independently of the code used or language it is written in. For example, it enables you to run a C/C++ simulation code using Python, or Python using MATLAB (or any other combination).

+ +

Currently, the framework is provided with:

+ +
    +
  • QuickSampling (QS) (aka. Quantile Sampling) is a general-purpose pixel-based MPS algorithm that is designed to be robust, efficient, and run in constant time. QS was designed to adapt to your problem; it can be used to do (un)conditional simulation, gap filling, or even downscaling, using continuous or categorical variables or a combination of both. The code was developed without restrictions regarding the dimensionality of the data (e.g. 1D, 2D, 3D, nD). +
      +
    • A journal article published in Geoscientific Model Development describes the method here.
    • +
    +
  • +
  • Narrow Distribution Selection (NDS) is an algorithm specifically targeted to simulate spectrally enhanced remote-sensed imagery. It requires an external variable (for example, a grayscale image) to control the simulation (of colors). + +
  • +
+ +

The framework can be easily extended to handle most codes that use gridded data. Currently, any compiled code or Python code can be handled.

+ +

For a hands-on introduction to MPS (PPT slides, Colab Notebook & recorded tutorial), follow this link.

+ +
+
+
+ + + \ No newline at end of file diff --git a/feed.xml b/feed.xml new file mode 100644 index 0000000..cefcbe1 --- /dev/null +++ b/feed.xml @@ -0,0 +1 @@ +Jekyll2023-10-03T12:14:43+00:00https://gaia-unil.github.io//G2S/feed.xmlG2S: The GeoStatistical ServerA free and flexible multiple point (geo)statistics framework including state-of-the-art algorithms: QuickSampling and Narrow Distribution Selection \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..adfc3d8 --- /dev/null +++ b/index.html @@ -0,0 +1,11 @@ + + + + Redirecting… + + + + +

Redirecting…

+ Click here if you are not redirected. + diff --git a/installation.html b/installation.html new file mode 100644 index 0000000..75f947b --- /dev/null +++ b/installation.html @@ -0,0 +1,398 @@ + + + + + + + + + + + + + + + + + + + + +Algorithms | G2S: The GeoStatistical Server + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +

G2S: The GeoStatistical Server

+
+

A free and flexible multiple point (geo)statistics framework including state-of-the-art algorithms: QuickSampling and Narrow Distribution Selection

+ +
+
+ +
+
+ +
+

To use the GeoStatistical Server (G2S), you need to install both the G2S server and an interface that matches your preferred programming language. The server handles the core functionality and computations, while the interface enables communication between your code and the server. Follow the steps below to install both components:

+ +
    +
  1. +

    Install the G2S server: The server is the backbone of the G2S framework, responsible for running the simulations. To install the G2S server, follow the instructions provided in the server installation guide.

    +
  2. +
  3. +

    Install the G2S interface: Choose the interface that corresponds to your preferred programming language (Python, MATLAB, or R). These interfaces are written in C++, ensuring seamless integration and performance. To install the appropriate G2S interface, refer to the instructions in the interface installation guide.

    +
  4. +
+ +

After completing the installation of both the G2S server and the corresponding interface, you can start running stochastic simulations using the G2S framework in your preferred programming language.

+ +

Explanation

+ +

The GeoStatistical Server (G2S) utilizes a server-interface architecture to provide a versatile, efficient, and user-friendly platform for running geostatistical simulations. This design choice offers several key advantages:

+ +
    +
  • +

    Language and code-independence: By decoupling the server and algorithm implementation (written in highly optimized C++) from the interface, G2S interface can work seamlessly with various programming languages, including Python, MATLAB, and R. Users can run simulations using their preferred language without worrying about compatibility issues.

    +
  • +
  • +

    Flexibility and extensibility: The server-interface architecture allows for easy integration of new algorithms and techniques as they become available. This modular design ensures that the framework can be updated and improved without disrupting existing workflows.

    +
  • +
  • +

    Scalability and performance: The algorithms are written in C++, a language known for its high performance and efficiency, ensuring that the simulations are executed quickly and reliably. Additionally, the server can be set up to handle multiple simultaneous requests and remotely, making it suitable for large-scale applications.

    +
  • +
+ +

The G2S framework supports Python, MATLAB, and R interfaces, ensuring seamless integration with popular scientific programming languages while maintaining the performance benefits of the underlying C++ implementation. A Python server interface (to implement algorithms in Python) is also available. While originally designed for prototyping, it allows for a quick conversion of existing workflows in G2S.

+ +
+
+
+ + + \ No newline at end of file diff --git a/installation/cluster.html b/installation/cluster.html new file mode 100644 index 0000000..6df691c --- /dev/null +++ b/installation/cluster.html @@ -0,0 +1,496 @@ + + + + + + + + + + + + + + + + + + + + +Server autostart | G2S: The GeoStatistical Server + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +

G2S: The GeoStatistical Server

+
+

A free and flexible multiple point (geo)statistics framework including state-of-the-art algorithms: QuickSampling and Narrow Distribution Selection

+ +
+
+ +
+
+ +
+

Server autostart

+ +

When running the server on a workstation, sometimes an automatic reboot may be needed (e.g., update, power cut, etc). To make matters worse, we may need to login to start again the server. In addition to machine reboots, sometimes servers can crash.

+ +

On Linux machines, it is possible to run the software in the background and launch it automatically at start-up. Here is the installation for Ubuntu, but it’s very simple to adapt it for other systems.

+ +

Many solutions exist with cron, etc., but my favorite one is with systemd

+ +
    +
  1. First follow the standard Linux installation.
  2. +
  3. Test if everything works correctly.
  4. +
  5. Create a new service, let’s call it G2S.service, to do so create a new file /etc/systemd/system/G2S.service
  6. +
  7. Paste the following code and it’s done: +
     [Unit]
    + Description=G2S service
    + After=network-online.target
    + StartLimitIntervalSec=0
    +
    + [Service]
    + Type=simple
    + Restart=always
    + RestartSec=1
    + User=tesla-k20c
    + # update {pathToTheServer} with the path where "./server" is located,
    + # intel-build or c++-build, regarding your choice 
    + WorkingDirectory={pathToTheServer}
    + # if you use the Intel version, you probably want to load the libraries
    + # like : /bin/bash -c "source /opt/Intel/parallel_studio_xe_2019/bin/psxevars.sh intel64; ./server -kod -age 864000"
    + ExecStart=/bin/bash -c "./server -kod -age 864000"
    + # -age 864000	==> keep the file for 10 days
    + # -kod		==> don't remove old files in case of reboot or crash
    +
    + [Install]
    + WantedBy=multi-user.target
    +
    +
  8. +
  9. Start the service with systemctl start G2S
  10. +
  11. Once everything works flawlessly, set it to start automatically at boot with systemctl enable G2S
  12. +
  13. Enjoy!
  14. +
+ +

Cluster

+ +

In this section, I will give you a brief overview of how to set up G2S on a cluster. In this mode, the computation is not distributed through the cluster, but runs on a single cluster node.

+ +

The installation on a cluster can be a quite difficult task. Please don’t hesitate to ask for help from the team that manages the cluster.

+ +

The installation really depends on what the cluster team allows you to do or not.

+ +

Installation of libraries

+ +

In the best-case scenario, fftw3 is installed in a non-standard path (you may not find two clusters that have the stuff at the same place. Why? To make your life harder, of course! 🤪). Potentially you can have the Intel compiler installed with all the libraries. Please refer to your cluster documentation for this.

+ +

Probably ZMQ is not already installed, and don’t expect that they will install it for you. Also, jsoncpp is most probably missing too. In order to make life a bit easier for you, I prepared a small script that downloads and compiles all of these libraries and even modifies the Makefile.

+ +
    +
  1. Log in to a computation node (or submit a task).
  2. +
  3. Execute the script in build/forClusters/compileExternalLibs.sh (I assume that the front and the computational nodes are from the same generation, in other cases you can run into some unsupported instruction issues).
  4. +
  5. Wait until it’s finished, take this time to pray 🙏 to the god of the clusters.
  6. +
+ +

Compilation of G2S

+ +

The previous script updates the Makefile automatically, so refer to the standard Linux installation. ⚠️ Be careful to compile in a computational node and not on the front node; otherwise, you can have lots of painful issues later.

+ +

Execute the G2S server

+ +

Take a deep breath and don’t give up; it’s almost finished!

+ +

Now the challenging part starts. It is highly dependent on how lucky you are and how much energy you want to spend to make it work. But keep this in mind, spending some time now can make you win a lot later.

+ +

Simple, ugly, and inefficient solution

+ +

You can use this solution if you don’t have a queuing system. You really don’t? Are you sure you are on a cluster?

+ +
    +
  1. You simply start the G2S server on a node.
  2. +
  3. Once it’s running, connect to the node using an ssh tunnel: ssh -L 8128:theNodeName:8128 clusterAddress, this will redirect your localhost to the computation node.
  4. +
  5. Then run any G2S computation you like on your own computer.
  6. +
  7. Once you have all your computation finished, shut down the server with the ‘-shutdown’ argument. +⚠️ Although this solution looks simple, in reality, it’s dangerous and relatively hard to use on a busy cluster. In fact, when you want to run the server, you will probably finish in the waiting queue. If you are paying for the computations, you would be charged even when it isn’t computing any simulation because the node is busy (waiting for jobs). And if you are not charged, you still use resources that other people may need. Furthermore, with this solution, it’s extremely difficult to distribute many jobs across all the clusters. +Using nodeParallel could be a (smoother) solution too, in particular for multiple node submission.
  8. +
+ +

The way to go

+ +

The goal here is to create a task for each simulation and to add it to the queue. Again each cluster is different, some use PBS (qsub), some use SLURM(sbatch, srun),… (ok, it’s not the place to debate about this). We need to convert each call to an algorithm that doesn’t starts the computation, but instead submits it in the queue.

+ +

⚠️ currently computation interruption does not work on some clusters (Ctrl+C as well as ‘-kill’). Therefore, you need to manage job interruptions with the submission queue system. I will try to fix this issue as soon as I can, however it’s not on my priority list now.

+ +
    +
  1. If the cluster uses PBS or SLURM, check the related file in the forClusters directory. If it uses another system, check one and adapt for your situation. I advise asking the cluster team to help you with this, and they are paid to do that. (please contact me only if they couldn’t find out how to make it work)
  2. +
  3. if needed, adapt configureCluster.sh
  4. +
  5. execute configureCluster.sh
  6. +
  7. Open a tunnel to the front node ssh -L 8128:clusterAddress:8128 clusterAddress
  8. +
  9. start the server ./server -kod -age 864000 (adjust the 864000 regarding how long the file needs to be stored on the cluster (here 10 days))
  10. +
  11. Submit the jobs + once all the jobs are submitted you can close the connection (it is possible that you run into trouble if you run many thousands of tasks at the same time, in that case keep the connection open)
  12. +
+ +

even better

+ +

If you are lucky you may be able to keep the server running all the time on the front node. Then ….

+ +

You can try to run server in demons -d, if it’s authorized. So you can always cut the connection even if you submit one million tasks at the same time.

+ +

Then… if you’re even luckier you can open a port on the front node (here 8128). Don’t hesitate to ask the support if they can do this favor for you. If you can, 1) invest in a good bottle of wine for the support department, 2) If you are that lucky you should play lottery!

+ +

So, once the port is open and the server are executed as a deamon, you can close all connections, and simply put the address of the front node in each call to g2s ‘-sa’,clusterAddress

+ +

How to efficiently use it

+ +

Once the server runs on the front node use ‘‑submitOnly’,’‑statusOnly’ and ‘‑waitAndDownload’ to manage your computations. The G2S server is coming with its own submission queue and dependency manager. Because the dependencies are unknown, each job runs sequentially by default. To over pass this limitation we can simply specify dependency as :’‑after’,0, so each job can start in parallel.

+ +

A standard job submission should look like id=g2s(… usualParameter,’‑statusOnly’,’‑after’,0). +and to get the final result sim=g2s(‘‑waitAndDownload’,id)

+ +

Using nodeParallel

+

NodeParallel (NP) allow to forward command from one node to another, in our context from the login node to some worker nodes (it require a shared file system). Therefore we can use NP to forward computation command to computation nodes without making a new task in the submission queue. This is particularly interesting when we have lots of short jobs (it allows removing the initialization for each task), or when we have significantly more jobs than the number of tasks that we are allowed to submit to the queue.

+ +

To use it simple download NP from its github page, follow the instruction to install and add it to the PATH (at least each time you want to use it :) ). Then adapt the compilation for use on cluster using ./configureCluster.sh NP available in the forClusters folder. This configuration is not compatible with a queue submission one, so if you plan to use both strategies in parallel you need to duplicate the G2S installation. Run the NP and G2S servers, both on the login node.

+ +
    +
  1. You can run NP in demon mode ./server -d
  2. +
  3. When running the G2S server, add the -maxCJ n flag, with n between the number and few(<4x) times the number of jobs you plan to run in parallel.
  4. +
  5. Start (and you can even finish) to submit G2S tasks. (Refer to the previous sections to communicate with the login node, ssh tunneling, open ports on the login node …). Don’t forget the ‘-after’,0 to allow parallel computations.
  6. +
  7. Finally, run workers by submitting tasks to the normal submission queue(or directly to the computation nodes ) using the np_client -sa $HOSTNAME -sac -w in the folder that contain the G2S server. With $HOSTNAME the name or IP of the login node.
  8. +
+ + +
+
+
+ + + \ No newline at end of file diff --git a/installation/cluster.md b/installation/cluster.md new file mode 100644 index 0000000..bda8f4f --- /dev/null +++ b/installation/cluster.md @@ -0,0 +1,119 @@ +# Server autostart + +When running the server on a workstation, sometimes an automatic reboot may be needed (e.g., update, power cut, etc). To make matters worse, we may need to login to start again the server. In addition to machine reboots, sometimes servers can crash. + +On Linux machines, it is possible to run the software in the background and launch it automatically at start-up. Here is the installation for Ubuntu, but it's very simple to adapt it for other systems. + +Many solutions exist with cron, etc., but my favorite one is with systemd + +1. First follow the standard Linux installation. +2. Test if everything works correctly. +3. Create a new service, let's call it G2S.service, to do so create a new file `/etc/systemd/system/G2S.service` +4. Paste the following code and it's done: +``` + [Unit] + Description=G2S service + After=network-online.target + StartLimitIntervalSec=0 + + [Service] + Type=simple + Restart=always + RestartSec=1 + User=tesla-k20c + # update {pathToTheServer} with the path where "./server" is located, + # intel-build or c++-build, regarding your choice + WorkingDirectory={pathToTheServer} + # if you use the Intel version, you probably want to load the libraries + # like : /bin/bash -c "source /opt/Intel/parallel_studio_xe_2019/bin/psxevars.sh intel64; ./server -kod -age 864000" + ExecStart=/bin/bash -c "./server -kod -age 864000" + # -age 864000 ==> keep the file for 10 days + # -kod ==> don't remove old files in case of reboot or crash + + [Install] + WantedBy=multi-user.target +``` +5. Start the service with `systemctl start G2S` +6. Once everything works flawlessly, set it to start automatically at boot with `systemctl enable G2S` +7. Enjoy! + +# Cluster + +In this section, I will give you a brief overview of how to set up G2S on a cluster. In this mode, the computation is not distributed through the cluster, but runs on a single cluster node. + +The installation on a cluster can be a quite difficult task. Please don't hesitate to ask for help from the team that manages the cluster. + +The installation really depends on what the cluster team allows you to do or not. + +## Installation of libraries + +In the best-case scenario, fftw3 is installed in a non-standard path (you may not find two clusters that have the stuff at the same place. Why? To make your life harder, of course! 🤪). Potentially you can have the Intel compiler installed with all the libraries. Please refer to your cluster documentation for this. + +Probably ZMQ is not already installed, and don't expect that they will install it for you. Also, jsoncpp is most probably missing too. In order to make life a bit easier for you, I prepared a small script that downloads and compiles all of these libraries and even modifies the Makefile. + +1. Log in to a computation node (or submit a task). +2. Execute the script in `build/forClusters/compileExternalLibs.sh` (I assume that the front and the computational nodes are from the same generation, in other cases you can run into some unsupported instruction issues). +3. Wait until it's finished, take this time to pray 🙏 to the god of the clusters. + +## Compilation of G2S + +The previous script updates the Makefile automatically, so refer to the standard Linux installation. ⚠️ Be careful to compile in a computational node and not on the front node; otherwise, you can have lots of painful issues later. + +## Execute the G2S server + +Take a deep breath and don't give up; it's almost finished! + +Now the challenging part starts. It is highly dependent on how lucky you are and how much energy you want to spend to make it work. But keep this in mind, spending some time now can make you win a lot later. + +### Simple, ugly, and inefficient solution + +You can use this solution if you don't have a queuing system. You really don't? Are you sure you are on a cluster? + +1. You simply start the G2S server on a node. +2. Once it's running, connect to the node using an ssh tunnel: `ssh -L 8128:theNodeName:8128 clusterAddress`, this will redirect your localhost to the computation node. +3. Then run any G2S computation you like on your own computer. +4. Once you have all your computation finished, shut down the server with the '-shutdown' argument. +⚠️ Although this solution looks simple, in reality, it's dangerous and relatively hard to use on a busy cluster. In fact, when you want to run the server, you will probably finish in the waiting queue. If you are paying for the computations, you would be charged even when it isn't computing any simulation because the node is busy (waiting for jobs). And if you are not charged, you still use resources that other people may need. Furthermore, with this solution, it's extremely difficult to distribute many jobs across all the clusters. +Using nodeParallel could be a (smoother) solution too, in particular for multiple node submission. + +### The way to go + +The goal here is to create a task for each simulation and to add it to the queue. Again each cluster is different, some use PBS (qsub), some use SLURM(sbatch, srun),... (ok, it's not the place to debate about this). We need to convert each call to an algorithm that doesn't starts the computation, but instead submits it in the queue. + +⚠️ currently computation interruption does not work on some clusters (Ctrl+C as well as '-kill'). Therefore, you need to manage job interruptions with the submission queue system. I will try to fix this issue as soon as I can, however it's not on my priority list now. + +1. If the cluster uses PBS or SLURM, check the related file in the forClusters directory. If it uses another system, check one and adapt for your situation. I advise asking the cluster team to help you with this, and they are paid to do that. (please contact me only if they couldn't find out how to make it work) +2. if needed, adapt configureCluster.sh +3. execute configureCluster.sh +4. Open a tunnel to the front node ssh -L 8128:clusterAddress:8128 clusterAddress +5. start the server ./server -kod -age 864000 (adjust the 864000 regarding how long the file needs to be stored on the cluster (here 10 days)) +6. Submit the jobs + once all the jobs are submitted you can close the connection (it is possible that you run into trouble if you run many thousands of tasks at the same time, in that case keep the connection open) + +### even better + +If you are lucky you may be able to keep the server running all the time on the front node. Then .... + +You can try to run server in demons -d, if it's authorized. So you can always cut the connection even if you submit one million tasks at the same time. + +Then... if you’re even luckier you can open a port on the front node (here 8128). Don't hesitate to ask the support if they can do this favor for you. If you can, 1) invest in a good bottle of wine for the support department, 2) If you are that lucky you should play lottery! + +So, once the port is open and the server are executed as a deamon, you can close all connections, and simply put the address of the front node in each call to g2s '-sa',clusterAddress + +## How to efficiently use it + +Once the server runs on the front node use '‑submitOnly','‑statusOnly' and '‑waitAndDownload' to manage your computations. The G2S server is coming with its own submission queue and dependency manager. Because the dependencies are unknown, each job runs sequentially by default. To over pass this limitation we can simply specify dependency as :'‑after',0, so each job can start in parallel. + +A standard job submission should look like id=g2s(... usualParameter,'‑statusOnly','‑after',0). +and to get the final result sim=g2s('‑waitAndDownload',id) + +## Using nodeParallel +NodeParallel (NP) allow to forward command from one node to another, in our context from the login node to some worker nodes (it require a shared file system). Therefore we can use NP to forward computation command to computation nodes without making a new task in the submission queue. This is particularly interesting when we have lots of short jobs (it allows removing the initialization for each task), or when we have significantly more jobs than the number of tasks that we are allowed to submit to the queue. + +To use it simple download NP from its github page, follow the instruction to install and add it to the PATH (at least each time you want to use it :) ). Then adapt the compilation for use on cluster using ./configureCluster.sh NP available in the forClusters folder. This configuration is not compatible with a queue submission one, so if you plan to use both strategies in parallel you need to duplicate the G2S installation. Run the NP and G2S servers, both on the login node. + +1. You can run NP in demon mode ./server -d +2. When running the G2S server, add the -maxCJ n flag, with n between the number and few(<4x) times the number of jobs you plan to run in parallel. +3. Start (and you can even finish) to submit G2S tasks. (Refer to the previous sections to communicate with the login node, ssh tunneling, open ports on the login node ...). Don't forget the '-after',0 to allow parallel computations. +4. Finally, run workers by submitting tasks to the normal submission queue(or directly to the computation nodes ) using the np_client -sa $HOSTNAME -sac -w in the folder that contain the G2S server. With $HOSTNAME the name or IP of the login node. + diff --git a/installation/interfaces.html b/installation/interfaces.html new file mode 100644 index 0000000..df8f484 --- /dev/null +++ b/installation/interfaces.html @@ -0,0 +1,485 @@ + + + + + + + + + + + + + + + + + + + + +Installation of interfaces | G2S: The GeoStatistical Server + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +

G2S: The GeoStatistical Server

+
+

A free and flexible multiple point (geo)statistics framework including state-of-the-art algorithms: QuickSampling and Narrow Distribution Selection

+ +
+
+ +
+
+ +
+

Installation of interfaces

+ + +
+

+ +

+
+ +
+ +

Python

+ +

Automatic installation

+ +

Simply use pip install G2S

+ +

Manual compilation

+ +
    +
  1. If needed Python and Numpy: sudo apt install python3-distutils python3-dev python3-numpy -y
  2. +
  3. (A C++ compiler with c++17 is required)
  4. +
  5. Go to build/python-build
  6. +
  7. Run python3 setup.py install --user
  8. +
+ +

Check proper interface installation

+ +

Simply run from g2s import g2s; g2s('--version')

+
+ +
+ +

MATLAB

+ +
+

+ +

+
+ +
+ +

Installation on Ubuntu

+ +
    +
  1. (A C++ compiler with c++17 is required)
  2. +
  3. Open MATLAB
  4. +
  5. Go to build/matlab-build
  6. +
  7. Run CompileG2S
  8. +
  9. Add compiled file in the MATLAB path
  10. +
+
+ +
+ +

Installation on macOS

+ +
    +
  1. Open MATLAB
  2. +
  3. Go to build/build-matlab
  4. +
  5. Run CompileG2S
  6. +
  7. Add compiled file in the MATLAB path
  8. +
+
+ +
+ +

Installation on Windows 10

+ +
Download precompiled interfaces
+ +
    +
  1. Download here.
  2. +
  3. Unzip and add the folder to MATLAB path.
  4. +
+ +
Manual compilation
+ +
    +
  1. (A C++ compiler with c++17 is required)
  2. +
  3. If needed, install python with the option to add it to the Path
  4. +
  5. Open MATLAB
  6. +
  7. Install a compiler with c++17, available here (2017 or later)
  8. +
  9. Go to build/build-matlab
  10. +
  11. Run CompileG2S
  12. +
  13. Add compiled file in the MATLAB path
  14. +
+
+ +
Check proper interface installation
+ +

Simply run g2s('--version')

+ +
+ +
+ +

R

+ +

TODO !

+ +
+ +
+
+
+ + + \ No newline at end of file diff --git a/installation/server.html b/installation/server.html new file mode 100644 index 0000000..4a3e638 --- /dev/null +++ b/installation/server.html @@ -0,0 +1,496 @@ + + + + + + + + + + + + + + + + + + + + +Installation of the server | G2S: The GeoStatistical Server + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +

G2S: The GeoStatistical Server

+
+

A free and flexible multiple point (geo)statistics framework including state-of-the-art algorithms: QuickSampling and Narrow Distribution Selection

+ +
+
+ +
+
+ +
+

Installation of the server

+ +
+

+ + + + +

+
+ +
+ +

Installation of the server on Ubuntu

+ +
    +
  1. Install linuxbrew /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  2. +
  3. Run brew install open-geocomputing/brew/g2s
  4. +
  5. Use the g2s command
  6. +
+ +
+ +
+ +

Installation of the server on macOS

+ +
    +
  1. Install homebrew if not already done /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  2. +
  3. Run brew install open-geocomputing/brew/g2s
  4. +
  5. Use the g2s command
  6. +
+ +
+ +
+ +

Installation of the server on Windows 10

+ +
    +
  1. Check that the latest updates of Windows are installed
  2. +
  3. Install WSL following these instructions, and select a Linux distribution (we recommend choosing Ubuntu for beginners).
  4. +
  5. Install linuxbrew /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  6. +
  7. Run brew install open-geocomputing/brew/g2s
  8. +
  9. Use the g2s command
  10. +
+
+ +
+ +

Installation of the server manually from source on Ubuntu

+ +

Automatic with GCC on Ubuntu

+ +
    +
  1. First clone the code from this GitHub: git clone https://github.com/GAIA-UNIL/G2S.git
  2. +
  3. Then run build/c++-build/install_needs_W_VM.sh
  4. +
+ +

Manual (including Intel C++ Compiler)

+ +
    +
  1. First clone the code from this GitHub: git clone https://github.com/GAIA-UNIL/G2S.git
  2. +
  3. Basics for compiling are needed (e.g. on Ubuntu: build-essential).
  4. +
  5. The following packages are required: ZMQ, JsonnCpp and zlib for G2S; fftw3 for QS and NDS.
  6. +
  7. To install them on Ubuntu: sudo apt install build-essential libzmq3-dev libjsoncpp-dev zlib1g-dev libfftw3-dev libcurl4-openssl-dev -y (libcurl4-openssl-dev is optional).
  8. +
  9. The C++ extension for ZMQ is required too, and can be installed via: wget "https://raw.githubusercontent.com/zeromq/cppzmq/master/zmq.hpp" -O ./include/zmq.hpp
  10. +
  11. Go to the build subfolder.
  12. +
  13. Run: make -j, if the Intel C++ compiler is installed, the adapted version will be compiled too. The Intel compiler can be downloaded freely in many cases: here. +To manually select between GCC or Intel compiler use make c++ -j or make intel -j, respectively.
  14. +
  15. Run: make install
  16. +
+ +
+ +
+ +

Installation of the server manually from source on macOS

+ + + +
    +
  1. First clone the code from this GitHub: git clone https://github.com/GAIA-UNIL/G2S.git
  2. +
  3. Install the package manager Homebrew (if not already done)
  4. +
  5. The following packages are required: ZMQ, JsonnCpp and zlib for G2S. fftw3 for QS and NDS.
  6. +
  7. To install them with Homebrew: brew install fftw zmq jsoncpp cppzmq curl Note: curl is optional.
  8. +
  9. Go to the build subfolder.
  10. +
  11. Run: make -j, if the Intel C++ compiler is installed the adapted version will be compiled too. The Intel compiler can be downloaded freely in many cases: here. Obviously, Intel compiler is only for Intel CPUs 😁. To manually select between GCC or Intel compiler use make c++ -j or make intel -j, respectively.
  12. +
  13. Run: make install
  14. +
+ +

using MacPort (now deprecated)

+ +
    +
  1. First clone the code from this GitHub: git clone https://github.com/GAIA-UNIL/G2S.git
  2. +
  3. Install the package manager MacPort (if not already done)
  4. +
  5. The following packages are required: ZMQ, JsonnCpp and zlib for G2S. fftw3 for QS and NDS.
  6. +
  7. To install them with macPort: sudo port install zmq-devel jsoncpp-devel zlib cppzmq-devel fftw-3 fftw-3-single curl Note: curl is optional.
  8. +
  9. Go to the build subfolder.
  10. +
  11. Run: make -j, if the Intel C++ compiler is installed the adapted version will be compiled too. The Intel compiler can be downloaded freely in many cases: here. +To manually select between GCC or Intel compiler use make c++ -j or make intel -j, respectively.
  12. +
  13. Run: make install
  14. +
+ +
+ +
+ +

Installation of the server manually from source on Windows 10

+ +
    +
  1. Check that the latest updates of Windows are installed
  2. +
  3. Install WSL following these instructions, and select a Linux distribution (we recommend choosing Ubuntu for beginners).
  4. +
  5. Clone the code from this GitHub repository: https://github.com/GAIA-UNIL/G2S.git (or download and unzip the zip-file on the top right of this page).
  6. +
  7. In Windows, go to the directory build/c++-build and run/double-click install.bat.
  8. +
+ +
+ +
+
+
+ + + \ No newline at end of file diff --git a/nds.html b/nds.html new file mode 100644 index 0000000..351d933 --- /dev/null +++ b/nds.html @@ -0,0 +1,11 @@ + + + + Redirecting… + + + + +

Redirecting…

+ Click here if you are not redirected. + diff --git a/qs.html b/qs.html new file mode 100644 index 0000000..500db63 --- /dev/null +++ b/qs.html @@ -0,0 +1,11 @@ + + + + Redirecting… + + + + +

Redirecting…

+ Click here if you are not redirected. + diff --git a/redirects.json b/redirects.json new file mode 100644 index 0000000..5dcbeba --- /dev/null +++ b/redirects.json @@ -0,0 +1 @@ +{"/autoqs":"https://gaia-unil.github.io//G2S/algorithms/AutoQS.html","/nds":"https://gaia-unil.github.io//G2S/algorithms/NarrowDistributionSelection.html","/qs":"https://gaia-unil.github.io//G2S/algorithms/QuickSampling.html","/":"https://gaia-unil.github.io//G2S/briefOverview.html"} \ No newline at end of file diff --git a/runTheServer.html b/runTheServer.html new file mode 100644 index 0000000..6824492 --- /dev/null +++ b/runTheServer.html @@ -0,0 +1,434 @@ + + + + + + + + + + + + + + + + + + + + +Run the server | G2S: The GeoStatistical Server + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +

G2S: The GeoStatistical Server

+
+

A free and flexible multiple point (geo)statistics framework including state-of-the-art algorithms: QuickSampling and Narrow Distribution Selection

+ +
+
+ +
+
+ +
+

Run the server

+

Simply run g2s server to launch the server, optionally accompanied by any of the below settings. Alternatively, run g2s enable to launch the server and make sure it relaunches at start-up when you reboot your machine (and run g2s disable to disable this service again). +If you did not install g2s through linuxbrew but chose the manual installation from source instead, launch the server by running ./server from within the G2S/build/c++-build (or G2S/build/intel-build for the intel version).

+ +

ⓘ The server generates logs- and data-files in subfolders /tmp/G2S/logs and /tmp/G2S/data that are saved for debug purposes. They are currently automatically removed at the reboot of the computer, at the launch of the server or after one day. This parameterization can be changed with -kod and -age.

+ +

Parameterization

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FlagDescription
-dRun as daemon
-To nShutdown the server if there is no activity after n seconds, 0 for ∞ (default: 0)
-pSelect a specific port for the server (default: 8128)
-kodKeep old data, if the flag is not present all files from previous runs are erased at launch
-ageSet the time in second after files need to be removed (default: 86400 s = 1d)
+ +

Advanced parameters

+ + + + + + + + + + + + + + + + + + + + + + +
FlagDescription
-mTSingle job at a time (excludes the use of -after, only use if you’re sure to be the only one accessing the server)
-fMRun as a function, without fork
-maxCJ nLimit the maximum number of jobs running in parallel.
+ + +
+
+
+ + + \ No newline at end of file diff --git a/usingTheInterfaces.html b/usingTheInterfaces.html new file mode 100644 index 0000000..81ee8ce --- /dev/null +++ b/usingTheInterfaces.html @@ -0,0 +1,503 @@ + + + + + + + + + + + + + + + + + + + + +Using the interfaces | G2S: The GeoStatistical Server + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +

G2S: The GeoStatistical Server

+
+

A free and flexible multiple point (geo)statistics framework including state-of-the-art algorithms: QuickSampling and Narrow Distribution Selection

+ +
+
+ +
+
+ +
+

Using the interfaces

+ +

A call to g2s is needed to launch any computation. Each call to g2s is composed of parameters of G2S and of the name of the algorithm used. Flags do NOT have a specific order.

+ + +
+

+ +

+
+ +
+ +

Use g2s in Python

+ +
from g2s import g2s
+data = g2s(...)  # it returns a tuple that contains all the output maps and the computing duration
+
+

You can either write '-flag',value or flag=value or a mix of both.

+ +
+ +
+ +

Use g2s in MATLAB

+ +
data = g2s(...)          % principal output, the simulation
+[data, t] = g2s(...)     % the simulation and the computation time
+[data, ...,t] = g2s(...) % the simulation, other outputs map and the computation time
+
+

A call to g2s is needed to launch any computation. Each call to g2s is composed of parameters of G2S and of the name of the algorithm used. +Flags do NOT have a specific order. +You can either write '-flag',value or flag=value or a mix of both.

+ +
+ +
+ +

Use g2s in R

+ +

The R interface is not available at this moment. Please contact g2s@mgravey.com if you need it.

+ +
+ +

Inteface flags

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FlagDescription
--versionReturn the version and compilation date of the interface
-aThe simulation algorithm to be used, it can be ‘qs’, ‘nds’, ‘ds-l’ (DS-like, not maintained)
-saServer address (default: localhost (the server is local), otherwise provide IP address). Nice when we have a powerful machine dedicated for computation
-pPort where to look for the server (default: 8128). Should be passed as an integer.
-silentDon’t display the progression, useful for scripts
-serverStatusInform if the server is working properly
<1 → error, such as comunication, server shutdown,…)
=0 → undefined
>1 → server is operational
1: standard server working normaly
-noTODeactivate TimeOut on ZMQ communication, useful for slow network (e.g., through internet)
-TOSpecify a custom TimeOut on ZMQ communication( uint32 in millisecond )
-shutdownShutdown the server, useful at the end of scripts
+ +

Asynchronous mode flags

+

The following options represent the Asynchronous mode, which allows you to submit multiple jobs simultaneously and retrieve the results of each of them later on (as opposed to synchronous communication with the server, where you need to wait until a job is finished before you can submit a new one). You launch the async mode by simply adding the -submitOnly flag to your g2s call. This will give only the job ID as an output, so the g2s call becomes jobid = g2s(flag1,value1, flag2,value2, ...). Don’t forget to always include the server address if it’s not local! See the example section for a demonstration in MATLAB and Python.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FlagDescription
-submitOnlySubmit a job
-statusOnlyCheck progression
Usage: status = g2s('-statusOnly',jobid)
-waitAndDownloadDownload the result
Usage: sim,_ = g2s('-waitAndDownload',jobid)
-killKill a given task
Usage: g2s('-kill',jobid)
-afterExecute the job after another one is finished (e.g. -after,previousJobId )
+ + +
+
+
+ + + \ No newline at end of file