問題タブ [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.
performance - DNAのモチーフを見つける
問題はここにあります: http://rosalind.info/problems/subs/
私が持っている質問は、以下に示す 2 つのソリューションのパフォーマンスに関係しています。
1.
2.
2 番目の解決策は、美しく機能的で短いものです。
最初のソリューションは少し大きいですが、それでも機能します。val を省略して、値を操作して短くすることもできましたが、それは私の目標ではありませんでした。
2番目の解決策を見た後、コードの長さのために私はかなりがっかりしました。scala ライブラリをチェックして、2 番目のソリューションが機能する理由を確認し、自分で再実装しました。両方のソリューションのパフォーマンスをチェックすることを考え、巨大な 3000 万の DNA ストランドを作成しました。
驚いた!
パフォーマンス:
最初の数字は DNA の長さで、次の 2 つの数字は 1 番目と 2 番目のソリューションの実行時間 (ms) を表します。
11,226,096 - 4921 - 14503
33,678,288 - 6448 - 35150
性能がこんなに違うのはなぜ?
scala ライブラリをチェックしてみましたが、この動作を説明するものは見つかりませんでした。
最初の解決策は多くのオブジェクトを作成するため、より多くのメモリを消費し、それを行うのに多くの時間がかかると思いましたが、何らかの理由ではるかに高速に動作するようです. 末尾の再帰ではないかと思いますし、zipWithIndex に時間がかかるとは思えません。イテレータは単なるイテレータですか?
ありがとう!
algorithm - アルゴリズム/確率演習
私は rosalind プロジェクトの課題を解決しようとしていますが、明らかに間違いを犯し続けています。全文はこちらから入手できますが、私の短い抽象的な解釈と試みは次のとおりです。私が間違っていることを見つけるのを手伝ってください:
AA
、Aa
、の 3 つの項目グループがありますaa
。1 in から始めて、新しいアイテムを生成する反復をAa
行います。k
すべての反復で、グループ内のすべてのアイテム:
Aa
( 25AA
%)、Aa
(50%)、aa
(25%)AA
( 50AA
%)、Aa
(50%)aa
( 50aa
%)、Aa
(50%)
反復の結果として、前の反復で各グループから 2 つの新しいアイテムを生成すると仮定して、各グループの予想アイテム数をカウントします。したがって、最終的には次のようになります。
- 0番目の反復:
AA
: 0,Aa
: 1,aa
: 0 - 1回目の反復:
AA
: .5,Aa
: 1,aa
: .5 - 2回目の反復:
AA
: 1,Aa
: 2,aa
: 1 - 等 - グループ間の割合は 1:2:1 のまま
各反復の期待値/母集団の合計は で2^iteration
あり、アイテムがグループに含まれる確率Aa
は常に 50% です。
これまでのところ、私が正しいことを願っていますが、実際に求めているのは、実験を 2 回繰り返した場合に、少なくとも 2 回N
グループに含まれるアイテムを持つ可能性はどのくらいかということです。(同等である必要があります: 元の質問から、グループのリストを, , ....に拡張した場合Aa
、少なくともN
アイテムがグループに含まれる可能性は何ですか)AaBb
AABB
AABb
したがって、アイテムが含まれる確率Aa
は 50% であり、反復 (または ) からの期待値の母集団の合計であり2^iteration
、テスト データ (k=2、N=1) を使用して scipy でそれをスローすると、少なくとも 1 つのアイテムについてこれが得られます。グループ内Aa
:
これは、グループのセットが 2 つある場合、少なくとも 1 つのアイテムに対して、次のようになりAaBb
ます。
元の質問の答えとはまったく異なります: 0.684
どこで間違いを犯したのですか?(可能であれば、自分で解決しようとしている人にネタバレが残らないように、解決策を示すのではなく、間違いだけを指摘してください)
python - フィボナッチ ウサギは任意の月数で死亡
したがって、この問題または同様の問題に対するいくつかの解決策を見てきましたが、なぜ 私のものが機能しないのかを本当に知りたいです。私が見つけた多くの解決策よりもはるかに読みやすいので、うまく機能させたいです!
2か月後に繁殖を開始する1組のウサギから始めます。n か月実行すると、ウサギは m か月生きた後に死亡します。'6 3' の入力は 4 を返すはずですが、3 を返します。
ありがとう=]
python - 複数の行にまたがるデータ行に数式を適用する
私は、Python を少し学ぼうとする最初の一歩を踏み出したところです。現在、バイオインフォマティクスの Python スキルを教えることを目的とした Rosalind オンライン コースに取り組んでいます。(ちなみに非常に良いです。参照: rosalind.info)
私は1つの特定の問題に苦しんでいます。次の形式の FASTA 形式のファイルがあります。
ファイルの各エントリ (ヘッダーを除く) で G と C の割合を計算し、この数値を返す必要があります。例:
これまでの私のコードは次のとおりです。
これは、私が必要とするほとんどのことを行っています。シーケンスデータが複数行にまたがる場所で問題が発生しています。現時点では、各エントリに対して単一の数値を返すのではなく、ファイル内のすべての行の % GC コンテンツを取得しています。例:
複数の行にまたがるデータに数式を適用するにはどうすればよいですか?
前もって感謝します、
python - 反復ごとにモジュロを実行する必要があるのはなぜですか?
これは、私が正しい答えに出くわした質問の 1 つですが、なぜそれが正しい答えなのか理解できず、ウィキペディアは役に立ちませんでした。Rosalind のために、私はタンパク質ストリングからすべての可能な RNA シーケンスの数を取得するための簡単なスクリプトを作成しました (モジュロ 1,000,000)。私はそれが可能な限り最も効率的なコードではないことを知っています (部分的には、私が以前に作成したものからビットをリサイクルするためです) が、ここにあります:
これは、RNA シーケンスの総数を計算し、最終結果のモジュロを取ります (またはそう思います)。これを試す前に、2回間違った答えを得ました:
これにより、明らかに正しい答えが得られました。x*y ごとにモジュロを実行する必要があるのはなぜですか? 私はモジュロを理解していませんか、それとも Python を理解していませんか?
編集:申し訳ありませんが、タイプミス。