پارس‌کدرز چگونه کار می‌کند؟

از پارس‌کدرز بیشترین بهره را ببرید و رویای کاری خود را زندگی کنید.

پارس‌کدرز خریداران یا کارفرمایان را به مجری‌ها /فریلنسرهای خبره‌ای متصل می‌کند که برای انجام پروژه آماده هستند.

رفع ارور از کد پایتون

چهار سال پیش منتشر شده

تعداد بازدید: 688

کد پروژه: 102682


شرح پروژه

رفع ارور از کد پایتون

توضیحات برای برنامه نویس پیوست میشود

import random

def ProfileMostProbablePattern(Text, k, Profile):

    n = len(Text)

    maximum = -1

    probable_pattern = ''

    for i, letter in enumerate(Text):

        for i in range(n-k+1):

            pattern = Text[i:i+k]

            probability = Pr(pattern,Profile)

            if (probability > maximum):

                maximum = probability

                probable_pattern = pattern

    if maximum == -1:

        return Text[0:0+k]

    else:

        return probable_pattern

def CountWithPseudocounts(Motifs):

    t = len(Motifs)

    k = len(Motifs[0])

    count = {}

    for symbol in "ACGT":

        count[symbol] = []

        for j in range(k):

            count[symbol].append(1)

    for i in range(t):

        for j in range(k):

            symbol = Motifs[i][j]

            count[symbol][j] += 1

    return count

def ProfileWithPseudocounts(Motifs):

    t = len(Motifs)

    k = len(Motifs[0])

    profile = {}

    count = CountWithPseudocounts(Motifs)

    for key, motif_lists in sorted(count.items()):

        profile[key] = motif_lists

        for motif_list, number in enumerate(motif_lists):

            motif_lists[motif_list] = number/(float(t+4))

    return profile

def GreedyMotifSearchWithPseudocounts(Dna, k, t):

    BestMotifs = []

    for i in range(0, t):

        BestMotifs.append(Dna[i][0:k])

    n = len(Dna[0])

    for i in range(n-k+1):

        Motifs = []

        Motifs.append(Dna[0][i:i+k])

        for j in range(1, t):

            P = ProfileWithPseudocounts(Motifs[0:j])

            Motifs.append(ProfileMostProbablePattern(Dna[j], k, P))

        if Score(Motifs) < Score(BestMotifs):

            BestMotifs = Motifs

    return BestMotifs

def Consensus(Motifs):

    k = len(Motifs[0])

    profile = ProfileWithPseudocounts(Motifs)

    consensus = ""

    for j in range(k):

        maximum = 0

        frequentSymbol = ""

        for symbol in "ACGT":

            if profile[symbol][j] > maximum:

                maximum = profile[symbol][j]

                frequentSymbol = symbol

        consensus += frequentSymbol

    return consensus

def Score(Motifs):

    count = 0

    consensus = Consensus(Motifs)

    for motif in Motifs:

        for index, letter in enumerate(motif):

            if letter != consensus[index]:

                count += 1

    return count

def Pr(Text, Profile):

    p = 1

    for index,char in enumerate(Text):

        for key, profile_lists in sorted(Profile.items()):

            if char == key:

                p *= profile_lists[index]

    return p

k = 3

t = 5

Dna = ["GGCGTTCAGGCA", "AAGAATCAGTCA", "CAAGGAGTTCGC", "CACGTCAATCAC", "CAATAATATTCG"]

print('\n'.join(map(str,GreedyMotifSearchWithPseudocounts(Dna, k, t ))))

def BuildProfileMatrix(dnamatrix):

    ProfileMatrix = [[1 for x in xrange(len(dnamatrix[0]))] for x in xrange(4)]

    indices = {'A':0, 'C':1, 'G': 2, 'T':3}

    for seq in dnamatrix:

    for i in xrange(len(dnamatrix[0])):            

        ProfileMatrix[indices[seq[i]]][i] += 1

    ProbMatrix = [[float(x)/sum(zip(*ProfileMatrix)[0]) for x in y] for y in ProfileMatrix]

    return ProbMatrix

def ProfileRandomGenerator(profile, dna, k, i):

    indices = {'A':0, 'C':1, 'G': 2, 'T':3}

    score_list = []

    for x in xrange(len(dna[i]) - k + 1):

        probability = 1

        window = dna[i][x : k + x]

    for y in xrange(k):

        probability *= profile[indices[window[y]]][y]

    score_list.append(probability)

    rnd = uniform(0, sum(score_list))

    current = 0

    for z, bias in enumerate(score_list):

        current += bias

        if rnd <= current:

            return dna[i][z : k + z]

