問題タブ [fasta]

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 に答える
520 参照

python - (fasta) ファイルの読み取り時に Python シェルがフリーズする

これまでのコードを示すことから始めます。

何らかの理由で、次のように入力してファイルを読み取ろうとすると、Python シェル (私は 3.2.2 を使用しています) がフリーズします。

rF 関数の条件は、">" トークンで始まる各行を読み取らないようにするためのものです。これらの行は DNA/RNA コード (これらのファイルから読み取ろうとしているもの) ではないため、無視する必要があります。

誰かがこれで私を助けてくれることを願っています。私のエラーは表示されません。

いつものように、よろしくお願いします!

編集: *問題は解決しません! * これは私が現在使用しているコードです。私はエラー処理を削除しましたが、これはとにかく派手な追加でしたが、それでもファイルを読み取ろうとするとシェルがフリーズします。これは私のコードです:

0 投票する
2 に答える
635 参照

perl - .fastaファイルを使用してシーケンスの相対的な内容を計算する

ですから、私は「初心者」であり、最近Perlを介したプログラミングを紹介されましたが、まだこれらすべてに慣れています。使用しなければならない.fastaファイルがありますが、それを開くことができるかどうか、またはいわば「盲目的に」操作する必要があるかどうかはわかりません。

とにかく、私が持っているファイルには、この.fasta形式で書かれた3つの遺伝子のDNA配列が含まれています。

どうやらそれはこのようなものです:

私の目標は、ファイルを開いて読み取るためのスクリプトを作成することです。これは、今のコツをつかんでいますが、各シーケンスを読み取り、各シーケンス内の「G」と「C」の相対量を計算してから、「 m TABで区切られたファイルに、遺伝子の名前と、それぞれの「G」および「C」コンテンツを書き込みます。

誰かがいくつかのガイダンスを提供することができますか?TABで区切られたファイルが何であるかはわかりませんが、実際にコンテンツを表示するために.fastaファイルを開く方法を理解しようとしています。これまで、簡単に開くことができる.txtファイルを使用してきましたが、.fastaは使用できません。

完全に当惑したように聞こえたことをお詫び申し上げます。ご理解のほどよろしくお願いいたします。私はあなたがそこにプロのようではありません!

0 投票する
1 に答える
6746 参照

perl - .fasta シーケンスを読み取ってヌクレオチド データを抽出し、TabDelimited ファイルに書き込む

先に進む前に、Perl に関する以前の問題を読者に紹介したいと思います。これらすべての初心者です。

これらは、過去数日間の私の投稿で、時系列順です。

  1. タブ区切りのデータから列の値を平均するにはどうすればよいですか... (解決済み)
  2. 出力ファイルに計算結果が表示されないのはなぜですか? (解決済み)
  3. .fasta ファイルを使用してシーケンスの相対コンテンツを計算する

上で述べたように、数人の皆さんの助けのおかげで、最初の 2 つのクエリを理解することができ、そこから多くのことを学びました。本当に感謝しています。これについて何も知らず、まだ知らないように感じている人にとって、この助けは事実上天の恵みでした.

最後のクエリは未解決のままで、これは続きです。おすすめのテキストをいくつか見ましたが、月曜日までに終わらせようとしているので、何かを完全に見落としていないかどうかはわかりません。いずれにせよ、私はその仕事を試みました。

ご存知のように、タスクは.fasta ファイルを開いて読み取り(最終的にかなりうまくいったと思います、ハレルヤ!)、各配列を読み取り相対的な G+C ヌクレオチド含有量を計算し、次にa に書き込みます。 TAB区切りファイルと遺伝子の名前とそれぞれのG + Cコンテンツ

私はこれを試してみましたが、プログラムを実行して目的の結果を得る準備ができていないことを知っています。 、またはこれを行う方法の例。以前の解決済みのクエリと同様に、最も便利で効率的な方法ではないかもしれませんが、既に実行したものと同様のスタイルにしたいと考えています。スパムを送信しているように見えても、各ステップで自分が何をしているのかを知ることができます!

とにかく、.fasta ファイルは次のようになります。

.fasta ファイルを開く方法がわからないので、どのラベルがどのラベルに適用されるかはわかりませんが、遺伝子にはgagpol、またはenv. 何をしているのかを知るために .fasta ファイルを開く必要がありますか、それとも上記の形式を使用して「盲目的に」行うことができますか?

