diff --git a/misc-scripts/density_feature/gene_density_calc.pl b/misc-scripts/density_feature/gene_density_calc.pl
index 212b1b454d4ad13488d9360111a6fe8389341983..a4577d6a366a6c3a2a1e8f6668e58b341c02869c 100644
--- a/misc-scripts/density_feature/gene_density_calc.pl
+++ b/misc-scripts/density_feature/gene_density_calc.pl
@@ -118,21 +118,78 @@ foreach my $dbname (@dbnames) {
   $sth = $db->dbc->prepare("DELETE df, dt FROM density_feature df, density_type dt, analysis a WHERE a.analysis_id=dt.analysis_id AND dt.density_type_id=df.density_type_id AND a.logic_name IN ('knowngenedensity', 'genedensity')");
   $sth->execute();
   
-
-
   my $dfa = $db->get_DensityFeatureAdaptor();
   my $dta = $db->get_DensityTypeAdaptor();
   my $aa  = $db->get_AnalysisAdaptor();
   my $slice_adaptor = $db->get_SliceAdaptor();
   
   my $support = 'Bio::EnsEMBL::Utils::ConversionSupport';
-  my $analysis = $aa->fetch_by_logic_name('knowngenedensity');
-  $analysis->created($support->date());
-  $aa->update($analysis);
+  my $analysis1 = $aa->fetch_by_logic_name('knowngenedensity');
+  my $analysis2 = $aa->fetch_by_logic_name('genedensity');
+
+  # Master database location:
+  my ( $mhost, $mport ) = ( 'ens-staging1', '3306' );
+  my ( $muser, $mpass ) = ( 'ensro',        undef );
+  my $mdbname = 'ensembl_production';
+  my $prod_dsn;
+  my $prod_dbh;
+
+  if ( !defined($analysis1) || !defined($analysis2) ) {
+
+    #get analyses descriptions from the master database
+
+     $prod_dsn = sprintf( 'DBI:mysql:host=%s;port=%d;database=%s',
+                     $mhost, $mport, $mdbname );
+     $prod_dbh = DBI->connect( $prod_dsn, $muser, $mpass,
+                          { 'PrintError' => 1, 'RaiseError' => 1 } );
+  } 
+
+  if ( !defined($analysis1) ) {
+
+   my ($display_label,$description) = $prod_dbh->selectrow_array("select distinct display_label, description from analysis_description where is_current = 1 and logic_name = 'knowngenedensity'");
+
+    $analysis1 = new Bio::EnsEMBL::Analysis(
+    -program     => "gene_density_calc.pl",
+    -database    => "ensembl",
+    -gff_source  => "gene_density_calc.pl",
+    -gff_feature => "density",
+    -logic_name  => "knowngenedensity",
+    -description => $description,
+    -display_label => $display_label,
+    -displayable   => 1 );
+
+    $aa->store($analysis1);
+
+  } else {
+      $analysis1->created($support->date());
+      $aa->update($analysis1);
+  }
  
-  $analysis = $aa->fetch_by_logic_name('genedensity');
-  $analysis->created($support->date());
-  $aa->update($analysis);
+
+  if ( !defined($analysis2) ) {
+
+  my ($display_label,$description) = $prod_dbh->selectrow_array("select distinct display_label, description from analysis_description where is_current = 1 and logic_name = 'genedensity'");
+
+      $analysis2 = new Bio::EnsEMBL::Analysis(
+    -program     => "gene_density_calc.pl",
+    -database    => "ensembl",
+    -gff_source  => "gene_density_calc.pl",
+    -gff_feature => "density",
+    -logic_name  => "genedensity",
+    -description => $description,
+    -display_label => $display_label,
+    -displayable   => 1 );
+
+      $aa->store($analysis2);  
+
+  } else {
+      $analysis2->created($support->date());
+      $aa->update($analysis2);
+  }
+
+  if ( defined($prod_dbh) ) {
+      $prod_dbh->disconnect;
+  }
 
 #
 # Now the actual feature calculation loop
@@ -143,6 +200,7 @@ foreach my $dbname (@dbnames) {
   #
   # Create new analysis object for density calculation.
   #
+    my $analysis;
 
     if($known) {
       $analysis = $aa->fetch_by_logic_name('knowngenedensity');
diff --git a/misc-scripts/density_feature/percent_gc_calc.pl b/misc-scripts/density_feature/percent_gc_calc.pl
index 8fe69e32afb3351c83d728a5f05b2569dd545a7c..40e96d77bc72468214251a7ec024e524b8ac62f9 100644
--- a/misc-scripts/density_feature/percent_gc_calc.pl
+++ b/misc-scripts/density_feature/percent_gc_calc.pl
@@ -79,14 +79,43 @@ my @sorted_slices =
   } @{ $slice_adaptor->fetch_all('toplevel') } );
 
 
-#
-# Update creation date of analysis.
-#
-my $support = 'Bio::EnsEMBL::Utils::ConversionSupport';
 my $analysis = $aa->fetch_by_logic_name('percentgc');
-$analysis->created($support->date());
-$aa->update($analysis);
 
+if ( !defined($analysis) ) {
+
+   # Master database location:
+   my ( $mhost, $mport ) = ( 'ens-staging1', '3306' );
+   my ( $muser, $mpass ) = ( 'ensro',        undef );
+   my $mdbname = 'ensembl_production';
+
+   my $prod_dsn = sprintf( 'DBI:mysql:host=%s;port=%d;database=%s',
+                     $mhost, $mport, $mdbname );
+   my $prod_dbh = DBI->connect( $prod_dsn, $muser, $mpass,
+                          { 'PrintError' => 1, 'RaiseError' => 1 } );
+
+   my ($display_label,$description) = $prod_dbh->selectrow_array("select distinct display_label, description from analysis_description where is_current = 1 and logic_name = 'percentgc'");
+
+   $prod_dbh->disconnect;
+
+   $analysis = new Bio::EnsEMBL::Analysis(
+              -program     => "percent_gc_calc.pl",
+              -database    => "ensembl",
+              -gff_source  => "percent_gc_calc.pl",
+              -gff_feature => "density",
+              -logic_name  => "percentgc",
+              -description => $description,
+              -display_label => $display_label,
+              -displayable   => 1 );
+
+   $aa->store($analysis);
+
+} else {
+
+    my $support = 'Bio::EnsEMBL::Utils::ConversionSupport';
+    $analysis->created($support->date());
+    $aa->update($analysis);
+
+}
 
 #
 # Create new density type.
diff --git a/misc-scripts/density_feature/repeat_coverage_calc.pl b/misc-scripts/density_feature/repeat_coverage_calc.pl
index c160972c07a6236e805a60af88e730426db6c6f8..30ae76605fe56d8239e3941ecee857e55fa0f115 100644
--- a/misc-scripts/density_feature/repeat_coverage_calc.pl
+++ b/misc-scripts/density_feature/repeat_coverage_calc.pl
@@ -77,13 +77,43 @@ my $dta = $db->get_DensityTypeAdaptor();
 my $aa  = $db->get_AnalysisAdaptor();
 
 
-#
-# Update creation date of analysis.
-#
-my $support = 'Bio::EnsEMBL::Utils::ConversionSupport';
 my $analysis = $aa->fetch_by_logic_name('percentagerepeat');
-$analysis->created($support->date());
-$aa->update($analysis);
+
+
+if ( !defined($analysis) ) {
+
+   # Master database location:
+   my ( $mhost, $mport ) = ( 'ens-staging1', '3306' );
+   my ( $muser, $mpass ) = ( 'ensro',        undef );
+   my $mdbname = 'ensembl_production';
+
+   my $prod_dsn = sprintf( 'DBI:mysql:host=%s;port=%d;database=%s',
+                     $mhost, $mport, $mdbname );
+   my $prod_dbh = DBI->connect( $prod_dsn, $muser, $mpass,
+                          { 'PrintError' => 1, 'RaiseError' => 1 } );
+
+   my ($display_label,$description) = $prod_dbh->selectrow_array("select distinct display_label, description from analysis_description where is_current = 1 and logic_name = 'percentagerepeat'");
+
+   $prod_dbh->disconnect;
+
+   $analysis = new Bio::EnsEMBL::Analysis(
+              -program     => "repeat_coverage_calc.pl",
+              -database    => "ensembl",
+              -gff_source  => "repeat_coverage_calc.pl",
+              -gff_feature => "density",
+              -logic_name  => "percentagerepeat", 
+              -description => $description,
+              -display_label => $display_label,
+              -displayable   => 1 );
+
+    $aa->store($analysis);
+} else {
+
+    my $support = 'Bio::EnsEMBL::Utils::ConversionSupport';
+    $analysis->created($support->date());
+    $aa->update($analysis);
+
+}
 
 my $slices = $slice_adaptor->fetch_all( "toplevel" );
 my @sorted_slices = sort { $b->seq_region_length() <=> $a->seq_region_length() } @$slices;
diff --git a/misc-scripts/density_feature/variation_density.pl b/misc-scripts/density_feature/variation_density.pl
index 051d99d3500a5a2769f2b5fc687e6fdba5d44cd0..e937a24106a1a9625234fd58c71bbba9dea8664c 100644
--- a/misc-scripts/density_feature/variation_density.pl
+++ b/misc-scripts/density_feature/variation_density.pl
@@ -53,9 +53,41 @@ my @sorted_slices = sort( {
 
 
 my $analysis = $analysis_adaptor->fetch_by_logic_name('snpdensity');
-my $support = 'Bio::EnsEMBL::Utils::ConversionSupport';
-$analysis->created($support->date());
-$analysis_adaptor->update($analysis);
+
+if ( !defined($analysis) ) {
+
+   # Master database location:
+   my ( $mhost, $mport ) = ( 'ens-staging1', '3306' );
+   my ( $muser, $mpass ) = ( 'ensro',        undef );
+   my $mdbname = 'ensembl_production';
+
+   my $prod_dsn = sprintf( 'DBI:mysql:host=%s;port=%d;database=%s',
+                     $mhost, $mport, $mdbname );
+   my $prod_dbh = DBI->connect( $prod_dsn, $muser, $mpass,
+                          { 'PrintError' => 1, 'RaiseError' => 1 } );
+
+   my ($display_label,$description) = $prod_dbh->selectrow_array("select distinct display_label, description from analysis_description where is_current = 1 and logic_name = 'snpdensity'");
+
+   $prod_dbh->disconnect;
+
+   $analysis = new Bio::EnsEMBL::Analysis(
+              -program     => "variation_density.pl",
+              -database    => "ensembl",
+              -gff_source  => "variation_density.pl",
+              -gff_feature => "density",
+              -logic_name  => "snpdensity",
+              -description => $description,
+              -display_label => $display_label,
+              -displayable   => 1 );
+
+    $analysis_adaptor->store($analysis);
+} else {
+
+    my $support = 'Bio::EnsEMBL::Utils::ConversionSupport';
+    $analysis->created($support->date());
+    $analysis_adaptor->update($analysis);
+
+}
 
 # Create and store new density type