Showing posts with label bio233. Show all posts
Showing posts with label bio233. Show all posts

Friday, April 1, 2016

bio233 order list fall 2016

Wish list for bio233 orders

** marker pens
** 10 tally counters
** 95% enthanol large order for 70% enthanol bottle
**latex-free gloves
** lens cleaners

swim noodles
colored bacteria for edutainment

cover slips, fix

slides for gram stains: spirilum +/-, bacillus +/-, cocci +/-

x brightline hemacytometer chambers

scissors
scotch tapes
play doughs


nutrient plate agars

small bottles for ethanol. Idodine. Crystal violet.

Yeast selective media, drop-out media

bibulous papers
filter papers

BPB pH color indicator for fermentation lab. 

BD Calibrite beads

15ml falcon tubes


Thursday, December 10, 2015

bio233 final grade calculation in R

# Written Exams 50%
# Practical Exams 5%
# Assignments & Laboratory Reports 25%
# participation, Quizzes 5%
# Oral Presentations 15%
# bonus

require(xlsx)
rm(list=ls())
setwd("~/Dropbox/courses.student.research.dp/bio233.Fall2015_dpbx/course.management/grades/final-grade,fall15")
list.files()
tb = read.csv("201509-92253-01 Grades.csv")  #, colClasses=c(rep("character",4), rep("numeric",18)))
str(tb[,1:10])
names(tb)[1:10]
empty.columns= NULL
for (j in 7:length(tb[1,])){
  tb[,j] = as.numeric( tb[,j])
  if( max(tb[,j]) == 0 ) {
    print( mean(tb[,j]))
    print(paste(j, names(tb)[j]))
    empty.columns = c(empty.columns, j)
   }
}

names(tb)[ grep("bonus", names(tb))]

tb2 = tb[, - empty.columns]

tb2 = tb2[, -c(3:6)] #remove some character columns
names(tb2)[ grep( "not.count", names(tb2))] #remove does counted grades
tb3 = tb2[, - grep( "not.count", names(tb2)) ]

###
report = tb3[,1:2] #report table
###

# pick Exams
examColumns = names(tb3)[grep("Exam", names(tb3))]
examColumns[ grep("bonus", examColumns)]

exam1 = c(   "Quiz.Exam.1..Fall.2015..closed.book.part...Chapter.1.4...Real." ,                                                    
  "Assignment.Exam.1..Fall.2015.bonus.point.for.self.screen.recording.during.closed.book.exam..and.partial.credits..Real.",
  "Assignment.Exam.1..Fall.2015.bonus.point.for.self.screen.recording.during.open.book.exam..Real.",
  "Quiz.Exam.1..Fall.2015.Part.2..Real.",
  "Quiz.Exam.1..Fall.2015.Part.2..redo.for.makeup.points..Real.")      
exam2= c(  "Quiz.Exam.2..closed.book.part..Fall.2015..Real.",                                                                      
  "Assignment.bonus.point..self.recording.of.closed.book.exam..Exam.2..Fall.2015..Real.",                                
  "Assignment.bonus.point..self.recording.of.openbook..Exam.2..Fall.2015..Real.",                                        
  "Quiz.Exam.2.Open.book.part..Fall.2015..Real.")
exam3=c("Assignment.bonus.point..self.recording.of.closed.and.open.book..Exam.3.Fall.2015..Real.",                              
        "Quiz.Fall.2015.Exam.3..closed.book.part..ch8..10..12..28...Real." ,                                                    
        "Quiz.Fall.2015.Exam3.open.book.part..Real." )                      
final = c( "Quiz.Final.Exam..Fall.2015..closed.book.part..Real."  ,                                                                
  "Quiz.Final.Exam..open.book.part..Fall.2015..Real." ,                                                                  
  "Assignment.bonus.point..self.recording.of.closed.and.open.book..Final.Exam..Fall.2015..Real.")

#there is an extra column for Exam1 final grade. Do not double-count this again.
#"Exam.1.Fall.2015..Total.Grade..Real."                                                                                

report$Exam1 = apply( tb3[,exam1], 1, sum)
report$Exam2 = apply( tb3[,exam2], 1, sum)
report$Exam3 = apply( tb3[,exam3], 1, sum)
report$Final = apply( tb3[,final], 1, sum)

# take best 2 regular exam and the final
report$badExam = apply(report[,c("Exam1","Exam2", "Exam3")], 1, min)
report$ExamTot = (report$Exam1 + report$Exam2 + report$Exam3 + report$Final - report$badExam) / 3

# practical 5%
#"Assignment.Practical.Exam..microscope.and.morphogy..Fall.2015..Real."                                                
#"Assignment.Picture.of.streaked.plates..practical.exam..fall.2015..Real."                                              
practical = names(tb3)[grep("ractical", names(tb3))]
summary(tb3[practical])
report$PracticalTot = apply( tb3[,practical], 1, sum)*5/200

########
# assignments, quizs, lab reprts, 25%
tb3[1:2,grep("Assignment", names(tb3))]

#tb3[1:2,grep("Quiz", names(tb3))]
tb3[1:2,grep("v14", names(tb3))]
names(tb3)[grep("12", names(tb3))]
report$ch1 = tb3[, grep("v14Ch1",names(tb3))]
report$ch2= apply( tb3[, grep("v14Ch2",names(tb3))],1, max)
report$ch3= apply( tb3[, grep("v14..Ch3",names(tb3))],1, max)
report$ch4= apply( tb3[, grep("v14..Ch4",names(tb3))],1, max)
report$ch5= tb3[, grep("v14Ch5",names(tb3))]
report$ch6= apply( tb3[, grep("v14Ch6",names(tb3))],1, max)
report$ch7= apply( tb3[, grep("v14..Ch7",names(tb3))],1, max)
report$ch8= tb3[, grep("v14.Ch8",names(tb3))]
report$ch10= apply( tb3[, grep("v14..Ch10",names(tb3))],1, max)
report$ch12= apply( tb3[, grep("v14..Ch12",names(tb3))],1, max)
#report$ch12= tb3[, grep("v14..Ch12",names(tb3))]
report$ch28= apply( tb3[, grep("v14..Ch28",names(tb3))],1, max)

report$scale= apply( tb3[, grep("scale.of.microbes",names(tb3))],1, max)
report$DePaepe= apply( tb3[, grep("DePaepeTaddei",names(tb3))],1, max)
report$EcoliGenome= apply( tb3[, grep("E.coli.genome",names(tb3))],1, max)
report$video1 = tb3[, "Assignment.Homework..Video.recording.of.self.introduction..Real."]

misc = c("Assignment.Homework..Video.recording.of.self.introduction..Real.",
"Assignment.Lab.report..west.nile.virus..Individual.effort...Real.",
"Assignment.Serial.dilution.lab.group.report..Each.group.only.needs.to.submit.1.report...Real.",
"Quiz.Lab.report..myxoma.and.australian.rabbits..Real.",
"Assignment.Report.for.Gram.stain.lab..individual.report...Real.",
"Assignment.Milestone.check..googleDoc.serial.dilution.group.data.input..Real.",
"Assignment.Milestone.check..googleDoc.serial.dilution.group.data.input..for.plat.counting.results..Real.",
"Assignment.Ontime.submission.of.oral.presentation.topic.on.GoogleDoc..Real.")
tb3[1:2,misc]
report$misc = apply( tb3[, misc],1, sum)

names(report)
assignment.lab = c("ch1","ch2","ch3","ch4","ch5","ch6","ch7","ch8","ch10","ch12","ch28","scale","DePaepe","EcoliGenome","video1","misc")
summary(report[,assignment.lab])

report$assignment.lab = apply(report[, assignment.lab], 1, sum)
report$assignment.labTot = 25* report$assignment.lab / (ceiling(max(report$assignment.lab)/10)*10)

#participation 5
report$participation = tb3[,"Attendance.Attendance..Real."]

### bonus
report$bonus = tb3[,"Assignment.bio233.bonus.points..fall.2015..Real."]

#oral presentation
names(tb3)[grep("oral", names(tb3))]
report$oral = tb3[,"Assignment.Second.video.recording..oral.presentation.of.a.primary.research.paper.on.microbiology..individual.effort..Real."]
report$oral = report$oral * 15/ 100

names(report)[grep("Tot", names(report))]
# Final Grade
final.grades = c("ExamTot","PracticalTot","assignment.labTot", 'oral','participation', 'bonus')
report$TotalGrade = apply( report[,final.grades], 1, sum)
source("grade2letter.R")
report$letter = lapply(report$TotalGrade,  grade2letter)

write.xlsx(report, "bio233_fall2015_final_grades.xlsx")

#generate a sorted report
report.sorted = report[order(report$TotalGrade),]
write.xlsx(report.sorted, "bio233FinalGradesFall2015-sorted.xlsx")

#generate a student report file
studentReport = c("First.name","Last.name", final.grades, 'TotalGrade', 'letter' )
write.xlsx(report.sorted[,studentReport], "bio233FinalGradeFall2015_student_report.xlsx")
 


Thursday, November 19, 2015

bio233 Thu 20151120 review

Go over exam 3 open book questions

Ch12, ch28 questions

Phylogeny, tree topology

Ortholog, paralogs


Tuesday, November 17, 2015

bio233, 20151117Tue

epidemiology, london cholera case

post-course survey

review

Monday, November 9, 2015

bio233 20151109Mon lab, virus tradeoff paper, west-nile virus lab, streak plates.

=> virus tradeoff paper. (Students did not actually discuss the paper. They just went over the exercises).

=> west-nile virus lab,
Students worked on their own in groups.

=> streak plates. Most students work on their own.



Wednesday, October 28, 2015

Protocol for using MEGA to generate a 16s rDNA tree for giant panda evolution

Overview:
We will first align the 16s rDNA sequences and then generate a neighor-joining tree.

The steps are illustrated below:

Start MEGA6 software



Click "File" --> "Open A File/Session", Choose "panda_16srDNA.fas". 



 Choose "Align"




Click "Alignment"-->"Align by ClustalW"



Click "OK" to select all sequences, 

Click "OK" to accept the default setting for alignment


Click "No", because 16s rDNA is an RNA coding sequence

Your sequences are now aligned. 

Click "Data" -->"Export Alignment"-->"MEGA Format"




Input an appropriate file name. 


Input an appropriate title: 


Choose "No" because 16s rDNA is not protein-coding gene.




Now, we can start to generate a phylogeny. 
At the main MEGA window, click "Phylogeny" -->"Construct/Test Neighbor-Joining Tree": 



Choose the appropriate alignment file, and then "Open"



Click "Computing" to use the default setting



Generated tree (only partial picture is shown here)


Save your image to use in your lab report.



Tuesday, October 20, 2015

bio233, review for exam 2

Course evaluation
learning outcomes
key concepts
mentioned that cAMP and glucose are in a seesaw.

Monday, October 19, 2015

bio233, 20151019Mon

_ submission of oral presentation topic.

2:20pm, _ distribute midterm grades,

2:300-3pm -> count colonies
 _ tally, marker, counting colonies
_ input data on googleSheet

3:20pm_ practical test on aseptic streak for single colonies.


_ microscrope exam

Sunday, October 18, 2015

bio233 midterm grades




byte:midterm,Fall15 hqin$ pwd
/Users/hqin/Dropbox/courses.student.research.dp/bio233.Fall2015_dpbx/course.management/grades/midterm,Fall15


/Users/hqin/Dropbox/courses.student.research.dp/bio233.Fall2015_dpbx/course.management/grades/exam1,fall15

Thursday, October 8, 2015

bio233, 20151008Thu Ecoli genome investigation in R

2:30-3:20pm. short class. Using R code to analyze E coli K12 genome.
Ask students to work in pairs. Several students said, "We like this exercise."

Youtube:  https://youtu.be/UeUVSxnK8qo

R Code:
source("http://bioconductor.org/biocLite.R")
biocLite('seqinr')
require(seqinr)

# Change working direcotry to the current folder
list.files()

seqs = read.fasta(file="EcoliK12.fna")
# seqs = seqs[[1:3]]
str(seqs);

# look at the first sequence
seq1 = seqs[[789]]
getName(seqs[[789]])
table( seq1 ); #nucleotide composition
GC(seq1);  # GC content
  
# now, try to find name and GC content for 865th gene.

# a loop for all sequences 
num = 1:length(seqs); #these are storages for later use
gc  = 1:length(seqs); # gc = num; 
out = data.frame( cbind( num, gc ) );

for( i in 1:length(seqs) ) {
  out$gene_name = getName( seqs[[i]] )
  out$gc[i] = GC( seqs[[i]] );
}
head(out)

write.csv(out, "gc.csv", row.names=F) # output the results

#### now, calculate the length of each gene
num = 1:length(seqs);
out2 = data.frame( cbind( num) );
for( i in 1:length(seqs) ) {
  out2$name[i] = getName( seqs[[i]] )
  out2$len[i] = length( seqs[[i]] );  
  out2$gc[i] = GC( seqs[[i]] );
}
out2;

write.csv(out2, "gc2.csv", row.names=F) # output the results

prot = translate( seqs[[999 ]])
length(prot)
prot
table(prot)

# now, find the protein length  for 1005th gene

#### now, translate the ORF into proteins
num = 1:length(seqs);
out3 = data.frame( cbind( num) );
for( i in 1:length(seqs) ) {
  out3$name[i] = getName( seqs[[i]] )
  out3$ORFLen[i] = length( seqs[[i]] );  
  prot = translate( seqs[[i ]])
  length(prot)
  out3$ProtLen[i] = length( prot)  
}
out3;
write.csv( out3, "gc-prot.csv")

Tuesday, October 6, 2015

bio233, Tue, serial dilution data analysis for hemocytometer