def score(motifs):

    ProfileMatrix = [[0 for x in xrange(len(motifs[0]))] for x in xrange(4)]

    indices = {'A':0, 'C':1, 'G': 2, 'T':3}

    for seq in motifs:

        for i in xrange(len(motifs[0])):            

            ProfileMatrix[indices[seq[i]]][i] += 1

    score = len(motifs)*len(motifs[0]) - sum([max(x) for x in zip(*ProfileMatrix)])

    return score

from random import randint, uniform    

def GibbsSampler(k, t, N):

     dna = ['CGCCCCTCTCGGGGGTGTTCAGTAACCGGCCA',

    'GGGCGAGGTATGTGTAAGTGCCAAGGTGCCAG',

    'TAGTACCGAGACCGAAAGAAGTATACAGGCGT',

    'TAGATCAAGTTTCAGGTGCACGTCGGTGAACC',

    'AATCCACCAGCTCCACGTGCAATGTTGGCCTA']

    Motifs = []

    for i in [randint(0, len(dna[0])-k) for x in range(len(dna))]:

        j = 0

        kmer = dna[j][i : k+i]

        j += 1

        Motifs.append(kmer)

    BestMotifs = []

    s_best = float('inf')

    for i in xrange(N):

        x = randint(0, t-1)

    Motifs.pop(x)

    profile = BuildProfileMatrix(Motifs)

    Motif = ProfileRandomGenerator(profile, dna, k, x)

    Motifs.insert(x, Motif)

    s_motifs = score(Motifs)

    if s_motifs < s_best:

        s_best = s_motifs

        BestMotifs = Motifs

return [s_best, BestMotifs]

k, t, N =8, 5, 100            

best_motifs = [float('inf'), None]

# Repeat the Gibbs sampler search 20 times.

for repeat in xrange(20):

    current_motifs = GibbsSampler(k, t, N)

    if current_motifs[0] < best_motifs[0]:

        best_motifs = current_motifs

# Print and save the answer.

print '\n'.join(best_motifs[1])

این پروژه شامل 4 فایل مهم است، لطفا قبل از ارسال پیشنهاد حتما نسبت به بررسی این فایل اقدام فرمایید.

مهارت ها و تخصص های مورد نیاز


بودجه

5,000 تومان تا 100,000 تومان

مهلت برای انجام

1روز

وضعیت مناقصه

بسته


درباره کارفرما

عضویت پنج سال پیش

1365 پروژه ثبت شده ،
0 پروژه در حال انجام ،
0 پروژه آماده دریافت پیشنهاد ،
نرخ پذیرش پیشنهاد 35%

برای پیدا کردن پروژه‌های مشابه ثبت نام کنید و پروفایل خود را بسازید.

ورود با گوگل
یا
نام نباید خالی باشد.
نام خانوادگی نباید خالی باشد.

نیاز به استخدام فریلنسر یا سفارش پروژه مشابه دارید؟

سفارش پروژه مشابه

قادر به انجام این پروژه هستید؟

ثبت نام کنید

مهلت ارسال پیشنهاد قیمت برای این پروژه تمام شده است

سری به پروژه‌های مشابه بزنید

روش کار در پارس‌کدرز

به رایگان یک حساب کاربری بسازید

مهارت‌ها و تخصص‌های خود را ثبت کنید، رزومه و نمونه‌کارهای خود را نشان دهید و سوابق کاری خود را شرح دهید.

به شیوه‌ای که دوست دارید کار کنید

برای پروژه‌های دلخواه در زمان دلخواه پیشنهاد قیمت خود را ثبت کنید و به فرصت‌های شغلی منحصر به فرد دسترسی پیدا کنید.

با اطمینان دستمزد دریافت کنید

از زمان شروع کار تا انتهای کار به امنیت مالی شما کمک خواهیم کرد. وجه پروژه را از ابتدای کار به امانت در سایت نگه خواهیم داشت تا تضمین شودکه بعد از تحویل کار دستمزد شما پرداخت خواهد شد.

می‌خواهید شروع به کار کنید؟

یک حساب کاربری بسازید


بهترین مشاغل فریلنسری را پیدا کنید
رشد شغلی شما به راحتی ایجاد یک حساب کاربری رایگان و یافتن کار (پروژه) متناسب با مهارت‌های شما است.

پیدا کردن کار (پروژه)

تماشای دمو روش کار