AIVO

Cum laude approbatur työprojekti

 

ESISUUNNITELMA

14.2.1997

 

 

työryhmä:

Sami Kärkkäinen

Tommi Lahtonen

Marko Minkkinen

 

 

 

 

 

 

 

SISÄLLYSLUETTELO

 

 

  1. Tiivistelmä 1
  2.  

  3. NMR-sekvenssit ja niiden ohjelmoinnin ongelmat 1

 

  1. Tavoitteet 2
  2.  

  3. Resurssit 2

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.

 

  1. Arvio viikottaisesta aikataulusta

 

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.