Led 20 students download and install R and Rstudio.
Then run sample R code to analyze the class data on hemocytometer.

=> Problems:
-> Many students did not ZIP file and how to extract them. On windows computer, the R code can be openned directly using Rstudio, but now xlsx or csv files.
-> R package 'xlsx' lead to runtime error on Yosemite Rstudio.  I had to convert xlsx to csv files for these students to run the codes.  Lessons: Simple methods are always safer than fancier ways in classrooms. 

=> Solutions
-> I went step-by-step on screen, and make sure most students caught up.
-> I ask students who finished the steps to help students that were stuck.

Monday, October 5, 2015

*** (in progress) bio233, serial dilution lab.

20150928Monday, streak DBY1394, box 1, I1 to YPD plate. 30C O/N. DBY1394 grew relatively slower than wild isolates.

20150930Wed, Pick colonies for growth in 5ml YPD, 30C O/N in 10ml falcon tube. (Cell precipated at the bottom).



  Made fresh YPD plates, 20% glucose.

20151001Thu. 5pm. Added 1ml of overnight grown culture into 10 ml of YPD in large glass tube. 30C shaker.  A total of 4 tubes were prepared.

Friday, expand to 4 more large glass tubes

20151005 Monday
1pm:  mix all tubes and do serial dilutions. I prepared 9 groups, but only 6 group actually formed.

2pm, bio233 lab. I did not do a demo for the class, and many mistakes happened.
1) many student put pipetman deep into glass culture tubes, and bunsen burners were not turned on.
2) many students did not know which pipetman to use for what volumes.
3) some students forgot to put cover skips on hemocytomers.
4) some students put glassbeads onto their gloved hands and then to plates.
5) many students did vortex their samples before put them on YPD plates.

3:45pm. Students put their number into master googleDoc sheet.

Items:
10 sets of pipettman. P1000, P200, P20. tips.  YPD plates.  Nutrient plates. Glass beads. Hemocytometer. Tally counters.


Reference:
http://hongqinlab.blogspot.com/2014/02/bio233-lab-serial-dilution-feb-26-2014.html
http://hongqinlab.blogspot.com/2014/10/bio233-20131006-serial-dilution-loh.html


Thursday, October 1, 2015

bio233, chapter 5, growth (part 1)

Class started 10 mintues later.

Students worked on two problems.

1) Growth curve problem.
For the slope and intercept, one student volunteered to solve the problem on the board.
For generation calculation, I asked two students to work on the board. Most students can reach
 N = N0 * 2^n.  However, most did not know how to solve for "n".

2) Hemocytometer problem.
I let students read the manual of Hausser bright line hemocytomer counter.




Tuesday, September 29, 2015

bio233, 20150930Tue, exam 1 review,

Exam 1, part 2, make up, bamboo pen

makeup open in class.


bio233 20150929Tue review of exam 1

bio233 20150929Tue review of exam 1

go over exam 1

make up exercises for part 2. Group exercise.

A few student sat alone, but I asked them to join a group nearby, they were welcomed by the groups.
In one group, students were explaining how to do unit conversions and scale conversions.

In another group, students were exchanging answers, and they were trying to gaming the test as a group. The group that were gaming the system quickly got all the correct answers. Unfortunately, they have missed the point of the entire makeup practice.

The students clearly enjoyed the group work to redo the exam.


Thursday, September 24, 2015

bio233 exam 1, part 2, open book exam.

bring papers for calculation question.

color code for the structure question
 white: C
 red:  O
 blue: N
 orange/yellow: P


Bring extra paper for students to show their process to get some partial credits.



Monday, September 21, 2015

bio233 gram stain lab, Monday

Gram stain lab.

Sunday: 
I prepared the lab on Sunday.

Items: 
Distilled water
·      Slides, cover slips
·      Bunsen burners and lighter
·      Inoculating loops
·      Microscope (optional oil-immersion lenses, oil cleaner)
·      Lens wipers
·      Bibulous papers (Absorbent papers)
·      Wax pencil
·      Crystal violet
·      Gram iodine
·      Safranin 
·      95% EtOH
·      75% EthOH
·      Dropping pipettes
·      Shape collection box
·      Staining rack
·      Clips for staining
·      White paper towel to absorb the runoff
·      Kim wipes
Lab coat is recommended
Microscope with vertical adaptoer, smart phone stages. 

Monday  gram stain lab, 2pm-4:40pm
Many students did not know how to use microscope. 
There is a shortage of microscope with vertical adapters. 




Thursday, September 17, 2015

bio233 20150917Thu go over problem sets

bio233 20150917Thu go over problem sets

Go over youtube tutorial on screen cast. Bonus points will be given to students for self-recording during exam.