ここから htsjdk.jar によって提供されるメソッドにアクセスしようとしています: https://samtools.github.io/htsjdk/
ここに文書化されています: https://samtools.github.io/htsjdk/javadoc/htsjdk/index.html
ジソンを使用。バイナリ BAM ファイルの開始位置と終了位置を取得するには、BAM ファイル インデックス (BAI ファイル) にアクセス/クエリする方法が必要です。テスト BAM および BAI ファイルは、 https ://github.com/samtools/htsjdk/tree/master/testdata/htsjdk/samtools/BAMFileIndexTest から取得できます 。
Jython レジストリに配置した後の jython 2.7.0:
python.security.respectJavaAccessibility = false
#I did in the jython comandline:
import sys
sys.path.append("/usr/local/soft/picard_1.138/htsjdk-1.138.jar")
from htsjdk.samtools import *
from java.io import File
#the BAM index file + BAM files
bai_fh = File("./index_test.bam.bai")
mydict = SAMSequenceDictionary()
bai_foo = DiskBasedBAMFileIndex(bai_fh, mydict)
bai_foo.getNumberOfReferences() などのいくつかのメソッドにアクセスできますが、目的のメソッド
getBinsOverlapping(int referenceIndex, int startPos, int endPos) は BrowseableBAMIndex インターフェイスにあります。
しかし、Jython で Java クラスをサブクラス化することになると、私は迷ってしまいます。このタスクは、特定のゲノム位置に対応する BAM ファイル チャンクのリストを取得することです。テスト BAM/BAI ファイル、つまり chrM 10000-15000 (染色体、start_pos、end_pos) の場合、htsjdk の代わりに市販の samtools スタンドアロン プログラムを使用して、11 のマッピングされた読み取りを取得します。
samtools view index_test.bam chrM:10000-15000
助けてくれて本当にありがとうございます
ダレク
編集: Groovy部分を再Groovyバージョン:2.4.4
groovy -cp libs/htsjdk-1.138.jar test_htsjdk.groovy
#!/usr/bin/env groovy
import htsjdk.samtools.*
File bam_fh = new File("./A.bam")
File bai_fh = new File("./A.bam.bai")
def mydict = new SAMSequenceDictionary()
def bai_foo = new DiskBasedBAMFileIndex(bai_fh, mydict)
println bai_foo.getNumberOfReferences()
上記のコードは groovy で動作します。私の問題は、このコードが機能しないことではなく、BAI ファイル形式を扱う Java クラスからメソッドにアクセスする適切な方法がわからないことです。htsjdk/src/java/htsjdk/samtools/*java ファイル (repo@github からの git clone) で AbstractBAMFileIndex を検索しましたが、何をする必要があるかはまだ明確ではありません。