大家好,我有一个名为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...
答案 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(),为他们指定您要跳过两个标题行,或者您想要将'%'视为表示评论。