Investigation Title Transcription profiling of wild type B. cereus and a deltion mutant of the PlcR regulator at two time points Comment[AdditionalFile:XLS] E-MEXP-1472.hybs.xls Comment[AdditionalFile:TXT] E-MEXP-1472_additionaldata.txt Comment[Submitted Name] PlcR_regulon Experimental Design in_vivo_design co-expression_design genetic_modification_design transcription profiling by array Experimental Design Term Source REF mo mo EFO Comment[AEMIAMESCORE] 5 Comment[ArrayExpressReleaseDate] 2008-06-01 Comment[ArrayExpressAccession] E-MEXP-1472 Comment[MAGETAB TimeStamp_Version] 2010-08-09 22:45:24 Last Changed Rev: 13058 Experimental Factor Name time genotype Experimental Factor Type time genotype Experimental Factor Term Source REF Person Last Name Faegri Person First Name Karoline Person Mid Initials Person Email karolinf@biotek.uio.no Person Phone +4722844920 Person Fax Person Address Sem Sælands vei 2b, Oslo, Oslo, 0316 Oslo, Norway Person Affiliation School of Pharmacy Person Roles submitter Person Roles Term Source REF The MGED Ontology Quality Control Type Quality Control Term Source REF Replicate Type Replicate Term Source REF Normalization Type Normalization Term Source REF Date of Experiment Public Release Date 2008-06-01 PubMed ID Publication DOI Publication Author List Publication Title Publication Status Publication Status Term Source REF Experiment Description Comparison at two different timepoints of expression profiles of wild_type Bacillus and a deletion mutant of the PlcR regulator. Additional processed data can be found in the FTP directory for this experiment ftp://ftp.ebi.ac.uk/pub/databases/microarray/data/experiment/MEXP/E-MEXP-1472/ Protocol Name P-MEXP-103906 P-MEXP-103905 P-MEXP-103908 P-MEXP-103909 P-MEXP-104018 P-MEXP-104129 P-MEXP-104131 Protocol Type specified_biomaterial_action grow nucleic_acid_extraction labeling hybridization feature_extraction bioassay_data_transformation Protocol Description 3 hours: Sample 10 mL culture
5 hours: Sample 5 mL culture
The sample is transferred directly to a tube containing an equal volume of ice cold methanol (predispensed and kept at -20 °C prior to use).
Mix the sample with methanol by shaking and leave at room temperature for 5 minutes.
Sentrifuge at 3700 g and 4 °C for 5 minutes.
Remove supernatant carefully, and add 15 mg/mL lysozyme in TE buffer (pH = ??)
Vortex and incubate for 20 minutes.
Add 4 mL of Buffer RLT from the Qiagen RNeasy midi kit. Vortex.
Freeze at - 70 °C. Freeze stock is streaked on LB agar plates and grown over night at 30 °C. The next day, 10 mL of LB medium is inoculated with bacteria from a single colony and grown for ~17 hours at 30 °C and 250 rpm in a 20 mL tube. For the growth experiments, 500 mL erlenmeyer flasks with ridges and metal caps are filled with 50 mL LB medium. These flasks are prewarmed at ~17 hours at 30 °C and 250 rpm. The flasks are inoculated with 1000 µL of the liquid over night culture and incubated at 30 °C and 250 rpm.

