AIVO
Cum laude approbatur työprojekti
ESISUUNNITELMA
14.2.1997
työryhmä:
Sami Kärkkäinen
Tommi Lahtonen
Marko Minkkinen
SISÄLLYSLUETTELO
4.1 Henkilöresurssit 2
4.2 Ohjausresurssit 2
4.3 Materiaaliresurssit 2
5. Toteuttaminen 3
6. Ohjelman sisäinen rakenne 3
7. Käyttöliittymä 5
7.1 Menut 5
7.2 Parametrilistadialogi 6
7.3 Editointi-ikkuna 7
7.4 Ajastus-dialogi 7
7.5 Info-ikkuna 8
7.6 Koodi-ikkuna 8
8. Työnjako 9
9. Arvio viikottaisesta aikataulusta 9
9.1 Projektilaisten päiväkohtainen ajankäyttösuunnitelma 9
9.2 Projektin viikottainen aikataulu (arvio) 10
10. Sovelluksen testaussuunnitelma 10
1. Tiivistelmä
AIVO on tietotekniikan cum laude approbaturin projektityö, joka tehdään A. I. Virtanen-instituutille Kuopioon. Ryhmä toteuttaa Windows 3.1-ympäristöön sovelluksen, jolla graafisesti luotu NMR-sekvenssi muutetaan SMIS-C-kielelle (Pulse Programming Language (PPL)). Yhteyshenkilönä A. I. Virtanen-instituutilla toimii Johanna Silvennoinen.
2. NMR-sekvenssit ja niiden ohjelmoinnin ongelmat
Magneettikuvaus- ja spektroskopia perustuvat ydinmagneettiseen resonanssiin (NMR), joka tarkoittaa ytimien pyörimisakselien (spinien) yhdensuuntaistumista voimakkaassa magneettikentässä. Pyörimistä voidaan "ohjata" radiotaajuisilla pulsseilla, samoin ytimien palautuessa tasapainotilaansa emittoituu radiotaajuista säteilyä. Tämä säteily mitataan. Lisäksi näytteestä voidaan valita tiettyjä tasoja (slice), joihin viritys kohdistuu, sekä käydä tason pisteikkö läpi kuvan muodostamiseksi. Paikkaerotus saadaan aikaan erillisillä ns. gradienttikeloilla, joita käytetään myös herkistämään signaalia erilaisille dynaamisille ilmiöillle, kuten diffuusiolle. Gradientteja on kolme; x-, y- ja z-suuntaiset kelat.
Kuvan tai spektrin aikaansaamiseksi tarvitaan siis keskenään oikein ajastettuja radio- ja gradienttipulsseja, yhteensä siis neljällä eri kanavalla (RF, x, y, z) käynnistettyjä ja sammutettuja elementtejä. Lisäksi usein mitataan useita tasoja (slice), käytetään keskiarvoistusta ja niin edelleen. Koko mittausta ohjaavaa "suunnitelmaa" kutsutaan sekvenssiksi.
Mittauslaitteiston sekvenssit korjoitetaan ns. SMIS-C-kielellä, joka on syntaksiltaan C-kieltä, mutta huomattavasti rajoittuneempaa (mm. tietorakenteina on vain kokonaisluvut ja 1-ulotteiset "taulukot"). Lisäksi koodissa käytetään paljon SMISin omia makroja. Koodi sisältää mittauskäyttöliittymää ohjaavan osan, pulssien määrittelyt, ajastukseen liittyvää laskentaa ja varsinaisen mittausosan, joka usein sisältää silmukoita. Mittaustilanteessa käännetty koodi ladataan magneettia ohjaavaan ohjelmaan. Lisäksi erillisellä PARSETUP-ohjelmalla, joka lukee suoraan SMIS-C-koodia (sen kommentteja), voidaan muuttaa mittausparametreiksi määriteltyjen muuttujien arvoja. Osaa näistä (ns. common int -muuttujat) voidaan muuttaa myös mittauksen aikana.
Kun halutaan rakentaa uusi sekvenssi, valitaan pohjaksi yleensä jokin mahdollisimman lähellä haluttua oleva vanha koodi. Pulssien rakenne muutetaan halutuksi ja ajastusten laskenta korjataan vastaavasti. Tämä on aikaavievää, hankalaa ja koodin toiminta voidaan tarkistaa vasta mittauskonsolin ja oskilloskoopin avulla.
3. Tavoitteet
Projektin tavoitteena on siirtää NMR-sekvenssin ohjelmointi graafiseen ympäristöön.
Päätavoitteena on tehdä ohjelma, jolla luodaan haluttu sekvenssi graafisesti ja tämän esityksen pohjalta ohjelma generoi SMIS-C-koodia.
Ohjelman ominaisuuksiin kuuluu mm. sekvenssin muokkaaminen graafisesti, komponenttien leikkaaminen, liittäminen, paikkojen vaihtaminen jne. Käyttäjän tulisi pystyä antamaan ajastukseen liittyviä parametreja ja ohjelman täytyisi piirtää uutta tilannetta vastaava kaavio. Sekvenssin kaavioon tulee voida lisätä kommentteja tms. ja tulostaa se tai siirtää se tekstinkäsittelyohjelmaan.
Projektin aikataulun mahdollisesti salliessa ohjelmaan rakennetaan myös valmiin SMIS-C-koodin lukeminen ja konvertoiminen graafiseen muotoon.
4. Projektin resurssit
4.1 Henkilöresurssit
Projektiryhmä koostuu seuraavista Jyväskylän yliopiston matematiikan laitoksen tietotekniikan suuntautumisvaihtoehdon opiskelijoista:
- Sami Kärkkäinen,
- Tommi Lahtonen ja
- Marko Minkkinen.
Kukin projektiryhmän jäsen käyttää opintojakson puitteissa projektiin aikaa vähintään 200 tuntia.
4.2 Ohjausresurssit
Jyväskylän yliopiston matematiikan laitokselta projektin edistymistä ja opintojaksoa ohjaa Jukka-Pekka Santanen sekä sovelluksen ohjelmointia ohjaa Markku-Juhani Saarinen. Toimeksiantajan puolelta opastusta antaa Johanna Silvennoinen.
4.3 Materiaaliresurssit
Jyväskylän yliopiston matematiikan laitos osoittaa projektille huoneen sekä kaksi mikroa, jotka sisältävät tarvittavat ohjelmat (tässä viitataan Windows-käyttöjärjestelmään, Borland C++-kääntäjään ja Borland Delphi-sovelluskehittimeen.) Laitos vastaa myös projektin välittömistä kustannuksista.
A.I.Virtanen-instituutti antaa projektilaisten käyttöön SMIS-C-kääntäjän tarvittavien include-tiedostojen kera, valmiita SMIS-C-kielisiä koodinpätkiä sekä PARSETUP-ohjelman.
5. Toteuttaminen
Ohjelma rakennetaan toimimaan Windows 3.1:en alaisuudessa 486-tietokoneessa, koska tilaajan aiemmin käyttämät sovellukset vaativat nimenomaisen tyyppisen ympäristön. Varsinainen pääsovellus ohjelmoidaan Borlandin C++-Windows-kääntäjällä. Ohjelman avustus ja tarpeen vaatiessa muitakin osia rakennetaan Borland Delphi 1.0:lla. Testauksessa käytetään apuna SMIS-C:tä ymmärtävää PPL-kääntäjää.
6. Ohjelman sisäinen rakenne
Ohjelmoinnissa käytettävien C++-luokkien kaavioita.
Kuva 1. Näyttöön piirrettävien objektien perintähierarkia.
Kuva 2. SMIS-C-koodissa esiintyviä muuttujia vastaavat luokat.
Kuva 3. cSequence-luokka.
Kuvan 3 cSequence-luokka sisältää ohjelman sisäisen tietorakenteen.
Kuva 4. cTable-luokka.
Kuvan 4 cTable-luokka sisältää sen tietorakenteen, jota tarvitaan sekä SMIS-C-koodin luomiseen että pulssisekvenssien piirtämiseen. cTable-luokka osaa myös käsitellä sisältä-mänsä tietorakenteen.
Kuva 5. cParser-luokka SMIS-C-koodin tulkintaan.
Kuva 6. cAjastus-taulukko.
7. Käyttöliittymä
Ohjelman käyttöliittymä muodostuu pääikkunan sisällä olevista info-, koodi- ja editointi-ikkunoista. Lisäksi tulee useita erilaisia dialogeja, joissa pyydetään tarkempia tietoja sekvenssien muodostamisesta, ajastuksesta, ym. Päätoiminnot löytyvät menuista ja pääikkunassa olevasta työkalupalkista.
7.1 Menut
Kuva 1. Tiedostovalikko (File).
Ohjelman käyttö aloitetaan valitsemalla kuvan 1 tiedostovalikosta (File) joko uuden sekvenssin aloittaminen (New) tai aiemmin aloitetun sekvenssin jatkaminen (Open). Ohjelma osaa lukea omaa tiedostoformaattiaan ja jos aika antaa myöten niin ohjelmaa laajennetaan ymmärtämään myös käsintehtyä SMIS-C-koodia ainakin jossakin määrin.
Tiedostovalikosta (File) löytyy myös talletus- ja tulostusosat. Talletus (Save/Save as) tapahtuu joko SMIS-C-koodina (*.ppl) tai ohjelman omassa formaatissa (*.AIV). Tulostaa (Printer Setup, Page Setup, Print) voi joko SMIS-C-koodin tai sekvenssin graafisen esityksen. Export-valinnalla voidaan tallettaa sekvenssi kuvaformaatissa.
Kuva 2. Editointivalikko (Edit).
Kuvan 2 Editointivalikosta (Edit) löytyvät kaikki tavanomaiset toiminnot tiedon leikkaamiseen, kopioimiseen ja liittämiseen. Samoin löytyy Peru-toiminto (Undo)
Kuva 3. Lisäysvalikko (Insert).
Kuvan 3 lisäysvalikosta (Insert) voi valita sekvenssiin lisättävän komponentin. Valittavissa on joko tauolla (cDelay, ks. Kuva 1) tai ajastimella (cTimer, ks.kuva 1) toteutettu tauko/viive tai pulssi. Pulsseja on valittavissa joko RF-pulssi tai gradientti-pulssi. Lisättävän komponentin valinta aukaisee uuden dialogin, jossa kysytään tarkemmin komponentin ominaisuuksista.
Kuva 4. Ikkunavalikko (Window).
Kuvan 4 ikkunavalikko (Window) sisältää yleiset toiminnot ohjelman ikkunoiden järjestelyyn.
Kuva 5. Opastusvalikko (Help).
Kuvan 5 opastusvalikko (Help) myös perinteisen sisältöinen.
7.2 Parametrilistadialogi
Kuva 6. Parametrilistadialogi.
Alettaessa luomaan uutta sekvenssiä joudutaan ensimmäiseksi määrittelemään SMIS-C-koodin alussa olevat PARSETUP-ohjelman asetukset parametrilistadialogin avulla. Alasvetovalikosta saatavasta listasta valitaan halutun tyyppinen säätökomponentti ja painetaan ADD-painiketta. Ruudulle aukeaa dialogi, joka kysyy tarkemmat asetukset.
7.3 Editointi-ikkuna
Kuva 7. Editointi-ikkuna.
Parametrilistaikkunan jälkeen aukeaa kuvan 7 editointi-ikkuna. Uutta sekvenssiä luotaessa ikkunassa on aluksi pelkät RF-, SLICE-, READ- ja PHASE-viivat. Viivoille voidaan nyt lisäillä haluttuja pulsseja, taukoja, kommentteja yms.
Timing-painikkeella saadaan esiin ECHO-aikojen käsittelyyn tarkoitettu dialogi.
Paramlist Editor -painikkeella päästään editoimaan uudelleen PARSETUP-ohjelman parametreja.
Code Window -painikkeella aukaistaan kuvan 8 koodi-ikkuna (ellei se ole ennestään auki) ja siirrytään ohjelmalistauksen alkuun.
Compile To Forth -painikkeella käännetään tuotettu SMIS-C-koodi Forth:ksi.
Napauttamalla hiirellä objektia kaksi kertaa nopeasti voidaan hypätä suoraan vastaavaan kohtaan koodi-ikkunassa. Koodi-ikkunassa valittuun objektiin liittyvä ohjelman osa on tällöin esitettynä muusta tekstistä erottuvalla värillä.
Editointi-ikkunassa käsiteltävä objekti valitaan kerran hiirellä napauttamalla. Tällöin komponentin tarkemmat tiedot näkyvät info-ikkunassa.
7.4 Ajastusdialogi
Ajastusdialogissa hoidetaan tarvittavien ajastuslaskutoimitusten helppo lisääminen koodin sekaan.
7.5 Infoikkuna
Infoikkunassa on näkyvillä ja muokattavana halutun komponentin eksaktit tiedot (RF-pulssin pulssimuoto, gradienttipulssin korkeus ja pulssin kestoaika jne.).
7.6 Koodi-ikkuna
Koodi-ikkunassa (kuva 8) näkyy luotava SMIS-C-koodi. Koodi-ikkunassa ovat käytettävissä yleisimmät tekstinkäsittelytoiminnot. Käsinmuokkausta jouduttaneen ainakin joiltakin osin rajoittamaan. Kuvassa 8 käytetty WordPad-editoria.
Kuva 8. Koodi-ikkuna
8. Työnjako
Alustavan suunnitelman mukaan kaksi ryhmän jäsentä keskittyy ensimmäiseksi käyttöliittymän rakentamiseen ja yksi jäsen dokumentointiin ja avustus ohjelman rakentamiseen. Tehtäviä jaetaan yksityiskohtaisemmin kunkin ryhmän jäsenen taitojen mukaan projektin kuluessa.
9.1
Projektilaisten päiväkohtainen ajankäyttösuunnitelma on esitetty seuraavissa taulukoissa.
Sami Kärkkäinen
MA |
TI |
KE |
TO |
PE |
|
8 |
AIVO |
||||
9 |
AIVO |
||||
10 |
AIVO |
AIVO |
AIVO |
||
11 |
AIVO |
AIVO |
AIVO |
||
12 |
AIVO |
AIVO |
AIVO |
AIVO |
|
13 |
AIVO |
AIVO |
AIVO |
AIVO |
|
14 |
AIVO |
AIVO |
AIVO |
||
15 |
AIVO |
AIVO |
AIVO |
||
16 |
Tommi Lahtonen
MA |
TI |
KE |
TO |
PE |
|
8 |
|||||
9 |
AIVO |
AIVO |
AIVO |
||
10 |
AIVO |
AIVO |
AIVO |
||
11 |
AIVO |
AIVO |
AIVO |
||
12 |
AIVO |
AIVO |
AIVO |
AIVO |
|
13 |
AIVO |
AIVO |
AIVO |
AIVO |
|
14 |
AIVO |
AIVO |
|||
15 |
AIVO |
AIVO |
|||
16 |
Marko Minkkinen
MA |
TI |
KE |
TO |
PE |
|
8 |
|||||
9 |
|||||
10 |
AIVO |
AIVO |
|||
11 |
AIVO |
AIVO |
|||
12 |
AIVO |
AIVO |
AIVO |
AIVO |
AIVO |
13 |
AIVO |
AIVO |
AIVO |
AIVO |
AIVO |
14 |
AIVO |
AIVO |
AIVO |
AIVO |
|
15 |
AIVO |
AIVO |
AIVO |
AIVO |
|
16 |
Tarvittaessa töitä tehdään myös iltaisin ja viikonloppuisin.
9.2 Projektin viikottainen aikatauluarvio on seuraava
Viikko 4 Aiheen saaminen ja aiheiseen tutustuminen.
Viikko 5 Lisäaineistoon tutustuminen, esisuunnittelua.
Viikko 6 Esisuunnitelma valmis.
Viikko 7 Esisuunnitelman käytäntöönpanemista.
Viikko 8 Koodausta ja dokumentointia.
Viikko 9 Koodausta ja dokumentointia.
Viikko 10 Koodausta ja dokumentointia.
Viikko 11 Koodausta ja dokumentointia. Käyttöliittymä A.I.Virtanen-
instituuttiin testattavaksi
Viikko 12 Koodausta ja dokumentointia.
Viikko 13 Koodausta ja dokumentointia.
Viikko 14 Koodausta ja dokumentointia.
Viikko 15 Dokumentointia ja opponointitilaisuus.
Viikko 16 Dokumentointia ja loppuhiomista.
Viikko 17 Projekti valmis.
10. Sovelluksen testaussuunnitelma
Sovellusta pyritään testaamaan pala palalta ja edelleen tietyn ongelman osa-alueen valmistuessa testataan se erillisenä. Testaustilaisuuksia pyritään järjestämään myös A.I.Virtanen-instituuttiin.