それは完全に明白かもしれませんが、私はまだこれらすべてに苦労しています。私は今までに追いついておけばよかったと感じています!

とにかく、私が持っている現在のコードは次のとおりです。

ここで何かが正しいかどうかはわかりませんが、実行すると35行目で構文エラーが発生しました(最後の行を超えているため、何もありません!)。それは「EOF」で言った。私が指摘できるのはこれくらいです。それ以外の場合は、各シーケンスのヌクレオチド G + C の量を計算する方法を理解しようとしており、出力 .txt ファイルでこれを適切に集計しています。それが TABDelimited ファイルの意味だと思いますか?

いずれにせよ、このクエリが長すぎる、「ばかげている」、または繰り返しのように思われる場合は申し訳ありませんが、そうは言っても、これに直接関連する情報は見つかりませんでした。できれば各ステップも!!

親切。

0 投票する
2 に答える
1576 参照

perl - 完全な .fasta ファイル シーケンスをファイルに出力する Perl プログラムですが、遺伝子に関して特定のヌクレオチド数を達成しようとしています

これまでのところ、Perl についてもう少し理解を深めることができました。これは安心です。皆さんに感謝します。私は現在、.fasta ファイルを読み取り、すべての G および C ヌクレオチドを見つけてから、タブ区切りファイルを作成する必要がある別の側面に取り組んでいます。

これらは、過去数日間の私の投稿で、時系列順です。

  1. タブ区切りのデータから列の値を平均するにはどうすればよいですか... (解決済み)
  2. 出力ファイルに計算結果が表示されないのはなぜですか? (解決済み)
  3. .fasta ファイルを使用してシーケンスの相対コンテンツを計算する
  4. .fasta シーケンスを読み取ってヌクレオチド データを抽出し、次に... (この前の投稿)

最後のクエリはまだ作業中ですが、ある程度の進歩がありました。

背景として、.fasta ファイルは次のようになります。

.fasta ファイルを開く方法がわからないので、どのラベルがどのラベルに適用されるかはわかりませんが、遺伝子にはgagpol、またはenv. 何をしているのかを知るために .fasta ファイルを開く必要がありますか、それとも上記の形式を使用して「盲目的に」行うことができますか?

とにかく、私が持っている現在のコードは次のとおりです。

コードは、空白なしでシーケンス全体をテキスト ファイルに出力するようになりました。唯一の問題は、シーケンスがどこで開始または終了したかがわからないため、各遺伝子にどのシーケンスが適用されるかがわからないことです. 停止/開始コドンは私に指示を与えるはずですが. それを考慮して、コードを変更/追加して、シーケンス内の G + C の量を計算し、それぞれの G/C コンテンツに関連付けられた遺伝子の名前を含むタブ区切りファイルに出力する方法を教えてください。 ?

G / Cを見つけてそれぞれの数を集計する方法に関して、上記のコードと同様の方法でガイダンスを提供できる人からの連絡を楽しみにしています.

0 投票する
1 に答える
118 参照

python - コードの Python 条件エラー

私は以前、このコードを使い始めようとして、この質問をしました: コマンド ライン パラメータは 2 または 3 パラメータを取る必要があります

-s: これはオプションのパラメーターまたはスイッチであり、ユーザーがスプライシングされた遺伝子配列 (イントロンが除去されている) を望んでいることを示します。ユーザーはこれを提供する必要はありません (つまり、遺伝子配列全体が必要です)。提供する場合は、最初のパラメーターにする必要があります。

入力ファイル (遺伝子を含む)

出力ファイル (プログラムが fasta ファイルを保存するために作成する場所)

ファイルには次のような行が含まれています。

NM_001003443 chr11 + 5925152 592608098 2 5925152,5925652, 5925404,5926898,

