Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:miw:2009:piw09_clp [2009/06/08 13:03]
piw09
pl:miw:2009:piw09_clp [2009/06/08 14:13]
piw09
Linia 134: Linia 134:
 | min(Expr,​Expr) ​ |  minimum of the two arguments |  | min(Expr,​Expr) ​ |  minimum of the two arguments | 
 | max(Expr,​Expr) ​  | maximum of the two arguments |  | max(Expr,​Expr) ​  | maximum of the two arguments | 
 +
 +
 + 
 +
 +Ograniczenia:​\\
 +
 +^Ograniczenia ^Opis ^
 +| Expr =:= Expr  | equation| ​    
 +| Expr  =  Expr  | equation| ​    
 +| Expr  <  Expr  | strict inequation |     
 +| Expr  >  Expr  | strict inequation| ​    
 +| Expr =<  Expr  | nonstrict inequation| ​    
 +| Expr >=  Expr   | nonstrict inequation |    ​
 +| Expr =\= Expr   | disequation |   
 +
 +
 +
 +Wyjątek pomiędzy bibliotekami stanowi predykat: **bb_inf/4 w CLP(Q) i bb_inf/5 w CLP(R)**.Predykaty te obliczają kres dolny wyrażenia. Różnią się jedynie tym, że dla liczb rzeczywistych określamy jeszcze ​ zakres dla którego liczba będzie zaokrąglana do liczby całkowitej.\\ ​
 +
 +Używanie dwóch bibliotek jest dozwolone w jednym programie, jednak trzeba je zadeklarować oddzielnie. Błędy w działaniu programu pojawiają się, gdy dla tych samych zmiennych stosujemy predykaty z różnych bibliotek.
 +
 + 
 +  ​
 + 
    
  
  
 ===== Wady CLP ===== ===== Wady CLP =====
 +Biblioteka CLP pomimo swojej złożoności ​ i wielu dodatkowych modułów ​ z których programiści mogą korzystać często nie wystarcza by szybko i wydajnie rozwiązywać złożone problemy.\\
 + W celu zmodyfikowania istniejących ograniczeń lub stworzenia nowych, dokładniejszych reguł został stworzony specjalny język programowania **CHR (z ang. Constraint Handling Rules)**, który umożliwia szybsze tworzenie programów i ich optymalizację. ​
 +
 ====== CHR -Constraint Handling Rules ====== ====== CHR -Constraint Handling Rules ======
 +
 +**CHR** jest __deklaratywnym językiem programowania__,​ który ​ został stworzony przez Thom Frühwirth w 1991 roku.  Jest używany jako język wysokiego poziomu do rozwiązywania takich problemów jak:
 +  *  weryfikacja danych
 +  *  rozumowanie abdukcyjne
 +  *  systemy wieloagentowe
 +  *  analiza języka naturalnego , czy kompilacji.\\
 + ​Język Constraint Handling Rules jest zaimplementowany w SWI-Prologu i dostępny od wersji 5.6.0.\\
 +\\
 +Dołączenie biblioteki następuje poprzez:
 +<​code>:​- use_module(library(chr)).</​code>​\\
 +
 +**Przykład:​** \\
 +Ponizszy przykład przedstawia zasadę działania CHR. Pokazuje w jaki sposób określić znak  nierówności ≤ (http://​www.sics.se/​sicstus/​docs/​3.7.1/​html/​sicstus_34.html#​SEC290):​\\
 +
 +<​code>:​- use_module(library(chr)).
 +
 +handler leq.
 +constraints leq/2.
 +:- op(500, xfx, leq).
 +
 +reflexivity ​ @ X leq Y <=> X=Y | true.
 +antisymmetry @ X leq Y , Y leq X <=> X=Y.
 +idempotence ​ @ X leq Y \ X leq Y <=> true.
 +transitivity @ X leq Y , Y leq Z ==> X leq Z.</​code>​
 +
 +Jak widzimy reguła składa się z 4 części : __zwrotności,​ antysymetrii,​ idempotentności i przechodniości__. Ich nazwy poprzedzają znak @, a po nich występują predykaty zdefiniowane przez użytkownika (heads), wbudowane (guards) lub oba rodzaje ograniczeń (body), definiujące własności relacji. \\
 +
 +
 +Ciekawy jest sposób wywołania funkcji:\\
 +<​code>?​- leq(X,Y), leq(Y,Z). </​code>​
 +
 +Jako wynik działania otrzymujemy Yes, co oznacza, że dla X≤Y, Y≤Z to **X≤Z**.
 +
 ===== Program z przykładami ===== ===== Program z przykładami =====
-==== Przykłady ==== 
 ==== Implementacja ==== ==== Implementacja ====
 +Projekt został napisany w Javie z wykorzystaniem SWI Prolog’u.
 +Funkcje, które realizuje aplikacja to:\\
 +* Obliczanie wartości silni
 +  * Obliczanie n-tego wyrazu ciągu Fibonacciego
 +  * Obliczanie pierwiastków równania kwadratowego
 +  * Obliczanie kolorów dla 6 zdefiniowanych państw
 +  * Problem plecakowy
 +  * Problem n-królowej
 +
 +
 +
 +
 +==== Interfejs użytkownika ====
 +Interfejs użytkownika został stworzony przy pomocy biblioteki SWING.\\
 +{{:​pl:​miw:​2009:​asia1.png|}}\\
 +Wynik działania dla problemu plecakowego:​\\
 +{{:​pl:​miw:​2009:​asia2.png|}}
 +
 ====== Sekwencjonowanie DNA ====== ====== Sekwencjonowanie DNA ======
 ===== Teoria ===== ===== Teoria =====
 +**Sekwencjonowanie DNA** to procedura w której odczytuje się dokładną kolejność zasad (A, C, T i G) tworzących cząsteczkę DNA.\\
 +Przykład sekwencji DNA (początek operonu laktozowege E. coli):\\
 +   <​code>​ GACACCATCGAATGGCGCAAAACCTTTCGCGGTATGGCATGATAGCGCCCGGAAGAGAGTCAATTCAGGG</​code>​\\
 +
 +Poniższy rysunek przedstawia etapy sekwencjonowanie DNA.\\
 +{{:​pl:​miw:​2009:​asia3.gif|}}\\
 +Źródło:​http://​www.scq.ubc.ca/​genome-projects-uncovering-the-blueprints-of-biology/​ \\
 +
 +Obecnie metoda odczytu została zautomatyzowana dzięki wykorzystaniu znakowanych fluorescencyjnie trifosforanów dideoksynukleotydów i pozwala na odczyt 300-1000 par zasad z jednej kapilary lub linii na żelu.\\
 +Autorem alternatywnej metody sekwencjonowania DNA, z wykorzystaniem specyficznej,​ chemicznej degradacji DNA, byli Walter Gilbert i Allan Maxam (metoda Maxama-Gilberta). Gilbert wraz z Frederickiem Sangerem otrzymali za to osiągnięcie nagrodę Nobla. Metoda Maxama-Gilberta obecnie jest rzadko stosowana.\\
 +Nowoczesne masowo równoległe aparaty do sekwencjonowania DNA są w stanie pracować z szybkością rzędu milionów par zasad na godzinę. Tranzystory polowe DNA umożliwiają użycie natywnego DNA w hybrydyzacji do mikromacierzy i odczyt w czasie rzeczywistym.\\
 +
 +**Diagnostyka genetyczna** jest prężnie rozwijającą się dziedziną, wykorzystującą najnowsze osiągnięcia technologiczne,​ naukowe, informatyczne i medyczne. ​ Dzięki postępowi który dokonał się w ostatnich latach możliwe jest przeprowadzenie badań i uzyskanie istotnych informacji medycznych wyprzedzających kliniczne pojawienie się schorzenia. Jest to bardzo istotny aspekt dla zdrowia pacjenta. Dzięki niemu może jeszcze przed pojawieniem się choroby- najczęściej śmiertelnej- jej zapobiec. Mając do dyspozycji narzędzie w postaci testów genetycznych można z dużym prawdopodobieństwem określić ryzyko zachorowania,​ uzupełnić i potwierdzić obecność dziedzicznego obciążenia genetycznego,​ a przede wszystkim rozpocząć odpowiednią terapię lub po prostu częściej przeprowadzać badania kontrolne. \\
 +Obecnie podczas testowania genetycznego możemy wykryć mutacje/​zmiany powodujące takie choroby jak na przykład:
 +• czerniak złośliwy\\
 +• rak piersi\\
 +• rak prostaty\\
 +• choroby nowotworowe\\
 +• HPV\\
 +• Rak tarczycy\\
 +• Mukowiscydoza\\
 +• Alzheimer\\
 +
 ===== Implementacja sekwencjonowania DNA w PROLOGu ===== ===== Implementacja sekwencjonowania DNA w PROLOGu =====
 ==== Wybór środowiska ==== ==== Wybór środowiska ====
 +Projekt został napisany w Javie z wykorzystaniem SWI Prolog’u.\\
 +Funkcje, które realizuje aplikacja to:\\
 +• Tworzenie komplementarnej nici DNA\\
 +• Porównywanie dwóch nici - czy są komplementarne\\
 +• Sprawdzanie,​ czy w sekwencji DNA znajduje się odpowiednia/​dowolna sekwencja\\
 +• Próba rozpoznawania mukowiscydozy\\
 +• Rozpoznawanie guzowatości korzenia na podstawie sekwencji DNA \\
 +• Rozpoznawanie błędów addycji/​delecji/​inwersji \\
 +
 +**Rozpoznawanie guzowatości korzenia na podstawie sekwencji DNA** \\
 +Rozpoznanie guzowatości korzenia( crown Gall tumor) następuje poprzez znalezienie sekwencji „TATA box”. TATA box jest to sekwencja w której znajdują się tylko zasady azotowe takie jak: adenina (A) oraz tymina (T). \\
 +TATA Box może mieć postać: TATA. TAATA, AATAATa,​AATATA,​ATATA\\
 +
 +**Rozpoznawanie ​ mutacji segmentowych -błędów addycji/​delecji/​inwersji** ​
 + 
 +Do __mutacji segmentowych/​punktowych__ zaliczamy- __addycję, delecję oraz inwersję__. Wszystkie z tych zmian charakteryzują się najczęściej występowaniem tych samych zasad azotowych obok siebie. Mutacje punktowe mogą powodować takie choroby jak:  albinizm, anemię sierpowatą czy hemofilię.\\
 +{{:​pl:​miw:​2009:​asia3.png|}}\\
 +Źródłow: Wykłady MSIB AGH  \\
 +**Porównywanie dwóch nici - czy są komplementarne** \\
 +Brak komplementarności nici powoduje mutacje np. nowotworowe i powoduje niewłaściwe kodowanie białek.\\
 +**Próba rozpoznawania mukowiscydozy**\\
 +Powodem mukowiscydozy jest mutacja odcinka genomu CFTR. Odcinek zmutowany nazywamy: ∆F508.
 +{{:​pl:​miw:​2009:​asia4.png|}}\\
 +Źródło: http://​genome.gsc.riken.go.jp/​hgmis/​posters/​chromosome/​cftr.html \\
 + 
 +
 +
 ==== Interfejs użytkownika ==== ==== Interfejs użytkownika ====
 +**Wybór środowiska** \\
 +Projekt ​ napisany w języku JAVA, przy użyciu biblioteki graficznej Swing zintegrowany z SWI Prolog. Program charakteryzuje się modułową budową, umożliwiającą dodawanie funkcjonalości (na przykład nowych sposobów ekstrakcji cech). \\
 +**Interfejs użytkownika** \\
 +Interfejs użytkownika powstał dzięki wykorzystaniu biblioteki Java Swing. Interfejs użytkownika składa się z siedmiu paneli i pozwala na intuicyjne poruszanie się między nimi. \\
 +
 +Po uruchomieniu aplikacji mamy możliwość zapoznania się z możliwościami aplikacji:
 +{{:​pl:​miw:​2009:​asia5.png|}}\\
 +Przykład dla nici komplementarnej:​\\
 +{{:​pl:​miw:​2009:​asia6.png|}}\\
 +
 +Przykład dla rozpoznawania sekwencji mukowiscydozy:​\\
 +{{:​pl:​miw:​2009:​asia7.png|}}\\
 +
 ====== Podsumowanie ====== ====== Podsumowanie ======
 +Prolog wykorzystuje szereg technologii w celu optymalnego rozwiązywania skomplikowanych problemów. Programista może skorzystać z CLP, CHR ale także z clpfd, clp_distinct,​ czy modułu Simplex. Pomimo tego, że Prolog został stworzony w 1971 roku nadal prężnie się rozwija i rozszerza moduły. ​ Prolog jest zaawansowanym a zarazem prostym językiem programowania. Umożliwia pisanie długich skomplikowanych programów w dosłownie kilku linijkach.\\
 +**Zastosowanie Prolog’a :**\\
 +
 +• Inteligentne Systemy - programy, które wykonują przydatne zadania przez używanie technik sztucznej inteligencji. \\
 +
 +
 +• Systemy ekspertowe - inteligentne systemy, które potrafią podejmować decyzje na poziomie ludzkiego eksperta. \\
 +
 +• Naturalne systemy językowe - które mogą analizować i odpowiadać na zadane pytania w formie zrozumiałej dla człowieka\\ ​
 +
 +• Systemy relacyjnej bazy danych \\
 +
 +**Ciekawe gotowe produkty:​**\\
 +
 +• “Expert System for Selecting Chemical Processing Agitators” (AstraZeneca) – system ekspertowy pomocny chemikom przy mieszaniu różnych substancji\\
 +
 +• "Tax Assistant” (VerTec Solutions) – asystent podatkowy \\
 +
 +• Intelligent Testing (Pacific AI) – narzędzie do treningu i testowania wiedzy (np. studenta) \\
 +
 +• Virtual Pal - First Seamless Natural Language Self-Help (APIIT ) – Ekspert pomagający na stronie WWW \\
 +
 +• Breast Cancer Decision Guide – Internetowy doradca w sprawach raka piersi \\
 +
 +• Configuration Advice (Xircom Inc.) – Doradca w sprawach konfiguracji sprzętu komputerowego \\
 +
 +• FleetPlan – system ekspercki dla sieci lotniczych, który ostatecznie ma „zwiększyć” zyski firmy lotniczej \\
 +
 +• PDC-Booking - system skutecznego zarządzania zasobami całego szpitala (wykorzystanie personelu, sprzętu, pokojów,​etc.) \\
 +
 +
 +====== Źródła ======
 +===== Dokumentacja =====
 +===== Źródła kodów =====
 +  - Źródło dla aplikacji -przykłady\\
 +{{:​pl:​miw:​2009:​prolog.rar|}}\\
 +  - Źródło dla aplikacji -sekwencjonowanie DNA\\
 +{{:​pl:​miw:​2009:​sekwencjonowanie.rar|}}\\
 +
 +
 +
  
  
pl/miw/2009/piw09_clp.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0