Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
E
ensembl
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Iterations
Wiki
Requirements
Jira
Code
Merge requests
1
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package Registry
Container Registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
ensembl-gh-mirror
ensembl
Commits
53837993
Commit
53837993
authored
13 years ago
by
Andreas Kusalananda Kähäri
Browse files
Options
Downloads
Patches
Plain Diff
Update to deal with schema 65.
parent
1ab1310a
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
misc-scripts/id_mapping/utils/manage_id_mapping_tables.pl
+102
-93
102 additions, 93 deletions
misc-scripts/id_mapping/utils/manage_id_mapping_tables.pl
with
102 additions
and
93 deletions
misc-scripts/id_mapping/utils/manage_id_mapping_tables.pl
+
102
−
93
View file @
53837993
...
...
@@ -36,16 +36,16 @@ Optional arguments:
This script will delete stable ID mapping data from a database. The script is
intended to be run interactively (your configuration will be overridden).
The tables that will be emptied are:
The tables that will be emptied
or modified
are:
gene
_stable_id
transcript
_stable_id
translation
_stable_id
exon
_stable_id
mapping_session
stable_id_event
gene_archive
peptide_archive
gene
(modified)
transcript
(modified)
translation
(modified)
exon
(modified)
mapping_session
(emptied)
stable_id_event
(emptied)
gene_archive
(emptied)
peptide_archive
(emptied)
Optionally (by interactive selection), the current tables can be backed up.
Backkup tables will get suffices of _bak_0, _bak_1, etc. (where the correct
...
...
@@ -86,11 +86,13 @@ use Bio::EnsEMBL::Utils::Logger;
use
Bio::EnsEMBL::Utils::
ScriptUtils
qw(user_proceed)
;
use
Bio::EnsEMBL::DBSQL::
DBAdaptor
;
my
@tables
=
qw(
gene_stable_id
transcript_stable_id
translation_stable_id
exon_stable_id
my
@modify_tables
=
qw(
gene
transcript
translation
exon
)
;
my
@empty_tables
=
qw(
mapping_session
stable_id_event
gene_archive
...
...
@@ -100,42 +102,39 @@ my @tables = qw(
my
%suffnum
=
();
# parse configuration and commandline arguments
my
$conf
=
new
Bio::EnsEMBL::Utils::
ConfParser
(
-
SERVERROOT
=>
"
$Bin
/../../../..
",
-
DEFAULT_CONF
=>
""
);
my
$conf
=
new
Bio::EnsEMBL::Utils::
ConfParser
(
-
SERVERROOT
=>
"
$Bin
/../../../..
",
-
DEFAULT_CONF
=>
""
);
$conf
->
parse_options
(
'
host=s
'
=>
1
,
'
port=n
'
=>
1
,
'
user=s
'
=>
1
,
'
pass=s
'
=>
0
,
'
dbname=s
'
=>
1
,
);
$conf
->
parse_options
(
'
host=s
'
=>
1
,
'
port=n
'
=>
1
,
'
user=s
'
=>
1
,
'
pass=s
'
=>
0
,
'
dbname=s
'
=>
1
,
);
# get log filehandle and print heading and parameters to logfile
my
$logger
=
new
Bio::EnsEMBL::Utils::
Logger
(
-
LOGFILE
=>
$conf
->
param
('
logfile
'),
-
LOGPATH
=>
$conf
->
param
('
logpath
'),
-
LOGAPPEND
=>
$conf
->
param
('
logappend
'),
-
VERBOSE
=>
$conf
->
param
('
verbose
'),
);
my
$logger
=
new
Bio::EnsEMBL::Utils::
Logger
(
-
LOGFILE
=>
$conf
->
param
('
logfile
'),
-
LOGPATH
=>
$conf
->
param
('
logpath
'),
-
LOGAPPEND
=>
$conf
->
param
('
logappend
'),
-
VERBOSE
=>
$conf
->
param
('
verbose
'),
);
# always run interactively
$conf
->
param
('
interactive
',
1
);
$conf
->
param
(
'
interactive
',
1
);
# initialise log
$logger
->
init_log
(
$conf
->
list_param_values
);
$logger
->
init_log
(
$conf
->
list_param_values
);
# connect to database and get adaptors
my
$dba
=
new
Bio::EnsEMBL::DBSQL::
DBAdaptor
(
-
host
=>
$conf
->
param
('
host
'),
-
port
=>
$conf
->
param
('
port
'),
-
user
=>
$conf
->
param
('
user
'),
-
pass
=>
$conf
->
param
('
pass
'),
-
dbname
=>
$conf
->
param
('
dbname
'),
-
group
=>
'
core
',
);
my
$dba
=
new
Bio::EnsEMBL::DBSQL::
DBAdaptor
(
-
host
=>
$conf
->
param
('
host
'),
-
port
=>
$conf
->
param
('
port
'),
-
user
=>
$conf
->
param
('
user
'),
-
pass
=>
$conf
->
param
('
pass
'),
-
dbname
=>
$conf
->
param
('
dbname
'),
-
group
=>
'
core
',
);
$dba
->
dnadb
(
$dba
);
my
$dbh
=
$dba
->
dbc
->
db_handle
;
...
...
@@ -146,80 +145,84 @@ my $dbh = $dba->dbc->db_handle;
# then look for existing backup tables
my
$sfx
=
&list_backup_counts
;
# aks user if he wants to drop backup tables
if
(
%suffnum
and
user_proceed
("
Drop any backup tables? (you will be able chose which ones)
",
$conf
->
param
('
interactive
'),
'
n
'))
{
# ask user if he wants to drop backup tables
if
(
%suffnum
and
user_proceed
(
"
Drop any backup tables? (you will be able chose which ones)
",
$conf
->
param
('
interactive
'),
'
n
'
)
)
{
&drop_backup_tables
;
}
# ask user if current tables should be backed up
if
(
user_proceed
("
Backup current tables?
",
$conf
->
param
('
interactive
'),
'
y
'))
{
if
(
user_proceed
(
"
Backup current tables?
",
$conf
->
param
('
interactive
'),
'
y
'
)
)
{
&backup_tables
(
$sfx
);
}
# delete from tables
if
(
user_proceed
("
Delete from current tables?
",
$conf
->
param
('
interactive
'),
'
n
'))
{
if
(
user_proceed
(
"
Delete from current tables?
",
$conf
->
param
('
interactive
'),
'
n
'
)
)
{
&delete_from_tables
;
}
# finish logfile
$logger
->
finish_log
;
### END main ###
sub
list_table_counts
{
$logger
->
info
("
Current table counts:
\n\n
");
&list_counts
(
\
@
tables
);
&list_counts
(
[
@modify_tables
,
@empty_
tables
]
);
}
sub
list_backup_counts
{
my
$new_num
=
-
1
;
foreach
my
$table
(
@tables
)
{
foreach
my
$table
(
@modify_tables
,
@empty_tables
)
{
my
$sth
=
$dbh
->
prepare
(
qq(SHOW TABLES LIKE "${table}_bak_%")
);
$sth
->
execute
;
while
(
my
(
$bak
)
=
$sth
->
fetchrow_array
)
{
while
(
my
(
$bak
)
=
$sth
->
fetchrow_array
)
{
$bak
=~
/_bak_(\d+)$/
;
my
$num
=
$
1
;
$suffnum
{
$num
}
=
1
;
$new_num
=
$num
if
(
$num
>
$new_num
);
$new_num
=
$num
if
(
$num
>
$new_num
);
}
$sth
->
finish
;
}
$logger
->
info
("
Backup tables found:
\n\n
")
if
(
%suffnum
);
foreach
my
$num
(
sort
keys
%suffnum
)
{
foreach
my
$num
(
sort
keys
%suffnum
)
{
my
@t
=
();
foreach
my
$table
(
@tables
)
{
foreach
my
$table
(
@modify_tables
,
@empty_tables
)
{
push
@t
,
"
${table}
_bak_
$num
";
}
&list_counts
(
\
@t
);
&list_counts
(
\
@t
);
$logger
->
info
("
\n
");
}
my
$sfx
=
'
_bak_
'
.
++
$new_num
;
return
$sfx
;
}
}
## end sub list_backup_counts
sub
list_counts
{
my
$tabs
=
shift
;
unless
(
$tabs
and
ref
(
$tabs
)
eq
'
ARRAY
')
{
unless
(
$tabs
and
ref
(
$tabs
)
eq
'
ARRAY
'
)
{
throw
("
Need an arrayref.
");
}
$logger
->
info
(
sprintf
("
%-30s%-8s
\n
",
qw(TABLE COUNT)
),
1
);
$logger
->
info
(
('
-
'
x38
)
.
"
\n
",
1
);
$logger
->
info
(
sprintf
(
"
%-30s%-8s
\n
",
qw(TABLE COUNT)
),
1
);
$logger
->
info
(
(
'
-
'
x
38
)
.
"
\n
",
1
);
my
$fmt
=
"
%-30s%8d
\n
";
foreach
my
$table
(
@$tabs
)
{
...
...
@@ -228,22 +231,23 @@ sub list_counts {
my
$count
=
$sth
->
fetchrow_arrayref
->
[
0
];
$sth
->
finish
;
$logger
->
info
(
sprintf
(
$fmt
,
$table
,
$count
),
1
);
$logger
->
info
(
sprintf
(
$fmt
,
$table
,
$count
),
1
);
}
$logger
->
info
("
\n
");
}
sub
drop_backup_tables
{
foreach
my
$num
(
sort
keys
%suffnum
)
{
foreach
my
$num
(
sort
keys
%suffnum
)
{
my
$suffix
=
"
_bak_
$num
";
if
(
user_proceed
(
qq(Drop backup tables with suffix ${suffix}?)
,
$conf
->
param
('
interactive
'),
'
n
'))
{
foreach
my
$table
(
@tables
)
{
if
(
user_proceed
(
qq(Drop backup tables with suffix ${suffix}?)
,
$conf
->
param
('
interactive
'),
'
n
'
)
)
{
foreach
my
$table
(
@modify_tables
,
@empty_tables
)
{
my
$bak_table
=
"
${table}${suffix}
";
$logger
->
info
("
$bak_table
\n
",
1
);
unless
(
$conf
->
param
('
dry_run
'))
{
$logger
->
info
(
"
$bak_table
\n
",
1
);
unless
(
$conf
->
param
('
dry_run
')
)
{
$dbh
->
do
(
qq(DROP TABLE $bak_table)
);
}
}
...
...
@@ -258,14 +262,13 @@ sub drop_backup_tables {
# recalculate the suffix number to use for current backup
my
$max_num
=
reverse
sort
keys
%suffnum
;
$sfx
=
'
_bak_
'
.
++
$max_num
;
}
}
## end sub drop_backup_tables
sub
backup_tables
{
my
$sfx
=
shift
;
throw
("
Need a backup table suffix.
")
unless
(
defined
(
$sfx
));
throw
("
Need a backup table suffix.
")
unless
(
defined
(
$sfx
)
);
$logger
->
info
(
qq(\nWill use '$sfx' as suffix for backup tables\n)
);
$logger
->
info
(
qq(\nBacking up tables...\n)
);
...
...
@@ -273,35 +276,41 @@ sub backup_tables {
my
$fmt1
=
"
%-30s
";
my
$fmt2
=
"
%8d
\n
";
foreach
my
$table
(
@tables
)
{
$logger
->
info
(
sprintf
(
$fmt1
,
$table
),
1
);
foreach
my
$table
(
@modify_tables
,
@empty_tables
)
{
$logger
->
info
(
sprintf
(
$fmt1
,
$table
),
1
);
my
$c
=
0
;
unless
(
$conf
->
param
('
dry_run
'))
{
$c
=
$dbh
->
do
(
qq(CREATE TABLE ${table}${sfx} SELECT * FROM $table)
);
unless
(
$conf
->
param
('
dry_run
')
)
{
$c
=
$dbh
->
do
(
qq(CREATE TABLE ${table}${sfx} SELECT * FROM $table)
);
}
$logger
->
info
(
sprintf
(
$fmt2
,
$c
)
);
$logger
->
info
(
sprintf
(
$fmt2
,
$c
)
);
}
$logger
->
info
(
qq(Done.\n)
);
}
sub
delete_from_tables
{
my
$fmt1
=
"
%-30s
";
my
$fmt2
=
"
%8d
\n
";
$logger
->
info
(
qq(\nDeleting from current tables...\n)
);
foreach
my
$table
(
@tables
)
{
$logger
->
info
(
sprintf
(
$fmt1
,
$table
),
1
);
foreach
my
$table
(
@modify_tables
)
{
$logger
->
info
(
sprintf
(
$fmt1
,
$table
),
1
);
my
$c
=
0
;
unless
(
$conf
->
param
('
dry_run
')
)
{
$c
=
$dbh
->
do
(
qq(UPDATE $table SET stable_id=NULL)
);
}
$logger
->
info
(
sprintf
(
$fmt2
,
$c
)
);
}
foreach
my
$table
(
@empty_tables
)
{
$logger
->
info
(
sprintf
(
$fmt1
,
$table
),
1
);
my
$c
=
0
;
unless
(
$conf
->
param
('
dry_run
'))
{
unless
(
$conf
->
param
('
dry_run
')
)
{
$c
=
$dbh
->
do
(
qq(DELETE FROM $table)
);
}
$logger
->
info
(
sprintf
(
$fmt2
,
$c
)
);
$logger
->
info
(
sprintf
(
$fmt2
,
$c
)
);
}
$logger
->
info
(
qq(Done.\n)
);
}
}
## end sub delete_from_tables
This diff is collapsed.
Click to expand it.
Preview
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment