[ return ]

dump.pl



############################################################
#
#  file: dump.pl
#
#
#  Weight file output generator.
#
#
#


sub dump_layer_connector
{
    local($con, $layer, $column) = @_;

    &dump_connector($con, $net{$con, $layer, $column});
};


sub dump_connector
{
    local($con, $strg) = @_;
    local(@connections, $i);

#    print "dump_connector: $con $strg\n";
    chop($strg);

    @connections = split(/:/,$strg);

    print OFP $con . " " . int(($#connections+2)/2) . "\n";

    for($i=0; $i <= $#connections; $i+=2)
    {
	print OFP $connections[$i] . "\t\t" . $connections[$i+1] . "\n";
    };
};


sub dump_column
{
    local($layer, $column) = @_;

    print OFP "column $layer.$column\n"; # Column header
    print OFP "1\n";		     # number of gates (always 1)
    print OFP "gate $layer.$column.0\n"; # Gate header
				# Threshold (support)
    print OFP $net{"support threshold", $layer, $column} . "\n";
				# Connectors
    &dump_layer_connector("priming connector", $layer, $column);
    &dump_layer_connector("support connector", $layer, $column);
    &dump_layer_connector("sensory connector", $layer, $column);
};


#
# sub dump_layer
#
#  Write the specified layer to OFP.
#
#

sub dump_layer
{
    local($layer) = @_;
    local($i);

				# Layer header
    print OFP "layer $layer\n";
				# Number of columns
    print OFP $net{"num", $layer} . "\n";

				# Write each column
    for($i=0; $i < $net{"num", $layer}; ++$i)
    {
	&dump_column($layer, $i);
    };
};

#
# sub dump_net
#
#  Write the network to a file in rsnet format.
#
#

sub dump_net
{
    local($base) = @_;
    local($fname) = $base . ".rsnet";
    local($i);

				# Open the output file
    open(OFP, ">$fname") ||
	die "dump_net(): Error opening output file $fname.\n$_";

    print OFP "rsnet\n";

				# Write out each layer.
    foreach $i (@LAYERS)
    {
	&dump_layer($i);
    };

				# Write out all connectors
    foreach $i (@CONNECTORS)
    {
#	print "CONNECTOR " . $connector{$i} . "\n";
	print OFP "connector ";
	&dump_connector($i, $connector{$i});
    };
				# Clean up.
    close OFP;
};



1;


[ return ]