次に、入力されたすべてが正しいことを確認するために複数の条件を作成する必要がありました。そうしないと、プログラムが終了してしまいます。

  • ユーザーは、.genes で終わらない入力ファイル名を指定します
  • ユーザーは、.fa または .fasta で終わらない出力名を指定します。
  • ユーザーが 2 つ未満または 3 つを超えるパラメーターを指定した場合
  • ユーザーの最初のパラメーターはダッシュで始まりますが、「-s」ではありません
  • 入力ファイルが次のいずれかに違反しています:

    • 最初の行は「#」記号で開始する必要があります
    • 各行にはちょうど 10 列 (列は 1 つ以上のスペースで区切られている) が必要です。
    • 列 2 (0 から数えて) は、+ または - 記号のいずれかである必要があります
    • 列 8 は、タブで区切られた整数のリストである必要があります
    • 列 9 は、列 8 とまったく同じ整数を持つ、タブで区切られた整数のリストである必要があります。

このためのコードを書きましたが、どこかにエラーがあります。それでも、最近エラーを見つけることができません。誰かが私のコードを調べて、エラーがどこかに存在するかどうかを確認するのを手伝ってくれませんか? とても感謝しております!!

すべての if ステートメントは、実際のコードではタブ化されていますが、ここでインポートするのに問題がありました...

0 投票する
4 に答える
696 参照

python - ファイル内の行の一部を一致させる (python)

現在、ファイルに遺伝子のリストがあります。各行には、その情報を含む染色体があります。このようなエントリは次のように表示されます。

NM_198212 chr7 + 115926679 115935830 115927071 11593344 2 115926679、'115933260'、 115927221、'115935830'、

染色体の配列は、塩基 115926679 から始まり、塩基115935830まで (ただし含まない)続きます。

スプライシングされた配列が必要な場合は、エクソンを使用します。最初は 115926679 から 155927221拡張され、2 番目は '115933260' から '115935830' に拡張されます。

ただし、次のような補完的なシーケンスで問題が発生しました。

NM_001005286 chr1 - 245941755 245942680 245941755 245942680 1 245941755、「245942680」

列 3 は「-」であるため、これらの座標はアンチセンス鎖 (鎖の補体) を参照しています。最初の塩基 (太字) は、センス鎖の最後の塩基 (イタリック体) と一致します。ファイルにはセンス スタンドしかないため、アンチセンス鎖の座標をセンス鎖に変換し、正しい配列を選択してから逆補完する必要があります。

とは言っても、私はプログラミングを始めてまだ半年ほどで、どうやって始めればいいのかわかりません。

私は正規表現を書きました:

しかし、この機能を開始する方法がわかりません...誰かがこれを始めるのを手伝ってくれて、おそらくこれを行う方法を教えてくれたら、とても感謝しています。

OK: これが 25 番染色体だとします:

AAAAAAAAAACCCCCCCCCCTTTTTTTTTTGGGGGGGGGG

(各キャラクターは10人です)。

今:スプライスされていない遺伝子を探している場合: chr25 + 10 20

次に、遺伝子は 10 番目の位置 (0 から開始) から始まり、20 番目の位置まで上昇しますが、20 番目の位置は含まれません。したがって、次のようになります。

CCCCCCCCCC

かんたんだよ。Python の文字列スライスと非常によく一致します。

私があなたに与えると、より混乱します:

chr25 - 10 20

あなたが持っているのはポジティブストランドです。しかし、この遺伝子はマイナス(相補)鎖にあります。染色体が二本鎖としてどのように見えるかを思い出してください。

AAAAAAAAAACCCCCCCCCCTTTTTTTTTTGGGGGGGGGGGGGGGGGGAAAAAAAAAACCCCCCCCCC
_

一番下の鎖の遺伝子を探しています。つまり、右から 0 から数えます。上のストランドには左から、下のストランドには右から番号を付けます。ここで欲しいのは AAAAAAAAAA です。

キャッチは、私があなたにトップストランドだけを与えているということです. 私はあなたに一番下のストランドを与えていません。(一番上のストランドから自分自身を生成することもできますが、それがどれほど大きいかを考えると、そうしないことをお勧めします。)

したがって、座標を変換する必要があります。下の鎖では、塩基 0 (一番右の C) が上の鎖の塩基 39 と反対になっています。底 1 は底 38 に対して、底 2 はケース 37 に対してです。

つまり、下の鎖の塩基 10-20 を見つけたい場合は、上の鎖の塩基 20-29 を見ることができます (そして、それを逆補数します)。

下部ストランドの座標を下部ストランドの同等の座標に変換する方法を理解する必要があります。はい: とても紛らわしいです

