# HG changeset patch # User davidvanzessen # Date 1394548744 14400 # Node ID 8b026af4b298c4bd7005c40e501ad040a23cad0a # Parent 84a386d964527f6063c1ffcc0e1c48c123ab76e1 Uploaded diff -r 84a386d96452 -r 8b026af4b298 RScript.r --- a/RScript.r Tue Mar 11 09:21:57 2014 -0400 +++ b/RScript.r Tue Mar 11 10:39:04 2014 -0400 @@ -243,14 +243,14 @@ } clonalityFrameSplit = split(clonalityFrame, f=clonalityFrame[,c("Sample", "Replicate")]) - lapply(clonalityFrameSplit, FUN=ClonalitySampleReplicatePrint) + #lapply(clonalityFrameSplit, FUN=ClonalitySampleReplicatePrint) ClonalitySamplePrint <- function(dat){ write.table(dat, paste("clonality_", unique(dat$Sample) , ".tsv", sep=""), sep="\t",quote=F,row.names=F,col.names=T) } clonalityFrameSplit = split(clonalityFrame, f=clonalityFrame[,"Sample"]) - lapply(clonalityFrameSplit, FUN=ClonalitySamplePrint) + #lapply(clonalityFrameSplit, FUN=ClonalitySamplePrint) clonalFreq = data.frame(data.table(clonalityFrame)[, list(Type=.N), by=c("Sample", "VDJCDR3")]) clonalFreqCount = data.frame(data.table(clonalFreq)[, list(Count=.N), by=c("Sample", "Type")]) @@ -315,3 +315,32 @@ clonalityOverviewSplit = split(clonalityOverview, f=clonalityOverview$Sample) lapply(clonalityOverviewSplit, FUN=ClonalityOverviewPrint) } + +if("Functionality" %in% colnames(test)) +{ + newData = data.frame(data.table(PROD)[,list(unique=.N, + VH.DEL=mean(X3V.REGION.trimmed.nt.nb), + P1=mean(P3V.nt.nb), + N1=mean(N1.REGION.nt.nb), + P2=mean(P5D.nt.nb), + DEL.DH=mean(X5D.REGION.trimmed.nt.nb), + DH.DEL=mean(X3D.REGION.trimmed.nt.nb), + P3=mean(P3D.nt.nb), + N2=mean(N2.REGION.nt.nb), + P4=mean(P5J.nt.nb), + DEL.JH=mean(X5J.REGION.trimmed.nt.nb), + Total.Del=( mean(X3V.REGION.trimmed.nt.nb) + + mean(X5D.REGION.trimmed.nt.nb) + + mean(X3D.REGION.trimmed.nt.nb) + + mean(X5J.REGION.trimmed.nt.nb)), + + Total.N=( mean(N1.REGION.nt.nb) + + mean(N2.REGION.nt.nb)), + + Total.P=( mean(P3V.nt.nb) + + mean(P5D.nt.nb) + + mean(P3D.nt.nb) + + mean(P5J.nt.nb))), + by=c("Sample")]) + write.table(newData, "junctionAnalysis.csv" , sep=",",quote=F,na="-",row.names=F,col.names=F) +} diff -r 84a386d96452 -r 8b026af4b298 combined.sh --- a/combined.sh Tue Mar 11 09:21:57 2014 -0400 +++ b/combined.sh Tue Mar 11 10:39:04 2014 -0400 @@ -44,63 +44,94 @@ inputFile=$PWD/merged.txt -outputFile=$html outputDir=$imageDir +outputFile=$outputDir/index.html mkdir $outputDir Rscript --verbose $dir/RScript.r $inputFile $outputDir $outputDir $clonalType 2>&1 -echo "" > $outputFile +cp $dir/tabber.js $outputDir +cp $dir/style.css $outputDir +cp $dir/script.js $outputDir +echo "

Click here for the results

