Erinevus lehekülje "ITI0011-2015:harjutus 03" redaktsioonide vahel
1. rida: | 1. rida: | ||
+ | Harjutuse tähtaeg on '''5. praktikum (17.-18. veebruar)'''. | ||
+ | |||
+ | Üldine informatsioon harjutuste kohta: [[ITI0011:harjutused]]. | ||
+ | |||
+ | == Kirjeldus == | ||
+ | |||
+ | Selles harjutuses tegelete tekstitöötlusega. Täpsemalt on teil vaja valideerida DNA ahel ning teha lihtsamat operatsioonid sellega. | ||
Kirjutada 4 funktsiooni: | Kirjutada 4 funktsiooni: | ||
4. rida: | 11. rida: | ||
* etteantud sõne puhul leiab kõige rohkem esineva sümboli esinemiste arvu | * etteantud sõne puhul leiab kõige rohkem esineva sümboli esinemiste arvu | ||
* etteantud sõne puhul teisendab DNA ahela RNA ahelaks, teisendused: A -> U, G -> C, C -> G, T -> A | * etteantud sõne puhul teisendab DNA ahela RNA ahelaks, teisendused: A -> U, G -> C, C -> G, T -> A | ||
− | * etteantud sõne puhul teisendab DNA | + | * etteantud sõne puhul teisendab DNA ahela proteiini ahelaks. |
+ | |||
+ | Allpool on igat funktsiooni täpsemalt kirjeldatud. Kõige lõpus leiate malli, mida kasutada. | ||
+ | |||
+ | == DNA järjestuse valideerimine == | ||
+ | |||
+ | DNA [[http://et.wikipedia.org/wiki/DNA]] ahel on esitatud nukleotiidide järjestusena. Nukleotiid on esitatud ühe sümboliga, kas '''A''', '''C''', '''G''' või '''T''', muid sümboleid korrektses ahelas ei esine. Esimese funktsiooni eesmärk on valideerida etteantud järjestust. Järjestus antakse teile ette sõnena (ik ''string''). Funktsioon peab kontrollima, kas sisendiks saadud argument (sõne) on korrektne ehk siis temas sisalduvad vaid lubatud nukleotiidid. | ||
+ | |||
+ | Näiteks: | ||
+ | <source lang="java"> | ||
+ | isValidDnaSequence(null) → false | ||
+ | isValidDnaSequence("AAAACCGTAC") → true | ||
+ | isValidDnaSequence("") → true | ||
+ | isValidDnaSequence("GKS") → false | ||
+ | isValidDnaSequence("a") → false | ||
+ | </source> | ||
+ | |||
+ | == Kõige rohkem esineva nukleotiidi kogus == | ||
+ | |||
+ | Etteantud DNA-ahelast tuleb leida kõige rohkem esineva nukleotiidi kogus. Kui etteantud sõne ei ola korrektne DNA-ahel, tagastab funktsioon -1. | ||
+ | |||
+ | <souce lang="java"> | ||
+ | highestOccurrence(null) → -1 | ||
+ | highestOccurrence("ACAACCGTGCGC") → 5 | ||
+ | </source> | ||
+ | Viimase näite puhul nukleotiidide esinemised: A 3 tk, C 5 tk, G 3 tk, T 1 tk. | ||
+ | |||
+ | == Transkriptsioon (DNA -> RNA) == | ||
+ | |||
+ | Transkriptsiooni [[http://et.wikipedia.org/wiki/Transkriptsioon_%28geneetika%29]] tulemusena saadakse DNA-st RNA. Etteantud DNA-ahel tuleb transkribeerida RNA-ahelaks. Selle tarvis on vaja teha sellised asendused: | ||
+ | * A -> U (DNA-ahelas oleva A nukleotiidi asemel tekib U nukleotiid) | ||
+ | * G -> C | ||
+ | * C -> G | ||
+ | * T -> A | ||
+ | |||
+ | Kui etteantud järjestus ei ole korrektne DNA-ahel, tagastab funktsioon null'i: <code>return null;</code>. | ||
+ | |||
+ | <source lang="java"> | ||
+ | transcribe("AAGGCCTT") → "UUCCGGAA" | ||
+ | transcribe("TATA") → "AUAU" | ||
+ | transcribe("klj") → null | ||
+ | </source> | ||
+ | |||
+ | == Translatsioon (DNA -> RNA -> proteiin) == | ||
+ | |||
+ | Translatsiooni tulemusena tõlgitakse RNA ahel valgu (aminohapete) järjestuseks. Ette antakse DNA ahel, millest tuleb transkribeerida RNA. RNA omakorda tuleb transleerida proteiinide ahelaks. Tegelikult on kogu see protsess keerulisem. Meie vaatame lihtsustatud olukorda, kus tõlgime vaid valku kodeeriva osa (ehk siis start- ehk metioniini kodeeriv koodon meid antud hetkel ei huvita). | ||
+ | |||
+ | Proteiine transleeritakse koodoni kaupa. Koodon on kolmekohaline osa RNA-ahelast. Ehk siis iga kolme sümboli kohta RNA-ahelas tekib üks proteiin. Vastavustabel on siin: http://en.wikipedia.org/wiki/Genetic_code#RNA_codon_table või http://rosalind.info/glossary/rna-codon-table/ | ||
+ | |||
+ | Tabelis on iga kolmiku kohta mingi uus sümbol või '''Stop'''. '''Stop''' tähendab seda, et selle kohapeal lõpetatakse translatsiooniprotsess ära. Ehk siis kui funktsioon nõuab kolmikuni, mis tõlgendub '''stop'''iks, jäetakse translatsioon pooleli ja tagastatakse seni saadud tulemus (kuigi RNA-ahel ise võib pikem olla). Muul juhul lõppeb translatsioon edukalt, kui jõutakse täpselt RNA lõppu. Kui mõni element jääb üle (või puudu) täieliku koodoni transleerimisest, tuleb kogu tulemuse puhul tagastada '''null'''. | ||
+ | |||
+ | <source lang="java"> | ||
+ | translateProtein("TTTAAAGGGCCC") → "KFPG" | ||
+ | </source> | ||
+ | |||
+ | "'''TTTAAAGGGCCC'''" on DNA-ahel, see teisendatakse RNA-ahelaks: "'''AAAUUUCCCGGG'''". Selle teisendamine kolmikute kaupa annab | ||
+ | "'''KFPG'''". | ||
+ | |||
+ | <source lang="java"> | ||
+ | translateProtein("TTTACTGGGCCC") → "K" | ||
+ | </source> | ||
+ | |||
+ | "'''TTTACTGGGCCC'''" on DNA-ahel, see teisendatakse RNA-ahelaks: "'''AAAUGACCCGGG'''". Selles ahelas teine kolmik on '''UGA''', mis viitab stopp-koodonile. Seega tagastatakse tulemus, mis saadakse kuni selle kolmikuni transleerimisel: '''K'''. | ||
+ | |||
+ | Kui sisendis olev DNA-ahel ei ole korrektne või saadud RNA-d ei saa transleerida, tagastab funktsioon '''null'''. | ||
+ | |||
+ | <source lang="java"> | ||
+ | translateProtein("TTTAAAGGGCCCx") → null | ||
+ | </source> | ||
+ | |||
+ | |||
+ | == Mall == | ||
<source lang="java"> | <source lang="java"> | ||
52. rida: | 130. rida: | ||
* Given a possible DNA string, transcribe it to RNA | * Given a possible DNA string, transcribe it to RNA | ||
* and then translate RNA to protein sequence. | * and then translate RNA to protein sequence. | ||
− | * | + | * In case of Stop codon (there are three), the translation |
+ | * process is ended and the sequence translated up the the | ||
+ | * stop codon is returned. | ||
+ | * @see http://rosalind.info/glossary/rna-codon-table/ | ||
* @param dnaSequence Possible DNA sequence. | * @param dnaSequence Possible DNA sequence. | ||
* @return Translated protein sequence. In case the input | * @return Translated protein sequence. In case the input | ||
− | * sequence is not a valid DNA sequence, returns null. | + | * sequence is not a valid DNA sequence or transcribed |
+ | * RNA does not fully translate into protein, returns null. | ||
*/ | */ | ||
public static String translateProtein(String dnaSequence) { | public static String translateProtein(String dnaSequence) { |
Redaktsioon: 14. veebruar 2015, kell 00:05
Harjutuse tähtaeg on 5. praktikum (17.-18. veebruar).
Üldine informatsioon harjutuste kohta: ITI0011:harjutused.
Kirjeldus
Selles harjutuses tegelete tekstitöötlusega. Täpsemalt on teil vaja valideerida DNA ahel ning teha lihtsamat operatsioonid sellega.
Kirjutada 4 funktsiooni:
- etteantud sõne puhul leiab, kas see on korrektne DNA järjestus (koosneb vaid sümbolitest A, C, G, T)
- etteantud sõne puhul leiab kõige rohkem esineva sümboli esinemiste arvu
- etteantud sõne puhul teisendab DNA ahela RNA ahelaks, teisendused: A -> U, G -> C, C -> G, T -> A
- etteantud sõne puhul teisendab DNA ahela proteiini ahelaks.
Allpool on igat funktsiooni täpsemalt kirjeldatud. Kõige lõpus leiate malli, mida kasutada.
DNA järjestuse valideerimine
DNA [[1]] ahel on esitatud nukleotiidide järjestusena. Nukleotiid on esitatud ühe sümboliga, kas A, C, G või T, muid sümboleid korrektses ahelas ei esine. Esimese funktsiooni eesmärk on valideerida etteantud järjestust. Järjestus antakse teile ette sõnena (ik string). Funktsioon peab kontrollima, kas sisendiks saadud argument (sõne) on korrektne ehk siis temas sisalduvad vaid lubatud nukleotiidid.
Näiteks: <source lang="java"> isValidDnaSequence(null) → false isValidDnaSequence("AAAACCGTAC") → true isValidDnaSequence("") → true isValidDnaSequence("GKS") → false isValidDnaSequence("a") → false </source>
Kõige rohkem esineva nukleotiidi kogus
Etteantud DNA-ahelast tuleb leida kõige rohkem esineva nukleotiidi kogus. Kui etteantud sõne ei ola korrektne DNA-ahel, tagastab funktsioon -1.
<souce lang="java"> highestOccurrence(null) → -1 highestOccurrence("ACAACCGTGCGC") → 5 </source> Viimase näite puhul nukleotiidide esinemised: A 3 tk, C 5 tk, G 3 tk, T 1 tk.
Transkriptsioon (DNA -> RNA)
Transkriptsiooni [[2]] tulemusena saadakse DNA-st RNA. Etteantud DNA-ahel tuleb transkribeerida RNA-ahelaks. Selle tarvis on vaja teha sellised asendused:
- A -> U (DNA-ahelas oleva A nukleotiidi asemel tekib U nukleotiid)
- G -> C
- C -> G
- T -> A
Kui etteantud järjestus ei ole korrektne DNA-ahel, tagastab funktsioon null'i: return null;
.
<source lang="java"> transcribe("AAGGCCTT") → "UUCCGGAA" transcribe("TATA") → "AUAU" transcribe("klj") → null </source>
Translatsioon (DNA -> RNA -> proteiin)
Translatsiooni tulemusena tõlgitakse RNA ahel valgu (aminohapete) järjestuseks. Ette antakse DNA ahel, millest tuleb transkribeerida RNA. RNA omakorda tuleb transleerida proteiinide ahelaks. Tegelikult on kogu see protsess keerulisem. Meie vaatame lihtsustatud olukorda, kus tõlgime vaid valku kodeeriva osa (ehk siis start- ehk metioniini kodeeriv koodon meid antud hetkel ei huvita).
Proteiine transleeritakse koodoni kaupa. Koodon on kolmekohaline osa RNA-ahelast. Ehk siis iga kolme sümboli kohta RNA-ahelas tekib üks proteiin. Vastavustabel on siin: http://en.wikipedia.org/wiki/Genetic_code#RNA_codon_table või http://rosalind.info/glossary/rna-codon-table/
Tabelis on iga kolmiku kohta mingi uus sümbol või Stop. Stop tähendab seda, et selle kohapeal lõpetatakse translatsiooniprotsess ära. Ehk siis kui funktsioon nõuab kolmikuni, mis tõlgendub stopiks, jäetakse translatsioon pooleli ja tagastatakse seni saadud tulemus (kuigi RNA-ahel ise võib pikem olla). Muul juhul lõppeb translatsioon edukalt, kui jõutakse täpselt RNA lõppu. Kui mõni element jääb üle (või puudu) täieliku koodoni transleerimisest, tuleb kogu tulemuse puhul tagastada null.
<source lang="java"> translateProtein("TTTAAAGGGCCC") → "KFPG" </source>
"TTTAAAGGGCCC" on DNA-ahel, see teisendatakse RNA-ahelaks: "AAAUUUCCCGGG". Selle teisendamine kolmikute kaupa annab "KFPG".
<source lang="java"> translateProtein("TTTACTGGGCCC") → "K" </source>
"TTTACTGGGCCC" on DNA-ahel, see teisendatakse RNA-ahelaks: "AAAUGACCCGGG". Selles ahelas teine kolmik on UGA, mis viitab stopp-koodonile. Seega tagastatakse tulemus, mis saadakse kuni selle kolmikuni transleerimisel: K.
Kui sisendis olev DNA-ahel ei ole korrektne või saadud RNA-d ei saa transleerida, tagastab funktsioon null.
<source lang="java"> translateProtein("TTTAAAGGGCCCx") → null </source>
Mall
<source lang="java"> /**
* Home assignment 03. * * Read more: https://courses.cs.ttu.ee/pages/ITI0011:harjutus_03 */
public class Task03 {
/** * Given a string, check whether it represents a valid * DNA sequence, e.g. it contains only A, C, G, T characters. * @param sequence Possible DNA sequence. * @return Whether the given sequence is a valid DNA sequence. */ public static boolean isValidDnaSequence(String sequence) { return true; }
/** * Given a string, find what is the highest * occurrence of one nucleotide base (A, C, G, or T). * @param dnaSequence Possible DNA sequence. * @return The number representing how many times the most * frequent nucleotide base occurs in the string. In case * the input sequence is not a valid DNA sequence, returns -1. */ public static int highestOccurrence(String dnaSequence) { return 0; }
/** * Given a possible DNA string, transcribe it to RNA. * In the transcription process, you have to do the * following substitutions: * A -> U, G -> C, C -> G, T -> A * @param dnaSequence Possible DNA sequence. * @return Transcribed RNA. In case the input sequence * is not a valid DNA sequence, returns null. */ public static String transcribe(String dnaSequence) { return ""; }
/** * Given a possible DNA string, transcribe it to RNA * and then translate RNA to protein sequence. * In case of Stop codon (there are three), the translation * process is ended and the sequence translated up the the * stop codon is returned. * @see http://rosalind.info/glossary/rna-codon-table/ * @param dnaSequence Possible DNA sequence. * @return Translated protein sequence. In case the input * sequence is not a valid DNA sequence or transcribed * RNA does not fully translate into protein, returns null. */ public static String translateProtein(String dnaSequence) { return ""; }
/** * The main method, which is the entry point of the program. * !!IMPORTANT!! You have to keep the main method in order * to get your solution tested. * @param args Arguments from the command line */ public static void main(String[] args) { System.out.println(isValidDnaSequence("ACTGT")); // => true System.out.println(highestOccurrence("AACT")); // => 2 System.out.println(transcribe("ACAGCT")); // => UGUCGA System.out.println(translateProtein("ACAGCT")); // => CR
}
}
</source>