@@ -1304,35 +1304,35 @@ def ramp(self, t, duration, initial, final, samplerate, units=None, truncation=1
1304
1304
message = '' .join (['WARNING: AnalogOutput \' %s\' has the same initial and final value at time t=%.10fs with duration %.10fs. In order to save samples and clock ticks this instruction is replaced with a constant output. ' % (self .name , t , duration )])
1305
1305
sys .stderr .write (message + '\n ' )
1306
1306
else :
1307
- self .add_instruction (t , {'function' : functions .ramp (round (t + truncation * duration , 10 ) - round (t , 10 ), initial , final ), 'description' : 'linear ramp' ,
1307
+ self .add_instruction (t , {'function' : functions .ramp (round (t + duration , 10 ) - round (t , 10 ), initial , final ), 'description' : 'linear ramp' ,
1308
1308
'initial time' : t , 'end time' : t + truncation * duration , 'clock rate' : samplerate , 'units' : units })
1309
1309
return truncation * duration
1310
1310
1311
1311
def sine (self , t , duration , amplitude , angfreq , phase , dc_offset , samplerate , units = None , truncation = 1. ):
1312
1312
self ._check_truncation (truncation )
1313
1313
if truncation > 0 :
1314
- self .add_instruction (t , {'function' : functions .sine (duration , amplitude , angfreq , phase , dc_offset ), 'description' : 'sine wave' ,
1314
+ self .add_instruction (t , {'function' : functions .sine (round ( t + duration , 10 ) - round ( t , 10 ) , amplitude , angfreq , phase , dc_offset ), 'description' : 'sine wave' ,
1315
1315
'initial time' : t , 'end time' : t + truncation * duration , 'clock rate' : samplerate , 'units' : units })
1316
1316
return truncation * duration
1317
1317
1318
1318
def sine_ramp (self , t , duration , initial , final , samplerate , units = None , truncation = 1. ):
1319
1319
self ._check_truncation (truncation )
1320
1320
if truncation > 0 :
1321
- self .add_instruction (t , {'function' : functions .sine_ramp (duration , initial , final ), 'description' : 'sinusoidal ramp' ,
1321
+ self .add_instruction (t , {'function' : functions .sine_ramp (round ( t + duration , 10 ) - round ( t , 10 ) , initial , final ), 'description' : 'sinusoidal ramp' ,
1322
1322
'initial time' : t , 'end time' : t + truncation * duration , 'clock rate' : samplerate , 'units' : units })
1323
1323
return truncation * duration
1324
1324
1325
1325
def sine4_ramp (self , t , duration , initial , final , samplerate , units = None , truncation = 1. ):
1326
1326
self ._check_truncation (truncation )
1327
1327
if truncation > 0 :
1328
- self .add_instruction (t , {'function' : functions .sine4_ramp (duration , initial , final ), 'description' : 'sinusoidal ramp' ,
1328
+ self .add_instruction (t , {'function' : functions .sine4_ramp (round ( t + duration , 10 ) - round ( t , 10 ) , initial , final ), 'description' : 'sinusoidal ramp' ,
1329
1329
'initial time' : t , 'end time' : t + truncation * duration , 'clock rate' : samplerate , 'units' : units })
1330
1330
return truncation * duration
1331
1331
1332
1332
def sine4_reverse_ramp (self , t , duration , initial , final , samplerate , units = None , truncation = 1. ):
1333
1333
self ._check_truncation (truncation )
1334
1334
if truncation > 0 :
1335
- self .add_instruction (t , {'function' : functions .sine4_reverse_ramp (duration , initial , final ), 'description' : 'sinusoidal ramp' ,
1335
+ self .add_instruction (t , {'function' : functions .sine4_reverse_ramp (round ( t + duration , 10 ) - round ( t , 10 ) , initial , final ), 'description' : 'sinusoidal ramp' ,
1336
1336
'initial time' : t , 'end time' : t + truncation * duration , 'clock rate' : samplerate , 'units' : units })
1337
1337
return truncation * duration
1338
1338
@@ -1373,7 +1373,7 @@ def exp_ramp(self, t, duration, initial, final, samplerate, zero=0, units=None,
1373
1373
raise LabscriptError (
1374
1374
'Truncation type for exp_ramp not supported. Must be either linear or exponential.' )
1375
1375
if trunc_duration > 0 :
1376
- self .add_instruction (t , {'function' : functions .exp_ramp (duration , initial , final , zero ), 'description' : 'exponential ramp' ,
1376
+ self .add_instruction (t , {'function' : functions .exp_ramp (round ( t + duration , 10 ) - round ( t , 10 ) , initial , final , zero ), 'description' : 'exponential ramp' ,
1377
1377
'initial time' : t , 'end time' : t + trunc_duration , 'clock rate' : samplerate , 'units' : units })
1378
1378
return trunc_duration
1379
1379
@@ -1412,14 +1412,14 @@ def exp_ramp_t(self, t, duration, initial, final, time_constant, samplerate, uni
1412
1412
raise LabscriptError (
1413
1413
'Truncation type for exp_ramp_t not supported. Must be either linear or exponential.' )
1414
1414
if trunc_duration > 0 :
1415
- self .add_instruction (t , {'function' : functions .exp_ramp_t (duration , initial , final , time_constant ), 'description' : 'exponential ramp with time consntant' ,
1415
+ self .add_instruction (t , {'function' : functions .exp_ramp_t (round ( t + duration , 10 ) - round ( t , 10 ) , initial , final , time_constant ), 'description' : 'exponential ramp with time consntant' ,
1416
1416
'initial time' : t , 'end time' : t + trunc_duration , 'clock rate' : samplerate , 'units' : units })
1417
1417
return trunc_duration
1418
1418
1419
1419
def piecewise_accel_ramp (self , t , duration , initial , final , samplerate , units = None , truncation = 1. ):
1420
1420
self ._check_truncation (truncation )
1421
1421
if truncation > 0 :
1422
- self .add_instruction (t , {'function' : functions .piecewise_accel (duration , initial , final ), 'description' : 'piecewise linear accelleration ramp' ,
1422
+ self .add_instruction (t , {'function' : functions .piecewise_accel (round ( t + duration , 10 ) - round ( t , 10 ) , initial , final ), 'description' : 'piecewise linear accelleration ramp' ,
1423
1423
'initial time' : t , 'end time' : t + truncation * duration , 'clock rate' : samplerate , 'units' : units })
1424
1424
return truncation * duration
1425
1425
@@ -1432,7 +1432,7 @@ def customramp(self, t, duration, function, *args, **kwargs):
1432
1432
def custom_ramp_func (t_rel ):
1433
1433
"""The function that will return the result of the user's function,
1434
1434
evaluated at relative times t_rel from 0 to duration"""
1435
- return function (t_rel , duration , * args , ** kwargs )
1435
+ return function (t_rel , round ( t + duration , 10 ) - round ( t , 10 ) , * args , ** kwargs )
1436
1436
1437
1437
if truncation > 0 :
1438
1438
self .add_instruction (t , {'function' : custom_ramp_func , 'description' : 'custom ramp: %s' % function .__name__ ,
0 commit comments