چطور آنتروپی یک قطعه dna رو حساب کنیم؟ - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

چطور آنتروپی یک قطعه dna رو حساب کنیم؟

0 امتیاز

سلام

فکر کنم عنوان کامل گویا هست می خوام آنتروپی یک قطعه یک قطعه از dna رو حساب کنم؟چطور می تونم؟

مثلا acaagatgcc

سوال شده فروردین 19, 1398  بوسیله ی pilapila (امتیاز 232)   14 43 56

1 پاسخ

+1 امتیاز
 
بهترین پاسخ

محاسبه آنتروپی به 4 روش :

 

import numpy as np
from scipy.stats import entropy
from math import log, e
import pandas as pd

import timeit

def entropy1(labels, base=None):
  value,counts = np.unique(labels, return_counts=True)
  return entropy(counts, base=base)

def entropy2(labels, base=None):
  """ Computes entropy of label distribution. """

  n_labels = len(labels)

  if n_labels <= 1:
    return 0

  value,counts = np.unique(labels, return_counts=True)
  probs = counts / n_labels
  n_classes = np.count_nonzero(probs)

  if n_classes <= 1:
    return 0

  ent = 0.

  # Compute entropy
  base = e if base is None else base
  for i in probs:
    ent -= i * log(i, base)

  return ent

def entropy3(labels, base=None):
  vc = pd.Series(labels).value_counts(normalize=True, sort=False)
  base = e if base is None else base
  return -(vc * np.log(vc)/np.log(base)).sum()

def entropy4(labels, base=None):
  value,counts = np.unique(labels, return_counts=True)
  norm_counts = counts / counts.sum()
  base = e if base is None else base
  return -(norm_counts * np.log(norm_counts)/np.log(base)).sum()

labels = [1,3,5,2,3,5,3,2,1,3,4,5]

print(entropy1(labels))
print(entropy2(labels))
print(entropy3(labels))
print(entropy4(labels))

 

پاسخ داده شده فروردین 20, 1398 بوسیله ی farnoosh (امتیاز 8,362)   20 44 59
انتخاب شد فروردین 20, 1398 بوسیله ی pilapila
خیلی ممنون یک سوال دیگه نحوه محاسبه چطور هست؟ منظورم روی کاغذ هست. اگه براتون مقدور هست یک نمونه بالا رو بفرمایید. یک مورد دیگه این که اگه بخوام آنتروپی دو قطعه دی ان ای نسبت به هم کدش بنویسم چی میشه؟ چرا از ln استفاده شد و مبنای 2 استفاده نشد؟تشکر

فرکانس برای هر یک از اعداد بدست میاد یعنی تعداد تکرار هر حرف در رشته شما و سپس و احتمال آن محاسبه میشه (تعداد تکرار حرف تقسیم بر تعداد کل حروف) سپس این مقدار را p نامگذاری کنید سپس برای هر حروف a را به صورت زیر محاسبه کنید.

a = -p * log2(p)

و بعد از آن تمامی a ها را با هم جمع کنید میشه آنتروپی

...