如何在 Latex 中轻松绘制基因调控通路?

如何在 Latex 中轻松绘制基因调控通路?

在生物学中,绘制如下图所示的图表来显示基因之间的调控相互作用是很常见的:

在此处输入图片描述

您可以看到,这本质上是一个图表,包含 3 个关键元素:

  • 节点,可以是基因名称(例如lin-1)或事件(vulval fates)。
  • 正(激活)边缘,以箭头(通常为绿色)表示,表示一个基因诱导另一个基因。
  • 负(抑制)边缘,以粗短的线(通常为红色)表示,表明一个基因抑制另一个基因。

有时,可能需要将边画得非常长或弯曲(当两个基因相距较远时)。有时,可以使用点线或虚线来显示假定或提议的关系。

箭头有时可能指向其他箭头例如,当基因 A 增强基因 B 激活基因 C 的能力时。一个稍微不那么简单的例子:

在此处输入图片描述

以上是我想要做的最基本的事情。显然,图表的布局是完全不同的难题,但现在我们先忽略这一点,假设用户将手动布局节点。

额外积分

可以将这些图表做得更复杂,以强调调控方式的细微差别(转录、翻译后、定位、直接与间接等)。以下是展示拟议的象征性词汇科恩 2006. 这是另一个建议词汇皮尔森2000示例用法

答案1

这是一个元帖子方法与第一个图表类似。鉴于 MP 的通用性,您可以想出方法轻松扩展它。

基因图谱

prologues := 3;
outputtemplate := "%j%c.eps";

input boxes;

vardef draw_inhibition(suffix $, $$) = 
  interim ahangle := 180; % to get T-shaped arrows
  interim linecap := butt; % squared ends
  interim linejoin := mitered;
  drawarrow $.c -- $$.c cutbefore bpath $ cutafter bpath $$ 
                        withpen pencircle scaled 2bp 
                        withcolor .67 red;
enddef;

vardef draw_activation(suffix $, $$) = 
  interim linecap := butt;
  interim linejoin := mitered;
  drawarrow $.c -- $$.c cutbefore bpath $ cutafter bpath $$
                        withpen pencircle  scaled 2bp 
                        withcolor .59 green;
enddef;

beginfig(1);

defaultdx := 5; % add some extra space around the names
defaultfont := "phvbo8r"; % bold oblique
boxit.ln01("lin-1");
boxit.ln03("lin-3");
boxit.ln15("lin-15");
boxit.ln45("lin-45");
boxit.lt23("let-23");
boxit.lt60("let-60");
defaultfont := "phvb8r"; % bold
boxit.event("vulval fates");

u = 6mm;
ln03.c = ln15.c + (0,2u);
lt23.c = ln15.c + (3u,u);
lt60.c = lt23.c + (3u,0);
ln45.c = lt60.c + (3u,0);
ln01.c = ln45.c + (3u,0);
event.c = ln01.c + (4u,0);

drawunboxed(ln15,ln03,lt23,lt60,ln45,ln01);
draw pic event withcolor .49 blue; % draw this one in blue

draw_inhibition(ln15, lt23);
draw_activation(ln03, lt23);
draw_activation(lt23, lt60);
draw_activation(lt60, ln45);
draw_inhibition(ln45, ln01);
draw_inhibition(ln01, event);

endfig;
end.

更新:此版本对粗箭头的处理稍微合理一些,并使用了与 OP 图表相同的斜字体。

相关内容