2011年7月15日星期五

Re: [PerlChina] Re: DNA,DG值。

谢谢各位哈,总算找到办法了,虽然最终发现是个NPC问题。

另外,请问各位有谁做RNA结构预测相关的事情?

2011/7/15 朱岩 <riyeyan@gmail.com>
不好意思,index搞错了,下面是修改版,用的Jie Liu的矩阵,
得到结果(index从0开始):
0 1 3
0 1 4
0 2 4
2 4 7
4 7 9
好像vertex number不能取10以上(包括10)...看看能不能根据作者的算法重写吧


use strict;
use Graph::Clique;



my @edges;
my %h;
my $nnz;  # num of non-zeros


# build up undirected graph
open F, 'matrix_small.txt' or die;
while(<F>){
my $i = $.-1; 
my @a = split(/ /,$_);
for my $j (0..$#a){
if ($a[$j] == 1){
$nnz++;
my $e = $i <= $j ? $i.",".$j : $j.",".$i;
$h{$e}++;
}
}
}
close F;


foreach my $key (sort keys %h){
my @a = split(/\,/, $key);
push @edges, [@a];
}



# find maximal clique

my @cliques;

for (my $k=int(sqrt($nnz)); $k>0; $k--){
@cliques = getcliques($k,\@edges);
if ($#cliques >=0){ last; }
}

print join("\n", @cliques),"\n";



在 2011年7月14日 下午11:16,nixin <nicene714@gmail.com>写道:

google到的matlab的maximal cliques程序:
http://www.mathworks.com/matlabcentral/fileexchange/19889-maximal-cliques


On Jul 14, 9:27 pm, jie liu <liujie....@gmail.com> wrote:
> 附件忘加了,在这个邮件里
>
> 2011/7/14 jie liu <liujie....@gmail.com>
>
>
>
>
>
>
>
>
>
>
>
> > 朱岩,出了一些状况. 我造了一个  无向图 的矩阵数据。
> > ------------data----------------
> > 0 0 0 0 0 0 0 0 0 0
> > 1 0 0 0 0 0 0 0 0 0
> > 1 0 0 0 0 0 0 0 0 0
> > 1 1 0 0 0 0 0 0 0 0
> > 1 1 1 0 0 0 0 0 0 0
> > 0 0 0 0 0 0 0 0 0 0
> > 0 0 0 0 0 0 0 0 0 0
> > 0 0 1 0 1 0 0 0 0 0
> > 0 0 0 0 0 0 0 0 0 0
> > 0 0 0 0 1 0 0 1 0 0
> > --------------------
> > 我用matlab可视化了这个graph,请见附件。
>
> > 之后我用你的程序(我把K值改成了K>1)处理这个矩阵,显示的结果是:2,6,9这个节点。这与附件的图矛盾啊,2,6,9实际不是完全连通图啊。怎么回事? 我先把结果反馈给大家,同时我也想想
>
> > ------------ perl script--------------------
>
> > use strict;
> > use Graph::Clique;
>
> > my @edges;
> > my %h;
> > my $nnz;       # num of non-zeros
>
> > # build up undirected graph
> > open FASTA, "<@ARGV";
> > while (<FASTA>) {
> > my $i = $. + 1;
> >  my @a = split( / /, $_ );
> > for my $j ( 0 .. $#a ) {
> > if ( $a[$j] ) {
> >  $nnz++;
> > my $e = $i <= $j ? $i . "," . $j : $j . "," . $i;
> >  $h{$e}++;
> > }
> > }
> > }
>
> > foreach my $key ( sort keys %h ) {
> > my @a = split( /\,/, $key );
> > push @edges, [@a];
> > }
>
> > # find maximal clique
>
> > my @cliques;
>
> > for ( my $k = int( sqrt($nnz) ) ; $k > 1 ; $k-- ) {
> >  @cliques = getcliques( $k, \@edges );
> > if ( $#cliques >= 0 ) {
> > last;
> >  }
> > }
>
> > print join( "\n", @cliques ), "\n";
>
> > ------------end--------------------------------
> > 2011/7/14 朱岩 <riye...@gmail.com>
>
> >> 读文件把while(<DATA>)换成while(<F>)就可以了
>
> >> 在 2011年7月14日 下午4:02,jie liu <liujie....@gmail.com>写道:
>
> >>> 我刚刚也看到了,还去了作者给的一个地址(http://home.hiwaay.net/~gbacon/perl/clique.html
> >>> )看来一下,很激动!就是我要找的,谢谢大家了哈。
>
> >>> 但是,我都perl不熟,现在我把矩阵存在txt里了(1代表有边,0代表无边),我怎么把矩阵读进去,然后形成graph,然后用clique呢...朱岩的 程序我使了下,没成功。朱岩的程序里我没有看到读入的操作啊(实在是对perl不熟悉...)
>
> >>> 2011/7/14 nixin <nicene...@gmail.com>
>
> >>>> 果然有现成的库。clique这个关键词没有掌握,搜了好一会全连通图,啥也没搜到。呵呵。
>
> >>>> On 7月14日, 下午1时28分, 朱岩 <riye...@gmail.com> wrote:
> >>>> > 图论解法:
>
> >>>> > 找最大完全连通子图,可以用Graph::Clique,当然应该还有更好的算法;
> >>>> > 这里只举了个10x10的小例子
> >>>> > 用非零数的平方根作为最大子图顶点数的上限
>
> >>>> > use strict;
> >>>> > use Graph::Clique;
>
> >>>> > my @edges;
> >>>> > my %h;
> >>>> > my $nnz;  # num of non-zeros
>
> >>>> > # build up undirected graph
>
> >>>> > while(<DATA>){
> >>>> > my $i = $.+1;
> >>>> >  my @a = split(/ /,$_);
> >>>> >  for my $j (0..$#a){
> >>>> >   if ($a[$j]){
> >>>> >    $nnz++;
> >>>> > my $e = $i <= $j ? $i.",".$j : $j.",".$i;
> >>>> > $h{$e}++;
> >>>> >   }
> >>>> >  }
>
> >>>> > }
>
> >>>> > foreach my $key (sort keys %h){
> >>>> > my @a = split(/\,/, $key);
> >>>> > push @edges, [@a];
>
> >>>> > }
>
> >>>> > # find maximal clique
>
> >>>> > my @cliques;
>
> >>>> > for (my $k=int(sqrt($nnz)); $k>3; $k--){
> >>>> >  @cliques = getcliques($k,\@edges);
> >>>> >  if ($#cliques >=0){
> >>>> >   last;
> >>>> >  }
>
> >>>> > }
>
> >>>> > print join("\n", @cliques),"\n";
>
> >>>> > __DATA__
> >>>> > 0 0 1 0 1 0 0 0 0 0
> >>>> > 0 1 1 0 0 0 0 0 0 0
> >>>> > 1 1 1 0 1 0 0 1 0 0
> >>>> > 1 1 1 0 0 0 0 0 0 0
> >>>> > 1 1 1 0 1 0 0 1 0 1
> >>>> > 0 0 0 0 0 0 0 0 0 0
> >>>> > 0 0 0 0 0 0 0 0 0 0
> >>>> > 0 0 1 0 1 0 0 1 0 1
> >>>> > 0 0 0 0 0 0 0 0 0 0
> >>>> > 0 0 0 0 1 0 0 1 0 0
>
> >>>> --
> >>>> 您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
> >>>> 要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
> >>>> 要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
> >>>> 若有更多问题,请通过http://groups.google.com/group/perlchina?hl=zh-CN访问此网上论坛。
>
> >>> --
> >>> Best regards,
> >>> Liu Jie
>
> >>> 020-32015312
> >>> Guangzhou Institutes of Biomedicine and Health, Chinese Academy of
> >>> Sciences
> >>>http://www.gibh.cas.cn/
>
> >>>  --
> >>> 您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
> >>> 要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
> >>> 要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
> >>> 若有更多问题,请通过http://groups.google.com/group/perlchina?hl=zh-CN访问此网上论坛。
>
> >> --
> >> Yours, Yan Zhu
>
> >> Institute of Microbiology, Chinese Academy of Sciences
>
> >> Datun Rd.
> >> Chaoyang District
> >> Beijing 100101
> >> P. R. China
>
> >> --
> >> 您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
> >> 要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
> >> 要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
> >> 若有更多问题,请通过http://groups.google.com/group/perlchina?hl=zh-CN访问此网上论坛。
>
> > --
> > Best regards,
> > Liu Jie
>
> > 020-32015312
> > Guangzhou Institutes of Biomedicine and Health, Chinese Academy of
> > Sciences
> >http://www.gibh.cas.cn/
>
> --
> Best regards,
> Liu Jie
>
> 020-32015312
> Guangzhou Institutes of Biomedicine and Health, Chinese Academy of Scienceshttp://www.gibh.cas.cn/
>
>  Graph.jpg
> 30KViewDownload

--
您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。




--
Yours, Yan Zhu

Institute of Microbiology, Chinese Academy of Sciences

Datun Rd.
Chaoyang District
Beijing 100101
P. R. China

--
您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。



--
Best regards,
Liu Jie
 
020-32015312
Guangzhou Institutes of Biomedicine and Health, Chinese Academy of Sciences 

--
您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com。
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com。
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

没有评论: