#!/usr/bin/env python
# coding:utf-8
#import pandas as pd, numpy as np;

'''
将csv文件转换为对应的邻接矩阵mat
'''

from numpy import *;

def protein_complexes_trans():
    file = open('protein_complexes.csv');
    filePro = open('complexes', 'a');
    fileTarget = open('targets(complexes)','a');
    fileInter = open('protein_complexes_interaction_matrix', 'a');
    proteins = [];
    targets = [];
    while 1:
        line = file.readline();
        if not line:
            break;
        token = line.split(';');
        targ = token[1].split(',');
        for i in range(0,len(targ)):
            targets.append(targ[i]);
        proteins.append(token[0]);

    file.seek(0);  #将指针重置回第一行

    proArr = unique(array(proteins)).tolist();  #去重,并删去最后一项(标题)
    tarArr = unique(array(targets)).tolist();  #删去最后

#mat为邻接矩阵
    mat = zeros((len(proArr),len(tarArr)), dtype = int16);

    while 1:
        line = file.readline();
        if not line:
            break;
        token = line.split(';');
        targ = token[1].split(',');
        row = proArr.index(token[0]);
        for i in range(0, len(targ)):
            col = tarArr.index(targ[i]);
            mat[row][col] = 1;
    #输出药物和靶向的列表
    for i in proArr:
        filePro.write('%s\n' % i);
    for i in tarArr:
        fileTarget.write('%s\n' % i);

    print "%d&%d" % (len(proArr), len(tarArr));

    interMat = mat.tolist();

    #将矩阵写入文件
    for i in range(0, len(proArr)):
        fileInter.write('%s\n' % (str(interMat[i])));
    return 0;

def drugs_targets_trans():
    #print 'hello world';
    file = open('drugs_targets_sum');
    fileDrug = open('drugs', 'a');
    fileTarget = open('targets','a');
    fileInter = open('drugs_targets_interaction_matrix', 'a');
    drugs = [];
    targets = [];
    while 1:
        line = file.readline();
        if not line:
            break;
        token = line.split(';');
        targ = token[1].split(',');
        for i in range(0,len(targ)):
            targets.append(targ[i]);
            drugs.append(token[0]);

    file.seek(0);  #将指针重置回第一行

    drugArr = unique(array(drugs)).tolist();  #去重,并删去最后一项(标题)
    tarArr = unique(array(targets)).tolist();  #删去最后

#mat为邻接矩阵
    mat = zeros((len(drugArr),len(tarArr)), dtype = int16);

    while 1:
        line = file.readline();
        if not line:
            break;
        token = line.split(';');
        targ = token[1].split(',');
        row = drugArr.index(token[0]);
        for i in range(0, len(targ)):
            col = tarArr.index(targ[i]);
            mat[row][col] = 1;

    #输出药物和靶向的列表
    for i in drugArr:
        fileDrug.write('%s\n' % i);
    for i in tarArr:
        fileTarget.write('%s\n' % i);

    interMat = mat.tolist();
    for i in range(0, len(drugArr)):
        fileInter.write('%s\n' % (str(interMat[i])));

#protein_complexes_trans();
drugs_targets_trans();

