Skip to content

Update dev instructions#2286

Open
paskino wants to merge 24 commits intoTomographicImaging:masterfrom
paskino:update_dev_instructions
Open

Update dev instructions#2286
paskino wants to merge 24 commits intoTomographicImaging:masterfrom
paskino:update_dev_instructions

Conversation

@paskino
Copy link
Copy Markdown
Contributor

@paskino paskino commented Feb 2, 2026

Description

  • Updates instructions on local build of CIL.
    • README
    • Developer's guide
  • Updates to FindIPP.cmake to find IPP libraries on Windows

Example Usage

Contribution Notes

  • The content of this Pull Request (the Contribution) is intentionally submitted for inclusion in CIL (the Work) under the terms and conditions of the Apache-2.0 License
  • I confirm that the contribution does not violate any intellectual property rights of third parties

Changes

  • README.md
  • Updates the build script as locally I noticed that IPP was not found unless -Ccmake.define.IPP_ROOT=$CONDA_PREFIX was passed
  • Created environment files:

Testing you performed

Please add any demo scripts to https://github.com/TomographicImaging/CIL-Demos/tree/main/misc

Local build on:

  • Linux
  • mac ARM
  • Windows

Checked the artifact documentation produced by GHA.

Linux

On Linux a total of 43 tests are skipped:

test_aqdata_full_tigre (test_DataProcessor.TestBinner.test_aqdata_full_tigre) 
test_pad_id_full_tigre (test_DataProcessor.TestPadder.test_pad_id_full_tigre) 
test_aqdata_full_tigre (test_DataProcessor.TestSlicer.test_aqdata_full_tigre) 
test_linearity (test_PluginsTigre_Siddon.Test_Parallel2D_Projectors_toy_tigre.test_linearity) TIGRE backprojector weights bug
test_norm (test_PluginsTigre_Siddon.Test_Parallel2D_Projectors_toy_tigre.test_norm) TIGRE backprojector weights bug
test_linearity (test_PluginsTigre_Siddon.Test_Parallel3D_Projectors_toy_tigre.test_linearity) TIGRE backprojector weights bug
test_norm (test_PluginsTigre_Siddon.Test_Parallel3D_Projectors_toy_tigre.test_norm) TIGRE backprojector weights bug
test_linearity (test_PluginsTigre_interpolated.Test_Parallel2D_Projectors_toy_tigre.test_linearity) TIGRE backprojector weights bug
test_norm (test_PluginsTigre_interpolated.Test_Parallel2D_Projectors_toy_tigre.test_norm) TIGRE backprojector weights bug
test_linearity (test_PluginsTigre_interpolated.Test_Parallel3D_Projectors_toy_tigre.test_linearity) TIGRE backprojector weights bug
test_norm (test_PluginsTigre_interpolated.Test_Parallel3D_Projectors_toy_tigre.test_norm) TIGRE backprojector weights bug
test_geometry_gpu (test_io.TestZeissDataReader.test_geometry_gpu) Missing prerequisites: has_file False, has_olefile True has_dxchange True
test_import_error (test_io.TestZeissDataReader.test_import_error) This unit test runs only if dxchange is not installed: has_dxchange True
test_read_and_reconstruct_2D_gpu (test_io.TestZeissDataReader.test_read_and_reconstruct_2D_gpu) Missing prerequisites: has_file False, has_olefile True has_dxchange True, has_astra True has_wget True
test_read_txm_recon_file_gpu (test_io.TestZeissDataReader.test_read_txm_recon_file_gpu) Missing prerequisites: has_file False, has_recon_file False has_olefile True has_dxchange True, has_astra True has_wget True

Plus these which test compatibility with SIRF (which is not installed)

