我有使用R看起来像这样的数据。

> hits
  Views on a 51-letter DNAString subject
subject: TCAGAAACAAAACCCAAAATCAGTAAGGAGGAGAAAGAAACCTAGGGAGAA
views:
    start end width
[1]     1  10    10 [TCAGAAACAA]
[2]    14  23    10 [CCAAAATCAG]
[3]    19  28    10 [ATCAGTAAGG]
[4]    20  29    10 [TCAGTAAGGA]
[5]    21  30    10 [CAGTAAGGAG]

所以我有一个长度为51的字符串

subject = TCAGAAACAAAACCCAAAATCAGTAAGGAGGAGAAAGAAACCTAGGGAGAA

从该subject中提取了5个子字符串。 您可以在上方看到它们。 我想看看这5个子字符串是否在我感兴趣的范围内 感兴趣的领域是从位置14 - 27

subject = TCAGAAACAAAAC |-> CCAAAATCAGTAAG <-| GAGGAGAAAGAAACCTAGGGAGAA subject = TCAGAAACAAAAC |-> CCAAAATCAGTAAG <-| GAGGAGAAAGAAACCTAGGGAGAA

换句话说,我有5个来自subject字符串的子字符串。 在这些5串,我只寻找一个谎言位置之间串14 - 27中的subject字符串。 这是我感兴趣的领域。

第一个[1]子字符串[TCAGAAACAA]并不是那么重要,因为它直接嵌入在开始位置(由坐标1 - 10给出),并且不在我感兴趣的范围内。

第二[2]通过坐标给定的字符串14 - 23告诉我,它在全部埋入我的兴趣领域 (这又是14 - 27 )。

第三[3]字符串[3]由坐标19 - 28给出。 这对我很重要 ,因为大多数字符串都嵌入到我感兴趣的区域中

第四个[4]字符串由坐标20 - 29 同样,这对我来说很重要,因为除了最后一个字符外,大多数字符串都嵌入在我感兴趣的区域中

第五个子字符串的故事也是如此。

基本上,如果60%的字符串嵌入在我感兴趣的区域中,我希望将其计算在内。

有人可以给我一个伪代码算法来做到这一点吗? 我已经考虑了一段时间绘制图表,但是我似乎无法实现它。 我正在R中执行此操作,因此我会将伪代码转换为R。而且数字60%是任意的。 我必须与我的主管确认,但是我确定这是无关紧要的。

#1楼 票数:0

def substring_index(longstring, substring):
    """Return the index of the substring in longstring."""
    # Python has a built in function for this.

def is_interesting(index, length, interesting_start, interesting_end, percentage):
    """Return true if the substring is interesting."""
    interesting = 0
    uninteresting = 0
    # check if the character at each position from index to index + length
    # is in the interesting range.
    for x in range(index, index + length + 1):
        if interesting_start < x < interesting_end:
            interesting += 1
        else:
            uninteresting += 1
    # Do some math to see if interesting / (interesting + uninteresting) 
    # is bigger than percentage

使用substring_index函数查看索引是否在长substring_index以及在哪里。

使用is_interesting函数可根据子字符串是否有趣返回布尔值。

因此,对于第一个子字符串,您可以这样称呼它:

longstring = "TCAGAAACAAAACCCAAAATCAGTAAGGAGGAGAAAGAAACCTAGGGAGAA"
substring = "TCAGAAACAA"
is_interesting(substring_index(longstring, substring), len(substring), 14, 27, 0.6)

#2楼 票数:0

如果我理解得很好,您需要

  1. 定义一个由开始位置和结束位置给出的“感兴趣区域”。
  2. 在较大的字符串感兴趣的区域中找到字符串或字符串的可接受部分。

所以这就是我在javascript中要做的

var fractionIsInString = function (areaOfInterest, stringToBeFound, acceptedFraction) {
    var fractionLength = Math.floor(stringToBeFound.length*acceptedFraction),
        startPosition = 0,
        endPosition = fractionLength,          
        fraction,
        keepSearching = true;

    do {
        fraction = stringToBeFound.substring(startPosition, endPosition);
        if (areaOfInterest.indexOf(fraction) > -1) {
            return true;
        }
        startPosition++;
        endPosition++;
        keepSearching = endPosition < stringToBeFound.length;
    } while (keepSearching);

    return false;
};

只需说一下

fractionIsInString('CCAAAATCAGTAAG', 'TCAGAAACAA', 0.6);

第一个参数是您感兴趣的领域,可以像这样获得

subject.substring(14, 27);

第二个参数是您从主题中获得的字符串中的第一个。 一个从0到10的值。第三个参数是要查找的第二个参数的一部分。 在这种情况下为60%。

该函数的工作方式是在较大的字符串中查找字符串的分数,如果未找到分数,则移至字符串的下一个分数,依此类推,直到找到可找到的分数或达到分数为止。字符串的结尾。

  ask by masfenix translate from so

未解决问题?本站智能推荐:

1回复

计算字符串中数组的出现

我是编程的新手,已经尽我所能进行研究/阅读,但是还没有找到具体的答案来帮助我。 我的问题如下,如果我有一个包含多个单词的数组,如下所示:myArray =“ this”,“ makes”,“ bats”,“ look”,“ funny” 而且我有一串乱七八糟的单词(包括数组中列出的单词的
5回复

字符串算法作业/面试之类的问题

假设我们必须对字符串A和B进行字符串输入。任务是在字符串B中插入所有需要的字母,以字符串A结尾。 例如: 因此,如果我们这样看字符串A: 要么: 显然,我们可以从字符串B构建字符串A,并且输出应采用上述书面格式(两个答案均正确)。 您能想到一种可以在合理时间内解决此问题的算法
2回复

计算给定字符串的所有可能的子字符串[重复]

这个问题已经在这里有了答案 : 7年前关闭。 可能重复: 如何在PHP中查找字符串的所有子字符串 查找列表的所有子集 如何计算字符串的所有可能的子字符串? 例如,给定一个字符串ABCDE。
2回复

如何在文本文件中获取某个字符串

这是一个名为“sample.txt”的示例文本文件: 我想要做的是使用VB脚本返回“myScript.sql”和“myNewScript.sql”字符串。 喜欢: 这样的事情。
1回复

如何在python中找到包含焦点词的字符串的最长匹配

新的python /编程,所以不太确定如何表达这个.... 我想要做的是:输入一个句子,找到输入句子的所有匹配和一组存储的句子/字符串,并返回匹配字符串的最长组合。 我认为答案将与正则表达式有关,但我还没有开始那些,如果我不需要,我也不想。 我的问题:这是正则表达式的方法吗? 或者
2回复

以编程方式构建字符串并处理尾随或前导的布尔运算符

我在应用程序中使用Lucene。 因此,我有一个表格,允许用户通过从下拉列表中选择要搜索的内容来构建查询。 用户提交后,我将建立查询,然后将其归结为以下内容: 现在的问题是该语句将以“ AND”开头 现在我通常以: 程序员通常会喜欢这样做吗? 人们是否喜欢使用另一种我没有想到
1回复

字符串格式代码中的PythonTypeError

我有一个问题,我必须将伪代码转换为Python,并且出现错误: 我的代码当前如下所示:
3回复

在字符串中查找字符串的第一个实例

我有以下似乎起作用的功能。 这是在设计代码中: 在VB.NET实现的代码如下: 它返回参数字在字段fText中的位置 。 这是有效的方法吗? 它容易破裂吗? 有更好的解决方案吗?