存档: ‘生物信息学’ 分类

访陈润生院士

3 条评论 2010年2月23日

今得一良机,以一介布衣书生之身,拜访了中科院生物物理研究所陈润生院士——中国生物信息学领域的No.1. 陈院士和蔼可亲,平易近人。在一个小时的交谈和实验室参观之后,我真有种“听君一席话,胜读十年书”的感觉。

从今天起,不要把自己想做是数学家、物理学家,更不是生物学家、计算机学家,而是真正的生物信息学家。生物信息学,是一门独立的学科。要真正的进去,而不是在边缘徘徊。

从今天起,选择一个可以终身为之执着奋斗的方向,沿这个方向不断努力,用知识武装自己,学会用生物信息学方法发现问题、解决问题。做主角,而不是配角。

从今天起,要加强自己独立思考和解决问题的能力。尽信书不如无书。“当你看文献的时候,你就已经落后了。”想别人没想到的问题,做别人没有做过的事情。不要给自己任何的思维定式。

这一天,这一个小时,是我这整个寒假最大的收获。

Perl与MySQL链接

没有评论 2010年2月18日

接上文《Access转MySQL方法》。已经在MySQL里建了一个数据库,这个数据库可以在“C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.1\data”目录下查到。现在要用Perl对这个数据库进行链接。

先用ActivePerl下载安装模块DBD-mysql,之后编辑链接代码如下:
 

#!/usr/bin/perl
use DBI;
my $dbname = "dbname"; #改成自己的数据库名字
my $location = "localhost";
my $port = "3306"; #这是mysql的缺省
my $database = "DBI:mysql:$dbname:$location:$port";
my $db_user = "root";
my $db_pass = "******"; #将******替换为对应的mysql数据库登录密码
my $dbh = DBI->connect($database,$db_user,$db_pass);
my $sql = "SELECT * FROM miRNA2gene where id = 1217";
my $sth = $dbh->prepare($sql);
$sth->execute() or die "无法执行SQL语句:$dbh->errstr";
my @row;
@row = $sth->fetchrow_array();
print join(",",@row) . "\n";
$sth->finish();
$dbh->disconnect();


该程序功能为查询数据库中编号为“1217”的TargetGene信息(所属miRNA为hsa-mir-9,gene_id为6646,gene_name为soat1,在Targetscan数据库中在hsa-mir-9中的分数为-0.2)。运行结果如图所示,红线划出部分为提取出来的信息(点击看大图):

dbi result Perl与MySQL链接

Access转MySQL方法

1条评论 2010年2月18日

1.先从网上下载一个软件:DB2MYSQL,运行db2mysql.exe;

2.【File】->【Open Database】,打开用Access建好的数据库,选择所要转换的表和所要转换的字段,点击【Start】开始转换;

db2mysql 300x209 Access转MySQL方法

3.在指定目录下会生成一个.sql文件;

4.在DOS界面下进入MySQL:mysql -uroot -p,输入密码;

5.建立一个新数据库,比如:create database new_database(数据库名)建一个与待转换Access数据库表相同的新表,例如:create table new_table (id int, miRNA_name char(20), gene_id int, gene_name(20), score char(5));

6.mysql>use new_database;

   mysql>source d:/mysql.sql;(.sql文件完全路径)

7.执行成功。最后也可以用select * from new_table;查看新建表中的记录,看是否添加成功。

TopFisher在生物信息学中的非主流应用。。- -

2 条评论 2010年2月9日

前几天用了WinInet class类写了一个可以只用输入网页地址,即可获取下载网页源文件的VC小程序,自以为感觉良好,但第二天一试却傻了眼,这个类对于某些网页根本不适用,都会莫名返回”There is some error in getting web page … “的错误信息,这其中就杯具的含有http://www.targetscan.org这个网站(首页可以获取,但是搜索后的页面不能获取)。。起初以为是网页编码的问题,但后来发现不是,网上也查不到相关问题和解决方案,无奈,暂时先转战Perl的CGI编程。

昨儿拔牙,休息一天。今儿上网无意间发现了TopFisher——Web搜索引擎。作为一个计算机专业的学生,我感觉这是一款相当非主流的网页信息采集软件。不过这不正好可以实现我想实现的那个功能吗?我看完了官方的一个教学视频:“如何将www.huochepiao.com中的车票转让信息数据采集下来”之后,眼前一亮,just have a try!官网上下载的那个软件包好像有病毒,推荐大家去迅雷上搜索下载。这款软件是免费的,配有.chm格式的说明书。

