問題タブ [bioinformatics]
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.
bash - 2 つのリストを列の結合で結合する
ENST00000371026 などの共通フィールドで結合して、2 つのリストを結合しようとしています。私は次のことを試しましたが、運がありません。それを行う実際の方法は何ですか?
出力例は次のようになります。
mongodb - MongoDB:染色体/位置を保存するための最も効率的な方法は何ですか
MongoDBを使用していくつかのゲノム位置(染色体、位置)を保存したいと思います。
何かのようなもの:
特定のセグメント(chrom、[posStart --posEnd])内のすべてのレコードをすばやく見つけられるようにしたい。使用するのに最適なkey/_idは何ですか?
クロム、位置オブジェクト?
パッド入りの文字列?
クロムと位置のインデックスを持つ自動生成されたID?
他の ?
あなたの提案に感謝します
ピエール
PS :(この質問はbiostarにクロスポストされました:http://biostar.stackexchange.com/questions/2519)
workflow - バイオインフォマティクスプロジェクトを組織する最良の方法は?
私はコンピューターサイエンス出身です。背景ですが、私は今ゲノミクスをやっています。
私のプロジェクトには、さまざまなクラスの生物学的サンプル、経時変化データ、マイクロアレイ、ハイスループットシーケンシング ( "next-世代」の順序付け、実際には現在の世代ですが) データ、このようなもの。
この種の分析のワークフローは、私がコンピューター サイエンスを勉強していたときに経験したものとはまったく異なります。UML がなく、思慮深く設計されたオブジェクトが崇高なエレガンスを放ち、バージョン管理がなく、適切なドキュメントがなく (多くの場合、ドキュメントがまったくない)、ソフトウェア エンジニアリングがありません。全て。
代わりに、この分野で誰もが行っていることは、通常は 1 回限りの使用のために、1 つの Perl スクリプトまたはAWKのワンライナーを次々とハッキングすることです。
その理由は、入力データとフォーマットが急速に変化し、質問にすぐに回答する必要があり (締め切り!)、プロジェクトを編成する時間がないように思われるからだと思います。
これを説明する 1 つの例: レイトレーサーを書きたいとしましょう。最初にソフトウェア エンジニアリングに多くの労力を注ぐことになるでしょう。次に、高度に最適化された形式で最終的にプログラムします。さまざまな入力データでレイトレーサーを数え切れないほど使用し、今後何年にもわたってソース コードに変更を加えるからです。そのため、本格的なレイトレーサーをゼロからコーディングする場合、優れたソフトウェア エンジニアリングが最も重要です。しかし、1 つの画像をレイトレーシングするために使用することが既にわかっている場合に、レイトレーサーを書きたいとします。その写真は、市松模様の床の上に反射する球体です。この場合、どうにかして一緒にハックするだけです。バイオインフォマティクスは後者の場合にのみ似ています。
次のステップに必要な 1 つの特定の形式に到達するまで、さまざまな形式の同じ情報を含むディレクトリ ツリー全体が作成されます。後日、このファイルを作成した理由とその正確な内容について説明します。
しばらくの間、MySQLを使用していましたが、これは役に立ちましたが、現在、新しいデータが生成され、フォーマットが変更される速度が速すぎて、適切なデータベース設計を行うことができません。
これらの問題を扱った 1 つの出版物を私は知っています (Noble, WS (2009 年 7 月)。計算生物学プロジェクトを編成するためのクイック ガイド。PLoS Comput Biol 5 (7)、e1000424+)。著者は、目標を非常にうまくまとめています。
核となる指針は単純です。あなたのプロジェクトに不慣れな人でも、あなたのコンピューター ファイルを見て、あなたが何を、なぜ行ったかを詳細に理解できるべきです。
うーん、それは私も欲しい!しかし、私はすでにその著者と同じ慣行に従っており、それでは絶対に不十分だと感じています。
Bashで発行するすべてのコマンドを文書化し、正確になぜそれを行ったのかなどをコメントすることは、退屈でエラーが発生しやすいものです。ワークフロー中のステップが細かすぎます。実行したとしても、各ファイルの目的、特定のワークフローがどの時点で中断されたのか、どのような理由で中断されたのか、どこで続行したのかを把握するのは非常に面倒な作業です。
(「ワークフロー」という言葉を Taverna の意味で使用しているわけではありません。ワークフローとは、特定の目標を達成するために実行することを選択したステップ、コマンド、およびプログラムを意味します)。
バイオインフォマティクス プロジェクトをどのように編成していますか?
python - Web から CGI スクリプトを実行しているときに、Python がいくつかのモジュールを見つけられないのはなぜですか?
ここで何が問題なのかわかりません:
対話型プロンプトを使用するとき、またはコマンドラインから Python スクリプトを実行するときに、簡単にインポートできる Biopython のモジュールがいくつかあります。
問題は、同じ biopython モジュールを Web 実行可能な CGI スクリプトにインポートしようとすると、「インポート エラー」が発生することです。
: Bio という名前のモジュールはありません
ここに何かアイデアはありますか?
r - Rで範囲の重複を見つける
それぞれ 3 つの列を持つ 2 つの data.frames があります: chrome、start & stop、それらを rangeA と rangeB と呼びましょう。rangeA の各行について、rangeB のどの行 (存在する場合) に rangeA 行が完全に含まれているかを探していますrangesAChrom == rangesBChrom, rangesAStart >= rangesBStart and rangesAStop <= rangesBStop
。
現在、私は次のことを行っていますが、これはあまり好きではありません。他の理由で rangeA の行をループしていることに注意してください。ただし、これらの理由はどれも大したことではありません。この特定のソリューションを考えると、物事が読みやすくなるだけです。
範囲A:
範囲B:
rangeA の各行について:
この構成をループするよりも、これを行うためのより良い方法 (つまり、rangeA と rangeB の大きなインスタンスよりも高速であることを意味します) が必要だと思います。何か案は?
python - サブクラス/子クラス
私はこのクラスとサブクラスを持っていました:
クラス範囲:
クラス DNAFeature(範囲):
そして、ここで私がしなければならないことは次のとおりです。エクソンを表す DNAFeature オブジェクトのグループを含み、DNAFeature の子クラスである新しいクラス GeneModel を作成します。以下のメソッドを実装する必要があります: getFeats() – 開始位置でソートされた DNAFeature オブジェクトのリストを返します addFeat(feat) – DNAFeature 特技を受け入れ、DNAFeature オブジェクトの内部グループに追加します setTranslStart(i) – 非負の int、開始 ATG コドンの開始位置を設定します getTranslStart() – int、開始 ATG コドンの開始位置を返します setTranslStop(i) – 正の int を受け入れ、停止コドンの終了位置を設定します getTranslStop() – int を返します。停止コドンの終了位置 setDisplayId(s) – 遺伝子モデルの名前を設定します。s は文字列 getDisplayId() – 遺伝子モデルの名前を返します。たとえば、AT1G10555.1 などの文字列を返します。GeneModel は、ユーザーが正しくない型と値をコンストラクターと「set」メソッドに渡すと、適切な ValueError および TypeError 例外を発生させる必要があります。</p>
思いついたことを書いてみたり、本を読んだり、コードを組み立てる方法を調べたりしましたが、プログラミングは初めてで、コードを正しく書く方法をほとんど理解していません。正直なところ、プログラミングの授業を受けるのはこれが初めてです。したがって、コードに面白い間違いがあった場合は、ご容赦ください。私はまだ自分のコードを完成させていませんが、まだ本を読んで、自分のコードのどこが間違っていて、どこが正しいのかを確認しています。しかし、私を正しい道に導くために、あなたの助けが本当に必要です。どうもありがとうございました。以下は私のコードです:
クラス GeneModel(DNAFeature):
oop - Matlab のバイオインフォマティクス ツールボックスで clustergram に他のクラスタリング手法を使用する方法
編集:私はそれを理解しました。ただ表記が分からなかった。
こんにちは、
バイオインフォマティクス ツールボックスのクラスターグラムに詳しい方がいらっしゃることを願っています。関数のグラフィカルな側面 (デンドログラム/ヒート マップ) に興味がありますが、Matlab の cluster() 関数を使用する必要があるため、現在障害があります。個人的なアルゴリズムを使用してクラスター化し、Matlab でこれを視覚化できるようにしたいと考えています。
私はコードを検索しましたが、オブジェクト指向プログラミング全般、特に Matlab のバージョンについてはひどく無知です。したがって、私が知っているのは、関数が「obj = obj.getclusters」という行を呼び出すことだけですが、Matlab の代わりに独自のクラスタリング アルゴリズムを使用するようにこれを編集する方法がわかりません。
どんな助けでも大歓迎です!
編集:私は特に新しいアルゴリズムに取り組んでいるため、pdist やリンケージが必要ないのはなぜですか。デンドログラムは clustergram 関数の外部で計算されます。デンドログラム/ヒートマップを作成するために使用しているのは、クラスターグラム関数だけです。私のバイオインフォマティクスツールボックスはバージョン 3.3 です
本当に、ここで探しているのは、「obj = obj.getclusters;」が何をするかだけです。行う?私はプログラマーではないので、OO には詳しくありません。私には、関数呼び出しがないので、魔法のようにクラスターがあるように見えます。これは clustergram() の 304 行目です。
perl - RNA合成を模倣するPerlプログラム
RNA合成プログラムを書くために私のPerlプログラミングの宿題に取り組む方法についての提案を探しています。以下にプログラムの概要をまとめました。具体的には、以下のブロックに関するフィードバックを探しています(簡単に参照できるように番号を付けます)。Andrew JohnsonによるPerlを使ったプログラミングの要素の第6章まで読んだ(素晴らしい本)。また、perlfuncとperlopのポッドページを読みましたが、どこから始めればよいのかわかりません。
プログラムの説明:プログラムは、コマンドラインから入力ファイルを読み取り、それをRNAに変換してから、RNAを大文字の1文字のアミノ酸名の配列に転写する必要があります。
コマンドラインで指定されたファイルを受け入れる
ここでは<>演算子を使用します
ファイルにacgtまたはdieのみが含まれていることを確認してください
/li>DNAをRNAに転写します(すべてのAがUに置き換えられ、TがAに置き換えられ、CがGに置き換えられ、GがCに置き換えられます)
これを行う方法がわからない
この文字起こしを取り、「AUG」の最初の出現から始まる3文字の「コドン」に分割します
わかりませんが、ここから%hash変数を開始すると思いますか?
3文字の「コドン」を取り、それらに1文字の記号(大文字の1文字のアミノ酸名)を付けます
を使用してキーに値を割り当てます(ここには70の可能性があるため、どこに保存するか、またはアクセスする方法がわかりません)
ギャップが発生した場合、新しい行が開始され、プロセスが繰り返されます
確かではありませんが、ギャップは3の倍数であると想定できます。
私はこれに正しい方法でアプローチしていますか?メインプログラムを簡素化できる、私が見落としているPerl関数はありますか?
ノート
自己完結型のプログラムである必要があります(コドン名と記号の保存された値)。
プログラムが記号のないコドンを読み取るときはいつでも、これはRNAのギャップであり、新しい出力行を開始し、次に「AUG」が発生したときに開始する必要があります。簡単にするために、ギャップは常に3の倍数であると想定できます。
研究にさらに時間を費やす前に、正しいアプローチを取っていることを確認したいと思っています。読んでいただき、専門知識を共有していただきありがとうございます。
perl - 配列内の特定の場所で開始および停止するための perl スクリプトの編集ヘルプ
トラブルシューティングと編集のヘルプを探しています。これは宿題です。私の教授はフォーラムの使用を奨励しています。私はまだ Perl 関数や Subs の経験がないので、理解できるように回答を適切なレベルに制限してください。
スクリプトの目的は、DNA の文字列 (または後で追加するコマンド ラインからのファイル) を読み取り、それを RNA に変換してから、タンパク質の値を大文字の 1 文字のアミノ酸名の形式で返すことです。
スクリプトの機能:
最初の文字から 3 文字の「コドン」を取得し、それらに 1 文字のシンボル (ハッシュ テーブルからの大文字の 1 文字のアミノ酸名) を付けます。
AUG (「M」) で始まり、UAG、UAA、または UGA で終わる文字列である RNA タンパク質を出力します。
ギャップが発生した場合、新しい行が開始され、プロセスが繰り返されます。ギャップは 3 の倍数であると想定できます。
私が知る限りの主な問題:
ハッシュ テーブルを介してデータをループさせる場所がわかりません。Foreach ブロックの前後に配置してみました。また、Foreach ブロックを完全に取り除き、While & If を試しました。
Foreach ブロックは @all_codons 配列のすべてを処理しておらず、AUG でのみ停止しているようです。
明らかで最大の問題は、何も返さないことです。どこかで $next_codon 値に「false」が割り当てられています。各行を少しずつコメントアウトしようとしました-何かを返した最後の行は My $start で、そこからはすべてfalseです。
スクリプト: