Συζήτηση
Γεια χαρά, Επισκέπτης
Όνομα χρήστη: Κωδικός: Να με θυμάσαι
  • Σελίδα:
  • 1
  • 2

ΘΕΜΑ: Προγραμμα υπολογισμού ομοιότητας ακολουθιών

Προγραμμα υπολογισμού ομοιότητας ακολουθιών 9 Χρόνια 11 Μήνες πριν #2578

  • theofilos
  • Το Άβαταρ του/της theofilos
  • Αποσυνδεμένος
  • py____
  • Δημοσιεύσεις: 10
Καλησπέρα,

Πρεπει να δημιουργήσω ενα προγραμμα στο οποιο να δίνω δυο ακολουθίες πρωτεϊνών και αυτο να κόβει τις δυο ακολουθίες σε εξάδες, να υπολογίζει τις κοινές εξάδες γραμμάτων ανάμεσα στις ακολουθίες. Μετά θα κάνει shuffle την δεύτερη ακολουθία και θα μετράει ξανά ποςες κοινές εξάδες υπάρχουν μεταξύ της πρώτης και της ανακατεμένης δεύτερης ακολουθιάς. Θα πρεπει να το κάνει αυτό έως ότου ο μέσος όρος (mean) των ομοιοτήτων σταματήσει να αλλάζει. Μετά θα πρέπει να υπολογίζει το z-score. Τέλος θα πρεπει να δημιουργεί ενα διάγραμμα με όλες τις τιμές και την πρώτη τιμή χωριστά.
Εχω κάνει κάποια πράγματα ήδη αλλα δεν μπορω να το ολοκληρώσω!

Ευχαριστω πολύ,
Θεόφιλος
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Προγραμμα υπολογισμού ομοιότητας ακολουθιών 9 Χρόνια 11 Μήνες πριν #2579

  • kamar
  • Το Άβαταρ του/της kamar
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 409
  • Ληφθείσες Ευχαριστίες 88
Θα βοηθούσε να δώσεις ένα παράδειγμα. (Π.χ. Πως «φαίνεται» μια πρωτεϊνη).
Επίσης μέχρι που έχεις φτάσει στον κώδικα και, ίσως τον κώδικα.
Το διάγραμμα πρέπει να γίνει σε tkinter ή κάτι άλλο;
Γράφω σε Python 3
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Προγραμμα υπολογισμού ομοιότητας ακολουθιών 9 Χρόνια 11 Μήνες πριν #2580

  • pmav99
  • Το Άβαταρ του/της pmav99
  • Αποσυνδεμένος
  • Author
  • Δημοσιεύσεις: 684
  • Ληφθείσες Ευχαριστίες 111
Φοβάμαι ότι για να σε βοηθήσουμε, Θα πρέπει να ανεβάσεις κώδικα και συγκεκριμένες απορίες.
Όπως και να έχει φαντάζομαι ότι πιθανά να χρειαστείς κάτι τέτοιο: stackoverflow.com/questions/312443/how-d...zed-chunks-in-python

καθώς και τα sets: www.learnpython.org/en/Sets
Θα πρεπει να το κάνει αυτό έως ότου ο μέσος όρος (mean) των ομοιοτήτων σταματήσει να αλλάζει.
Τουλάχιστον για εμένα, αυτή η φράση δεν βγάζει νόημα.
Τελευταία διόρθωση: 9 Χρόνια 11 Μήνες πριν από pmav99.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Προγραμμα υπολογισμού ομοιότητας ακολουθιών 9 Χρόνια 11 Μήνες πριν #2581

  • theofilos
  • Το Άβαταρ του/της theofilos
  • Αποσυνδεμένος
  • py____
  • Δημοσιεύσεις: 10
