Mercurial > repos > iuc > raceid_inspecttrajectory
comparison scripts/trajectoryinspect.R @ 0:e0e9b24d76aa draft
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/raceid3 commit f880060c478d42202df5b78a81329f8af56b1138
author | iuc |
---|---|
date | Thu, 22 Nov 2018 04:42:18 -0500 |
parents | |
children | c8434a623268 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:e0e9b24d76aa |
---|---|
1 #!/usr/bin/env R | |
2 VERSION = "0.2" | |
3 | |
4 args = commandArgs(trailingOnly = T) | |
5 | |
6 if (length(args) != 1){ | |
7 message(paste("VERSION:", VERSION)) | |
8 stop("Please provide the config file") | |
9 } | |
10 | |
11 suppressWarnings(suppressPackageStartupMessages(require(RaceID))) | |
12 suppressWarnings(suppressPackageStartupMessages(require(FateID))) | |
13 source(args[1]) | |
14 | |
15 test <- list() | |
16 test$side = 3 | |
17 test$line = 2.5 | |
18 second <- test | |
19 second$cex = 0.5 | |
20 second$line = 2.5 | |
21 | |
22 do.trajectoryinspection.stemID <- function(ltr){ | |
23 makeBranchLink <- function(i,j,k){ | |
24 ingoing <- paste(sort(c(i,j)), collapse=".") | |
25 outgoing <- paste(sort(c(j,k)), collapse=".") | |
26 messed <- sort(c(ingoing,outgoing)) | |
27 return(list(messed[[1]], messed[[2]])) | |
28 } | |
29 | |
30 zzz <- do.call(getproj, c(ltr, trjsid.getproj)) | |
31 bra <- branchcells( | |
32 ltr, | |
33 do.call("makeBranchLink", as.list(trjsid.branchcells.ijk)) | |
34 ) | |
35 write.table( | |
36 head(bra$diffgenes$z, trjsid.numdiffgenes), | |
37 file=out.diffgenes) | |
38 | |
39 par(mfrow = c(2,2), cex=0.5) | |
40 print(do.call(plotmap, c(bra$scl, final=FALSE, fr=FALSE))) | |
41 print(do.call(mtext, c("Initial Clusters (tSNE)", test))) | |
42 print(do.call(plotmap, c(bra$scl, final=TRUE, fr=FALSE))) | |
43 print(do.call(mtext, c("Final Clusters (tSNE)", test))) | |
44 print(do.call(plotmap, c(bra$scl, final=FALSE, fr=TRUE))) | |
45 print(do.call(mtext, c("Initial Clusters (F-R)", test))) | |
46 print(do.call(plotmap, c(bra$scl, final=TRUE, fr=TRUE))) | |
47 print(do.call(mtext, c("Final Clusters (F-R)", test))) | |
48 } | |
49 | |
50 do.trajectoryinspection.fateID <- function(ltr){ | |
51 n <- do.call(cellsfromtree, c(ltr, trjfid.cellsfrom)) | |
52 x <- getfdata(ltr@sc) | |
53 | |
54 trjfid.filterset$x = x | |
55 trjfid.filterset$n = n$f | |
56 fs <- do.call(filterset, c(trjfid.filterset)) | |
57 trjfid.getsom$x = fs | |
58 s1d <- do.call(getsom, c(trjfid.getsom)) | |
59 trjfid.procsom$s1d = s1d | |
60 ps <- do.call(procsom, c(trjfid.procsom)) | |
61 | |
62 y <- ltr@sc@cpart[n$f] | |
63 fcol <- ltr@sc@fcol | |
64 | |
65 trjfid.plotheat$xpart = y | |
66 trjfid.plotheat$xcol = fcol | |
67 | |
68 ##Plot average z-score for all modules derived from the SOM: | |
69 trjfid.plotheat$x = ps$nodes.z | |
70 trjfid.plotheat$ypart = unique(ps$nodes) | |
71 print(do.call(plotheatmap, c(trjfid.plotheat))) | |
72 print(do.call(mtext, c("Average z-score for all modules derived from SOM", test))) | |
73 ##Plot z-score profile of each gene ordered by SOM modules: | |
74 trjfid.plotheat$x = ps$all.z | |
75 trjfid.plotheat$ypart = ps$nodes | |
76 print(do.call(plotheatmap, c(trjfid.plotheat))) | |
77 print(do.call(mtext, c("z-score profile of each gene ordered by SOM modules", test))) | |
78 ##Plot normalized expression profile of each gene ordered by SOM modules: | |
79 trjfid.plotheat$x = ps$all.e | |
80 trjfid.plotheat$ypart = ps$nodes | |
81 print(do.call(plotheatmap, c(trjfid.plotheat))) | |
82 print(do.call(mtext, c("Normalized expression profile of each gene ordered by SOM modules", test))) | |
83 ##Plot binarized expression profile of each gene (z-score < -1, -1 < z-score < 1, z-score > 1): | |
84 trjfid.plotheat$x = ps$all.b | |
85 trjfid.plotheat$ypart = ps$nodes | |
86 print(do.call(plotheatmap, c(trjfid.plotheat))) | |
87 print(do.call(mtext, c("Binarized expression profile of each gene", test))) | |
88 ## This should be written out, and passed back into the tool | |
89 ## to perform sominspect | |
90 return(list(fs=fs,ps=ps,y=y,fcol=fcol,nf=n$f)) | |
91 } | |
92 | |
93 do.trajectoryinspection.fateID.sominspect <- function(domo){ | |
94 g <- trjfidsomi.use.genes | |
95 if (class(g) == "numeric"){ | |
96 g <- names(ps$nodes)[ps$nodes %in% g] | |
97 } | |
98 | |
99 typ = NULL | |
100 if (!is.null(trjfidsomi.use.types)){ | |
101 typ = sub(trjfidsomi.use.types,"", domo$nf) | |
102 } | |
103 | |
104 trjfidsomi$x = domo$fs | |
105 trjfidsomi$y = domo$y | |
106 trjfidsomi$g = g | |
107 trjfidsomi$n = domo$nf | |
108 trjfidsomi$col = domo$fcol | |
109 trjfidsomi$types = typ | |
110 | |
111 ## The average pseudo-temporal expression profile of this group | |
112 ## can be plotted by the function plotexpression: | |
113 par(mfrow = c(1,1)) | |
114 test$cex = 1 | |
115 second$line = 1.5 | |
116 if (trjfidsomi$name == "Title") trjfidsomi$name = "" | |
117 print(do.call(plotexpression, c(trjfidsomi))) | |
118 mess2 <- paste(c(trjfidsomi.use.genes), collapse=", ") | |
119 mess1 <- "Average pseudo-temporal expression profile" | |
120 print(do.call(mtext, c(mess1, test))) | |
121 print(do.call(mtext, c(mess2, second))) | |
122 } | |
123 | |
124 ltr <- in.rdat | |
125 | |
126 pdf(out.pdf) | |
127 if (perform.stemID) do.trajectoryinspection.stemID(ltr) | |
128 if (perform.fateID) { | |
129 domo <- do.trajectoryinspection.fateID(ltr) | |
130 if (perform.fateID.sominspect) { | |
131 do.trajectoryinspection.fateID.sominspect(domo) | |
132 } | |
133 } | |
134 dev.off() |