Temp transcript

From Eterna Wiki

Revision as of 14:23, 6 February 2014 by Eli Fisker (talk | contribs) (Adding link)

Link to the version I got in the Script Intro.

 

EteRNA University, first lesson

 

 

jnicol: Hi everyone, Welcome to the first EteRNA Class Time session! [0:00 AM]
jnicol: I would like to take the next 30-45 minutes to run a javascript class for the players interested in learning about this. [0:00 AM]
Eli Fisker: Hi John! Thx for the invitation [0:00 AM]
jnicol: yw, any more participants? [0:00 AM]
firedrake969: I wish I could :L [0:01 AM]
firedrake969: I'll stay for the next 15 minutes [0:01 AM]
firedrake969: and then however long I can [0:01 AM]
Eli Fisker: Guys, check out this fine initiative:  [0:01 AM]
Eli Fisker: https://getsatisfaction.com/eternagame/topics/eterna_class_time_1st_session_scheduled_2_5_at_6pm_est [0:01 AM]
Eli Fisker: This is what class now is about [0:01 AM]
jnicol: This class will use the scripting interface and a library function provided by the developers to calculate the energy of a sequence. [0:01 AM]
firedrake969: Cool [0:01 AM]
LFP6: Back [0:01 AM]
hoglahoo: I'm game [11:01 PM]
LFP6: Hello Jhon, Fire [0:01 AM]
LFP6: *John [0:01 AM]
Eli Fisker: wb LFP [0:02 AM]
firedrake969: I know basic JS, but no idea about the EteRNA CDN documentatin [0:02 AM]
jnicol: I'm sure Eli can save this log for use by players later [0:01 AM]
machinelves: hello! [0:02 AM]
firedrake969: documentation* [0:02 AM]
Eli Fisker: John, yep, will [0:02 AM]
jnicol: hi elves! [0:02 AM]
LFP6: Someone needs to save the log-I'll have to go for dinner, so not positive if I can or not [0:02 AM]
jnicol: For those that want to follow along, it would be best to use the full screen chat window, http://eterna.cmu.edu/web/chat/ [0:02 AM]
machinelves: thank you so much jnicol for teaching this class! :D [0:02 AM]
jnicol: yw :) [0:02 AM]
mat747: hi John [0:02 AM]
LFP6: Oh, and later, I hope to have a little suprise for you all in relation to EternaU! [0:02 AM]
LFP6: Yes, thank you. [0:03 AM]
jnicol: hi mat, lfp [0:03 AM]
jnicol: Please open another window for the scripting interface, http://eterna.cmu.edu/web/script/create/ [0:03 AM]
jnicol: This page can also be accessed from the "RNA Lab" menu, the last item in the list is "EteRNA Scripts" [0:03 AM]
jnicol: Then on the main script page, click on the Create New Script button. [0:03 AM]
jnicol: The developers have provided several library calls to create useful scripts with this interface. [0:04 AM]
jnicol: The Lib.energyOfStruct library call will return the energy of a given structure and sequence, which is the focus of todays class. [0:04 AM]
jnicol: Documentation for all the provided library calls can be found at http://eterna.cmu.edu/web/script/documentation/functions/ [0:04 AM]
jnicol: I know I said that I would like to create a list of all the tetraloop energies using the scripting interface, [0:05 AM]
jnicol: but as I started programming, the code became too complex for a first lesson. [0:05 AM]
jnicol: So, we will list 4 tetraloop energies that are closed with a GC pair: AAAA, GAAA, UAAA and CAAA [0:05 AM]
jnicol: Perhaps a future class can continue with the complete list. [0:05 AM]
jnicol: The concept is to build a hairpin loop, use the energyOfStructure call to find the total energy of the structure, [0:06 AM]
jnicol: then subtract out the energy from the pairs in the stem. [0:06 AM]
jnicol: The result will be the energy of the loop. [0:06 AM]
LFP6: Cool [0:07 AM]
jnicol: It is probably best to open puzzlemaker so we can 'see' the energies easier, http://eterna.cmu.edu/game/puzzlemaker/ [0:07 AM]
jnicol: Copy in the structure (((....))) [0:07 AM]
LFP6: Does the function page contain all of the documentation? I know it didn't used to. [0:07 AM]
jnicol: Click on the 'Type in a Sequence' icon and copy in GCGAAAACGC [0:07 AM]
jnicol: I think it contains most [0:08 AM]
jnicol: maybe not all [0:08 AM]
LFP6: I think there may or may not be an updated wiki page [0:08 AM]
jnicol: everyone have the sequence in puzzlemaker? [0:08 AM]
LFP6: Or Google doc [0:08 AM]
jnicol: The structure in puzzlemaker should look like this, http://eterna.cmu.edu/sites/default/files/chat_screens/48166_1391616538.png [0:08 AM]
hoglahoo: *raises hand* [11:08 PM]
jnicol: speak up young man :) [0:09 AM]
hoglahoo: please sir, may I have some more [11:09 PM]
Eli Fisker: Yes [0:09 AM]
jnicol: Click on the Settings icon and select 'Display Free Energies' [0:09 AM]
jnicol: You should see energies that read -3.4, -2.4 and 4.5 [0:09 AM]
LFP6: Yep [0:10 AM]
jnicol: Change base 4 to a G and the loop energy changes to 0.2 [0:10 AM]
jnicol: Change to a U and the loop energy becomes 3.7, C and the loop energy is 4.5 [0:10 AM]
jnicol: So, we would like the script output to display: [0:10 AM]
AAAA = 4.5 kcal
GAAA = 0.2 kcal
UAAA = 3.7 kcal
CAAA = 4.5 kcal
jnicol: OK, now we are ready to begin the scripting! [0:11 AM]
Eli Fisker: Cool [0:11 AM]
jnicol: copy the following line into the scripting window: [0:11 AM]
outln(Lib.energyOfStruct("GCGAAAACGC", "(((....)))"));
jnicol: Click Evaluate [0:12 AM]
jnicol: We see that the result is -1.3kcal, which is the same as the total energy displayed in puzzlemaker. [0:12 AM]
TomoeUzumaki: hello [0:12 AM]
jnicol: hello tomoe [0:12 AM]
jnicol: want to join in the class? [0:12 AM]
hoglahoo: I got an undefined output [11:12 PM]
TomoeUzumaki: am I late? [0:13 AM]
firedrake969: not really [0:13 AM]
TomoeUzumaki: yeah, sure [0:13 AM]
firedrake969: just late-ish [0:13 AM]
Eli Fisker: Hogla, so got I, but it does say 1.3 [0:13 AM]
hoglahoo: nothing but this? outln(Lib.energyOfStruct("GCGAAAACGC", "(((....)))")); [11:13 PM]
jnicol: anyone else get undefined? [0:13 AM]
hoglahoo: I didn't even get the 1.3 [11:13 PM]
machinelves: me [0:13 AM]
machinelves: and 1.3 [0:13 AM]
jnicol: correct hogla [0:13 AM]
TomoeUzumaki: what are we talking about? [0:13 AM]
Eli Fisker: http://prntscr.com/2pvmnx [0:14 AM]
firedrake969: testing it [0:14 AM]
Eli Fisker: Tomoe, we are having scripting class [0:14 AM]
Eli Fisker: :) [0:14 AM]
hoglahoo: http://prntscr.com/2pvmu6 [11:14 PM]
TomoeUzumaki: fun [0:14 AM]
jnicol: tomoe, you can open the scripting interface [0:14 AM]
jnicol: http://eterna.cmu.edu/web/script/create/ [0:14 AM]
machinelves: eli's screenshot reflects what i have [0:14 AM]
firedrake969: -1.3, undefined. [0:15 AM]
firedrake969: Library Loader use.... true-1.3Return : undefinedEvaluation time : 0.232 sec [0:15 AM]
jnicol: hog, try outln("test"); [0:15 AM]
firedrake969: copied/pasted output. [0:15 AM]
hoglahoo: resturns test [11:15 PM]
hoglahoo: returns* [11:15 PM]
jnicol: what browser? [0:16 AM]
hoglahoo: ff [11:16 PM]
firedrake969: I found the min energy :3 [0:16 AM]
jnicol: hold on, I'm opening FF [0:16 AM]
hoglahoo: I'll screw around with it, feel free to continue [11:16 PM]
firedrake969: Does the JS here have all the normal functions like for, while, int, etc. [0:16 AM]
Eli Fisker: I'm in FF too [0:16 AM]
hoglahoo: ff is updating now that I've checked the version too [11:16 PM]
mat747:  I'm in FF too  [0:16 AM]
firedrake969: And is it int x = 5; to set x to 5? [0:16 AM]
Omei: It's OK in FF for me. [0:16 AM]
firedrake969: Chrome here, latest version [0:17 AM]
firedrake969: OK here. [0:17 AM]
jnicol: it returns correctly for me in firefox [0:17 AM]
machinelves: @hogla what's you're full output? [0:17 AM]
LFP6: @Normal functions: That is syntax. If they weren't there, it wouldn't be JS [0:17 AM]
machinelves: *your [0:18 AM]
jnicol: well hurry, you are holding up the class :) [0:18 AM]
hoglahoo: I [11:18 PM]
hoglahoo: I'm updated, here's it again http://prntscr.com/2pvo5w [11:18 PM]
firedrake969: ok [0:18 AM]
LFP6: @Normal functions again: Functions look like this: functionname() [0:18 AM]
hoglahoo: yeah I don't want to hold it up, being the only person with the issue! [11:18 PM]
firedrake969: So it's like I'm programming JS with a CDN? [0:18 AM]
LFP6: Those may vary depending on the program you're scripting in/for [0:19 AM]
LFP6: CDN...? [0:19 AM]
jnicol: can you try Lib.energyOfStruct("GCGAAAACGC", "(((....)))"); [0:19 AM]
hoglahoo: Library Loader use.... true [11:19 PM]
hoglahoo: Return : undefined [11:19 PM]
hoglahoo: Evaluation time : 0.001 sec [11:19 PM]
jnicol: ok lets move on, perhaps the next code will work for you [0:20 AM]
firedrake969: CDN is something you load like Twitter Bootstrap. [0:20 AM]
firedrake969: ok [0:20 AM]
jnicol: We see that the result is -1.3kcal, which is the same as the total energy displayed in puzzlemaker. [0:20 AM]
hoglahoo: it works in IE [11:20 PM]
jnicol: We would actually like to just display the loop energy, so we need to subtract out the energy of the pairs in the stem. [0:20 AM]
jnicol: cool, hog [0:20 AM]
jnicol: The energies between the GC pairs of -3.4 + -2.4 = -5.8 [0:20 AM]
jnicol: So we need to add 5.8 to total energy to get the tetraloop energy. [0:21 AM]
jnicol: copy the following lines into the scripting window: [0:21 AM]
sequence = "GCGAAAACGC";
energy = 5.8 + Lib.energyOfStruct(sequence, "(((....)))");
outln(energy);
LFP6: @Drake: Basically. The functions you can use depend on the libraries you have available. For example, if 'm using C# in .net, I have all the .net libraries, but if I'm using C# in Unity, I don't have the .net functions, just the Unity ones, however the basic syntax stays the same. [0:21 AM]
jnicol: Clicking Evaluate shows that the result is 4.5, as we want [0:21 AM]
jnicol: If you change the sequence in the code, to the other 3 desired tetraloops, you see the correct result for the loop energy is displayed [0:22 AM]
LFP6: But how would you automate this without hard-coding a value? [0:22 AM]
firedrake969: @LFP6 A CDN is a library [0:22 AM]
firedrake969: basically [0:22 AM]
jnicol: lfp6, I don't think there is a way with the energyOfStructure call [0:23 AM]
firedrake969: And I think you could request a variable and pass it to energyOfStruct [0:23 AM]
firedrake969: You could request a string [0:23 AM]
LFP6: So how would that be any use in a script? The whole point is that you don't know what the result would be. [0:23 AM]
jnicol: I used the vienna software directly when I generated the energies in the enrggy chart on my profile [0:23 AM]
firedrake969: btw might not keep up with all chat, gotta do homework at the same time [0:24 AM]
jnicol: ok, fire, thanks for your time [0:24 AM]
firedrake969: I'm almost done :P [0:24 AM]
firedrake969: I hope I can stay [0:24 AM]
LFP6: @Drake: Yes, I guess that's how it works [0:24 AM]
jnicol: its just an example script lfp6, hopefully later the scripts will be more useful [0:25 AM]
LFP6: Anything that's not a function, as a general rule, is the language itself. Just functions change with apps [0:25 AM]
LFP6: K [0:25 AM]
firedrake969: Yup [0:25 AM]
firedrake969: good way to describe it [0:25 AM]
firedrake969: But let's let jnicol talk :P [0:25 AM]
jnicol: Lets introduce a substring for displaying just the 4 bases in loop of the sequence [0:25 AM]
firedrake969: finished my math HW. [0:25 AM]
firedrake969: Ok... [0:25 AM]
firedrake969: Would we use var, or str? [0:25 AM]
jnicol: copy the following lines into the scripting window: [0:25 AM]
sequence = "GCGAAAACGC";
energy = 5.8 + Lib.energyOfStruct(sequence, "(((....)))");
out(sequence.substr(3,4));
out(" = ");
out(energy);
outln(" kcal");
firedrake969: woah [0:26 AM]
firedrake969: Should we remove the other thing we put in? [0:26 AM]
rhiju: regarding computation of the energy of the stem itself, there are functions in viennafold (Eterna's engine) to do that. but they appear to not be exposed in eterna script [0:26 AM]
jnicol: substr skips the first 3 characters and returns the next 4 characters [0:26 AM]
firedrake969: Thanks [0:26 AM]
jnicol: thanks rhiju for the input [0:26 AM]
hoglahoo: firedrake969: yes [11:26 PM]
firedrake969: Is substr EteRNA exclusive? [0:26 AM]
jnicol: substr is a general javascript function [0:27 AM]
firedrake969: apologies if I'm talking too much/disrupting :P [0:27 AM]
firedrake969: Learned something new, sweet :D [0:27 AM]
jnicol: i like audience partipation :) [0:27 AM]
jnicol: Notice that out() displays text, but does not advance to the next line, outln() does advance to the next line [0:27 AM]
firedrake969: Ok [0:27 AM]
firedrake969: What does the "Add Input" button at the top of the codebox do? [0:27 AM]
jnicol: if you want the user enter information for the program to act on  [0:28 AM]
firedrake969: WOuld that work to find the energy value? [0:28 AM]
firedrake969: And I seem to have accidentally deleted the code :L [0:28 AM]
jnicol: for instance, a common input would be the structure notation [0:28 AM]
firedrake969: Ok. [0:28 AM]
hoglahoo: for what it's worth, I get Library Loader use.... true AAAA = NaN kcal in firefox [11:29 PM]
firedrake969: Could you give me the code again? [0:29 AM]
firedrake969: It's not on the chatbox anymore [0:29 AM]
jnicol: hog, i think that is caused by the enrgyOfStructure not running properly for that browser [0:29 AM]
LFP6: energy = 5.8 + Lib.energyOfStruct(sequence, "(((....)))");out(sequence.substr(3,4));out(" = ");out(energy);outln(" kcal"); [0:29 AM]
Eli Fisker: Here is what I get:  [0:30 AM]
Eli Fisker: http://prntscr.com/2pvs1e [0:30 AM]
firedrake969: thanks [0:30 AM]
LFP6: Gah, no lines. :( [0:29 AM]
firedrake969: np [0:30 AM]
firedrake969: testing something in chat [0:30 AM]
firedrake969: nope, doesn't work [0:30 AM]
LFP6: Drake, put a new line after each ; [0:30 AM]
jnicol: oh sorry, when I say copy to the scripting interface [0:30 AM]
jnicol: please delete all prrevious code first [0:30 AM]
firedrake969: Is "sequence" a variable that you make, or is it already initialized? [0:30 AM]
firedrake969: @LFP I know [0:30 AM]
jnicol: everyone ready to move on, or are there more questions [0:31 AM]
firedrake969: ready here. [0:31 AM]
hoglahoo: please sir, may I have some more [11:31 PM]
Eli Fisker: Ready [0:31 AM]
machinelves: ready [0:31 AM]
LFP6: (Btw, I'm just going to look at this later, I'm soing something atm [0:31 AM]
jnicol: Now lets use a while loop to update the first base in the loop and calculate the energies for the 4 tetraloops. [0:31 AM]
firedrake969: can I think of the code first? [0:32 AM]
Brourd: not so ready, but, carry on. [0:32 AM]
firedrake969: How many times would the while loop run [0:32 AM]
jnicol: delete all previous code and copy the following lines into the scripting window: [0:32 AM]
sequence = "GCGAAAACGC";
while (sequence.length > 0) {
  energy = 5.8 + Lib.energyOfStruct(sequence, "(((....)))");
  out(sequence.substr(3,4));
  out(" = ");
  out(energy);
  outln(" kcal");
  if (sequence.substr(3,1) == "A") { sequence = "GCGGAAACGC"; }
  else if (sequence.substr(3,1) == "G") { sequence = "GCGUAAACGC"; }
  else if (sequence.substr(3,1) == "U") { sequence = "GCGCAAACGC"; }
  else sequence = "";
}
Omei: It turns out you can evaluate just the loop.  http://prntscr.com/2pvsyk [0:33 AM]
jnicol: we will loop 4 times and should have 4 lines of output [0:33 AM]
firedrake969: Jnicol--can you tell us how each part works? [0:33 AM]
Brourd: indeed, omei. However, that little trick does not work for R-U base pairs. [0:33 AM]
jnicol: yup [0:33 AM]
firedrake969: ok [0:34 AM]
Brourd: Whenever Jnicol moves on to complicating the code :) [0:34 AM]
jnicol: Notice that we check base #4 each time through the loop and that we update the sequence to check for the next desired tetraloop [0:34 AM]
firedrake969: ok that makes sense. [0:34 AM]
hoglahoo: Omei: Brourd called your discovery a "little trick" - what are you going to do about this? [11:34 PM]
jnicol: can't be helped brourd :) [0:34 AM]
Omei: I'm going to ask Brourd what he means. [0:35 AM]
Eli Fisker: Number 4 base is what is called nr 3 in here [0:35 AM]
jnicol: ok, lets go line by line here  [0:35 AM]
Eli Fisker: Great [0:35 AM]
firedrake969: ok [0:35 AM]
jnicol: line 1: the sequence is defined [0:35 AM]
firedrake969: Why is the energy 5.8 plus whatever? [0:36 AM]
jnicol: line 2: we want to continue in this loop until we signal that all 4 lines have been displayed [0:36 AM]
hoglahoo: oh, these are unrounded values. how extraordinary... [11:36 PM]
firedrake969: But the sequence length is 10. [0:36 AM]
jnicol: (which is line 12 setting the sequence = "") [0:36 AM]
firedrake969: Ah, ok [0:37 AM]
jnicol: only when we hit line 12 will the loop be stopped [0:37 AM]
firedrake969: so basically repeats 4 times. [0:37 AM]
jnicol: correct [0:37 AM]
firedrake969: Indented some stuff just for clarity [0:37 AM]
Eli Fisker: so the "" is stop signals? [0:38 AM]
jnicol: lines 3 through 7 are the same as the previous code [0:37 AM]
jnicol: correct eli [0:38 AM]
hoglahoo: "" is not greater than 0 [11:38 PM]
Eli Fisker: Ah, refering back to the defined sequence? [0:38 AM]
firedrake969: So what about the 5.8 plus energy? [0:38 AM]
firedrake969: Why is the seemingly arbitrary 5.8 there? [0:38 AM]
jnicol: there are lots of ways to stop the while loop but I chose to set the sequence to a 0 length [0:38 AM]
firedrake969: @hog but it is 0, and it's not greater than or equal to 0 [0:38 AM]
Eli Fisker: Fire, the 5,8 comes from here:  [0:39 AM]
Eli Fisker: http://prntscr.com/2pvuuo [0:39 AM]
Eli Fisker: add the energy in the quads [0:39 AM]
hoglahoo: firedrake969: yes, that's my point, hehe [11:39 PM]
firedrake969: Yeah, but the code says while it's GREATER than 0. [0:39 AM]
Eli Fisker: John, got it [0:39 AM]
firedrake969: As soon as it's equal to 0, it stops. [0:39 AM]
hoglahoo: yes [11:39 PM]
firedrake969: @eli how'd you get it? [0:39 AM]
Brourd: Little trick being, bypassing the determination of the free energy for the stem, and then removing it. G-C base pairs do not have a free energy penalty when terminating a helix to the exterior loop without dangling ends. [0:39 AM]
jnicol: dont confuse the energy with the sequence itself [0:39 AM]
firedrake969: I see -5.8, but not 5.8 [0:40 AM]
hoglahoo: yes, my reply was for Eli who was asking why it stops there... [11:40 PM]
firedrake969: energy = 5.8 + Lib.energyOfStruct(sequence, "(((....)))"); [0:40 AM]
Eli Fisker: Fire, sorry [0:40 AM]
firedrake969: Oh [0:40 AM]
jnicol: subtracting out the -5.8 is the same as adding 5.8 [0:40 AM]
firedrake969: For what? [0:40 AM]
firedrake969: ok, ok. [0:40 AM]
firedrake969: That makes more sense. [0:40 AM]
jnicol: everyone up to line 8 now? [0:40 AM]
firedrake969: yup [0:41 AM]
Eli Fisker: yes [0:41 AM]
machinelves: yep [0:41 AM]
firedrake969: oh suddenly this all made sense :3 [0:41 AM]
jnicol: substr(3,1) means we are skipping the first 3 characters in the sequence [0:41 AM]
hoglahoo: yay [11:41 PM]
jnicol: and take 1 character, which would be 'A" [0:41 AM]
jnicol: it does match, so we update the sequence here [0:42 AM]
vadafak123: hello  [0:42 AM]
firedrake969: Rerun the script? [0:42 AM]
firedrake969: Output the new energy, and replace it to U. [0:42 AM]
jnicol: rerun the loop [0:42 AM]
firedrake969: Repeat for C. [0:42 AM]
hoglahoo: vadafak123: hello [11:42 PM]
TomoeUzumaki: hello again [0:42 AM]
firedrake969: Hi [0:43 AM]
jnicol: replace the 'A' with 'G' [0:42 AM]
machinelves: cool! [0:43 AM]
firedrake969: sweet [0:43 AM]
jnicol: since we matched the if statement at line 8, we will skip lines 9,10 and 11 [0:43 AM]
jnicol: line 12 tells the program to loop at line 2 again [0:44 AM]
jnicol: so display the next line of energy values with lines 4-7 [0:45 AM]
jnicol: sequence.substr(3,1) is now 'G' [0:45 AM]
jnicol: so line 8 does not match [0:45 AM]
jnicol: goes to line 9 and it does match [0:45 AM]
jnicol: so base 4 is now changed from 'G' to 'U' [0:46 AM]
jnicol: repeat the loop [0:46 AM]
jnicol: display the energy of the UAAA loop [0:47 AM]
jnicol: sequence.substr(3,1) now equals 'U' [0:47 AM]
jnicol: so line 8 does not match, line 9 also does match [0:48 AM]
hoglahoo: I have to run, John, thanks for the class and the initiative! [11:48 PM]
jnicol: line 10 does, so change the tetraloop to CUUU [0:48 AM]
machinelves: bye hogla! [0:48 AM]
hoglahoo: later! [0:48 AM]
jnicol: thanks for everything Lee, catch you later [0:48 AM]
Eli Fisker: Bye Hogla [0:49 AM]
firedrake969: Bye [0:49 AM]
jnicol: now the next time through the loop the energy line is displayed and lines 8,9&10 do not match [0:49 AM]
jnicol: so finally line 11 sets the sequence to "" [0:50 AM]
jnicol: which is the signal to stop the loop [0:50 AM]
firedrake969: Yup [0:50 AM]
machinelves: nicely done! :) [0:50 AM]
jnicol: ty [0:50 AM]
firedrake969: Sweet, thanks [0:51 AM]
jnicol: In the output, we see that javascript has a rounding issue when using floating point numbers. [0:51 AM]
firedrake969: Anything we can do abuot it [0:51 AM]
firedrake969: about8 [0:51 AM]
firedrake969: about* [0:51 AM]
jnicol: ie, one of the line shows GAAA = 0.20000000000000018 kcal [0:51 AM]
jnicol: Lets round the results. The rounding in javascript is not pretty, but there are no good choices. [0:52 AM]
firedrake969: ok [0:52 AM]
firedrake969: round(num), right? [0:52 AM]
firedrake969: wait no [0:52 AM]
jnicol: delete all previous code and copy the following lines into the scripting window: [0:52 AM]
sequence = "GCGAAAACGC";
while (sequence.length > 0) {
  energy = 5.8 + Lib.energyOfStruct(sequence, "(((....)))");
  out(sequence.substr(3,4));
  out(" = ");
  out(Math.round(energy*10)/10);
  outln(" kcal");
  if (sequence.substr(3,1) == "A") { sequence = "GCGGAAACGC"; }
  else if (sequence.substr(3,1) == "G") { sequence = "GCGUAAACGC"; }
  else if (sequence.substr(3,1) == "U") { sequence = "GCGCAAACGC"; }
  else sequence = "";
}
jnicol: fire, that rounds to the ones place and removes the decima [0:53 AM]
firedrake969: How do you post like that? [0:53 AM]
jnicol: so we can trick it multiplying by 10, rounding then divide by ten [0:53 AM]
Omei: (For mormatting, javascript provides Number.toFixed(x)) [0:53 AM]
firedrake969: lost the documentation page :L [0:53 AM]
jnicol: another javascript specific function [0:53 AM]
LFP6: (I have my suprise ready, let me know when I should share!) [0:54 AM]
jnicol: thanks omei, I'll have to look into that [0:54 AM]
firedrake969: ok, that makes me understand better [0:54 AM]
jnicol: guess I'm old school :) [0:54 AM]
jnicol: about 5 more lfp6 [0:54 AM]
LFP6: Great [0:54 AM]
jnicol: 5 more minutes :) [0:54 AM]
firedrake969: Found it [0:55 AM]
LFP6: *Takes seat in back of class listening with interest* [0:55 AM]
jnicol: so any questions with the scripting? [0:55 AM]
jnicol: Congratulations to all those that lasted through this first EteRNA Class! [0:55 AM]
firedrake969: Not related to what we just did [0:55 AM]
machinelves: is there already a script repository somewhere? [0:55 AM]
firedrake969: http://eterna.cmu.edu/web/script/documentation/functions/ [0:56 AM]
firedrake969: that's the docs for this library [0:56 AM]
jnicol: yes elves, thanks eli [0:56 AM]
firedrake969: http://eterna.cmu.edu/web/script/ [0:56 AM]
firedrake969: Scripts [0:56 AM]
jnicol: yup [0:56 AM]
jnicol: Hope everyone now has a better understanding of the scripting interface and for using the energyOfStruct library call. [0:56 AM]
machinelves: thanks!  [0:56 AM]
jnicol: I welcome feedback on how we can make these classes better in the future [0:56 AM]
firedrake969: Thanks! [0:56 AM]
jnicol: and I invite players to suggest future topics of interest which can be added as comments to [0:57 AM]
firedrake969: Do you have a lesson plan right now? [0:57 AM]
Omei: Well done, John. [0:57 AM]
LFP6: Yeah, the functions page on the website misses many functions now included (a couple libraries, actually) [0:57 AM]
firedrake969: I'd like to go over the "Add Input" button [0:57 AM]
jnicol: https://getsatisfaction.com/eternagame/topics/eterna_class_time_1st_session_scheduled_2_5_at_6pm_est [0:57 AM]
jnicol: or pm me [0:57 AM]
LFP6: My turn? [0:57 AM]
jnicol: Thanks everyone! [0:57 AM]
machinelves: jnicol this was great, thank you for teaching this walkthrough! [0:57 AM]
Eli Fisker: THx for the lesson [0:57 AM]
Eli Fisker: Big thx [0:57 AM]
jnicol: your up LFP6! [0:57 AM]
jnicol: yw [0:57 AM]
firedrake969: How about you do a class every other Wednesday during 6-7 EST [0:57 AM]
firedrake969: And thanks again [0:57 AM]
machinelves: * big round of applause * :D [0:57 AM]
LFP6: Ok, get ready... [0:58 AM]
LFP6: http://videobam.com/xozXT [0:58 AM]
firedrake969: Ok [0:58 AM]
LFP6: Take a look and tell me what you think! [0:58 AM]
jnicol: I would like to, or perhaps other members of eterna can take turns [0:58 AM]
LFP6: Just a prototype now, and not published [0:58 AM]
firedrake969: Nice [0:58 AM]
firedrake969: Weebly? [0:58 AM]
Eli Fisker: Oh, its for live video [0:59 AM]
LFP6: How's you guess? [0:58 AM]
firedrake969: interface. [0:59 AM]
LFP6: No, but that too. :) [0:59 AM]
firedrake969: OMG it gave me a REALLY bad popup :L [0:59 AM]
jnicol: please send suggestions on topics you would like to learn about for future classes [0:59 AM]
LFP6: I actually forgot about that, thanks for the reminder [0:59 AM]
firedrake969: that was... creepy o3o [0:59 AM]
LFP6: @Fire: Blame Hog. He gave me the link. :S [0:59 AM]
firedrake969: @jnicol like said, I'd like to learn about how to get input from the user in the scripts. [0:59 AM]
machinelves: @jnicol more script walkthroughs would be awesomesauce [0:59 AM]
LFP6: (To the upload site) [0:59 AM]
firedrake969: like the "Add Input" button [0:59 AM]
firedrake969: ok gotta run, probably [0:59 AM]
LFP6: So anyhow, this is my ides for the EternaU portal. [0:59 AM]
LFP6: *idea [1:00 AM]
firedrake969: cool [1:00 AM]
jnicol: I have an idea for the next one that would use the input button [1:00 AM]
Eli Fisker: EternaU = ITunesU? [1:00 AM]
firedrake969: Lol... we should start something like that [1:00 AM]
LFP6: No. Eterna University [1:00 AM]
Eli Fisker: Ah [1:00 AM]
firedrake969: iTunesU = iTunes University [1:00 AM]
Eli Fisker: same thing :) [1:01 AM]
Eli Fisker: Almost [1:01 AM]
Eli Fisker: Good lessons [1:01 AM]
LFP6: Oh. Yeah, I guess. :P [1:00 AM]
firedrake969: hm [1:01 AM]
LFP6: So, thoughts? [1:01 AM]
firedrake969: http://eternau.weebly.com [1:01 AM]
firedrake969: But that looks like "eternau" [1:01 AM]
firedrake969: so http://eternauniversity.weebly.com [1:01 AM]
Eli Fisker: Last one looks good [1:01 AM]
machinelves: i think the enthusiasm is great. i don't know what's at videobam because my browser is apparently set to block nearly all of it [1:01 AM]
firedrake969: Ok [1:01 AM]
LFP6: Well, we'll get to that when I publish [1:01 AM]
firedrake969: I'll see if I can start one [1:01 AM]
LFP6: *if.when [1:01 AM]
LFP6: *if/when [1:01 AM]
machinelves: i'd like to see the portal thru our existing resources so as to keep things simple [1:02 AM]
firedrake969: ima steal ur domain [1:02 AM]
firedrake969: :P [1:02 AM]
Brourd: Just read through the backchat, nice work jnicol, with your scipting lesson. [1:02 AM]
LFP6: @FireDrake: Why? [1:02 AM]
firedrake969: jk [1:02 AM]
firedrake969: Or we could do eternauniversity.com [1:02 AM]
LFP6: *Shrugs* [1:02 AM]
machinelves: @jnicol agree, you did great! thanks for having links & scripts prepared, went very smoothly [1:02 AM]
LFP6: Yeah, but then we'd have to pay [1:02 AM]
LFP6: (For a custom domain) [1:02 AM]
jnicol: thanks brourd, elves and all [1:03 AM]