test_TNV_call_works (test_SIRF.TestPETRegularisation.test_TNV_call_works) TNV not implemented for 2D
test_TNV_proximal_works (test_SIRF.TestPETRegularisation.test_TNV_proximal_works) TNV not implemented for 2D
test_SIRF_CIL_MLEM (test_SIRF.TestCILSIRFPrecond.test_SIRF_CIL_MLEM) Skipping as SIRF is not available
test_Gradient (test_SIRF.TestGradientMR_2D.test_Gradient) Skipping as SIRF is not available
test_TVdenoisingMR (test_SIRF.TestGradientMR_2D.test_TVdenoisingMR) Has SIRF
test_Gradient (test_SIRF.TestGradientPET_2D.test_Gradient) Skipping as SIRF is not available
test_Gradient (test_SIRF.TestGradientPET_3D.test_Gradient) Skipping as SIRF is not available
test_FGP_TV_call_works (test_SIRF.TestMRRegularisation.test_FGP_TV_call_works) Has SIRF and CCPi Regularisation
test_FGP_TV_proximal_works (test_SIRF.TestMRRegularisation.test_FGP_TV_proximal_works) Has SIRF and CCPi Regularisation
test_TGV_call_works (test_SIRF.TestMRRegularisation.test_TGV_call_works) Has SIRF and CCPi Regularisation
test_TGV_proximal_works (test_SIRF.TestMRRegularisation.test_TGV_proximal_works) Has SIRF and CCPi Regularisation
test_TNV_call_works (test_SIRF.TestMRRegularisation.test_TNV_call_works) Has SIRF and CCPi Regularisation
test_TNV_proximal_works (test_SIRF.TestMRRegularisation.test_TNV_proximal_works) Has SIRF and CCPi Regularisation
test_FGP_TV_call_works (test_SIRF.TestPETRegularisation.test_FGP_TV_call_works) Has SIRF and CCPi Regularisation
test_FGP_TV_proximal_works (test_SIRF.TestPETRegularisation.test_FGP_TV_proximal_works) Has SIRF and CCPi Regularisation
test_TGV_call_works (test_SIRF.TestPETRegularisation.test_TGV_call_works) Has SIRF and CCPi Regularisation
test_TGV_proximal_works (test_SIRF.TestPETRegularisation.test_TGV_proximal_works) Has SIRF and CCPi Regularisation
test_FGP_TV_call_works (test_SIRF.TestRegRegularisation.test_FGP_TV_call_works) Has SIRF and CCPi Regularisation
test_FGP_TV_proximal_works (test_SIRF.TestRegRegularisation.test_FGP_TV_proximal_works) Has SIRF and CCPi Regularisation
test_TGV_call_works (test_SIRF.TestRegRegularisation.test_TGV_call_works) Has SIRF and CCPi Regularisation
test_TGV_proximal_works (test_SIRF.TestRegRegularisation.test_TGV_proximal_works) Has SIRF and CCPi Regularisation
test_TNV_call_works (test_SIRF.TestRegRegularisation.test_TNV_call_works) Has SIRF and CCPi Regularisation
test_TNV_proximal_works (test_SIRF.TestRegRegularisation.test_TNV_proximal_works) Has SIRF and CCPi Regularisation
test_BlockDataContainer_with_SIRF_DataContainer_add (test_SIRF.TestSIRFCILIntegration.test_BlockDataContainer_with_SIRF_DataContainer_add) Has SIRF
test_BlockDataContainer_with_SIRF_DataContainer_divide (test_SIRF.TestSIRFCILIntegration.test_BlockDataContainer_with_SIRF_DataContainer_divide) Has SIRF
test_BlockDataContainer_with_SIRF_DataContainer_multiply (test_SIRF.TestSIRFCILIntegration.test_BlockDataContainer_with_SIRF_DataContainer_multiply) Has SIRF
test_BlockDataContainer_with_SIRF_DataContainer_subtract (test_SIRF.TestSIRFCILIntegration.test_BlockDataContainer_with_SIRF_DataContainer_subtract) Has SIRF

Windows

======================================================================
FAIL: test_set_up (test_algorithms.TestLSQR.test_set_up)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\Users\ofn77899\Dev\CIL\Wrappers\Python\test\test_algorithms.py", line 2059, in test_set_up
    self.assertAlmostEqual(lsqr.beta,  beta, 5 )
AssertionError: 96.19578 != 96.19578622941998 within 5 places (8.33635357366802e-06 difference)

