AlignDB-ToXLSX

 view release on metacpan or  search on metacpan

t/03-write_sql.t  view on Meta::CPAN

use strict;
use warnings;
use Test::More;

use Path::Tiny;
use Spreadsheet::XLSX;
use DBI;
use Archive::Zip;

use AlignDB::ToXLSX;

# cd ~/Scripts/alignDB
# perl util/query_sql.pl -d ScervsRM11_1a_Spar -t csv -o isw.csv \
#     -q "SELECT isw_id, isw_length, isw_distance, isw_pi FROM isw LIMIT 1000"

my $temp = Path::Tiny->tempfile;

{
    #@type DBI
    my $dbh = DBI->connect("DBI:CSV:");
    $dbh->{csv_tables}->{isw} = {
        eol            => "\n",
        sep_char       => ",",
        file           => "t/isw.csv",
        skip_first_row => 1,
        quote_char     => '',
        col_names      => [qw{ isw_id isw_length isw_distance isw_pi }],
    };

    my $sql_query = q{
        SELECT
            isw.isw_distance distance,
            AVG(isw.isw_pi) AVG_pi,
            COUNT(*) COUNT
        FROM
            isw
        WHERE
            isw.isw_distance <= 20
        GROUP BY
            distance
        ORDER BY
            distance
    };

    my $toxlsx = AlignDB::ToXLSX->new(
        dbh => $dbh,

        outfile => $temp->stringify,

        #                outfile => "03.xlsx",
    );

    my $sheet_name = 'd1_pi';
    my $sheet;

    {    # header
        my @names = $toxlsx->sql2names($sql_query);
        $sheet = $toxlsx->write_header( $sheet_name, { header => \@names, } );
    }

    my $data;    # for scales
    {            # content
        $data = $toxlsx->write_sql(
            $sheet,
            {   sql_query => $sql_query,
                data      => 1,
            }
        );
    }

    {            # draw_y
        my %opt = (
            x_column  => 0,
            y_column  => 1,
            first_row => 2,
            last_row  => 17,

            #            x_max_scale => 15,
            x_scale_unit => 5,
            y_data       => $data->[1],
            x_title      => "Distance to indels (d1)",
            y_title      => "Nucleotide diversity",



( run in 2.061 seconds using v1.01-cache-2.11-cpan-8f98c5d2c55 )