Tip: Open it in a new tab (middle mouse button or right mouse button -> 'open in new tab' on the link above)
" > $html +echo "
" >> $outputFile echo "" >> $outputFile echo "" >> $outputFile -echo "" >> $outputFile +echo "
" >> $outputFile samples=`cat $outputDir/samples.txt` count=1 -echo "" >> $outputFile -hasReplicateColumn="$(if head -n 1 $inputFile | grep -q 'Replicate'; then echo 'Yes'; else echo 'No'; fi)" +echo "
" >> $outputFile for sample in $samples; do - clonalityScore="$(cat $outputDir/ClonalityScore_$sample.csv)" - echo "
" >> $outputFile - echo "" >> $outputFile + echo "

$clonalType

$sample

" >> $outputFile + + mv "$outputDir/HeatmapVD_$sample.png" "$outputDir/VD_$sample.png" + echo "" >> $outputFile + mv "$outputDir/HeatmapVJ_$sample.png" "$outputDir/VJ_$sample.png" + echo "" >> $outputFile + mv "$outputDir/HeatmapDJ_$sample.png" "$outputDir/DJ_$sample.png" + echo "
" >> $outputFile + count=$((count+1)) +done +echo "" >> $outputFile - echo "$hasReplicateColumn" - #if its a 'new' merged file with replicate info - if [[ "$hasReplicateColumn" == "Yes" ]] ; then - echo "

Clonality Score: $clonalityScore

" >> $outputFile + +hasReplicateColumn="$(if head -n 1 $inputFile | grep -q 'Replicate'; then echo 'Yes'; else echo 'No'; fi)" +echo "$hasReplicateColumn" +#if its a 'new' merged file with replicate info +if [[ "$hasReplicateColumn" == "Yes" ]] ; then + echo "
" >> $outputFile + for sample in $samples; do + clonalityScore="$(cat $outputDir/ClonalityScore_$sample.csv)" + echo "
" >> $outputFile + echo "" >> $outputFile #replicate,reads,squared - echo "" >> $outputFile - + #overview - echo "" >> $outputFile - fi + echo "
Clonality Score: $clonalityScore
" >> $outputFile + echo "" >> $outputFile while IFS=, read replicate reads squared do - - echo "" >> $outputFile + + echo "" >> $outputFile done < $outputDir/ReplicateReads_$sample.csv - + #sum of reads and reads squared while IFS=, read readsSum squaredSum do echo "" >> $outputFile done < $outputDir/ReplicateSumReads_$sample.csv - - echo "
Replicate IDNumber of ReadsReads Squared
Replicate IDNumber of ReadsReads Squared
$replicate$reads$squared
$replicate$reads$squared
Sum$readsSum$squaredSum
" >> $outputFile + echo "" >> $outputFile while IFS=, read type count weight weightedCount do echo "" >> $outputFile done < $outputDir/ClonalityOverView_$sample.csv - echo "
Coincidence TypeRaw Coincidence FreqCoincidence WeightCoincidences, Weighted
Coincidence TypeRaw Coincidence FreqCoincidence WeightCoincidences, Weighted
$type$count$weight$weightedCount
" >> $outputFile + done + echo "
" >> $outputFile +fi + +if [[ "$hasReplicateColumn" == "Yes" ]] ; then + echo "
" >> $outputFile + while IFS=, read Sample unique VHDEL P1 N1 P2 DELDH DHDEL P3 N2 P4 DELJH TotalDel TotalN TotalP + do + echo "" >> $outputFile + done < $outputDir/junctionAnalysis.csv + echo "
SampleuniqueVH.DELP1N1P2DEL.DHDH.DELP3N2P4DEL.JHTotal.DelTotal.NTotal.P
$Sample$unique$VHDEL$P1$N1$P2$DELDH$DHDEL$P3$N2$P4$DELJH$TotalDel$TotalN$TotalP
" >> $outputFile +fi - echo "

V-D Heatmap:

V-J Heatmap:

D-J Heatmap:

