8

http://rosalind.info/problems/iprb/で問題を解決しようとしています

与えられた :生物を含む集団を表す3 つの正の整数km、および:個体は因子に対してホモ接合性優性であり、ヘテロ接合性であり、ホモ接合性劣性です。nk+m+nkmn

Return : ランダムに選択された 2 つの交配生物が、優性対立遺伝子を持つ (したがって優性表現型を示す) 個体を生み出す確率。任意の 2 つの生物が交配できると仮定します。

私の解決策はサンプルに対して機能しますが、生成された問題に対しては機能しません。さらに研究を重ねた結果、いずれかの生物を無作為に選択する確率を見つけ、2 番目の生物を選択する確率を見つけ、次にその組み合わせが優性対立遺伝子を持つ子孫を生み出す確率を見つけなければならないようです。

私の質問は次のとおりです。以下の私のコードは何の確率を見つけますか? 考えられるすべての交配について優性対立遺伝子を持つ子孫の割合を見つけますか?つまり、1 つのランダムな交配の確率ではなく、すべてのペアがテストされた場合、私のコードは優性対立遺伝子を持つ子孫の割合を求めていますか?

f = open('rosalind_iprb.txt', 'r')
r = f.read()
s = r.split()
############# k = # homozygotes dominant, m = #heterozygotes, n = # homozygotes recessive
k = float(s[0])
m = float(s[1])
n = float(s[2])
############# Counts for pairing between each group and within groups
k_k = 0
k_m = 0
k_n = 0

m_m = 0
m_n = 0

n_n = 0


##############
if k > 1:
    k_k = 1.0 + (k-2) * 2.0

k_m = k * m

k_n = k * n

if m > 1:
    m_m = 1.0 + (m-2) * 2.0

m_n = m * n

if n> 1:
    n_n = 1.0 + (n-2) * 2.0
#################
dom = k_k + k_m + k_n + 0.75*m_m + 0.5*m_n
total = k_k + k_m + k_n + m_m + m_n + n_n

chance = dom/total
print chance
4

3 に答える 3

3

あなたのコードを見て、私はそれが何をすべきかを理解するのに苦労しています. ここで問題を解決します。

文言を簡略化しましょう。n1 タイプ 1、n2 タイプ 2、n3 タイプ 3 の項目があります。

サイズ 2 のセットをすべてのアイテムから選択する方法は何通りありますか? (n1 + n2 + n3) 2 を選択します。

アイテムのすべてのペアは、次の 6 つの順序付けられていないマルチセットのいずれかに対応するアイテム タイプを持ちます: {1,1}、{2,2}、{3,3}、{1,2}、{1,3}、{2 ,3}

{i,i} の形式の多重集合はいくつありますか? 私は2を選びます。

i != j の場合、{i,j} の形式のマルチセットはいくつありますか? ni * nj。

したがって、6 つのマルチセットの確率は次のようになります。

  • P({1,1}) = [n1 2 を選択] / [(n1 + n2 + n3) 2 を選択]
  • P({2,2}) = [n2 2 を選択] / [(n1 + n2 + n3) 2 を選択]
  • P({3,3}) = [n3 2 を選択] / [(n1 + n2 + n3) 2 を選択]
  • P({1,2}) = [n1 * n2] / [(n1 + n2 + n3) 2 を選択]
  • P({1,3}) = [n1 * n3] / [(n1 + n2 + n3) 2 を選択]
  • P({2,3}) = [n2 * n3] / [(n1 + n2 + n3) 2 を選択]

[X choose 2] は、X > 1 の場合は [X * (X - 1) / 2]、X = 0 または 1 の場合は 0 であることに注意してください。

リターン: ランダムに選択された 2 つの交配生物が、優性対立遺伝子を持つ (したがって優性表現型を示す) 個体を生み出す確率。

この質問に答えるには、6 つのマルチセットのどれがこのイベントに対応するかを特定する必要があります。その質問に答える遺伝学の知識がないので、あなたに任せます。

たとえば、2 人の親のどちらかがタイプ 1 である場合に優性対立遺伝子が生じるとします。この場合、関心のあるイベントは {1,1}、{1,2}、{1,3} であり、イベントの確率は P です。 ({1,1}) + P({1,2}) + P({1,3})。

于 2014-10-16T17:10:00.787 に答える
2

興味があれば、解決策を見つけて C# に入れました。

    public double mendel(double k, double m, double n)
    {
        double prob;

        prob = ((k*k - k) + 2*(k*m) + 2*(k*n) + (.75*(m*m - m)) + 2*(.5*m*n))/((k + m + n)*(k + m + n -1)); 

        return prob;
    }

パラメータは k (ドミナント)、m (ヘテロ)、n (リセッシブ) です。最初に、個体群のパーセンテージで各可能な繁殖ペアの選択の確率を見つけました。したがって、k の最初のラウンドの選択は k/(k+m+n) のようになり、k の最初のラウンドの選択の後の k の 2 番目のラウンドの選択は (k-1)/(k+m+n) のようになります。 )。次に、これら2つを掛けて結果を取得します。識別された集団が 3 つあったため、考えられる結果は 9 つでした。

次に、各結果に優勢確率を掛けました。k の場合は 100%、m&m の場合は 75%、m&n、n&m の場合は 50%、n&n の場合は 0% です。結果を一緒に追加すると、ソリューションが得られます。

http://rosalind.info/problems/iprb/

于 2015-03-08T01:37:55.990 に答える