从文件导入变量

时间:2012-03-19 19:46:33

标签: matlab

大家好,我有一个名为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.

3 个答案:

答案 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...

答案 1 :(得分: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

答案 2 :(得分:0)

load()不适用于包含文本的文件(即使是matlab注释形式。)

您应该使用textscan()或dlmread(),为他们指定您要跳过两个标题行,或者您想要将'%'视为表示评论。