Импортировать переменные из файла - PullRequest
1 голос
/ 19 марта 2012

Привет, поэтому у меня есть файл с именем 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 ]

1 голос
/ 20 марта 2012

Просто запустите скрипт 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 голос
/ 04 марта 2016

Кроме того, вы можете определить класс с постоянными свойствами в вашем 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
0 голосов
/ 20 марта 2012

load () не подходит для файлов, которые содержат текст (даже в форме комментариев к Matlab.)строки заголовка или то, что вы хотите использовать для обозначения комментария '%'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...