2011年7月13日星期三

[PerlChina] Re: shebang行在Windows下也有用?

是我想简单了。我想可以蛮力搜索:
在上面说的L中,有一个以上的全连通子图,目标是找出顶点最多的全连通子图。
Step 0, x 为L顶点列表,subG_list为空。
Step 1,x中任意找一个顶点。
Step 2,找出此顶点在L中所在的全连通子图,并把结果记录在subG_list中。
Step 3,x删除上一步结果中所有的全连通子图中的顶点。如果x空,结束。如果x非空,回到Step 0.
得到的subG_list应该是L的全连通子图集,再根据顶点个数排序就可以了。

400个点的图不算大,蛮力搜索应该不会用太久。不过一个图的全连通子图查找问题应该是一个比较经典的问题,肯定有经典算法的。我也没专门研究过图的算
法,不知道有没有工具能直接拿来用。

On 7月14日, 上午11时33分, Hydraphenix <hydrapheni...@gmail.com> wrote:
> 好像这个思路不行,有些DNA可能属于两个group,这个思路就没办法处理了。
> 看来这个问题难度超出我的想象啊。
>
> On 7月14日, 上午9时13分, Hydraphenix <hydrapheni...@gmail.com> wrote:
>
>
>
>
>
>
>
> > 最近也在用perl写矩阵相关的脚本。觉得你的问题,用矩阵就可以实现了。
> > 思路如下:
> > 做一个循环,给每个DNA分组,若这个dna的所有target中只有一个为1(自己),那么这个组就只有自己;若这个dna的target中有多个
> > 1,则检查target与group中的所有成员的score是否都为1,若是,加入group中,若不是,则不加入。
> > 这个循环做下来,每个DNA都有了分组,删除那些冗余的分组,剩下都是独立的分组,再统计每组成员的个数,就完成了。
>
> > On 7月12日, 下午8时19分, jie liu <liujie....@gmail.com> wrote:
>
> > > 大家好!
>
> > > 我这有个最优化问题,是关于求最大子集的,想请大家帮我想想。
> > > 问题的具体情形是这样的:
> > > 有一种指标dG,它能描述两两单链DNA互补杂交的热力学特征。我现在有400条DNA(编号为0,2,3...399),它们组成一个集合;我现在要从这个集 合中找到一个子集,这个子集里的任意两两DNA的dG值大于等于一个值(m=1)。因为符合这样条件的子集很多,我要找到含有最多DNA个数的那个子集。
> > > 我的方法是这样的:方便起见,400条DNA两两之间的dG,凡dG>=1的重新赋值为1,dG<1的重新赋值为0。我把这些值写入一个2维矩阵。如图1(见附 件)。含有最多1的那一行所代表的DNA被选出来,并且把所有与这个DNA杂交指标为1的其他DNA序列的相互关系写入一个新的2维矩阵,同时也会得到一个含有 最多1的那一行,把它选出来,重复上个运算。如此反复,最终筛选出来的DNA将组成最大子集。
> > > 我用perl写出来这个算法,但是当我扩大总DNA数时出现了问题:理论上,最大子集中DNA个数将不小于扩大之前的,但是实际上,情况相反。
> > > 请大家帮我看看,1)这个算法有问题吗?2)你能把你的办法写成伪代码告诉我吗?如果你能用perl写成源代码最好了。
>
> > > --
> > > Best regards,
> > > Liu Jie
>
> > > 020-32015312
> > > Guangzhou Institutes of Biomedicine and Health, Chinese Academy of Scienceshttp://www.gibh.cas.cn/
>
> > > matrix.txt
> > > 423K查看下载
>
> > > 图1.jpg
> > > 48K查看下载

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

[PerlChina] Re: shebang行在Windows下也有用?

好像这个思路不行,有些DNA可能属于两个group,这个思路就没办法处理了。
看来这个问题难度超出我的想象啊。

