This file is indexed.

/usr/share/perl5/Circos/Track/Highlight.pm is in circos 0.64-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
package Circos::Track::Highlight;

=pod

=head1 NAME

Circos::Track::Link - routines for highlight tracks in Circos

=head1 SYNOPSIS

This module is not meant to be used directly.

=head1 DESCRIPTION

Circos is an application for the generation of publication-quality,
circularly composited renditions of genomic data and related
annotations.

Circos is particularly suited for visualizing alignments, conservation
and intra and inter-chromosomal relationships. However, Circos can be
used to plot any kind of 2D data in a circular layout - its use is not
limited to genomics. Circos' use of lines to relate position pairs
(ribbons add a thickness parameter to each end) is effective to
display relationships between objects or positions on one or more
scales.

All documentation is in the form of tutorials at L<http://www.circos.ca>.

=cut

# -------------------------------------------------------------------

use strict;
use warnings;

use base 'Exporter';
our @EXPORT = qw();

use Carp qw( carp confess croak );
use FindBin;
use GD::Image;
use Params::Validate qw(:all);

use lib "$FindBin::RealBin";
use lib "$FindBin::RealBin/../lib";
use lib "$FindBin::RealBin/lib";

use Circos::Configuration; # qw(%CONF $DIMS);
use Circos::Constants;
#use Circos::Colors;
use Circos::Debug;
use Circos::Image;
use Circos::Error;
#use Circos::Font;
#use Circos::Geometry;
#use Circos::SVG;
#use Circos::Image;
use Circos::Unit;
use Circos::Utils;
use Circos::URL;

use Memoize;

for my $f ( qw ( ) ) {
memoize($f);
}

# -------------------------------------------------------------------
sub draw_highlights {
  # Draw hilight data for a given chromosome. If a test
  # is included, then only highlights whose options pass
  # the test will be drawn.
  #
  # The test is a hash of variable=>value pairs.

  my ( $tracks, $default, $chr, $set, $ideogram, $test ) = @_;
  for my $track ( sort { $a->{z} <=> $b->{z} } @$tracks ) {
		my @param_path = ($track,$default);
		next unless $track->{__data};
		my $track_id = $track->{id};
    Circos::printsvg(qq{<g id="highlight$track_id">}) if $SVG_MAKE;
    # create a working list of highlights at a given z-depth
		
		for my $datum ( sort {$a->{param}{z} <=> $b->{param}{z} } @{$track->{__data}} ) {

      next unless $datum->{data}[0]{chr} eq $chr;

			my $intersection = $datum->{data}[0]{set}->intersect( $Circos::KARYOTYPE->{$chr}{chr}{display_region}{accept} );
			# call to old routine
			#my $intersection = Circos::filter_data($datum->{data}[0]{set},$chr);
			next unless $intersection->cardinality;

			my $r0  = seek_parameter( "r0", $datum, @param_path );
			my $r1  = seek_parameter( "r1", $datum, @param_path );
			$r0 = unit_parse( $r0, $ideogram );
			$r1 = unit_parse( $r1, $ideogram );

			my $accept = 1;
			if ($test) {
				for my $param ( keys %$test ) {
					my $value = seek_parameter( $param, $datum, @param_path ) || 0;
					$accept &&= $value == $test->{$param};
				}
			}
			next unless $accept;

			if ( seek_parameter( "ideogram", $datum, @param_path ) ) {
				$r0 = $DIMS->{ideogram}{ $ideogram->{tag} }{radius_inner};
				$r1 = $DIMS->{ideogram}{ $ideogram->{tag} }{radius_outer};
			} else {
				my $offset = seek_parameter( "offset", $datum, @param_path );
				$r0 += $offset if $offset;
				$r1 += $offset if $offset;
			}

			my $url = seek_parameter( "url", $datum, @param_path );
			$url    = format_url(url=>$url,param_path=>[ $datum, @param_path]);

			for my $subset ( $intersection->sets) {
				Circos::slice(
										image       => $IM,
										start       => $subset->min,
										end         => $subset->max,
										chr         => $datum->{data}[0]{chr},
										radius_from => $r0,
										radius_to   => $r1,
										edgecolor   => seek_parameter("stroke_color", $datum, @param_path),
										edgestroke  => seek_parameter("stroke_thickness", $datum, @param_path),
										fillcolor   => seek_parameter("fill_color", $datum, @param_path),
										mapoptions  => { url => $url },
									 );
			}
		}
		Circos::printsvg(qq{</g>}) if $SVG_MAKE;
	}
}

1;