私はウェロニカの元の答えを試しました:

これは正しい軌道に乗っていますが、十分ではありません。これは 10 と 20 を取り、それを 20 と 10 に変えます。

そして、これを行うことで文字列を逆補完できることを知っています:

編集しました!これは正しいように見えますか?!

0 投票する
4 に答える
173 参照

perl - Perl: 配列要素を照合してから、PREVIOUS (5 インデックス後ろ) 配列要素を新しい配列にコピーする

基本的に私がやろうとしているのは、大きなテキスト ファイルを検索して、"ヒットが見つかりませんでした"、および識別子に一致するコピーを新しいリストにコピーします。この最初の部分は問題ありませんが、理解できないように見えるのは、配列の要素を正確に 5 つのインデックスをコピーする方法です (これはidentifier) を別の配列にコピーします。

私はこのようなものを試しました、

[-5] の大量のバリアントを使用しましたが、どれも機能しませんでした..一致が見つかった場合に、前の要素を逆参照して取得する方法に関するドキュメントが見つからないようです。これをコーディングする方法を知っている人はいますか?

どうぞよろしくお願いいたします。

アンドリュー

0 投票する
3 に答える
228 参照

perl - 配列の要素を新しい配列のより少ない要素に選択的に結合する

.fasta形式のDNA配列データの配列を操作するのに問題があります。私が特にやりたいのは、数千のシーケンスを持ち、ファイル内の各シーケンスのシーケンスデータをファイル内の1行に隣接させるファイルを取得することです。[Fasta形式はそのようなものです:シーケンスIDは>で始まり、その後にその行のすべてが説明になります。次の行には、このIDに対応するシーケンスがあります。そして、これは、ファイル内の次のシーケンスのIDである>で始まる次の行まで無期限に続く可能性があります]したがって、私の特定のファイルでは、ほとんどのシーケンスが複数の行にあるので、基本的にやりたいことです改行を削除しますが、シーケンスデータとシーケンスID行(>で始まる)の間ではなく、シーケンスデータ間の新しい行のみを削除します。

これを行うのは、各シーケンスのシーケンス長を取得し(長さを通じて、最も簡単な方法だと思います)、ファイル全体のすべてのシーケンスの平均シーケンス長を取得できるようにするためです。

これまでの私のスクリプトは、機能したくないようです。

手順セクションの2番目のforeach行に問題があり、それが何であるか理解できないようです。END行の後のコードは、プロシージャステップでコードを取得できず、必要な処理を実行できないため、まだ試していません。壊れていないシーケンスの要素を含む素敵な配列を取得する方法はありますか(新しい配列からシーケンスID行を削除することを選択しました..)?その後、長さの配列を取得できたら、平均化できますか?

最後に、残念ながら、Bio :: Perlをコンピューターで動作させることができないことを認める必要があります。何時間も試しましたが、エラーを修正するスキルがありません。私のBio::perlの問題についてうまくいけば助けてくれる人と話をします。しかし、今のところ、私はそれなしで押す必要があります。

ありがとう!この投稿の長さについて申し訳ありませんが、私は助けに感謝します。

アンドリュー

0 投票する
1 に答える
865 参照

python - 大きなfastaを複数のファイルに分割し、GI番号で名前を付けることはできません

私は、Python と Biopython の両方に慣れていないということから始めなければなりません。大きな .fasta ファイル (複数のエントリを持つ) を、それぞれに 1 つのエントリを持つ単一のファイルに分割しようとしています。Biopython wiki/Cookbook サイトで次のコードのほとんどを見つけ、少しだけ変更しました。私の問題は、このジェネレーターがそれらに「1.fasta」、「2.fasta」などの名前を付けていることです。GI番号などの識別子で名前を付ける必要があります。

交換しようとすると:

と:

SeqIO の seq_record.id に似た名前になるようにすると、次のエラーが発生します。

ジェネレーター関数には属性「id」がありませんが、どうにか回避できますか? このスクリプトは、私がやろうとしていることに対して複雑すぎますか?!? ありがとう、チャールズ

0 投票する
2 に答える
4469 参照

scala - 遅延コレクションを使用して大規模な scala データを処理する Scala 関数の方法