Harvesting a sample:
3 hours: Sample 10 mL culture
5 hours: Sample 5 mL culture
The sample is transferred directly to a tube containing an equal volume of ice cold methanol (predispensed and kept at -20 °C prior to use).
Mix the sample with methanol by shaking and leave at room temperature for 5 minutes.
Sentrifuge at 3700 g and 4 °C for 5 minutes.
Remove supernatant carefully, and add 15 mg/mL lysozyme in TE buffer (pH = 7.6)
Vortex and incubate for 20 minutes.
Add 4 mL of Buffer RLT from the Qiagen RNeasy midi kit. Vortex.
Freeze at - 70 °C.
Thaw sample for 15-20 minutes in a 37 °C waterbath (buffer RLT was added to samples prior to freezing).
Proceed with step 4 of the Qiagen RNeasy midi prep). Perform the optional DNase treatment step. Start with 20 µg of precipitated RNA from each sample.
Sentrifuge for 15 minutes at 4 °C and 13 000 rpm.
Remove supernatant carefully.
Add 100 µL ice cold 70 % ethanol.
Sentrifuge for 15 minutes at 4 °C and 13 000 rpm.
Remove supernatant carefully. Spin quickly once more and remove the last traces of supernatant.
Allow the pellet to dry at room temperature for 15-30 minutes.
Dissolve in 8.0 µL DEPC water (or 7.0 µL DEPC and 1.0 µL spike RNA).
Add 5 µL of 100 ng/µL random hexamers. Incubate at 70 °C for 10 minutes. Cool on ice until ready for use.
Continue with the protocol for the FairPlay labelling Kit from Stratagene, starting with step 3. When dye coupling, use color from Amersham biosciences (GE healthcare) and follow the Fairplay II protocol for dye coupling and purification so that you are left with 50 µL of each labeled sample. Concentrating samples:
Prepare a microcon column (Millipore)by sentrifuging with 500 µL MQ water for 8 + 2 minutes at 13 000 rpm room temperature.
Combine the samples to be cohybridized and reduce the volume to no more than 35 µL by sentrifuging for about 4 minutes at 13 000 rpm.
Collect the combined samples by turning the microcon column upside down in a fresh tube and spinning at 13 000 rpm for 2 minutes. If volume is less than 35 µL, adjust with MQ water.

Prehybridization:
Prehybridization solution
Per 50 mL tube: Final concentration:
12.5 mL 20x SSC 5x SSC
250 µL 20 % SDS 0.1 % SDS
667 µL 7.5 % BSA 0.1 % BSA
36.6 mL MQ water
total volume 50 mL

Incubate arrays in prehybridization solution (one slide per 50 mL falcon tube) at 42 °C for 30-60 minutes.
Take the arrays out and wash by immersing in MQ water (3 x 30 seconds, fresh water every time) and then in isopropanol (30 seconds)(Do not let slides dry!). Dry arrays by centrifugation in new falcon tubes at 290 g for 4 minutes. Put in new, dry falcon tubes until used.
Prehybridized slides should be used within 1.5 hours.

Hybridization solution:
Per sample: Final concentration:
24 µL 100 % formamide 30 % formamide
20 µL 20 20x SSC (commercial) 5x SSC
1 µL 8 % SDS 0.1 % SDS
0.9 µL 0.9 mg/mL sperm DNA 0.1 mg/mL sperm DNA
total volume = 45.9 µL

Hybridisation:
Prepare fresh hybridization solution and add 45 µL to each 35 µL labeled probe (mixed samples) to a total volume of 80 µL.
Denature at 95 °C for 2 minutes.
Spin briefly and leave at 42 °C for approximately 20 minutes.
Place the prehybridized array on a 42 °C heat block with the array side up. Carefully place a lifterslip in position over the array. Leave for 2-4 minutes to preheat. Apply labeled cDNA to the microarray by pipetting the solution slowlyonto the slide at the edge of the lifterslip. Let capillary forces pull the labeled cDNA under the lifterslip.
Add 30 µL 5x SSC to the two holes in the hyb chamber, put the slide inside and seal tightly.
Submerge the chambers in a water bath at 42 °C for 14-18 hours.

Washing:
Wash solution 1: 0.5 X SSC, 0.01 % SDS, sterile filtered
Wash solution 2: 0.06 X SSC, sterile filtered
Wash solution 3: Isopropanol

For each array, you need
3 tubes with 50 mL of wash solution 1, at 42 °C
2 tubes with 50 mL of wash solution 2, at 42 °C
1 tube with 50 mL of wash solution 3, at room temeperature