Ακολουθίες:
Πρωτεινη Α:
MWRVGHGTALDSGFPSGPYTCEGVEDEDAVKRVWGMASEHSNSTHPSPFADDALYDIASFERCGFDSRDALNKWFDGWTDALDASGFRVWEYDVPDWAARVGKFGQVVFSSFEAVEVASYGFEPEQLSLFK

Πρωτεινη Β:
MTSPLQKQENVDPEKAREEMLNLFTERTQDLGDNTAYYESERRPDAVGVTVPQQMQKLLAHVGYPRLYIDAIAARQELEGFRLGGADKADEQLWDWWQANDLDIESTLGHTDSLVHGRSYITISKPDPNIDPGVDPEVPIIRVEPPTNLYAQIDPRTRQVMRAIRAIEDEEGNEVIGATLYLPNNTVIWNREDGQWVQVANVAHNLEMVPVIPIPNRTRLSDLYGTTEITPELRSVTDAAARTLMLMQATAELMGVPQRLLFGVKGEELGVDPETGQTLFDAYLARILAFEDHESKAQQFSAAELRNFVDALDALDRKAAAYTGLPPYYLSFSSENPASAEAIRSSESRLVKTVERKNKIFGGAWEQAMRVAYKVMNGGDIPPEYYRMESIWRDPSTPTYAAKADAATKLYNNGQGVIPKERARIDMGYSITEREEMRKWDEEEQAQGLGLMGTMFGTDPSGGGNPDNPETPEPQPNPAEEAAA

Κώδικας:
def main():
pass

if __name__ == '__main__':
main()

#EISAGWGH TIMWN
file1 = open('C:\Users\Desktop\Python\\alist.txt', 'r')
file2 = open('C:\Users\Desktop\Python\\blist.txt', 'r')

#ANATHESI TIMWN
dna1= file1.read()
dna2= file2.read()

#EISAGWGH TIMWN SE LISTA
lista =[]
lista += dna1
listb =[]
listb += dna2
#METRHMA STOIXEIWN LISTWN
countalllista=len(lista)
countalllistb=len(listb)
counta=0 #ARXH E3ADAS
a=6 #TELOS E3ADAS
matchno=0 #TAYTOPOIHSEIS

#print lista
#print listb

roundsloops=0



#print lista[:a]
#print countalllista
#print countalllistb

while roundsloops<10: #orismos epanalhpshs auto to orizw egw
while counta < countalllista: #mexri na teleiwsoun ta stoixeia ths a listas
while counta < countalllista: #mexri na teleiwsoun ta stoixeia thw listas
print lista[counta:a] #ektypwse tis ejades prwths listas
print listb[counta:a] #ektypwse tis ejades deyterhs listas
if lista[counta:a]==listb[counta:a]: #an oi e3ades einai oloidies
# for val in lista[counta:a]: #gia ka8emia timh ths a listas
# if val in listb[counta:a]: #ele3e an yparxei to idio stoixeio
matchno = matchno+1 #an nai anebase ton deikth epityxias 1
print '' #kenh grammh ektypwshs
counta +=6 #arxh epomenhs e3adas
a +=6 #telos epomenhs e3adas
print ''
print 'SYNOLO STOIXEIWN: ' + str(countalllista/6)#emfanish synolou stoixeiwn listas
print 'SYNOLO TAYTOPOIHSEWN: ' + str(matchno) #synolo teutopoihsevn
print 'MESOS OROS ' + str(matchno*100/(countalllista/6))+'%' #teutopoihseis/synolo
import random #eisagwgh biblio8hkhs
random.shuffle(listb) #anakatepse th lista b
# print roundsloops
counta=0 #arxikopoihsh arxhs e3adas
a=6 #arxikopoihsh telos e3adas
roundsloops+=1 #au3hsh deikth epanalhpshs
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Προγραμμα υπολογισμού ομοιότητας ακολουθιών 9 Χρόνια 11 Μήνες πριν #2582

  • pmav99
  • Το Άβαταρ του/της pmav99
  • Αποσυνδεμένος
  • Author
  • Δημοσιεύσεις: 684
  • Ληφθείσες Ευχαριστίες 111