像Matlab一样,这个软件也是需要用户通过编程来实现预期的功能,不过当然远远没有Matlab那么复杂。摸索了一下午,小试牛刀,终于成功采集到了http://www.targetscan.org/cgi-bin/targetscan/vert_50/targetscan.cgi?species=Human&gid=&mir_sc=&mir_c=&mir_nc=&mirg=hsa-mir-10a这个网页上的信息,并转储到数据库中~以下是灰常非主流的TopFisher代码。。- -


//配置部分,您可以在这里直接修改配置参数
InitLink("http://www.targetscan.org/cgi-bin/targetscan/vert_50/targetscan.cgi?species=Human&gid=&mir_sc=&mir_c=&mir_nc=&mirg=hsa-mir-10a")
DbConnStr("Provider=Microsoft.JET.OLEDB.4.0;Data source=data.mdb;Jet OLEDB:Engine Type=5;")
dbTable("table1",2)
//-----------------------------------------------------------
//代码部分
function main
//这是TPF脚本的主函数,请将代码写在这里
_$str0 = map[0].area[0].hr[0].form[0].body[0].table[0].td[_$int1].href
_$str1 = map[0].area[0].hr[0].form[0].body[0].table[0].td[0].a[0].text
toInt(_$str0)
setData(0,_$str0)
setData(1,_$str1)
saveData(3,exit)
for(_$int1,0,2774)
{
_$str0 = td[_$int1].href
_$str1 = td[_$int1].a[0].text
toInt(_$str0)
setData(0,_$str0)
setData(1,_$str1)
_$int1 = _$int1+14
saveData(3,exit)
}
end

既然是非主流,这段代码就不解释了吧。。大致实现功能就是将hsa-mir-10a这个miRNA中的全部TargetGene名字和ID两个字段找出并存入到Data数据库中的table1表中。

topfisher 300x218 TopFisher在生物信息学中的非主流应用。。

非主流TopFisher编程界面。。

topfisher result 300x187 TopFisher在生物信息学中的非主流应用。。

TopFisher运行结果。。将数据写入数据库中。。右上角显示一共收集到186条信息,与hsa-mir-10a有186个靶基因相符。

database1 300x212 TopFisher在生物信息学中的非主流应用。。

最后生成的数据库。。

自动获取网页源代码(基于WinInet class的实验)

没有评论 2010年2月1日

今天陪老爸老妈爬了山,挺累的,本来想明天再来实验的,结果没想到一到晚上人反而兴奋了,所以索性实验完了得了~下面就是本人对WinInet class这个类的实验过程,包括遇到的问题和解决方案。实验环境:windows XP, .net 2003

首先是打开这个页面:http://www.vckbase.com/english/code/internet/get_webpage.shtml.htm,将里面的WebWorld.h和WebWorld.cpp分别添加进自己的工程里(【项目】——【添加新项】),编译,之后就会遇到你的第一个问题:

fatal error C1083: 无法打开包含文件:“WebThief.h”: No such file or directory

这个问题真花费了我不少时间。我翻遍了我的VC文件夹,都找不到这个头文件,到GOOGLE上面去找,也没有提供下载的,也几乎没有人对这个问题提问,即使问了,也是所问非所答。失望之余,决定用英文试试,于是尝试着用关键词“WebThief.h download”在GOOGLE理搜索。果然发现一条有价值信息:“I guess it is a mistake. Replace it with WebWorld.h”我按照这个方法一试。。果然啊,是这个作者把头文件写错了。。- -后来自己仔细一想,这个不是明摆着吗,WebWorld.h肯定应该对应着WebWorld.cpp,只怪自己太心急了。那么继续。

编译通过,链接却出现了错误:

