MRArbGrad 4.2.0__tar.gz → 4.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0/MRArbGrad.egg-info}/PKG-INFO +1 -1
  2. {mrarbgrad-4.2.0/MRArbGrad.egg-info → mrarbgrad-4.3.0}/PKG-INFO +1 -1
  3. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/mrarbgrad_src/Utility.py +10 -2
  4. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/mrarbgrad_src/__init__.py +1 -1
  5. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/mrarbgrad_src/ext/traj/VDSpiral.h +13 -9
  6. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/pyproject.toml +1 -1
  7. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/LICENSE +0 -0
  8. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/MANIFEST.in +0 -0
  9. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/MRArbGrad.egg-info/SOURCES.txt +0 -0
  10. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/MRArbGrad.egg-info/dependency_links.txt +0 -0
  11. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/MRArbGrad.egg-info/requires.txt +0 -0
  12. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/MRArbGrad.egg-info/top_level.txt +0 -0
  13. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/README.md +0 -0
  14. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/example/example_BuiltInTraj.py +0 -0
  15. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/example/example_ExternalFunction2D.py +0 -0
  16. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/example/example_ExternalSamples2D.py +0 -0
  17. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/example/example_ExternalSamples3D.py +0 -0
  18. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/mrarbgrad_src/Function.py +0 -0
  19. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/mrarbgrad_src/ext/mag/Mag.cpp +0 -0
  20. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/mrarbgrad_src/ext/mag/Mag.h +0 -0
  21. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/mrarbgrad_src/ext/main.cpp +0 -0
  22. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/mrarbgrad_src/ext/traj/Cones.h +0 -0
  23. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/mrarbgrad_src/ext/traj/MrTraj.h +0 -0
  24. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/mrarbgrad_src/ext/traj/MrTraj_2D.h +0 -0
  25. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/mrarbgrad_src/ext/traj/Rosette.h +0 -0
  26. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/mrarbgrad_src/ext/traj/Seiffert.h +0 -0
  27. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/mrarbgrad_src/ext/traj/Shell3d.h +0 -0
  28. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/mrarbgrad_src/ext/traj/Spiral.h +0 -0
  29. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/mrarbgrad_src/ext/traj/TrajFunc.h +0 -0
  30. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/mrarbgrad_src/ext/traj/Yarnball.h +0 -0
  31. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/mrarbgrad_src/ext/utility/Intp.h +0 -0
  32. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/mrarbgrad_src/ext/utility/LinIntp.h +0 -0
  33. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/mrarbgrad_src/ext/utility/SplineIntp.h +0 -0
  34. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/mrarbgrad_src/ext/utility/global.cpp +0 -0
  35. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/mrarbgrad_src/ext/utility/global.h +0 -0
  36. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/mrarbgrad_src/ext/utility/v3.cpp +0 -0
  37. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/mrarbgrad_src/ext/utility/v3.h +0 -0
  38. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/mrarbgrad_src/trajfunc/__init__.py +0 -0
  39. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/mrarbgrad_src/trajfunc/main.py +0 -0
  40. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/setup.cfg +0 -0
  41. {mrarbgrad-4.2.0 → mrarbgrad-4.3.0}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: MRArbGrad
3
- Version: 4.2.0
3
+ Version: 4.3.0
4
4
  Summary: Gradient waveform design tool for arbitrary k-space trajectories.
5
5
  Author-email: Ryan <ryan_shanghaitech@proton.me>
6
6
  License-Expression: MIT
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: MRArbGrad
3
- Version: 4.2.0
3
+ Version: 4.3.0
4
4
  Summary: Gradient waveform design tool for arbitrary k-space trajectories.
5
5
  Author-email: Ryan <ryan_shanghaitech@proton.me>
6
6
  License-Expression: MIT
@@ -5,8 +5,8 @@ from numpy.typing import *
5
5
  goldrat = (1+sqrt(5))/2
6
6
  goldang = (2*pi)/(1+goldrat)
7
7
 
8
- getGoldrat = lambda: goldrat
9
- getGoldang = lambda: goldang
8
+ def getGoldrat()->float: return goldrat
9
+ def getGoldang()->float: return goldang
10
10
 
11
11
  def gradClip(lstArrGrad:list[NDArray]|NDArray, dt:float, sLim:float, gLim:float) -> list[NDArray]|NDArray:
12
12
  """
@@ -55,6 +55,14 @@ def rand3d(i:int|NDArray, nAx:int=3, kx=sqrt(2), ky=sqrt(3), kz=sqrt(7)) -> NDAr
55
55
  (i**2 * 1/(1+ky))%1,
56
56
  (i**3 * 1/(1+kz))%1
57
57
  ][:nAx]).T
58
+
59
+ def genPermTab(n:int) -> list[int]:
60
+ inc = around(n*(goldrat-1)).astype(int64)
61
+ while gcd(inc,n)!=1: inc-=1
62
+ lstIdx = []
63
+ for i in range(n):
64
+ lstIdx.append(i*inc%n)
65
+ return lstIdx
58
66
 
59
67
  def cvtGrad2Traj(arrG:NDArray, dtGrad:int|float, dtADC:int|float, nShift:int|float=1.0) -> tuple[NDArray, NDArray]:
60
68
  """
@@ -1,6 +1,6 @@
1
1
  from .Function import calGrad4ExFunc, calGrad4ExSamp
