Mercurial > repos > vipints > rdiff
diff rDiff/src/get_nonparametric_tests_caller.m @ 0:0f80a5141704
version 0.3 uploaded
author | vipints |
---|---|
date | Thu, 14 Feb 2013 23:38:36 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rDiff/src/get_nonparametric_tests_caller.m Thu Feb 14 23:38:36 2013 -0500 @@ -0,0 +1,109 @@ +function []=get_nonparametric_tests_caller(PAR) + + +CFG = PAR.CFG; +genes = PAR.genes; +OUT_STR=''; + +% add paths +addpath(CFG.paths); +%load local variables +data_dir=CFG.data_dir; +OUT_STR=[]; + +variance_function_nonparametric_1=PAR.variance_function_nonparametric_1; +variance_function_nonparametric_2=PAR.variance_function_nonparametric_2; + +Counts_rDiff_nonparametric=PAR.Counts_rDiff_nonparametric; +Gene_expression=PAR.Gene_expression; + +%clear variabe PAR +clear PAR; + +NUMBER_OF_TESTS_PER_GENE=(CFG.perform_nonparametric+CFG.perform_mmd); +if NUMBER_OF_TESTS_PER_GENE==0 + return +end +P_VALS=cell(size(genes,2),NUMBER_OF_TESTS_PER_GENE+2); + + +%iterate over genes +for i=1:size(genes,2) + + %TEMP_COUNT contains the counts for the current gene + TEMP_COUNT=cell(1,3); + gene = genes(i); + + + OLD_OUT_STR=OUT_STR; + OUT_STR=['Current gene: ' gene.name ]; + %print progress + if CFG.use_rproc + fprintf([OUT_STR '\n']) + else + % Erase old progress + fprintf(repmat('\b',1,length(OLD_OUT_STR))); + fprintf([OUT_STR]) + end + + %set default return values + P_VALS{i,1}=gene.name; + + %check that the gene has exons defined + if isempty(gene.exons) + P_VALS{i,4}='Exons field empty in gene structure'; + continue; + end + + %check that the gene is longer than the Reads. Otherwise the + %definition of regions does not makes sense + if gene.stop-gene.start<CFG.sequenced_length+3 + continue; + end + %perform + + + %Get the reads + READ_SET={}; + for bam_ix=1:length(CFG.BAM_FILES) + CFG.curr_bamfile=CFG.BAM_FILES{bam_ix}; + READ_SET{end+1} = get_reads_for_gene(CFG,gene); + end + %merge the reads per sample + SAMPLE1=find(CFG.SAMPLES==1); + SAMPLE2=find(CFG.SAMPLES==2); + + + COUNTER=2; + + if CFG.perform_mmd + reads1=[]; + reads2=[]; + SAMPLE_LENGTH1=length(SAMPLE1); + SAMPLE_LENGTH2=length(SAMPLE2); + for bam_ix=1:SAMPLE_LENGTH1 + reads1=[reads1;READ_SET{SAMPLE1(bam_ix)}]; + end + + for bam_ix=1:SAMPLE_LENGTH2 + reads2=[reads2;READ_SET{SAMPLE2(bam_ix)}]; + end + [PV, INFO]= rDiff_mmd(CFG,reads1,reads2); + P_VALS{i,COUNTER}={PV, INFO}; + clear reads1 + clear reads2 + COUNTER=COUNTER+1; + end + + if CFG.perform_nonparametric + [PV, INFO]= rDiff_nonparametric(CFG,READ_SET(SAMPLE1),READ_SET(SAMPLE2),variance_function_nonparametric_1, variance_function_nonparametric_2); + P_VALS{i,COUNTER}={PV, INFO}; + COUNTER=COUNTER+1; + end + +end +fprintf('\n') +%Save the p-values +OUT_FILENAME=[CFG.outfile_prefix '.mat']; +save(OUT_FILENAME,'P_VALS') +