File: util.py

package info (click to toggle)
toppic 1.8.0%2Brepack1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 111,364 kB
  • sloc: cpp: 62,240; xml: 8,121; javascript: 1,356; python: 755; sh: 108; makefile: 24
file content (99 lines) | stat: -rwxr-xr-x 2,991 bytes parent folder | download | duplicates (3)
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
88
89
90
91
92
93
94
95
96
97
98
99

from decimal import Decimal

class peak(object):
    def __init__(self, mass, inten, charge):
        self.mass = mass
        self.inten = inten
        self.charge = charge
    def to_string(self):
        print self.mass, self.inten, self.charge

class spec(object):
    def __init__(self):
        self.id = 0
        self.scan = 0
        self.activation = ""
        self.pre_mz = Decimal(0.0)
        self.pre_charge = 0
        self.pre_mass = Decimal(0.0)
        self.peak_lst = []

    def add_scan(self, scan):
        self.scan = scan

    def add_act(self, act):
        self.activation = act

    def add_id(self, id):
        self.id = id

    def add_mz(self, mz):
        self.pre_mz = mz

    def add_charge(self, charge):
        self.pre_charge = charge

    def add_mass(self, mass):
        self.pre_mass = mass

    def add_peak(self, p):
        self.peak_lst.append(p)

    def to_file(self, filename):
        out = open(filename, "a")
        out.write("BEGIN IONS\n")
        out.write("ID=" + str(self.id) + "\n")
        out.write("SCANS=" + str(self.scan) + "\n")
        out.write("ACTIVATION=" + self.activation + "\n")
        out.write("PRECURSOR_MZ=" + str(self.pre_mz) + "\n")
        out.write("PRECURSOR_CHARGE=" + str(self.pre_charge) + "\n")
        out.write("PRECURSOR_MASS=" + str(self.pre_mass) + "\n")
        for p in self.peak_lst:
            out.write(str(p.mass) + "\t" + str(p.inten) + "\t" + str(p.charge) + "\n")
        out.write("END IONS\n\n")


def readMsAlign(filename):
    msalign_file = open(filename, 'r').readlines()

    idx = 0

    spec_lst = []

    while (idx < len(msalign_file)):
        line = msalign_file[idx].rstrip('\r\n')
        if line == "BEGIN IONS" :
            sp = spec()
            idx = idx + 1
            line = msalign_file[idx].rstrip('\r\n')
            sp.add_id(int(float(line.split("=")[1])))
            idx = idx + 1
            line = msalign_file[idx].rstrip('\r\n')
            sp.add_scan(int(float(line.split("=")[1])))
            idx = idx + 1
            line = msalign_file[idx].rstrip('\r\n')
            sp.add_act(line.split("=")[1])
            idx = idx + 1
            line = msalign_file[idx].rstrip('\r\n')
            sp.add_mz(Decimal(line.split("=")[1]))
            idx = idx + 1
            line = msalign_file[idx].rstrip('\r\n')
            sp.add_charge(int(float(line.split("=")[1])))
            idx = idx + 1
            line = msalign_file[idx].rstrip('\r\n')
            sp.add_mass(Decimal(line.split("=")[1]))
            idx = idx + 1
            while (idx < len(msalign_file)):
                line = msalign_file[idx].rstrip('\r\n')
                if line == "END IONS":
                    spec_lst.append(sp)
                    break;
                tmp = line.split("\t")
                p = peak(Decimal(tmp[0]), Decimal(tmp[1]), tmp[2])
                sp.add_peak(p)
                idx = idx + 1

        idx = idx + 1
    
    return spec_lst;