Tags: JuliaHealth/KomaMRI.jl
Tags
[Diff since v0.9.0](v0.9.0...v0.9.1) Motion-Related Features and Bug fixes These updates primarily affect KomaMRIBase. Key changes include: - Bug fixes related to phantom definition, motion lists, and flow experiments (PR #499, #511, #516, #520, #536). - Improved motion definition, allowing for easier specification of single motion instances and flexible time spans (PR #517, #531). - Introduction of the TimeCurve structure, enabling arbitrary temporal motion patterns that were previously challenging to replicate (PR #531). - Added tests for motion-related functions to improve code coverage (PR #523). Other Minor Changes - Updated and expanded documentation for contributors to Koma, providing clearer guidelines and resources (PR #509, #510, #514, #518, #543). - *KomaMRIPlots*: Standardized colormaps using QMRIColors.jl for T1 and T2 maps (PR #528). - *KomaMRICore*: Removed "hack" of using cos + i sin as oneAPI.jl didn't defined cis(x) . Now we use `sincos` for GPU kernel code (PR #496). **Merged pull requests:** - Update README.md with v0.9 news (#493) (@calberolalopez) - Update to use cis instead of cos + i sin (#496) (@cncastillo) - CompatHelper: bump compat for PlutoPlotly in [weakdeps] to 0.6 for package KomaMRIPlots, (keep existing compat) (#497) (@github-actions[bot]) - Fix Phantom-related bugs (#498 and more) (#499) (@pvillacorta) - Avoid GPU runners for CPU jobs, and fix hanging CPU tests (#502) (@cncastillo) - CompatHelper: bump compat for Functors to 0.5 for package KomaMRICore, (keep existing compat) (#507) (@github-actions[bot]) - How to contribute to Koma docs (#509) (@Stockless) - Fixing text some details in dev documentation (#510) (@Stockless) - Adjust reset flag interpolation to trigger at jump (#511) (@pvillacorta) - Bump codecov/codecov-action from 4 to 5 (#513) (@dependabot[bot]) - Fix asset paths for "5-contribute-to-koma.md" (#514) (@Stockless) - Fixed incorrect assets path (#515) (@Stockless) - Fix flow-related functions (#516) (@pvillacorta) - Ease motion definition when only one motion is needed (#517) (@pvillacorta) - Limited size of large assets in light mode (#518) (@Stockless) - Solve bug in `SpinRanges` when indexing a phantom with a BitVector (#520) (@pvillacorta) - Test motion-related functions (#523) (@pvillacorta) - Limit 'NadcsPerImage' to be at least 1 (#527) (@Stockless) - Adding standard T1 and T2 colormaps from QMRIColors.jl (#528) (@Stockless) - Flexibilize the definition of motion time spans (#531) (@pvillacorta) - Fix motion bugs and add `colorscale` keyword in `plot_image` (#536) (@pvillacorta) - Resize contributors (#541) (@Stockless) - Contributing guidelines update (#543) (@Stockless) - replace all "cmin" and "cmax" with "zmin" and "zmax" respectibly (#546) (@Stockless) - bump v0.9.0 to v0.9.1 (#547) (@Stockless) **Closed issues:** - Add Contributing Guidelines (#209) - Include steps for contributing using VSCode (#233) - An error of 'DivideError: integer division' occurs in the internal functions of simulate when using a sequence with spiral acquisition (#409) - Test setting fields from a Phantom @view (#412) - Future: use sincos once available in oneAPI.jl (#463) - Use color-map recommendations for MR relaxometry maps by Quantitative MR Study Group (#473) - Easily define Phantom `motion` field composed by only one `Motion` instance (#481) - Troubles defining Float32 or empty phantoms with KomaMRI 0.9 (#498) - Don't run CPU benchmarks on GPU workers (#501) - Test `Motion` constructors (#512) - Test motion-related functions (#522) - Resize collaborators (#525)
[Diff since v0.8.2](v0.8.2...v0.9.0) This new **breaking release** of Koma v0.9 has multiple new features. Thanks to @rkierulf, our [GSoC student](https://juliahealth.org/JuliaHealthBlog/posts/ryan-gsoc/Ryan_GSOC.html), for the GPU enhancements and @pvillacorta for the new motion definitions that enable flow and shareable phantoms. **(1) Device-agnostic kernel-based simulations** (more info [here](https://juliahealth.org/KomaMRI.jl/dev/explanation/4-gpu-explanation/)) We can now use various GPU backends with the help of KernelAbstractions.jl. This means that GPU-related packages like CUDA are not installed by default. Installation and loading of the desired GPU package is needed (for example `] add CUDA`, `using CUDA`). **(2) New simulation method, faster and better** Now `Bloch` has specialized implementations for CPU and GPU and the previous implementation is in `BlochSimple`. This new simulation method is **4-5 times faster** and uses around **80 times less memory**. We have seen a 100-200x improvement in some sequences, especially if they have a lot of soft RF pulses. **(3) Distributed simulations** (more info [here](https://juliahealth.org/KomaMRI.jl/dev/how-to/4-run-distributed-simulations/)) We also tested distributed simulations with multiple GPUs and nodes :) **(4) GPU benchmarks** ([here](https://juliahealth.org/KomaMRI.jl/benchmarks/)) We have a fancy new benchmarking page to ensure that there are no performance regressions. **(5)`Phantom`'s including flexible motions and flow (more experimental)** You can now plot phantoms with motion and define them using mix-and-match motion definitions! More complex phantoms are possible including [simple motions](https://juliahealth.org/KomaMRI.jl/dev/tutorial/05-SimpleMotion/) or [arbitrary motions](https://juliahealth.org/KomaMRI.jl/dev/tutorial/06-DiffusionMotion/). Many more examples of using them are coming soon! 😄 including a realistic CFD-simulated aorta! All of this is done using our new reproducible phantom definition (HDF5-based), which enables the sharing of these phantoms with complex motion. Hope these changes make your simulations faster! 😄 As always, if you have any problems, feel free to talk to me (@cncastillo ) in Slack or post an issue or discussion on GitHub. **Merged pull requests:** - Motion Phantom (#184) (@pvillacorta) - Bump codecov/codecov-action from 4.1.1 to 4.3.0 (#384) (@dependabot[bot]) - Bump julia-actions/setup-julia from 1 to 2 (#385) (@dependabot[bot]) - Tutorial for SimpleMotion creation and simulation (#387) (@pvillacorta) - Update nightly.yml (#388) (@cncastillo) - Adding "How to Cite Koma" section to docs (#389) (@cncastillo) - Bump julia-actions/julia-format from 2 to 3 (#398) (@dependabot[bot]) - Update DisplayFunctions.jl (#402) (@curtcorum) - Add Binder badge to Literate tutorials (#403) (@cncastillo) - Extend GPU support to Metal, ROCm, and oneAPI backends (#405) (@rkierulf) - Fix some test failures (#406) (@rkierulf) - Optimize ArbitraryMotion (continuation) (#408) (@pvillacorta) - Add Buildkite GPU pipeline (#411) (@rkierulf) - Fix plot phantom function (#413) (@pvillacorta) - Fixing testing environments for GPU backends (#415) (@cncastillo) - Add kernel-based matrix cumsum (#416) (@rkierulf) - Initial benchmarking implementation: steps to run benchmarks and comb… (#418) (@rkierulf) - Fix typos in docstrings (#419) (@pvillacorta) - [DOCS] Add JuliaHealth Star Counter Badge to README (#420) (@TheCedarPrince) - Updates to github-action-benchmark index.html (#421) (@rkierulf) - Fixing issues in Julia 1.11 and Julia 1.12 (#422) (@cncastillo) - Fix monorepo script not working for pushes to main (#423) (@rkierulf) - Change 'main' to 'master' so benchmarking action actually runs (#424) (@rkierulf) - Including details about prints of simulate (#431) (@gsahonero) - Bump to 0.9.0-DEV (#434) (@cncastillo) - New Motion (#442) (@pvillacorta) - Optimize run_spin_precession! and run_spin_excitation! for CPU (#443) (@rkierulf) - Change `reduce(vcat, itr)` to `reduce(vcat, [itr])` (#444) (@cncastillo) - Pkg version handling and choosable test backend for VSCode (#453) (@cncastillo) - Pkg version handling and choosable test backend for VSCode (again) (#455) (@cncastillo) - CompatHelper: bump compat for PlutoPlotly in [weakdeps] to 0.5 for package KomaMRIPlots, (keep existing compat) (#456) (@github-actions[bot]) - Fixing benchmark comments on PRs (#457) (@cncastillo) - Optimize run_spin_precession! for GPU (#459) (@rkierulf) - CompatHelper: bump compat for AMDGPU in [weakdeps] to 1 for package KomaMRICore, (keep existing compat) (#460) (@github-actions[bot]) - CompatHelper: bump compat for MRIReco to 0.9, (keep existing compat) (#461) (@github-actions[bot]) - Optimize run_spin_excitation! for GPU (#462) (@rkierulf) - Fixing brain phantom values (#465) (@gsahonero) - Add Distributed Examples to Documentation (#468) (@rkierulf) - Include more specific SLURM instructions (#469) (@cncastillo) - GSOC: Add GPU Explanation Section to Documentation (#470) (@rkierulf) - Fix extra allocations when benchmarking with no motion (#483) (@pvillacorta) - Fix bug in `plot_phantom_map` when `length(obj)` > `max_spins` (#485) (@pvillacorta) - Fix sum of `Grad`s (#486) (@pvillacorta) - Fix bugs related with `SpinRange` and flow (#488) (@pvillacorta) - Diffusion tutorial for isotropic diffusion (#489) (@tinorodriguez) - Fix `plot_phantom_map` for dynamic phantoms (#490) (@pvillacorta) - Changing size of plot for diffusion example (#491) (@cncastillo) - KomaMRI v0.9 (#492) (@cncastillo) **Closed issues:** - CUDA memory problems? (#125) - Using BuildKite for GPU related CI? (#147) - Use the same functions to sample RFs in the simulation than for plotting sequence (#167) - Separate CI for more comprehensive results (#276) - Add simulate function for debugging purposes (#288) - Create Pluto example for fat_sat_low_field (#291) - Reporting of phantom spatial sampling in obj.info structure. (#322) - GSOC Proposal Issue Tracking: Part 1 (#349) - GSOC Proposal Issue Tracking: Part 2 (#350) - Extend GPU support to include Apple (Metal.jl), AMD (AMDGPU.jl), and Intel (OneAPI.jl) (#351) - Profile Bloch Simulation Method (#352) - Create new Kernel-based Simulation Method (#353) - Use @LocalMem inside future kernel-based simulation functions to speed up memory access (#354) - Add example of Multi-GPU simulation (#355) - Add example and / or support for multi-node simulation (#356) - Simplify ArbitraryMotion struct (#371) - Re-use weights in interpolation for ArbitraryMotion (#372) - Define `Nspins` for SimpleMotion (#376) - Applying @time to simulate reveals discrepancies on resources and timing reports (#392) - plot_signal docstring (correction) (#401) - [KomaUI Plotting] obj_ui[] does not draw on first time updated. Need to press :rho or other option. (#407) - New motion approach to combine SimpleMotion and ArbitraryMotion into the same phantom (#410) - Future: use @testsetup to reduce time to run tests on GPU (#414) - Problems initializing KomaUI (#432) - Brain phantom values inconsistencies (#464) - `spin_reset` has `eltype` T and should be an `AbstractMatrix{Bool}` (#479)
[Diff since v0.8.1](v0.8.1...v0.8.2) **Merged pull requests:** - Documentation restructure (#377) (@beorostica) - Update Koma package versions (#379) (@beorostica) **Closed issues:** - Modify Literate Examples Generation (#251) - `plot_seq` not plotting Gx if Gy is not on and vice-versa (#374) - KomaMRI errors when using Julia nightly (#375) - Simulation crashes when trying to simulate soft-RF (get_rf_center) (#378)
[Diff since v0.8.0](v0.8.0...v0.8.1) **Merged pull requests:** - Add GPU tested compatibility in documentation (#300) (@beorostica) - Update codecov to consider all subdirectories (#303) (@beorostica) - read and store signature in seq.DEF["signature"] (#313) (@aTrotier) - Fixes for no gradients in seq file. (#314) (@curtcorum) - KomaMRIFiles: RF phase read with the opposite sign from Pulseq (#315) (@beorostica) - Hot fix empty grad (#316) (@beorostica) - Hot version updates (#317) (@beorostica) - Upsample phantoms (#319) (@curtcorum) - Incorrect gradient interpretation when waveforms do not end in zero (#321) (@beorostica) - Remove deprecation warning for sort function (#327) (@beorostica) - Fix colormap bug when ploting phantom maps (#330) (@beorostica) - Remove air tissue from pelvis phantom example (#331) (@beorostica) - Refactor moment functions (#332) (@beorostica) - CI: Set up Dependabot to auto-update pinned GitHub Actions (#336) (@DilumAluthge) - CI: Update `codecov-action` to v4.1.1, and pass the organization-wide `CODECOV_TOKEN` secret (#337) (@DilumAluthge) - CI: Add a manual (`workflow_dispatch`) trigger for CompatHelper; also don't run CompatHelper on PRs (#338) (@DilumAluthge) - Bump actions/checkout from 3 to 4 (#340) (@dependabot[bot]) - Bump actions/cache from 3 to 4 (#341) (@dependabot[bot]) - Anisotropic Phantoms (#342) (@curtcorum) - Add an example Buildkite pipeline file (#344) (@DilumAluthge) - Julia formatter (#369) (@cncastillo) - Update Docs (#370) (@beorostica) **Closed issues:** - Incorrect interpretation of time shaped RFs (#200) - Empty sequence adds an undesired block (#203) - Unnecessary samples are considered when concatenating sequences (#205) - Resolve Circular Dependencies in Tests Environments (#237) - Google Summer of Code (GSoC) (#243) - Refactor functions for computing moments (#268) - Compatible, tested or recommended julia versions for CPU and GPU? (#295) - Default simulate fails after clean install of KomaMRI version 0.7.5 (#298) - MRIReco.jl v0.8.0 incorrect initialization with multiple threads (#299) - Update codecov to consider new subpackages (#302) - Reduce spins for pelvis Phantom (#306) - Interpretation of '.seq' files is not matching with sequence designed on PyPulseq (#320) - Warning: `sort(d::Dict; args...)` is deprecated, use `sort!(OrderedDict(d); args...)` instead. (#326) - Can't define colormap ranges when plotting phantom object (#328) - [BUG] CodeCov Not Working (#335) - Refactor get_Mk to compute 't' and 'tadc' more efficiently (#345) - Performance improvements for plot_seq (function and UI) (#365)
[Diff since v0.7.5](v0.7.5...v0.8.0) **Merged pull requests:** - Improve UI Observables management (#210) (@beorostica) - Fix StackOverflow error plots of big sequences (#220) (@gabuzi) - KomaMRIIO subpackage (#231) (@beorostica) - Add contibuting guidelines (#234) (@beorostica) - KomaMRIBase (#239) (@cncastillo) - KomaMRIBase/KomaMRIFiles: Avoid Circular Deps (#240) (@beorostica) - Add contributors in README and GUI (#247) (@beorostica) - Add educational example to docs (#248) (@beorostica) - Create Template for Issues (#249) (@beorostica) - Add Template for Issues (#250) (@beorostica) - Add educational Pluto example (#253) (@beorostica) - Templates for Issues (#254) (@beorostica) - Update Issue Templates (#257) (@beorostica) - Fix multiple docs warnings (#258) (@beorostica) - Include Koma subpackages in CompatHelper (#259) (@beorostica) - CompatHelper: bump compat for Adapt to 4 for package KomaMRICore, (keep existing compat) (#261) (@github-actions[bot]) - CompatHelper: bump compat for Interpolations to 0.15 for package KomaMRICore, (keep existing compat) (#262) (@github-actions[bot]) - CompatHelper: bump compat for Interpolations to 0.15 for package KomaMRIPlots, (keep existing compat) (#263) (@github-actions[bot]) - Fix URL for educational Pluto example (#266) (@beorostica) - Pluto Educational Example (#267) (@beorostica) - Update README.md (#269) (@pabloirarrazaval) - Fixing precompilation problems in Julia 1.10.0 (#277) (@cncastillo) - Add test for `simulate_slice_profile` function (#280) (@beorostica) - Run nightly CI on push trigger (#283) (@beorostica) - Transform text to path in .svg image (#285) (@beorostica) - Update koma subdir image (#289) (@beorostica) - Patch CI for compat (#290) (@beorostica) - CompatHelper: bump compat for Interpolations to 0.15 for package KomaMRIBase, (keep existing compat) (#292) (@github-actions[bot]) - Improve the visualization of the contributors in the UI (#294) (@beorostica) - Display Koma package versions in issue template (#296) (@beorostica) **Closed issues:** - Annoying random update of plots in GUI (#66) - Separate KomaMRI into simpler subpackages (#92) - Add contributors to UI (#191) - Be more clear about the package versions in the UI (#192) - Koma logo in the docs is incorrect (#193) - Update pipeline figure to show the current organization of the Koma submodules (#194) - GUI gets stuck when simulating twice (#198) - Unattractive group of legends and colors in subplots (#199) - Add Contributing Guidelines (#209) - Add the ability to modify the `seq`, `obj`, `sys`, `raw` and `image` used in the UI from the REPL (#211) - MRD Data opened in Python appears corrupted (#214) - StackOverflowError on plots of large sequences (#221) - Precompiling KomaMRIPlots hangs on Windows (#225) - Add a template for reporting issues (#228) - KomaMRIFiles (#232) - Additional `<userParameters>` tag within XML header of exported MRD (#236) - Upload educational Pluto notebook (#242) - Update Subpackages in README (#244) - Update CompatHelper to also check subpacakge's compat (#245) - Add MRI together's talk to News section in README (#246) - Generete a test for slice simulation (#252) - Avoid Warnings During Document Generation (#255) - KomaMRIBase (#265) - Basic trapezoidal `Grad` usage, parameter definition with a plot. (#270) - KomaMRIPlots doesn't precompile in Julia 1.10.0 (#274) - Move Julia compat to 1.9 (#275) - Use nightly tests in CI (#281) - Increment code coverage (#282) - Improve the visualization of contributors and colors in the UI (#293)
[Diff since v0.7.4](v0.7.4...v0.7.5) **Merged pull requests:** - Use reshape() instead of ;; (#177) (@beorostica) - Fix long names displayed in the sidebar (#180) (@beorostica) - UI update. (#181) (@cncastillo) - Update README.md [skip ci] (#182) (@cncastillo) - Update README.md [skip ci] (#185) (@cncastillo) - CompatHelper: bump compat for MRIReco to 0.8, (keep existing compat) (#186) (@github-actions[bot]) - KomaMRIPlots Pluto compatibility (#195) (@cncastillo) **Closed issues:** - Edge cases arise during simple 1-spin simulation (#85) - Plots fail when used in Pluto notebooks (#166) - Default KomaUI sequence is different in julia versions 1.6 and 1.9 (#175) - Long file names overflow from UI's navbar (#176) - Adding code style, compatible Julia version, and license to README.md (#188) - Add KomaMRI.jl to MRHub (#196) - Bug with Δf in RF_sinc function (#197) - Replicate pulseq functions to create sequences (#206)
[Diff since v0.7.3](v0.7.3...v0.7.4) **Closed issues:** - Exporting results to .mat from the GUI (#70) - Solve edge-case for avoiding additional delay in the acquisition (#88) - Separate simulation base to KomaMRIBase subpackage (#92) - Problem with ADC next to RF object (#161) - Discretization of gradient waveform fails for square gradients / very high slew rates (#162) - KomaUI not working in Julia 1.9 (#168) **Merged pull requests:** - Modules KomaMRICore and KomaMRIPlots (#148) (@beorostica) - Fix for no-gpu devices (#153) (@beorostica) - CompatHelper: add new compat entry for KomaMRICore at version 0.7, (keep existing compat) (#154) (@github-actions[bot]) - Change UUID of KomaMRIPlots subpackage (#156) (@beorostica) - Add compat version 0.7 for KomaMRICore (#157) (@beorostica) - Apidocs (#158) (@beorostica) - CompatHelper: add new compat entry for KomaMRIPlots at version 0.7, (keep existing compat) (#159) (@github-actions[bot]) - Update ci.yml for codecov subpackages (#160) (@beorostica) - KomaMRI v0.7.4: Bug fixes and minor features (#163) (@cncastillo) - Avoid dialog (#171) (@beorostica) - CompatHelper: add new compat entry for MAT at version 0.10, (keep existing compat) (#172) (@github-actions[bot]) - Update Project.toml for KomaMRIPlots to v0.7.6 (#173) (@beorostica)
[Diff since v0.7.1](v0.7.1...v0.7.2) **Closed issues:** - Default number of threads for CPU parallelization (#141) **Merged pull requests:** - Literate (#140) (@beorostica)
PreviousNext