2012-03-19 6 views
1

Привет, поэтому у меня есть файл config.m, который содержит список переменных вместе с некоторыми комментариями. Я хотел в основном загрузить этот скрипт через другой скрипт matlab, чтобы переменные были распознаны и использованы, а также могут быть легко изменены. Вот как выглядит мой файл с переменными.Импорт переменных из файла

%~~~~~~~~~~~~~~~~~ 
%~~~[General]~~~~~ 
%~~~~~~~~~~~~~~~~~ 
%path to samtools executable 
samtools_path = '/home/pubseq/BioSw/samtools/0.1.8/samtools'; 
%output_path should be to existing directory, script will then create tumour 
%and normal folders and link the bam files inside respectively 
output_path = '/projects/dmacmillanprj/testbams'; 
prefix = %prefix for output files 
source_file = % from get_random_lines.pl, what is this? 
% The window size 
winSize = '200'; 
% Between 0 and 1, i.e. 0.7 for 70% tumour content 
tumour_content = '1'; 
% Should be between 0 and 0.0001 
gc_window = 0.005; 
% Path to tumour bam file 
sample_bam = '/projects/analysis/analysis5/HS2310/620GBAAXX_4/bwa/620GBAAXX_4_dupsFlagged.bam'; 
% Path to normal bam file 
control_bam = '/projects/analysis/analysis5/HS2381/620GBAAXX_6/bwa/620GBAAXX_6_dupsFlagged.bam'; 

Я попытался это:

load('configfile.m') 
??? Error using ==> load 
Number of columns on line 2 of ASCII file /home/you/CNV/branches/config_file/CopyNumber/configfile.m 
must be the same as previous lines. 
+0

Добавил его в вопрос. –

ответ

1

Просто запустите скрипт config.m внутри другого сценария, как

config 

Помните config.m файл должен находиться в рабочем каталоге или в пути MATLAB.

Однако я бы рекомендовал вам создать функцию из этого скрипта и вернуть структуру со всеми параметрами в виде полей. Тогда вы будете более гибкими в своем основном скрипте, так как вы можете назначить любое имя этой структуре.

function param = config() 
param.samtools_path = '/home/pubseq/BioSw/samtools/0.1.8/samtools'; 
param.output_path = '/projects/dmacmillanprj/testbams'; 
% ... define other parameteres 

В главном скрипте:

P = config; 
st_dir = P.samtools_path; 
% ...etc... 
0

нагрузки() не подходит для файлов, содержащих текст

Вы должны использовать TextScan() (даже в виде MatLab комментариев.) или dlmread(), указав им, что вы хотите пропустить две строки заголовка или хотите обработать «%» как указание комментария.

1

В качестве альтернативы, вы можете определить класс с постоянными свойствами в файле config.m:

classdef config 

    properties (Constant) 
     samtools_path = '/home/pubseq/BioSw/samtools/0.1.8/samtools'; 
     output_path = '/projects/dmacmillanprj/testbams'; 
    end 

end 

Таким образом, вы можете получить доступ к свойствам класса в другой сценарий:

config.samtools_path 
config.output_path 

Чтобы обойти это, вы можете поместить свой файл config.m в пакет (+) и импортировать его явно в свой скрипт. Предполагая, что ваш пакет будет называться «foo» и «+ foo» на вашем пути Matlab, ваш скрипт будет выглядеть следующим образом:

import foo.config 

foo.config.samtools_path 
foo.config.output_path 
Смежные вопросы