0

ユーザー定義の Web リンクを開くためのブックマーレットを作成しました。この特定のケースでは、UCSC ゲノム ブラウザー内の特定のゲノム位置です。

javascript:d=%22%22+(window.getSelection?window.getSelection():document.getSelection?document.getSelection():document.selection.createRange().text);d=d.replace(/%5Cr%5Cn%7C%5Cr%7C%5Cn/g,%22%20,%22);if(!d)d=prompt(%22Enter%20the%20chromosomal%20location%20(ex.%20chr1:213243007-213243247):%22,%20%22%22);if(d!=null)location=%22http://genome.ucsc.edu/cgi-bin/hgTracks?hgS_doOtherUser=submit&hgS_otherUserName=Denilw&hgS_otherUserSessionName=mrkdOvrExpUniqMonometh&position=%22+escape(d).replace(/%20/g,%22+%22);void%200

表示できるヒトゲノムには 24 の染色体があり、次のことを行いたいと考えています。

1) ユーザーが入力した文字列から染色体を解析します

java スクリプトで正規表現を使用して、chr22:213243007-213243247 から 22 を解析するか、chrX:213243007-213243247 から X を解析します。

2) ユーザー入力に基づいて、UCSC のフォームのドロップダウン オプションで選択を行います。

22 個の染色体のそれぞれについて、合計 88 個の 4 つのトラックまたはデータ セットが表示されます。これらは、上で選択したリンクに従って、UCSC ゲノム ブラウザーのカスタム トラックセクションで選択できます。

http://genome.ucsc.edu/cgi-bin/hgTracks?hgS_doOtherUser=submit&hgS_otherUserName=Denilw&hgS_otherUserSessionName=mrkdOvrExpUniqMonometh&position=chr14%3A22%2C409%2C038-22%2C409%2C507

HS0356_chr_ CHROMOSOME _duplicates_standard_len_triangle HS0445_dpwg_chr_chr CHROMOSOME _duplicates_standard_len_triangle HS1328_chr_ CHROMOSOME _duplicates_standard_len_triangle HS1329_dpwg_chr_chr CHROMOSOME _duplicates_standard_len_triangle

次に、 CHROMOSOMEがパート 1 で定義されている上記のドロップダウン メニューをHideからFullに変更して、目的の染色体のデータのみが表示されるようにしたいと思います。

おそらく、次のようなものが役立つでしょう: http://www.codeproject.com/KB/scripting/autoselect.aspx

4

1 に答える 1

1

最初の問題については、

var str = "chr22:213243007-213243247";
var result = /chr(\w*):(\d*)-(\d*)/.exec(str);
if(result)
{
    alert(result[1]) // 22
    alert(result[2]) // 213243007
    alert(result[3]) // 213243247
}
else
{
    // User entered invalid string
    alert("Invalid input");
}

result[2]とが必要ない場合はresult[3]、無視してください。

私はあなたの質問の 2 番目の部分を見ました (うまくいけば、私はそれを正しく理解していると思います)。ページのドロップダウンのほとんどは次のようになります。

<select name="ct_HS1329dpwgchrchr17duplicatesstandardlentriangle_5941" class="hiddenText" style="width: 70px">
    <option selected="">hide</option>
    <option>dense</option>
    <option>full</option>
</select>

これで、次のコードを使用して上記のselect要素を取得し、選択したオプションを 'full' に設定できます: (編集: 完全な要素名を予測できないため、回避策を追加しました)

// Convert "chr17_duplicates_standard_len_triangle" to "chr17duplicatesstandardlentriangle"
var selectText = "chr17_duplicates_standard_len_triangle";
var selectName = selectText.replace(/_/g, "");

// Find the element that contains "chr17duplicatesstandardlentriangle" in
// it's name.
var selectElements = document.getElementsByTagName("select");
for(var i=0;i<selectElements.length;i++)
{
    var ele = selectElements[i];
    var name = ele.name;
    if(name.indexOf(selectName)!==-1)
    {
        ele.selectedIndex = 2;
        break;
    }
}

この解決策は好きではありません。必要なときにページ上のすべての選択要素をループする必要があるからです。誰かがより良い解決策を知っている場合は、教えてください。

それがあなたの質問に答えることを願っています!

于 2010-07-06T02:53:51.293 に答える