Eötvös Loránd Tudományegyetem Természettudományi Kar

Programozó matematikus szak 1994-95 tanév II. évfolyam II. félév

Programozási technológia gyakorlat

Gyakorlatvezetõ : Sike Sándor

Bechtold Ferenc - Kiss László - Pintyõke Gábor

Molekula ábrázolása síkban

Rendszerterv

BUDAPEST, 1995.

TARTALOM
­Bevezetés 3I. A program fõ adatszerkezetei 31. A molekula-adatszerkezete 32. Egy atomot leíró adatszerkezet 33 . Egy kötést leíró adatszerkezet 44. Atomok szomszédjai vektor 45. Atomok kötései vektor 46. A komponens adatszerkezet 47. Az adatbázisban lévõ komponens adatszerkezete 58. A szövegf&a acute;jlokban található komponens adatszerkezete 5II. A modulok és kapcsolatuk 5III. A gyûjtemény modul 61. A “Morgan" számozó, szimmetriaosztály számító eljár&a acute;s 6a.) Az eljárásról általában 6b.) Az eljárás algoritmusa 6IV. A fájlkezelõ modul 71. A fájlba mentõ eljárás 72. A fájlból beolvasó elj& aacute;rás 7V. A bevitel modul 81. A tényleges felhasználói felület 8a.) A molekula megadása 8b.) A programablak 8c.) A címmezõ 8d.) A menük 9e.) A kiválasztást elõsegí tõ sor 9f.) A munkafelület 102. Az összefüggõséget ellenõrzõ eljárás 103. A molekula-adatszerkezetet kitöltõ eljárás 10VI. A feldolgozó modul 111. A komponens leválasztó eljárás 11a.) Az eljárásról általában 11b.) Az eljárás algoritmusa 112. A polárkoordináta számító eljárás 11a.) Az elj árásról általában 11b.) Az eljárás algoritmusa 113. Felcímkézõ eljárás 12a.) Az eljárásról általában 12b.) Az eljárás algo ritmusa 12VII. A kirajzoló modul 121. A Descarteskoordinátát számító eljárás 12a.) Az eljárásról általában 12b.) Az eljárás algoritmusa 122. A k&eacut e;pernyõhöz igazító eljárás 13a.) Az eljárásról általában 13b.) Az eljárás algoritmusa 133. A kirajzoló eljárás 144. Az ütközésf igyelõ eljárás 14a.) Az eljárásról általában 14b.) Az eljárás algoritmusa 14VIII. Az adatbázis-kezelõ modul 141. Az adatbázis szerkezete 142. Új adatbá ;zist létrehozó eljárás 153. Fájlkomponenst adatbázisba felvevõ eljárás 154. Izomorfia ellenõrzõ eljárás 15a.) Az eljárásról által&aacut e;ban 15b.) Az eljárás algoritmusa 15

BEVEZETÉS

A rendszerterv a program felépítésérõl ad felvilágosítást. Ezen belül is a program tevékenységei alapján való modulokra bontást írja le, illetve az egyes modulok által nyújtott szolgáltatásokat, eljárásokat. Az eljárások leírása tartalmazza a szükséges algoritmusokat. Külön szakasz tartalmazza a globálisan használt adatszerkezeteket. A rendszertervben kapott helyet a program felhasználói felületének részletesebb leírása is.

Budapest, 1995. április 7.

Bechtold Ferenc, Kiss László, Pintyõke Gábor

  1. A program fõ adatszerkezetei
  2. A molekula-adatszerkezete

