diff --git a/.github/workflows/ci.yml b/.github/workflows/CI.yml similarity index 99% rename from .github/workflows/ci.yml rename to .github/workflows/CI.yml index db70c556d..6e0d0f6b2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/CI.yml @@ -9,7 +9,7 @@ on: tags: '*' jobs: ci: - if: "!contains(github.event.head_commit.message, '[skip ci]')" + if: ${{ !contains(github.event.head_commit.message, '[skip ci]') }} name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }} runs-on: ${{ matrix.os }} timeout-minutes: 60 diff --git a/.github/workflows/nightly.yml b/.github/workflows/CIPreRelease.yml similarity index 91% rename from .github/workflows/nightly.yml rename to .github/workflows/CIPreRelease.yml index 660bb1b9c..9f0151b6d 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/CIPreRelease.yml @@ -1,4 +1,4 @@ -name: Nightly +name: PreRelease on: pull_request: branches: @@ -8,8 +8,8 @@ on: - master tags: '*' jobs: - nightly: - if: "contains(github.event.head_commit.message, '[nightly]')" + prerelease: + if: ${{ contains( github.event.pull_request.labels.*.name, 'pre-release' ) }} name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }} runs-on: ${{ matrix.os }} timeout-minutes: 60 @@ -17,8 +17,8 @@ jobs: fail-fast: false matrix: version: - - 'nightly' # Latest version of Julia under development (you can expect many packages not to work with this version) - os: [ubuntu-latest, windows-latest, macos-latest] + - 'pre' # Latest version of Julia under development (you can expect many packages not to work with this version) + os: [ubuntu-latest, windows-latest, macos-12] # macos-latest] <- M1 Mac was generating problems #386, commented for now arch: [x64] include: - os: ubuntu-latest diff --git a/.gitignore b/.gitignore index c1ac5a914..74e393570 100644 --- a/.gitignore +++ b/.gitignore @@ -34,4 +34,5 @@ examples/5.koma_paper/comparison_accuracy/**/*.mrd examples/5.koma_paper/mrf/**/*.mrd examples/5.koma_paper/comparison_accuracy/**/*.mat examples/5.koma_paper/comparison_accuracy/**/*.h5 -!examples/5.koma_paper/Manifest.toml \ No newline at end of file +!examples/5.koma_paper/Manifest.toml +*_w.phantom \ No newline at end of file diff --git a/KomaMRIBase/Project.toml b/KomaMRIBase/Project.toml index 2b01ea8df..43b2a1b68 100644 --- a/KomaMRIBase/Project.toml +++ b/KomaMRIBase/Project.toml @@ -1,7 +1,7 @@ name = "KomaMRIBase" uuid = "d0bc0b20-b151-4d03-b2a4-6ca51751cb9c" authors = ["Carlos Castillo Passi "] -version = "0.8.4" +version = "0.9.0" [deps] Interpolations = "a98d9a8b-a2ab-59e6-89dd-64a1c18fca59" @@ -19,3 +19,6 @@ Parameters = "0.12" Pkg = "1.4" Reexport = "1" julia = "1.9" + +[workspace] +projects = ["test"] \ No newline at end of file diff --git a/KomaMRIBase/src/datatypes/Sequence.jl b/KomaMRIBase/src/datatypes/Sequence.jl index 5501040a2..1c192c6e0 100644 --- a/KomaMRIBase/src/datatypes/Sequence.jl +++ b/KomaMRIBase/src/datatypes/Sequence.jl @@ -154,8 +154,7 @@ Tells if the sequence `seq` has elements with ADC active, or active during time is_ADC_on(x::Sequence) = any(x-> x > 0, x.ADC.N) is_ADC_on(x::Sequence, t::AbstractVecOrMat) = begin N = length(x) - ΔT = durs(x) - ts = cumsum([0 ; ΔT[1:end-1]]) + ts = get_block_start_times(x)[1:end-1] delays = x.ADC.delay Ts = x.ADC.dur #delat+T t0s = ts .+ delays @@ -184,8 +183,7 @@ Tells if the sequence `seq` has elements with RF active, or active during time ` is_RF_on(x::Sequence) = any([sum(abs.(r.A)) for r = x.RF] .> 0) is_RF_on(x::Sequence, t::AbstractVector) = begin N = length(x) - ΔT = durs(x) - ts = cumsum([0 ; ΔT[1:end-1]]) + ts = get_block_start_times(x)[1:end-1] delays = x.RF.delay Ts = x.RF.dur #dur = delat+T t0s = ts .+ delays @@ -263,26 +261,6 @@ Tells if the sequence `seq` is a delay. """ is_Delay(x::Sequence) = !(is_GR_on(x) || is_RF_on(x) || is_ADC_on(x)) -""" - ΔT = durs(x::Sequence) - -Returns the array of durations of sequence's blocks in [s]. - -# Arguments -- `x`: (`::Sequence`) Sequence struct - -# Returns -- `ΔT`: (`::Vector{Real}`, `[s]`) array of durations of sequence's blocks -""" -durs(x::Sequence) = begin - # ΔT_GR = x.GR.dur - # ΔT_RF = x.RF.dur - # ΔT_ADC = x.ADC.dur - # ΔT_DUR = x.DUR - # ΔT = maximum([ΔT_GR ΔT_RF ΔT_ADC ΔT_DUR],dims=2) - x.DUR -end - """ T = dur(x::Sequence) @@ -294,7 +272,7 @@ The total duration of the sequence in [s]. # Returns - `T`: (`::Real`, `[s]`) total duration of the sequence """ -dur(x::Sequence) = sum(durs(x)) +dur(x::Sequence) = sum(x.DUR) """ T0 = get_block_start_times(seq::Sequence) diff --git a/KomaMRIBase/src/datatypes/sequence/ADC.jl b/KomaMRIBase/src/datatypes/sequence/ADC.jl index 8b46be643..99e8f3d2a 100644 --- a/KomaMRIBase/src/datatypes/sequence/ADC.jl +++ b/KomaMRIBase/src/datatypes/sequence/ADC.jl @@ -62,11 +62,11 @@ directly without the need to iterate elementwise. """ getproperty(x::Vector{ADC}, f::Symbol) = begin if f == :dur - T, delay = x.T, x.delay - ΔT = T .+ delay - ΔT + dur.(x) + elseif f in fieldnames(ADC) + getfield.(x, f) else - getproperty.(x, f) + getfield(x, f) end end diff --git a/KomaMRIBase/src/datatypes/sequence/Grad.jl b/KomaMRIBase/src/datatypes/sequence/Grad.jl index 456d6694f..56c398df7 100644 --- a/KomaMRIBase/src/datatypes/sequence/Grad.jl +++ b/KomaMRIBase/src/datatypes/sequence/Grad.jl @@ -182,34 +182,34 @@ Base.show(io::IO, x::Grad) = begin end """ - y = getproperty(x::Vector{Grad}, f::Symbol) - y = getproperty(x::Matrix{Grad}, f::Symbol) + y = getproperty(x::Array{Grad}, f::Symbol) Overloads Base.getproperty(). It is meant to access properties of the Grad vector `x` directly without the need to iterate elementwise. # Arguments -- `x`: (`::Vector{Grad}` or `::Matrix{Grad}`) vector or matrix of Grad structs +- `x`: (`::Array{Grad}`) vector or matrix of Grad structs - `f`: (`::Symbol`, opts: [`:x`, `:y`, `:z`, `:T`, `:delay`, `:rise`, `:delay`, `:dur`, `:A`, `f`]) input symbol that represents a property of the vector or matrix of Grad structs # Returns -- `y`: (`::Vector{Any}` or `::Matrix{Any}`) vector or matrix with the property defined +- `y`: (`::Array{Any}`) vector or matrix with the property defined by the symbol `f` for all elements of the Grad vector or matrix `x` """ -getproperty(x::Vector{Grad}, f::Symbol) = getproperty.(x, f) -getproperty(x::Matrix{Grad}, f::Symbol) = begin +getproperty(x::Array{Grad}, f::Symbol) = begin if f == :x - x[1, :] + @view x[1, :] elseif f == :y && size(x, 1) >= 2 - x[2, :] + @view x[2, :] elseif f == :z && size(x, 1) >= 3 - x[3, :] + @view x[3, :] elseif f == :dur - maximum(dur.(x); dims=1)[:] + dur(x) + elseif f in fieldnames(Grad) + getfield.(x, f) else - getproperty.(x, f) + getfield(x, f) end end @@ -221,17 +221,15 @@ function Base.isapprox(gr1::Grad, gr2::Grad) end # Gradient operations -*(x::Grad, α::Real) = Grad(α * x.A, x.T, x.rise, x.fall, x.delay) -*(α::Real, x::Grad) = Grad(α * x.A, x.T, x.rise, x.fall, x.delay) -function *(A::Matrix{Float64}, GR::Matrix{Grad}) - N, M = size(GR) - return [sum(A[i, 1:N] .* GR[:, j]) for i in 1:N, j in 1:M] -end +# zeros(Grad, M, N) +Base.zero(::Type{Grad}) = Grad(0.0, 0.0) +# Rotation Base.zero(::Grad) = Grad(0.0, 0.0) -size(g::Grad, i::Int64) = 1 #To fix [g;g;;] concatenation of Julia 1.7.3 -/(x::Grad, α::Real) = Grad(x.A / α, x.T, x.rise, x.fall, x.delay) +*(α::Real, x::Grad) = Grad(α * x.A, x.T, x.rise, x.fall, x.delay) +(x::Grad, y::Grad) = Grad(x.A .+ y.A, x.T, x.rise, x.fall, x.delay) -+(x::Array{Grad,1}, y::Array{Grad,1}) = [x[i] + y[i] for i in 1:length(x)] +# Others +*(x::Grad, α::Real) = Grad(α * x.A, x.T, x.rise, x.fall, x.delay) +/(x::Grad, α::Real) = Grad(x.A / α, x.T, x.rise, x.fall, x.delay) -(x::Grad) = -1 * x -(x::Grad, y::Grad) = Grad(x.A .- y.A, x.T, x.rise, x.fall, x.delay) @@ -254,15 +252,16 @@ end """ y = dur(x::Grad) y = dur(x::Vector{Grad}) + y = dur(x::Matrix{Grad}) -Duration time in [s] of Grad struct or Grad array. When the input is a gradient vector, then -the duration is the maximum duration of all the elements of the gradient vector. +Duration time in [s] of Grad struct or Grad Array. # Arguments -- `x`: (`::Grad` or `::Vector{Grad}`) RF struct or RF array +- `x`: (`::Grad` or `::Vector{Grad}` or `::Matrix{Grad}`) Grad struct or Grad Array # Returns -- `y`: (`::Float64`, `[s]`) duration of the RF struct or RF array +- `y`: (`::Float64`, `[s]`) duration of the Grad struct or Grad Array """ dur(x::Grad) = x.delay + x.rise + sum(x.T) + x.fall -dur(x::Vector{Grad}) = maximum(dur.(x); dims=1)[:] \ No newline at end of file +dur(x::Vector{Grad}) = maximum(dur.(x); dims=1)[:] +dur(x::Matrix{Grad}) = maximum(dur.(x); dims=1)[:] \ No newline at end of file diff --git a/KomaMRIBase/src/datatypes/sequence/RF.jl b/KomaMRIBase/src/datatypes/sequence/RF.jl index 9d303e5bb..d8a9d28ee 100644 --- a/KomaMRIBase/src/datatypes/sequence/RF.jl +++ b/KomaMRIBase/src/datatypes/sequence/RF.jl @@ -71,37 +71,31 @@ Base.show(io::IO, x::RF) = begin end """ - y = getproperty(x::Vector{RF}, f::Symbol) - y = getproperty(x::Matrix{RF}, f::Symbol) + y = getproperty(x::Array{RF}, f::Symbol) Overloads Base.getproperty(). It is meant to access properties of the RF vector `x` directly without the need to iterate elementwise. # Arguments -- `x`: (`::Vector{RF}` or `::Matrix{RF}`) vector or matrix of RF structs +- `x`: (`::Array{RF}`) vector or matrix of RF structs - `f`: (`::Symbol`, opts: [`:A`, `:Bx`, `:By`, `:T`, `:Δf`, `:delay` and `:dur`]) input symbol that represents a property of the vector or matrix of RF structs # Returns -- `y`: (`::Vector{Any}` or `::Matrix{Any}`) vector with the property defined by the +- `y`: (`::Array{Any}`) vector or matrix with the property defined by the symbol `f` for all elements of the RF vector or matrix `x` """ -getproperty(x::Vector{RF}, f::Symbol) = getproperty.(x, f) getproperty(x::Matrix{RF}, f::Symbol) = begin if f == :Bx - real.(getproperty.(x, :A)) + real.(getfield.(x, :A)) elseif f == :By - imag.(getproperty.(x, :A)) - elseif f == :Δf - getproperty.(x, :Δf) - elseif f == :T || f == :delay - getproperty.(x[1, :], f) + imag.(getfield.(x, :A)) elseif f == :dur - T, delay = x.T, x.delay - ΔT = [sum(t) for t in T] .+ delay - ΔT + dur(x) + elseif f in fieldnames(RF) + getfield.(x, f) else - getproperty.(x, f) + getfield(x, f) end end @@ -118,22 +112,20 @@ size(r::RF, i::Int64) = 1 #To fix [r;r;;] concatenation of Julia 1.7.3 """ y = dur(x::RF) - y = dur(x::Array{RF,1}) - y = dur(x::Array{RF,2}) + y = dur(x::Vector{RF}) + y = dur(x::Matrix{RF}) -Duration time in [s] of RF struct or RF array. +Duration time in [s] of RF struct or RF Array. # Arguments -- `x`: (`::RF` or `::Array{RF,1}` or `::Array{RF,2}`) RF struct or RF array +- `x`: (`::RF` or `::Vector{RF}` or `::Matrix{RF}`) RF struct or RF array # Returns - `y`: (`::Float64`, [`s`]) duration of the RF struct or RF array """ -dur(x::RF) = sum(x.T) -dur(x::Array{RF,1}) = sum(sum(x[i].T) for i in 1:size(x, 1)) -function dur(x::Array{RF,2}) - return maximum(sum([sum(x[i, j].T) for i in 1:size(x, 1), j in 1:size(x, 2)]; dims=2)) -end +dur(x::RF) = x.delay + sum(x.T) +dur(x::Vector{RF}) = maximum(dur.(x); dims=1)[:] +dur(x::Matrix{RF}) = maximum(dur.(x); dims=1)[:] """ rf = RF_fun(f::Function, T::Real, N::Int64) diff --git a/KomaMRIBase/src/sequences/PulseDesigner.jl b/KomaMRIBase/src/sequences/PulseDesigner.jl index 2acfc62c1..6f87e753a 100644 --- a/KomaMRIBase/src/sequences/PulseDesigner.jl +++ b/KomaMRIBase/src/sequences/PulseDesigner.jl @@ -34,8 +34,8 @@ julia> plot_seq(seq) """ function RF_hard(B1, T, sys::Scanner; G=[0, 0, 0], Δf=0) ζ = sum(G) / sys.Smax - gr = reshape([Grad(G[1], T, ζ); Grad(G[2], T, ζ); Grad(G[3], T ,ζ)], :, 1) - rf = reshape([RF(B1, T, Δf, ζ)], :, 1) + gr = [Grad(G[1], T, ζ); Grad(G[2], T, ζ); Grad(G[3], T ,ζ) ;;] + rf = [RF(B1, T, Δf, ζ) ;;] return Sequence(gr, rf) end @@ -159,9 +159,10 @@ function EPI(FOV::Real, N::Integer, sys::Scanner) *string(round(1/(γ*Gmax*FOV),digits=2))*" us.") : 0 ϵ1 = Δτ/(Δτ+ζ) #EPI base - EPI = Sequence(vcat( - [mod(i,2)==0 ? Grad(Ga*(-1)^(i/2),Ta,ζ) : Grad(0.,Δτ,ζ) for i=0:2*Ny-2], #Gx - [mod(i,2)==1 ? ϵ1*Grad(Ga,Δτ,ζ) : Grad(0.,Ta,ζ) for i=0:2*Ny-2])) #Gy + GR = zeros(Grad, 3, length(0:2*Ny-2)) + GR.x .= [mod(i,2)==0 ? Grad(Ga*(-1)^(i/2),Ta,ζ) : Grad(0.,Δτ,ζ) for i=0:2*Ny-2] + GR.y .= [mod(i,2)==1 ? ϵ1*Grad(Ga,Δτ,ζ) : Grad(0.,Ta,ζ) for i=0:2*Ny-2] + EPI = Sequence(GR) EPI.ADC = [mod(i,2)==1 ? ADC(0,Δτ,ζ) : ADC(N,Ta,ζ) for i=0:2*Ny-2] # Relevant parameters Δfx_pix = 1/Ta @@ -173,8 +174,8 @@ function EPI(FOV::Real, N::Integer, sys::Scanner) # println("Pixel Δf in phase direction $(round(Δfx_pix_phase,digits=2)) Hz") #Pre-wind and wind gradients ϵ2 = Ta/(Ta+ζ) - PHASE = Sequence(reshape(1/2*[Grad( -Ga, Ta, ζ); ϵ2*Grad(-Ga, Ta, ζ)],:,1)) #This needs to be calculated differently - DEPHASE = Sequence(reshape(1/2*[Grad((-1)^N*Ga, Ta, ζ); ϵ2*Grad(-Ga, Ta, ζ)],:,1)) #for even N + PHASE = Sequence(1/2*[Grad( -Ga, Ta, ζ); ϵ2*Grad(-Ga, Ta, ζ); Grad(0.,0.);;]) #This needs to be calculated differently + DEPHASE = Sequence(1/2*[Grad((-1)^N*Ga, Ta, ζ); ϵ2*Grad(-Ga, Ta, ζ); Grad(0.,0.);;]) #for even N seq = PHASE+EPI+DEPHASE #Saving parameters seq.DEF = Dict("Nx"=>Nx,"Ny"=>Ny,"Nz"=>1,"Name"=>"epi") diff --git a/KomaMRIBase/test/Project.toml b/KomaMRIBase/test/Project.toml index 6f86ac2e6..3c949256c 100644 --- a/KomaMRIBase/test/Project.toml +++ b/KomaMRIBase/test/Project.toml @@ -1,4 +1,5 @@ [deps] +KomaMRIBase = "d0bc0b20-b151-4d03-b2a4-6ca51751cb9c" Suppressor = "fd094767-a336-5f1f-9728-57cf17d0bbfb" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" TestItemRunner = "f8b46487-2199-4994-9208-9a1283c18c0a" diff --git a/KomaMRIBase/test/runtests.jl b/KomaMRIBase/test/runtests.jl index a9e251611..d57a4e14f 100644 --- a/KomaMRIBase/test/runtests.jl +++ b/KomaMRIBase/test/runtests.jl @@ -26,9 +26,10 @@ using TestItems, TestItemRunner @testset "Rot_and_Concat" begin # Rotation 2D case - A1, A2, T, t = rand(4) + A1, A2, A3, T, t = rand(5) s = Sequence([Grad(A1,T); - Grad(A2,T)]) + Grad(A2,T); + Grad(A3,T);;]) θ = π*t R = rotz(θ) s2 = R*s #Matrix-Matrix{Grad} multiplication @@ -96,7 +97,6 @@ using TestItems, TestItemRunner # Test Grad operations α = 3 gradt = α * grad - @test size(grad, 1) == 1 @test gradt.A ≈ α * grad.A gradt = grad * α @test gradt.A ≈ α * grad.A @@ -165,8 +165,8 @@ using TestItems, TestItemRunner @test dur(rf) ≈ rf.T B1x, B1y, B2x, B2y, B3x, B3y, T1, T2, T3 = rand(9) rf1, rf2, rf3 = RF(B1x + im*B1y, T1), RF(B1x + im*B1y, T2), RF(B3x + im*B3y, T3) - rv = [rf1; rf2; rf3] - @test dur(rv) ≈ sum(dur.(rv)) + rv = [rf1; rf2; rf3 ;;] + @test dur(rv) ≈ maximum(dur.(rv); dims=1) end diff --git a/KomaMRICore/Project.toml b/KomaMRICore/Project.toml index f3be72d0a..aefa52207 100644 --- a/KomaMRICore/Project.toml +++ b/KomaMRICore/Project.toml @@ -1,7 +1,7 @@ name = "KomaMRICore" uuid = "4baa4f4d-2ae9-40db-8331-a7d1080e3f4e" authors = ["Carlos Castillo Passi "] -version = "0.8.3" +version = "0.9.0" [deps] Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" @@ -31,7 +31,7 @@ AMDGPU = "0.9" CUDA = "3, 4, 5" Functors = "0.4" KernelAbstractions = "0.9" -KomaMRIBase = "0.8" +KomaMRIBase = "0.9" Metal = "1" oneAPI = "1" Pkg = "1.4" @@ -39,3 +39,6 @@ ProgressMeter = "1" Reexport = "1" ThreadsX = "0.1" julia = "1.9" + +[workspace] +projects = ["test"] diff --git a/KomaMRICore/test/Project.toml b/KomaMRICore/test/Project.toml index 30afdd767..e625b4a9b 100644 --- a/KomaMRICore/test/Project.toml +++ b/KomaMRICore/test/Project.toml @@ -2,6 +2,7 @@ HDF5 = "f67ccb44-e63f-5c2f-98bd-6dc0ccc4ba2f" KernelAbstractions = "63c18a36-062a-441e-b654-da1e3ab1ce7c" KomaMRIBase = "d0bc0b20-b151-4d03-b2a4-6ca51751cb9c" +KomaMRICore = "4baa4f4d-2ae9-40db-8331-a7d1080e3f4e" Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" Suppressor = "fd094767-a336-5f1f-9728-57cf17d0bbfb" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" diff --git a/KomaMRIFiles/Project.toml b/KomaMRIFiles/Project.toml index 240c9da81..da24e1c56 100644 --- a/KomaMRIFiles/Project.toml +++ b/KomaMRIFiles/Project.toml @@ -1,7 +1,7 @@ name = "KomaMRIFiles" uuid = "fcf631a6-1c7e-4e88-9e64-b8888386d9dc" authors = ["Carlos Castillo Passi "] -version = "0.8.2" +version = "0.9.0" [deps] FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" @@ -18,10 +18,13 @@ Scanf = "6ef1bc8b-493b-44e1-8d40-549aa65c4b41" FileIO = "1" HDF5 = "0.16, 0.17" InteractiveUtils = "1" -KomaMRIBase = "0.8" +KomaMRIBase = "0.9" MAT = "0.10" MRIFiles = "0.1, 0.2, 0.3" Pkg = "1.4" Reexport = "1" Scanf = "0.5" julia = "1.9" + +[workspace] +projects = ["test"] \ No newline at end of file diff --git a/KomaMRIFiles/src/Sequence/Pulseq.jl b/KomaMRIFiles/src/Sequence/Pulseq.jl index 2c41575b6..ef67baefc 100644 --- a/KomaMRIFiles/src/Sequence/Pulseq.jl +++ b/KomaMRIFiles/src/Sequence/Pulseq.jl @@ -704,7 +704,7 @@ function get_block(obj, i) A = read_ADC(obj["adcLibrary"], iadc) #DUR - D = Float64[max(obj["blockDurations"][i], dur(Gx), dur(Gy), dur(Gz), dur(R), dur(A[1]))] + D = Float64[max(obj["blockDurations"][i], dur(Gx), dur(Gy), dur(Gz), dur(R[1]), dur(A[1]))] #Extensions E = Dict{String, Any}()#read_Extension(obj["extensionLibrary"], iext, i) diff --git a/KomaMRIFiles/test/Project.toml b/KomaMRIFiles/test/Project.toml index 71e02ddbf..46d8c78de 100644 --- a/KomaMRIFiles/test/Project.toml +++ b/KomaMRIFiles/test/Project.toml @@ -1,5 +1,6 @@ [deps] KomaMRIBase = "d0bc0b20-b151-4d03-b2a4-6ca51751cb9c" +KomaMRIFiles = "fcf631a6-1c7e-4e88-9e64-b8888386d9dc" MAT = "23992714-dd62-5051-b70f-ba57cb901cac" PrettyTables = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" Suppressor = "fd094767-a336-5f1f-9728-57cf17d0bbfb" diff --git a/KomaMRIFiles/test/runtests.jl b/KomaMRIFiles/test/runtests.jl index 02d9a432f..cca82be15 100644 --- a/KomaMRIFiles/test/runtests.jl +++ b/KomaMRIFiles/test/runtests.jl @@ -53,7 +53,7 @@ using TestItems, TestItemRunner using KomaMRIBase path = @__DIR__ # NoMotion - filename = path * "/test_files/brain_nomotion.phantom" + filename = path * "/test_files/brain_nomotion_w.phantom" obj1 = brain_phantom2D() write_phantom(obj1, filename) obj2 = read_phantom(filename) @@ -62,7 +62,7 @@ using TestItems, TestItemRunner @testset "SimpleMotion" begin # SimpleMotion path = @__DIR__ - filename = path * "/test_files/brain_simplemotion.phantom" + filename = path * "/test_files/brain_simplemotion_w.phantom" obj1 = brain_phantom2D() obj1.motion = SimpleMotion( PeriodicRotation( @@ -85,7 +85,7 @@ using TestItems, TestItemRunner @testset "ArbitraryMotion" begin # ArbitraryMotion path = @__DIR__ - filename = path * "/test_files/brain_arbitrarymotion.phantom" + filename = path * "/test_files/brain_arbitrarymotion_w.phantom" obj1 = brain_phantom2D() Ns = length(obj1) K = 10 diff --git a/KomaMRIFiles/test/test_files/brain_arbitrarymotion.phantom b/KomaMRIFiles/test/test_files/brain_arbitrarymotion.phantom deleted file mode 100644 index 2010fcf20..000000000 Binary files a/KomaMRIFiles/test/test_files/brain_arbitrarymotion.phantom and /dev/null differ diff --git a/KomaMRIFiles/test/test_files/brain_nomotion.phantom b/KomaMRIFiles/test/test_files/brain_nomotion.phantom deleted file mode 100644 index cf0d1bae2..000000000 Binary files a/KomaMRIFiles/test/test_files/brain_nomotion.phantom and /dev/null differ diff --git a/KomaMRIFiles/test/test_files/brain_simplemotion.phantom b/KomaMRIFiles/test/test_files/brain_simplemotion.phantom deleted file mode 100644 index cfc0a7d34..000000000 Binary files a/KomaMRIFiles/test/test_files/brain_simplemotion.phantom and /dev/null differ diff --git a/KomaMRIPlots/Project.toml b/KomaMRIPlots/Project.toml index ca2d503a6..e46d7b884 100644 --- a/KomaMRIPlots/Project.toml +++ b/KomaMRIPlots/Project.toml @@ -1,7 +1,7 @@ name = "KomaMRIPlots" uuid = "76db0263-63f3-4d26-bb9a-5dba378db904" authors = ["Carlos Castillo Passi "] -version = "0.8.3" +version = "0.9.0" [deps] Interpolations = "a98d9a8b-a2ab-59e6-89dd-64a1c18fca59" @@ -21,7 +21,7 @@ KomaPlotsPlutoPlotlyExt = "PlutoPlotly" [compat] Interpolations = "0.13, 0.14, 0.15" Kaleido_jll = "0.1" -KomaMRIBase = "0.8" +KomaMRIBase = "0.9" MAT = "0.10" Pkg = "1.4" PlotlyJS = "0.18" @@ -31,3 +31,6 @@ julia = "1.9" [extras] PlutoPlotly = "8e989ff0-3d88-8e9f-f020-2b208a939ff0" + +[workspace] +projects = ["test"] \ No newline at end of file diff --git a/KomaMRIPlots/test/Project.toml b/KomaMRIPlots/test/Project.toml index 099deabaf..34d379088 100644 --- a/KomaMRIPlots/test/Project.toml +++ b/KomaMRIPlots/test/Project.toml @@ -1,6 +1,7 @@ [deps] -MRIFiles = "5a6f062f-bf45-497d-b654-ad17aae2a530" KomaMRIBase = "d0bc0b20-b151-4d03-b2a4-6ca51751cb9c" +KomaMRIPlots = "76db0263-63f3-4d26-bb9a-5dba378db904" +MRIFiles = "5a6f062f-bf45-497d-b654-ad17aae2a530" PlutoPlotly = "8e989ff0-3d88-8e9f-f020-2b208a939ff0" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" TestItemRunner = "f8b46487-2199-4994-9208-9a1283c18c0a" diff --git a/Project.toml b/Project.toml index 0219a8df4..26a67dd42 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "KomaMRI" uuid = "6a340f8b-2cdf-4c04-99be-4953d9b66d0a" +version = "0.9.0" authors = ["Carlos Castillo Passi "] -version = "0.8.2" [deps] AssetRegistry = "bf4720bc-e11a-5d0c-854e-bdca1663c893" @@ -21,11 +21,14 @@ AssetRegistry = "0.1" Blink = "0.12" FFTW = "1.0" Interact = "0.10" -KomaMRICore = "0.8" -KomaMRIFiles = "0.8" -KomaMRIPlots = "0.8" +KomaMRICore = "0.9" +KomaMRIFiles = "0.9" +KomaMRIPlots = "0.9" MAT = "0.10" MRIReco = "0.6, 0.7, 0.8" Pkg = "1.4" Reexport = "1" julia = "1.9" + +[workspace] +projects = ["test", "docs", "benchmarks", "KomaMRIBase", "KomaMRICore", "KomaMRIFiles", "KomaMRIPlots"] diff --git a/test/Project.toml b/test/Project.toml index 628ebff8a..86cc5d268 100644 --- a/test/Project.toml +++ b/test/Project.toml @@ -1,6 +1,7 @@ [deps] Blink = "ad839575-38b3-5650-b840-f874b8c74a25" Interact = "c601a237-2ae4-5e1e-952c-7a85b0c7eef1" +KomaMRI = "6a340f8b-2cdf-4c04-99be-4953d9b66d0a" MAT = "23992714-dd62-5051-b70f-ba57cb901cac" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" TestItemRunner = "f8b46487-2199-4994-9208-9a1283c18c0a"