Transfer the slide carefully from the hybridization chamber to the first tube of wash solution 1. Remove the lifterslip. Wash for 5 minutes in each tube of wash solution 1 and 2, in successive order, then wash for 30 seconds in isopropanol. Transfer the array to an empty tube and centrifuge for 4 minutes at 290 g, room temperature. Transfer the slide to a clean, empty tube until scanning.
PMT gain was adjusted separately for the two channels to give a final ratio of approximately 1 between the channels.
Gridding and spot annotation was also performed with GenePix Pro software. Normalisation was done in R 2.4.1. Limma was used as the basic package for normalisation. For weighting and filtering, slightly modified versions of functions made by Endre Anderssen were used.

The two different array designs were loaded, normalized and filtered separately, and combined after the final filtering. The functions are listed at the bottom. Because some of the positive controls appeared to be highly differentially regulated, a separate normalisation was performed where the positive controls were not filtered out. In the final gene list, the results from this normalisation was used for the positive controls. However, since the positive controls are present in 126 replicates instead of 4, I did not find it proper to let them influence the normalisation for all the genes. Some slides were discarded from analysis due to poor quality.

#filesa <- (results with old array design)
#filesb <- (results with new array design)

#loading functions:
RGa <- gprload(filesa,gene_status = "gene")
RGb <- gprload(filesb,gene_status = "gene")

# Marking the positive controls as such
RG2a <- SetPosContr(RGa,pcID)
RG2b <- SetPosContr(RGb,pcID)

#Spots below threshold value in both channels,
#saturated in both channels or flagged bad in GenePix,
#are set to NA
RG3a<-FilterRG(RG2a,BothChannals=TRUE,RedMinIntensity=500,
GreenMinIntensity=500,RedBgRatio=2,GreenBgRatio=2,
SaturationLimit=50000,
ControlSpots="Weigh down controls",
Flags="Remove flagged spots")
RG3b<-FilterRG(RG2b,BothChannals=TRUE,RedMinIntensity=500,
GreenMinIntensity=500,RedBgRatio=2,GreenBgRatio=2,
SaturationLimit=50000,
ControlSpots="Weigh down controls",
Flags="Remove flagged spots")

#Because the negative spots appeared as dark holes
#in the background, I find it improper to subtract
# background. However, an offset is added to stabilize
#the weak intensities.
RG4a<-backgroundCorrect(RG3a$RGfiltered,method="none",offset=100)
RG4b<-backgroundCorrect(RG3b$RGfiltered,method="none",offset=100)

#Normalisation is done with loess:
MAa <- normalizeWithinArrays(RG4a,method="loess")
MAb <- normalizeWithinArrays(RG4b,method="loess")

#Sort genes, remove controls. Replicates
#are averaged within each slide.
MA2a<-FilterMA(MAa,RemoveControls=TRUE)
MA2b<-FilterMA(MAb,RemoveControls=TRUE)

MA2<-cbind(MA2b$MAfiltered,MA2a$MAfiltered)


FUNCTIONS:
gprload <- function(files,gene_status="cDNA"){


for (fil in files){
#Load one array data
#Read data as limma boject
RG <- read.maimages (fil, source="genepix",wt.fun=wtflags(0.001))

#Organize the data

#Set up printer and spot types information
RG$printer <- getLayout(RG$genes)
types <- readSpotTypes()
RG$genes$Status <- controlStatus (types, RG)
#End information setup

#Sort by ID
#Sort list object
ID_index <- sort(RG$genes$ID,index.return=T)
RG <- RG[ID_index$ix,]
#Data organized




#Merge Arrays into one object

if (fil==files[1]){
mergeRG <- RG}
else{
mergeRG <-cbind(mergeRG,RG)
}


} #end for all files

RG <- mergeRG

rm(mergeRG)
naind <- is.na(RG$genes$ID)
RG$genes$Name[naind] = "Blank"
RG$genes$ID[naind] = "Blank"
RG$genes$Status[naind] = "Blank"
#Extract signal spots
cDNA_index <- RG$genes$Status == gene_status
cDNA_RG <- RG[cDNA_index,]
#Make sure replicates are correctly handled
ind_1 <- c(1:(nrow(cDNA_RG)/2))
ind_1 <-ind_1*2
ind_2 <-ind_1-1
if (all(cDNA_RG$genes$ID[ind_1] == cDNA_RG$genes$ID[ind_2]) !=TRUE){
warning("Duplicate spots have not been handled correctly",call.=FALSE)}
#must have all true

RG
}