利用python将二值csv格式转换为矩阵的更多相关文章

  1. python 爬虫数据存入csv格式方法

    python 爬虫数据存入csv格式方法 命令存储方式:scrapy crawl ju -o ju.csv 第一种方法:with open("F:/book_top250.csv" ...

  2. 利用Python计算π的值,并显示进度条

    利用Python计算π的值,并显示进度条  第一步:下载tqdm 第二步;编写代码 from math import * from tqdm import tqdm from time import ...

  3. Mac OS X将CSV格式转换为Excel文档格式,Excel转CSV中文乱码问题

    一:在Mac上假设你使用Excel打开windows导出的CSV格式文档.你会发现表格中全部的的内容都显示在A列. 那么,怎样恢复正常呢,你能够将CSV格式的文档导入到Excel文档中,这样就正常显示 ...

  4. 10、OpenCV Python 图像二值化

    __author__ = "WSX" import cv2 as cv import numpy as np #-----------二值化(黑0和白 255)---------- ...

  5. python图片二值化提高识别率

    import cv2from PIL import Imagefrom pytesseract import pytesseractfrom PIL import ImageEnhanceimport ...

  6. opencv python 图像二值化/简单阈值化/大津阈值法

    pip install matplotlib 1简单的阈值化 cv2.threshold第一个参数是源图像,它应该是灰度图像. 第二个参数是用于对像素值进行分类的阈值, 第三个参数是maxVal,它表 ...

  7. 利用Python制作二维码

    利用简单的Python代码制作二维码 一.制作工具 安装Python环境 + PyCharm编译器. 二.电脑系统 本人win10 + Python3.7.0 + PyCharm. 三.写代码前先下载 ...

  8. 利用mysqldump命令导出为csv格式文件

    解决方法: 先导出为txt文件,其内容是以逗号“,”分隔的,得到txt文件后,再自行处理为.csv或者.xls文件. 参数说明: -t, --no-create-info   Don't write ...

  9. python习题_读写csv格式的文件

    1.读写TXT文件 # *_* coding : UTF-8 *_* # 开发人员 : zfy # 开发时间 :2019/7/7 16:26 # 文件名 : lemon_10_file.PY # 开发 ...

随机推荐

  1. react引用ant的table组件

    import React from 'react';import '../../css/uicss/UI.css';import 'antd/lib/style/index.less';import ...

  2. 解决JqueryUI 拖放排序遇到滚动条时有可能无法执行排序的小bug

    前些日子不是在做 使用Jquery-UI实现一次拖拽多个选中的元素操作嘛,在持续完善这个组件时遇到了一个关于拖放排序的bug.今天就着图片和代码重现一下,也顺便告诉大家如何解决这个问题. 首先先上图描 ...

  3. Android中GridView通过自定义适配器(未优化)实现图文视图排列

    Android中GridView组件用来以网格方式排列视图,与矩阵类似,当屏幕上有很多元素(文字.图片或其他元素)需要显示时,可以使用该组件.下面我们通过代码实现如下图例(为了方便截图,将事件处理(土 ...

  4. nodejs的child_process同步异步

    nodejs是一种单线程模型,但是,使用nodejs的child_process模块可以实现多进程任务.利用child_process可以创建子进程,实现子进程和主进程之间的通信. nodejs v0 ...

  5. 利用split

    java.lang.string.splitsplit 方法将一个字符串分割为子字符串,然后将结果作为字符串数组返回.stringObj.split([separator,[limit]])strin ...

  6. Ignite China 2015 之行

    微软首届Ignite China选择了金秋十月的北京,在顺义的九华山庄举办.这几天北京的空气特别好,再加上郊区高楼少,令人心胸开阔了不少.这次Ignite之行的任务有两个,其一是27号晚上与Windo ...

  7. mybatis 动态sql表达式相关应用

    一.mybatis 表达式简介 对于mybatis3 ,提供了一种动态sql的方式.通过动态sql我们可以直接在mybatis 的xm映射文件中直接通过条件判断的方式进行查询添加的拼接.mybatis ...

  8. js作用域问题

    <script type="text/javascript"> alert(i);//Uncaught ReferenceError: i is not defined ...

  9. 多点触摸(MT)协议(翻译)

    参考: http://www.kernel.org/doc/Documentation/input/multi-touch-protocol.txt 转自:http://www.arm9home.ne ...

  10. JQuery日历控件

    日历控件最后一弹——JQuery实现,换汤不换药.原理一模一样,换了种实现工具.关于日历的终于写完了,接下来研究研究nodejs.嗯,近期就这点事了. 同样还是将input的id设置成calendar ...