diff rDiff/src/process_command_line_args.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/process_command_line_args.m	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,213 @@
+function [CFG]=process_command_line_args(CFG,ARGS)
+% [CFG]=process_command_line_args(CFG,ARGS)
+
+%This function adds the command line arguments to the CFG config variable
+
+%Parse the ARGS 
+
+%Check wether octave or matlab is used
+if size(ver('Octave'),1)
+  INTERPR = 1;
+else
+  INTERPR = 0;
+end
+
+%turn of warning
+if INTERPR
+    warning('off', 'Octave:precedence-change');
+    warning('off', 'Octave:function-name-clash');
+    warning('off', '');
+    warning('off', 'Octave:num-to-str');
+    warning('off', 'Octave:function-name-clash');
+    warning('off', 'Octave:divide-by-zero');
+    warning('off', 'Octave:future-time-stamp');
+    warning('off', 'solve_qp:constraints');
+    warning('off', 'Octave:assign-as-truth-value');
+    warning('off', 'Octave:matlab-incompatible');
+else
+   warning('off', 'MATLAB:typeaheadBufferOverflow');
+end
+
+%Seperate the Variable Field
+if INTERPR
+    ARGS = strsplit(ARGS,';');
+else
+    ARGS=regexp(ARGS,';','split');
+end
+
+%Assign the local variables
+
+%iterate over Fields
+for i=1:length(ARGS)
+    if isempty(ARGS{i})
+        continue
+    end
+    if INTERPR
+        VALS = strsplit(ARGS{i},':');
+    else
+        VALS=regexp(ARGS{i},':','split');
+    end
+    
+    
+    if length(VALS)>2
+        error([" more than one field for variable: " VALS{1} ":" VALS{:} "\n  Maybe there are colons in the input argument?"])
+    end
+    
+    if strcmp(VALS{1},"RDIFF_RES_DIR"),RDIFF_RES_DIR=VALS{2};continue,end
+    if strcmp(VALS{1},"RDIFF_INPUT_DIR"),RDIFF_INPUT_DIR=VALS{2};continue,end
+    if strcmp(VALS{1},"BAM_INPUT1"),BAM_INPUT1=VALS{2};continue,end
+    if strcmp(VALS{1},"BAM_INPUT2"),BAM_INPUT2=VALS{2};continue,end
+    if strcmp(VALS{1},"GFF_INPUT"),GFF_INPUT=VALS{2};continue,end
+    if strcmp(VALS{1},"READ_LENGTH"),READ_LENGTH=str2num(VALS{2});continue,end
+    if strcmp(VALS{1},"MIN_READ_LENGTH"),MIN_READ_LENGTH=str2num(VALS{2});continue,end
+    if strcmp(VALS{1},"EST_GENE_EXPR"),EST_GENE_EXPR=str2num(VALS{2});continue,end
+    if strcmp(VALS{1},"ONLY_GENE_EXPR"),ONLY_GENE_EXPR=str2num(VALS{2});continue,end
+    if strcmp(VALS{1},"VAR_PATH1"),VAR_PATH1=VALS{2};continue,end
+    if strcmp(VALS{1},"VAR_PATH2"),VAR_PATH2=VALS{2};continue,end
+    if strcmp(VALS{1},"SAVE_VAR1"),SAVE_VAR1=VALS{2};continue,end
+    if strcmp(VALS{1},"SAVE_VAR2"),SAVE_VAR2=VALS{2};continue,end
+    if strcmp(VALS{1},"PRED_VAR1"),PRED_VAR1=VALS{2};continue,end
+    if strcmp(VALS{1},"PRED_VAR2"),PRED_VAR2=VALS{2};continue,end
+    if strcmp(VALS{1},"ONLY_GENE_START"),ONLY_GENE_START=str2num(VALS{2});continue,end
+    if strcmp(VALS{1},"SUBSAMPLE"),SUBSAMPLE=str2num(VALS{2});continue,end
+    if strcmp(VALS{1},"CLIP"),CLIP=str2num(VALS{2});continue,end
+    if strcmp(VALS{1},"BOOTSTRAP"),BOOTSTRAP=str2num(VALS{2});continue,end
+    if strcmp(VALS{1},"TEST_METH_NAME"),TEST_METH_NAME=VALS{2};continue,end
+    if strcmp(VALS{1},"MERGE_SAMPLE"),MERGE_SAMPLE=str2num(VALS{2});continue,end
+end
+
+%Process Bamfiles
+if INTERPR
+    BAMS1 = strsplit(BAM_INPUT1,',');
+    BAMS2 = strsplit(BAM_INPUT2,',');
+else
+    BAMS1=regexp(BAM_INPUT1,',','split');
+    BAMS2=regexp(BAM_INPUT2,',','split');
+end
+
+CFG.BAM_FILES={BAMS1{:},BAMS2{:}};
+    
+%Name of the experiment. Use the FILENAMES if the entries are empty.
+CFG.NAMES=CFG.BAM_FILES;
+for i=1:length(CFG.NAMES)
+	CFG.NAMES{i}=strrep(CFG.NAMES{i},"/","_");
+end
+
+% Give the directory where the input-files are
+CFG.data_dir = [RDIFF_INPUT_DIR '/'];
+
+% Indicate to which sample the bam-files belong
+CFG.SAMPLES=[repmat(1,1,size(BAMS1,2)),repmat(2,1,size(BAMS2,2))];
+
+%Process directories
+
+
+
+% Location of the gene structure
+CFG.genes_path=GFF_INPUT;
+
+% Output directory
+
+CFG.out_base =  [RDIFF_RES_DIR '/'];
+
+% Output directory for temporary files
+CFG.out_base_temp =   [CFG.out_base '/temp/'];
+mkdir(CFG.out_base_temp);
+
+
+%Check which method to perform
+if strcmp(TEST_METH_NAME,'poisson')
+    CFG.perform_poisson=1;
+end
+if strcmp(TEST_METH_NAME,'param')
+    CFG.perform_parametric=1;
+end
+if strcmp(TEST_METH_NAME,'nonparam')
+    CFG.perform_nonparametric=1;
+end
+if strcmp(TEST_METH_NAME,'mmd')
+    CFG.perform_mmd=1;
+end
+
+
+%Process arguments for gene expression estimation
+CFG.estimate_gene_expression=EST_GENE_EXPR;
+CFG.only_gene_expression=ONLY_GENE_EXPR;
+
+
+%Set options for the variance function
+CFG.merge_sample1=MERGE_SAMPLE;
+CFG.merge_sample2=MERGE_SAMPLE;
+
+%If samples contains leass than one sample, merge replicates
+if length(BAMS1)<2
+    CFG.merge_sample1=1;
+end
+if length(BAMS2)<2
+    CFG.merge_sample2=1;
+end
+
+%Use predefined  parameters
+CFG.predefined_variance_function1=[];
+if not(isempty(PRED_VAR1))
+    if INTERPR
+        VALS = strsplit(PRED_VAR1,',');
+    else
+        VALS=regexp(PRED_VAR1,',','split');
+    end
+    for i=1:length(VALS)
+        CFG.predefined_variance_function1(end+1)=str2num(VALS{i});
+    end
+end
+CFG.predefined_variance_function2=[];
+if not(isempty(PRED_VAR2))
+    if INTERPR
+        VALS = strsplit(PRED_VAR2,',');
+    else
+        VALS=regexp(PRED_VAR2,',','split');
+    end
+    for i=1:length(VALS)
+        CFG.predefined_variance_function2(end+1)=str2num(VALS{i});
+    end
+end
+
+
+if not(isempty(SAVE_VAR1))
+    CFG.save_variance_function_1=SAVE_VAR1;
+else
+    CFG.save_variance_function_1='variance_function_1.mat';
+end
+if not(isempty(SAVE_VAR2))
+    CFG.save_variance_function_2=SAVE_VAR2;
+else
+    CFG.save_variance_function_2='variance_function_2.mat';
+end
+
+if not(isempty(VAR_PATH1))
+    CFG.variance_function_1=VAR_PATH1;
+end
+if not(isempty(VAR_PATH2))
+    CFG.variance_function_2=VAR_PATH2;
+end
+
+%Option not implemented yet
+CFG.compute_variance_function_1=1;
+CFG.compute_variance_function_2=1;
+
+%use only gene starts and stops for rDiff.nonparametric variance
+%function esitmation
+CFG.only_gene_start=ONLY_GENE_START;
+
+%Process read arguments
+CFG.sequenced_length=READ_LENGTH;
+CFG.min_read_length=min(CFG.sequenced_length,MIN_READ_LENGTH);
+
+CFG.rDiff_subsample=SUBSAMPLE;
+CFG.rDiff_nonparametric_subsample_variance_estimation=CFG.rDiff_subsample;	
+
+CFG.bases_to_clip=CLIP;
+
+%Process arguments for rDiff.nonparametric
+CFG.bootstraps=BOOTSTRAP;
+
+return