2016-07-21 9 views
0

I einige Berechnungen, die in eine Datei geschrieben und gelesen wird, in einen Datenrahmen, die wie folgt angeordnet ist:R: Datenrahmen Ausfüllen symmetrischen Identitäts Plot zu erzeugen

sequence_1 sequence_2 identity 
CP010953 CP010953 100 
CP010953 CP012689 73.9 
CP010953 CP000025 73.86 
CP010953 CP012149 73.77 
CP010953 HE978252 73.72999999999999 
CP010953 CP009043 83.35000000000001 

die Daten aus einer Berechnung kommen (in Python) berechnet die Anzahl der Zeichenübereinstimmungen zwischen zwei Zeichenfolgen geteilt durch die Länge einer Zeichenfolge (beide Zeichenfolgen haben die gleiche Länge). Es schien damals eine gute Idee zu sein, aber als ich die Berechnungen durchführte, benutzte ich den Befehl iertools.combinations_with_replacement, um die Berechnungen schneller zu machen. Wenn ich also drei Strings (a, b, c) vergleiche, dann wird nur ein & b, ein & c, b & c und nicht b & a, c & ein und c & b verglichen gleiche Werte wie & b, a & c und b & c. Das Problem ist, dass, wenn ich die Daten in R lesen und die Heatmap plotten, ich mit diesem Ende:

enter image description here

die eine Reihe von Lücken ist (Sie in der Lage sein kann, um zu sehen, dass die Werte, die ich brauchen, sind alles da - Beispiel: AL111168 und CP000538 (beide auf der linken unteren Seite) haben den Wert auf der y-Achse, aber nicht auf der x-Achse)!

Gibt es eine Möglichkeit, diese Lücken mit den entsprechenden Werten in R zu füllen? Ich könnte das in einer Schleife machen, aber das ist nicht sehr R-esque. Ich bin mir sicher, dass dies schon einmal gefragt wurde, aber ich glaube nicht, dass ich die richtigen Suchbegriffe verwende. Hier

ist ein bisschen mein Code:

args = commandArgs(trailingOnly=TRUE) 

file_name <- args[1] 
gene_name <- args[2] 

image_name = paste(gene_name, '.png', sep='') 

myDF <- read.csv(file_name, header=T, sep='\t') 

my_palette <- colorRampPalette(c('red', 'yellow', 'green')) 

png(filename=image_name, width=3750,height=2750,res=300) 
par(mar=c(9.5,4.3,4,2)) 
print(corpus <- qplot(x=sequence_1, y=sequence_2, data=myDF, fill=identity, geom='tile') + 

        geom_text(aes(label=identity), color='black', size=3) + 
        scale_fill_gradient(limits=c(0, 100), low='gold', high='green4') + 
        labs(title='Campylobacter Pair-wise Sequence Identity Comparison', x=NULL, y=NULL) + 
        guides(fill = guide_legend(title = 'Sequence\nSimilarity %', title.theme = element_text(size=15, angle = 0))) + theme(legend.text=element_text(size=12)) + 
        theme(axis.text.x=element_text(angle=45, size=14, hjust=1, colour='black'), axis.text.y=element_text(size=14, hjust=1, colour='black'))) 
dev.off() 

Vielen Dank im Voraus.

Antwort

0

enter image description here Ich habe einen Weg gefunden, es zu tun.

mDF <- myDF 
colnames(mDF)[1] <- 'sequence_2' 
colnames(mDF)[2] <- 'sequence_1' 
newDF <- rbind(mDF, myDF) 

Dann plotten newDF.