----------------------------------------------------------------------
Ran 1125 tests in 226.381s

FAILED (failures=1, skipped=43)

Related issues/links

Checklist

  • I have performed a self-review of my code
  • I have added docstrings in line with the guidance in the developer guide
  • I have updated the relevant documentation
  • I have implemented unit tests that cover any new or modified functionality
  • CHANGELOG.md has been updated with any functionality change
  • Request review from all relevant developers

@paskino paskino added this to UM 2026 Feb 2, 2026
@github-project-automation github-project-automation bot moved this to Todo in UM 2026 Feb 2, 2026
@paskino paskino moved this from Todo to In Progress in UM 2026 Feb 2, 2026
@paskino paskino marked this pull request as ready for review February 6, 2026 20:43
@paskino paskino requested a review from a team as a code owner February 6, 2026 20:43
@paskino paskino requested review from casperdcl, gfardell and lauramurgatroyd and removed request for a team February 6, 2026 20:44
Added information about creating a shallow clone with --depth parameter.
Comment thread docs/source/developer_guide.rst Outdated
- Command
- Status
* - Linux
- ``conda env create -f https://tomographicimaging.github.io/scripts/env/cil_development.yml``
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For anyone else who is testing the files are here and you need to use them instead of the url:

https://github.com/TomographicImaging/scripts/pull/9/changes

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's right, I didn't want to link to a PR, so I wrote the link as it will be once #9 is merged

Comment thread docs/source/developer_guide.rst Outdated
Copy link
Copy Markdown
Member

@casperdcl casperdcl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

a bit concerned about:

  • repetition in README.md & developer_guide.rst (would prefer one to link to the other)
  • lack of mention of conda env names (create --name <env_name> && activate <env_name)

