`
bbsunchen
  • 浏览: 233281 次
  • 性别: Icon_minigender_1
  • 来自: 天朝帝都
社区版块
存档分类
最新评论

C++ 生物信息文件处理模板

 
阅读更多

#include <iostream>
#include <fstream>
#include <cstring>
#include <cstdlib>
using namespace std;

int main(int argc,char *argv[])
{
    /*ifstream testf;
    testf.open("D:\\workspace\\conbination_yongbing\\2011_7_20\\10ksample");
    if(!testf.good())
    {
        cout << "fuck" << endl;
        exit(0);
    }*/
//对命令行下输入参数进行处理
    ifstream COMBINATION;
    ifstream MATRIX;
    ofstream fout;
    if(argc != 4)//三个参数,这个值是4,还有一个是程序名称
    {
        cout << "ERROR: illegal argument number: " << argc << endl;
        cout <<
        "Input format:\n" <<
        "program_name combination_file_path matrix_file_path output_file_path \n" <<
        "i.e.\n" <<
        "test 10ksample cluster.matrix out.txt" << endl;
        exit(0);
    }

    COMBINATION.open(argv[1]);//参数从1开始,0是名称
    MATRIX.open(argv[2]);
    fout.open(argv[3]);
    if(!COMBINATION.good())
    {
        cout << "ERROR: illegal combination file path: " << argv[1] <<endl;
        cout <<
        "Input format:\n" <<
        "program_name combination_file_path matrix_file_path output_file_path \n" <<
        "i.e.\n" <<
        "test 10ksample cluster.matrix out.txt" << endl;
        exit(0);
    }else if(!MATRIX.good())
    {
        cout << "ERROR: illegal matrix file path" << endl;
        cout <<
        "Input format:\n" <<
        "program_name combination_file_path matrix_file_path output_file_path \n" <<
        "i.e.\n" <<
        "test 10ksample cluster.matrix out.txt" << endl;
        exit(0);
    }else if(!fout.good())
    {
        cout << "ERROR: illegal output file path" << endl;
        cout <<
        "Input format:\n" <<
        "program_name combination_file_path matrix_file_path output_file_path \n" <<
        "i.e.\n" <<
        "test 10ksample cluster.matrix out.txt" << endl;
        exit(0);
    }

    cout << "program running..." << endl;

    /*ofstream fout("out.txt");
    ifstream COMBINATION("10ksample");
    ifstream MATRIX("cluster.matrix");
    */


    bool m[19999][31];

    int matrix_line = 0;
    while(MATRIX != NULL)
    {
        string matr;
        getline(MATRIX,matr,'\n');
        //cout << matr.length() << endl;
        for(int j = 0;j < 30;j++)
        {
            if(matr[j] == '0')
            {
                m[matrix_line][j] = false;
            }else if(matr[j] == '1')
            {
                m[matrix_line][j] = true;
            }
        }
        matrix_line++;
    }

    string comb;
    char* num[31];
    while(COMBINATION != NULL)
    {
        int e_num = 0;
        int p = 0;
        int c = 0;
        getline(COMBINATION,comb,'\n');//end reading by '\n'

        char* char_comb=const_cast<char*>(comb.c_str());//chonst char* to char*
        char* temp_num = strtok(char_comb,"\t");//分割字符串的函数

        while(temp_num != NULL)
        {
            num[e_num] = temp_num;
            temp_num = strtok(NULL,"\t");
            e_num++;
        }

        if(e_num == 0)
        {
            break;
        }

        for(int i = 0; i < matrix_line; i++)
        {
            int sum = 0;
            for(int j = 0; j < e_num; j++)
            {
                if(m[i][atoi(num[j])])
                {
                    sum++;
                }
            }
            if(sum > 0)
            {
                p++;
            }
            if(sum == e_num)
            {
                c++;
            }
        }
        fout << p << "\t" << c << endl;
    }
            COMBINATION.close();
            MATRIX.close();
            fout.close();
    return 0;
}
 
0
2
分享到:
评论

相关推荐

    指纹识别,c++

    在C++中,可以使用图像处理库,如OpenCV,来处理和分析指纹图像。OpenCV提供了丰富的图像操作函数,如灰度转换、滤波、边缘检测等,可以帮助预处理指纹图像,使其更适合特征提取。 接着,指纹特征提取后,会将其...

    C++实现的角色扮演游戏

    通过构建角色扮演游戏,我们可以深入了解C++的关键概念,如类、对象、继承、多态、模板等,并体验其在实际项目中的应用。 1. 类与对象:在C++中,类是定义对象行为和属性的蓝图。在角色扮演游戏中,可以创建如玩家...

    头戴设备实时瞳孔识别C++

    模板匹配是一种图像处理技术,通过比较原始图像(模板)与目标图像的不同部分,找出最相似的部分,从而确定瞳孔的位置。这种方法在瞳孔识别中能够有效检测到特定形状和大小的瞳孔特征。 “搜索域跟踪功能”意味着...

    C++版的fp-growth算法

    FP-Growth算法广泛应用于零售数据分析(如购物篮分析),网站用户行为分析,生物信息学,社交网络分析等领域。通过挖掘频繁项集,可以发现隐藏的关联规则,比如“购买尿布的顾客往往也会购买啤酒”,这样的发现可以...

    西南科技大学C++实验及大作业

    5. **标准模板库(STL)的运用**:深入了解STL中的容器、迭代器和算法,提升数据处理和算法实现的效率。 6. **文件流操作**:掌握文件的读写操作,包括文本文件和二进制文件的处理,以及异常处理机制。 #### 作业...

    s型曲线两个实现c++.zip

    在处理压缩文件`s型曲线两个实现c++.rar`时,你可能需要使用C++的文件I/O和压缩库,如`libarchive`或第三方库如`zlib`来解压文件并读取源码。解压缩后,可以对这两个实现进行编译和测试,以确保它们按预期工作,并...

    精通VISUAL C++数字图像处理技术与工程案例part1

    在《精通VISUAL C++数字图像处理技术与工程案例part1》中,读者将深入学习如何利用Visual C++这一强大的编程环境进行高级的图像处理和识别任务。这本书以一系列具体的商业案例为引领,旨在帮助读者将理论知识转化为...

    基于C++&QT的激光血液图像处理系统上位机软件设计.zip

    在本项目中,Qt不仅用于构建系统的图形界面,还可能用于处理与用户的交互,如文件操作、参数设置等。 在图像处理方面,本系统可能使用了OpenCV、PIL等开源库。OpenCV(Open Source Computer Vision Library)是图像...

    比较强大的序列比对(C++)

    在IT行业中,序列比对是生物信息学领域的一个重要概念,特别是在基因组研究中,它涉及到寻找两个或多个核酸或蛋白质序列之间的相似性。本文将深入探讨“比较强大的序列比对(C++)”这一主题,以及如何利用快速检索...

    Visual C++指纹模式识别系统算法与实现附盘--库文件

    Visual C++指纹模式识别系统结合了生物特征识别的理论与C++的编程实践,通过预处理、特征提取、编码和匹配等步骤,实现高效的身份验证。在实际应用中,根据硬件设备、性能需求和安全性要求,可能还需要考虑实时性、...

    fast unfolding C++代码

    这对于理解社交网络、信息网络、生物网络等的结构和动态具有重要意义。 C++实现的快速展开算法可能包括以下几个关键知识点: 1. **图数据结构**:算法通常基于图数据结构来表示网络,如邻接矩阵或邻接表,它们用于...

    C++期末大作业

    - “简单生态仿真系统”项目要求设计和实现一个包含捕食者、被捕食者和植物等对象的二维生态仿真,其中包含捕食行为、生物的移动、繁殖、死亡...用户通过键盘输入控制仿真运行时间、记录生态事件和加载存储生物信息等...

    一个完整的C++实现的指纹匹配系统

    总的来说,这个C++实现的指纹匹配系统是一个综合性的项目,涵盖了生物特征识别、图像处理、数据结构、算法设计等多个IT领域的知识。通过研究这个系统,不仅可以学习到C++编程,还能深入了解指纹识别这一前沿技术。

    DSA_CPP.rar_向量_树的C++模板实现_链表

    在C++编程中,数据结构和算法(DSA)是核心组成部分,它们对于高效地处理和组织数据至关重要。这里,我们关注的是"DSA_CPP.rar"压缩包中的内容,它提供了C++实现向量、链表以及树的数据结构。下面将详细讨论这些知识...

    C++遗传算法示例

    2. 用模板类实现通用遗传操作:这样可以方便地处理不同类型的基因,如整数、浮点数等。 3. 多态性:如果适应度函数和遗传操作需要针对不同问题定制,可以考虑使用虚函数或者继承来实现多态。 4. 使用STL容器:如...

    Visual C++指纹模式识别系统算法与实现附盘--第四篇

    在本资源中,我们主要探讨的是使用Visual C++开发的指纹模式识别系统,这是一个涉及到生物特征识别技术的应用。指纹识别是生物识别技术的一种,利用人类指纹的独特性进行身份验证,具有高精度和难以伪造的特点。 在...

    动态规划算法的c++实现 能实现两序列的比对

    总结来说,这个项目涉及到了动态规划算法在C++中的应用,特别是蛋白质序列比对这一生物信息学中的关键问题。通过对两序列的匹配、插入和删除操作进行评分,动态规划可以找出最佳的序列匹配,这在生物研究中有着广泛...

    libCzi c++版本

    libCzi是一个C++库,专门用于处理蔡司(Zeiss)公司生产的显微镜图像文件,这些文件通常采用.CZI(蔡司压缩图像)格式。.CZI格式是蔡司为了存储高分辨率、多通道、多层的显微镜图像而设计的一种高效存储方案。这种...

    c++资源大全.docx

    在生物信息学领域,C++也有相应库支持: 1. **libsequence** 处理群体遗传学数据。 2. **SeqAn** 专注于生物序列分析的算法和数据结构。 3. **Vcflib** 处理VCF文件,用于基因组分析。 4. **Wham** 实现对BAM文件的...

Global site tag (gtag.js) - Google Analytics