Location: Practical application of CellML 1.1: The integration of new mechanisms into a human ventricular myocyte model @ d6328d18c94e / cellml / models / 2004_tenTusscher-version-2 / experiments / run-APDR.pl

Author:
David Nickerson <nickerso@users.sourceforge.net>
Date:
2013-05-04 07:40:04+12:00
Desc:
adding initial TODO list to keep track of what I need to do to get things working with more recent tools than my original CellMLSimulator that I used in this paper
Permanent Source URI:
https://models.physiomeproject.org/w/andre/nickerson-2008/rawfile/d6328d18c94e9dad70f4d0e4b250e89429773b62/cellml/models/2004_tenTusscher-version-2/experiments/run-APDR.pl

#!/usr/bin/perl

use strict;

sub setBCL {
    my $period = shift;
    my $infile = shift;
    my $outfile = shift;

    open(INPUT,"<$infile") or die "Unable to open infile: $!\n";
    open(OUTPUT,">$outfile") or die "Unable to open outfile: $!\n";

    while (<INPUT>) {
        s/name=\"stimPeriod\" initial_value=\"1000\"/name=\"stimPeriod\" initial_value=\"$period\"/;
        print OUTPUT $_;
    }

    close INPUT;
    close OUTPUT;
}

my $base = "/usr/people/nickerso/data/papers/ProgBiophysMolecBiol-NobleReview/models/2004_tenTusscher/experiments";

my $cellml = "$base/periodic-stimulus-";

my $text2sig = "/product/cmiss/cmgui/utilities/i686-linux/unemap/text2sig";
my $mozCellML = "/usr/people/nickerso/physiome/cellml/mozCellML/mozCellML-standalone/bin/MozCellML";

my $tmpData = "/tmp/HVM-tmp.data";
my $tmpXML = "/tmp/HVM-tmp.xml";
my $cnfg = "$base/data.cnfg";

my $outputRoot = "/tmp/signals";

#my @BCLs = (250,300,350,400,450,500,750,1000,2000,3000,4000,5000);
my @BCLs = (5000);

#my @cellTypes = ("epicardial","endocardial","M");
my @cellTypes = ("endocardial","M");

foreach my $BCL (@BCLs) {
    print "BCL: $BCL\n";
    foreach my $type (@cellTypes) {
        print "Cell type: $type\n";
        my $infile = $cellml.$type.".xml";
        &setBCL($BCL,$infile,$tmpXML);
        my $tEnd = 150 * $BCL;
        my $command = "$mozCellML url file://$tmpXML start 0 end $tEnd grid 0.5 maxstep 0.5 relerr 1e-6 abserr 1e-6 output $tmpData";
        my $blah = `$command`;
        print "------------------------------\n";
        print "$blah\n";
        print "------------------------------\n";
        unlink $tmpXML;
        my $signalFile = sprintf "$outputRoot/$type-%04d.signal",$BCL;
        $command = "$text2sig $tmpData $cnfg $signalFile";
        $blah = `$command`;
        print "------------------------------\n";
        print "$blah\n";
        print "------------------------------\n";
        unlink $tmpData;
    }
}