Ez az adatszerkezet leírja az egész molekulát az összes adatával, a szerkezetre, milyenségre, megjelenítésre vonatkozólag. Ezek az adatok a következõk:

  • komponensszám
  • atomszám
  • kötésszám
  • atom adatszerkezetek
  • kötés adatszerkezetek
  • atomok szomszédjai vektor
  • atomok kötései vektor
  • Az elsõ három egy­egy természetes szám. A többiek újabb alstruktúrák, azaz újabb adatszerkezetek. Az atomok és élek egy-egy olyan vektor, amely a 2. illetve 3. pontban leírt adatszerkezetekbõl épül fel.

    1. Egy atomot leíró adatszerkezet

    Egy atomot a következõ adatok írnak le:

  • atom vegyjele
  • atom koordinátái (bevitelkor, kirajzoláskor)
  • a komponens sorszáma, amiben található
  • szomszédos atomok száma
  • az elsõ szomszédos atom indexe atomok szomszédjai vektorban
  • az elsõ kötés indexe atomok kötései vektorban
  • Az atom vegyjele egy maximum két betûbõl álló vektor. A koordináták természetes számok, akárcsak az utána következõk.

    1. Egy kötést leíró adatszerkezet

    Egy kötést a következõ adatok írnak le:

  • kötés típusa (egyszeres, kétszeres, háromszoros)
  • kötés vízszintessel bezárt szöge (Specifikáció 4. oldal II. 3. a.) szerint)
  • kötés hossza
  • a kötésben résztvevõ atomok sorszáma a molekula atomok vektorában
  • Az elsõ egy felsorolási típus, a többi pedig természetes szám.
    1. Atomok szomszédjai vektor

    Ez a vektor atomindexeket tartalmaz. Erre az atom adatszerkezet hivatkozik úgy, hogy megadja az elsõ szomszédjának indexét, és azt, hogy innentõl kezdve még hány darab a szomszédja.


    1. Atomok kötései vektor

    Ez a vektor kötésindexeket tartalmaz. Erre az atom adatszerkezet hivatkozik úgy, hogy megadja az elsõ kötésének indexét, és azt, hogy innentõl kezdve még hány darab kötése van.


    1. A komponens adatszerkezet
    2. szimmetriaosztályszám
    3. atomszám
    4. kötésszám
    5. atom adatszerkezetek
    6. kötés adatszerkezetek
    7. atomok szomszédjai vektor
    8. atomok kötései vektor

    Az elsõ három természetes szám. A többiek újabb alstruktúrák, azaz újabb adatszerkezetek. Az atomok és élek egy-egy olyan vektor, amely a 2. illetve 3. pontban leírt adatszerkezetekbõl épül fel.

    1. Az adatbázisban lévõ komponens adatszerkezete
    2. atomszám
    3. kötésszám
    4. szimmetriaosztályszám
    5. atomok és kötések

    Az atom-, kötés- és szimmetriaosztályszám természetes számok. Az atomok és a kötések a fájlban leírt szerkezethez hasonlóak. Ez egy vektor, amelyben olyan rekordok vannak, amelyek komponensei egy-egy kötést írnak le az alábbi módon: a kötésben résztvevõ atomok sorszámai, kötéshosszok, kötések vízszintessel bezárt szögei.

    1. A szövegfájlokban található komponens adatszerkezete

    A Specifikáció 4. oldal II. 3. a.) pontja szerint.

    1. A modulok és kapcsolatuk

    A programot annak tevékenységei szerint modulokra bonthatjuk fel. A modulok egymásnak szolgáltatásokat nyújtanak, így a modulok az I. pontban leírt adatszerkezeteken keresztül kommunikálnak.

    A gyûjtemény modul a többiek által használt eljárásokat tartalmazza.

    A bevitel modul tulajdonképpen két további modulra bomlik. Az egyik a tényleges felhasználói felület (ami rendszerfüggõ), a másik pedig a molekula-adatszerkezet kitöltésére alkalmas az elõbbi modul által bekért adatok alapján.

    A feldolgozó modul szintén két további részre bomlik, a komponens leválasztóra és a szög- és hosszszámítóra. A szög- és hosszszámító egység az adatbázisból azonosítja a szerkezetet, a komponenseket megfelelõ helyzetbe állítja, polárkoordinátákat számít. Ezek a korábban leírt molekula-adatszerkezet további mezõit töltik ki.

    A kirajzoló modul kiszámítja a Descartes-koordinátákat, az ablak méretéhez igazítja a rajzot, ellenõrzi az ütközéseket, valamint kirajzolja a molekulát a képernyõre.

    Az adatbázis-készítõ segédprogram használja a fõprogram adatbázis-kezelõ modulját. Ez a modul a szövegfájlokból képes elkészíteni az adatbázist, és a kért adatokat kikeresni az adatbázisból.

    A fájlkezelõ modul a már kiigazított, helyesen kirajzolt ábra molekula-adatszerkezetét menti egy külsõ állományba, amely késõbbiek során a felhasználói felület felhasználhat, mint bevitt adatot.

    A fõprogram tehát a felhasználói felület moduljának segítségével kitölt egy molekula-adatszerkezetet. Ezt a feldolgozó modul további bejegyzésekkel egészíti ki, amelynek felhasználásával a kirajzoló modul elkészíti az ábrát. A kész kép molekula-adatszerkezete fájlba menthetõ, illetve a bevitel modulnak átadható további módosításra.

    Az adatbázis­kezelõ modul a feldolgozó modul által átadott komponens adatszerkezetet egészíti ki a kötéshosszra és kötésszögre vonatkozó bejegyzésekkel. Az így kapott komponens adatszerkezetet adja vissza a feldolgozó modulnak.

    1. A gyûjtemény modul

    Ez a modul olyan általános eljárásokat tartalmaz, amelyeket a program több modulja is használ.

    1. A “Morgan" számozó, szimmetriaosztály számító eljárás
      1. Az eljárásról általában

    Az eljárás feladata egy komponensrõl elkészíteni egy olyan számozást, amely nagy mértékben megkönnyíti egy komponens azonosítását.

    Az eljárás egyaránt használandó a molekula komponenseire és az adatbázis létrehozásakor a szövegfájlokban adott komponensekre. Ezért tulajdonképpen két eljárást kell megvalósítani: a fájlkomponensbõl komponens adatszerkezetet készítõ eljárást és a lentebb leírt algoritmust végrehajtót.

    Az algoritmus eredményeképpen az atomokat szimmetriaosztályokba soroljuk. Az atomok szimmetriaosztályok szerint így sorszámokat kapnak.

    1. Az eljárás algoritmusa
    2. Minden komponensbeli atom esetén megszámoljuk, hogy hány másik atommal áll kötésben. Ezt egy vektorban feljegyezzük.
    3. Ezután minden atomra összegyûjtjük a szomszédos atomokhoz rendelt értékeket. Elõször az egyes atomokra kapott számsorozatokat, majd ezeket a sorozatokat rendezzük lexikografikusan.
    4. A kapott sorozatokat megsorszámozzuk emelkedõ sorrendben úgy, hogy azonos sorozatok azonos sorszámot kapjanak. Ezzel az atomokra egy osztályozást kapunk. Az atomokat is ily módon címkézzük fel.
    5. Most összegyûjtjük minden atomra a szomszédos atomok elõbbi módon kapott sorszámait.
    6. A (ii.) (iii.) (iv.) pontokat addig ismételjük, amíg nem növekszik tovább a szimmetriaosztályok száma. Ekkor a (ii.) pontban nem a szomszédos atomok számát használjuk, hanem a szimmetriaosztályok sorszámait.


    1. A fájlkezelõ modul
    2. A fájlba mentõ eljárás

    Ez az eljárás a felhasználó által megadott nevû állományba menti a kirajzoláskor kitöltött molekula-adatszerkezetet. Az állomány nevet a felhasználói felület szolgáltatja.

    1. A fájlból beolvasó eljárás

    A megadott nevû fájlból beolvas egy molekula-adatszerkezetet, ha az megfelelõ formátumú, majd a kirajzoló modulnak átadja, amely megjeleníti és továbbítja az adatszerkezetet a bevitel modulnak módosításra. Ez tulajdonképpen annak a lehetõségnek a kibõvítése, hogy a kirajzolás után tovább alakítható, rajzolható a molekula.

    1. A bevitel modul
    2. A tényleges felhasználói felület
      1. A molekula megadása

    A molekula megadásának általános elve a Specifikáció 5. oldalának III. pontjában olvasható.

    1. A programablak

    Az ablak négy részre osztható:

    1. A címmezõ

    A címmezõ a szokásos módon a program nevét tartalmazza, illetve a rendszermenüt, és a minimalizáló gombot. Az ablak nem tartalmaz maximalizáló gombot, mivel az ablak alapértelmezésben maximalizálva jelenik meg, mérete és helye pedig nem változtatható.

    1. A menük
    2. A Fájl menü
    3. A Tevékenységek menü

    A menüben egyszerre csak egy pont választható ki. A kiválasztott menüpont elõtt jel szerepel. A kiválasztott tevékenység neve a menü alatti sorban is látható lesz. Induláskor a Vázmegadás tevékenység kiválasztott, más nem választható az elsõ szerkezeti egység megadásáig. Ha egy fájlt megnyitunk, akkor is megszûnik ez a korlátozás.

    1. Az Atomtípusok menü

    A menübõl a leggyakrabban használt atomok választhatók ki (Oxigén, Hidrogén, Nitrogén, stb. ). A Más atom menüpont egy párbeszédablak megnyitásával lehetõvé teszi a fel nem sorolt atomok használatát is.

    1. A Kötéstípusok menü

    A kötéstípus­megadáshoz itt választhatjuk ki a megfelelõ fajtát.

    1. A Súgó menü
    2. A kiválasztást elõsegítõ sor

    Ez a sor ugyan csökkenti a kirajzoláshoz használható területet, de kényelmesebbé teszi a bevitelt.

    Ebben a sorban megjelenik az éppen használt tevékenység neve.

    Megjelenik még két elõugró lista is. Ezek segítségével menümegnyitás nélkül változtatható a használandó kötéstípus illetve atomtípus, és ugyanakkor a megadás során is látható, hogy éppen melyik típus van kiválasztva.

    1. A munkafelület

    Ezen a területen történik a molekula bevitele, majd annak kirajzolása is. A tevékenységeket a fentebb leírt menük szerint választhatjuk.

    1. A szerkezetmegadás
    2. A bal egérfül megnyomásával a kurzor aktuális helyére helyezhetünk egy atomot.
    3. A következõ atomhely megválasztással egyben az elõzõleg megadott atommal automatikusan kialakul egy kötés.
    4. Az elõzõ mûvelet addig ismételhetõ, amíg a jobb egérgombot megnyomjuk.
    5. Ha egy már megadott atom közelében kattintunk, akkor nem keletkezik új atom, hanem a már meglévõvel létesül a szükséges kötés.
    6. Az atomtípus­megadás

    A típus kiválasztása után kell az atomot reprezentáló pont közelében kattintani az egérrel.

    1. A kötéstípus­megadás

    A típus kiválasztása után kell a kötésben résztvevõ atomokat reprezentáló pontok közelében kattintani az egérrel egyikre a bal, a másikra a jobb füllel.

    1. Szerkezeti elemek törlése

    Az atom­ és kötéstörlések tulajdonképpen egy-egy speciális, üres típus megadását jelentik, ezért végrehajtásuk is ugyanúgy történik, mint más típusok esetében.

    1. A kirajzolás

    A megadást követõen megjelenik a molekula képe, ha valóban egyetlen molekulát adtunk meg és annak minden komponense megtalálható volt az adatbázisban.

    Ütközés esetén párbeszéd ablakban kapunk figyelmeztetést.

    Az atomokat vegyjelükkel szemléltetjük, kivéve a szenet, amelyet egy címke nélküli pont jelképez.

    A kötések típusát különbözõ vonalak jelzik.

    1. Az összefüggõséget ellenõrzõ eljárás

    Az eljárás azt vizsgálja, hogy a felhasználó egyetlen molekulát adott-e meg.

    Ezt egy gráfbejáró algoritmus valósítja meg, amely akkor tekinti nem megfelelõnek a felhasználó által bevitt adatot, ha a bejárás nem érinti az összes atomot.

    1. A molekula-adatszerkezetet kitöltõ eljárás

    Ez az eljárás a felhasználói felület által bekért adatok alapján kitölti a molekula-adatszerkezet megfelelõ mezõit (atomtípusok, kötéstípusok, kötések, atomok).

    1. A feldolgozó modul
    2. A komponensleválasztó eljárás
      1. Az eljárásról általában

    Az eljárás feladata, hogy a felhasználó által megadott molekulában megkeresse annak komponenseit. Ezzel egy vektort tölt ki, melynek elemei komponens adatszerkezetek. A molekula-adatszerkezetbe bejegyzi a komponensszámot, illetve az egyes atom adatszerkezetekbe azt, hogy hányadik sorszámú komponensbe tartozik. Ez az eljárás határozza meg a fõkomponenst is (a Specifikáció 7. oldalának IV. 4. pontja szerint).

    1. Az eljárás algoritmusa

    A komponensek leválasztása tulajdonképpen gráfon végzendõ maximálisan erõs komponensek megkeresését jelenti. Ehhez irányított gráfra van szükség. Az irányítást úgy végezzük el, hogy egy pontból kiindulva választunk egy élt, ezen átmegyünk a szomszédos csúcsra, és ezzel határozzuk meg az él irányát. A továbbiakban hasonlóképpen cselekszünk.

    Az élek általunk vett irányítását feljegyezzük. Így egy élt (kötést) csak egyszer dolgozunk fel. A feldolgozás során feljegyezzük a komponensek fõ jellemzõit, erre a fõkomponens kiválasztásához van szükség.

    1. A polárkoordináta számító eljárás
      1. Az eljárásról általában

    Az eljárás a Specifikáció 8. oldalának IV. 5., 6., 7. pontjának megvalósítása.

    1. Az eljárás algoritmusa
    2. A fõkomponens polárkoordinátái megegyeznek az adatbázisban szereplõkkel.
    3. A fõkomponens leágazó kötéseinek szögét meghatározzuk a következõ módon:
    4. Minden kötés szögét átkonvertáljuk olyan szöggé, mely az atomhoz illesztett pozitív félegyeneshez viszonyított. Ezt úgy tehetjük meg, hogy megvizsgáljuk, vajon a kötés kiinduló atomjának (komponensbeli) sorszáma kisebb­e, mint a szóban forgó atom sorszáma. Ha igen, akkor a szögét kivonjuk 180­ból, egyébként változatlanul hagyjuk. Ezen szögek sorozatát csökkenõ sorrendbe rendezzük, majd képezzük az összes lehetséges egymásután következõ két­két szög közötti különbségeket. Ezek közül a legnagyobb lesz a külsõ szög.
    5. Az atom molekulabeli szomszédjainak számából kivonjuk a komponensbeli szomszédjainak számát, ezzel megkapjuk a leágazó kötések számát. Az elõbb kapott külsõ szöget felosztjuk ennek megfelelõen.
    6. Elindulunk az egyik leágazó kötésen:
    7. ha a kötésben résztvevõ másik atom nem tartozik egyetlen komponenshez sem, akkor a belõle leágazó kötés szöge 0 vagy 180 attól függõen, hogy az elõbbi kötés szöge 270 és 90 vagy 90 és 270 közé esik­e. Ha több kötés is leágazik a komponenshez nem tartozó atomból, akkor a 360­ot ezek közt osztjuk fel.
    8. ha a kötésben résztvevõ másik atom egy komponens részét képezi, akkor ez egy komponensbeli leágazás. Ennek szögét meghatározhatjuk a (ii.) szerint, annak polárkoordináta-rendszerében. Ezt, illetve a komponens összes szögét el kell forgatni úgy, hogy ez a kötés fedésbe kerüljön a (iii.)­beli kötéssel. A komponensrõl feljegyezzük, hogy a bejövõ kötés szöge milyen a Specifikáció 8. oldalának IV. 7. a.) paragrafusa szempontjából, ez a felcímkézésnél lesz fontos.
    9. A komponensbe érve a (ii.) (iii.) pontokat végrehajtjuk rekurzívan.
    1. Felcímkézõ eljárás
      1. Az eljárásról általában

    Az eljárás alkalmas arra, hogy a Specifikáció 8. oldalának IV. 7. b.) pontját kielégítse. A feladatot egy rekurzívan megírt visszalépéses keresés végzi el.

    1. Az eljárás algoritmusa

    A legnagyobb prioritású atomot elhelyezzük a neki megfelelõ szimmetriaosztályba sorolt, legnagyobb prioritású helyre. A többi atomot is hasonlóképpen helyezzük el ­ csökkenõ prioritású sorrendben. Ha így nem címkézhetõ fel a szerkezet, akkor visszalépünk és eggyel magasabb szintrõl folytatjuk az illesztést. Visszalépésre kerül sor egyfajta kiosztás elkészülésekor is. Így megkapjuk az összes lehetséges kiosztást. Ezek közül a lexikografikusan legkisebb értékû lesz a keresett címkézés.

    1. A kirajzoló modul
    2. A Descartes­koordinátát számító eljárás
      1. Az eljárásról általában

    Az eljárás feladata, hogy a polárkoordinátákat átszámítsa Descartes-koordinátákká.

    1. Az eljárás algoritmusa
      1. Kiválasztjuk az egyes számú atomot.
      2. Ennek koordinátája legyen (0,0).
      3. Ezután egy gráfbejáró algoritmus segítségével bejárjuk a gráfot ebbõl a pontból indulva.

    1. A bejárás során minden atomnak meghatározzuk a kezdõatomhoz viszonyított koordinátáját a kötéshosszból és a kötésszögbõl a szinusz függvény felhasználásával.

    A koordináták, a szögek, kötéshosszok egész számok, ezért a szinusz függvényt egy táblázattal valósítjuk meg. Ebben a 0 és 90 közötti szögek szinuszainak 1000­szeresei szerepelnek. (A 90 és 360 közötti szögek szinuszai csak elõjelekben különböznek; a koordináták a kapott értékek 1000­ed részének egészrészei. )

    A bejárás egyben egy maximum illetve minimum keresés is, amely megtalálja a legnagyobb illetve legkisebb ordinátákat és abszcisszákat.

    1. A képernyõhöz igazító eljárás
      1. Az eljárásról általában

    Az eljárás kiszámítja a molekula atomjainak tényleges képernyõ­koordinátáit.

    1. Az eljárás algoritmusa
    Eredeti koordináták y<0y>0
    x<0x'=|a|-|x| ; y'=b+|y| x'=|a|-|x| ; y'=b-y
    x>0x'=|a|+x ; y'=b+|y| x'=|a|-x ; y'=b-y
    a, b az új origó eredeti koordinátái, x' és y' az új koordináták
    1. Minden atom koordinátáit átszámítjuk egy olyan koordinátarendszer szerint, melynek origója az 1. eljárás által meghatározott legkisebb abszcisszájú és legnagyobb ordinátájú pont (illetve ennél egy kicsit kevesebb illetve több, hogy a legszélsõ atom is kirajzolható legyen), a koordináták pedig pozitív számok.
    2. Ugyanekkor minden koordinátát megszorzunk egy arányszámmal. A kapott eredmény egészrészét vesszük. Kiszámítjuk a minimális és maximális abszcisszák, illetve ordináták különbségeinek abszolút értékét. Ezeket elosztjuk a megfelelõ képernyõméretekkel. Ezek közül a kisebbik lesz az arányszám.
    1. A kirajzoló eljárás

    A kiszámított koordináták alapján az atomcímkék és a kötések kirajzolásra kerülnek a WindowsTM-hoz mellékelt függvények segítségével.

    1. Az ütközésfigyelõ eljárás
      1. Az eljárásról általában

    Az eljárás szerepe, hogy ellenõrizze az ütközéseket. Ütközés esetén értesíti a felhasználót.

    1. Az eljárás algoritmusa

    A képernyõt nem diszjunkt tartományokra osztjuk fel. A kötésekrõl és atomokról tudjuk, hogy mely tartományokba esnek. Az ütközésvizsgálat a molekulaszerkezet elemeire csak a szomszédos tartományokban szükséges. Az ütközésvizsgálat koordináta­geometriai feladatként kezelendõ.

    1. Az adatbázis-kezelõ modul
    2. Az adatbázis szerkezete

    Az adatbázis a komponensek azonosításának gyors megvalósítását teszi lehetõvé. Ehhez egy hash­függvényt alkalmazunk.
    Komponens adatok
    Fájlbeli pozíció Komponens adatokMásik komponens helye
    3400A komponens adatai 0
    12408B komponens adatai 24058
    12501C komponens adatai 0
    22356D komponens adatai 0
    24058E komponens adatai 0
    .........
    Indextábla
    Hash értékFájl pozíció
    012501
    112408
    20
    322356
    40
    53400
    ......

    Az adatbázist tartalmazó fájl két részbõl tevõdik össze. Az indextáblából és a komponensek leírásából. A hash­függvény által a komponens jellegzetes adataiból (szimmetriaosztályszám, atomszám, élszám, szimmetriasztring) számolt érték az indextábla egy helyére mutat. Ezen a helyen egy fájlbeli pozíció található, ahol egy adott komponens adatai vannak elhelyezve, valamint egy másik fájlpozíció, illetve nulla, ha ehhez a hash­függvény értékhez csak egy komponens tartozik a jelenlegi adatbázisban. Így az azonos hash értékekhez tartozó komponenseket egy listába fûzzük fel, melynek fejeleme az indextáblabeli érték.

    1. Új adatbázist létrehozó eljárás

    Az eljárás egy üres adatbázist hoz létre. Ez azt jelenti, hogy egy fájlban elkészít egy rögzített nagyságú indextáblázatot, melyben minden fájlpozíció érték 0.

    1. Fájlkomponenst adatbázisba felvevõ eljárás

    A “Morgan" számozó eljárással elkészítjük a komponens atomjainak szimmetriaosztályozását. Ezek után kiszámítható a komponenshez tartozó hash­függvényérték.

    Ha az indextáblában ennél az értéknél 0 a fájlpozíció értéke, akkor a fájlhossz értéke kerül a helyébe, és erre a fájlpozícióra beírunk egy nullát (a következõ fájlpozíció értékét), illetve a szövegfájlban leírt komponens adatokat.

    Ha az indextáblában a fájlpozíció nem nulla, akkor ez azt jelenti, hogy az adott hash-függvényértékhez több komponens is tartozik. Ekkor a fájlpozíción kell ellenõrizni a következõ komponens pozíciójának értékét:

    1. Izomorfia ellenõrzõ eljárás
      1. Az eljárásról általában

    Feladata a feldolgozó modul által lehasított komponens megfeleltetése egy adatbázisbeli társának. Ha nem talál azonosat, ekkor ezt a hibát továbbítja a feldolgozó modulnak.

    1. Az eljárás algoritmusa

    A “Morgan" számozó algoritmussal elkészítjük a szimmetriaosztályozást. Kiszámítjuk a hash függvényértéket. Az ehhez a pozícióhoz tartozó láncban lévõ komponensekkel kell az összehasonlítást elvégezni. Az egyezéshez szükséges a szimmetriasztring egyezése.

    A beazonosított komponens adataival (kötésszög, kötéshossz) kiegészíti a feldolgozó modul által megadott molekulaszerkezetet.