source: tags/ms_r18q1/PROBE_SET/ps_make_sample_db.cxx

Last change on this file was 15738, checked in by westram, 7 years ago
  • rename only
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.1 KB
Line 
1// =============================================================== //
2//                                                                 //
3//   File      : ps_make_sample_db.cxx                             //
4//   Purpose   :                                                   //
5//                                                                 //
6//   Coded by Wolfram Foerster in October 2002                     //
7//   Institute of Microbiology (Technical University Munich)       //
8//   http://www.arb-home.de/                                       //
9//                                                                 //
10// =============================================================== //
11
12#include "ps_node.hxx"
13
14//  ====================================================
15//  ====================================================
16
17int main(int argc,   char *argv[]) {
18    // create probe-set-database
19    if (argc < 4) {
20        printf("Missing arguments\n Usage %s <probequality> <probelength> <output filename> [print]\n", argv[0]);
21        exit(1);
22    }
23
24    unsigned short  quality        = atoi(argv[1]);
25    unsigned short  probelength    = atoi(argv[2]);
26    const char     *output_DB_name = argv[3];
27
28    printf("creating probe-set-database '%s'..", output_DB_name);
29    PS_FileBuffer *ps_db_fb = new PS_FileBuffer(output_DB_name, false);
30    printf("done\n");
31
32    // create sample tree
33    printf("making sample tree...");
34    PS_NodePtr root(new PS_Node(-1));
35
36    for (int id = 10; id < 15; ++id) {
37        PS_NodePtr new_child(new PS_Node(id));
38
39        if (id % 2 != 0) {
40            for (int pnr = 0; pnr < 5; ++pnr) {
41                PS_ProbePtr new_probe(new PS_Probe);
42                new_probe->length     = probelength;
43                new_probe->quality    = quality;
44                new_probe->GC_content = (unsigned short) (random() % probelength);
45                new_child->addProbe(new_probe);
46            }
47        }
48
49        root->addChild(new_child);
50    }
51
52    for (PS_NodeMapIterator child = root->getChildrenBegin(); child != root->getChildrenEnd(); ++child) {
53
54        for (int id = child->second->getNum()*100; id < (child->second->getNum()*100)+10; ++id) {
55
56            PS_NodePtr new_child(new PS_Node(id));
57
58            if (random() % 3 != 0) {
59                for (int pnr = 0; pnr < 50; ++pnr) {
60                    PS_ProbePtr new_probe(new PS_Probe);
61                    new_probe->length     = probelength;
62                    new_probe->quality    = quality;
63                    new_probe->GC_content = (unsigned short) (random() % probelength);
64                    new_child->addProbe(new_probe);
65                }
66            }
67
68            child->second->addChild(new_child);
69        }
70    }
71    printf("done (enter to continue)\n");
72    getchar();
73
74    if (argc >= 4) {
75        root->print();
76        printf("\n(enter to continue)\n");
77        getchar();
78    }
79
80    // write sample tree
81    root->save(ps_db_fb);
82
83    // clean up
84    delete ps_db_fb;
85    root.setNull();
86    printf("root should be destroyed now (enter to continue)\n");
87    getchar();
88
89    return 0;
90}
Note: See TracBrowser for help on using the repository browser.