From 8eb704b0dde5e68746ad01fcd2990d253b41957f Mon Sep 17 00:00:00 2001 From: Sylvia Pearce Date: Tue, 11 Feb 2014 17:37:54 -0500 Subject: [PATCH 1/3] Add gene editor; update protein builder and molecule editor --- .../source/additional_tools.rst | 184 +++++++++++++++--- 1 file changed, 162 insertions(+), 22 deletions(-) diff --git a/docs/en_us/course_authors/source/additional_tools.rst b/docs/en_us/course_authors/source/additional_tools.rst index 1abca76bc8..a9a70024cd 100644 --- a/docs/en_us/course_authors/source/additional_tools.rst +++ b/docs/en_us/course_authors/source/additional_tools.rst @@ -13,11 +13,72 @@ Individual course teams frequently create tools and problem types that don't hav Below, you'll find the information you need to create the following tools. +* :ref:`Gene Editor` * :ref:`Interactive Periodic Table` * :ref:`Molecule Editor` * :ref:`Multiple Choice and Numerical Input` * :ref:`Protein Builder` +.. _Gene Editor: + +************************** +Genex Gene Editor +************************** + +.. warning:: Description of gene editor--I'm not sure what this tool does, exactly. Help? + +.. image:: /Images/GeneEditor.gif + :alt: Image of the interactive periodic table + +.. _Create the Gene Editor: + +========================== +Create the Gene Editor +========================== + +#. In the unit where you want to create the problem, click **Problem** under **Add New Component**, and then click the **Advanced** tab. +#. Click **Blank Advanced Problem**. +#. In the component that appears, click **Edit**. +#. In the component editor, paste the code from below. +#. Click **Save**. + +===================== +Gene Editor Code +===================== + +.. warning:: Jean-Michel, can you provide problem text for this? + +:: + + + + + + + + +.. note:: + +In this code: + +* **width** and **height** specify the dimensions of the application, in pixels. +* **genex_dna_sequence** is the default DNA sequence that appears when the problem opens. +* **dna_sequence** contains the application's state and the student's answer. This value must be the same as **genex_dna_sequence**. +* **genex_problem_number** determines what the user has to find to answer the problem correctly. It is hard-coded in the Java GWT code that is used to produce the JS. Its value can range from 1 to 5 and corresponds to the 5 'Edit a Gene' problems encountered in 7.00x. + +.. warning:: Jean-Michel: I'm not sure what to say about **genex_problem_number, since this info is just for 7.00x. Would something like this work? + + **genex_problem_number** specifies the number of the problem. This number is based on the five gene editor problems in the MITx 7.00x course--for example, if you want this problem to look like the second gene editor problem in the 7.00x course, you would set the **genex_problem_number** value to 2. The number must be 1, 2, 3, 4, or 5. + + (This seems a little odd--do all courses have to use the same five gene editor problems?) + + .. _Interactive Periodic Table: ************************** @@ -60,8 +121,12 @@ To create the periodic table, you need an HTML component. Molecule Editor ************************ +.. warning:: Jean-Michel: I started creating documentation for this a couple of weeks ago, based on the molecule editor in the demo course. In addition to the problem XML that you provided, that problem included some HTML text as well. Can you look over it and let me know if you think it's OK to keep that in? (To be honest, the two collapsible sections in the HTML component look kind of ugly in the LMS, so I'm happy to hear any suggestions for them.) + Students can use the molecule editor to learn how to create molecules. The molecule editor allows students to draw molecules that follow the rules for covalent bond formation and formal charge, but are chemically impossible. The molecule editor warns students if they try to submit a structure that is not possible. +The molecule editor incorporates two tools: the JSME molecule editor created by Peter Erl and Bruno Bienfait, and JSmol, a JavaScript-based molecular viewer from Jmol. (You don't need to download either of these tools--Studio uses them automatically.) For more information about the JSME molecule editor, see `JSME Molecule Editor `_. For more information about JSmol, see `JSmol `_. + .. image:: /Images/Molecule_Editor.gif :alt: Image of the molecule editor @@ -73,13 +138,15 @@ Create the Molecule Editor To create a molecule editor, you need the following files: -* Molecules_Dopamine.mol * MoleculeAnswer.png * MoleculeEditor_HTML.png +* Molecules_Dopamine.mol To download all of these files in a .zip archive, go to http://files.edx.org/MoleculeEditorFiles.zip. -To create the molecule editor, you need an HTML component followed by a Problem component. +.. note:: The molecule that appears when the tool starts is a dopamine molecule. To use a different molecule, download the .mol file for that molecule from the `list of molecules `_ on the `BioTopics `_ website. Then, upload the .mol file to the **Files & Uploads** page for your course in Studio, and change "Molecules_Dopamine.mol" in the example code to the name of your .mol file. + +To create the molecule editor that appears in the image above, you need an HTML component followed by a Problem component. #. Upload all of the files listed above to the **Files & Uploads** page in your course. #. Create the HTML component. @@ -99,7 +166,7 @@ To create the molecule editor, you need an HTML component followed by a Problem Molecule Editor Code ===================== -To create the molecule editor, you'll need an HTML component followed by a Problem component. +To create the molecule editor, you need an HTML component and a Problem component. HTML Component Code ------------------- @@ -143,15 +210,23 @@ HTML Component Code
 
- - Problem Component ----------------- + +**Problem 1** + +.. warning:: Jean-Michel: The code for Problem 3 is the code that's in the problem in the demo course (except that I changed the name of the dopamine.mol file to Dopamine_Molecule.mol). Is it still usable? (If not, no big deal.) + + Also, can you supply sample text for the two sample problems you've provided? (For the first one, for example, it could just be "The dopamine molecule, as shown, cannot make strong hydrogen bonds. Edit the dopamine molecule so that it can make strong hydrogen bonds." But I'm not sure what the second one is trying to do.) + + In problems 1 and 2, the file path is "/static/**molecules**/dopamine.mol". Should this just be "static/dopamine.mol"? + + And one more thing: Problem 3 includes an answer. Do we want to do that for the other problems? + :: @@ -164,14 +239,51 @@ Problem Component return any(res == "Can Make Ionic Bonds" for res in mol_info) - + - + +**Problem 2** + +:: + + + + + + + + + +**Problem 3** + +:: + + + + + + + + + .. _Multiple Choice and Numerical Input: ******************************************* @@ -221,10 +333,10 @@ Multiple Choice and Numerical Input Problem Code .. _Protein Builder: ************************ -Protein Builder +Protex Protein Builder ************************ -The protein builder asks students to create specified protein shapes by stringing together amino acids. In the example below, the goal protein shape is a simple line. +The Protex protein builder asks students to create specified protein shapes by stringing together amino acids. In the example below, the goal protein shape is a simple line. .. image:: /Images/ProteinBuilder.gif @@ -253,34 +365,62 @@ Protein Builder Code

The protein builder allows you string together the building blocks of proteins, amino acids, and see how that string will form into a structure. You are presented with a goal protein shape, and your task is to try to re-create it. In the example below, the shape that you are asked to form is a simple line.

+

Be sure to click "Fold" to fold your protein before you click "Check".

- + - + -

Be sure to click "Fold" to fold your protein before you click "Check".

- There are many protein sequences that will fold to the shape we asked you - about. Here is a sample sequence that will work. You can play around with - it if you are curious. -

+ Many protein sequences, such as the following example, fold to a straight line.You can play around with the protein builder if you're curious. +

  • - Stick: RRRRRRR -
  • + Stick: RRRRRRR +
+ +In this code: + +* **width** and **height** specify the dimensions of the application, in pixels. +* **target_shape** lists the amino acids that, combined in the order specified, create the shape you've asked students to create. The list can only include the following letters, which correspond to the one-letter code for each amino acid. (This list appears in the upper-left corner of the protein builder.) + + .. list-table:: + :widths: 15 15 15 15 + :header-rows: 0 + + * - A + - R + - N + - D + * - C + - Q + - E + - G + * - H + - I + - L + - K + * - M + - F + - P + - S + * - T + - W + - Y + - V From f508bf11da84f2e545b1c84811fd9eeab9b74371 Mon Sep 17 00:00:00 2001 From: Sylvia Pearce Date: Wed, 12 Feb 2014 14:20:02 -0500 Subject: [PATCH 2/3] Update info about gene explorer, molecule editor, and protein builder --- .../source/additional_tools.rst | 93 +++++++++---------- 1 file changed, 44 insertions(+), 49 deletions(-) diff --git a/docs/en_us/course_authors/source/additional_tools.rst b/docs/en_us/course_authors/source/additional_tools.rst index a9a70024cd..1be90aba7e 100644 --- a/docs/en_us/course_authors/source/additional_tools.rst +++ b/docs/en_us/course_authors/source/additional_tools.rst @@ -13,27 +13,38 @@ Individual course teams frequently create tools and problem types that don't hav Below, you'll find the information you need to create the following tools. -* :ref:`Gene Editor` +* :ref:`Gene Explorer` * :ref:`Interactive Periodic Table` * :ref:`Molecule Editor` * :ref:`Multiple Choice and Numerical Input` * :ref:`Protein Builder` -.. _Gene Editor: +.. _Gene Explorer: ************************** -Genex Gene Editor +Gene Explorer ************************** -.. warning:: Description of gene editor--I'm not sure what this tool does, exactly. Help? +The Gene Explorer (GeneX), from the biology department at `UMB `_, simulates the transcription, splicing, processing, and translation of a small hypothetical eukaryotic gene. GeneX allows students to make specific mutations in a gene sequence, and it then calculates and displays the effects of the mutations on the mRNA and protein. -.. image:: /Images/GeneEditor.gif - :alt: Image of the interactive periodic table +Specifically, the Gene Explorer does the following: -.. _Create the Gene Editor: +#. Finds the promoter and terminator +#. Reads the DNA sequence to produce the pre-mRNA +#. Finds the splice sites +#. Splices and tails the mRNA +#. Finds the start codon +#. Translates the mRNA + +.. image:: /Images/GeneExplorer.png + :alt: Image of the Gene Explorer + +For more information about the Gene Explorer, see `The Gene Explorer `_. + +.. _Create the Gene Explorer: ========================== -Create the Gene Editor +Create the Gene Explorer ========================== #. In the unit where you want to create the problem, click **Problem** under **Add New Component**, and then click the **Advanced** tab. @@ -43,40 +54,32 @@ Create the Gene Editor #. Click **Save**. ===================== -Gene Editor Code +Gene Explorer Code ===================== -.. warning:: Jean-Michel, can you provide problem text for this? - :: - - - - - - - -.. note:: + +

Make a single base pair substitution mutation in the gene below that results in a protein that is longer than the protein produced by the original gene. When you are satisfied with your change and its effect, click the SUBMIT button.

+

Note that a "single base pair substitution mutation" is when a single base is changed to another base; for example, changing the A at position 80 to a T. Deletions and insertions are not allowed.

+ + + + +
In this code: * **width** and **height** specify the dimensions of the application, in pixels. * **genex_dna_sequence** is the default DNA sequence that appears when the problem opens. * **dna_sequence** contains the application's state and the student's answer. This value must be the same as **genex_dna_sequence**. -* **genex_problem_number** determines what the user has to find to answer the problem correctly. It is hard-coded in the Java GWT code that is used to produce the JS. Its value can range from 1 to 5 and corresponds to the 5 'Edit a Gene' problems encountered in 7.00x. - -.. warning:: Jean-Michel: I'm not sure what to say about **genex_problem_number, since this info is just for 7.00x. Would something like this work? - - **genex_problem_number** specifies the number of the problem. This number is based on the five gene editor problems in the MITx 7.00x course--for example, if you want this problem to look like the second gene editor problem in the 7.00x course, you would set the **genex_problem_number** value to 2. The number must be 1, 2, 3, 4, or 5. - - (This seems a little odd--do all courses have to use the same five gene editor problems?) +* **genex_problem_number** specifies the number of the problem. This number is based on the five gene editor problems in the MITx 7.00x course--for example, if you want this problem to look like the second gene editor problem in the 7.00x course, you would set the **genex_problem_number** value to 2. The number must be 1, 2, 3, 4, or 5. .. _Interactive Periodic Table: @@ -121,9 +124,7 @@ To create the periodic table, you need an HTML component. Molecule Editor ************************ -.. warning:: Jean-Michel: I started creating documentation for this a couple of weeks ago, based on the molecule editor in the demo course. In addition to the problem XML that you provided, that problem included some HTML text as well. Can you look over it and let me know if you think it's OK to keep that in? (To be honest, the two collapsible sections in the HTML component look kind of ugly in the LMS, so I'm happy to hear any suggestions for them.) - -Students can use the molecule editor to learn how to create molecules. The molecule editor allows students to draw molecules that follow the rules for covalent bond formation and formal charge, but are chemically impossible. The molecule editor warns students if they try to submit a structure that is not possible. +Students can use the molecule editor to learn how to create molecules. The molecule editor allows students to draw molecules that follow the rules for covalent bond formation and formal charge, even if the molecules are chemically impossible, are unstable, or do not exist in living systems. The molecule editor warns students if they try to submit a structure that is chemically impossible. The molecule editor incorporates two tools: the JSME molecule editor created by Peter Erl and Bruno Bienfait, and JSmol, a JavaScript-based molecular viewer from Jmol. (You don't need to download either of these tools--Studio uses them automatically.) For more information about the JSME molecule editor, see `JSME Molecule Editor `_. For more information about JSmol, see `JSmol `_. @@ -140,11 +141,11 @@ To create a molecule editor, you need the following files: * MoleculeAnswer.png * MoleculeEditor_HTML.png -* Molecules_Dopamine.mol +* dopamine.mol To download all of these files in a .zip archive, go to http://files.edx.org/MoleculeEditorFiles.zip. -.. note:: The molecule that appears when the tool starts is a dopamine molecule. To use a different molecule, download the .mol file for that molecule from the `list of molecules `_ on the `BioTopics `_ website. Then, upload the .mol file to the **Files & Uploads** page for your course in Studio, and change "Molecules_Dopamine.mol" in the example code to the name of your .mol file. +.. note:: The molecule that appears when the tool starts is a dopamine molecule. To use a different molecule, download the .mol file for that molecule from the `list of molecules `_ on the `BioTopics `_ website. Then, upload the .mol file to the **Files & Uploads** page for your course in Studio, and change "dopamine.mol" in the example code to the name of your .mol file. To create the molecule editor that appears in the image above, you need an HTML component followed by a Problem component. @@ -219,14 +220,6 @@ Problem Component **Problem 1** -.. warning:: Jean-Michel: The code for Problem 3 is the code that's in the problem in the demo course (except that I changed the name of the dopamine.mol file to Dopamine_Molecule.mol). Is it still usable? (If not, no big deal.) - - Also, can you supply sample text for the two sample problems you've provided? (For the first one, for example, it could just be "The dopamine molecule, as shown, cannot make strong hydrogen bonds. Edit the dopamine molecule so that it can make strong hydrogen bonds." But I'm not sure what the second one is trying to do.) - - In problems 1 and 2, the file path is "/static/**molecules**/dopamine.mol". Should this just be "static/dopamine.mol"? - - And one more thing: Problem 3 includes an answer. Do we want to do that for the other problems? - :: @@ -239,7 +232,7 @@ Problem Component return any(res == "Can Make Ionic Bonds" for res in mol_info) - + @@ -252,6 +245,7 @@ Problem Component :: +

The dopamine molecule, as shown, cannot make strong hydrogen bonds. Edit the dopamine molecule so that it can make strong hydrogen bonds.

- +
@@ -268,7 +262,8 @@ Problem Component :: - + +

The dopamine molecule has an intermediate hydrophobicity. Edit the dopamine molecule so that it is more hydrophobic.

- +
From 00929923a9724e022a985fd8d2c11dfd19e1a27d Mon Sep 17 00:00:00 2001 From: Sylvia Pearce Date: Wed, 12 Feb 2014 14:22:15 -0500 Subject: [PATCH 3/3] Add new Gene Explorer screen shot --- .../source/Images/GeneExplorer.png | Bin 0 -> 17428 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/en_us/course_authors/source/Images/GeneExplorer.png diff --git a/docs/en_us/course_authors/source/Images/GeneExplorer.png b/docs/en_us/course_authors/source/Images/GeneExplorer.png new file mode 100644 index 0000000000000000000000000000000000000000..edeb255dd653b6e6cc1c55f5bab60c1a667b3bf4 GIT binary patch literal 17428 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 QQqVaap00i_>zopr067+4GXMYp literal 0 HcmV?d00001