#!/usr/bin/python3 import spintrum import math import matplotlib.pyplot as plt import numpy as np import matplotlib as mpl from mpl_toolkits.mplot3d import Axes3D def run(dirs): gammas = [10] #Hz/T jCouplings = [[0]] BThermal = 10e0 T2 = 10 sampleRate = 1e4 T= 1/sampleRate B0=10. B1=0.3e0 points = 1650 f = B0*gammas[0] bx = np.array([np.sin(2*math.pi*f*t/sampleRate)*B1 for t in range(points)]) by = np.array([np.cos(2*math.pi*f*t/sampleRate)*B1 for t in range(points)]) spinOp = spintrum.SpinOperations() spinOp.add_operation(spintrum.SpinOperations.OPERATION__THERMAL_POPULATE, {'Bx': 0, 'By': 0, 'Bz': BThermal, 'T': 293.778}) spinOp.add_operation(spintrum.SpinOperations.OPERATION__SET_HAMILTONIAN, {'Bx': 0, 'By': 0, 'Bz': B0}) spinOp.add_operation(spintrum.SpinOperations.OPERATION__EVOLVE_TIME_DEPENDENT, {'threads': 4, 'samplingRate': sampleRate, 'store': dirs, 'input': {'Bx': bx, 'By': by}}) signal = spintrum.simulate(gyromagneticRatios=gammas, jCouplings=jCouplings, spinOperations=spinOp) return signal #this will result in points in the form xyzxyzxyz (order doesn't make a difference) data = run('xyz') mpl.rcParams['legend.fontsize'] = 10 fig = plt.figure() ax = fig.gca(projection='3d') datanp = np.transpose(np.split(np.array(data),len(data)/3)) ax.plot(datanp[0], datanp[1], datanp[2], label='parametric curve') ax.legend() plt.show()