问题标签 [rosalind]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1476 浏览

performance - 在 DNA 中寻找基序

问题可以在这里找到: http ://rosalind.info/problems/subs/

我的问题与下面提供的两种解决方案的性能有关。

1.

2.

第二种解决方案漂亮、实用且简短。

第一个解决方案有点大,但它仍然有效。我本可以省略 val 并使用这些值使其更短,但这不是我的目标。

在看到第二个解决方案后,由于代码的长度,我对我的解决方案感到非常失望。检查了 scala 库以了解为什么第二个解决方案有效,然后我自己重新实现了它。考虑检查这两种解决方案的性能,并制作了一条巨大的 3000 万条 DNA 链。

惊讶!

表现:

第一个数字是 DNA 长度,接下来的两个数字表示第一个和第二个解决方案的执行时间(以毫秒为单位)。

11,226,096 - 4921 - 14503

33,678,288 - 6448 - 35150

为什么性能差别这么大?

我试过检查 scala 库,但找不到解释这种行为的东西。

我假设第一个解决方案是创建许多对象,因此会消耗更多内存并花费大量时间,但似乎由于某种原因它工作得更快。我怀疑这是尾递归,我怀疑 zipWithIndex 需要很多时间。迭代器只是迭代器?

谢谢!

0 投票
1 回答
277 浏览

algorithm - 算法/概率练习

我正在尝试解决 rosalind 项目中的一个练习,但显然一直在犯一些错误。全文可在此处获得,但我的简短抽象解释和尝试如下。请帮我找出我做错了什么:

我们有 3 组项目:AAAaaa。我们从 1 in 开始Aak迭代生成新项目。在每次迭代中,组中的每个项目:

  • Aa可以产生:AA(25%), Aa(50%), aa(25%)
  • AA可以产生:AA(50%), Aa(50%)
  • aa可以产生:aa(50%), Aa(50%)

作为迭代的结果,我们计算每个组的预期项目数,假设我们在前一次迭代中从每个项目生成 2 个新项目。所以我们最终得到:

  • 第 0 次迭代::AA0,Aa:1,aa:0
  • 第一次迭代:AA: .5, Aa: 1, aa: .5
  • 第二次迭代:AA: 1, Aa: 2, aa: 1
  • 等等 - 组之间的比例保持在 1:2:1

每次迭代的期望值/总体的总和是2^iteration,并且项目在组中的概率Aa始终为 50%。

到目前为止,我希望我是对的,但我们真正追求的是:如果我们重复实验两次,至少两次N都在组中的项目的机会是多少。Aa(应该相当于:如果我们将组列表扩展到, , .... 从原始问题中,至少有N项目在组中的机会是多少)AaBbAABBAABb

所以项目出现的概率Aa是 50%,来自迭代(或2^iteration)的预期值的总体总和,并使用测试数据(k=2,N=1)将其扔给 scipy,我们至少得到一个项目在组中Aa

如果我们有两组组,这至少适用于一个项目,所以AaBb

这与原始问题中的答案完全不同:0.684

我在哪里做错了?(如果可能,请只指出错误,而不是给出解决方案,以免给试图自行解决的人留下剧透)

0 投票
7 回答
21114 浏览

python - 用于计算 DNA 序列中 GC 含量的初学者 Python 脚本

我正在尝试计算 Rosalind 问题的 DNA 序列的 GC 含量(以 % 为单位)。我有以下代码,但它返回 0,或仅返回 G 或 C 的数量(无百分比)。

我也试过这个,只是为了得到 G 和 C 的计数,而不是百分比,但它只返回整个字符串的计数:

编辑:我在第一个代码示例中修复了 print 语句中的错字。那不是问题,我只是粘贴了错误的代码片段(有很多尝试......)

0 投票
3 回答
698 浏览

python - 用元组填充列表

我只是在摆弄(孟德尔第一定律)的模拟。

在我可以让小动物交配并分析结果之前,必须生成种群,即,必须在列表中填充不同数量的三种不同类型的元组,而无需解包它们。

在尝试熟悉itertools时(我稍后会在交配部分需要组合),我想出了以下解决方案:

这将导致:

