Compared to running DeGAUSS on a macOS or linux system, there are a few known issues and workarounds for using DeGAUSS on Microsoft Windows:

Specifying the $PWD when binding a volume

Problem

Calling DeGAUSS results in an error along the lines of:

C:\Program Files\Docker\Docker\Resources\bin\docker.exe: invalid reference format.
See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.

or DeGAUSS complains that it cannot find the my_address.csv file within the working directory of /tmp

Solution

The point of the -v argument is to bind the current directory to the “/tmp” directory inside of the container so that the code inside can find the input files and write the output file back to the current working directory on the host platform.

The Windows Command Line (cmd) does not support the $PWD environment variable and so instead of using that to specify the bind point (-v $PWD:/tmp) you will have to use a Command Line variable, %cd, for example: -v %cd%:/tmp or

docker run --rm=TRUE -v "%cd%":/tmp degauss/pepr_roadways:0.3 my_address_file_geocoded.csv

Alternatively, you can specify the full path to the folder, substituting / for \. For example: -v C:/Temp/docker_testing:/tmp or

docker run --rm=TRUE -v //c/Users/<your_username>/Desktop://tmp degauss/cchmc_batch_geocoder my_address_file.csv

When using Windows PowerShell, by placing the PWD inside curly brackets, you are able to specify the current working directory. For example: ${PWD} or

docker run --rm -v ${PWD}:/tmp degauss/geocoder:3.0 my_address_file.csv

Docker Containers for Windows

Problem

Within Windows terminal, trying to pull or run a Docker container results in an error: docker image operating system "linux" cannot be used on this platform

Solution

By default, Docker for Windows is setup to run Windows Containers and is not compatible with Linux Containers. To change this setting, right click on the Docker logo in the toolbar menu and choose Switch to Linux Containers...

Parallel Computing on Windows

Problem

When running a DeGAUSS container on Windows it results in an error:

Error in fifo(tempfile(), open = "w+b", blocking = T) :
  cannot open the connection
Execution halted

Solution

This error occurs because some Windows platforms cannot support the R code used for parallel computing. Although this option is enabled by default and cannot be changed by the user, a workaround is to set the Docker host to use only 1 CPU. This can be done in the Docker settings panel and will force the container to use only a single thread.

Insufficient Memory

Problem

DeGAUSS seems to run without reporting any errors, but does not produce an output file. Intermediate directories (Rtmp…, cache, degauss_cache) directories are created, but the program seems to terminate prematurely.

Solution

If using an older version of Docker built using the Hyper-V engine, you can allocate more memory to Docker to complete the task. From your Docker dashboard, navigate to the settings. Under “Resources” and “Advanced”, adjust the slider to increase the amount of memory available to Docker. More information is available here, under “Resources”.

However, if your Docker is built using the WSL 2 engine, these options are not available. If you do not see the above screen, you will have to manually allocate more memory to Docker using the instructions found here, under “Configure global options with .wslconfig”.

[wsl2]
kernel=C:\\temp\\myCustomKernel
memory=4GB # Limits VM memory in WSL 2 to 4 GB
processors=2 # Makes the WSL 2 VM use two virtual processors

More information about the WSL 2 version of Docker is provided here.

No Windows 10

Problem

The only computers available to use DeGAUSS are Windows machines that do not have Windows 10 on them. Docker CE only supports Windows machines with Windows 10 or greater.

Solution

Install Docker Toolbox, which is a legacy supported solution to using Docker on systems that don’t support Hyper-V: https://docs.docker.com/toolbox/toolbox_install_windows/

After installation, double-click the Docker Quickstart icon on the Desktop to launch a pre-configured Docker toolbox terminal and proceed as usual.