def importGenome(packageFile, batchSize = 50, verbose = 0) :
    """Import a pyGeno genome package. A genome packages is folder or a tar.gz ball that contains at it's root:

    * gziped fasta files for all chromosomes, or URLs from where them must be downloaded
    
    * gziped GTF gene_set file from Ensembl, or an URL from where it must be downloaded
    
    * a manifest.ini file such as::
    
        [package_infos]
        description = Test package. This package installs only chromosome Y of mus musculus
        maintainer = Tariq Daouda
        maintainer_contact = tariq.daouda [at] umontreal
        version = GRCm38.73

        [genome]
        species = Mus_musculus
        name = GRCm38_test
        source = http://useast.ensembl.org/info/data/ftp/index.html

        [chromosome_files]
        Y = Mus_musculus.GRCm38.73.dna.chromosome.Y.fa.gz / or an url such as ftp://... or http://

        [gene_set]
        gtf = Mus_musculus.GRCm38.73_Y-only.gtf.gz / or an url such as ftp://... or http://

    All files except the manifest can be downloaded from: http://useast.ensembl.org/info/data/ftp/index.html
    
    A rollback is performed if an exception is caught during importation
    
    batchSize sets the number of genes to parse before performing a database save. PCs with little ram like
    small values, while those endowed with more memory may perform faster with higher ones.
    
    Verbose must be an int [0, 4] for various levels of verbosity
    """

    def reformatItems(items) :
        s = str(items)
        s = s.replace('[', '').replace(']', '').replace("',", ': ').replace('), ', '\n').replace("'", '').replace('(', '').replace(')', '')
        return s

    printf('Importing genome package: %s... (This may take a while)' % packageFile)

    isDir = False
    if not os.path.isdir(packageFile) :
        packageDir = _decompressPackage(packageFile)
    else :
        isDir = True
        packageDir = packageFile

    parser = SafeConfigParser()
    parser.read(os.path.normpath(packageDir+'/manifest.ini'))
    packageInfos = parser.items('package_infos')

    genomeName = parser.get('genome', 'name')
    species = parser.get('genome', 'species')
    genomeSource = parser.get('genome', 'source')
    
    seqTargetDir = conf.getGenomeSequencePath(species.lower(), genomeName)
    if os.path.isdir(seqTargetDir) :
        raise KeyError("The directory %s already exists, Please call deleteGenome() first if you want to reinstall" % seqTargetDir)
        
    gtfFile = _getFile(parser.get('gene_set', 'gtf'), packageDir)
    
    chromosomesFiles = {}
    chromosomeSet = set()
    for key, fil in parser.items('chromosome_files') :
        chromosomesFiles[key] = _getFile(fil, packageDir)
        chromosomeSet.add(key)

    try :
        genome = Genome(name = genomeName, species = species)
    except KeyError:
        pass
    else :
        raise KeyError("There seems to be already a genome (%s, %s), please call deleteGenome() first if you want to reinstall it" % (genomeName, species))

    genome = Genome_Raba()
    genome.set(name = genomeName, species = species, source = genomeSource, packageInfos = packageInfos)

    printf("Importing:\n\t%s\nGenome:\n\t%s\n..."  % (reformatItems(packageInfos).replace('\n', '\n\t'), reformatItems(parser.items('genome')).replace('\n', '\n\t')))

    chros = _importGenomeObjects(gtfFile, chromosomeSet, genome, batchSize, verbose)
    os.makedirs(seqTargetDir)
    startChro = 0
    pBar = ProgressBar(nbEpochs = len(chros))
    for chro in chros :
        pBar.update(label = "Importing DNA, chro %s" % chro.number)
        length = _importSequence(chro, chromosomesFiles[chro.number.lower()], seqTargetDir)
        chro.start = startChro
        chro.end = startChro+length
        startChro = chro.end
        chro.save()
    pBar.close()
    
    if not isDir :
        shutil.rmtree(packageDir)
    
    #~ objgraph.show_most_common_types(limit=20)
    return True
Import a pyGeno genome package. A genome packages is folder or a tar.gz ball that contains at it's root:

    * gziped fasta files for all chromosomes, or URLs from where them must be downloaded
    
    * gziped GTF gene_set file from Ensembl, or an URL from where it must be downloaded
    
    * a manifest.ini file such as::
    
        [package_infos]
        description = Test package. This package installs only chromosome Y of mus musculus
        maintainer = Tariq Daouda
        maintainer_contact = tariq.daouda [at] umontreal
        version = GRCm38.73

        [genome]
        species = Mus_musculus
        name = GRCm38_test
        source = http://useast.ensembl.org/info/data/ftp/index.html

        [chromosome_files]
        Y = Mus_musculus.GRCm38.73.dna.chromosome.Y.fa.gz / or an url such as ftp://... or http://

        [gene_set]
        gtf = Mus_musculus.GRCm38.73_Y-only.gtf.gz / or an url such as ftp://... or http://

    All files except the manifest can be downloaded from: http://useast.ensembl.org/info/data/ftp/index.html
    
    A rollback is performed if an exception is caught during importation
    
    batchSize sets the number of genes to parse before performing a database save. PCs with little ram like
    small values, while those endowed with more memory may perform faster with higher ones.
    
    Verbose must be an int [0, 4] for various levels of verbosity