0

クロマトグラムを作成するために biojava を使用しています。

クロマトグラムはイメージです。各ベースコールは長方形内に保持されます。

x 座標 (左側) を取得するには: gfx.getCallboxBounds(int i).getX();

幅を取得するには: gfx.getCallboxBounds(int i).getX()

ここで、整数 i は、クロマトグラムを構築する長方形の配置における長方形を表します。

特定のベースの信頼値を取得するには:

(confidence という配列を作成します) confidence[i - 1];

ここで、i は問題の塩基です。

信頼値は 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));

編集:また、シーケンスの長さは長方形の数と同じです。シーケンス内の各文字は、各長方形と同様にベースコールを表します。

4

1 に答える 1

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);
    }
于 2016-02-15T21:12:24.237 に答える