WebWorld.obj : error LNK2019: 无法解析的外部符号 __imp__InternetOpenA@20 ,该符号在函数 “public: __thiscall CWebWorld::CWebWorld(void)” (??0CWebWorld@@QAE@XZ) 中被引用
WebWorld.obj : error LNK2019: 无法解析的外部符号 __imp__InternetCloseHandle@4 ,该符号在函数 “public: virtual __thiscall CWebWorld::~CWebWorld(void)” (??1CWebWorld@@UAE@XZ) 中被引用
WebWorld.obj : error LNK2019: 无法解析的外部符号 __imp__InternetReadFile@16 ,该符号在函数 “public: class ATL::CStringT<char,class StrTraitMFC_DLL<char,class ATL::ChTraitsCRT<char> > > __thiscall CWebWorld::GetWebPage(class ATL::CStringT<char,class StrTraitMFC_DLL<char,class ATL::ChTraitsCRT<char> > > const &)” (?GetWebPage@CWebWorld@@QAE?AV?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@ABV23@@Z) 中被引用
WebWorld.obj : error LNK2019: 无法解析的外部符号 __imp__HttpQueryInfoA@20 ,该符号在函数 “public: class ATL::CStringT<char,class StrTraitMFC_DLL<char,class ATL::ChTraitsCRT<char> > > __thiscall CWebWorld::GetWebPage(class ATL::CStringT<char,class StrTraitMFC_DLL<char,class ATL::ChTraitsCRT<char> > > const &)” (?GetWebPage@CWebWorld@@QAE?AV?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@ABV23@@Z) 中被引用
WebWorld.obj : error LNK2019: 无法解析的外部符号 __imp__InternetOpenUrlA@24 ,该符号在函数 “public: class ATL::CStringT<char,class StrTraitMFC_DLL<char,class ATL::ChTraitsCRT<char> > > __thiscall CWebWorld::GetWebPage(class ATL::CStringT<char,class StrTraitMFC_DLL<char,class ATL::ChTraitsCRT<char> > > const &)” (?GetWebPage@CWebWorld@@QAE?AV?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@ABV23@@Z) 中被引用
Debug/HTMLSource.exe : fatal error LNK1120: 5 个无法解析的外部命令

这个我比较幸运,一搜就找到了解决方案:http://topic.csdn.net/t/20050330/12/3893951.html,就是在WebWorld.cpp里添加“#pragma   comment(lib,”Wininet.lib”)”,再一试果然就可以了。不过我还不明白这是为什么,希望有高人能给我指点一下,感激不尽。

最后别忘了把WebWorld.h添加到你的项目中。我比较喜欢用基于对话框的VC程序,做了一个按钮控件,在其中添加代码:

CWebWorld a;
CString PageContent;
PageContent = a.GetWebPage("http://www.vckbase.com/english/code/internet/get_webpage.shtml.htm");
MessageBox(PageContent);

最后点击按钮,会弹出这个网页的源文件,试验成功!

自动获取网页源代码(VBscript方法)

没有评论 2010年1月31日

对于像http://www.targetscan.org这样的网站来说,没有自己的API函数,如果一个人想要获得某一个miRNA的全部靶基因的话将显得十分麻烦,比如hsa-mir-144。此时我想到的办法就是通过取得该网页的源代码,然后再用Perl匹配字符串的方法找到、下载所有的靶基因。今天我做了一下尝试。之前有用VBS做过脚本病毒,又结合网上的一个例子,完成了一个可以自动获取某一指定网页源代码并下载保存的VBS代码。

set http=createobject("Microsoft.XMLHTTP")
url="http://www.ifrei.cn"
http.open "get",url,false
http.send
zhi=zhuanghuan(Http.responsebody)
Dim fso, MyFile
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile = fso.CreateTextFile("d:\testfile.txt", True)
MyFile.WriteLine(zhi)
MyFile.Close
Function zhuanghuan(vIn)
strReturn = ""
For i = 1 To LenB(vIn)
ThisCharCode = AscB(MidB(vIn,i,1))
If ThisCharCode < &H80 Then
strReturn = strReturn & Chr(ThisCharCode)
Else
NextCharCode = AscB(MidB(vIn,i+1,1))
strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
i = i + 1
End If
Next
zhuanghuan = strReturn
End Function

其实感觉这个不是一个最佳的方法。一是其不受欢迎性。。- -我刚生成这个VBS文件,就立刻被卡巴斯基报病毒,然后被删除。。我认为是我的那两句创建TXT文件的代码是卡巴病毒库里的一段特征码,要运行这段VBS程序必须先退出杀毒软件。第二就是运行速度。本人电脑1.5G内存,操作hsa-mir-144这个网页,竟然花了8分钟。。生成了一个409KB的TXT文档。这只是一个网页,但我所要面对的是100个左右的网页,显然这个不能满足速度的要求。那么有什么替代的方法呢?

因为我对一些脚本语言还不是很熟悉,比如Perl、python等,但我还是想试一下。另外就是WinInet class,明天进行一下尝试~

沪ICP备09091602号