-
Notifications
You must be signed in to change notification settings - Fork 0
/
ToFTB.py
73 lines (53 loc) · 2.06 KB
/
ToFTB.py
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
#!/usr/bin/python3
#coding -*-coding:Utf-8 -*
# Import
import sys # basic files tools
import numpy as np
from math import ceil
# Takes a peak list (from the CP) and creates a ftb file for the categorize mode
#########################################################
# BODY OF THE PROGRAM
#########################################################
#------------------------------------
# Input file and reading of the file
#------------------------------------
# Input file
##if len(sys.argv) != 2:
## print('Usage: peak2cat.py peak_file')
## exit(1)
##
##peak_name = sys.argv[1]
##file_name, ext = sys.argv[1].split('.')
peak_name = "CP387_pzf1.lines"
file_name = "CP387_pzf1"
#--------------------------------------------------------------------
# Read the peak file
# and an array with a list of frequencies and intensities
# and a transpose of this array as the initial list of remaining peaks
#--------------------------------------------------------------------
with open(peak_name, 'r') as peak_file:
peak_lines = peak_file.read().splitlines()
peak_freq = []
peak_int = []
for i in range(len(peak_lines)):
freq = peak_lines[i].split()[0]
int = peak_lines[i].split()[1]
print("INten", int)
peak_freq.append(float(freq))
peak_int.append(float(int))
print(str(len(peak_int)) + ' peaks')
peak_array = np.array( [peak_freq, peak_int] ).transpose()
peak_array = peak_array[peak_array[:, 1].argsort()[::-1]]
# the list is here sorted by decreasing intensities
del(peak_lines, peak_freq, peak_int)
#---------------------------------------------------
# EXPORT FILE
#---------------------------------------------------
# Export a batch file with frequencies in MHz
with open('1_peak2cat_' + file_name + '.ftb', 'w') as out_file:
for i in range(len(peak_array)):
# define the number of shots as a function of the intensity
n_shots = ceil(2 / (5 * peak_array[i,1]))
if (n_shots < 10):
n_shots = 10
out_file.write('ftm:%5.3f shots:%1s dipole:1.0 drpower:-20 drfreq:1000.000\n' %(peak_array[i,0], n_shots))