Užduoties idėja yra palyginti PDB struktūras, išspręstas keliais metodais, panaudojant versijų valdymo (svn), darbo srautų (worfklow) aprašymo (make) ir skaičiavimo automatizavimo (perl, bash) priemones, išnagrinėtas šiame kurse. Pagrindinis tikslas yra jums visiems pažiūrėti, kaip atkartojami skaičiavimai gali būti atlikti ir dokumentuoti šiomis sistemomis. Mokslinė intriga (klausimas) šioje užduotyje yra tokia: ar skirtingais metodais gauti makromolekulių modeliai neprieštarauja vienas kitam, t.y. ar jie mums pasako suderinamą informaciją apie tuos pačius biologinius objektus? Aišku, skirtumai bus, bet jie neturi būti dideli. Šie nedideli skirtumai tarp modelių parodys metodų atsitiktines ir gal net sistemines paklaidas. Kad tai pamatyti, reikia atsirinkti eilę objektų (makromolekulių), surasti jų skirtingais fizikiniais metodais gautus modelius PDB ir palyginti šių modelių skirtumus. Šiame laiške nebandysiu pateikti detalizuotų instrukcijų, kurias sekdami/-os pažingsniui gausite gerą rezultatą; išdėstysiu bendrus principus ir reikalavimus (desiderata), o detalius žingsnius turite sugalvoti Jūs. Su šio semestro kurso įgūdžiais turėtumėte gebėti tai padaryti :), bet reikės įdėti pastangų. Čia reikia pabrėžti, kad tikslas *nėra* vien tik kažkokiu būdu gauti rezultatus apie modelius, ir nėra tikslas nesvarbu kokiomis priemonėmis gauti atsakymą į mokslinį klausimą, ypač, jei tos priemonės buvo Jums žinomos jau prieš kursą ir tai vienintelis dalykas, ką Jūs žinote. Turite parodyti, ką išmokote per šį semestrą. Bet to, svarbu (tai viena iš mano kurso žinučių Jums ;), kad Jūsų skaičiavimai būtų atkartojami, ir kad būtų galima atsekti, iš kur ir kokiais metodais gauti duomenys, t.y. žinoma duomenų kilmė (angl. data provenance). Todėl nebus gerai, jei paimsite tiesiog kažkokį Web saitą ar jau kažkieno (gal net ChatGPT) paruoštą programą ar skriptą ir nesigilindami gausite rezultatą. Turite suprasti kiekvieną žingsnį ir gebėti jį savarankiškai atlikti ir paaiškinti. NB. RCSB PDB Web puslapio paieška, naudojanti kelis metodus, (pvz. „Experimental Method = "X-RAY DIFFRACTION" AND Experimental Method = "SOLUTION NMR"“ [1], duos ne tai, ko Jums reikia). Atsakymas į Jums iškeltą klausimą gaunamas, atlikus kelis žingsnius: 1. Duomenų radimas. Kaip minėjau, duomenis, ko gero, geriausia parsisiųsti lentelių pavidalu iš wwPDB FTP archyvo [2]. Sekas rasite sekų faile [3]. Šis failas pats didžiausias iš pateikiamų, todėl reikia jį parsisiųsti ir laikyti diske suglaudintą (supakuotą). Išskleisti jo į atskirą failą jokiu būdu nereikia, naudokite Unix konvejerius; pvz. surasti visus unikalius PDB identifikatorius galite komanda: > saulius@kukutis demo/ $ zcat pdb_seqres.txt.gz | awk '{print toupper(substr($0,2,4))}' | sort | uniq | wc -l > 261361 Analogiškai Unix konvejeryje galite gauti sekas, susietas su PDB identifikatoriais. Toliau Jums reikės lentelės, kurioje susieti PDB įrašai (identifikatoriai) ir metodai, kuriais išspręstos struktūros. Aš vėl naudočiau wwPDB FTP archyve pateikiamus sąrašus, pvz. [4]. Iš šio šaltinio gausite lentelę, kuri pateikta TSV formatu [5], išskyrus pirmas dvi eilutes ;), tokius failus patogu apdoroti Unix CLI (pvz. „awk -F"\t"“ arba perl funkcija „split("\t", $_)“). Bet galite nueiti ir į interaktyvią PDB svetainę ir paieškos formoje surasti reikiamais metodais išspręstus struktūrų sąrašus. Geriausia parsisiųsti arba tiesiog PDB identifikatorių sąrašus, arba CSV [6] formato failus su identifikatoriais ir papildoma informacija. Paversti CSV failus į lengviau apdorojamą CLI TSV formatą galite kad ir „csv2tab“ programėle, kuri naudoja Perl5 modulį „Text::CSV“ (jį galite įsidiegti komanda „apt-get install libtext-csv-perl“ Debian tipo sistemose (Debian, Ubuntu, MintLinux) arba „cpan -i Text::CSV“ Jūsų namų direktorijoje, jei sukonfigūruotas CPAN). Kokiu būdu besiųstumėte duomenis, būtinai reikia užregistruoti duomenų kilmę (angl. data provenance). Duomenų kilmė, mažų mažiausia, turi nurodyti: a) duomenų šaltinio URL, pvz. Web resurso URL, iš kurio siuntėte duomenis; b) siuntimo datą ir laiką; galite gauti Ubuntu ar Debian Linux komanda „date -Imin“; MacOS taip pat veikia komanda „date“, tik su kiek kitokia opcija. Be to, jei yra, reikia nurodyti c) duomenų autorių/-ius; tai gali būti kolektyvinis autorius, pvz. „PDB“; d) duomenų failo ar duomenų bazės versiją ar reviziją, jei bazė versijuojama (pvz. COD galima nurodyti „http://www.crystallography.net/cod/1563123.cif@282068“ cituojant ar nukeliant COD įrašo 1563123 reviziją 282068 CIF formatu). e) Duomenų rinkinio ar failo pavadinimą f) paminėti pradinę publikaciją, kurioje šis rinkinys buvo paskelbtas. Jums punktų (c)–(e) registruoti nereikia, nebent tą galimų būtų automatiškai ir nesunkiai gauti PDB užklausose. Jei naudojate CLI įrankius, (a) ir (b) informacijos vienetus galite nesunkiai užrašyti, naudodami „directory-metadata“ [8] ir „date -Imin“ komandas: > (set -x; directory-metadata; wget https://files.wwpdb.org/pub/pdb/derived_data/pdb_seqres.txt.gz; date -Imin) 2>&1 | tee pdb_seqres.txt.gz.log arba > (set -x; directory-metadata; curl -sSL --fail https://files.wwpdb.org/pub/pdb/derived_data/pdb_seqres.txt.gz > pdb_seqres.txt.gz; date -Imin) &> pdb_seqres.txt.gz.log Jei naudojate interaktyvią naršyklę, užrašykite į failą plėtiniu ".url" nukėlimo adresą (jei tai paieškos variklio atsakymas, pažiūrėkite, ar galite gauti ir užklausos eilutę (query string), kurią panaudoją naršyklėje, atkartotumėte paieškos rezultatą. Pvz. iš mano literatūros paieškų visai neseniai: > saulius@kukutis stereochemistry-papers/ $ (FILE=kryptoracemates.query; echo MailScanner has detected a possible fraud attempt from "europepmc.org" claiming to be "https://europepmc.org/search?query=kryptoracemates" > $FILE; date -Imin >> $FILE) > saulius@kukutis stereochemistry-papers/ $ cat kryptoracemates.query > https://europepmc.org/search?query=kryptoracemates > 2023-12-15T15:00+02:00 arba galite nurodyti šią informaciją bendrame sąraše, TXT arba CSV formate, panašiai kaip mano pacituotoje PDB užklausoje [1]. Visiems failams suteikite prasmingus plėtinius (kartais vadinamus „prievardžiais“): ".txt", ".csv", ".tsv", ".tab", ".url", ".query", ar bent jau ".dat"; nesuverskite skirtingų failų į vieną krūvą vienoje direktorijoje; pasirūpinkite, kad juos būtų galima lengvai atskirti ir surasti. Visą surastą informaciją versijuokite Subversijos repozitorijoje. Galima iš bėdos naudoti ir Git, bet Git neleis Jums atstatyti laiko žymių be papildomų įskiepių, o failų suradimo laikai šiuo atveju yra svarbūs. 2. Iš surastų ir nukeltų duomenų failų sugeneruokite rezultato lenteles, kuriose būtų tie PDB identifikatoriai, kuriuose viena ir ta pati seka išspręsta skirtingais, Jums paskirtais metodais. Sudėkite visus surastus failus (identifikatorių sąrašus, CSV failus, TSV failus) ir jų metaduomenis (nukėlimo LOG failus, kilmės failus) direktorijoje „inputs/“. Jums paskirtų metodų sąrašą taip pat įkelkite kaip pradinė tekstinį failą, kiekvieną metodą užrašykite atskiroje eilutėje. Parašykite Makefile'ą, kuris imtų šiuos pradinius sąrašus, sugeneruotų tarpines lenteles, kur kiekvienai sekai nurodytas įrašo, iš kurio ji atėjo, PDB ID; kitą failą, kuriame būtų susieti PDB ID ir metodai, kuriais išspręsto struktūros. Tada galėsite sujungti sekų ir struktūrų failus pagal PDB ID, ir sužinoti, kokios sekos struktūra išspręsta kokiais metodais. Galite ir pafantazuoti; pvz. viena studentė nutarė pasirinkti tik baltymų sekas – tai legit ir įdomus klausimas, bet, žinoma, pasirinkimą reikia gerai dokumentuoti (1-me arba 2-me žingsnyje). Sujungti tarpinius failus galite Unix „join“ komanda; galite pabandyti mano pasirašytą „apvalkalą“ TSV failams su antraštėmis, „tsv-hdr-join“ [9]. Jūsų Makefile'as turi sudėti rezultatus (tiek tarpinius failus, tiek galutines lenteles) direktorijoje „outputs/“. Prie tarpinių ir galutinių failų siūlau dėti laiko žymes, geriausia kaip pirmą komentaro eilutę, tada juos lengva pastebėti ir atskirti„tail -n +2“ komanda: > (OUTPUT=outputs/entries_X-RAY.tsv; mkdir -vp $(dirname ${OUTPUT}); date +"%F %T %Z" > ${OUTPUT}; awk -F$'\t' 'NR > 2 && $NF ~ /X-RAY/ {print}' entries.idx >> ${OUTPUT}) > saulius@kukutis demo/ $ tail -n +2 outputs/entries_X-RAY.tsv | wc -l > 181021 (žinoma, nekopijuokite šių komandų aklai; parašykite tinkamas Make taisykles ir receptus!) Rezultate turi gautis galutinis failas, kuriame bus PDB ID sąrašai ir eksperimentiniai metodai, panaudoti kiekvienos sekos struktūrai nustatyti. Nepamirškite .PHONY tikslų „all“, „clean“ ir „distclean“. 3. Patikrinkite savo rezultatus ir atsakykite į klausimus (iš esmės, teisingai atlikus skaičiavimus, į pirmus tris klausimus Jums turi padėti atsakyti komanda „wc -l“. Galite padarti paskutinę Make taiskylę, kuri sugeneruotų failą „outputs/RESULT.TXT“ (ar .CSV, .TSV), kuriame būtų šie skaičiai su atitinkamu tekstiniu paaiškinimu): - kiek struktūrų (PDB įrašų) išspręsta Jums pasiūlytais metodais? - kiek sekų išspręsta įvairiais metodais? - kiek sekų išspręsta visais Jums tekusiais metodais? - kodėl vienais metodais išspręsta daugiau struktūrų, o kitais – mažiau? Kaip tai susiję su metodų istorija, fizikinėmis sąvybėmis? - kodėl, paieškojus PDB Web psl. „Experimental Method = "X-RAY DIFFRACTION" AND Experimental Method = "SOLUTION NMR"“ [1] gaunama viena vienintelė struktūra, o sekų, kurios išspręstos ir X-RAY DIFFRACTION, ir SOLUTION NMR metodais yra virš 900? Kuo šios užklausos skiriasi. Dar maniau, kad spėsite padaryti ir 3D struktūrų palyginimą, bet dabar matau, kad šiam kurso etapui to bus per daug. Todėl toliau surašyto 4 etapo daryti nereikia; be jei kas padarėte ar kam įdomu, tai bus bonus-track extra credit :). O apskritai apie 3D struktūrų analizę, tame tarpe ir užklojimą, kalbėsime kitame semestre, tad 4-jį žingsnį pasilikime kitiems metams. Bet, kadangi jį jau čia aprašiau, tekstą palieku: Išvadas ir procesą aprašykite tyrimo ataskaitoje, nepamirškite tinkamų rankraščio metaduomenų (pavadinimo, autoriaus/-ės, metų), tinkamo proceso aprašymo (tokio, pagal kurį būtų galima procesą atkartoti), ir tinkamo šaltinių (pradinių straipsnių, duomenų rinkinių ir programų) citavimo. Tikiuosi, šis aprašymas pagelbės Pagarbiai, Saulius -------------- BONUS TRACK: 4. Nors tolimesnei analizei reikėtų irgi Makefile'o ir automatinių taisyklių išsamiai (angl. exhaustive) analizei, supaprastinkime tolimesnį procesą. Pasirinkite po vieną PDB failą, kuriame viena ir ta pati seka yra išspręsta skirtingais metodais. Sukurkite savo darbinėje direktorijoje (ten, kur yra Makefile) subdirektoriją: „svn mkdir --parents analysis/by-hand/$(date +%F)“ ar pan. Įkelkite pakeitimą į repo; Pereikite į šią direktoriją („cd analysis/by-hand/$(date +%F)“). Nukelkite joje iš PDB archyvo pasirinktus PDB failus (PDB arba PDBx formatais). Nukelkite dar dvi kitas tos pačios sekos struktūras, išspręstas X-RAY DIFFRACTION metodu. Nukėlimą dokumentuokite priemonėmis, aprašytomis 1-me punkte. Pažiūrėkite failus Jmol, Ramol arba Pymol programomis ir PDB interaktyvaus Web puslapyje įskiepiu. „Uždėkite“ Jūsų tiriamos sekos struktūras, gautas skirtingais metodais, vieną ant kitos, pvz. Jmol ar kita programa [10]. Koks Jūsų struktūrų RMSD [10]? Padarykite tą patį skirtingoms X-RAY struktūroms. Koks RMSD gaunamas tada? Koks būtų visiškai nesusijusių struktūrų RMSD? Kuriose struktūros (sekos) vietose atitikimas geriausias, kuriose – blogiausias? Kokią išvadą galite padaryti apie struktūrinės biologijos metodų patikimumą ir tikslumą? Išvadas ir procesą aprašykite ataskaitoje, nepamirškite tinkamų rankraščio metaduomenų (pavadinimo, autoriaus/-ės, metų), tinkamo proceso aprašymo (tokio, pagal kurį būtų galima procesą atkartoti), ir tinkamo šaltinių (pradinių straipsnių, duomenų rinkinių ir programų) citavimo. Nuorodos: [1] RCSB PDB. Advanced Search Query Builder. QUERY: Experimental Method = "X-RAY DIFFRACTION" AND Experimental Method = "SOLUTION NMR". URL: https://www.rcsb.org/search?request=%7B%22query%22%3A%7B%22type%22%3A%22group%22%2C%22logical_operator%22%3A%22and%22%2C%22nodes%22%3A%5B%7B%22type%22%3A%22group%22%2C%22logical_operator%22%3A%22and%22%2C%22nodes%22%3A%5B%7B%22type%22%3A%22group%22%2C%22nodes%22%3A%5B%7B%22type%22%3A%22terminal%22%2C%22service%22%3A%22text%22%2C%22parameters%22%3A%7B%22attribute%22%3A%22exptl.method%22%2C%22operator%22%3A%22exact_match%22%2C%22negation%22%3Afalse%2C%22value%22%3A%22X-RAY%20DIFFRACTION%22%7D%7D%5D%2C%22logical_operator%22%3A%22and%22%7D%2C%7B%22type%22%3A%22group%22%2C%22nodes%22%3A%5B%7B%22type%22%3A%22terminal%22%2C%22service%22%3A%22text%22%2C%22parameters%22%3A%7B%22attribute%22%3A%22exptl.method%22%2C%22operator%22%3A%22exact_match%22%2C%22negation%22%3Afalse%2C%22value%22%3A%22SOLUTION%20NMR%22%7D%7D%5D%2C%22logical_operator%22%3A%22and%22%7D%5D%2C%22label%22%3A%22text%22%7D%5D%7D%2C%22return_type%22%3A%22entry%22%2C%22request_options%22%3A%7B%22paginate%22%3A%7B%22start%22%3A0%2C%22rows%22%3A25%7D%2C%22results_content_type%22%3A%5B%22experimental%22%5D%2C%22sort%22%3A%5B%7B%22sort_by%22%3A%22score%22%2C%22direction%22%3A%22desc%22%7D%5D%2C%22scoring_strategy%22%3A%22combined%22%7D%2C%22request_info%22%3A%7B%22query_id%22%3A%2205bc09205e2c018fc8fb736c39f70662%22%7D%7D [žiūrėta 2023-12-15T12:45+02:00]. [2] PDB - FTP Archive over HTTP. URL: https://files.wwpdb.org/pub/pdb/ [žiūrėta 2023-12-15T13:02+02:00], pasiekiama per https://www.wwpdb.org/ftp/pdb-ftp-sites [žiūrėta 2023-12-15T13:03+02:00]. [3] PDB - FTP Archive over HTTP, pdb_seqres.txt.gz. URL: https://files.wwpdb.org/pub/pdb/derived_data/pdb_seqres.txt.gz [žiūrėta 2023-12-15T13:15+02:00]. [4] PDB - FTP Archive over HTTP, entries.idx. URL: https://files.wwpdb.org/pub/pdb/derived_data/index/entries.idx [žiūrėta 2023-12-15T13:45+02:00]. [5] Library of Congress. TSV, TAB-separated values. (2021) URL: https://www.loc.gov/preservation/digital/formats/fdd/fdd000533.shtml [žiūrėta 2022-05-12T14:39+03:00]. [6] Library of Congress. CSV, Comma separated values (RFC 4180). (2021) URL: https://www.loc.gov/preservation/digital/formats/fdd/fdd000323.shtml [žiūrėta 2022-05-12T14:28+03:00]. [7] Saulius Gražulis. Programa „csv2tab“, rev. 799 (2022) URL: https://saulius-grazulis.lt/~saulius/scripts/csv2tab [žiūrėta 2023-12-15T14:20+02:00]. Repozitorija (svn info): Name: csv2tab Working Copy Root Path: /home/saulius/scripts URL: svn://saulius-grazulis.lt/scripts/csv2tab Relative URL: ^/csv2tab Repository Root: svn://saulius-grazulis.lt/scripts Repository UUID: a41d18ea-2314-0410-90cb-ebc18a6e8e91 Revision: 844 Node Kind: file Schedule: normal Last Changed Author: saulius Last Changed Rev: 799 Last Changed Date: 2022-05-22 10:16:52 +0300 (Sun, 22 May 2022) Text Last Updated: 2022-05-27 08:30:55 +0300 (Fri, 27 May 2022) Checksum: 71524cd0f10c70566bd1552301d270b0879a2e7e [8] Saulius Gražulis; Antanas Vaitkus. Programa „directory-metadata“, rev. 844 (2023) URL: https://saulius-grazulis.lt/~saulius/scripts/directory-metadata [žiūrėta 2023-12-15T12:51+00:00]. Name: directory-metadata Working Copy Root Path: /home/saulius/scripts URL: svn://saulius-grazulis.lt/scripts/directory-metadata Relative URL: ^/directory-metadata Repository Root: svn://saulius-grazulis.lt/scripts Repository UUID: a41d18ea-2314-0410-90cb-ebc18a6e8e91 Revision: 844 Node Kind: file Schedule: normal Last Changed Author: antanas Last Changed Rev: 840 Last Changed Date: 2023-08-09 07:56:20 +0300 (Wed, 09 Aug 2023) Text Last Updated: 2023-09-06 08:20:23 +0300 (Wed, 06 Sep 2023) Checksum: 60523f7b7066dabade98e566448a3414cf3256b7 [9] Saulius Gražulis. Programa „tsv-hdr-join“, rev. 844 (2023). URL: https://saulius-grazulis.lt/~saulius/scripts/tsv-hdr-join [žiūrėta 2023-12-15T15:19+02:00]. Name: tsv-hdr-join Working Copy Root Path: /home/saulius/scripts URL: svn://saulius-grazulis.lt/scripts/tsv-hdr-join Relative URL: ^/tsv-hdr-join Repository Root: svn://saulius-grazulis.lt/scripts Repository UUID: a41d18ea-2314-0410-90cb-ebc18a6e8e91 Revision: 844 Node Kind: file Schedule: normal Last Changed Author: saulius Last Changed Rev: 824 Last Changed Date: 2023-03-15 09:30:08 +0200 (Wed, 15 Mar 2023) Text Last Updated: 2023-03-27 11:02:41 +0300 (Mon, 27 Mar 2023) Checksum: fd239bdab8d6770686cae553956abb5b08fba033 [10] Proteopedia. Structure superposition tools. (2023) URL: https://proteopedia.org/wiki/index.php/Structural_superposition_tools [accessed 2023-12-15T15:44+02:00, permalink https://proteopedia.org/wiki/index.php?title=Structure_superposition_tools&oldid=3888343].