R语言里的image方法可以绘制CEL文件的灰度图像。我们先来讨论image这个的函数:

如:x <- c(0:2)

y <- c(0:2)

m <- matrix(c(1,5,10,17,20,25,15,30,22),3,3)

image(x,y,m)

得到:

 这里定义了一个3*3的矩阵,X坐标和Y坐标都从1变化到3,image函数就给这9个函数分配颜色,数越小颜色越偏深。默认的颜色是橘色。我们也可以设置为其他的颜色如黑灰:

image(x,y,m,col=gray(c(0:9)/9))。当然,这里的(0,0)坐标在左下角。

R语言绘制CEL文件的灰度图像和上例的原理是一样的,m*n的阵列,每个位置有一个对应的探针强度,颜色是gray(c(0:64)/64)(这里共有64个灰度,这是源码的设置),探针强度的数值被分配到到这64个灰度,数值越小颜色越深。下图是HG-U133_Plus_2阵列某样品的灰度图像(R语言作图):

library(affy)

rawData <- ReadAffy()

image(rawData)

一直纳闷的是,为什么这张图是矩形的,不是说好了行数和列数相等吗?而且图像的质量也不高,放大左上角根本就看不清芯片的型号。假如我想获得高清图片呢?也许是有解决办法的,但是目前我还不清楚用R语言怎么得到质量更高的灰度图像。

于是尝试着用Java作灰度图像。其实我也没深究过image函数的源码,不清楚它具体是怎么给数值分配颜色的,那就暂且自己“发明”一些方法吧。我们知道,一个颜色有着对应的RGB值,黑色是(0,0,0),白色是(255,255,255),当R=G=B且在都在0~255的范围时就是灰色调。假设某个探针的原始强度为intensity,计算int R=(int)(log2(intensity)*255/10-120),那么它对应的颜色就是new Color(R,R,R),当然要写上一些限制:R<0则R=0,R>0则R=255,这样就不会超出范围了。这样每个探针都有着对应的灰度了。以左上角为坐标(0,0),给每个探针绘制一个像素,得出了以下这张图:

这张图的质量高很多。放大这张图的左上角:

“GeneChip HG-U133A Plus2”的字样是不是就清晰可见了呀?不知你们可曾发现,在讨论版本3的CEL文件格式时,会看到MEAN那一列的前面很多行的数值都呈现“小大小大小大”的规律呀,而且说过数值越小颜色越偏暗,那么你们总算明白了灰度图像最外层的“花边”是什么回事了吧……

06、CEL文件与灰度图像的更多相关文章

  1. 05、解剖CEL文件各版本格式和读取方法(非R语言)

    相比DAT文件,网络上更支持CEL级别的文件.CEL已经把DAT图像转换成数据了,而且CEL比DAT所占空间小得多.介绍一下CEL文件的格式,CEL文件有文本文件(TextCelFile,版本3).B ...

  2. JavaIO(06)文件复制

    文件复制一般是采用两种方式进行操作: 1:将源文件中的内容全部读取到内存中,并一次性的写入到目标文件中:(不常用这种方式) 2:不将源文件中的内容全部读取进来,而是采用边读边写的方式:   实例01: ...

  3. Oracle基础 06 控制文件 controlfile

    --查看控制文件路径 show parameter control_files; --控制文件的备份,三种方式1)使用OS命令进行拷贝:1)open状态下,使用alter database命令生成控制 ...

  4. GitHub实战系列~1.环境部署+创建第一个文件 2015-12-9

    GitHub实战系列汇总:http://www.cnblogs.com/dunitian/p/5038719.html ———————————————————————————————————————— ...

  5. Linux FastDFS 分布式文件系统安装

    Linux FastDFS 分布式文件系统安装 2013 年 3 月 11 日 – 09:21 | 930 views | 收藏  (No Ratings Yet) FastDFS是一款类Google ...

  6. [svc]linux文件权限

    linux中,每个文件拥有三种权限 f dir权限位最佳实战 权限 对文件的影响 对文件夹的影响 r 可读取/阅读文件的内容 可以列出目录内容,无法cd,ls -l看到文件名,属性是乱码. w 可修改 ...

  7. FTP服务器文件上传的代码实现

    方式一: @Test public void testFtpClient() throws Exception { // 1.创建一个FtpClient对象 FTPClient ftpClient = ...

  8. less文件的运行

    例:在任意处创建一个.less文件,比如在桌面2017.06.28文件中创建了一个main.less文件,然后通过命令行编译main.less,步骤: win+R,cmd打开命令面板,切换到main. ...

  9. lucene倒排索引瘦身的一些实验——merge的本质是减少cfx文件 变为pos和doc;存储term vector多了tvx和tvd文件有337M

    store NO 压缩后的原始数据 原始数据大小 索引大小 索引时间 单词搜索时间 266 791 594 176 0.2 文件组成见后 运行forceMerge(3)后 merge的本质是减少cfx ...

随机推荐

  1. localhost与127.0.0.1的区别是什么?

    localhost与127.0.0.1的区别是什么?都代表本地服务器 相信有人会说是本地ip,曾有人说,用127.0.0.1比localhost好,可以减少一次解析. 看来这个问题还有人不清楚,其实这 ...

  2. kill 与 killall和过滤后杀掉

    1.绝杀 kill -9 PID  杀掉单一进程  例如:kill -9 pid号   同意的 kill -s SIGKILL   这个强大和危险的命令迫使进程在运行时突然终止,进程在结束后不能自我清 ...

  3. C++入门经典-例6.20-修改string字符串的单个字符

    1:使用+可以将两个string 字符串连接起来.同时,string还支持标准输入输出函数.代码如下: // 6.20.cpp : 定义控制台应用程序的入口点. // #include "s ...

  4. mysql 判断时间 语法

    今天  select * from 表名 where to_days(时间字段名) = to_days(now());  昨天  SELECT * FROM 表名 WHERE TO_DAYS( NOW ...

  5. java期末总结

    java期末总结: java语言特点:1.简洁有效 2.可移植性 3.面向对象 4.解释型 5.适合分布式计算 6.拥有较好的性能 7.健壮.防患于未然 8.具有多线程处理能力 9.具有较高的安全性 ...

  6. js将伪数组转换为标准数组的多种方法

    在js中,数组是特殊的对象,凡是对象有的性质,数组都有,数组表示有序数据的集合,而对象表示无序数据的集合. 那伪数组是什么呢,当然它也是对象,伪数组一般具有以下特点: 按索引方式存储数据: 具有len ...

  7. 【编程漫谈】Hello world!

    Hello world!是打开编程世界的第一把钥匙,只要你能运行出Hello world!,基本上就算入了个门了,因为程序正确的运行代表着基本开发环境都有了,包括编辑器,编译器,解释器,运行环境等待, ...

  8. leetcode-easy-trees-102. Binary Tree Level Order Traversal-YES

    mycode  98.56% # Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x ...

  9. SQL Server AlwaysOn原理简介

    SQL Server2012所支持的AlwaysOn技术集中了故障转移群集.数据库镜像和日志传送三者的优点,但又不相同.故障转移群集的单位是SQL实例,数据库镜像和日志传送的单位是单个用户数据库,而A ...

  10. 转自B站 真希望我在20岁就懂得的10个人生道理 主讲:王魄

    视频地址:https://www.bilibili.com/video/av65194244?from=search&seid=15261178568916939794 这位阿姨讲得还行,特别 ...