1. Βάλε τον κώδικα σε code tags για να είναι πιο ευανάγνωστος και να κρατάει το formatting.
2. διάβασε για python sets. Είναι το data structure που χρειάζεσαι για αυτό το πρόβλημα. Επειδή οι πρωτεΐνες που έχεις δεν είναι πολύ μεγάλες δεν είναι μεγάλο το κακό που χρησιμοποιείς lists για να δεις αν υπάρχουν matches, αλλά ο σωστός τρόπος είναι με sets().
3. Δεν μας είπες ποιο είναι το πρόβλημά σου.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Προγραμμα υπολογισμού ομοιότητας ακολουθιών 9 Χρόνια 11 Μήνες πριν #2583

  • pmav99
  • Το Άβαταρ του/της pmav99
  • Αποσυνδεμένος
  • Author
  • Δημοσιεύσεις: 684
  • Ληφθείσες Ευχαριστίες 111
να υπολογίζει τις κοινές εξάδες γραμμάτων ανάμεσα στις ακολουθίες
Με αυτό εννοείς ότι η Ν-ιοστή εξάδα της πρώτης ακολουθίας να είναι ίδια με την Ν-ιοστή εξάδα της δεύτερης ακολουθίας ή απλά η Ν-ιοστή εξάδα της πρώτης ακολουθίας να υπάρχει στην δεύτερη ακολουθία;
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Προγραμμα υπολογισμού ομοιότητας ακολουθιών 9 Χρόνια 11 Μήνες πριν #2584

  • kamar
  • Το Άβαταρ του/της kamar
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 409
  • Ληφθείσες Ευχαριστίες 88
@pmav
2. διάβασε για python sets. Είναι το data structure που χρειάζεσαι για αυτό το πρόβλημα. Επειδή οι πρωτεΐνες που έχεις δεν είναι πολύ μεγάλες δεν είναι μεγάλο το κακό που χρησιμοποιείς lists για να δεις αν υπάρχουν matches, αλλά ο σωστός τρόπος είναι με sets().

Ερώτηση:

Αν μια εξάδα γίνει set, δεν θα αφαιρεθούν τυχόν διπλά γράμματα;

EDIT

Ή μήπως εννοείς, ότι αφού γίνουν εξάδες, θα αφαιρεθούν τυχόν διπλές;
Γράφω σε Python 3
Τελευταία διόρθωση: 9 Χρόνια 11 Μήνες πριν από kamar. Αιτία: Προσθήκη κειμένου.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Προγραμμα υπολογισμού ομοιότητας ακολουθιών 9 Χρόνια 11 Μήνες πριν #2585

  • pmav99
  • Το Άβαταρ του/της pmav99
  • Αποσυνδεμένος
  • Author
  • Δημοσιεύσεις: 684
  • Ληφθείσες Ευχαριστίες 111
To δεύτερο εννοώ. Πχ:
from pprint import pprint
 
def chunkify(l, n):
    """ Yield successive n-sized chunks from l.  """
    for i in range(0, len(l), n):
        yield l[i:i+n]
 
a = tuple("MWRVGHGTALDSGFPSGPYTCEGVEDEDAVKRVWGMASEHSNSTHPSPFADDALYDIASFERCGFDSRDALNKWFDGWTDALDASGFRVWEYDVPDWAARVGKFGQVVFSSFEAVEVASYGFEPEQLSLFK")
a_chunked = set(chunkify(a, 6))
pprint(a_chunked)
Τελευταία διόρθωση: 9 Χρόνια 11 Μήνες πριν από pmav99.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Προγραμμα υπολογισμού ομοιότητας ακολουθιών 9 Χρόνια 11 Μήνες πριν #2586

  • kamar
  • Το Άβαταρ του/της kamar
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 409
  • Ληφθείσες Ευχαριστίες 88
