/usr/bin/spectoascii is in python-sardana 1.2.0-2.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | #! /usr/bin/python
##############################################################################
##
## This file is part of Sardana
##
## http://www.tango-controls.org/static/sardana/latest/doc/html/index.html
##
## Copyright 2011 CELLS / ALBA Synchrotron, Bellaterra, Spain
##
## Sardana is free software: you can redistribute it and/or modify
## it under the terms of the GNU Lesser General Public License as published by
## the Free Software Foundation, either version 3 of the License, or
## (at your option) any later version.
##
## Sardana is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU Lesser General Public License for more details.
##
## You should have received a copy of the GNU Lesser General Public License
## along with Sardana. If not, see <http://www.gnu.org/licenses/>.
##
##############################################################################
'''
Script for extracting "scan tables" from Sardana Spec files into single-scan tab-separated ASCII tables.
When data from multiple scans are extracted from a file, each table is stored in a different file.
The output files for a given input file are stored in a directory whose name matches the input scan ID
Usage:
python spectoascii.py <specfile> [<scan_ID_1> [<scan_ID_2>] ...]
If no scan IDs are provided, all scans from the given Spec file will be extracted.
Note that this is not a generic Spec conversor. Spec files created by means other than the Sardana
SPEC_FileRecorder may not be converted properly.
'''
import sys,os
def main():
if len(sys.argv) > 1:
fname = sys.argv[1]
else:
print "Usage:\nspectoascii <specfile> [<scan_ID_1> [<scan_ID_2>] ...] "
sys.exit(1)
scanids = sys.argv[2:] or None
f = open(fname,'r')
s = f.read()
f.close()
dirname,ext = os.path.splitext(fname)
try:
os.makedirs(dirname)
except:
print 'Cannot create dir "%s". Skipping.'%dirname
for scan in s.split('\n\n'):
lines = scan.split('\n')
if not lines[0].startswith('#S '):
continue
scan_name = lines[0].split()[1]
if scanids is None or scan_name in scanids: #extract only selected ids
ofname = os.path.join(dirname,"%s.dat"%scan_name)
print "Extracting %s:%s to %s"%(fname,scan_name,ofname)
try:
ofile = open(ofname,'w')
except:
print 'Cannot create file "%s". Skipping.'%ofname
continue
for line in lines[1:]:
if line.startswith('#L '):
ofile.write('\t'.join(line[3:].split(' '))+'\n')
elif line.startswith('#'):
continue
else:
ofile.write('\t'.join(line.split())+'\n')
ofile.close()
if __name__ == "__main__":
main()
|