-
Notifications
You must be signed in to change notification settings - Fork 36
Added a yml file to build the docker image #74
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
af49849
c2149da
863e7f7
1fa952c
7294bde
80c1663
602f17d
33acf99
dc9265d
7b2f0b8
ee2eb99
a4136f8
a6ddfb2
ea69e18
428095e
6fee6ed
1f6da96
17b98f8
12ae83f
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
name: Build and Run Docker | ||
on: | ||
push: | ||
branches: | ||
- main | ||
pull_request: | ||
types: [opened, synchronize, edited] | ||
branches: | ||
- main | ||
- "docker/**" | ||
jobs: | ||
build-and-run-docker: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout code | ||
uses: actions/checkout@v4 | ||
|
||
- name: Set up Python | ||
uses: actions/setup-python@v4 | ||
with: | ||
python-version: '3.x' | ||
|
||
- name: Install Python dependencies | ||
run: | | ||
python -m pip install --upgrade pip | ||
pip install -r requirements.txt | ||
|
||
- name: Generate input files | ||
run: | | ||
python -m Docker.generate_signal_docker_test | ||
|
||
- name: Verify input files | ||
run: | | ||
for file in ivim_simulation.nii.gz ivim_simulation.bval ivim_simulation.bvec; do | ||
if [ ! -f "$file" ]; then | ||
echo "Error: $file not found" | ||
exit 1 | ||
fi | ||
done | ||
echo "All input files generated successfully" | ||
|
||
- name: Set up Docker Buildx | ||
uses: docker/setup-buildx-action@v3 | ||
|
||
- name: Build Docker image | ||
Unique-Usman marked this conversation as resolved.
Show resolved
Hide resolved
|
||
run: | | ||
docker build -t tf2.4_ivim-mri_codecollection -f Docker/Dockerfile . | ||
Unique-Usman marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
- name: Run Docker container | ||
run: | | ||
docker run --rm --name TF2.4_IVIM-MRI_CodeCollection \ | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We should confirm that images are actually generated. Maybe not the exact values in the images, but even that the files we expect exist. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yeah, exactly. |
||
-v ${{ github.workspace }}:/usr/src/app \ | ||
-v ${{ github.workspace }}:/usr/app/output \ | ||
tf2.4_ivim-mri_codecollection ivim_simulation.nii.gz ivim_simulation.bvec ivim_simulation.bval | ||
|
||
- name: Verify output files | ||
run: | | ||
for file in f.nii.gz dp.nii.gz d.nii.gz; do | ||
if [ ! -f "$file" ]; then | ||
echo "Error: $file not found" | ||
exit 1 | ||
fi | ||
done | ||
echo "All output files generated successfully" | ||
|
||
- name: Clean up artifacts and Docker image | ||
run: | | ||
docker rmi tf2.4_ivim-mri_codecollection || true | ||
rm -f tf2.4_ivim-mri_codecollection.tar.gz | ||
rm -f ${{ github.workspace }}/f.nii.gz | ||
rm -f ${{ github.workspace }}/dp.nii.gz | ||
rm -f ${{ github.workspace }}/d.nii.gz | ||
rm -f ${{ github.workspace }}/ivim_simulation.nii.gz | ||
rm -f ${{ github.workspace }}/ivim_simulation.bval | ||
rm -f ${{ github.workspace }}/ivim_simulation.bvec | ||
- name: Cleanup Docker | ||
run: | | ||
docker system prune -a --force |
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What is the purpose of this file? It looks like it generates an image but I don't see it being used for anything. I was expecting to see the simulated image and associated files generated by this. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is the code I used for generating the signal which I was using for the docker. I did not make use of it because I already generated the images. I will restructured it to generate the images on the fly thereby making use of it in the build process. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
import numpy as np | ||
import nibabel as nib | ||
from utilities.data_simulation.GenerateData import GenerateData | ||
from WrapImage.nifti_wrapper import save_nifti_file | ||
|
||
|
||
def save_bval_bvec(filename, values): | ||
if filename.endswith('.bval'): | ||
# Convert list to a space-separated string for bval | ||
values_string = ' '.join(map(str, values)) | ||
elif filename.endswith('.bvec'): | ||
# Convert 2D list to a line-separated, space-separated string for bvec | ||
values_string = '\n'.join(' '.join(map(str, row)) for row in values) | ||
else: | ||
raise ValueError("Unsupported file extension. Use '.bval' or '.bvec'.") | ||
|
||
with open(filename, 'w') as file: | ||
file.write(values_string) | ||
|
||
# Set random seed for reproducibility | ||
np.random.seed(42) | ||
# Create GenerateData instance | ||
gd = GenerateData() | ||
|
||
# Generate random input data | ||
shape = (10, 10, 5) | ||
f_in = np.random.uniform(low=0, high=1, size=shape) | ||
D_in = np.random.uniform(low=0, high=1e-3, size=shape) | ||
Dp_in = np.random.uniform(low=0, high=1e-1, size=shape) | ||
S0 = 1000 # Setting a constant S0 for simplicity | ||
bvals = np.array([0, 50, 100, 500, 1000]) | ||
bvals_reshaped = np.broadcast_to(bvals, shape) | ||
|
||
# Generate IVIM signal | ||
signals = gd.ivim_signal(D_in, Dp_in, f_in, S0, bvals_reshaped) | ||
|
||
# Save the generated image as a NIfTI file | ||
save_nifti_file(signals, "ivim_simulation.nii.gz") | ||
# Save the bval in a file | ||
save_bval_bvec("ivim_simulation.bval", [0, 50, 100, 500, 1000]) | ||
# Save the bvec value | ||
save_bval_bvec("ivim_simulation.bvec", [[1, 0, 0], [0, 1, 0], [0, 0, 1]]) |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,5 @@ | ||
numpy<2 | ||
nibabel | ||
scipy | ||
torchio | ||
torch | ||
|
Uh oh!
There was an error while loading. Please reload this page.