Comment thread README.md Outdated
Comment thread src/Core/cmake/FindIPP.cmake Outdated
Comment thread docs/source/developer_guide.rst
Comment thread docs/source/developer_guide.rst Outdated
Comment thread recipe/bld.bat Outdated
Comment thread recipe/build.sh Outdated
Comment thread README.md Outdated
Comment thread docs/source/developer_guide.rst Outdated
Comment thread docs/source/developer_guide.rst Outdated
Comment thread README.md Outdated
Comment thread README.md Outdated
Comment thread docs/source/developer_guide.rst Outdated
Signed-off-by: Casper da Costa-Luis <casper.dcl@physics.org>
@gfardell gfardell added this to the v26.0 milestone Apr 1, 2026
Comment thread docs/source/developer_guide.rst Outdated
Co-authored-by: Nalin Gupta <nalin.gupta3142@gmail.com>
Signed-off-by: Laura Murgatroyd <60604372+lauramurgatroyd@users.noreply.github.com>
Comment thread src/Core/cmake/FindIPP.cmake Outdated
Comment thread README.md
bash ./scripts/create_local_env_for_cil_development.sh
```

Or with the CIL build and test dependencies:
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we remove the batch script file itself if we no longer recommend to use it?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have done this, please let me know if ok

Comment thread README.md Outdated
Comment thread README.md

You can achieve this in two ways:

1. by opening a "Developer Command Prompt for Visual Studio" and activating the conda environment from there. This requires you
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
1. by opening a "Developer Command Prompt for Visual Studio" and activating the conda environment from there. This requires you
1. by opening a "Developer Command Prompt for VS" and activating the conda environment from there. This requires you

I do not have anything called "Developer Command Prompt for Visual Studio"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please can you check the name of yours @paskino , I wonder if its a typo or if the name of the program is different in different versions

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

x64 Native Tools Command Prompt for VS
might be the better option here?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes that's what mine is called, and was in my original instructions

Comment thread docs/source/developer_guide.rst Outdated
Comment thread docs/source/developer_guide.rst
Comment thread README.md Outdated
Comment thread docs/source/developer_guide.rst

If you are developing on Windows with conda, you need to have access to both the Visual Studio compiler and the conda environment.

You can achieve this in two ways:
Copy link
Copy Markdown
Member

@lauramurgatroyd lauramurgatroyd Apr 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just retested and found the instructions below worked for me, so I am happy that they are correct provided we state versions we tested with. I added the version of Visual Studio I had, as a suggested change Any other versions we should include a note of?

@lauramurgatroyd
Copy link
Copy Markdown
Member

lauramurgatroyd commented Apr 10, 2026

Hi @paskino I am going to take over your branch. I will merge in my suggestions from yesterday, just leaving the questions I had.

In stand-up today we agreed to remove duplication and have all of the content in the developer guide, and the README linking to the developer guide. I will make this change.

lauramurgatroyd and others added 7 commits April 10, 2026 12:02
Co-authored-by: Casper da Costa-Luis <casper.dcl@physics.org>
Co-authored-by: Laura Murgatroyd <60604372+lauramurgatroyd@users.noreply.github.com>
Co-authored-by: Edoardo Pasca <14138589+paskino@users.noreply.github.com>
Signed-off-by: Laura Murgatroyd <60604372+lauramurgatroyd@users.noreply.github.com>
@lauramurgatroyd
Copy link
Copy Markdown
Member

Some screenshots of the rendered developer guide:
image

image image

@lauramurgatroyd
Copy link
Copy Markdown
Member

Hi, this PR is now ready for review again. I actioned the changes I suggested. Please see the unresolved threads for open questions.

@lauramurgatroyd lauramurgatroyd moved this from Blocked to Priority review in CIL work Apr 15, 2026
@lauramurgatroyd lauramurgatroyd removed the request for review from hrobarts April 15, 2026 10:07
Copy link
Copy Markdown
Member

@gfardell gfardell left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm confused by the environment file links not working, maybe they are in an unmerged PR?

However, I would have thought that using the environment files that ship with CIL is good enough as users will need to clone the repositories by default. Was there a reason to move away from that?

Comment thread scripts/requirements-test-windows.yml Outdated
Comment thread CHANGELOG.md
- cvxpy maximum version set to 1.7.5 to fix #2303 (#2304)
- Documentation:
- Render the user showcase notebooks in the documentation (#2189)
- Update on build instructions in README and developer guide for all OS
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also find IPP change?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adds conda environment paths to find IPP command in cmake?

Comment thread docs/source/developer_guide.rst
Comment thread docs/source/developer_guide.rst
Comment thread docs/source/developer_guide.rst Outdated
Comment thread docs/source/developer_guide.rst Outdated
Comment thread docs/source/developer_guide.rst Outdated

You can achieve this in two ways:

1. by opening a "Developer Command Prompt for Visual Studio" and activating the conda environment from there. This requires you
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

x64 Native Tools Command Prompt for VS
might be the better option here?

Comment thread docs/source/developer_guide.rst
Co-authored-by: Gemma Fardell <47746591+gfardell@users.noreply.github.com>
Signed-off-by: Laura Murgatroyd <60604372+lauramurgatroyd@users.noreply.github.com>
@lauramurgatroyd
Copy link
Copy Markdown
Member

lauramurgatroyd commented Apr 16, 2026

I'm confused by the environment file links not working, maybe they are in an unmerged PR?

However, I would have thought that using the environment files that ship with CIL is good enough as users will need to clone the repositories by default. Was there a reason to move away from that?

This PR in scripts has the env file: https://github.com/TomographicImaging/scripts/pull/9/changes

I am not sure where they should live - we need to discuss what the purpose of https://github.com/TomographicImaging/scripts is

Signed-off-by: Casper da Costa-Luis <casper.dcl@physics.org>
Copy link
Copy Markdown
Member

@casperdcl casperdcl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We could also move scripts/requirements-test.yml to just environment.yml in the root.

@lauramurgatroyd
Copy link
Copy Markdown
Member

We will move the dev environment files into CIL, not host them in scripts, see: TomographicImaging/scripts#9 (review)

Co-authored-by: Gemma Fardell <47746591+gfardell@users.noreply.github.com>
Signed-off-by: Laura Murgatroyd <60604372+lauramurgatroyd@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Priority review

Development

Successfully merging this pull request may close these issues.

Instructions for developing CIL on windows are unclear

5 participants