0

我写了一个小册子来打开一个用户定义的网络链接,在这个特定的情况下,一个特定的基因组位置在 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 部分中定义为从隐藏更改为完整,以便只显示感兴趣的染色体的数据。

也许这样的事情会有所帮助: 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]and result[3],请忽略它们。

我查看了您问题的第二部分(希望我理解正确),页面上的大多数下拉菜单如下所示:

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

现在,我们可以使用以下代码来获取上述select元素并将选定的选项设置为“完整”:(编辑:添加了一个解决方法,因为无法预测完整的元素名称)

// 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 回答