#Mark positive controls as such:
pcID<-c("AX00000186","AX00002031","AX00002185","AX00002262",
"AX00002461","AX00002558","AX00002767","AX00002783",
"AX00002825","AX00003125","AX00003268","AX00004784")
SetPosContr <- function(RG,pcID){
for (pc in pcID){
ind <- RG$genes$ID == pc
RG$genes$Status[ind] <- "pos_contr"}
RG
}

##############

FilterRG<-function(RG,BothChannals=TRUE,RedMinIntensity=200,GreenMinIntensity=200,RedBgRatio=2,GreenBgRatio=2,SaturationLimit=50000,ControlSpots="Weigh down controls",Flags="Remove flagged spots")
{library(limma)
#######Functions to handle control spots###############
##################################################
weighdownControls<-function(RG,GeneStatus="gene") {
gene_index<- RG$genes$Status == GeneStatus
RG$weights[!gene_index,]=0
RG
}
get_genes<-function(RG,GeneStatus="gene") {
gene_index<- RG$genes$Status == GeneStatus
RG<-RG[gene_index,]
RG
#make sure integrity of replicates
}
FindGeneStatus <- function(RG) {
#find gene code
stati <- unique(RG$genes$Status)
counts <- vector("numeric",length(stati))
index <- 0
for (sta in stati) {
index <- index+1
ind <- RG$genes$Status==sta
counts[index]<-sum(ind)
}
ind<-which.max(counts)
GeneStatus<-stati[ind]
GeneStatus
}
#######################################################
######################################################
GeneStatus<-FindGeneStatus(RG)
if (ControlSpots=="Weigh down controls"){
RG<-weighdownControls(RG,GeneStatus=GeneStatus)
}
if (ControlSpots=="Remove controls"){
RG<- get_genes(RG,GeneStatus=GeneStatus)
}
#}
#set up initial information about the dataset
n_arrays<-dim(RG)
n_spots <-n_arrays[1]
n_arrays<-n_arrays[2]
#Detect bad spots
#If both channals are saturated
sat_index <- (RG$G > SaturationLimit & RG$R > SaturationLimit)
#If both cannals are low
g_index <- RG$G < GreenMinIntensity | RG$G < RG$Gb*GreenBgRatio
r_index <- RG$R < RedMinIntensity | RG$R < RG$Rb*RedBgRatio
if (Flags == "Remove flagged spots") {
w_index <- RG$weights == 0.001
}
else{
w_index = as.logical(RG$weights)
w_index=FALSE
}
if (BothChannals==TRUE) {
spot_index <- (g_index & r_index) | (sat_index) |(w_index)
}
else{
spot_index <- g_index | r_index | sat_index |w_index
}
RG$G[spot_index]<-NA
RG$R[spot_index]<-NA
return(list(RGfiltered=RG))
}


