joybio / multiPrime

multiPrime is a mismatch-tolerant minimal primer set design tool for large and diverse sequences (e.g. Virus). Here is a web-based version (test: http://multiPrime.cn))
MIT License
365 stars 37 forks source link

如何选择聚类参数 #18

Open zhendejuzi opened 1 month ago

zhendejuzi commented 1 month ago

您好。请问假设序列的两端是保守的,中间比较长的序列是不保守的。进行不同序列的cluster的会有影响吗?感觉很难设计出primer

joybio commented 1 month ago

@zhendejuzi 通常情况下很难聚类,而且引物设计时考虑的因素很多(二聚体,GC等等),有的时候仅仅序列保守无法设计出可用引物。

zhendejuzi commented 1 month ago

1)我保留序列两端的保守位置,然后将中间替换成‘ 'G' *200’,例如:保守序列1+‘GGGGGGGG...GGGGGGGGGG’+保守序列2。然后在让PRODUCT_size>200,使得会设计在两端。感觉有时候可以强行抵消中间序列不保守对cluster的影响。 2)但是,有时候聚类会得到很多很小的类,seq_num<5,代码中有没有参数将能对这种小类进行操作跳过,否则太花时间了。 3)我将dege_number和degeneracy,entropy阈值进行放松(例如:6,16,5),但是在得到的结果中,dege_number通常也不会大于4。在进行进一步的过滤后到/Clusters_cprime,就没有primer了,然后就报错了。话说:a) 有没有办法产生更加宽松的阈值。b)产生多对(例如n=3)的primer的将coverage合并上去,毕竟不同位置的碱基差异可能有连锁不平衡。

joybio commented 1 month ago

@zhendejuzi 非常感谢您的反馈,问题很详细很专业。 1)操作没问题,可以这样操作。 2)目前没有调控小类的参数,可以把中间的G缩短,序列长度越长比对越慢,无关中间序列是什么。 3)multiPrime内部有一个degeneracy的上限,不会无限制增加简并度,上限取决于参数综合设计,最后会定在32-128。 a)放宽阈值的参数有很多,可以在yaml里尝试修改。b)这个想法很好,而且我也想过去实现它,但是最后想法流产了,因为一个cluster多对引物的话会导致产物复杂,经常会因为多对引物针对一个cluster而产生多个PCR产物,如果PCR产物有交集就会倾向于扩增更短的产物。不过在Cluster_primer和Cluster_cprimer中应该有每个cluster的候选引物,因为限制条件过多而无法入选的引物都在这其中。考虑到计算上的阈值可能和实际上有区别,我们曾经的经验是在这些里面选择引物增加引物池覆盖度。

zhendejuzi commented 4 weeks ago

目前看来, 聚类阈值严格一点的话,会有很多小类,导致后续分析时间非常长。 聚类阈值放松一点的话,有些类别难以得到Cluster_cprimer,报错