On 7月14日, 上午9时13分, Hydraphenix <hydrapheni...@gmail.com> wrote:
> 最近也在用perl写矩阵相关的脚本。觉得你的问题,用矩阵就可以实现了。
> 思路如下:
> 做一个循环,给每个DNA分组,若这个dna的所有target中只有一个为1(自己),那么这个组就只有自己;若这个dna的target中有多个
> 1,则检查target与group中的所有成员的score是否都为1,若是,加入group中,若不是,则不加入。
> 这个循环做下来,每个DNA都有了分组,删除那些冗余的分组,剩下都是独立的分组,再统计每组成员的个数,就完成了。
>
> On 7月12日, 下午8时19分, jie liu <liujie....@gmail.com> wrote:
>
>
>
>
>
>
>
> > 大家好!
>
> > 我这有个最优化问题,是关于求最大子集的,想请大家帮我想想。
> > 问题的具体情形是这样的:
> > 有一种指标dG,它能描述两两单链DNA互补杂交的热力学特征。我现在有400条DNA(编号为0,2,3...399),它们组成一个集合;我现在要从这个集 合中找到一个子集,这个子集里的任意两两DNA的dG值大于等于一个值(m=1)。因为符合这样条件的子集很多,我要找到含有最多DNA个数的那个子集。
> > 我的方法是这样的:方便起见,400条DNA两两之间的dG,凡dG>=1的重新赋值为1,dG<1的重新赋值为0。我把这些值写入一个2维矩阵。如图1(见附 件)。含有最多1的那一行所代表的DNA被选出来,并且把所有与这个DNA杂交指标为1的其他DNA序列的相互关系写入一个新的2维矩阵,同时也会得到一个含有 最多1的那一行,把它选出来,重复上个运算。如此反复,最终筛选出来的DNA将组成最大子集。
> > 我用perl写出来这个算法,但是当我扩大总DNA数时出现了问题:理论上,最大子集中DNA个数将不小于扩大之前的,但是实际上,情况相反。
> > 请大家帮我看看,1)这个算法有问题吗?2)你能把你的办法写成伪代码告诉我吗?如果你能用perl写成源代码最好了。
>
> > --
> > Best regards,
> > Liu Jie
>
> > 020-32015312
> > Guangzhou Institutes of Biomedicine and Health, Chinese Academy of Scienceshttp://www.gibh.cas.cn/
>
> > matrix.txt
> > 423K查看下载
>
> > 图1.jpg
> > 48K查看下载

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

[PerlChina] Re: shebang行在Windows下也有用?

最近也在用perl写矩阵相关的脚本。觉得你的问题,用矩阵就可以实现了。
思路如下:
做一个循环,给每个DNA分组,若这个dna的所有target中只有一个为1(自己),那么这个组就只有自己;若这个dna的target中有多个
1,则检查target与group中的所有成员的score是否都为1,若是,加入group中,若不是,则不加入。
这个循环做下来,每个DNA都有了分组,删除那些冗余的分组,剩下都是独立的分组,再统计每组成员的个数,就完成了。

On 7月12日, 下午8时19分, jie liu <liujie....@gmail.com> wrote:
> 大家好!
>
> 我这有个最优化问题,是关于求最大子集的,想请大家帮我想想。
> 问题的具体情形是这样的:
> 有一种指标dG,它能描述两两单链DNA互补杂交的热力学特征。我现在有400条DNA(编号为0,2,3...399),它们组成一个集合;我现在要从这个集 合中找到一个子集,这个子集里的任意两两DNA的dG值大于等于一个值(m=1)。因为符合这样条件的子集很多,我要找到含有最多DNA个数的那个子集。
> 我的方法是这样的:方便起见,400条DNA两两之间的dG,凡dG>=1的重新赋值为1,dG<1的重新赋值为0。我把这些值写入一个2维矩阵。如图1(见附 件)。含有最多1的那一行所代表的DNA被选出来,并且把所有与这个DNA杂交指标为1的其他DNA序列的相互关系写入一个新的2维矩阵,同时也会得到一个含有 最多1的那一行,把它选出来,重复上个运算。如此反复,最终筛选出来的DNA将组成最大子集。
> 我用perl写出来这个算法,但是当我扩大总DNA数时出现了问题:理论上,最大子集中DNA个数将不小于扩大之前的,但是实际上,情况相反。
> 请大家帮我看看,1)这个算法有问题吗?2)你能把你的办法写成伪代码告诉我吗?如果你能用perl写成源代码最好了。
>
> --
> Best regards,
> Liu Jie
>
> 020-32015312
> Guangzhou Institutes of Biomedicine and Health, Chinese Academy of Scienceshttp://www.gibh.cas.cn/
>
> matrix.txt
> 423K查看下载
>
> 图1.jpg
> 48K查看下载

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

