flux.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. # greaseweazle/flux.py
  2. #
  3. # Written & released by Keir Fraser <keir.xen@gmail.com>
  4. #
  5. # This is free and unencumbered software released into the public domain.
  6. # See the file COPYING for more details, or visit <http://unlicense.org>.
  7. class Flux:
  8. def __init__(self, index_list, flux_list, sample_freq):
  9. self.index_list = index_list
  10. self.list = flux_list
  11. self.sample_freq = sample_freq
  12. self.terminate_at_index = True
  13. def __str__(self):
  14. s = "Sample Frequency: %f MHz\n" % (self.sample_freq/1000000)
  15. s += "Total Flux: %u\n" % len(self.list)
  16. rev = 0
  17. for t in self.index_list:
  18. s += "Revolution %u: %.2fms\n" % (rev, t*1000/self.sample_freq)
  19. rev += 1
  20. return s[:-1]
  21. def flux_for_writeout(self):
  22. return self.flux()
  23. def flux(self):
  24. return self
  25. def scale(self, factor):
  26. """Scale up all flux and index timings by specified factor."""
  27. self.sample_freq /= factor
  28. @property
  29. def mean_index_time(self):
  30. """Mean time between index pulses, in seconds (float)"""
  31. return sum(self.index_list) / (len(self.index_list) * self.sample_freq)
  32. # Local variables:
  33. # python-indent: 4
  34. # End: