# $Revision: 11270 $ # $Author: saulius $ # $Date: 2024-05-07 12:01:40 +0000 (Tue, 07 May 2024) $ Dvisienių (torsinių, sukimo) kampų radimas ========================================== Saulius Gražulis Vilnius, 2024 m. SUSITARIMAI =========== Raktiniai žodžiai "TURI" (angl. "MUST"), "NEGALI" (angl. "MUST NOT"), "NETURI" (angl. "SHALL NOT"), "PRIVALO" (angl. "REQUIRED", "SHALL"), "TURĖTŲ" (angl. "SHOULD"), "NETURĖTŲ" (angl. "SHOULD NOT"), "REKOMENDUOJAMA" (angl. "RECOMMENDED"), "GALI" (angl. "MAY"), ir "NEPRIVALOMA(S)" (angl. "OPTIONAL") šiame tekste interpretuojami pagal atitinkamus apibrėžimus dokumente RFC 2119 [1]. PROGRAMA ======== Parašykite Perl*) programą, kuri surastų PDB(x) faile pateiktų polimerų dvisienius kampus ir išvestų juos į savo standartinę išvestį. *) Pastaba: galima naudoti Ada programavimo sistemą; tokiu atveju visos Perl'o funkcijos, minimos šioje specifikacijoje, GALI būti pakeistos atitinkamomis Ada funkcijomis. NB: šios užduoties įgyvendinimui NEGALIMA naudoti išorinių bibliotekų PDB failams skaityti ar kampams skaičiuoti. Šios funkcijos PRIVALO būti įgyvendintos programoje savarankiškai. Programos vardo šablonas: pdbx-MOL-torsion-XY kuriame simboliai 'MOL' TURI būti pakeisti paskirtos molekulės tipu ('pep' – peptidas, 'na' – nukleorūgštis, 'pna' – proteo-nukleorūgštis, 'sac' – sacharidai (cukrai)), o 'X' ir 'Y' – atitinkamų kampų lotynizuotais pavadinimais mažosiomis raidėmis (α – a, β – b ir t.t). Lotyniški graikiškų raidžių atitikmenys TURI būti imami iš IUPAC ir IUB nomenklatūros rekomendacijų [2]. Programos iškvietimas: pdbx-MOL-torsion-XY 1zyx.pdb 2zyx*.pdbx Jei komandinėje eilutėje nurodyti failų vardai, programa TURI skaityti juos visus failus ir suskaičiuoti dvisienius kampus visoms tinkamoms liekanoms. Įvesties failų vardai komandinėje eilutėje nėra būtini; jei jie nenurodyti, programa turi skaityti iš savo Standartinės įvesties (STDIN). NEFUNKCINIAI REIKALAVIMAI ========================= Programa privalo apdoroti bet kokio dydžio įvesties duomenų srautą naudodama fiksuotą operatyvinės atminties (angl. RAM) kiekį. Tame tarpe, programos realizacija negali įskaityti į atmintį visų įvestyje esančių atomų. DUOMENŲ FORMATAI ================ ĮVESTIS ------- Įvestis pateikiama PDB ir/arba PDBx formatu. Programa turi automatiškai nustatyti duomenų srauto formatą. Iš duomenų srauto programa TURI analizuoti: -- 'ATOM' ir 'HETATM' įrašus su reikiamų atomų koordinatėmis (iš PDB ir PDBx srautų); -- 'HEADER' įrašus PDB ID gauti (iš PDB srauto, jei tokie įrašai yra); -- 'CRYST1' įrašus formatui nustatyti; -- 'data_' įrašus iš PDBx failų, formatui nustatyti ir duomenų bloko vardui gauti (iš PDBx srauto). Kiti įrašai, o taip pat ATOM įrašai, kurie neaprašo tinkamų atomų, TURI būti ignoruojami. Programa TURI priimti mišrų PDB+PDBx duomenų srautą, t.y. konkatenuotus bet kokia tvarka PDB ir PDBx failus; formato perjungimo ribos turi būti nustatomos pagal 'CRYST1', 'HEADER' ir 'data_' įrašus. IŠVESTIS -------- Programa turi generuoti savo išvesties srautą CSV [3,4] arba TSV [5] formatais; išimtis iš šio formato specifikacijos yra pirma eilutė, kaip nurodyta žemiau. Pirma eilutė – programos Id ........................... Prieš prasidedant standartiniam CSV ar TSV srautui, pirmoji išvesties eilutė turi būti komentaro įrašas (prasidedantis '#' simboliu) su programos Id. Programos Id turi automatiškai sugeneruoti Jūsų naudojama versijų kontrolės sistema. Išvestoje eilutėje NETURI būti dolerio simbolių ('$') ar kitų versijų valdymo sistemų skirtukų raktažodžiams, kad nesupainioti programos Id su panašiai atrodančiais raktažodžiais duomenų failuose. Pvz.: # Id: pdbx-MOL-torsion-XY 1238 2009-09-03 07:14:51Z author Tokiu būdu programos išvesties duomenys bus organizuoti taip, kad pirma eilutė visada bus programos metaduomenys, o likusiose eilutėse pradedant antrąja (numeruojant nuo 1) bus užrašomas standartinis CSV arba TSV duomenų srautas. Standartinis CSV ar TSV duomenų srautas gali būti gaunamas iš programos išvesties, pavyzdžiui, GNU Linux/Unix komandos 'tail -n +2' pagalba. Antra eilutė – stulpelių antraštės .................................. Antroje eilutėje programa TURI išvesti stulpelių antraštes, atskirtas tais pačias skirtukais, kaip ir duomenys. PRIVALO būti išvesdamos šios antraštės nurodyta tvarka: 1. keyword – raktinis žodis, nurodantis dvisienio kampo tipą; 2. angle1 – pirmojo dvisenio kampo reikšmė; 3. angle2 – antrojo dvisienio kampo reikšmė; 4. DATAID – PDB ID reikšmė iš HEADER įrašo (PDB formatui) arba duomenų bloko vardas iš 'data_' antraštės (PDBx failams); 5. chain – grandinės identifikatorius; 6. resname – liekanos pavadinimas; 7. resnum – liekanos numeris (su įterpties kodu, jei toks yra); 8. file – apdorojamo failo vardas; Tolimesnis duomenų srautas .......................... Tolimesnėse eilutėse programa turi pateikti informaciją apie surastus dvisienius kampus. Išvesties formatas: kiekvienai a.r. liekanai programa turi išvesti po vieną eilutę, kurioje surašyti atitinkamais CSV arba TSV skirtukais atskirtos reikšmės kiekvienam stulpeliui, jei reikia, tinkamai išskirtos kabutėmis: - Raktinis žodis TURI būti sudaromas didžiosiomis lotyniškomis raidėmis iš programos pavadinimo 'MOL' dalį atitinkančių simbolių ir kampų X bei Y pavadinimus atitinkančių lotyniškų raidžių pagal IUPAC rekomendacijas [2]. Pavyzdžiui, peptidų φ ir ψ kampai (Ramačandrano diagramos kampai) bus žymimi raktiniu žodžiu PEPFQ (PEP – peptidas, F atitinka φ, Q atitinka ψ); - pirmojo kampo reikšmė laipsniais (slankaus kablelio skaičius); - antrojo kampo reikšmė laipsniais (slankaus kablelio skaičius); Jei pirmojo ar antrojo kampo reikšmė neapibrėžta, vietoj jos išvedama tuščia eilutė; - PDB ID arba duomenų bloko ID ("-" jei identifikatorius nežinomas); - grandinės identifikatorius (pagalvokite, ką darysite, jei grandinės identifikatorius bus tuščias ar nežinomas); - liekanos vardas; - liekanos numeris (su įterpties kodu). - įvesties failo vardas. Jei programa skaito iš standartinės įvesties (STDIN), failo vardas turi būti vienas brūkšnelis ("-"). Failas, kurio vardas failų sistemoje teturi vieną brūkšnelį, TURI būti žymimas kaip "./-"; Išvesties pavyzdys ================== NB: panaudoti bet kokie, nebūtinai gyvenime sutinkami skaičiai: #Id: pdbx-MOL-torsion-XY 1238 2009-09-03 07:14:51Z author keyword angle1 angle2 DATAID chain resname resnum file PEPFQ 3.8 1xyz B ALA 2 /usr/data/PDB/1xyz.pdb PEPFQ 3.8 109.6 1xyz B ALA 3 /usr/data/PDB/1xyz.pdb PEPFQ 3.8 109.51 1xyz B GLY 3A /usr/data/PDB/1xyz.pdb PEPFQ 3.8 109.51 1xyz B ASP 4 /usr/data/PDB/1xyz.pdb PEPFQ 3.8 1xyz B ASP 5 /usr/data/PDB/1xyz.pdb Išvedamam kampui pasirinkite tinkamą tikslumą. T.y. išveskite tiek dešimtainių skaitmenų, kiek jų tikrųjų galite gauti iš turimų PDB koordinačių su trimis reikšminiais skaitmenimis, ir gal būt vieną-du atsarginius skaitmenis, bet ne daugiau. Liekanų tvarka grandinėje turi būti nustatoma pagal liekanų numerius, t.y. jei po 200 liekanos eina 203, programa turi suprasti, kad tarp šių dviejų liekanų peptido modelyje yra tarpas ir atitinkamų kampų neskaičiuoti. DIAGNOSTIKA =========== Programa turi pranešti apie šias klaidas: - Nurodyti komandinėje eilutėje failai neegzistuoja arba jų neįmanoma perskaityti (galima naudoti "gimtąją" Perl diagnostiką; galima naudoti Perl'o kalbos 'while(<>){ ... }' konstrukciją); - Netinkamas skaičių formatas koordinačių laukuose (galima naudoti "gimtąją" Perl diagnostiką); - Peptido liekanoje grandinės viduryje rasti ne visi reikiami pagrindinės grandinės atomai (perspėjimas); - Įvesties sraute nėra nei vieno atomo tinkamo skaičiavimams; Klaidos pranešimo formatas -- toks, kokį išveda Perl'as savo funkcijomis die() ir warn(). Pranešimuose turi būti nurodytas apdorojamo failo, kuriame rasta klaida, vardas ir klaidinga eilutė. Nuorodos ======== 1. S. Bradner "Key words for use in RFCs to Indicate Requirement Levels" (1997) URL: https://tools.ietf.org/html/rfc2119 2. International Union of Pure and Applied Chemistry and International Union of Biochemistry (1974) Abbreviations and symbols for description of conformation of polypeptide chains. Pure and Applied Chemistry 40(3), 291-308. Walter de Gruyter GmbH. DOI: https://doi.org/10.1351/pac197440030291 3. RFC 4180. Common Format and MIME Type for Comma-Separated Values (CSV) Files. https://www.ietf.org/rfc/rfc4180.txt [accessed: 2022-04-05T11:49+03:00] 4. Library of Congress. CSV, Comma Separated Values (RFC 4180). https://www.loc.gov/preservation/digital/formats/fdd/fdd000323.shtml [accessed: 2022-04-05T11:50+03:00] 5. Library of Congress. TSV, Tab-Separated Values. https://www.loc.gov/preservation/digital/formats/fdd/fdd000533.shtml [accessed: 2022-04-05T11:51+03:00] Kolofonas ========= $Id: dvisieniai-kampai.txt 11270 2024-05-07 12:01:40Z saulius $ $URL: file:///home/saulius/svn-repositories/paskaitos/VU/bioinformatika-III/u%C5%BEduotys-praktikai/dvisieni%C5%B3-kamp%C5%B3-u%C5%BEduotis/tasks/lt/dvisieniai-kampai.txt $