[PerlChina] Re: DNA,DG值。

我是这样想的:
你的问题可以转化成这样一个图论问题: n个顶点的有权无向图G,找出最大子图H,满足条件:子图中的任意两点间有边,且边的权重大于一个阈值p。
我的思路是这样的:
先找出所有权重大于p的边,这些边和对应顶点组成的子图为L。容易想到H是L的子图。
然后在L中去掉不和L中任意其他点有边的顶点。剩下的图就是H。

程序我就不写了...

On 7月13日, 下午9时11分, jie liu <liujie....@gmail.com> wrote:
> 谢谢两位的回复,确实,通过这个反例证明我那个方法不能找到最优解。我请教了我的一个同学,他叫我用 图论
> 来解决这个问题:建立这样一个图模型:该图含有400个顶点,代表不同的DNA;含有若干边,边代表两DNA可以发生杂交(dG<1)。用矩阵描述这个图。然后 利用matlab
> bioinformational tool中的graphconncomp()(http://www.mathworks.com/help/toolbox/bioinfo/ref/graphconncomp.html
> )找若弱连通图。我对他这个方法的理解是这样的:孤立的点(一种弱连通图),一定是可以放进这个子集的;同时必然还存在一些其他的弱连通图中的顶点是可以放进这 个子集的。如果matlab绘出图来,我倒是可以根据边的关系选出符合条件的点来,但是毕竟这是人工找出的,不是程序运算出的。关于用图论解决这个问题,大家有 好的想法吗?
>
> 2011/7/13 zjf <microsoft_w...@126.com>
>
>
>
>
>
>
>
>
>
>
>
> > 在 2011-07-12 20:19:25,"jie liu" <liujie....@gmail.com> 写道:
>
> > 大家好!
>
> > 我这有个最优化问题,是关于求最大子集的,想请大家帮我想想。
> > 问题的具体情形是这样的:
>
> > 有一种指标dG,它能描述两两单链DNA互补杂交的热力学特征。我现在有400条DNA(编号为0,2,3...399),它们组成一个集合;我现在要从这个集 合中找到一个子集,这个子集里的任意两两DNA的dG值大于等于一个值(m=1)。因为符合这样条件的子集很多,我要找到含有最多DNA个数的那个子集。
>
> > 我的方法是这样的:方便起见,400条DNA两两之间的dG,凡dG>=1的重新赋值为1,dG<1的重新赋值为0。我把这些值写入一个2维矩阵。如图1(见附 件)。含有最多1的那一行所代表的DNA被选出来,并且把所有与这个DNA杂交指标为1的其他DNA序列的相互关系写入一个新的2维矩阵,同时也会得到一个含有 最多1的那一行,把它选出来,重复上个运算。如此反复,最终筛选出来的DNA将组成最大子集。
> > 我用perl写出来这个算法,但是当我扩大总DNA数时出现了问题:理论上,最大子集中DNA个数将不小于扩大之前的,但是实际上,情况相反。
> > 请大家帮我看看,1)这个算法有问题吗?2)你能把你的办法写成伪代码告诉我吗?如果你能用perl写成源代码最好了。
>
> > --
> > 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访问此网上论坛。
>
> > 感觉算法似乎有问题:
> > 举个反例吧,如果有九条DNA,分别编号0~8
> > 4
> > |
> > 1----0-----2 5------8
> > | | X |
> > 3 6-----7
>
> > 上图分别表示0和1,2,3,4的dg值>1;5 ,6 ,7 , 8之间两两dg >1,但是按照你的算法的话,
> > 首先取的DNA为0,但最大子集却是5,6,7,8(没有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 Scienceshttp://www.gibh.cas.cn/

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

Re: [PerlChina] 新手请教:perl脚本在win32环境下运行遇到的问题!

shell会解析通配符,除非你用括号或者\转义。

2011/7/13 Beckheng Lam <bi.ken.lam@gmail.com>:
> 这个似乎是shell有关的啵。
>
> 于 2011年07月13日 18:06, hhs66317@gmail.com 写道:
>> 我写了一个简单的脚本,运行时需要在命令行下指定要处理的一系列文件名参数。为什么我不能用通配符(比如*,?)来指定这些参数。
>>
>>
>
>
> --
> 我的博客 -- http://blog.yixinit.com/
> 诸法从缘起,如来说是因。
> 彼法因缘尽,是大沙门说。
>
> --
> 您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
> 要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
> 要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
> 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
>
>

--
contact me:
MSN: walkerxk@gmail.com
GTALK: walkerxk@gmail.com

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

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

谢谢两位的回复,确实,通过这个反例证明我那个方法不能找到最优解。我请教了我的一个同学,他叫我用 图论 来解决这个问题:建立这样一个图模型:该图含有400个顶点,代表不同的DNA;含有若干边,边代表两DNA可以发生杂交(dG<1)。用矩阵描述这个图。然后利用matlab bioinformational tool中的graphconncomp()(http://www.mathworks.com/help/toolbox/bioinfo/ref/graphconncomp.html)找若弱连通图。我对他这个方法的理解是这样的:孤立的点(一种弱连通图),一定是可以放进这个子集的;同时必然还存在一些其他的弱连通图中的顶点是可以放进这个子集的。如果matlab绘出图来,我倒是可以根据边的关系选出符合条件的点来,但是毕竟这是人工找出的,不是程序运算出的。关于用图论解决这个问题,大家有好的想法吗?

2011/7/13 zjf <microsoft_win7@126.com>


在 2011-07-12 20:19:25,"jie liu" <liujie.dhu@gmail.com> 写道:
大家好!

我这有个最优化问题,是关于求最大子集的,想请大家帮我想想。
问题的具体情形是这样的:
有一种指标dG,它能描述两两单链DNA互补杂交的热力学特征。我现在有400条DNA(编号为0,2,3...399),它们组成一个集合;我现在要从这个集合中找到一个子集,这个子集里的任意两两DNA的dG值大于等于一个值(m=1)。因为符合这样条件的子集很多,我要找到含有最多DNA个数的那个子集。
我的方法是这样的:方便起见,400条DNA两两之间的dG,凡dG>=1的重新赋值为1,dG<1的重新赋值为0。我把这些值写入一个2维矩阵。如图1(见附件)。含有最多1的那一行所代表的DNA被选出来,并且把所有与这个DNA杂交指标为1的其他DNA序列的相互关系写入一个新的2维矩阵,同时也会得到一个含有最多1的那一行,把它选出来,重复上个运算。如此反复,最终筛选出来的DNA将组成最大子集。
我用perl写出来这个算法,但是当我扩大总DNA数时出现了问题:理论上,最大子集中DNA个数将不小于扩大之前的,但是实际上,情况相反。
请大家帮我看看,1)这个算法有问题吗?2)你能把你的办法写成伪代码告诉我吗?如果你能用perl写成源代码最好了。


-- 
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 访问此网上论坛。

感觉算法似乎有问题:
举个反例吧,如果有九条DNA,分别编号0~8
                              4
                              |
                       1----0-----2        5------8
                              |                  |    X  |
                              3                 6-----7

上图分别表示0和1,2,3,4的dg值>1;5 ,6 ,7 , 8之间两两dg >1,但是按照你的算法的话,
首先取的DNA为0,但最大子集却是5,6,7,8(没有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 

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

[PerlChina] 模块PDL::Graphics::PGPLOT 报告 undefined subroutine pgqinf

我通过
perl -MCPAN -e shell
install PDL
安装的这个模块,期间报了很多函数未定义的警告。
我按照官网上demo写的程序,报告了这个错误:
undefined subroutine &PDL::Graphics::PGPLOT::pgqinf at ...
后来在/usr/lib/perl5的文件夹下找了一下,没有发现这个函数。CPAN和官网上都没有说有什么dependence,这是什么情况。。

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