MagneticResonanceImaging / MRIReco.jl

Julia Package for MRI Reconstruction
https://magneticresonanceimaging.github.io/MRIReco.jl/latest/
Other
85 stars 22 forks source link

AcquisitionData(kspace) is not working for rectangular kspace #143

Closed aTrotier closed 1 year ago

aTrotier commented 1 year ago

AcquisitionData(kspace::Array{Complex{T},6}) is not working for rectangular kspace

N = 128
N2 = 80
x = shepp_logan(N)

  # simulation
  params = Dict{Symbol, Any}()
  params[:simulation] = "fast"
  params[:trajName] = "Cartesian"
  params[:numProfiles] = floor(Int64, N)
  params[:numSamplingPerProfile] = N

  acqData = simulation(x, params)

  #reco
  params[:reco] = "direct"
  params[:reconSize] = (N,N)

  x_approx = reconstruction(acqData, params)
  kspace = kDataCart(acqData)
  x_approx2 = ifftshift(ifft(ifftshift(kspace)))

  acqCS = AcquisitionData(kspace[:,1:N2,:,:,:,:])
  params[:reco] = "direct"
  params[:reconSize] = (N,N2)

  x_cs = reconstruction(acqCS, params)

returns the error

ArgumentError: step cannot be zero

steprange_last(::Int64, ::Int64, ::Int64)@range.jl:329
StepRange@range.jl:316[inlined]
range_start_step_length@range.jl:207[inlined]
_range@range.jl:159[inlined]
#range#68@range.jl:138[inlined]
cartesianSubsamplingIdx(::Tuple{Int64, Int64}, ::MRIBase.Trajectory{Float64})@Cartesian2D.jl:67
var"#fourierEncodingOp#119"(::Vector{Int64}, ::Int64, ::Vector{ComplexF64}, ::Bool, ::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, ::typeof(MRIOperators.fourierEncodingOp), ::Tuple{Int64, Int64}, ::MRIBase.Trajectory{Float64}, ::String)@EncodingOp.jl:160
#104@none:0[inlined]
iterate@generator.jl:47[inlined]
collect(::Base.Generator{UnitRange{Int64}, MRIOperators.var"#104#106"{Base.Pairs{Symbol, Any, Tuple{Symbol, Symbol}, NamedTuple{(:slice, :correctionMap), Tuple{Int64, Vector{ComplexF64}}}}, Tuple{Int64, Int64}, Vector{Vector{Int64}}, Vector{MRIBase.Trajectory{Float64}}}})@array.jl:787
#encodingOps_simple#102@EncodingOp.jl:19[inlined]
reconstruction_direct(::MRIBase.AcquisitionData{Float64, 2}, ::Tuple{Int64, Int64}, ::Vector{Vector{ComplexF64}}, ::Vector{ComplexF64})@DirectReconstruction.jl:31
reconstruction(::MRIBase.AcquisitionData{Float64, 2}, ::Dict{Symbol, Any})@Reconstruction.jl:39