# Training school on image reconstruction with SIRF and CIL 2021 Refer to the [main website](https://www.ccpsynerbi.ac.uk/SIRFCIL2021) for info on the school, such as schedule and programme. You can access the Zoom meeting [here.](https://ukri.zoom.us/j/99401085708) We will collect and answer the questions you may have with this tool. There is going to be **one page per week** where you can ask questions: * [Week 1](https://hackmd.io/@SIRF-CIL-Fully3D/rk0zKU0id) * [Week 2](https://hackmd.io/@SIRF-CIL-Fully3D/SkQcVSG3d) * [Week 3](https://hackmd.io/@SIRF-CIL-Fully3D/SkZqjSf3O) We have a [Gather.Town space open, see here](https://hackmd.io/@SIRF-CIL-Fully3D/SyZHD-sh_) Below you can also find a list of FAQs which you might have before or at the start of the training school. ## Frequently Asked Questions: ### Where can the recorded Zoom meeting be watched? **The Zoom recording from Monday 28 June can be viewed [here](https://ukri.zoom.us/rec/share/pN5elCHNwCzym-0Ct_r0SSJhs3zAe-RKbhQ3cXXhEBTRvFI6gl3V8j34cHS3eJ0Y.Z-bt8sBWXeNNvsZ6). Passcode: vq=H@9qU** You can find some slides on https://www.ccpsynerbi.ac.uk/SIRFCIL2021. ### I can't access breakout rooms in the Zoom Sessions **A** Check your Zoom version. On Linux, we've found 5.2 Zoom client is too old, but 5.6 is okay. ### How do I ask questions? All participants can edit these HackMD pages. Click the "Edit" icon at the top right of the page. You can sign in if you wish, but we have made the pages editable without signing in so that participants can ask questions anonymously. At the bottom of each page we've designated an area for participant questions. Please take care not to edit the information provided by the organisers. ### How do I prepare for the training school? Probably the best thing to do is to check the information in the [SIRF-Exercises/README](https://github.com/SyneRBI/SIRF-Exercises/#readme). This provides basic "starting" instructions, as well as some links with recommended reading. ### Do I need to install SIRF and CIL for the training? We provide a cloud solution for trainees that does not require installation. We generally recommend that you will use our cloud set-up, also because some exercises will benefit highly from access to GPU. If you did not receive an email with your account details (and expected one), email us. Otherwise, you can head to https://training.jupyter.stfc.ac.uk/. Select `Training School for SIRF and CIL GPU` and wait a few minutes for your server to be launched. However, the cloud solution will not be persistent after the training has ended. In addition, there could be issues with access due to the number of participants. Therefore, we recommend that you install SIRF and CIL on a (ideally multi-core) machine as well. #### Jupyterhub and SIRF-Exercises On the STFC Cloud jupyterhub, https://training.jupyter.stfc.ac.uk/ you will find all the software, the notebooks and the data pre-installed. However, you will still need to configure the `SIRF-Exercises`. Open a terminal and type the following: ``` cd ~/SIRF-Exercises ./scripts/download_data.sh -w ./working_dir ``` These commands will set the working directory to `working_dir` (in the current directory) so that the notebooks will run without (hopefully) problems in finding/opening/working with the data. All the output of your notebooks will be found in a subdir of `~/SIRF-Exercises/working_dir`. #### Jupyterhub and CIL-Demos `CIL-Demos` notebooks will use the directory where they reside to save their output. The path to the data is hard-coded in the notebooks, so there is no need for you to alter the notebooks if you are using the STFC Cloud, https://training.jupyter.stfc.ac.uk/. In case you are using the VM or docker, you will have to download the data by yourself and modify the location of the data in the notebooks, see [here](https://github.com/TomographicImaging/CIL-Demos/blob/main/training/2021_Fully3D/Week1/additional_exercises_data_resources.ipynb). ### How do I install SIRF and CIL myself? **Please use v3.1.0 (released on 27 June). If you downloaded a previous version of the VM, you can [update it](https://github.com/SyneRBI/SyneRBI_VM/blob/master/documentation/Basic-usage.md#updating-your-vm).** We provide binaries in 2 forms: * an Oracle VirtualBox Virtual Machine. Information on installation and usage is on [this page](https://github.com/SyneRBI/SyneRBI_VM/wiki). * a Docker image on [dockerhub](https://hub.docker.com/r/synerbi/sirf/tags?page=1&ordering=last_updated), see instructions [here](https://github.com/SyneRBI/SIRF-SuperBuild/tree/master/docker#readme). (Use the `service` image, or if you are on Linux and have a GPU, `service-gpu`) Notes: - these binary distributions are 4GB or more. - the installation instructions on the 2019 training school (available on the CCP SyneRBI website) are somewhat out-dated. Please follow instructions and use links provided in **this page**, and check for regular updates here. #### Other installation options (**unsupported** for the training course) * CIL is also available as [conda packages](https://github.com/TomographicImaging/CIL#installation). However, we do not have SIRF on conda yet unfortunately. * You can also build the software yourself from source if you're adventurous (and don't use Windows). SIRF and CIL can be installed together via the [SIRF-SuperBuild](https://github.com/SyneRBI/SIRF-SuperBuild/tree/master/#readme). [This wiki page](https://github.com/SyneRBI/SIRF/wiki/Installation-instructions) tells you how. Please set `BUILD_CIL=ON` in CMake. ### What minimum hardware requirements do you have for a local installation? Some of the exercises will run on a standard laptop, but others will highly benefit from a multi-core processor, and many of the CIL exercises as well as the deep-learning exercises are only feasible on Linux with a GPU with CUDA 9 or later. Total data-size download is about 24GB. ### I've got a Docker Image or the VM, what now? Please check the [SIRF-Exercises/DocForParticipants](https://github.com/SyneRBI/SIRF-Exercises/blob/master/DocForParticipants.md). Once you have the Jupyter notebook running, the password is `virtual`. We recommend that you go to `SIRF-Exercises/notebooks/Introductory` and open the `introduction` notebook to start. ### VirtualBox VM, what is the password? To log in into the VM the `sirfuser` user has `virtual` as password. The password for the jupyter server on the VM is `virtual` again. (Also on docker.) Previous version of the VM (<3.1.0) had `virtual` as `sirfuser` password but `virtual%1` as jupyter server password. If you are experiencing this, it means that you are using an old VM which is not supported for the training. [How to update your VM or download a new one](https://hackmd.io/kZx9QmOSRUWQEUtGprZujw?both#How-do-I-install-SIRF-and-CIL-myself). ### Some errors running the notebooks #### Run-time error "the reconstruction engine output may provide more information" When running the SIRF notebooks, you might encounter an error message saying "*the reconstruction engine output may provide more information*" - so where is this "*reconstruction engine*" and where you can you get "*more information*". The short answer is: nowhere, but the text above that error messge is hopefully helpful enough to find out what is wrong. The long answer is a bit more complicated and depends on how you are running the notebooks. So here are some possible cases: ##### MR notebooks The *reconstruction engine* then refers to Gadgetron * You have started Gadgetron via a terminal via Jupyter: go to its browser window. * You are running a notebook from a VM instance. Then you might get more information in the VM terminal where you started jupyter notebooks from. ##### PET notebooks The *reconstruction engine* then refers to STIR. By default, STIR will output to warnings to terminal where you started the jupyter notebook, but this is only visible on the VM. It is recommended to use the `MessageRedirector` mechanism illustrated in some of the notebooks. ##### `sirf.Reg` notebooks or functionality The *reconstruction engine* then refers to NiftyReg (or niftiio). This might output to warnings to terminal where you started the jupyter notebook, but this is only visible on the VM. ### Q: I need to reset my JupyterHub passwords **A**: This can't be done by the user, please add your user-id above and we can reset it for you ### Q: Docker: the `pull` fails or times-out Probably best to try again after a while, but you can avoid the large download by building the docker image yourself. Try ``` ./sirf-compose-server build sirf # get some coffee ./sirf-compose-server up -d sirf ``` It will still do some downloads, but they should be a lot smaller in size. ### Q: Will this live chat (HACKMD) be unavailable after the school is completed? **A**: The result of the training school (i.e. whatever text is here when it finishes) will remain frozen, but we won't be here editing/answering questions anymore. This site is only for the training school. So how will I be able to communicate with your group? **A**: For software issues, Github is the best place. There is also http://www.ccpsynerbi.ac.uk/contacts.html and https://www.ccpi.ac.uk/contact Ash: Just to add - the User's list for SIRF and CIL are each very friendly, they are a great place to continue after the school. Github is best only for software bugs, not general issues. ### Q: Have SIRF and CIL been run on MATLAB? **A** SIRF can be run on MATLAB, it is supported. CIL is only python. ## Your questions If you have a question related to the above, please enter it below (click on "Edit"). Please do not modify the text above. ### Q: How do I reset results from a notebook? You can clear all output in Jupyter by selecting from the menu "Cell" -> "All Output" -> "Clear". Then you should restart the Python kernel, "Kernel" -> "restart". If you have previously pressed the Save and Checkpoint option on the File menu, then you can revert to a previous checkpoint. You can also delete the working folder associated with the notebook by navigating to the `working_folder` (on the cloud, this is `SIRF-Exercises/working-dir`, on other systems, `SIRF-Exercises/data/working_folder`, finding the notebook directory, selecting the checkbox next to it, and clicking the red bin icon.) We can't support fully "resetting" your notebook if you changed the code. (If you are a familiar git user you could `git restore` the file, but this is advanced) ### Q: Docker: my docker instance fails to start on a Mac After running `“./sirf-compose-server up -d sirf” ` I cannot access any notebook on `http://localhost:9999`. I ran `docker logs -f sirf` which returns ``` “Creating sirfuser:501:20 addgroup: The GID `20' is already in use. adduser: The group `sirfuser' does not exist. addgroup: The user `sirfuser' does not exist. Updating file ownership for /home/sirfuser chown: invalid user: ‘sirfuser:sirfuser’ Switching to sirfuser and executing /usr/local/bin/service.sh error: failed switching to "sirfuser": unable to find user sirfuser: no matching entries in passwd file” ``` This was a problem with the docker image released for version 3.1.0. If you have this problem, you have 2 choices: - Use the work-around in https://github.com/SyneRBI/SIRF-SuperBuild/issues/606 - **Update 2 July**. There are new Docker images on DockerHub from about 19:00 2nd of July. Try to update your docker image: ``` docker pull synerbi/sirf:service ``` and then follow normal instructions. ### Q: What is the Difference between ISMRMRD and DICOM ISMRMRD is a format for raw k-space data, DICOM is a format for the exchange of clinical images. DICOM is very robust and widely supported, but it isn't designed to handle raw data. Side note: the only modality where raw data is supported by DICOM is SPECT (at least as far as Kris knows) ### Q: What would like to get out of this school? A: - To learn the best way to get started with CIL. ### Q: The repositories found by GitHub for SyneRBI are not all that described by Prof. Atkinson's video. **A**: Hi, David here. The repo address is: https://github.com/SyneRBI/SIRF-SuperBuild **A**: Unfortunately the search utility of Github is not very good... This is why it does not show up, not much we can do about that. **A**: Also note that you can see a list of all of the SyneRBI repos at the SyneRBI organisation page on github: https://github.com/SyneRBI ### Q: If we install the Virtual Machine, can we access the notebooks through the password virtual? Or is the cloud access not possible due to the huge number of participants? **A**: `virtual` is the password for the VM and for jupyter from the VM. **A**: We recommend you using the cloud servers as they should have everything (software and exercises) ready for you. If you are having trouble signing in or launching a server let us know here, or join the tech support session at 2pm GMT+1 today (tuesday 29th). You'll set your own password when you first sign in with your cloud user ID. ### Q: When I re-execute a cell (for example to re-name a variable) I sometimes get an Error message "ERROR:root:Internal Python error in the inspect module." When I restart the Kernel, everything works again. Do you have any suggestions to prevent this? ``` ERROR:root:Internal Python error in the inspect module. Below is the traceback from this internal error. Traceback (most recent call last): File "/usr/local/lib/python3.6/dist-packages/IPython/core/interactiveshell.py", line 3343, in run_code exec(code_obj, self.user_global_ns, self.user_ns) File "<ipython-input-24-87ed02c08921>", line 1, in <module> slice_num = img.shape[0]//2 File "/home/sirfuser/devel/install/python/sirf/STIR.py", line 574, in shape return self.dimensions() <snip> File "/usr/lib/python3.6/posixpath.py", line 383, in abspath cwd = os.getcwd() FileNotFoundError: [Errno 2] No such file or directory MANY MORE LINES OF ERROR FOLLOW ``` **A**: The error in the title is not the real error, its a problem with ipython handling the error badly. A cause for this error (and others) can be that you have more than one notebook open. If you want to have the notebooks open, you need to make sure that only one of them runs. You can shut down a notebook without closing it by going to Kernel-> shutdown in the notebook menu. Q cont'd. Does this relate to notebooks run directly from, say Spider, or from a web browser? Personally, I often have old notebooks open in browser tabs without any problem. **A**: (Kris) I'm not sure why this occurs. It is *not* an issue with multiple MR notebooks, as the above error mentions `STIR`. The strange thing is that it mentions at the end that `cwd = os.getcwd()` failed. ***A***: (Kris) I now think this is happening in notebooks (such as `display_and_projection`) that first remove any previously existing data ``` shutil.rmtree('./brain',True) ``` If you run this in one Python instance, the other will having a "dangling" reference to a folder that no longer exists (even if there's one with the same name) ### Q: Question about MRI I watched the video dealing with MRI (probably an old one). The video discusses two techniques to speed up image reconstruction (SENSE, GRAPPA). My question is about GRAPPA. The K-space is known to be conjugate symmetrical. Therefore, we might get away with filling out just 1/4 or 1/2 of it by MR acquisitions. While the remainder can be filled out by applying its conjugate symmetry property. GRAPPA seems to exploit some K-space property but not its conjugate symmetry. Can you please explain why the conjugate symmetry property is not a convenient one for accelerating image reconstruction? Thank you. A. The conjugate symmetry is used in a method sometimes called partial Fourier. It is limited to a speed-up of a less than 2. Also, k-space only has conjugate symmetry if the object is real and in practice, various MR effects mean the object has a non-zero imaginary component (i.e. some phase). To make use of conjugate symmetry, there has to be some undoing of phase variations across the image and to get the information for that correction and the reconstruction, a little over half of k-space needs to be acquired - hence the speed-up is less than 2. Nevertheless, it is a useful method used in practice. Another way of looking at this is to note that reconstructions from undersampled data need some kind of additional knowledge. In the case of partial Fourier, you are using the knowledge about object being real (after corrections). For SENSE and GRAPPA, you are using the extra spatial information provided by the use of many coil elements. ### Q: Question about docker on Mac I managed to clone SIRF-SuperBuild. I ran `./sirf-compose-server-gpu up -d sirf` in a terminal window. It completed successfully. However, I could not perform the next step "Open a browser at http://localhost:9999" **A**: (Kris) On Mac, Docker does not allow access to the GPU as far as I know. Please use ``` ./sirf-compose-server-gpu down docker pull synerbi/sirf:service ./sirf-compose-server up -d sirf ``` You probably want to clean-up the GPU image ``` docker image prune ``` ### Q: Is there a way to install CIL with GPU support on Windows 10? For actual use after the course. **A**: If you only want CIL (and not SIRF) check: https://github.com/TomographicImaging/CIL#installation You can install CIL with GPU support on Windows 10. We suggest to install CIL via conda with the engine TIGRE as well, which is available as conda package in the `ccpi` conda channel. The following command should let you install CIL with TIGRE and [CCPi-Regularisation](https://github.com/vais-ral/CCPi-Regularisation-Toolkit) toolkit and [TomoPhantom](https://github.com/dkazanc/tomophantom). ``` conda create --name cil -c conda-forge -c ccpi \ cil ccpi-regulariser tigre tomophantom ``` **Q cont'd** Thanks! Could you elaborate a bit on the differences between TIGRE and ASTRA? Ie. why is ASTRA usually preferred? Is there anything TIGRE can't do? I know there is ASTRA for Windows, eg in Matlab. **A** In CIL we use different engines (currently TIGRE and ASTRA) to perform forward and back projections, i.e. going from the image space to acquisition space and viceversa respectively. In this way we abstract the user from the the need to understand how to use the 2 engines: you just need to set up your `AcquisitionGeometry` and CIL will make sure that it corresponds to a valid ASTRA or TIGRE geometry. There are many differences between the 2 packages: 1. License: ASTRA is GPLv3 (viral license) and TIGRE is BSD. GPL licenses force you to license any code that you may redistribute with the same GPL license. 2. TIGRE has a better memory management for large datasets. This has some impact in performance with smaller datasets. As a rule of thumb, ASTRA will be faster for datasets smaller than `512^3`. (Note from Ander, developer of TIGRE: at smaller than 512^3 the total time is not too large anyway, less than a second per projection.) 3. TIGRE can be easily built on Linux and Windows. ASTRA > 1.8.3 cannot be built without significant work on Windows. `conda` packages for ASTRA are available for windows only up to 1.8.3. 4. TIGRE is only GPU and ASTRA has also some CPU projectors. 5. TIGRE projectors are documented [here](http://iopscience.iop.org/article/10.1088/2057-1976/2/5/055010) and [here](https://www.sciencedirect.com/science/article/pii/S0743731520303336). However, if you are worried about capabilities, ASTRA and TIGRE projectors should be both be able to do the same things. Currently CIL wraps only cone-beam geometry with TIGRE, while with ASTRA we can also do parallel-beam. ### Q: Why does SIRF need to connect to http://localhost:9999 port while running locally on a PC or laptop? The material of the course is in the form of [jupyter notebooks](https://jupyter-notebook.readthedocs.io/en/stable/notebook.html): The Jupyter notebook combines two components: - **A web application**: a browser-based tool for interactive authoring of documents which combine explanatory text, mathematics, computations and their rich media output. - **Notebook documents**: a representation of all content visible in the web application, including inputs and outputs of the computations, explanatory text, mathematics, images, and rich media representations of objects. To run the course material **only the users of the VM** need to manually start the [`jupyter`](https://jupyter.readthedocs.io/en/latest/running.html) server. This is done by typing in a terminal: ``` jupyter notebook ``` In the docker instance and in the STFC cloud, the jupyter server is already running. **To connect to the jupyter server** you need to use a browser from the **host** machine, i.e. your laptop and point to the following websites, depending on the solution you are running: - https://training.jupyter.stfc.ac.uk for the STFC cloud (suggested) - http://localhost:8888 or http://127.0.0.1:8888 for the VirtualBox VM - http://localhost:9999 or http://127.0.0.1:9999 for the docker image Strictly speaking SIRF and CIL do not require to connect to internet to work but the school material is only accessible via the jupyter server. ### Q: I want to use SIRF and CIL from MATLAB rather than Python. How can I do that? **A:** this will be possible only for SIRF as **CIL is mainly written in Python** and does not exist as MATLAB toolbox. To achieve this, **you will need to build SIRF from source to interface to MATLAB**, you will need to go to https://github.com/SyneRBI/SIRF-SuperBuild and follow instructions of compiling there. This can be a challenge, and it's out of scope for this training school. Feel free to try it and open Issues with your problems in the Github page, whenever you try it. ### Q: Which functions are needed to use Deep Learning for MR Quantitative Imaging? Does it need SIRF or also CIL? **A**: CIL is only for the CT reconstruction part. SIRF does PET and MR. However, depends on what you want to do DL on, you may not need any, and just use the Deep Learning toolbox we will use, TensorFow (or others). Most DL is done in python, and we will teach how to use the basics of the python ones. Ash: These will be covered in more detail in Week 3 :) ### Q: "Fully Sampled Reconstruction" Is "pMR" a Class? It is a silly question due to my shallow experience with Python. Is "pMR" a Class? It looks like "FullySampledReconstructor" is a method of Class "pMR"...? **A** It is not a silly question. `pMR` is what Python terms a ["module"](https://docs.python.org/3/tutorial/modules.html), you can think of this as an imported file. `import sirf.Gadgetron as pMR` imports the `Gadgetron` module from the `sirf` module, and names it `pMR`. However, when we import in Python we have no way of knowing if we're importing a variable/object, class, module, etc, without inspecting the object (`type(pMR)`). ### Q: Execution error. a_fully_sampled after restart I tried to run the demo "a_fully_sampled" I received a phone call and interrupted the step-by-step execution. When I resumed the server was down. I logged out and in again and restarted the kernel. I got the following error ``` error: ??? "'Server running Gadgetron not accessible' exception caught at line 207 of /opt/SIRF-SuperBuild/sources/SIRF/src/xGadgetron/cGadgetron/gadgetron_x.cpp; the reconstruction engine output may provide more information" ``` I would like to restart from a clean start. What shall I do? **A** (Kris) I believe you have to restart `gadgetron` whenever you restart the server. ### Q: How to get CIL datasets on the VM I have tried to use the CIL notebooks on the VM but I am not sure how to download the datasets... **A** This is currently described at the following links for the notebooks of [week 1](https://github.com/TomographicImaging/CIL-Demos/blob/readmes/training/2021_Fully3D/Week1/README.md), [week 2](https://github.com/TomographicImaging/CIL-Demos/blob/readmes/training/2021_Fully3D/Week2/README.MD) and [week 3](https://github.com/TomographicImaging/CIL-Demos/blob/readmes/training/2021_Fully3D/Week3/README.MD). Please notice that the datasets are relatively big, up to 10 Gb each. Also notice that the VM does not have access to a GPU and I would not advice to try the big datasets without! Should you have a machine with GPU and you only want CIL you may install it via [conda](https://github.com/TomographicImaging/CIL#installation), this should be available for linux and Windows. ### Questions about the Gadgetron * How can I restart the Gadgetron on STFC cloud? It is started by some command / method used in the notebook I am running. * How could I restart the Gadgetron on my Mac assuming I will get it working (fingers crossed)? Have a look at [this](https://hackmd.io/kZx9QmOSRUWQEUtGprZujw?both#Question-How-can-I-run-the-internet-on-my-Virtual-Machine-I-have-it-installed-but-I-get-stuck-when-it-comes-to-running-gadgetron-on-my-terminal-and-opening-a-jupyter-notebook-I-tried-on-activities-but-I-cannot-find-any-application-which-leads-me-to-internet-through-the-VM) explanation. On a Mac, if you are using Docker to serve Jupyter notebooks, you do not need to start Gadgetron (it is already running in the Docker container). In other cases, you need to open a terminal window and type `gadgetron`. If you get an error message about port 9002 in use, then this probably means that you have a gadgetron already running and using port 9002. ### Q: What image formats are supported by CIL? Is there any common image format for the three platforms (PET, MRI and CT)? **A**: About common image formats: No, other than using standard python tools, like pickle, or storing the np.array data. This is because each modality has its own requirements in information (e.g. CT needs distance from source and detector, but PET scanners are static). In particular, for measured (or "raw" data) there is no formal standard for PET and CT, so each manufacturer/scanner saves the data in a different way. (Edo) For CIL we provide native readers, i.e. readers that will read in the data and provide AcquisitionData and/or ImageData for the following formats: - NeXuS file, i.e. a form of HDF5 file for synchrotron data - Nikon `xtekct` to read dataset exported by Nikon XTEK scanners - ZEISS `txrm` to read dataset created by XCT scanner from ZEISS - TIFF stacks, the user needs to provide the appropriate geometry - Any format that can be read as numpy array, provided that the user defines an appropriate geometry. In particular the [CILViewer](https://github.com/vais-ral/CILViewer) allows reading in files with the [VTK](https://vtk.org) toolkit, e.g. [NIfTI](https://nifti.nimh.nih.gov/nifti-1/). But currently the user will have to provide a suitable geometry and manually create the AcquisitionData or ImageData. For SIRF we provide native readers for: - ISMRMRD MR file format (raw data as well as reconstruction images) - PET Interfile (raw data as well as reconstruction images), with some minor header manipulation we read Siemens Interfile - General Electric RDF (version 9) (raw data) - [NIfTI](https://nifti.nimh.nih.gov/nifti-1/) for (reconstructed) images - Other image formats supported by ITK can be read via `sirf.STIR` (if STIR is compiled with ITK support, as is done in the VM, docker and the cloud). - PET GATE ROOT data if STIR is compiled with ROOT support (needs self-build and some manipulation of the STIR options) ### Q: Is there a NUFFT operator available in SIRF? **A:** (Christoph) Yes, NUFFT is available via Gadgetron for MR data. We will discuss non-Cartesian MR image reconstruction in more detail on Friday (9th of July) ## User Specific Questions ### Typo I found the following command contains a typo: "# check what is running in the container" docker exec -w / ps aux I think the "/" should be "|" indicating a process concatenation **A** No, `/` is right. The `-w` argument to `docker exec` selects the working directory. This runs the `ps aux` command inside the docker container, in the `/` directory. However, you are correct that the command listed is incorrect and should be ``` docker exec -w / sirf ps aux ``` Also, the `-w /` is actually no longer needed for this command. [Now corrected](https://github.com/SyneRBI/SIRF-SuperBuild/commit/2b88d35834863420db53836816fa39b2442c0d16). thanks! Please note that this command will only work if the container is running. ### Q: Current situation on Mac I got the following directories that are on the same level. I think they should be maybe nested? SIRF-Exercises-master SIRF-SuperBuild Should the folder "SIRF-Exercises-master" be moved inside the folder "docker"? Or shall I create a link? **A:** For docker you only need the `SIRF-SuperBuild` tree. If you run `sirf-service` docker image, it will clone the `SIRF-Exercises` in the `SIRF-SuperBuild/docker/devel` folder. You can remove the `SIRF-Exercises-master` folder. ### Q: I tried the follwing command but it failed: ``` mauramonville@Mauras-MacBook-Pro docker % ./service.sh docker image ``` **A**: The `service.sh` etc scripts should not be run you (they will be run by the docker instance on start-up). The only scripts in the `SIRF-SuperBuild/docker` folder that you should execute are the `sirf-compose*` ones. (Apologies, we know this is confusing). **Another Piece of info** This is the question Docker is asking: ``` mauramonville@Mauras-MacBook-Pro docker % ./sirf-compose-server up -d sirf Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? ``` **A**: To the best of our knowledge, this is a confusing error message by Docker. The Mac version does not seem run a daemon. Instead, you have to run the Docker Desktop before typing any `docker` commands in the terminal (as suggested on https://stackoverflow.com/a/44719239/15030207) #### Question for Prof. Atkinson # The Operating system on my Mac is: **macOS Big Sur version 11.4** Do you have the same operating system and same version? Thank you A. (David) My MacBook Pro is running macOS Catalina version 10.15.7. ### Question: How can I run the internet on my Virtual Machine? I have it installed, but I get stuck when it comes to running gadgetron on my terminal and opening a jupyter notebook. I tried on activities, but I cannot find any application which leads me to internet through the VM. **To connect to the jupyter server** you need to use a browser from the **host** machine, i.e. your laptop and point to the following websites, depending on the solution you are running: - https://training.jupyter.stfc.ac.uk for the STFC cloud (suggested) - http://localhost:8888 or http://127.0.0.1:8888 for the VirtualBox VM - http://localhost:9999 or http://127.0.0.1:9999 for the docker image If you want to use more applications than installed on the VM, you need to install them from a terminal inside the VM. For instance ``` sudo apt install firefox ``` will give you an internet browser. See also the [VM usage instructions for installing full Gnome applications](https://github.com/SyneRBI/SyneRBI_VM/blob/master/documentation/Basic-usage.md#gnome-3) ### Q why bash not work I try it many times and in both CPU and without CPU. ![](https://i.imgur.com/Yt2vVBB.jpg) **A** The bash terminal has started in your screenshot. You are in your home directory and can navigate around using bash commands