Bitte um Hilfe von den Profis



  • Hallo,

    ich habe hier ein Programm, genannt Pratt2.1, geschreiben in Ansi C, dass an einer Stelle etwas verändert werden muss.

    Das Programm wurde von Inge Jonassen von der Uni Norwegen geschrieben, die Homepage ist http://www.ii.uib.no/~inge/Pratt.html Das Programm läuft unter Linux und ist ein wissenschaftliches Programm. Auf der Seite gibt es u.a. den Source-Code. Das Programm ist frei, man kann es verändern, wenn man kann.

    Mein Problem ist nun wie folgt: Es gibt eine PL-Option (Pattern-Length, Muster-Länge), die auf 100 Stellen begrenzt ist. Ich bräuchte aber aber eine Limitierung bei 10000. Da ich nun nicht ANSI C kann, der Autor sich auf Anfrage nicht meldet, das Programm frei ist, Online-Pratt bei PL-Option auf 10000 limitiert ist und ich das Programm wirklich brauche, seit ihr meine letzte Chance.

    Ich weiß nicht, wie kompliziert es ist, die Limitierung hochzusetzen, aber wenn es jemand kann, dann befindet er sich hier auf dem Board. Und diesem Menschen wäre ich sehr dankbar, wenn er/sie sich mal die Sache anschauen könnte. 😉



  • Hi, der Link geht leider nicht. 🙄



  • Einfach den Punkt nach html entfernen ... Darauf hätte man aber auch selbst kommen können 🙄



  • Hi

    Erstaunlicherweise hab ich das Programm sogar unter WinXP zum laufen gebracht.
    Prinzipiell muss ich nur eine Zeile verändern.
    Allerdings müsste ich noch schauen ob das nicht irgendwelche Nachfolgen hat, die mir jetzt nicht aufgefallen sind.
    Könntest du mir mal eine entsprechend lange Testsequenz mit Anweisungsprotokoll schicken? [jettz4d@web.de]

    Viele Grüße
    Fischi



  • So, der Punkt ist nun weg und der Link funktioniert auch so.

    @ Fischi

    Ich habe dir die Datei mal geschickt. Sie ist im Fast-Format. Ein spezielle Anweisung gibt es nicht. Du gibts in der Befehlszeile ./pratt fasta Datei.txt ein. Danach kannst du die Optionen hoch- oder runtersetzen und das Programm starten.

    Für alle die sich mal so ein Fasta-File anschauen wollen: hier gibt es 10 Sequenzen. Für die Mustererkennung, die Pratt ja machen soll, ist die Zeile ">....." bedeutungslos. Das ist nur eine beliebige Beschreibung. (Die Sequenz steht in einer Zeile. Unten wurden Zeilenumrüche eingeführt, um die Sache nicht zu unübersichtlich zu machen.)

    1:length:317 ac_num:Q9EZB5
    TKEQELLAYREMLLIRRFEEKAGQMYGMGLIGGFCHLYIGQEAVVVGMQMAMKQGDQVITGYRDHGHMLATGMESRGV
    MAELTGRKGGYSKGKGGSMHMFSIEKQFFGGHGIVGCAGVAGHRPRLREPLSAENGSVSVTYFGDGAANQGQVYESFN
    MAELWKLPVVYVIENNKYAMGSAVSRASAQTDFSKRGQSFNIPGEQVDGMDSAQPVKAAGERALEFARSGKGPYILEM
    QTYRYRGHSMSDPAKYRSKEEVQKMRTEHDPIEQVRNRLLEAGLVTEDELKKVDAEIRDIVNDAADFATHDPEPDPSE
    LYTDI
    2:length:320 ac_num:Q818T3
    LSDEQVLEMFRTMLLARKIDERMWLLNRAGKIPFVISCQGQEAAQVGAAFALDREKDYALPYYRDMGVALTFGMTAKE
    LMLSAFAKAGDPNSGGRQMPGHFGQKKNRIVTGSSPVTTQVPHAVGIALAGKMEKKDLVTFVTFGEGSSNQGDFHEGA
    NFAGVHKLPVIFMCENNKYAISIPVEKQLACKNVSDRAIGYGMPGYTIDGNDPLAVYKAVKEAADRGRRGEGPTLIET
    VSYRLTAHSSDDDDRVYRDKEEVEEAKKKDSIITFAAYLKEAGVLTEESEKQMLDEIMHIVNEATEYAENAPYAAPED
    ALKHVYAE
    3:length:326 ac_num:Q97Y23
    DIPKSKLLDMYKKMLLIRYHELTAKELFASGKIPGFVHLYVGEEAVAVGVMSTLRDDDYITSTHRGHGHCIAKGLDVK
    RMLAEIMGKKTGVCKGKGGSMHIFDYSKGMLGANGIVGGGAPHAVGAALAFKLKGLDRVAVAFIGDGAMNQGVVLESL
    NLSAIWKLPVIFVVEDNMYAMSTRSLVPGKLQPRHSAAKSYVERALGFGIPAVEVDGMDVLAVYEVAKEAVDRARRGG
    GPSLLHCKTYRFFGHFEGDPLVYRDKEEEEMWRKRDPITLFRDKLVSNNIINSEELDKIDREAKAEIEQALKFAEESP
    YPEVEEALTDVFTD
    4:length:318 ac_num:P37940
    LTDQEAVDMYRTMLLARKIDERMWLLNRSGKIPFVISCQGQEAAQVGAAFALDREMDYVLPYYRDMGVVLAFGMTAKD
    LMMSGFAKAADPNSGGRQMPGHFGQKKNRIVTGSSPVTTQVPHAVGIALAGRMEKKDIAAFVTFGEGSSNQGDFHEGA
    NFAAVHKLPVIFMCENNKYAISVPYDKQVACENISDRAIGYGMPGVTVNGNDPLEVYQAVKEARERARRGEGPTLIET
    ISYRLTPHSSDDDDSSYRGREEVEEAKKSDPLLTYQAYLKETGLLSDEIEQTMLDEIMAIVNEATDEAENAPYAAPES
    ALDYVY
    5:length:320 ac_num:Q8CXE7
    ISNDIALGMYEMMLLARKLDERMWLLNRAGKIPFVISCQGQEAAQVGAAFALNRTTDYIAPYYRDLGVVLAFGMSAQD
    VMLSAFAKAEDPNSGGRQMPGHFGQKKNRILTGSSPVTTQLPHAVGVALAAKMDKEPLVSFVTLGEGSSNQGDFHEGL
    NFAGVHKLPVITMVENNKYAISVPYDRQVASETISERANSYGMPGVTVDGNDPVAVYQAVSEARDRAVRGEGPTLIEA
    ITYRLTAHSSDDDDRAYREKNEVEEAKKKDSIITFATTLKEAGVLKDEKEQEIMSRIDELVNEATDYAENASYAEPED
    ALRYVYEE
    6:length:314 ac_num:Q8F4N0
    QDLFELYRQMLLIRRFEEGAAKSYSTGKIGGFCHLYIGQEAVGVGSIAALKEQDYIVSTYRDHGHALARGLDPKALMA
    ELFGKRTGISSGYGGSMHFFDKNKRFMGGHGIVGGHISLAAGIAYASKYKNENSVTICFFGEGAANIGSFHEGMNLAA
    IWKLPLVMICENNHYAMGTPEYRSLSVKDVSVRATAYDIARDHIEGDEVRKVRDHVSVAVERARRGEGPTLMEISTYR
    FRGHSMSDPAKYRTKEELDRYKKSDPLLKAKDDLIHSEWKEEELEKLDIDIQAQVEDAIVFADKSEEPPLGWLYKHVY
    AE
    7:length:315 ac_num:Q92IS3
    TKEEYIKSFKDMLLLRRFEEKCGQLYGMGEIGGFCHLYIGQEAVISAIDMVKQKGDSTITSYRDHAHIILAGTEPKYV
    LAELMGRATGCSKGKGGSMHLFNVPNKFYGGHGIVGAQVPIGTGLAFVEKYNDTHNICFTFLGDGAVNQGQVYEAFNM
    AALWGLPVVYIIENNEYSMGTSVARSTFMRDLYKKGASFGIKGFQLDGMDFEEMYDGSKQAAEYVRENSFPLILEVKT
    YRYRGHSMSDPAKYRSKEEVEQYKERDPLVIIRKTILDNKYVTEADLKAIEQSVKEIVKEAVEFSENSPLPDEGELYT
    QVY
    8:length:314 ac_num:Q9ZDR4
    KEEYIKSFKDMLLLRRFEEKCGQLYGMGKIGGFCHLYIGQEAVISAVAMIKKKGDSTITSYRDHAHIILAGTEPKYVL
    AELMGRATGCSKGKGGSMHLFDIPNKFYGGHGIVGAQVPIGTGLAFAEKYNGTNNICFTFLGDGAVNQGQVYEAFNMA
    SLWGLPIVYIIENNEYSMGTSVARSTFMCDLYKKGESFGIRGFQLDGMDFEEMYNGTKQVAEYVRENSFPVILEVKTY
    RYRGHSMSDPAKYRSKEEVEKYKERDTLVRIREIILDNKYATEADLKAIEQSVREIIKVAVEFSENSPLPAEDELYTE
    IY
    9:length:319 ac_num:Q8DPQ7
    LDKNLLLEMFRKMEEIRRMDLKIAQLVKKGKVPGMTHFSVGEEAANVGAMLALNPDDLITSNHRGHGQAIAKGIDLNG
    MMAEILGKYTGTCKGKGGSMHIADLDAGNLGANGIVGGGMGIAVGAALSQQMQNTGKIVVCFFGDGATNEGVFHEAVN
    MASIWNLPVIFYCINNGYGISADIKKMTNIEHIHQRSAAYGIPGMFIEDGNNVIDVYEGFQKAVDHVRSGNGPVLIES
    VTYRWLGHSSSDPGKYRTREEVELWKQKDPIENLRNYLIENNIASAEELEKIQAQVKEAVEASVKFAEESPFPPLESA
    FEDIYTD
    10:length:340 ac_num:Q8L1Z6
    MAERLKKNSASVVHNALSNTTKKAKIANFTKEEEIDAYREMLLIRRFEEKAGQLYGMGLIGGFCHLYIGQEAVVIGTL
    KAAKEGDQVITSYRDHGHMLAVGMSPRGVMAELTGRQGGFSKGKGGSMHMFSKEKNFYGGHGIVGAQVPIGSGLAFSN
    QYLGKDNVTLVYFGDGAANQGQVYESFNMASLWKLPVVYIIENNQYAMGTSVARASAETDFSRRGLSFEIPGIVVDGM
    DVRAVKGAADEAITWTRSGKGPIILDMQTYRYRGHSMSDPAKYRSKEEVQKIKEEQDPIDQVRNRILQQGFASEDDLK
    SIDKEVRAIVADAVDFAQSDQEPDASEL



  • dEUs schrieb:

    Einfach den Punkt nach html entfernen ... Darauf hätte man aber auch selbst kommen können 🙄

    Hmmm, hab ich gar nicht gesehen, sorry. 😉



  • Hallo,

    ich hab jetzt bloß mal kurz drüber geguckt. Kann es sein dass die Begrenzung durch die statische implementierung des Baumes zustande kommt ?

    Das ist aber eigentlich auch Nebensache, was ich mich frage ist: Welchen Sinn hat die Begrenzung ? Wenn die Ergebnisse nicht verfälscht werden oder es sonst irgendwelche Auswirkungen hat, hätte der Programmierer meiner Meinung nach eine solche Begrenzung nicht eingebaut. Oder liege ich da falsch ?



  • prolog schrieb:

    Hallo,

    ich hab jetzt bloß mal kurz drüber geguckt. Kann es sein dass die Begrenzung durch die statische implementierung des Baumes zustande kommt ?

    Hmmm, weiß ich nicht. Vielleicht kann sich mal jemand dazu äußern.

    Der einzige für mich in Frage kommende Sinn der Begrenzung ist der Rechenaufwand, der mit der Aufhebung der Limitierung einhergeht. Das Programm stammt von 1997, da gab es noch nicht so leistungsstarke Rechner wie heute. Und der Rechenaufwand ist sehr groß, wenn man bedenkt, dass man vielleicht nicht 15 sondern 5000 Sequenzen untersuchen will. Man kann Sequenzen auch interaktiv auf deren Server hochladen, sie rechnen lassen und das Ergebnis bekommen. Dort liegt die Begrenzung bei 10000, nicht bei 100.

    Das Ergebnis sollte nicht verfälscht, aber dennoch anders sein. Das Progamm arbeitet in Prinzip so, dass alle Sequenzen übereinander gelegt und gegeneinander verschoben werden, bis die größte Ähnlichkeit vorhanden ist (wenn man z.B. von Stelle 1 durch alle Sequenzen geht). Ist dort immer der gleiche Buchstabe, haben wir den ersten Buchstaben fürs Muster. Kommen an Stelle 2 insgesamt 3 Buchstaben vor, kommen diese drei Buchstaben an Stelle drei ins Muster. Kommen an Stelle 4 10 Buchstaben vor, kommt diese Stelle nicht ins Muster, bzw. als X. Es werden auch Lücken in die Sequenzen eingefügt, um das Ergebenis zu verbessern.(Wenn z.B. ein Buchstabe in einer Sequenz fehlt, die Sequenz absolut identisch, aber verschoben ist, wird eine Lücke ("-") eingefüllt.

    Das Muster ist nun mittels PL-Option auf 50 Stellen begrenzt. Habe ich eine Sequenz mit 600 Buchstaben, findet das Programm mehrere Muster an verschiedenen Stellen mit unterschiedlicher Qualität. Setzte ich nun PL hoch, werde ich ein Gesamt-Muster über alle 600 Buchstaben haben, das sich von dem Muster bei PL 100 unterscheidet.
    Die Qualität des erzeugten Musters erkennt man anhand der Ausgangssequenzen, ob an bestimmten Stellen tatsächlich die Buchstaben vorkommen, die das Muster vorgiebt.

    Der Autor meldet sich wie gesagt nicht.

    Ich würde mich über jede Hilfe freuen.



  • Hmmm, ich dachte, hier werden sie geholfen.

    Kommt schon Leute, ich weiß, dass ihr es könnt, also gebt euch einen Ruck!

    Es ist doch nur ein Wert?! 😉



  • Danke Leute:-((((



  • kennst du 'grep' ?

    man@work:~/pratt$ grep MAX *.h
    block.h:#define MAX_NR_SETS 1000
    block.h:#define MAX_NR_GEN 10
    block.h:        int           symbols[MAX_NR_GEN];
    mst.h:#define MAX_NUM_DIST 500
    mst.h:int read_mat(float[MAX_NUM_DIST][MAX_NUM_DIST],char*);
    mst.h:float mst_weight(float[MAX_NUM_DIST][MAX_NUM_DIST],int,int[MAX_NUM_DIST],char[]);
    pattern.h:#define NFA_MAX_FLEX 20
    pattern.h:#define MAX_WORD_NFA 20
    pattern.h:   unsigned int shift_vector[NFA_MAX_FLEX];
    pattern.h:   unsigned int char_vector[26][MAX_WORD_NFA];
    pattern.h:   unsigned int shift_vector[NFA_MAX_FLEX][MAX_WORD_NFA];
    pattern.h:#define MAX_MATCHING_STRINGS 100
    pattern.h:#define G_MAX_COMP 101
    pattern.h:#define G_MAX_FLEX 10
    pattern.h:      float               Max_Score[G_MAX_COMP][G_MAX_FLEX];
    scan.h:#define MAX_WORD 8
    scan.h:#define MAX_FLEX 10
    scan.h:#define MAX_LEN_PAT 256
    scan.h:#define MAX_SYMBOL 20
    sequence.h:#define MAX_RESTRICT 10
    sequence.h:     int          first[MAX_RESTRICT];
    sequence.h:     int          last[MAX_RESTRICT];
    

    das könnte dein kandidat sein:

    pattern.h:#define MAX_MATCHING_STRINGS 100

    no guarantee !


Anmelden zum Antworten