我正在使用 biojava 创建色谱图。
色谱图是图像。每个碱基调用都保存在一个矩形内。
获取 x 坐标(左侧): gfx.getCallboxBounds(int i).getX();
获取宽度: gfx.getCallboxBounds(int i).getX()
其中整数 i 表示构建色谱的矩形排列中的矩形。
要获得给定基础的置信度值:
(我创建了一个名为 confidence 的数组)confidence[i - 1];
我在哪里,再次,有问题的基地。
置信度值报告在 1 到 70 之间。图像的高度为 240 像素。
对于每个碱基调用的宽度,我想在序列的相对高度处打印 2 个像素粗的灰线。
例如,如果 basecall (Rectangle) 60 的质量为 40,其宽度为 20,则会在其宽度为 137 像素 (40 / 70 * 240) 处绘制一条灰线。
这是绘制轨迹的方法:
ChromatogramFactory chromFactory = new ChromatogramFactory();
Chromatogram chrom = ChromatogramFactory.create(abi);
ChromatogramGraphic gfx = new ChromatogramGraphic(chrom);
BufferedImage bi = new BufferedImage(
gfx.getWidth(),
gfx.getHeight(),
BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = bi.createGraphics();
g2.setBackground(Color.white);
g2.clearRect(0, 0, bi.getWidth(), bi.getHeight());
if (g2.getClip() == null) {
g2.setClip(new Rectangle(0, 0, bi.getWidth(), bi.getHeight()));
}
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
gfx.drawTo(g2);
g2.draw(new java.awt.Rectangle(-10, -10, 5, 5));
编辑:此外,序列长度与矩形的数量相同。序列中的每个字母代表一个碱基调用,每个矩形也是如此。