Merge pull request #5290 from solgenomics/topic/fix_upload_pehno
[sgn.git] / lib / SGN / Controller / Genefamily.pm
blob054c0c0b20012218d2b7b2454d1836d1db9b7ceb
2 package SGN::Controller::Genefamily;
4 use Moose;
6 use Data::Dumper;
8 BEGIN { extends 'Catalyst::Controller'; }
10 sub genefamily_index :Path('/tools/genefamily') Args(0) {
11 my $self = shift;
12 my $c = shift;
14 $c->stash->{template} = '/tools/genefamily/index.mas';
18 sub search : Path('/tools/genefamily/search') Args(0) {
19 my $self = shift;
20 my $c = shift;
22 # if ($c->user()) {
23 # if (grep(/curator|genefamily_editor/, $c->user->get_object()->get_roles() )) {
25 $c->stash->{genefamily_id} = $c->req->param("genefamily_id") || '';
26 $c->stash->{build} = $c->req->param("build") || '';
27 $c->stash->{member_id} = $c->req->param("member_id") || '';
28 $c->stash->{action} = $c->req->param("action") || '';
30 $c->stash->{template} = '/tools/genefamily/search.mas';
31 # }
32 # else {
33 # $c->stash->{message} = "You do not have the necessary privileges to access this page.";
34 # $c->stash->{template} = "/generic_message.mas";
35 # }
37 # }
38 # else {
39 # $c->stash->{message} = "You need to be logged in to access this page.";
40 # $c->stash->{template} = "/generic_message.mas";
41 # }
45 sub sequence_details :Path('/tools/genefamily/seq') Args(3) {
46 my $self = shift;
47 my $c = shift;
48 my $build = shift;
49 my $family = shift;
50 my $sequence = shift;
52 my $gf = SGN::Genefamily->new(
53 name => $family,
54 build => $build,
55 files_dir => $c->config()->{genefamily_dir},
58 print STDERR "Trying to locate sequence $sequence\n";
60 my $seq_info = $gf->get_sequence($sequence);
62 my ($seq_id, $desc, $seq) = @$seq_info;
63 $c->stash->{build} = $build;
64 $c->stash->{family} = $family;
65 $c->stash->{seq_id} = $seq_id;
66 $c->stash->{desc} = $desc || "[ no description provided ]";
67 $c->stash->{seq} = $seq;
69 $c->stash->{template} = '/tools/genefamily/sequence.mas';
74 sub get_family_fasta :Path('/tools/genefamily/fasta/') Args(2) {
75 my $self = shift;
76 my $c = shift;
77 my $build = shift;
78 my $family = shift;
80 my $gf = SGN::Genefamily->new(
81 name => $family,
82 build => $build,
83 files_dir => $c->config()->{genefamily_dir},
86 my $fasta_seq = $gf -> get_fasta();
88 $c->stash->{build} = $build;
89 $c->stash->{family} = $family;
90 $c->stash->{fasta} = $fasta_seq;
92 $c->stash->{template} = '/tools/genefamily/fasta.mas';
95 sub genefamily_details :Path('/tools/genefamily/details') Args(2) {
96 my $self = shift;
97 my $c = shift;
98 my $build = shift;
99 my $family = shift;
101 my $gf = SGN::Genefamily->new(
102 name => $family,
103 build => $build,
104 files_dir => $c->config()->{genefamily_dir},
107 my $seq_data ="";
108 my $fasta_data = "";
109 my $tree_data = "";
110 my $annot_data = "";
111 my $exp_data = "";
113 my $align_link_disabled = "";
114 my $fasta_link_disabled = "";
115 my $tree_link_disabled = "";
116 my $exp_link_disabled = "";
118 my $errors = "";
119 my $big_errors = 0;
121 if (!$family) {
122 $c->stash->{template} = '/generic_message.mas';
123 $c->stash->{message} = 'Need a family to display!';
124 return;
127 $c->stash->{genefamily_id} = $family;
129 my $members = $gf->get_members($family);
131 print STDERR "Members: ".Dumper($members);
133 $c->stash->{member_count} = scalar(@$members);
134 $c->stash->{members} = join(", ", @$members);
137 eval {
138 $c->stash->{seq_data} = $gf->get_alignment();
141 if ($@) {
142 $errors .= "Alignment data not available. ";
143 $big_errors++;
144 $align_link_disabled="disabled";
147 eval {
148 $c->stash->{fasta_data} = $gf->get_fasta();
152 if ($@) {
153 $errors .= "Sequence data not available. ";
154 $big_errors++;
155 $fasta_link_disabled = "disabled";
157 eval {
158 $c->stash->{tree_data} = $gf->get_tree();
160 if ($@) {
161 $errors .= "Tree data not available. ";
162 $c->stash->{tree_link_disabled} = "disabled"
164 eval {
165 $c->stash->{annot_data} = $gf->get_annotation();
167 if ($@) {
168 $errors .= "Annotation data not available. ";
169 $c->stash->{annot_data} = "(No annotation data available)";
171 eval {
172 $errors .= "Expression data not available. ";
173 $c->stash->{exp_data} = $gf->get_expression();
175 if ($@) {
176 $c->stash->{exp_link_disabled} = "disabled";
179 if ($big_errors > 0) {
180 $errors = "This family does not seem to exist!\n";
183 $c->stash->{template} = '/tools/genefamily/details.mas';