2
2
  from .Function import getG_Cones, getG_Rosette, getG_Rosette_Trad, getG_Seiffert, getG_Shell3d, getG_Spiral, getG_VDSpiral, getG_VDSpiral_RT, getG_Yarnball, getG_Yarnball_RT
3
3
  from .Function import setSolverMtg, setTrajRev, setGoldAng, setShuf, setMaxG0, setMaxG1, setMagGradSamp, setMagTrajSamp, setMagOverSamp, setMagSFS, setMagGradRep, setMagTrajRep, setDbgPrint, saveF64, loadF64, saveF32, loadF32
4
- from .Utility import _calDiaphony, rotate, _calJacElip, _calCompElipInt, _calSphFibPt, cvtGrad2Traj, getGoldang, getGoldrat, rand3d, gradClip
4
+ from .Utility import _calDiaphony, rotate, _calJacElip, _calCompElipInt, _calSphFibPt, cvtGrad2Traj, getGoldang, getGoldrat, rand3d, gradClip, genPermTab
5
5
 
6
6
  from . import trajfunc
@@ -14,7 +14,10 @@ public:
14
14
  m_phi0 = phi0;
15
15
 
16
16
  m_p0 = 0e0;
17
- m_p1 = (std::log(m_kRhoPhi1)-std::log(m_kRhoPhi0)) / (2e0*(m_kRhoPhi1-m_kRhoPhi0));
17
+ if (m_kRhoPhi0!=m_kRhoPhi1)
18
+ { m_p1 = (std::log(kRhoPhi1)-std::log(kRhoPhi0)) / (2e0*(kRhoPhi1-kRhoPhi0)); }
19
+ else
20
+ { m_p1 = 0.5e0/kRhoPhi0; }
18
21
  }
19
22
 
20
23
  virtual bool getK(v3* k, f64 p)
@@ -22,7 +25,11 @@ public:
22
25
  if (k==NULL) return false;
23
26
 
24
27
  f64& phi = p;
25
- f64 rho = m_kRhoPhi0*(std::exp(2e0*(m_kRhoPhi1 - m_kRhoPhi0)*phi) - 1e0) / (2e0*(m_kRhoPhi1 - m_kRhoPhi0));
28
+ f64 rho;
29
+ if (m_kRhoPhi0!=m_kRhoPhi1)
30
+ { rho = m_kRhoPhi0*(std::exp(2e0*(m_kRhoPhi1 - m_kRhoPhi0)*phi) - 1e0) / (2e0*(m_kRhoPhi1 - m_kRhoPhi0)); }
31
+ else
32
+ { rho = m_kRhoPhi0*phi; }
26
33
  k->x = rho * std::cos(phi + m_phi0);
27
34
  k->y = rho * std::sin(phi + m_phi0);
28
35
  k->z = 0e0;
@@ -39,19 +46,16 @@ protected:
39
46
  class VDSpiral: public MrTraj_2D
40
47
  {
41
48
  public:
42
- VDSpiral(const GeoPara& objGeoPara, const GradPara& objGradPara, i64 nStack, f64 kRhoPhi0, f64 dRhoPhi1):
49
+ VDSpiral(const GeoPara& objGeoPara, const GradPara& objGradPara, i64 nStack, f64 kRhoPhi0, f64 kRhoPhi1):
43
50
  MrTraj_2D(objGeoPara,objGradPara,0,0,0,0,v3(),vv3())
44
51
  {
45
- if (kRhoPhi0==dRhoPhi1) throw std::invalid_argument("kRhoPhi0==dRhoPhi1");
46
-
47
- m_ptfBaseTraj = new VDSpiral_TrajFunc(kRhoPhi0, dRhoPhi1);
52
+ m_ptfBaseTraj = new VDSpiral_TrajFunc(kRhoPhi0, kRhoPhi1);
48
53
  ASSERT(m_ptfBaseTraj!=NULL);
49
54
  m_nStack = nStack;
50
55
 
51
- i64 nRot = calNRot(std::max(kRhoPhi0, dRhoPhi1), m_objGeoPara.nPix);
56
+ i64 nRot = calNRot(std::max(kRhoPhi0, kRhoPhi1), m_objGeoPara.nPix);
52
57
  m_rotang = calRotAng(nRot);
53
58
  m_nAcq = nRot*m_nStack;
54
- PRINT(m_nAcq) // TEST
55
59
 
56
60
  calGrad(&m_v3BaseM0PE, &m_vv3BaseGRO, NULL, *m_ptfBaseTraj, m_objGradPara);
57
61
  m_nSampMax = m_vv3BaseGRO.size();
@@ -78,7 +82,7 @@ public:
78
82
  {
79
83
  m_kRhoPhi0 = kRhoPhi0;
80
84
  m_kRhoPhi1 = kRhoPhi1;
81
- m_nAcq = calNRot(kRhoPhi1, objGeoPara.nPix);
85
+ m_nAcq = calNRot(std::max(kRhoPhi0, kRhoPhi1), objGeoPara.nPix);
82
86
  m_dRotAng = 2e0*M_PI/m_nAcq;
83
87
  genPermTab(&m_vi64PermTab, m_nAcq);
84
88
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "MRArbGrad"
7
- version = "4.2.0"
7
+ version = "4.3.0"
8
8
  dependencies = ["numpy"]
9
9
 
10
10
  description = "Gradient waveform design tool for arbitrary k-space trajectories."
File without changes
File without changes
File without changes
File without changes
File without changes