Prezentare Gaudi Viewer

download Prezentare Gaudi Viewer

If you can't read please download the document

description

Prezentare Gaudi Viewer. Cuprins. Introducere. Am dezvoltat pachetul Gaudi Viewer in cadrul grupului "Core Software Grup", grupul IT responsabil de dezvoltarea software pentru proiectul LHCb - PowerPoint PPT Presentation

Transcript of Prezentare Gaudi Viewer

  • Prezentare Gaudi Viewer*Gaudi Viewer Radu Stoica*

  • Cuprins*Gaudi Viewer Radu Stoica*

  • IntroducereAm dezvoltat pachetul Gaudi Viewer in cadrul grupului "Core Software Grup", grupul IT responsabil de dezvoltarea software pentru proiectul LHCbAplicatia este menita sa vina in ajutorul utilizatorilor in interactia dintre acestia si pachetele dezvoltate pe framework-ul Gaudi Prezentarea este compusa din 3 parti: - Prezentarea caracteristicilor Gaudi pe care se bazeaza aplicatia - Prezentarea propriu-zisa - Demostratie si screenshot-uri*Gaudi Viewer Radu Stoica*

  • Organizarea pachetelor softwareLCHbExista 4 pachete mari de cu functii complementare: - Gauss (simulare) - Boole (digitizare) - Brunel (reconstructie) - DaVinci (analiza date)Toate pachetele sunt dezvoltate pe frameworkul Gaudi ce ofera functionalitate comuna si impune o anumita filozofie software*Gaudi Viewer Radu Stoica*

  • Notiuni generale software LHCb*Gaudi Viewer Radu Stoica*

  • Standardizarea claselorExista 4 tipuri mari de clase (functionalitatea comuna este implementata prin mostenire): - Algoritmi (clasa cea mai importanta ce realizeaza prelucrarea propriu-zisa a datelor) - Servicii (numite si store-uri se ocupa de getionarea Datelor) - Date (informatiile folosite de algoritmi) - Tool-uri (echivalentul algoritmilor traditionali)*Gaudi Viewer Radu Stoica*

  • Principiul blackboardNici un Algoritm nu trebuie sa gestioneze DateNici un Algoritm nu trebuie sa interactioneze cu alti AlgoritmiAccesul la date (inclusiv scrierea se face) cu ajutorul diverselor tipuri de serviciiServiciile gestioneaza Datele (le gestioneaza si elibereaza memoria cand nu mai sunt necesare)Toate accesele se fac pe baza numelor ierarhice (filozofie POSIX)*Gaudi Viewer Radu Stoica*

  • Principiul blackboardBeneficii:Este mult mai usoara impartirea in unitati mici a efortului de dezvoltare software intre diversele echipe existente.

    Este permis lucru cu mai multe versiuni simultan pentru acelasi pachet

    *Gaudi Viewer Radu Stoica*

  • Prezentare Gaudi Viewer*Gaudi Viewer Radu Stoica*

  • Motivul dezvoltarii pachetului In general modul de dezvoltare, utilizarea a unei aplicatii bazate pe Gaudi este dificil de inteles (fisiere .opts)Un job obisnuit este de dimensiuni mari (poate dura ore/zile). Nu exista control!Metodele de logare sunt dificil de folosit. Rezulta ori logg-uri trunchiate (dimensiuni mai mici) ori logg-uri foarte mari => nefolosibile practicConfuzia utilizatorilor obisnuiti privind modul de configurare initiala a aplicatiilor (CMT)

    *Gaudi Viewer Radu Stoica*

  • Scopul Gaudi ViewerVizualizare ierarhiilor de date oferite de diversele servicii existente Afisarea continutului relevant din punct de vedere fizic al obiectelor de tip Data.Posibilitatea de a vizualiza propietatile fiecarui serviciu/algoritm existentControlul aplicatiei. Aplicatia trebuie sa poata fi (re)pornita/oprita la dorinta utilizatorului. In plus este util daca anumite obiecte pot fi reconfigurate si executia reluata

    *Gaudi Viewer Radu Stoica*

  • Scopul Gaudi ViewerPosibilitatea vizualizarii directe a diverselor tipuri de persistenta utilizate (baze de date, fisiere de evenimente .dst, .sim, ".digi"). In cazul in care utilizatorul doreste numai vizualizarea acestor date el nu mai este obligat sa creeze fisiere .opts specializate ci doar sa indice calea catre fisierePosibilitatea tiparirii, copierii informatiilor vizualizate independent de platforma si GUI-ul folosit - Interceptarea output-ului catre stdout al aplicatiei si aplicarea de diverse filtre la cerinta utilizatorului pentru a usura interpretarea acestora

    *Gaudi Viewer Radu Stoica*

  • Modul de realizare*Gaudi Viewer Radu Stoica*

  • Limbajele si bibliotecile folositeMarea majoritate a codului este scris in Python. Avantajele acestui limbaj, raportate la software-ul existent, sunt:

    Este un limbaj pur orientat obiect, de nivel mai inalt ca C++, interpretat si dynamic typed. Este cu adevarat independent de platformaLimbajul Python permite rularea in mod interactiv, ceea ce ofera utilizatorului posibilitatea de a experimenta intr-un mod foarte usor. In plus limbajul are sintaxa creata special cu scopu de a fi foarte clara si in acelasi de a minimiza efortul de tastare.*Gaudi Viewer Radu Stoica*

  • Limbajele si bibliotecile folositeAcest limbaj pemite importarea si rularea bibliotecilor create in diverse alte limbaje ca C/C++ si nu numai. Astfel poate fi folosit ca un mijloc de lipire a diverselor parti componente ale unei aplicatii, chiar daca au fost scrise in limbaje diferite.Exista un nou proiect de create a unui utilitar numit REFLEX, bazat pe librariile BOOST ce ofera posibilitatea incapsularii de cod C/C++ in module python. Posibilitatea de prototyping foarte rapida in acest limbaj

    *Gaudi Viewer Radu Stoica*

  • Limbajele si bibliotecile folositeInterfata grafica este realizata folosind bibliotecile grafice Qt (specifice Linux) dar portabile si pe alte sisteme de operare ca Windows sau Mac. Versiunea folosita este 3.X, acesta versiune putand fi folosita gratuit sub o licenta GPL.

    Qt-ul are bindig-uri pentru Python ce sunt disponibile sub forma unui modul (PyQt.) Acesta permite utilizarea tuturor form-urilor/widget-urilor in Python cu toate ca acestea sunt implementate in C++. In acest fel se poate obtine o interfata rapida si in acelasi timp usor de intretinut

    *Gaudi Viewer Radu Stoica*

  • Limbajele si bibliotecile folositeIn afara de Qt mai sunt folosite si utilitarele sale complementare: - SIP generarea modului PyQt - Designer (pt crearea widget-urilor) - Assistant (documentatia)O parte mica din cod este scrisa in C++ pentru a facilita comunicatia intre cele 2 limbaje (exemplu: interceptarea stream-urilor C++)*Gaudi Viewer Radu Stoica*

  • Interactia cu software-ul LHCb - Deoarece aplicatia trebuie sa poata fi folosita pentru TOATE pachetele software LHCb => este folosita numai interfata oferita de Gaudi expusa in Python prin pachetul GaudiPython- Astfel dependentele pachetului sunt reduse la minimum, acesta putand fi folosit oricand si in orice conditii*Gaudi Viewer Radu Stoica*

  • Mod de codare - In general este folosit in codul scris intro-inspectia dinamica a obiectelor. Acest lucru permite afisarea/lucrul cu diversele obiecte existente fara sa se foloseasca cunostiinte apriori despre acestea. - Cod mult mai usor de intretinut si mai generic*Gaudi Viewer Radu Stoica*

  • Divizarea pachetului, ierarhia de claseDin punct de vedere al structurii pachetului, acesta este compus din directoarele: - cmt: director standard de configurare al aplicatiei - python: scripturile python - doc: documentatia - designs: fisierele XML .ui folosite pentru generarea widget-urilor prin aplicatia DesignerContributia de cod C++ a fost integrata direct in pachetul Gaudi Python (cateva fisiere)*Gaudi Viewer Radu Stoica*

  • Divizarea pachetului, ierarhia de claseScripturile Python existente sunt: - Gaudi.py - scriptul principal. Acesta este apelat direct. - viewer.py - scriptul ce ofera partea grafica a aplicatiei - setenv.py modul ce poate fi importat direct pentru a putea modifica imaginea procesului initial - xyzWidgetDesign.py contin clase generate automat (folosind pyuic) pe baza specificatiilor din fisierelor .ui din directorul designs *Gaudi Viewer Radu Stoica*

  • Divizarea pachetului, ierarhia de clase - xyzWidget.py in general aceste fisiere contin clase ce mostenesc, pentru a masca, codul automat generat din fisierele xyzWidgetDesign.py - fisiere C++ .h si .cpp (header-e si implementari) sunt incluse in Gaudi Python

    *Gaudi Viewer Radu Stoica*

  • Divizarea pachetului, ierarhia de claseIerarhia de clase (importante):

    *Gaudi Viewer Radu Stoica*

  • Divizarea pachetului, ierarhia de clase Functia claselor importante:

    gaudimain clasa destinata utilizatorilor finali. Aceasta ofera interpretarea optiunilor din linie de comanda, posibilitatea de configurare dinamica a aplicatiei si ascunde de utilizator detaliile claselor ThreadManager, AppMgr, Viewer. ThreadManager clasa ce ofera posibilitatea intreruperii aplicatiei in momentul dorit de utilizator. Se folosesc modulele Python threading si signal ce permit multithreading-ul independent de platforma si sincronizarea prin intermediul claselor Event (notiune foarte apropiata de mutex-ul clasic). In plus sub Linux se ofera posibilitatea de a opri aplicatia folosind mesaje (semnalul default este SIGINT) chiar daca modul de debug nu este initializat de la inceput. Acest lucru este util pentru job-urile de dimensiuni mari.*Gaudi Viewer Radu Stoica*

  • Divizarea pachetului, ierarhia de clase Viewer clase ce permite vizualizarea informatiilor aplicatiei. Partea grafica nu poate rula simultan cu partea de vizualizare. In general obiectele vizualizate nu au durata de viata egala cu a aplicatiei iar dictionarele de python nu pot sesiza acest lucru iar un apel (folosire pointer) catre o zona de memorie dealocata rezulta, in cazul cel mai probabil, in terminarea aplicatiei (segmentation fault) Converter - clasa ce incapsuleaza functiile de conversie a tuturor obiectelor in informatii utile pentru afisare grafica

    *Gaudi Viewer Radu Stoica*

  • Modul de utilizare In general Gaudi Viewer poate fi folosita ca orice pachet existent: getpack GaudiViewer v1r0 cd GaudiViewer/v1r0/python python Gaudi.py d -f
  • Modul de utilizare Interfata grafica poate fi folosita si separat de modulul de control import sys, os from qt import * import gaudimodule, gaudiviewer

    guiApp = QApplication(sys.argv) QObject.connect( guiApp, SIGNAL("lastWindowClosed()"), guiApp, SLOT ("quit()") ) appMgr = gaudimodule.AppMgr(outputlevel=3) viewer = gaudiviewer.Viewer(appMgr) guiApp.setMainWidget(viewer) viewer.show() viewer.validate() guiApp.exec_loop()

    *Gaudi Viewer Radu Stoica*

  • ExempleAm rulat un fisierul standard de optiuni al DaVinci (v16r0):

    python -i Gaudi.py -d -f ../DaVinci.opts

    Initial mediul de lucru nu este initializat corespunsator => va apare widget-ul pentru selectarea proiectului impreuna cu versiunea dorita: *Gaudi Viewer Radu Stoica*

  • *Gaudi Viewer Radu Stoica*

  • Apoi va fi pornita interfata grafica ce va permite afisarea diverselor informatii relevante:

    *Gaudi Viewer Radu Stoica*

    ************************************************************