Exemplo n.º 1
0
from Objects.Patterns import SpiralPhyllotaxisPattern

fibo = 1
phyllo = SpiralPhyllotaxisPattern(
    8*2584, 2584, n_readouts=100, time_per_acquisition=0.006, alternated_points=True)

# phyllo.write_to_matlab('./matlab_test.mat','k')
Exemplo n.º 2
0
from Tools.fibonacci import make_fibonacci
import matplotlib.pyplot as plt

fibonacci = make_fibonacci(5)

averages = []
averages_spir_uni = []
averages_spir_nonuni = []
rsds = []
rsds_spir_uni = []
rsds_spir_nonuni = []
phyllos = []

for fibo in fibonacci:
    print('starting fibo = {}'.format(fibo))
    phyllo = SpiralPhyllotaxisPattern(n_readouts_per_spoke=1,n_spokes_per_interleaf=34,n_interleaves=fibo,alternated_spokes=False)
    # phyllo = SpiralPhyllotaxisPattern(fibo*34, fibo, alternated_points=False)
    phyllos.append(phyllo)
    averages.append(phyllo.compute_average_distance_between_spokes())
    rsds.append(phyllo.compute_rsd())
    spir_uni = ArchimedeanSpiralUniform(n_readouts_per_spoke=1,n_spokes_per_interleaf=34,n_interleaves=fibo)
    averages_spir_uni.append(
        spir_uni.compute_average_distance_between_spokes())
    rsds_spir_uni.append(spir_uni.compute_rsd())
    spir_nonuni = ArchimedeanSpiralNonUniform(n_readouts_per_spoke=1,n_spokes_per_interleaf=34,n_interleaves=fibo)
    averages_spir_nonuni.append(
        spir_nonuni.compute_average_distance_between_spokes())
    rsds_spir_nonuni.append(spir_nonuni.compute_rsd())


plt.scatter(fibonacci, averages, label='phyllotaxis')
fibonacci = [
    1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584,
    4181, 6765, 10946, 17711
]

# cardiac phases
heart = Heart(N_target * time_per_acquisition * 2, 0.05)

# articles to show n_interleaf does not change pattern, just interleave style


def only_first_cardiac_phase(point):
    return point.cardiac_phase == 0


for fibo in fibonacci:
    for add_readout_ends in [True, False]:
        N = find_best_number_of_points(N_target, fibo)
        test = SpiralPhyllotaxisPattern(
            N * fibo,
            fibo,
            time_per_acquisition=time_per_acquisition,
            alternated_points=True)
        test.separate_in_time_phases(heart.beats)
        test.draw(title='N_total = {} , {} interleaf'.format(N * fibo, fibo),
                  alpha=0.3,
                  marker_size=1,
                  colour='cardiac_phase',
                  filter_func=only_first_cardiac_phase,
                  display=True)
Exemplo n.º 4
0
from Tools.fibonacci import make_fibonacci
import matplotlib.pyplot as plt

fibonacci = make_fibonacci(13)

averages = []
averages_spir_uni = []
averages_spir_nonuni = []
rsds = []
rsds_spir_uni = []
rsds_spir_nonuni = []
phyllos = []

for fibo in fibonacci:
    print('starting fibo = {}'.format(fibo))
    phyllo = SpiralPhyllotaxisPattern(fibo * 34, fibo, alternated_points=False)
    phyllos.append(phyllo)
    averages.append(phyllo.compute_average_distance_between_spokes())
    rsds.append(phyllo.compute_rsd())
    spir_uni = ArchimedeanSpiralUniform(fibo * 34, fibo)
    averages_spir_uni.append(
        spir_uni.compute_average_distance_between_spokes())
    rsds_spir_uni.append(spir_uni.compute_rsd())
    spir_nonuni = ArchimedeanSpiralNonUniform(fibo * 34, fibo)
    averages_spir_nonuni.append(
        spir_nonuni.compute_average_distance_between_spokes())
    rsds_spir_nonuni.append(spir_nonuni.compute_rsd())