##################
FilterMA <- function(MA,GeneStatus,SortGenes=TRUE,RemoveControls=TRUE,
MergeDuplicates=TRUE, min.spots.required=1.5)
{
library(limma)
get_genes<-function(RG,GeneStatus="gene")
{gene_index <- RG$genes$Status == GeneStatus
RG<-RG[gene_index,]
RG
#make sure integrity of replicates
}
sortGenes <- function(RG){
#Sort by ID
#Sort list object
ID_index <- sort(RG$genes$ID,index.return=T)
RG <- RG[ID_index$ix,]
#Data organized
}
averageGenes <- function(MA){
#MA <- sortGenes(MA)
D <-dim(MA)
N <- unique(MA$genes$ID)
M<-matrix(0,length(N),D[2])
A <-matrix(0,length(N),D[2])
MA2 <-MA[1:length(N),]

##########Her er modifiseringen############
for (i in 1:length(N)){
gene_index <- MA$gene$ID==N[i]
#print(sum(gene_index))
#print(MA$M[gene_index,])
#print(MA$A[gene_index,])
#print(length(MA$M[gene_index,]))
#print(sum(gene_index))
#print(ncol(MA$M[gene_index,]))

for(j in 1:ncol(MA$M[gene_index,])) {
good_spots = 0
MAcol <- MA$M[gene_index,j]
#print(MAcol)
for(k in 1:length(MAcol)) {
#print(MAcol[k])
if( is.na(MAcol[k])==FALSE ) { good_spots = good_spots + 1}
}
if ( good_spots > min.spots.required){ M[i,j] <- mean((MAcol),na.rm=T) }
else{ M[i,j] <- NA }
#print(M[i,j])
}
for(j in 1:ncol(MA$A[gene_index,])) {
good_spots = 0
MAcol <- MA$A[gene_index,j]
#print(MAcol)
for(k in 1:length(MAcol)) {
#print(MAcol[k])
if( is.na(MAcol[k])==FALSE ) { good_spots = good_spots + 1}
}
if ( good_spots > min.spots.required){ A[i,j] <- mean((MAcol),na.rm=T) }
else{ A[i,j] <- NA }
#print(A[i,j])
}

#print(M[i,])
#print(A[i,])

MA2$genes$Name[i]<-MA$genes$Name[gene_index][1]
MA2$genes$Status[i]<- MA$genes$Status[gene_index][1]

}
MA2$M <-M
MA2$A <-A
MA2$genes$ID<-N
MA2
}


if (SortGenes==TRUE){
SortGenes <-TRUE
MA<-sortGenes(MA)
}
if (RemoveControls==TRUE){
RemoveControls <- TRUE
MA<-get_genes(MA,GeneStatus="gene")
}
if (MergeDuplicates==TRUE){
MA <- averageGenes(MA)}
return(list(MAfiltered=MA))
}


#design for results after 3 hours:
design<-c(1,-1,-1,1,-1,1,1,-1)
#design for results after 5 hours:
design<-c(1,1,-1,1,-1,-1,1,1,-1)

#A linear model is fitted to the data
fit <- lmFit(MA2,design=design,ndups=1)
#Statistical probabilities are calculated using
#moderated t-statistics
bfit <- eBayes(fit,proportion=0.01,stdev.coef.lim=c(0.1,4))
#A gene list is produced, using fdr correction to account
#for the problem of multiple testing
GL <- topTable(bfit,n=8000,adjust="fdr")

Protocol Parameters min temperature;stop time;start time;media; Amplification;Extracted product; Amount of nucleic acid labeled;Label used;Amplification; Chamber type;Quantity of label target used;time;Volume;temperature; Protocol Hardware GenePix 4000B [Axon Instruments] Protocol Software GenePix Pro [Axon Instruments] Protocol Contact Protocol Term Source REF The MGED Ontology The MGED Ontology SDRF File E-MEXP-1472.sdrf.txt Term Source Name The MGED Ontology ArrayExpress mo EFO The MGED Ontology Term Source File http://mged.sourceforge.net/ontologies/MGEDontology.php http://www.ebi.ac.uk/arrayexpress http://mged.sourceforge.net/ontologies/MGEDontology.php http://www.ebi.ac.uk/efo/ http://mged.sourceforge.net/ontologies/MGEDontology.php Term Source Version