pmav99 έγραψε:
To δεύτερο εννοώ. Πχ:
from pprint import pprint
 
def chunkify(l, n):
    """ Yield successive n-sized chunks from l.  """
    for i in range(0, len(l), n):
        yield l[i:i+n]
 
a = tuple("MWRVGHGTALDSGFPSGPYTCEGVEDEDAVKRVWGMASEHSNSTHPSPFADDALYDIASFERCGFDSRDALNKWFDGWTDALDASGFRVWEYDVPDWAARVGKFGQVVFSSFEAVEVASYGFEPEQLSLFK")
a_chunked = set(chunkify(a, 6))
pprint(a_chunked)

Απ' ότι βλέπω αλλάζει και η ακολουθία του αλφαριθμητικού της πρωτεΐνης, δηλαδή το υπόλοιπο ('L', 'S', 'L', 'F', 'K'), ταξινομείται ενώ θα έπρεπε να είναι τελευταίο. Ίσως είναι πιο σωστό στην όλη διαδικασία να χρησιμοποιηθούν tuples.
Γράφω σε Python 3
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Προγραμμα υπολογισμού ομοιότητας ακολουθιών 9 Χρόνια 11 Μήνες πριν #2587

  • pmav99
  • Το Άβαταρ του/της pmav99
  • Αποσυνδεμένος
  • Author
  • Δημοσιεύσεις: 684
  • Ληφθείσες Ευχαριστίες 111
Ναι, τα sets() δεν είναι ταξινομημένα.

Το πρόβλημα είναι ότι η αρχική διατύπωση δεν είναι σαφής:
να υπολογίζει τις κοινές εξάδες γραμμάτων ανάμεσα στις ακολουθίες
Για αυτό και ρώτησα το εξής:
Με αυτό εννοείς ότι η Ν-ιοστή εξάδα της πρώτης ακολουθίας να είναι ίδια με την Ν-ιοστή εξάδα της δεύτερης ακολουθίας ή απλά η Ν-ιοστή εξάδα της πρώτης ακολουθίας να υπάρχει στην δεύτερη ακολουθία;
Αν το 2ο, τότε τα sets είναι η σωστή λύση γιατί η αναζήτηση γίνεται σε O(1). Αν το 1o, τότε μια λύση με lists()/tuples() είναι φυσικά προτιμότερη αλλά η αναζήτηση θα είναι Ο(Ν).
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Προγραμμα υπολογισμού ομοιότητας ακολουθιών 9 Χρόνια 11 Μήνες πριν #2588

  • theofilos
  • Το Άβαταρ του/της theofilos
  • Αποσυνδεμένος
  • py____
  • Δημοσιεύσεις: 10
Καταρχάς να σας ευχαριστήσω που ασχολείστε με το πρόβλημα μου.
Όσον αφορά τις ακολουθίες:
Oι εξάδες θα πρέπει να είναι τελείως πανομοιότυπες (και τα 6 γράμματα ίδια και με την ίδια σειρά)
Tο shuffle θα πρέπει να ανακατεύει τα γράμματα και όχι τις εξάδες και μετά να ξανακόβεται η ακολουθία σε εξάδες.
Το πρόβλημα μου είναι οτι πρέπει να το παραδώσω την άλλη Τετάρτη και δεν έχω προγραμματίσει ξανά στην ζωή μου και δεν τα διδαχτήκαμε καν. Έχω σκοπό να διαβάσω όσα μου έχετε πει τις επόμενες μέρες. Γενικά ότι μου λέτε με βοηθάει αν και τα μισά δεν τα καταλαβαίνω αλλά τα googlάρω.
Και πάλι σας ευχαριστώ όλους.