私は、scala で文字列を使用して大規模なデータを処理するための、メモリ効率が高く機能的な方法を見つけようとしています。私は遅延コレクションについて多くのことを読み、かなりの数のコード例を見てきました。ただし、「GC オーバーヘッドの超過」または「Java ヒープ領域」の問題が何度も発生します。

多くの場合、問題は遅延コレクションを構築しようとすることですが、成長するコレクションに追加するときに新しい要素をそれぞれ評価します (これを段階的に行う方法は他にありません)。もちろん、最初に初期遅延コレクションを初期化するようなことを試して、マップなどを使用してリソースクリティカルな計算を適用することで、目的の値を保持するコレクションを生成することもできますが、最終的なコレクションの正確なサイズがわからないことがよくあります。その怠惰なコレクションを初期化するアプリオリ。

奇数シーケンスのペアが 1 つのファイルに属し、偶数シーケンスのペアが 1 つのファイルに属するという規則に従って、FASTA (以下の定義) 形式のファイルを 2 つの個別のファイルに分割する例として、次のコードを改善する方法についてのヒントや説明を教えてください。別のものに(「ストランドの分離」)。これを行うための「最も」簡単な方法は、行をループし、開いているファイルストリームを介して対応するファイルに出力するという命令的な方法です (もちろん、これはうまく機能します)。ただし、ヘッダーとシーケンスを保持する変数に再割り当てするスタイルが好きではないため、次のコード例では (末尾) 再帰を使用しています。リソースの問題に遭遇することなく同様の設計を維持する方法を見つけていただければ幸いです。 !

この例は小さなファイルに対しては完全に機能しますが、約 500 MB のファイルでは、標準の JVM セットアップではコードが失敗します。「任意の」サイズ、たとえば 10 ~ 20 GB 程度のファイルを処理したい。

3 つの疑問が生じます。

getLinesA)私の方法のように取得した初期イテレータを処理することによって得られる大きなデータ構造を維持する必要があると仮定しましょう( のサイズと の出力がgetFullSeqs異なることに注意してください)。これは、(!) データ全体の変換が繰り返し必要になるためです。どの段階でもデータのどの部分が必要になるか分からないからです。私の例は最善ではないかもしれませんが、どうすればよいでしょうか? そもそも可能ですか??ingetFullSeqs

(header -> sequence)B) 必要なデータ構造が本質的に遅延していない場合、ペアをに格納したいとしMap()ます。怠惰なコレクションでラップしますか?

C) ストリームを構築する私の実装は、入力された行の順序を逆にする可能性があります。reverse を呼び出すと、すべての要素が評価されます (私のコードでは既に評価されているため、これが実際の問題です)。怠惰な方法で「後ろから」後処理する方法はありますか? 私は知っていますがreverseIterator、これはすでに解決策ですか、それとも実際には最初にすべての要素を評価するわけではありません(リストで呼び出す必要があるため)? でストリームを構築することもできますがnewVal #:: rec(...)、そうすると末尾再帰が失われてしまいますね。

したがって、基本的に必要なのは、追加のプロセスによって評価されない要素をコレクションに追加することです。だからlazy val elem = "test"; elem :: lazyCollection私が探しているものではありません。

編集: のストリーム引数に by-name パラメータを使用してみましたrec

ご清聴ありがとうございました。

/////////////////////////////////////////////// /////////////////////////////////////////////// /////////////////////////////////////////////// ///////////////

FASTA は、1 つのヘッダー行で区切られたシーケンスの連続セットとして定義されます。ヘッダーは、">" で始まる行として定義されます。ヘッダーの下のすべての行は、ヘッダーに関連付けられたシーケンスの一部と呼ばれます。新しいヘッダーが存在する場合、シーケンスは終了します。すべてのヘッダーは一意です。例:

>HEADER1
abcdefg
>HEADER2
hijklmn
opqrstu
>HEADER3
vwxyz
>HEADER4
zyxwv

したがって、シーケンス 2 はシーケンス 1 の 2 倍の大きさです。私のプログラムは、そのファイルをファイル A に分割します。

>HEADER1
abcdefg
>HEADER3
vwxyz

を含む 2 番目のファイル B

>HEADER2
hijklmn
opqrstu
>HEADER4
zyxwv

入力ファイルは、偶数のヘッダーとシーケンスのペアで構成されていると想定されます。