![]() |
JEMRIS 2.9.2
open-source MRI simulations
|
The Sample is the object to simulate. It contains the spins. More...
#include <Sample.h>
Inheritance diagram for Sample:
Collaboration diagram for Sample:Public Member Functions | |
| Sample () | |
| Sample (const string &file, const int multiple=1) | |
| Sample (const size_t size) | |
| virtual | ~Sample () |
| virtual void | Prepare (const std::string &fname="") |
| void | ClearSpins () |
| delete the spin structure | |
| void | CreateSpins (const size_t size) |
| create the spin structure | |
| void | CreateSpins (const size_t nprops, const size_t size) |
| create the spin structure | |
| size_t | GetSize () const |
| size_t | GetNProps () const |
| vector< size_t > | GetSampleDims () const |
| void | SetSampleDims (vector< size_t > d) |
| const int | GetSampleDimsSize () const |
| Dimensions. | |
| Sample * | GetSubSample (const int n, const size_t size) |
| void | GetValues (const size_t l, double *val) |
| Get values for spin l and deliver them in val. | |
| double * | GetResolution () |
| Get grid resolution. | |
| void | InitRandGenerator (int val=1) |
| Initialize the randome number generator. | |
| void | SetR2Prime (double val) |
| Set the random local field fluctuations. | |
| void | SetPositionRandomness (double val) |
| Set the position randomness in per cent of the cartesian resolution. | |
| double | GetDeltaB (size_t pos=-1) |
| Get off-resonance of a specific spin. | |
| virtual IO::Status | Populate (const string &file) |
| double * | GetSpinsData () |
| void | SetReorderStrategy (string strat) |
| void | ReorderSample () |
| void | DumpRestartInfo (CoilArray *RxCA) |
| Utility function for restart: dump information to restart jemris after crash. | |
| void | ReportSpin (int beg, int end, int value) |
| Utility function for restart: mark spins which have been calculated. | |
| int | ReadSpinsState () |
| Utility function for restart: Read restart file after crash. | |
| void | ClearSpinsState () |
| Utility function for restart: mark all spins as not simulated. | |
| void | GetScatterVectors (int *sendcount, int *displ, int size) |
| utility function to send sample in parallel mode: initial samples are send via mpi_scatterv; get needed vectors to scatter data. | |
| void | GetNextPacket (int &noSpins, int &NextSpinToSend, int SlaveId) |
| utility function to send sample in parallel mode: get next spin packet to be sent. (beginning index + no_spins to send) | |
| int | SpinsLeft () |
| Returns No spins which still needs to be calculated. | |
| void | SetTimeInterval (double val) |
| Set Time interval in seconds after which new spins are sent (approx. value.) | |
| bool | IsRestart () |
| true if simulation run is from a restart | |
| void | GetHelper (double *target) |
| double * | GetHelper () |
| size_t | GetHelperSize () |
| int | GetNoSpinCompartments () |
| void | SetNoSpinCompartments (int n) |
| void | CreateHelper (const size_t l) |
| void | CreateDims (const size_t l) |
| void | CopyHelper (double *out) |
| virtual void | CropEnumerate () |
Protected Member Functions | |
| void | MultiplySample (int multiple) |
Protected Attributes | |
| Ensemble< double > | m_ensemble |
| vector< size_t > | m_index |
| vector< double > | m_res |
| vector< double > | m_offset |
| RNG | m_rng |
| double | m_r2prime |
| double | m_pos_rand_perc |
| SampleReorderStrategyInterface * | m_reorder_strategy |
| int | m_max_paket_size |
| int | m_min_paket_size |
| int | m_next_spin_to_send |
| vector< char > | m_spin_state |
| bool | m_is_restart |
| vector< int > | m_spins_sent |
| vector< int > | m_last_offset_sent |
| vector< timeval > | m_last_time |
| double | m_sent_interval |
| double | m_total_cpu_time |
| double | m_no_spins_done |
| vector< double > | m_helper |
| int | m_no_spin_compartments |
The Sample is the object to simulate. It contains the spins.
| Sample::Sample | ( | ) |
Constructor
Here is the call graph for this function:| Sample::Sample | ( | const string & | file, |
| const int | multiple = 1 ) |
Constructor
Create a container from binary file
| file | Sample binary file |
Here is the call graph for this function:| Sample::Sample | ( | const size_t | size | ) |
Constructor
Create a container of requested size initialized with zeros
| size | Size of the sample |
Here is the call graph for this function:
|
virtual |
Destructor
Here is the call graph for this function:| void Sample::CreateSpins | ( | const size_t | nprops, |
| const size_t | size ) |
create the spin structure
| size | Size of the spin structure to create |
Here is the call graph for this function:| void Sample::CreateSpins | ( | const size_t | size | ) |
create the spin structure
| size | Size of the spin structure to create |
Here is the call graph for this function:
Here is the caller graph for this function:| double Sample::GetDeltaB | ( | size_t | pos = -1 | ) |
Get off-resonance of a specific spin.
The off-resonance is given by the deterministic value, read by Populate from the binary file, plus the random field fluctuation specified by SetR2Prime.
| pos | Position of the spin. If negative, last acquired spin by GetValues is used. |
Here is the call graph for this function:
Here is the caller graph for this function:
|
inline |
Get number of spin properties including spatial
Here is the call graph for this function:
Here is the caller graph for this function:
|
inline |
Get grid resolution.
|
inline |
Get number of sample dimensions
Here is the call graph for this function:
Here is the caller graph for this function:
|
inline |
Dimensions.
Here is the call graph for this function:| size_t Sample::GetSize | ( | ) | const |
Get size of the sample
Here is the call graph for this function:
Here is the caller graph for this function:
|
inline |
returns pointer to sample data (needed for MPI send/receive)
Here is the call graph for this function:
Here is the caller graph for this function:| Sample * Sample::GetSubSample | ( | const int | n, |
| const size_t | size ) |
Get a subset of this sample
| n | N-th subset |
| size | Size of the subset |
| void Sample::GetValues | ( | const size_t | l, |
| double * | val ) |
Get values for spin l and deliver them in val.
| l | Spin number |
| val | Output container |
Here is the call graph for this function:
Here is the caller graph for this function:
|
inline |
Initialize the randome number generator.
| val | any integer |
Here is the caller graph for this function:
|
virtual |
Create a container from binary file
| file | Sample binary file |
Here is the call graph for this function:
Here is the caller graph for this function:
|
virtual |
init variables which are same for all constructors
Reimplemented in MultiPoolSample.
Here is the call graph for this function:
Here is the caller graph for this function:| void Sample::ReorderSample | ( | ) |
executes sample reordering
Here is the caller graph for this function:
|
inline |
Set the position randomness in per cent of the cartesian resolution.
| val | Percentage width of the Gaussian distribution. |
Here is the caller graph for this function:
|
inline |
Set the random local field fluctuations.
| val | R2Prime (Shaping parameter of the Lorentz distribution in kHz). |
Here is the caller graph for this function:| void Sample::SetReorderStrategy | ( | string | strat | ) |
can set a method to reorder the sample (do nothing, shuffle sample,... )
Here is the caller graph for this function:
|
inline |
Get number of sample dimensions
Here is the call graph for this function:
Here is the caller graph for this function:
|
protected |
clones sample 'multiple'-times, e.g. for diffusion simulation
|
protected |
keeps track whether spin is not touched (==0), sent (==1) or calculated (==2)
|
protected |
no of spins last sent to each slave
|
protected |
offset to the last spins sent
|
protected |
maximal no of spins to send
|
protected |
minimal no of spins to send
|
protected |
< Sample resolution [mm]
|
protected |
< R2-Prime == shaping parameter of the Lorentzian distribution
|
protected |
< random number generator
|
protected |
< Percantage (of cartesian resolution) randomness in spin position .
|
protected |
< Sample dimensions
|
protected |
< Sample offeset to {0,0,0} origin
|
protected |
last timepoint at which spins were sent
|
protected |
true if simulation run is from a restart
|
protected |
approx. time in seconds after which new spins are sent
-- last change 03.01.2025 |
Tony Stoecker |
Imprint |
Data Protection --