schorschinho / osprey Goto Github PK
View Code? Open in Web Editor NEWAll-in-one toolbox for processing of magnetic resonance spectroscopy data.
Home Page: https://schorschinho.github.io/osprey
License: MIT License
All-in-one toolbox for processing of magnetic resonance spectroscopy data.
Home Page: https://schorschinho.github.io/osprey
License: MIT License
Describe the bug
The GUI crashes during the osp_plotLoad call for the universal MEGA sequence with a single water average.
Screenshots
See MRSHub post (https://forum.mrshub.org/t/problems-loading-siemens-megapress-data-in-osprey/896)
Describe the bug
Upon loading a single .IMA file, the abovementioned error message occurs.
Additional context
Caused by the variable seq
not being defined. seq
in these final statements ought to be replaced with seqtype
or out.seq
Reported by Meredith Reid (https://forum.mrshub.org/t/siemens-ima-single-average-and-multiple-averages/779)
Is your feature request related to a problem? Please describe.
Depending on system it can sometime be difficult to open PDF files
Describe the solution you'd like
Almost all systems can leverage HTML files and HTML files can be easily ingested into neuroimaging data management software (such as LORIS)
Additional context
Embedding images within the HTML report would make distribution to collaborators very seamless.
A large number of TWIX datasets can cause the memory to overflow and produce an "out of memory" error.
This is because osp_LoadTwix gets all the raw (individual coil) data from all datasets first, and then osp_combineCoils combines them one after another.
Resolution: We have to shift the coil-combination procedure (including the deletion of the individual coil elements from memory) one 'hierarchy level' further down, ie into the osp_LoadTwix function, to free up memory after loading and coil-combining each dataset.
Is your feature request related to a problem? Please describe.
Easy identification of subjects that are removed/flagged as bad in the GUI.
Describe the solution you'd like
Add excluded subjects to the csv file with subject names for easier identification
Additional context
Feature request by Eric Porges.
Describe the bug
Coreg/Seg window in the GUI crashes in Matlab R2021a and newer
Computer configuration (please complete the following information):
Additional context
Multiple reports.
Describe the bug
OspreyGUI crashes when Model or Coreg button is clicked.
Expected behavior
Should run through.
Screenshots
See MRSHub.org
https://forum.mrshub.org/t/error-launching-model-data-and-coregister-in-osprey-gui/859
Additional context
I think this is related to having the pause on error function turned on in MATLAB. Usually, the click on Model and Coreg leads to yellow warnings (still an error) in MATLAB which isn't crashing the GUI.
Is your feature request related to a problem? Please describe.
From @richardedden: Change the default abbreviations for the inositols (currently Ins and Scyllo).
Describe the solution you'd like
Use mI and sI instead of Ins and Scyllo.
Describe the bug
Typos in the jobfiles included in the example folder. Not all processing options included and accurately described.
Expected behavior
A clear and concise description should be included in the example jobfiles.
On lines 304 and 670 of the fit_OspreyPrelimStep2.m file, when converting back to the time domain the ifft is used in conjunction with the fftshift, as shown below. Is this an error or is it supposed to use the fftshift instead of the ifftshift? If it is not an error, can you please explain why?
`resBasisSet.specs = fftshift(fft(resBasisSet.fids,[],1),1);
% Run the frequency-domain operations on the basis functions
% (first order phase correction)
% Cut out the frequency range of the basis set
resBasisSet = op_freqrange(resBasisSet,fitRangePPM(1),fitRangePPM(end),length(splineArray(:,1,1)));
% Create a ppm vector around a pivot point (water)
ppm_ax = resBasisSet.ppm;
pivotPoint = 4.68;
multiplier = ppm_ax - pivotPoint;
% Apply the linear phase correction
for ii=1:nBasisFcts
resBasisSet.specs(:,ii) = resBasisSet.specs(:,ii) .* exp(1iph1multiplier);
end
resBasisSet.fids = ifft(fftshift(resBasisSet.specs,1),[],1);`
Best regards,
John
Describe the bug
fitHERMES crashes during OspreyFit
Additional context
Crash introduced in Osprey v.2.2.0 works in older versions of Osprey and with older basis set files
Is your feature request related to a problem? Please describe.
Matlab license unavailable.
Describe the solution you'd like
A compiled version of osprey that runs with the matlab runtime environment and does not require a Matlab license
Describe alternatives you've considered
running in Octave?
Additional context
In our open-source project http://neurodesk.github.io/ we provide reproducible access to neuroimaging tools, but we do not have a Matlab license. We provide access to tools like SPM via the matlab runtime environment and it would be wonderful to provide open access to Osprey as well.
Is your feature request related to a problem? Please describe.
Not all systems come with MATLAB licenses and at times can be difficult to obtain. To lower the barrier of entry and make osprey capable of running on systems without MATLAB, containerization is suggested.
Describe the solution you'd like
I would like the application, along with its dependencies wrapped into a container for ease of use. Specifically, MATLAB Compiler Runtime will likely need to be deployed for the containerized application to run as expected.
Reference to non-existent field 'CorrNames'.
Error in OspreyGUI/osp_iniOverviewWindow (line 1479)
'String',gui.CorrNames, 'Value', 1,'callback',{@pop_corrOvCorr_Call});
Error in OspreyGUI/onQuant (line 1850)
osp_iniOverviewWindow();
Error while evaluating UIControl Callback.
Dear,
I an attempt to compare the Osprey fitting results with those from jMRUI for my data, I found a bug in your code.
In the job .m example files and in the ‘OspreyJob.m’ file, you use the opts.saveJMRUI tag. However in, the MRSCont.mat data structure and in the ‘OspreyGUI.m’ files, you use the opts.savejMRUI tag. Since savejMRUI and saveJMRUI are different parameters in Matlab, Osprey never writes the requested jMRUI files. If I change it in the job .m example files and the ‘OspreyJob.m’ file to savejMRUI, it works fine.
Kind regards,
Dr. Peter Van Schuerbeek
Describe the bug
When running the OspreyFit
function from the terminal with the 'savePDF` flag set the following errors result when figures are being created:
Reference to non-existent field 'diff1'.
Error in osp_plotModule (line 333)
' ppm\nNumber of metabolites: '
num2str(MRSCont.fit.resBasisSet.(which){1,MRSCont.info.A.unique_ndatapoint_indsort(kk)}.nMets)
'; Number of macro moclecules: '
num2str(MRSCont.fit.resBasisSet.(which){1,MRSCont.info.A.unique_ndatapoint_indsort(kk)}.nMM)
...
Error in osp_plotAllPDF (line 86)
osp_plotModule(MRSCont, 'OspreyFit', kk, Names{ss});
Error in OspreyFit (line 215)
osp_plotAllPDF(MRSCont, 'OspreyFit')
Modifying the relevant line (333) in ops_plotModule.m
from
' ppm\nNumber of metabolites: ' num2str(MRSCont.fit.resBasisSet.(which){1,MRSCont.info.A.unique_ndatapoint_indsort(kk)}.nMets) '; Number of macro moclecules: ' num2str(MRSCont.fit.resBasisSet.(which){1,MRSCont.info.A.unique_ndatapoint_indsort(kk)}.nMM) ...
to
' ppm\nNumber of metabolites: ' num2str(MRSCont.fit.resBasisSet.conc{1,MRSCont.info.A.unique_ndatapoint_indsort(kk)}.nMets) '; Number of macro moclecules: ' num2str(MRSCont.fit.resBasisSet.conc{1,MRSCont.info.A.unique_ndatapoint_indsort(kk)}.nMM) ...
appears to resolve the issue and I think retains the intended function.
Not enough input arguments.
Error in osp_plotFit (line 56)
figTitle = sprintf([fitMethod ' ' fitStyle ' ' conc ' fit plot:\n' filen
ext]);
Error in osp_plotModule (line 419)
temp = osp_plotFit(MRSCont, kk,Style,which);
Error in osp_plotAllPDF (line 86)
osp_plotModule(MRSCont, 'OspreyFit', kk, Names{ss});
Error in OspreyFit (line 215)
osp_plotAllPDF(MRSCont, 'OspreyFit')
Modifying the relevant line in osp_plotFit.m
from
figTitle = sprintf([fitMethod ' ' fitStyle ' ' conc ' fit plot:\n' filen ext]);
to
figTitle = sprintf([fitMethod ' ' fitStyle ]);
resolves the issue. It's not clear if any functionality is lost.
Computer configuration (please complete the following information):
This error message occurs when the "Load job file" window in OspreyStartUp is closed without selecting a job:
Brace indexing is not supported for variables of this type.
Error in OspreyStartUp/loadJob (line 110)
gui.data.MRSCont = OspreyJob(gui.out{1});
Error in OspreyStartUp/onLoadJob (line 125)
loadJob();
Error while evaluating UIControl Callback.
Is your feature request related to a problem? Please describe.
Spectro data from the new Siemens environemnt (in our case XA 31) can't be loaded.
I am new to Spectroscopy so maybe I am missing some basic things ?!
However, when trying to load a spectrum (*.dat) from our new Siemens Vida (using XA 31), this error message is prompted (see below).
I was able to load the data with another software package (fsl mrs, spec2nii) - just for your info.
I would really appreciate your help and can of course provide the data if necessary.
Best, Karl
Loading raw data from dataset 1 out of 1 total datasets...
Software version: VD (!?)
Reader version: 1496740353 (UTC: 06-Jun-2017 09:12:33)
Scan 1/2, read all mdhs:
97.7 MB read in 2 s
Scan 2/2, read all mdhs:
93.9 MB read in 1 s
ans =
0
multi RAID file detected.
Reference to non-existent field 'Frequency'.
Error in io_loadspec_twix (line 474)
txfrq=twix_obj.hdr.Meas.Frequency;
Error in osp_LoadTwix (line 66)
raw = io_loadspec_twix(MRSCont.files{metab_ll,kk});
Error in OspreyLoad (line 181)
[MRSCont] = osp_LoadTwix(MRSCont);
Error in osp_onLoad (line 34)
MRSCont = OspreyLoad(MRSCont);
Error while evaluating UIControl Callback.
Is your feature request related to a problem? Please describe.
Even though there is no accepted BIDS derivative format for MRS, many of the files outputted actually can be changed to meet the BIDS derivative format.
Describe the solution you'd like
Perhaps having a flag which will output all of the pipeline derivatives in a BIDS derivative format.
Specifically:
Describe the bug
When generating PDFs from the OspreyCoreg
command, the following error occurs:
Error using spm_slice_vol
Cant open image file.
Error in voxel2world_space (line 32)
img_t = spm_slice_vol(V,TM,TD,2)';
Error in osp_plotCoreg (line 76)
[mask_t,mask_c,mask_s] = voxel2world_space(Vmask,voxel_ctr);
Error in osp_plotModule (line 464)
osp_plotCoreg(MRSCont, kk);
Error in osp_plotAllPDF (line 91)
osp_plotModule(MRSCont, 'OspreyCoreg', kk);
Error in OspreyCoreg (line 193)
osp_plotAllPDF(MRSCont, 'OspreyCoreg')
The ultimate issue appears to be in osp_plotCoreg
. Here, the voxel mask must be converted from a .nii.gz file to .nii in order to be read by spm_slice_vol
. This is done successfully at lines 59 and 60:
Vmask=spm_vol(MRSCont.coreg.vol_mask{kk}{VoxelIndex}.fname);
voxel_ctr = MRSCont.coreg.voxel_ctr{kk}(:,:,VoxelIndex);
The following lines (63-70)
if ~MRSCont.flags.didSeg
if exist([MRSCont.coreg.vol_mask{kk}.fname, '.gz'],'file')
delete(MRSCont.coreg.vol_mask{kk}.fname);
end
if exist([MRSCont.coreg.vol_image{kk}.fname, '.gz'],'file')
delete(MRSCont.coreg.vol_image{kk}.fname);
end
end
then seem to delete the newly created .nii files before the plotting steps are run. Since the .nii file is missing, there is nothing for spm_slice_vol
to read and the error results.
Moving this block of code to the end of osp_plotCoreg
solves this issue and seems to retain the desired functionality (i.e., the .nii file is deleted to leave just the .nii.gz mask file.
Computer configuration (please complete the following information):
Is your feature request related to a problem? Please describe.
I am trying to load DICOM data obtained with a 7T STEAM sequence from the CMRR group, but there is an error in read_dcm_header.
Describe the solution you'd like
I would like to be able to load this data.
Additional context
Request by Aimie Peek.
Is your feature request related to a problem? Please describe.
Windowing of the anatomical T1-weighted scans is not optimal and masks are hard tp distinguish.
Describe the solution you'd like
Updated colormap scale
Describe the bug
Osprey crashes during OspreyLoad for Siemens TWIX PRESS data acquired on Connectom Scanner with VD software version
To Reproduce
Steps to reproduce the behavior:
Call OspreyLoad with described data
Expected behavior
Load data into MRSContainer for further processing.
Additional context
Reported by Carolyn McNabb on MRSHub.
Describe the bug
Osprey crashes during the OspreyFit call.
Screenshots
See MRSHub
Additional context
Related to non-integer spectralwidth which is breaking the automated struct generation for the basis sets by adding an additional . interpreted as field.
This error message occurs because the fit style 'Concatenated' is not available for unedited data. Needs to be intercepted.
Reference to non-existent field 'conc'.
Error in OspreyGUI/osp_iniFitWindow (line 1031)
RawAmpl = MRSCont.fit.results.(gui.fitStyle).fitParams{1,gui.SelectedDataset}.ampl .*
MRSCont.fit.scale{gui.SelectedDataset};
Error in OspreyGUI/onFit (line 1758)
osp_iniFitWindow();
Error while evaluating UIControl Callback.
The fit module currently relies on the 'spmak' function from the Curve Fitting Toolbox. Construct the spline basis functions individually, without the use of spmak.
Is your feature request related to a problem? Please describe.
Osprey currently calls SPM to perform segmentation of structural anatomical images, but there is no way to provide pre-segmented tissue class maps instead (e.g. produced by deep-learning methods specifically designed for certain cohorts).
Describe the solution you'd like
Add fields to the job file that provide a pathway for supplying pre-segmented tissue class maps.
Describe the bug
Siemens HERMES/HERCULES data with 1 average (& 4 subspectra) leads to a crash during OspreyLoad.
Describe the bug
When running an analysis using individual commands rather than the GUI an error occurs during the creation of figure PDFs. For example, when running OspreyLoad
:
Reference to non-existent field 'Load'.
Error in osp_plotModule (line 87)
Title = [MRSCont.ver.Osp ' ' MRSCont.ver.Load];
Error in osp_plotAllPDF (line 37)
osp_plotModule(MRSCont, 'OspreyLoad', kk, 'mets');
Error in OspreyLoad (line 141)
osp_plotAllPDF(MRSCont, 'OspreyLoad')
Error in osp_onLoad (line 32)
MRSCont = OspreyLoad(MRSCont);
Error while evaluating UIControl Callback.
This happens with all commands, not just OspreyLoad
.
The issue is resolved by changing the relevant line in osp_plotModule.m
from
Title = [MRSCont.ver.Osp ' ' MRSCont.ver.Load];
to
Title = [MRSCont.ver.Osp ' Load'];
Equivalent changes in the relevant lines for OspreyProcess
, OspreyFit
, etc, resolve the issue for them also. However, I'm not sure if this change removes some intended functionality.
Computer configuration:
Dear Georg and al.,
I used your software all the day. It works like charm.
Thanks for this valuable work.
I just have some suggestion to improve it:
If I can help you, let me know.
Thanks once again,
Frederic
Add support for loading and processing Siemens SPECIAL data. Requested by Daisuke Matsuyoshi, Ariane Fillmer, Robert Malinowski.
SplineArray dimension calculation Error
HERCULES fit with LCmodel and seperate style
For default fitting range the dimension of the spline array and the reduced data/basis set range can disagree.
Possible Error in fit_makeSplineBasis line 99
splineInnerBasisFunctionMatrix(:,rr,:) = splineBasisFunctionMatrix(knotLocations(3):1:knotLocations(end-2),rr,:);
Maybe due to a wrong knot location resulting from dkntmn.
Changing Fit Range somehow bypasses this Problem.
Describe the bug
Warning about an already removed file.
Dear Dr. Oeltzschner and al.,
I am fairly new to MRS, but your software has been of great help for me lately as I started processing data for one of my graduate projects. So far I have worked with Siemens TWIX, DICOM and RDA file formats. Everything has worked very nicely (especially for TWIX data) and I look forward to continue using your software. Below is a list of questions I have, and possible bugs that I have encountered - I'm not sure if this is the best forum for this, so if I need to post somewhere else please do let me know.
Thank you and I appreciate any answer you could provide.
-Humberto M.
Is your feature request related to a problem? Please describe.
I want to process GE HERMES/HERCULES data in Osprey
Describe the solution you'd like
Implement GE HERMES/HERCULES loader into Osprey
Additional context
Impossible to load GE HERMES/HERCULES data from HBCD collaborators.
Is your feature request related to a problem? Please describe.
Introduce .jason based jobfile definition in addition to .csv and .m files.
Describe the solution you'd like
See above
Additional context
Needed for HBCD and LORIS integration of Osprey
Is your feature request related to a problem? Please describe.
Update OspreyLoad to accept a Siemens combined fMRI/fMRS sequence
Describe alternatives you've considered
FID-A loader.
Additional context
Feature request from Jilly Naaijen (Donders Institute Nijmegen).
Hi!
Up to recently I used Osprey v1.1.0, but decided to switch to the most recent version now. However, the plotting functions do not work with the same arguments any more as they did in the version I used previously. I used to use them as follows to visualise the metabolite data:
osp_plotLoad(data_container, num_of_dataset, 'mets')
osp_plotProcess(data_container, num_of_dataset, 'A')
osp_plotFit(data_container, num_of_dataset, 'off');
osp_plotload still works as previously.
osp_plotProcess now seems to have 'metab' instead of 'A' as the 3rd argument.
ops_plotFit - 'off' as the 3rd argument does not work any more. Neither does 'mets' or 'metab'. How should this function be called?
SInce I am using the calls inside another script, switching to the GUI is not an option.
Thanks,
Maarika
Describe the bug
Osprey crashes during the OspreyFit call, because of a missing field in the struct. This is most likely related to the renaming during the last major update.
To Reproduce
Steps to reproduce the behavior:
Run OspreyFit on a dataset that already had results in the derivatives folder.
Expected behavior
Run OspreyFit without crashing.
Describe the bug
The amplitude scaling of the co-edited MM3 peaks does not match the other MM peaks.
Additional context
Possibly due to on the fly calculation based on the sum spectrum.
Describe the bug
Receive a "File does not exist" error while trying to load multiple RDAs into one jobfile using the GUI.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Jobfile should execute as normal.
Screenshots
Osprey
Timestamp October 13, 2021 13:40:33 Osprey 1.1.0 OspreyGUI
Item generic: No field(s) named
frames
Item generic: No field(s) named
frames
Item generic: No field(s) named
frames
Fitting style was changed to Separate, because this is unedited data. Please indicate otherwise in the csv-file or the GUI
/Users/edm9fd/Documents/CARES/mrs/front/Osprey_FRONT_131021.m
Timestamp October 13, 2021 13:41:19 Osprey 1.1.0
Timestamp October 13, 2021 13:41:19 Osprey 1.1.0 OspreyGUI
Error using osp_detDataType (line 90)
Error during loading. File or folder /Users/edm9fd/Documents/CARES/mrs/front/rda/006-M_front.rda does not exist. Check
the job file!
Error in OspreyGUI (line 414)
[~, ~] = osp_detDataType(MRSCont);
Error in CreateOspreyJob_app/CREATEJOBButtonPushed (line 509)
OspreyGUI(MRSCont);
Error using matlab.ui.control.internal.controller.ComponentController/executeUserCallback (line 386)
Error while evaluating DestroyedObject PrivateButtonPushedFcn.
Computer configuration (please complete the following information):
Additional context
When I create a jobfile for each file separately, the GUI is able to read in the files correctly. In the error message, there appears to be an extra space in the filename when setting up for a batch process.
Is your feature request related to a problem? Please describe.
Gannet shows averaged spectra pre and post alignment, we want Osprey to do this too.
Additional context
Useful for QA of Siemens data.
If the SPM and Osprey folders are not in the same (MATLAB) folder, an error is being thrown when the GUI is initialized (when OspreyGUI is called after OspreyStartUp has been run and a job file has been selected).
Describe the bug
GUI crashes when callled with Osprey in the console
Additional context
Multiple reports.
Is your feature request related to a problem? Please describe.
Multi-file RDA is supported for MEGA, but not conventional sequences.
Describe the solution you'd like
I would like to have support to load un-edited data with multiple RDA files.
Additional context
Feature request by Hossein Mohammadi.
Describe the bug
The listbox in the GUI crashes when up/down is pressed for the first/last entry.
Expected behavior
Jump to first or last entry in the list.
Additional context
Introduced during the last update.
Is your feature request related to a problem? Please describe.
Osprey mis-recognizes STEAM data collected with the MGH sequence (Dr. Ratai).
Describe the solution you'd like
Modify io_loadspec_twix to properly recognize this sequence.
(Also add an appropriate basis set.)
Additional context
(Submitted via e-mail by Ewa Beldzik)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.