source: trunk/mzcms/models.py @ 54

Last change on this file since 54 was 54, checked in by j@…, 10 years ago

filename filter to parse only dat files

File size: 2.3 KB
Line 
1"""Models for mzcms.
2
3"""
4from persistent import Persistent
5from repoze.folder import Folder
6
7from parsers import parse_dats
8
9class Experiment(Folder):
10    __parent__ = __name__ = None
11    def __init__(self):
12        super(Experiment, self).__init__()
13
14class Protein(Persistent):
15    """A Protein"""
16    def __init__(self, native_id, sequence, pep_refs):
17        self.native_id = str(native_id)
18        self.sequence = str(sequence)
19        self.pep_refs = pep_refs
20
21class Peptide(Persistent):
22    """A peptide"""
23    def __init__(self, sequence, mass):
24        self.sequence = str(sequence)
25        self.mass = float(mass)
26        self.length = len(sequence)
27
28class Spectrum(Persistent):
29    """A Spectrum"""
30    def __init__(self, scan, run, peaks, prec_mz, prec_charge):
31        self.scan = int(scan)
32        self.run = str(run)
33        self.peaks = tuple(peaks)
34        self.prec_mz = float(prec_mz)
35        self.prec_charge = int(prec_charge)
36
37class Psm(Persistent):
38    """A Peptide to Spectrum Match"""
39    def __init__(self, score, rank, delta_mass, pep_ref, spec_ref):
40        self.score = float(score)
41        self.rank = int(rank)
42        self.delta_mass = float(delta_mass)
43        #self.delta_score = float(delta_score)
44        #self.sequence_rank2 = str(sequence_rank2)
45        self.pep_ref = pep_ref
46        self.spec_ref = spec_ref
47
48def appmaker(zodb_root):
49    if not 'app_root' in zodb_root:
50        app_root = Experiment()
51        proteins = Folder()
52        peptides = Folder()
53        spectra = Folder()
54        zodb_root['app_root'] = app_root
55        app_root['proteins'] = proteins
56        app_root['peptides'] = peptides
57        app_root['spectra'] = spectra
58        psms = Folder()
59        app_root['psms'] = psms
60        folders = parse_dats('./dats',
61                             proteins_container=proteins,
62                             peptides_container=peptides,
63                             spectra_container=spectra,
64                             psms_container=psms,
65                             protein_factory=Protein,
66                             peptide_factory=Peptide,
67                             spectrum_factory=Spectrum,
68                             psm_factory=Psm,
69                             )
70        import transaction
71        transaction.commit()
72
73    return zodb_root['app_root']
Note: See TracBrowser for help on using the repository browser.