Skip to content
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 to get the IMT Bruker system running #71

Draft
wants to merge 9 commits into
base: master
Choose a base branch
from
11 changes: 6 additions & 5 deletions src/Brukerfile.jl
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ function BrukerFile(path::String; isCalib=_iscalib(path), fastMode=false,
"PVM_MPI_NrCalibrationScans","MPI_NSteps",
"PVM_MPI_NrBackgroundMeasurementCalibrationAllScans",
"PVM_MPI_NrBackgroundMeasurementCalibrationAdditionalScans",
"PVM_MPI_ChannelSelect", "PVM_MPI_Tracer", "PVM_MPI_DriveFieldCycle", "PVM_Matrix", "PVM_Fov"]
"PVM_MPI_ChannelSelect", "PVM_MPI_Tracer", "PVM_MPI_DriveFieldCycle", "PVM_Matrix", "PVM_Fov", "PVM_MPI_FovCenter"]
else
maxEntriesAcqp = 2000
keylistAcqp = String[]
Expand Down Expand Up @@ -433,20 +433,22 @@ function measData(b::BrukerFileMeas, frames=1:acqNumFrames(b), periods=1:acqNumP
if numSubPeriods(b) == 1
raw = Mmap.mmap(s, Array{dType,4},
(rxNumSamplingPoints(b),rxNumChannels(b),acqNumPeriodsPerFrame(b),acqNumFrames(b)))
data = raw[:,receivers,periods,frames]
else
if b.handleSubPeriodsAsFrames
raw = Mmap.mmap(s, Array{dType,5}, (rxNumSamplingPoints(b),numSubPeriods(b),rxNumChannels(b),
acqNumPeriodsPerFrame(b), div(acqNumFrames(b),numSubPeriods(b))))

raw = reshape(permutedims(collect(raw), (1,3,4,2,5)), Val(4))
data = raw[:,receivers,periods,frames]
else
raw = Mmap.mmap(s, Array{dType,5},
(rxNumSamplingPoints(b),numSubPeriods(b),rxNumChannels(b),acqNumPeriodsPerFrame(b),acqNumFrames(b)))

raw = dropdims(sum(raw,dims=2),dims=2)
data = dropdims(sum(raw[:,:,receivers,periods,frames],dims=2),dims=2)
end
end
data = raw[:,receivers,periods,frames]

close(s)

return reshape(data, rxNumSamplingPoints(b), length(receivers),length(periods),length(frames))
Expand Down Expand Up @@ -770,5 +772,4 @@ function getBV(b; recChannels=1:rxNumChannels(b))
data = Mmap.mmap(s, Array{Float64,2}, (nFreq,rxNumChannels(b)))
close(s)
return data
end

end
7 changes: 5 additions & 2 deletions src/Conversion.jl
Original file line number Diff line number Diff line change
Expand Up @@ -160,9 +160,9 @@ end

function appendBGDataset(params::Dict, fBG::MPIFile; frames=1:acqNumFrames(fBG))
paramsBG = loadDataset(fBG, frames=frames)
paramsBG[:measIsBGFrame][:] = true
paramsBG[:measIsBGFrame][:] .= true

params[:measData] = cat(4, params[:measData], paramsBG[:measData])
params[:measData] = cat(params[:measData], paramsBG[:measData], dims=4)
params[:measIsBGFrame] = cat(params[:measIsBGFrame], paramsBG[:measIsBGFrame], dims=1)
params[:acqNumFrames] += paramsBG[:acqNumFrames]

Expand Down Expand Up @@ -838,6 +838,9 @@ function saveasMDF(file::HDF5.File, params::Dict{Symbol,Any})
write(file, "/reconstruction/positions", params[:recoPositions])
end
if hasKeyAndValue(params, :recoParameters)
## Workaround to save new parameters to MDF, maybe not the best way to do it...
params[:recoParameters][:solver] = string(params[:recoParameters][:solver])
params[:recoParameters][:reg] = string(params[:recoParameters][:reg])
saveParams(file, "/reconstruction/_parameters", params[:recoParameters])
end
end
Expand Down
7 changes: 5 additions & 2 deletions src/DatasetStore/BrukerDatasetStore.jl
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,11 @@ export BrukerDatasetStore, findBrukerFiles, getNewCalibNum

struct BrukerDatasetStore <: DatasetStore
path::String
readonly::Bool
end

BrukerDatasetStore(path::String) = BrukerDatasetStore(path, true)

@static if ispath("/opt/mpidata")
export BrukerStore
const BrukerStore = BrukerDatasetStore("/opt/mpidata")
Expand All @@ -15,7 +18,7 @@ iscalib(e::Experiment{BrukerDatasetStore}) = _iscalib(path(e))

### Implementations of abstract interfaces ###

readonly(::BrukerDatasetStore) = true
readonly(d::BrukerDatasetStore) = d.readonly

studydir(d::BrukerDatasetStore) = d.path
calibdir(d::BrukerDatasetStore) = error("BrukerDatasetStore has no calibdir")
Expand Down Expand Up @@ -81,7 +84,7 @@ function getExperiments(s::Study{BrukerDatasetStore})
end

experiments = Experiment[]

for file in files
prefix, ext = splitext(splitpath(file)[end])
num = tryparse(Int64, prefix)
Expand Down
33 changes: 23 additions & 10 deletions src/DatasetStore/SFDatabase.jl
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,13 @@ function findSFFiles(d::BrukerDatasetStore)
end
end
end
BrukerMDFSFs = readdir("/opt/data/MDF_SFs/")
for BrukerMDFSF in BrukerMDFSFs
prefix, ext = splitext(BrukerMDFSF)
if ext == ".mdf"
push!(bfiles,joinpath("/opt/data/MDF_SFs/",BrukerMDFSF))
if isdir("/opt/data/MDF_SFs/")
BrukerMDFSFs = readdir("/opt/data/MDF_SFs/")
for BrukerMDFSF in BrukerMDFSFs
prefix, ext = splitext(BrukerMDFSF)
if ext == ".mdf"
push!(bfiles,joinpath("/opt/data/MDF_SFs/",BrukerMDFSF))
end
end
end
return bfiles
Expand Down Expand Up @@ -130,8 +132,13 @@ end

# HAAACKKK
function generateSFDatabase(d::BrukerDatasetStore)
oldfile = "/opt/data/SF_DatabaseOld.csv"
newfile = "/opt/data/SF_Database.csv"
if readonly(d)
dbpath = "/opt/data"
else
dbpath = d.path
end
oldfile = joinpath(dbpath, "SF_DatabaseOld.csv")
newfile = joinpath(dbpath, "SF_Database.csv")
generateSFDatabase_(d, oldfile, newfile)
end

Expand All @@ -149,10 +156,16 @@ function generateSFDatabase_(d::DatasetStore, oldfile, newfile)
end

function loadSFDatabase(d::BrukerDatasetStore)
if isfile("/opt/data/SF_Database.csv")
A = readdlm("/opt/data/SF_Database.csv",',')
if readonly(d)
dbpath = "/opt/data"
else
dbpath = d.path
end
filepath = joinpath(dbpath, "SF_Database.csv")
if isfile(filepath)
A = readdlm(filepath,',')
if size(A,2) < 16
A = readdlm("/opt/data/SF_Database.csv",'\t')
A = readdlm(filepath,'\t')
end
return A
else
Expand Down
Loading