@@ -5,43 +5,43 @@ option.list <- list(
55 make_option(" --pair_id" , dest = " pair_id" ),
66 make_option(" --abs_lib_dir" , dest = " abs_lib_dir" ),
77 make_option(" --pcawg" , dest = " pcawg" , default = " FALSE" ))
8-
8+
99opt <- parse_args(OptionParser(option_list = option.list ))
1010print(opt )
11-
11+
1212Called_Absolute = opt [[" Called_Absoute" ]]
1313CGA_DIR_ABS = opt [[" abs_lib_dir" ]]
1414pair_id = opt [[" pair_id" ]]
1515PCAWG = opt [[" pcawg" ]]
16-
16+
1717Out_Name = file.path(paste(pair_id ," tsv" ,sep = " ." ))
18-
18+
1919print( paste(" sourcing files in " , CGA_DIR_ABS , sep = " " ))
20-
20+
2121rr = dir(CGA_DIR_ABS ,full.names = TRUE )
2222for ( i in 1 : length(rr ) ) {
2323 source(rr [i ])}
2424load(Called_Absolute )
2525input_purity = seg.obj $ mode.res $ mode.tab [[1 ]]
26-
26+
2727allele.segs = get_hom_pairs_segtab(seg.obj )
28-
28+
2929ExtractSampleObs <<- AllelicExtractSampleObs
3030GetCopyRatioComb <<- AllelicGetCopyRatioComb
3131SCNA_model = seg.obj [[" mode.res" ]][[" mode_SCNA_models" ]][[1 ]]
3232tree_clust = resort_tree_clusters( SCNA_model , SCNA_model [[" seg_CCF_DP" ]][[" tree_clust" ]] )
33-
33+
3434SCNA_model [[" seg_CCF_DP" ]][[" tree_clust" ]] = tree_clust
3535SCNA_model [[" seg_CCF_DP" ]][[" seg_clust_tab" ]] = get_seg_clust_tab( SCNA_model )
3636mut_cols = SCNA_model [[" seg_CCF_DP" ]][[" tree_clust" ]][[" assign" ]]
37-
37+
3838mode.tab <- seg.obj [[" mode.res" ]][[" mode.tab" ]]
39-
39+
4040res = get_b_and_delta( mode.tab [1 , " alpha" ], mode.tab [1 , " tau" ] )
4141delta = res $ delta
4242b = res $ b
4343segs_d0 = deconstruct_SCNAs( SCNA_model , seg.obj , allele.segs , b , delta )
44-
44+
4545AS.seg.ix = allele.segs [, c(" seg.ix.1" , " seg.ix.2" )]
4646d0.allele.segs = allele.segs
4747d0.allele.segs [," A1.Seg.CN" ] = segs_d0 [ AS.seg.ix [,1 ] ]
@@ -52,34 +52,34 @@ d0.allele.segs["seg.ix.2"] = NULL
5252d0.allele.segs [" W" ] = NULL
5353d0.allele.segs = rename(d0.allele.segs , c(" Start.bp" = " Start" ,
5454" End.bp" = " End" ," n_probes" = " N_probes" ," length" = " Length" ," A1.Seg.sem" = " A1.Sigma" ," A2.Seg.sem" = " A2.Sigma" ))
55-
55+
5656write.table(d0.allele.segs , file = Out_Name , append = FALSE , quote = FALSE , sep = " \t " ,
5757 eol = " \n " , na = " NA" , dec = " ." , row.names = FALSE ,
5858 col.names = TRUE )
5959if (PCAWG == " TRUE" ){
6060Out_Name = file.path(paste(pair_id ," segments.txt" ,sep = " _" ))
6161load(Called_Absolute )
6262input_purity = seg.obj $ mode.res $ mode.tab [[1 ]]
63-
63+
6464 ExtractSampleObs <<- AllelicExtractSampleObs
6565 GetCopyRatioComb <<- AllelicGetCopyRatioComb
6666 SCNA_model = seg.obj [[" mode.res" ]][[" mode_SCNA_models" ]][[1 ]]
6767 tree_clust = resort_tree_clusters( SCNA_model , SCNA_model [[" seg_CCF_DP" ]][[" tree_clust" ]] )
68-
68+
6969 SCNA_model [[" seg_CCF_DP" ]][[" tree_clust" ]] = tree_clust
7070 SCNA_model [[" seg_CCF_DP" ]][[" seg_clust_tab" ]] = get_seg_clust_tab( SCNA_model )
7171 mut_cols = SCNA_model [[" seg_CCF_DP" ]][[" tree_clust" ]][[" assign" ]]
72-
72+
7373 mode.tab <- seg.obj [[" mode.res" ]][[" mode.tab" ]]
74-
74+
7575 res = get_b_and_delta( mode.tab [1 , " alpha" ], mode.tab [1 , " tau" ] )
7676 delta = res $ delta
7777 b = res $ b
7878 segs_d0 = deconstruct_SCNAs( SCNA_model , seg.obj , allele.segs , b , delta )
79-
80-
79+
80+
8181 sc_tab = seg.obj [[" mode.res" ]][[" subclonal_SCNA_res" ]][[" subclonal_SCNA_tab" ]][1 ,,]
82-
82+
8383 nc = ncol(SCNA_model [[" collapsed_CCF_dens" ]])
8484 GRID = cumsum( c(0 , rep(1 / (nc - 1 ),(nc - 1 ))))
8585 clust_dens = SCNA_model [[" seg_CCF_DP" ]][[" tree_clust" ]][[" CCF_dens" ]]
@@ -88,53 +88,49 @@ input_purity=seg.obj$mode.res$mode.tab[[1]]
8888 # clust_dens_str = paste(as.character(one), collapse=", ")
8989 ccf_hats = max.col(clust_dens )/ 100
9090 mut_cols = SCNA_model [[" seg_CCF_DP" ]][[" tree_clust" ]][[" assign" ]]
91-
91+
9292 sc_ix = mut_cols != which(clust_dens [,1 ]== 1 )
9393 sc_ix [is.na(sc_ix ) & sc_tab [," subclonal_ix" ]== 0 ]= 0
9494 sc_ix [sc_ix == FALSE ]= 0
9595 sc_ix [sc_ix == TRUE ]= 1
96-
96+
9797 # sc_ix_noNA=sc_ix
9898 # sc_ix_noNA[is.na(sc_ix)]=-1
9999 # segs_d0[sc_ix_noNA==0]=round(segs_d0[sc_ix_noNA==0])
100-
100+
101101 AS.seg.ix = allele.segs [, c(" seg.ix.1" , " seg.ix.2" )]
102102 d0.allele.segs = allele.segs
103103 d0.allele.segs [," A1.Seg.CN" ] = round(segs_d0 [ AS.seg.ix [,1 ] ])
104104 d0.allele.segs [," A2.Seg.CN" ] = round(segs_d0 [ AS.seg.ix [,2 ] ])
105-
105+
106106 d0.allele.segs [" W" ] = NULL
107107 d0.allele.segs = rename(d0.allele.segs , c(" Start.bp" = " Start" ,
108108" End.bp" = " End" ," n_probes" = " N_probes" ," length" = " Length" ," A1.Seg.sem" = " A1.Sigma" ," A2.Seg.sem" = " A2.Sigma" ))
109-
109+
110110 d0.allele.segs [" seg.ix.1" ] = NULL
111111 d0.allele.segs [" seg.ix.2" ] = NULL
112112 d0.allele.segs [" A1.Sigma" ] = NULL
113113 d0.allele.segs [" A2.Sigma" ] = NULL
114-
115-
116-
114+
117115 A1.Subclonal.ix = sc_ix [AS.seg.ix [,1 ]]
118116 A2.Subclonal.ix = sc_ix [AS.seg.ix [,2 ]]
119117 A1.Subclonal.CN = sc_tab [," qs" ][AS.seg.ix [,1 ]]
120118 A2.Subclonal.CN = sc_tab [," qs" ][AS.seg.ix [,2 ]]
121119 A1.Clonal.CN = sc_tab [," qc" ][AS.seg.ix [,1 ]]
122120 A2.Clonal.CN = sc_tab [," qc" ][AS.seg.ix [,2 ]]
123-
124-
125-
121+
126122 A1.CCF_hat = ccf_hats [mut_cols [AS.seg.ix [,1 ]]]
127123 A2.CCF_hat = ccf_hats [mut_cols [AS.seg.ix [,2 ]]]
128124 A1.CCF_dens = clust_dens_str [mut_cols [AS.seg.ix [,1 ]]]
129125 A2.CCF_dens = clust_dens_str [mut_cols [AS.seg.ix [,2 ]]]
130-
131-
126+
127+
132128 A1.CCF_hat [is.na(A1.CCF_hat )]= sc_tab [," CCF_hat" ][AS.seg.ix [,1 ]][is.na(A1.CCF_hat )]
133129 A2.CCF_hat [is.na(A2.CCF_hat )]= sc_tab [," CCF_hat" ][AS.seg.ix [,2 ]][is.na(A2.CCF_hat )]
134-
130+
135131 d0.allele.segs [," CCF" ]= 1
136132 d0.allele.segs [," CCF_dens" ]= clonal_clust_dens_str
137-
133+
138134 clonal.ix = intersect(which(A1.Subclonal.ix == 0 ),which(A2.Subclonal.ix == 0 ))
139135 a1.sub.ix = intersect(which(A1.Subclonal.ix != 0 ),which(A2.Subclonal.ix == 0 ))
140136 a2.sub.ix = intersect(which(A1.Subclonal.ix == 0 ),which(A2.Subclonal.ix != 0 ))
@@ -143,49 +139,49 @@ input_purity=seg.obj$mode.res$mode.tab[[1]]
143139 A1_Sub_Clonal_Seg = d0.allele.segs [intersect(which(A1.Subclonal.ix != 0 ),which(A2.Subclonal.ix == 0 )),]
144140 A2_Sub_Clonal_Seg = d0.allele.segs [intersect(which(A1.Subclonal.ix == 0 ),which(A2.Subclonal.ix != 0 )),]
145141 Both_Sub_Clonal_Seg = d0.allele.segs [intersect(which(A1.Subclonal.ix != 0 ),which(A2.Subclonal.ix != 0 )),]
146-
147-
142+
143+
148144 d0.allele.segs [," Historically.Clonal" ]= 0
149-
145+
150146 if (length(a1.sub.ix ) > 0 ){
151147 d0.allele.segs [a1.sub.ix ," A1.Seg.CN" ]= A1.Clonal.CN [a1.sub.ix ]
152148 d0.allele.segs [a1.sub.ix ," CCF" ]= 1 # -A1.CCF_hat[a1.sub.ix]
153149 d0.allele.segs [a1.sub.ix ," CCF_dens" ]= clonal_clust_dens_str
154150 d0.allele.segs [a1.sub.ix ," Historically.Clonal" ]= 1
155-
156-
151+
152+
157153 a1_segs = d0.allele.segs [a1.sub.ix ,]
158154 a1_segs [" A1.Seg.CN" ]= A1.Subclonal.CN [a1.sub.ix ]
159155 a1_segs [" CCF" ]= A1.CCF_hat [a1.sub.ix ]
160156 a1_segs [" CCF_dens" ]= A1.CCF_dens [a1.sub.ix ]
161157 a1_segs [" Historically.Clonal" ]= 0
162-
158+
163159 }else {
164160 a1_segs = NULL }
165161 if (length(a2.sub.ix ) > 0 ){
166162 d0.allele.segs [a2.sub.ix ," A2.Seg.CN" ]= A2.Clonal.CN [a2.sub.ix ]
167163 d0.allele.segs [a2.sub.ix ," CCF" ]= 1 # -A2.CCF_hat[a2.sub.ix]
168164 d0.allele.segs [a2.sub.ix ," CCF_dens" ]= clonal_clust_dens_str
169165 d0.allele.segs [a2.sub.ix ," Historically.Clonal" ]= 1
170-
166+
171167 a2_segs = d0.allele.segs [a2.sub.ix ,]
172168 a2_segs [" A2.Seg.CN" ]= A2.Subclonal.CN [a2.sub.ix ]
173169 a2_segs [" CCF" ]= A2.CCF_hat [a2.sub.ix ]
174170 a2_segs [" CCF_dens" ]= A2.CCF_dens [a2.sub.ix ]
175171 a2_segs [" Historically.Clonal" ]= 0
176172 }else {
177-
173+
178174 a2_segs = NULL }
179175 if (length(all.sub.ix ) > 0 ){
180-
176+
181177 d0.allele.segs [all.sub.ix ," A1.Seg.CN" ]= A1.Clonal.CN [all.sub.ix ]
182178 d0.allele.segs [all.sub.ix ," A2.Seg.CN" ]= A2.Clonal.CN [all.sub.ix ]
183179 matched = A1.CCF_hat [all.sub.ix ] == A2.CCF_hat [all.sub.ix ]
184-
180+
185181 d0.allele.segs [all.sub.ix [! matched ]," CCF" ]= 1 # -A1.CCF_hat[all.sub.ix[!matched]]-A2.CCF_hat[all.sub.ix[!matched]]
186182 d0.allele.segs [all.sub.ix [! matched ]," CCF_dens" ]= clonal_clust_dens_str
187183 d0.allele.segs [all.sub.ix [! matched ]," Historically.Clonal" ]= 1
188-
184+
189185 d0.allele.segs [all.sub.ix [matched ]," CCF" ]= 1 # -A1.CCF_hat[all.sub.ix[matched]]
190186 d0.allele.segs [all.sub.ix [matched ]," CCF_dens" ]= clonal_clust_dens_str
191187 d0.allele.segs [all.sub.ix [matched ]," Historically.Clonal" ]= 1
@@ -195,17 +191,17 @@ input_purity=seg.obj$mode.res$mode.tab[[1]]
195191 all_sub_a1_segs [" CCF" ]= A1.CCF_hat [all.sub.ix [! matched ]]
196192 all_sub_a1_segs [" CCF_dens" ]= A1.CCF_dens [all.sub.ix [! matched ]]
197193 all_sub_a1_segs [" Historically.Clonal" ]= 0
198-
194+
199195 all_sub_a2_segs = d0.allele.segs [all.sub.ix [! matched ],]
200196 all_sub_a2_segs [" A2.Seg.CN" ]= A2.Subclonal.CN [all.sub.ix [! matched ]]
201197 all_sub_a2_segs [" CCF" ]= A2.CCF_hat [all.sub.ix [! matched ]]
202198 all_sub_a2_segs [" CCF_dens" ]= A2.CCF_dens [all.sub.ix [! matched ]]
203199 all_sub_a2_segs [" Historically.Clonal" ]= 0
204200 }else {
205-
201+
206202 all_sub_a1_segs = NULL
207203 all_sub_a2_segs = NULL
208-
204+
209205 }
210206 if (length(all.sub.ix [matched ])> 0 ){
211207 euqal_sub_seg = d0.allele.segs [all.sub.ix [matched ],]
@@ -214,30 +210,30 @@ input_purity=seg.obj$mode.res$mode.tab[[1]]
214210 euqal_sub_seg [" CCF" ]= A1.CCF_hat [all.sub.ix [matched ]]
215211 euqal_sub_seg [" CCF_dens" ]= A1.CCF_dens [all.sub.ix [matched ]]
216212 euqal_sub_seg [" Historically.Clonal" ]= 0
217-
213+
218214 }else {
219-
215+
220216 euqal_sub_seg = NULL }}
221-
217+
222218 else {
223-
219+
224220 all_sub_a1_segs = NULL
225221 all_sub_a2_segs = NULL
226222 euqal_sub_seg = NULL
227223 }
228-
224+
229225comb_segtab = rbind(d0.allele.segs ,a1_segs ,a2_segs ,all_sub_a1_segs ,all_sub_a2_segs ,euqal_sub_seg )
230-
226+
231227comb_segtab = comb_segtab [with(comb_segtab , order(as.integer(comb_segtab [[" Chromosome" ]]), as.integer(comb_segtab [[" Start" ]]))), ]
232-
228+
233229comb_segtab [," copy_number" ]= comb_segtab [[" A1.Seg.CN" ]]+ comb_segtab [[" A2.Seg.CN" ]]
234230comb_segtab [" N_probes" ]= NULL
235231comb_segtab [" Length" ]= NULL
236-
232+
237233comb_segtab = rename(comb_segtab , c(" Chromosome" = " chromosome" ," Start" = " start" ,
238234" End" = " end" ," A1.Seg.CN" = " minor_cn" ," A2.Seg.CN" = " major_cn" ," CCF" = " ccf" ," Historically.Clonal" = " historically_clonal" ))
239235comb_segtab = comb_segtab [,c(1 ,2 ,3 ,9 ,4 ,5 ,6 ,8 )]
240-
236+
241237write.table(comb_segtab , file = Out_Name , append = FALSE , quote = FALSE , sep = " \t " ,
242238 eol = " \n " , na = " NA" , dec = " ." , row.names = FALSE ,
243239 col.names = TRUE )
0 commit comments