-
Notifications
You must be signed in to change notification settings - Fork 0
/
extract_spectrum.py
63 lines (41 loc) · 1.17 KB
/
extract_spectrum.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
import numpy as np
import numpy.fft as fft
import pandas as pd
import argparse
from FilterUtils import rad_avg, read_mrc
def extract_spectrum(tomo):
# Scale intensitites pre-fft
tomo -= tomo.min()
tomo /= tomo.max()
t = fft.fftn(tomo)
t = fft.fftshift(t)
t = np.abs(t)
spectrum = rad_avg(t)
spectrum = pd.Series(spectrum, index = np.arange(len(spectrum)))
return spectrum
def main():
parser = get_cli()
args = parser.parse_args()
tomo = args.input
spectrum = extract_spectrum(tomo)
spectrum.to_csv(args.output, sep="\t", header=["intensity"], index_label="freq")
def get_cli():
parser = argparse.ArgumentParser(
description="Extract radially averaged amplitude spectrum from cryo-ET data."
)
parser.add_argument(
"-i",
"--input",
required=True,
type=read_mrc,
help="Tomogram to extract spectrum from (.mrc/.rec format)"
)
parser.add_argument(
"-o",
"--output",
required=True,
help="Output destination for extracted spectrum (.tsv format)"
)
return parser
if __name__ == "__main__":
main()