4

私の目標は、mysqlテーブルで提供される情報から0-1-2-Matrixを取得することです。

例:

テーブル'Dom'

Origin|Species      |  Domain  

KMT1 |  blabla_1234 |  Kringel

KMT1 |  blabla_1234 |  Helix  

KMT1 |  wobble_4556 |  Kringel 

KMT2 |  blabla_1234  | Helix  

KMT2 | piffi_876    |  Kringel 

今、私は次のマトリックスが欲しいです:x軸上にすべての種があります-このようなもの:

blabla_1234 | wobble_4556 | piffi_876

y軸には、テーブル'Dom'のすべてのドメインがありますが、それらは、対応するKMT('Origin')によってグループ化する必要があります。たとえば、y軸は次のようになります。

KMT1 Helix

KMT1 Kringel

KMT2 Helix

KMT2 Kringel

結果は次のようになります。 ヒートマップが欲しかった

オレンジは、ドメインとオリジナルタンパク質の両方が特定の種に存在することを意味します。黄色は、タンパク質のみが種に見られ、ドメインには見られないことを意味します。MySQLの使い方をほとんど学んだばかりで、スクリプトを書いたことはありません。このタスクを実行できるプログラム/スクリプトについてのヒントを教えてください。

よろしくお願いします!!

4

1 に答える 1

0

Domテーブルにはポジティブのみが含まれ、ネガティブは含まれない場合、出力テーブルがそれらをマップできるように、ネガティブを生成する必要があります。

このクエリは、起源、ドメイン、種のすべての可能な組み合わせを取得します。

SELECT ds.domain, os.origin, ss.species FROM
(SELECT DISTINCT domain FROM Dom) ds
CROSS JOIN
(SELECT DISTINCT origin FROM Dom) os
CROSS JOIN
(SELECT DISTINCT species FROM Dom) ss

したがって、ネガを含む各組み合わせの「式の値」を取得するには、次のようにします。

SELECT completelist.domain, completelist.origin, completelist.species, 
       COALESCE(Dom.species, FALSE) AS found
FROM
    (SELECT ds.domain, os.origin, ss.species
     FROM 
          (SELECT DISTINCT domain FROM Dom) ds
          CROSS JOIN
          (SELECT DISTINCT origin FROM Dom) os
          CROSS JOIN
          (SELECT DISTINCT species FROM Dom) ss
    ) AS completelist
LEFT JOIN Dom ON (completelist.domain = Dom.domain &&
                  completelist.origin = Dom.origin &&
                  completelist.species = Dom.species)

データベースからレコードのを取得したら、 テーブルとして出力できます。expressionvalueの値に従って要素のスタイルを設定します(を使用) 。<td>したがって、出力は次のようになります。

<table>
 <thead>
   <tr>
     <th>Origin</th>
     <th>Domain</th> 
     <th>Blahbla_1234</th>
     <th>wobble_4556</th>
     <th>piffi_876</th>
   </tr>
 </thead>
 <tbody>
   <tr>
     <th>KMT1</th>
     <th>Kringel</th> 
     <td class='bothexist'>&nbsp;</td>
     <td class='bothexist'>&nbsp;</td>
     <td class='onlyprotein'>&nbsp;</td>
   </tr> 
   <tr>
     <th>KMT1</th>
     <th>Helix</th> 
     <td class='bothexist'>&nbsp;</td>
     <td class='onlyprotein'>&nbsp;</td>
     <td>&nbsp;</td>
   </tr> 
   <!-- etc. -->
 </tbody>
 <tfoot></tfoot>
<table>

面倒なのは、クエリから取得したデータを、テーブルを簡単に出力できる構造に再編成することです。

いずれにせよ、シェルスクリプトを使用してこれらすべてを実行することはできますが、おそらく高級言語を使用する方が簡単です。BioPerlを含む多くの優れたライブラリが利用可能です。も人気があります。は非常に人気があり、一般的な言語であり、特にWebサイトに適合しており、習得が非常に簡単であると考えられています(ただし、多くのプログラマーはそのさまざまな緩みに反対しています)。

これがあなたを有益な方向に向けてくれることを願っています。

于 2013-03-13T14:34:34.960 に答える