plt.scatter(fibonacci, averages, label='phyllotaxis')
plt.scatter(fibonacci, averages_spir_uni, label='uniform Archimedean spiral')
plt.scatter(fibonacci,
Exemplo n.º 5
0
def only_first_cardiac_phase(point):
    return point.cardiac_phase == 0


for heart in hearts:
    for number_of_projections_per_interleaf in numbers_of_projections_per_interleaf:
        print('tres {}; heartbeat {}; n proj {}'.format(
            heart.temporal_phase_resolution, heart.average_bps,
            number_of_projections_per_interleaf))
        n_interleaf = find_best_fibo(N_readouts_target,
                                     number_of_projections_per_interleaf,
                                     fibonacci)
        phyllo = SpiralPhyllotaxisPattern(
            n_interleaf * number_of_projections_per_interleaf,
            n_interleaf,
            time_per_acquisition=time_per_readout,
            alternated_points=True)
        phyllo.separate_in_time_phases(heart.beats)
        phyllo.draw(
            title='N interleaves = {} ; {} readouts per interleaf ; Ntot = {}'.
            format(phyllo.n_interleaf, phyllo.n_points / phyllo.n_interleaf,
                   phyllo.n_points),
            alpha=0.3,
            marker_size=1,
            colour='cardiac_phase',
            filter_func=only_first_cardiac_phase,
            display=True
        )  # save='pres_18_05_2020/tres{}_beat{}_proj{}.png'.format(heart.temporal_phase_resolution,heart.average_bps,number_of_projections_per_interleaf)

# from Objects.Patterns import SpiralPhyllotaxisPattern
Exemplo n.º 6
0
from Objects.Patterns import SpiralPhyllotaxisPattern, ArchimedeanSpiralUniform, ArchimedeanSpiralNonUniform
from Tools.Heart import Heart

n_spokes = 5
n_interleaves = 8

phyllo = SpiralPhyllotaxisPattern(n_readouts_per_spoke=1,
                                  n_spokes_per_interleaf=n_spokes,
                                  n_interleaves=n_interleaves,
                                  alternated_spokes=False)
phyllo.draw(colour='first_interleaf', marker_size=10, display=True)

arch_uni = ArchimedeanSpiralUniform(n_readouts_per_spoke=1,
                                    n_spokes_per_interleaf=n_spokes,
                                    n_interleaves=n_interleaves)
arch_uni.draw(colour='first_interleaf', marker_size=10, display=True)

arch_nonuni = ArchimedeanSpiralNonUniform(n_readouts_per_spoke=1,
                                          n_spokes_per_interleaf=n_spokes,
                                          n_interleaves=n_interleaves)
arch_nonuni.draw(colour='first_interleaf', marker_size=10, display=True)

### temporal resolution
temporal_resolution = 0.06
beating_time = 2 * n_spokes * n_interleaves * temporal_resolution

heart = Heart(beating_time,
              temporal_phase_resolution=temporal_resolution,
              average_bps=1.,
              bps_rms=0.0)
Exemplo n.º 7
0
from Objects.Patterns import SpiralPhyllotaxisPattern, InterleavedMatLabPattern

phyllo = SpiralPhyllotaxisPattern(n_readouts_per_spoke=272,
                                  n_spokes_per_interleaf=8,
                                  n_interleaves=2584,
                                  alternated_spokes=True,
                                  rmax=0.5)
phyllo.write_to_matlab('./matlab_test.mat', 'myk')

# matlab = InterleavedMatLabPattern('ph_11072019_2035184_5_2_wip_phyllo_classicV4_k.mat','k',time_per_acquisition=0.06)
# matlab.draw(filter_func=is_on_sphere,display=True)

#differences: mainly on phi, start at different positions, rotating opposite way ; also alteranting evens for me, odds for monica