Υ.Γ. Αν δεν απάντησα σε κάτι είναι ή γιατί δεν το έχω ψάξει ακόμα ή γιατί δεν κατάλαβα! Οπότε σας παρακαλώ ρωτήστε με!!!
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Προγραμμα υπολογισμού ομοιότητας ακολουθιών 9 Χρόνια 11 Μήνες πριν #2589

  • pmav99
  • Το Άβαταρ του/της pmav99
  • Αποσυνδεμένος
  • Author
  • Δημοσιεύσεις: 684
  • Ληφθείσες Ευχαριστίες 111
Oι εξάδες θα πρέπει να είναι τελείως πανομοιότυπες (και τα 6 γράμματα ίδια και με την ίδια σειρά)
Αυτό είναι προφανές. Αυτό που δεν απαντάς είναι αν και κατά πόσο θα πρέπει οι εξάδες να είναι με την ίδια σειρά.

Βασικά, αν έγραφες ένα μικρό παράδειγμα θα βοηθούσε πάρα πολύ και εμάς να καταλάβουμε, και εσένα να προχωρήσεις.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Προγραμμα υπολογισμού ομοιότητας ακολουθιών 9 Χρόνια 11 Μήνες πριν #2590

  • theofilos
  • Το Άβαταρ του/της theofilos
  • Αποσυνδεμένος
  • py____
  • Δημοσιεύσεις: 10
1)AABBGGDDKKLLNNMMSS
2)AABBGGKKLLPPIILLJJ

2')ABGKLALJIIBGKPPJLL
2'')LJIIBGKPPJLLABGKLA
2''')LJILIBGGKAKLLPPJAB
2'''')LALJLABGKILIBGKPPJ

Οι ακολουθίες θα κόβονται πάντα σε εξάδες ξεκινώντας απο την αρχή
π.χ.
2)AABBGG,KKLLPP,IILLJJ
2')ABGKLA,LJIIBG,KPPJLL
2'')LJIIBG,KPPJLL,ABGKLA
2''')LJILIB,GGKAKL,LPPJAB
2'''')LALJLA,BGKILI,BGKPPJ
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Προγραμμα υπολογισμού ομοιότητας ακολουθιών 9 Χρόνια 11 Μήνες πριν #2591

  • pmav99
  • Το Άβαταρ του/της pmav99
  • Αποσυνδεμένος
  • Author
  • Δημοσιεύσεις: 684
  • Ληφθείσες Ευχαριστίες 111
pmav99 έγραψε:
να υπολογίζει τις κοινές εξάδες γραμμάτων ανάμεσα στις ακολουθίες
Με αυτό εννοείς ότι η Ν-ιοστή εξάδα της πρώτης ακολουθίας να είναι ίδια με την Ν-ιοστή εξάδα της δεύτερης ακολουθίας ή απλά η Ν-ιοστή εξάδα της πρώτης ακολουθίας να υπάρχει στην δεύτερη ακολουθία;
Σε αυτό δεν απαντησες...
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Προγραμμα υπολογισμού ομοιότητας ακολουθιών 9 Χρόνια 11 Μήνες πριν #2592

  • theofilos
  • Το Άβαταρ του/της theofilos
  • Αποσυνδεμένος
  • py____
  • Δημοσιεύσεις: 10
Ναι δεν καταλαβαίνω την ερώτηση, αυτό που πρέπει να κάνει το πρόγραμμα είναι να μετράει πόσες κοινές εξάδες υπάρχουν ανάμεσα στην ένα και στην 2, ανάμεσα στην 1 και την 2', κ.ο.κ..
Και αυτό πρέπει να το κάνει έως ότου το mean παραμένει σταθερό. mean = μέσος όρος κοινών ακολουθιών μεταξύ 1 και 2, 2', 2'', κ.ο.κ.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
  • Σελίδα:
  • 1
  • 2
Συντονιστές: pmav99
Χρόνος δημιουργίας σελίδας: 0.334 δευτερόλεπτα

Μοιράσου το!

Powered by CoalaWeb

Λίστα Ταχυδρομείου