如何将置信度值整合到DNA色谱图像中?

时间:2016-02-15 18:09:22

标签: java swing graphics2d biojava

我使用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));

编辑:此外,序列长度与矩形数相同。序列中的每个字母代表一个基本调用,每个矩形也是如此。

1 个答案:

答案 0 :(得分:0)

使用下面的代码,我能够在相对位置添加行以提供置信度值:

    int leftBound = 0;
    int rightBound = 0;
    double confVal = 0;
    double heightDouble = 0;
    int height = 0;

    g2.setColor(Color.LIGHT_GRAY);

    for (int i = 0; i < gfx.getCallboxCount(); i++) {
        leftBound = (int) gfx.getCallboxBounds(i).getX();
        rightBound = (int) ((int) leftBound + gfx.getCallboxBounds(i).getWidth());
        confVal = confidence[i] * 2.67;
        heightDouble = 200 - confVal;
        height = (int) heightDouble;
        g2.drawLine(leftBound, height, rightBound, height);
    }