" >> $outputFile - mv "$outputDir/HeatmapVD_$sample.png" "$outputDir/VD_$sample.png" - echo "" >> $outputFile - mv "$outputDir/HeatmapVJ_$sample.png" "$outputDir/VJ_$sample.png" - echo "" >> $outputFile - mv "$outputDir/HeatmapDJ_$sample.png" "$outputDir/DJ_$sample.png" - echo "" >> $outputFile - count=$((count+1)) +echo "
" >> $outputFile +for sample in $samples; do + echo "" >> $outputFile done -echo "
IDInclude
$sample
" >> $outputFile +echo "
" >> $outputFile +echo "
" >> $outputFile +echo "
" >> $outputFile +echo "
" >> $outputFile +echo "
" >> $outputFile -echo "" >> $outputFile +echo "
" >> $outputFile +echo "" >> $outputFile +echo "" >> $outputFile +echo "" >> $outputFile +echo "" >> $outputFile +echo "
DescriptionLink
The dataset used to generate the frequency graphs and the heatmaps (Unique based on clonaltype, $clonalType)Download
The dataset used to calculate clonality score (Unique based on clonaltype, $clonalType)Download
" >> $outputFile +echo "
" >> $outputFile diff -r 84a386d96452 -r 8b026af4b298 imgtconvert.py diff -r 84a386d96452 -r 8b026af4b298 script.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/script.js Tue Mar 11 10:39:04 2014 -0400 @@ -0,0 +1,32 @@ +function compareAdd(id){ + var img = document.createElement('img'); + img.setAttribute('src', 'VD_' + id + '.png'); + var td = document.createElement('td'); + td.setAttribute('id', "comparison_vd_" + id); + td.appendChild(img) + document.getElementById('comparison_table_vd').appendChild(td); + + img = document.createElement('img'); + img.setAttribute('src', 'VJ_' + id + '.png'); + td = document.createElement('td'); + td.setAttribute('id', "comparison_vj_" + id); + td.appendChild(img) + document.getElementById('comparison_table_vj').appendChild(td); + + img = document.createElement('img'); + img.setAttribute('src', 'DJ_' + id + '.png'); + td = document.createElement('td'); + td.setAttribute('id', "comparison_dj_" + id); + td.appendChild(img) + document.getElementById('comparison_table_dj').appendChild(td); + + document.getElementById('compare_checkbox_' + id).setAttribute('onchange', "javascript:compareRemove('" + id + "')"); +} + + +function compareRemove(id){ + document.getElementById("comparison_vd_" + id).remove() + document.getElementById("comparison_vj_" + id).remove() + document.getElementById("comparison_dj_" + id).remove() + document.getElementById('compare_checkbox_' + id).setAttribute('onchange', "javascript:compareAdd('" + id + "')"); +} diff -r 84a386d96452 -r 8b026af4b298 style.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/style.css Tue Mar 11 10:39:04 2014 -0400 @@ -0,0 +1,111 @@ +/* $Id: example.css,v 1.5 2006/03/27 02:44:36 pat Exp $ */ + +/*-------------------------------------------------- + REQUIRED to hide the non-active tab content. + But do not hide them in the print stylesheet! + --------------------------------------------------*/ +.tabberlive .tabbertabhide { + display:none; +} + +/*-------------------------------------------------- + .tabber = before the tabber interface is set up + .tabberlive = after the tabber interface is set up + --------------------------------------------------*/ +.tabber { +} +.tabberlive { + margin-top:1em; +} + +/*-------------------------------------------------- + ul.tabbernav = the tab navigation list + li.tabberactive = the active tab + --------------------------------------------------*/ +ul.tabbernav +{ + margin:0; + padding: 3px 0; + border-bottom: 1px solid #778; + font: bold 12px Verdana, sans-serif; +} + +ul.tabbernav li +{ + list-style: none; + margin: 0; + display: inline; +} + +ul.tabbernav li a +{ + padding: 3px 0.5em; + margin-left: 3px; + border: 1px solid #778; + border-bottom: none; + background: #DDE; + text-decoration: none; +} + +ul.tabbernav li a:link { color: #448; } +ul.tabbernav li a:visited { color: #667; } + +ul.tabbernav li a:hover +{ + color: #000; + background: #AAE; + border-color: #227; +} + +ul.tabbernav li.tabberactive a +{ + background-color: #fff; + border-bottom: 1px solid #fff; +} + +ul.tabbernav li.tabberactive a:hover +{ + color: #000; + background: white; + border-bottom: 1px solid white; +} + +/*-------------------------------------------------- + .tabbertab = the tab content + Add style only after the tabber interface is set up (.tabberlive) + --------------------------------------------------*/ +.tabberlive .tabbertab { + padding:5px; + border:1px solid #aaa; + border-top:0; + + /* If you don't want the tab size changing whenever a tab is changed + you can set a fixed height */ + + /* height:200px; */ + + /* If you set a fix height set overflow to auto and you will get a + scrollbar when necessary */ + + /* overflow:auto; */ +} + +/* If desired, hide the heading since a heading is provided by the tab */ +.tabberlive .tabbertab h2 { + display:none; +} +.tabberlive .tabbertab h3 { + display:none; +} + +/* Example of using an ID to set different styles for the tabs on the page */ +.tabberlive#tab1 { +} +.tabberlive#tab2 { +} +.tabberlive#tab2 .tabbertab { + height:200px; + overflow:auto; +} + + diff -r 84a386d96452 -r 8b026af4b298 tabber.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tabber.js Tue Mar 11 10:39:04 2014 -0400 @@ -0,0 +1,40 @@ +/* Copyright (c) 2006 Patrick Fitzgerald */ + +function tabberObj(argsObj) +{var arg;this.div=null;this.classMain="tabber";this.classMainLive="tabberlive";this.classTab="tabbertab";this.classTabDefault="tabbertabdefault";this.classNav="tabbernav";this.classTabHide="tabbertabhide";this.classNavActive="tabberactive";this.titleElements=['h2','h3','h4','h5','h6'];this.titleElementsStripHTML=true;this.removeTitle=true;this.addLinkId=false;this.linkIdFormat='nav';for(arg in argsObj){this[arg]=argsObj[arg];} +this.REclassMain=new RegExp('\\b'+this.classMain+'\\b','gi');this.REclassMainLive=new RegExp('\\b'+this.classMainLive+'\\b','gi');this.REclassTab=new RegExp('\\b'+this.classTab+'\\b','gi');this.REclassTabDefault=new RegExp('\\b'+this.classTabDefault+'\\b','gi');this.REclassTabHide=new RegExp('\\b'+this.classTabHide+'\\b','gi');this.tabs=new Array();if(this.div){this.init(this.div);this.div=null;}} +tabberObj.prototype.init=function(e) +{var +childNodes,i,i2,t,defaultTab=0,DOM_ul,DOM_li,DOM_a,aId,headingElement;if(!document.getElementsByTagName){return false;} +if(e.id){this.id=e.id;} +this.tabs.length=0;childNodes=e.childNodes;for(i=0;i/gi," ");t.headingText=t.headingText.replace(/<[^>]+>/g,"");} +break;}}} +if(!t.headingText){t.headingText=i+1;} +DOM_li=document.createElement("li");t.li=DOM_li;DOM_a=document.createElement("a");DOM_a.appendChild(document.createTextNode(t.headingText));DOM_a.href="javascript:void(null);";DOM_a.title=t.headingText;DOM_a.onclick=this.navClick;DOM_a.tabber=this;DOM_a.tabberIndex=i;if(this.addLinkId&&this.linkIdFormat){aId=this.linkIdFormat;aId=aId.replace(//gi,this.id);aId=aId.replace(//gi,i);aId=aId.replace(//gi,i+1);aId=aId.replace(//gi,t.headingText.replace(/[^a-zA-Z0-9\-]/gi,''));DOM_a.id=aId;} +DOM_li.appendChild(DOM_a);DOM_ul.appendChild(DOM_li);} +e.insertBefore(DOM_ul,e.firstChild);e.className=e.className.replace(this.REclassMain,this.classMainLive);this.tabShow(defaultTab);if(typeof this.onLoad=='function'){this.onLoad({tabber:this});} +return this;};tabberObj.prototype.navClick=function(event) +{var +rVal,a,self,tabberIndex,onClickArgs;a=this;if(!a.tabber){return false;} +self=a.tabber;tabberIndex=a.tabberIndex;a.blur();if(typeof self.onClick=='function'){onClickArgs={'tabber':self,'index':tabberIndex,'event':event};if(!event){onClickArgs.event=window.event;} +rVal=self.onClick(onClickArgs);if(rVal===false){return false;}} +self.tabShow(tabberIndex);return false;};tabberObj.prototype.tabHideAll=function() +{var i;for(i=0;i