是否有更合理、pythonic 或节省内存的方式来构建最终列表,例如不首先为三种类型的个人生成列表?

0 投票
5 回答
9383 浏览

python - 斐波那契兔子在任意几个月后死亡

所以,我已经看到了一些解决这个问题或类似问题的方法,但我真的很想知道为什么 我的不起作用。它比我找到的许多解决方案更容易阅读,所以我很乐意让它工作!

从1对兔子开始,2个月后开始繁殖。跑 n 个月,兔子活了 m 个月后死去。'6 3' 的输入应该返回 4,但它返回 3。

谢谢=]

0 投票
5 回答
238 浏览

python - 将公式应用于跨越多行的数据行

我只是迈出了尝试学习一点 Python 的第一步。目前正在学习旨在教授生物信息学 python 技能的 Rosalind 在线课程。(顺便说一句,非常好,请参阅:rosalind.info)

我正在努力解决一个特定问题。我有一个 FASTA 格式的文件,其格式如下:

我需要计算文件每个条目(不包括标题)中 G 和 C 的百分比并返回这个数字,例如:

到目前为止,我的代码是:

几乎是我需要它做的事情。我只是在序列数据跨越多行时遇到了麻烦。目前我得到文件中每一行的 % GC 内容,而不是为每个条目返回一个数字,例如:

如何将我的公式应用于跨越多行的数据?

提前致谢,

0 投票
1 回答
670 浏览

python - 为什么每次迭代都必须进行取模?

这是我偶然发现正确答案的问题之一,但我不明白为什么它是正确的,而维基百科没有帮助。对于 Rosalind,我编写了一个简单的脚本,用于从蛋白质串(模 1,000,000)中获取所有可能的 RNA 序列的数量。我知道这不是最有效的代码(部分原因是我从以前制作的东西中回收了一些位),但它是:

这会计算 RNA 序列的总数并取最终结果的模数(或者我认为如此)。在我决定尝试这个之前,我得到了两次错误的答案:

这显然产生了正确的答案。为什么必须在每个 x*y 处执行模数?我是不了解模还是不了解 Python?

编辑:对不起,错字。

0 投票
2 回答
368 浏览

python - 无法将 Python 代码发布到 roaslind.info

我正在尝试将用 Python 编写的示例解决方案发布到 rosalind.info。

我尝试按照说明进行操作

“要突出显示代码,请在代码中添加 shebang 样式的第一行 :::lexername。将 lexername 替换为要突出显示的语言的 lexer 关键字,如 Pygments 词法分析器列表中所示。”

使我的代码显示为 Python,但无法使其正常工作。

我尝试将第一行设置为:

但它只是显示为普通文本。

谢谢你的帮助。尼克B

0 投票
3 回答
810 浏览

python - 查找列表字典中在该列表中具有特定元素的所有元素

我正在通过 Rosalind 解决一个问题。自从我被卡住以来已经一周了。我将尝试尽可能简单地解释这一点。

输入 - 一个名为Genome, 和整数k, L, 和的字符串t。基因组是一串要分类的遗传密码。

k是一个给定的整数,每个 kmer 的大小。kmer 是遗传密码的一个子串,可能具有某种意义。t是 kmer 出现在簇中的次数。L是形成丛的文本的长度。例如,如果L = 400我们正在寻找一个t在 400 个字符的簇内出现次数的 kmer。

输出——所有不同的 k-mers 在基因组中形成 (L, t)-团块。

该代码获取基因组,将其分解为所有可能的 kmer 并将这些 kmer 插入字典。kmers 是钥匙。这些值设置为 [frequency_of_kmer, [kmer locations]]. 该值像这样存储在字典中:{'AAAAA' : [y, [z1,z2]]},其中y是出现次数,并且z1z2字符串中找到子字符串的索引。

基本上,我正在寻找迭代字典。我想找到t文本中出现次数的键。也就是说,我想找到字典的所有键,d例如d[key]==t.

下面的代码,然后是输出。

代码:

0 投票
3 回答
337 浏览

python - 罗莎琳德决议菜鸟

这是我对这里提出的问题的解决方案:http ://rosalind.info/problems/subs/ 。

我的代码有什么问题?