From 04913f2209be3186027f803091c7fc829f650af5 Mon Sep 17 00:00:00 2001 From: cvs2git Date: Fri, 23 Jul 2010 09:05:24 +0000 Subject: [PATCH] This commit was manufactured by cvs2svn to create tag 'before- release-59-tag'. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sprout from master 2010-07-23 09:05:23 UTC Andreas Kusalananda Kähäri 'Only submit sequence dumping jobs if there are jobs to submit.' Delete: LICENSE docs/ensembl_changes_spec.txt docs/ensembl_das/Homo_sapiens.ini docs/ensembl_das/demo.ini docs/ensembl_das/demo.pm docs/ensembl_das/ensembl-das.pdf docs/ensembl_das/ensembl-das.sxw docs/schema_description/README docs/schema_description/process-saxon.bat docs/schema_description/process-saxon.sh docs/schema_description/schema_description.dtd docs/schema_description/schema_description.html docs/schema_description/tables.html docs/schema_description/tables.txt docs/schema_description/tables.xml docs/schema_description/xml2html.xsl docs/schema_description/xml2wiki.xsl docs/tutorial/ensembl_tutorial.pdf docs/tutorial/ensembl_tutorial.sxw docs/tutorial/ensembl_tutorial.txt misc-scripts/CopyDBoverServer.pl misc-scripts/CreateFile4CopyDBoverServer.pl misc-scripts/README.schema_patching misc-scripts/add_species_aliases.pl misc-scripts/alternative_splicing/AltSplicingToolkit/AUTHORS misc-scripts/alternative_splicing/AltSplicingToolkit/BUGS misc-scripts/alternative_splicing/AltSplicingToolkit/COPYING misc-scripts/alternative_splicing/AltSplicingToolkit/ChangeLog misc-scripts/alternative_splicing/AltSplicingToolkit/INSTALL misc-scripts/alternative_splicing/AltSplicingToolkit/INSTALL.configure misc-scripts/alternative_splicing/AltSplicingToolkit/Makefile.am misc-scripts/alternative_splicing/AltSplicingToolkit/Makefile.in misc-scripts/alternative_splicing/AltSplicingToolkit/NEWS misc-scripts/alternative_splicing/AltSplicingToolkit/README misc-scripts/alternative_splicing/AltSplicingToolkit/THANKS misc-scripts/alternative_splicing/AltSplicingToolkit/aclocal.m4 misc-scripts/alternative_splicing/AltSplicingToolkit/configure.ac misc-scripts/alternative_splicing/AltSplicingToolkit/depcomp misc-scripts/alternative_splicing/AltSplicingToolkit/release_notes.txt misc-scripts/alternative_splicing/AltSplicingToolkit/src/Constants.h misc-scripts/alternative_splicing/AltSplicingToolkit/src/Main.cpp misc-scripts/alternative_splicing/AltSplicingToolkit/src/Makefile.am misc-scripts/alternative_splicing/AltSplicingToolkit/src/Makefile.in misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/Coordinates.cpp misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/Coordinates.h misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/ExonChunk.cpp misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/ExonChunk.h misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/Feature.cpp misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/Feature.h misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/Gene.cpp misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/Gene.h misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/GeneFeature.cpp misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/GeneFeature.h misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/RegionChunk.cpp misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/RegionChunk.h misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/SplicingEvent.cpp misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/SplicingEvent.h misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/SplicingEventContainer.cpp misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/SplicingEventContainer.h misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/SplicingEventMatrix.cpp misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/SplicingEventMatrix.h misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/SplicingGraph.cpp misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/SplicingGraph.h misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/SplicingVertex.cpp misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/SplicingVertex.h misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/Transcript.cpp misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/Transcript.h misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/TranscriptFeature.cpp misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/TranscriptFeature.h misc-scripts/alternative_splicing/AltSplicingToolkit/src/gff/BioMartGffHandler.cpp misc-scripts/alternative_splicing/AltSplicingToolkit/src/gff/BioMartGffHandler.h misc-scripts/alternative_splicing/AltSplicingToolkit/src/gff/GffEventModel.cpp misc-scripts/alternative_splicing/AltSplicingToolkit/src/gff/GffEventModel.h misc-scripts/alternative_splicing/AltSplicingToolkit/src/gff/GffParser.cpp misc-scripts/alternative_splicing/AltSplicingToolkit/src/gff/GffParser.h misc-scripts/alternative_splicing/AltSplicingToolkit/src/gff/GffSimpleHandler.cpp misc-scripts/alternative_splicing/AltSplicingToolkit/src/gff/GffSimpleHandler.h misc-scripts/alternative_splicing/AltSplicingToolkit/src/gff/SplicingEventGffGenerator.cpp misc-scripts/alternative_splicing/AltSplicingToolkit/src/gff/SplicingEventGffGenerator.h misc-scripts/alternative_splicing/AltSplicingToolkit/src/util/Logger.cpp misc-scripts/alternative_splicing/AltSplicingToolkit/src/util/Logger.h misc-scripts/alternative_splicing/AltSplicingToolkit/src/util/StringUtil.cpp misc-scripts/alternative_splicing/AltSplicingToolkit/src/util/StringUtil.h misc-scripts/alternative_splicing/Fetch_gff.pl misc-scripts/alternative_splicing/README.txt misc-scripts/alternative_splicing/load_alt_splice_gff.pl misc-scripts/analysis_description/analysis.descriptions misc-scripts/analysis_description/apply_rules.pl misc-scripts/analysis_description/chech_web_data_column.pl misc-scripts/analysis_description/load_analysis_descriptions.pl misc-scripts/anopheles_scripts/check_bad_regions.pl misc-scripts/anopheles_scripts/check_stops.pl misc-scripts/anopheles_scripts/dump_genbank_45.pl misc-scripts/anopheles_scripts/dump_genebank.pl misc-scripts/anopheles_scripts/dump_genebank_38.pl misc-scripts/anopheles_scripts/format_bacs.pl misc-scripts/anopheles_scripts/format_blat.pl misc-scripts/anopheles_scripts/format_matepairs.pl misc-scripts/anopheles_scripts/get_est_supporting_evidences.pl misc-scripts/anopheles_scripts/get_freqs.pl misc-scripts/anopheles_scripts/get_good_matepairs.pl misc-scripts/anopheles_scripts/get_transposon_repeats.pl misc-scripts/anopheles_scripts/load_karyotype.pl misc-scripts/anopheles_scripts/location_check_for_dump.pl misc-scripts/anopheles_scripts/produce_snap_training_set.pl misc-scripts/anopheles_scripts/protein_annotation_from_embl.pl misc-scripts/anopheles_scripts/remove_proteins_from_db.pl misc-scripts/anopheles_scripts/split_fasta_in_subslices_anopheles.pl misc-scripts/assembly/AssemblyMapper/BlastzAligner.pm misc-scripts/assembly/EXAMPLE.use_mapping.pl misc-scripts/assembly/README misc-scripts/assembly/align_by_clone_identity.pl misc-scripts/assembly/align_nonident_regions.pl misc-scripts/assembly/align_nonident_regions_wrapper.pl misc-scripts/assembly/blastz_matrix.txt misc-scripts/assembly/check_mapping.pl misc-scripts/assembly/cleanup_tmp_tables.sql misc-scripts/assembly/compare_assemblies.pl misc-scripts/assembly/find_overlaps.pl misc-scripts/assembly/fix_overlaps.pl misc-scripts/assembly/load_alternative_assembly.pl misc-scripts/assembly/mapping_stats.pl misc-scripts/assembly_patches/README.TXT misc-scripts/assembly_patches/assembly_patch_load.pl misc-scripts/attribute_types/attrib_type.txt misc-scripts/attribute_types/upload_attributes.pl misc-scripts/canonical_transcripts/set_canonical_transcripts.pl misc-scripts/chain/axt2assembly.pl misc-scripts/chain/chain2assembly.pl misc-scripts/chimp/Deletion.pm misc-scripts/chimp/Gene.pm misc-scripts/chimp/Insertion.pm misc-scripts/chimp/InterimExon.pm misc-scripts/chimp/InterimTranscript.pm misc-scripts/chimp/Length.pm misc-scripts/chimp/README misc-scripts/chimp/StatLogger.pm misc-scripts/chimp/StatMsg.pm misc-scripts/chimp/Transcript.pm misc-scripts/chimp/Utils.pm misc-scripts/chimp/chimp_chr_ctg_assembly.pl misc-scripts/chimp/get_stats.pl misc-scripts/chimp/human2chimp.pl misc-scripts/chimp/lift_assembly.pl misc-scripts/chimp/run_hum2chimp.sh misc-scripts/constitutive_exon.pl misc-scripts/db-space.pl misc-scripts/db/cleanup_tmp_tables.pl misc-scripts/db/multidb_sql.pl misc-scripts/density_feature/DensityCalc.sh misc-scripts/density_feature/densities_multi_db.pl misc-scripts/density_feature/density_feature_fetch.pl misc-scripts/density_feature/gene_density_calc.pl misc-scripts/density_feature/glovar_snp_density.pl misc-scripts/density_feature/logicname_density_calc.pl misc-scripts/density_feature/percent_gc_calc.pl misc-scripts/density_feature/repeat_coverage_calc.pl misc-scripts/density_feature/seq_region_stats.pl misc-scripts/density_feature/variation_density.pl misc-scripts/ebi_search_dump/count_entries.sh misc-scripts/ebi_search_dump/dump_44.sh misc-scripts/ebi_search_dump/dump_ebi.pl misc-scripts/ebi_search_dump/ebi_search_dump.pl misc-scripts/external_db/README misc-scripts/external_db/convert_external_dbs.pl misc-scripts/external_db/external_dbs.txt misc-scripts/external_db/load_additional_human_affy_xrefs.pl misc-scripts/external_db/load_additional_human_gkb_xrefs.pl misc-scripts/external_db/update_external_dbs.pl misc-scripts/frameshift_transcript_attribs.pl misc-scripts/gene_gc.pl misc-scripts/generate_stable_ids.pl misc-scripts/golden_path/check_sum.pl misc-scripts/golden_path/fin_agp2ensembl misc-scripts/golden_path/get_contig.pl misc-scripts/golden_path/gp_contig_mismatch.pl misc-scripts/golden_path/gp_incons_test.pl misc-scripts/golden_path/gp_parse.pl misc-scripts/golden_path/makeunique.pl misc-scripts/golden_path/ncbi2ensembl misc-scripts/golden_path/nt_crossmatch.pl misc-scripts/golden_path/pfetch2ensembl misc-scripts/golden_path/rat_agp2ensembl misc-scripts/meta_coord/update_meta_coord.pl misc-scripts/meta_levels.pl misc-scripts/misc_feature/misc_set.descriptions misc-scripts/misc_feature/update_misc_set_descripitons.pl misc-scripts/mouse_knockouts/add_ikmc_as_simple_features.pl misc-scripts/ontology/README misc-scripts/ontology/scripts/add_subset_maps.pl misc-scripts/ontology/scripts/compute_closure.pl misc-scripts/ontology/scripts/demo1.pl misc-scripts/ontology/scripts/demo2.pl misc-scripts/ontology/scripts/load_OBO_file.pl misc-scripts/ontology/sql/table.sql misc-scripts/overlapping_regions.pl misc-scripts/protein_match/process_pmach.pl misc-scripts/qtl/extract_rat_map_ids.pl misc-scripts/qtl/qtl_feature_calculation.pl misc-scripts/qtl/rat_qtl_import.pl misc-scripts/qtl/run_rat_import.pl misc-scripts/regulatory_regions/RegulatoryFeatureParser/BaseParser.pm misc-scripts/regulatory_regions/RegulatoryFeatureParser/cisred.pm misc-scripts/regulatory_regions/RegulatoryFeatureParser/enhancer.pm misc-scripts/regulatory_regions/RegulatoryFeatureParser/miranda.pm misc-scripts/regulatory_regions/gene_coverage.pl misc-scripts/regulatory_regions/load_regulatory.pl misc-scripts/regulatory_regions/parse_cisred.pl misc-scripts/repeats/repeat-libraries.pl misc-scripts/repeats/repeat-types.pl misc-scripts/repeats/repeats.txt misc-scripts/repeats/shrink_trfs.pl misc-scripts/repeats/vega_repeat_libraries.pl misc-scripts/schema_patch.pl misc-scripts/search_dbs.pl misc-scripts/surgery/SchemaConverter.pm misc-scripts/surgery/SeqStoreConverter/AnophelesGambiae.pm misc-scripts/surgery/SeqStoreConverter/ApisMellifera.pm misc-scripts/surgery/SeqStoreConverter/BasicConverter.pm misc-scripts/surgery/SeqStoreConverter/CaenorhabditisBriggsae.pm misc-scripts/surgery/SeqStoreConverter/CaenorhabditisElegans.pm misc-scripts/surgery/SeqStoreConverter/CanisFamiliaris.pm misc-scripts/surgery/SeqStoreConverter/DanioRerio.pm misc-scripts/surgery/SeqStoreConverter/DrosophilaMelanogaster.pm misc-scripts/surgery/SeqStoreConverter/FuguRubripes.pm misc-scripts/surgery/SeqStoreConverter/GallusGallus.pm misc-scripts/surgery/SeqStoreConverter/HomoSapiens.pm misc-scripts/surgery/SeqStoreConverter/MusMusculus.pm misc-scripts/surgery/SeqStoreConverter/PanTroglodytes.pm misc-scripts/surgery/SeqStoreConverter/RattusNorvegicus.pm misc-scripts/surgery/SeqStoreConverter/vega/CanisFamiliaris.pm misc-scripts/surgery/SeqStoreConverter/vega/DanioRerio.pm misc-scripts/surgery/SeqStoreConverter/vega/HomoSapiens.pm misc-scripts/surgery/SeqStoreConverter/vega/MusMusculus.pm misc-scripts/surgery/SeqStoreConverter/vega/VBasicConverter.pm misc-scripts/surgery/convert_seqstore.pl misc-scripts/surgery/converter.input misc-scripts/surgery/create_fixsql.pl misc-scripts/surgery/dump_seq_in_region misc-scripts/surgery/fuller_test_genome_9_chr20.pl misc-scripts/surgery/push_align_features.pl misc-scripts/surgery/set_nonredundant_attribs.pl misc-scripts/surgery/shortintrons2frameshifts.pl misc-scripts/surgery/table_column_munge misc-scripts/transfer_karyotype.pl misc-scripts/translation_attribs.pl misc-scripts/translation_attribs_wrapper.pl misc-scripts/unmapped_reason/unmapped_reason.txt misc-scripts/unmapped_reason/update_unmapped_reasons.pl misc-scripts/update_mapping_set.pl misc-scripts/utilities/dna_compress.pl misc-scripts/utilities/parse_embl.pl misc-scripts/utilities/show_method_status.pl misc-scripts/utilities/split_fasta.pl misc-scripts/variation/nonsense_transcript_attribs.pl misc-scripts/web_stats.sh misc-scripts/xref_mapping/FAQ.txt misc-scripts/xref_mapping/XrefMapper/BasicMapper.pm misc-scripts/xref_mapping/XrefMapper/CoordinateMapper.pm misc-scripts/xref_mapping/XrefMapper/CoreInfo.pm misc-scripts/xref_mapping/XrefMapper/DisplayXrefs.pm misc-scripts/xref_mapping/XrefMapper/Interpro.pm misc-scripts/xref_mapping/XrefMapper/LoadMapper.pm misc-scripts/xref_mapping/XrefMapper/Methods/ExonerateBasic.pm misc-scripts/xref_mapping/XrefMapper/Methods/ExonerateBest1.pm misc-scripts/xref_mapping/XrefMapper/Methods/ExonerateGappedBest1.pm misc-scripts/xref_mapping/XrefMapper/Methods/ExonerateGappedBest1_agam.pm misc-scripts/xref_mapping/XrefMapper/Methods/ExonerateGappedBest1_culex.pm misc-scripts/xref_mapping/XrefMapper/Methods/ExonerateGappedBest_100_perc_id.pm misc-scripts/xref_mapping/XrefMapper/Methods/ExonerateGappedBest_90_perc_id.pm misc-scripts/xref_mapping/XrefMapper/Methods/ExonerateUngappedBest1.pm misc-scripts/xref_mapping/XrefMapper/Methods/LocalExonerateGappedBest1.pm misc-scripts/xref_mapping/XrefMapper/Methods/PBSExonerateGappedBest1.pm misc-scripts/xref_mapping/XrefMapper/ProcessMappings.pm misc-scripts/xref_mapping/XrefMapper/ProcessPaired.pm misc-scripts/xref_mapping/XrefMapper/ProcessPrioritys.pm misc-scripts/xref_mapping/XrefMapper/SubmitMapper.pm misc-scripts/xref_mapping/XrefMapper/TestMappings.pm misc-scripts/xref_mapping/XrefMapper/VBCoordinateMapper.pm misc-scripts/xref_mapping/XrefMapper/XrefLoader.pm misc-scripts/xref_mapping/XrefMapper/aedes_aegypti.pm misc-scripts/xref_mapping/XrefMapper/anopheles_gambiae.pm misc-scripts/xref_mapping/XrefMapper/caenorhabditis_elegans.pm misc-scripts/xref_mapping/XrefMapper/canis_familiaris.pm misc-scripts/xref_mapping/XrefMapper/ciona_intestinalis.pm misc-scripts/xref_mapping/XrefMapper/culex_pipiens.pm misc-scripts/xref_mapping/XrefMapper/danio_rerio.pm misc-scripts/xref_mapping/XrefMapper/db.pm misc-scripts/xref_mapping/XrefMapper/drosophila_ananassae.pm misc-scripts/xref_mapping/XrefMapper/drosophila_erecta.pm misc-scripts/xref_mapping/XrefMapper/drosophila_grimshawi.pm misc-scripts/xref_mapping/XrefMapper/drosophila_melanogaster.pm misc-scripts/xref_mapping/XrefMapper/drosophila_mojavensis.pm misc-scripts/xref_mapping/XrefMapper/drosophila_persimilis.pm misc-scripts/xref_mapping/XrefMapper/drosophila_pseudoobscura.pm misc-scripts/xref_mapping/XrefMapper/drosophila_sechellia.pm misc-scripts/xref_mapping/XrefMapper/drosophila_simulans.pm misc-scripts/xref_mapping/XrefMapper/drosophila_virilis.pm misc-scripts/xref_mapping/XrefMapper/drosophila_willistoni.pm misc-scripts/xref_mapping/XrefMapper/drosophila_yakuba.pm misc-scripts/xref_mapping/XrefMapper/fugu_rubripes.pm misc-scripts/xref_mapping/XrefMapper/homo_sapiens.pm misc-scripts/xref_mapping/XrefMapper/ixodes_scapularis.pm misc-scripts/xref_mapping/XrefMapper/macaca_mulatta.pm misc-scripts/xref_mapping/XrefMapper/monodelphis_domestica.pm misc-scripts/xref_mapping/XrefMapper/mus_musculus.pm misc-scripts/xref_mapping/XrefMapper/ornithorhynchus_anatinus.pm misc-scripts/xref_mapping/XrefMapper/rattus_norvegicus.pm misc-scripts/xref_mapping/XrefMapper/saccharomyces_cerevisiae.pm misc-scripts/xref_mapping/XrefMapper/tetraodon_nigroviridis.pm misc-scripts/xref_mapping/XrefMapper/xenopus_tropicalis.pm misc-scripts/xref_mapping/XrefParser/AedesCAPParser.pm misc-scripts/xref_mapping/XrefParser/AedesGenBankParser.pm misc-scripts/xref_mapping/XrefParser/AgilentParser.pm misc-scripts/xref_mapping/XrefParser/AnophelesSymbolParser.pm misc-scripts/xref_mapping/XrefParser/BaseParser.pm misc-scripts/xref_mapping/XrefParser/CCDSParser.pm misc-scripts/xref_mapping/XrefParser/CeleraParser.pm misc-scripts/xref_mapping/XrefParser/CeleraProteinParser.pm misc-scripts/xref_mapping/XrefParser/CeleraTranscriptParser.pm misc-scripts/xref_mapping/XrefParser/CodelinkParser.pm misc-scripts/xref_mapping/XrefParser/CoordinateParser.pm misc-scripts/xref_mapping/XrefParser/DBASSParser.pm misc-scripts/xref_mapping/XrefParser/DatabaseParser.pm misc-scripts/xref_mapping/XrefParser/DirectParser.pm misc-scripts/xref_mapping/XrefParser/EntrezGeneParser.pm misc-scripts/xref_mapping/XrefParser/FantomParser.pm misc-scripts/xref_mapping/XrefParser/FastaParser.pm misc-scripts/xref_mapping/XrefParser/FlybaseParser.pm misc-scripts/xref_mapping/XrefParser/Flybase_dmel_GFFv3_Parser.pm misc-scripts/xref_mapping/XrefParser/GOParser.pm misc-scripts/xref_mapping/XrefParser/GOSlimParser.pm misc-scripts/xref_mapping/XrefParser/HGNCParser.pm misc-scripts/xref_mapping/XrefParser/HGNC_CCDSParser.pm misc-scripts/xref_mapping/XrefParser/HGNC_ENSTParser.pm misc-scripts/xref_mapping/XrefParser/HPAParser.pm misc-scripts/xref_mapping/XrefParser/IPIParser.pm misc-scripts/xref_mapping/XrefParser/IlluminaParser.pm misc-scripts/xref_mapping/XrefParser/IlluminaWGParser.pm misc-scripts/xref_mapping/XrefParser/InterproGoParser.pm misc-scripts/xref_mapping/XrefParser/InterproParser.pm misc-scripts/xref_mapping/XrefParser/IxodesCAPParser.pm misc-scripts/xref_mapping/XrefParser/JGI_Parser.pm misc-scripts/xref_mapping/XrefParser/JGI_ProteinParser.pm misc-scripts/xref_mapping/XrefParser/MGDParser.pm misc-scripts/xref_mapping/XrefParser/MGI_CCDS_Parser.pm misc-scripts/xref_mapping/XrefParser/MGI_Desc_Parser.pm misc-scripts/xref_mapping/XrefParser/MGI_Vega_Parser.pm misc-scripts/xref_mapping/XrefParser/MIMParser.pm misc-scripts/xref_mapping/XrefParser/Mim2GeneParser.pm misc-scripts/xref_mapping/XrefParser/OTTTParser.pm misc-scripts/xref_mapping/XrefParser/RGDParser.pm misc-scripts/xref_mapping/XrefParser/RefSeqGPFFParser.pm misc-scripts/xref_mapping/XrefParser/RefSeqParser.pm misc-scripts/xref_mapping/XrefParser/RefSeq_CCDSParser.pm misc-scripts/xref_mapping/XrefParser/SGDParser.pm misc-scripts/xref_mapping/XrefParser/SegmentParser.pm misc-scripts/xref_mapping/XrefParser/UCSCParser.pm misc-scripts/xref_mapping/XrefParser/UniGeneParser.pm misc-scripts/xref_mapping/XrefParser/UniProtDirectParser.pm misc-scripts/xref_mapping/XrefParser/UniProtParser.pm misc-scripts/xref_mapping/XrefParser/UniProtParser_descriptions_only.pm misc-scripts/xref_mapping/XrefParser/UniProtVarSplicParser.pm misc-scripts/xref_mapping/XrefParser/VBCommunitySymbolParser.pm misc-scripts/xref_mapping/XrefParser/VbDirectParser.pm misc-scripts/xref_mapping/XrefParser/VbGFF3Parser.pm misc-scripts/xref_mapping/XrefParser/WilsonAffyParser.pm misc-scripts/xref_mapping/XrefParser/WormPepParser.pm misc-scripts/xref_mapping/XrefParser/WormbaseDatabaseStableIDParser.pm misc-scripts/xref_mapping/XrefParser/XenopusJamboreeParser.pm misc-scripts/xref_mapping/XrefParser/ZFINParser.pm misc-scripts/xref_mapping/XrefParser/curated_transcriptParser.pm misc-scripts/xref_mapping/XrefParser/ncRNAParser.pm misc-scripts/xref_mapping/XrefParser/ncRNA_DBParser.pm misc-scripts/xref_mapping/compare_mapping.pl misc-scripts/xref_mapping/compare_xrefs_by_source.pl misc-scripts/xref_mapping/convert_xrefs_to_all_translations.pl misc-scripts/xref_mapping/core_vega_link_check.pl misc-scripts/xref_mapping/ensembl_xrefs.pdf misc-scripts/xref_mapping/ensembl_xrefs.sxw misc-scripts/xref_mapping/gen_perc_file.pl misc-scripts/xref_mapping/generate_csv_graph_file.pl misc-scripts/xref_mapping/parsing_information.txt misc-scripts/xref_mapping/sql/table.sql misc-scripts/xref_mapping/test_mapping_files.pl misc-scripts/xref_mapping/test_xref_mapper.pl misc-scripts/xref_mapping/xref_config.ini misc-scripts/xref_mapping/xref_config2sql.pl misc-scripts/xref_mapping/xref_mapper.input misc-scripts/xref_mapping/xref_mapper.pl misc-scripts/xref_mapping/xref_parser.pl misc-scripts/xref_mapping/xref_tracker.pl misc-scripts/xref_mapping/xrefs_detailed_docs.txt misc-scripts/xref_mapping/xrefs_overview.txt misc-scripts/xref_projection/README misc-scripts/xref_projection/project_display_xrefs.pl misc-scripts/xref_projection/projection_db.sql misc-scripts/xref_projection/release_48.ini misc-scripts/xref_projection/submit_projections.pl modules/Bio/EnsEMBL/AlignStrainSlice.pm modules/Bio/EnsEMBL/Analysis.pm modules/Bio/EnsEMBL/Analysis/PairAlign.pm modules/Bio/EnsEMBL/Analysis/Programs.pm modules/Bio/EnsEMBL/ArchiveStableId.pm modules/Bio/EnsEMBL/AssemblyExceptionFeature.pm modules/Bio/EnsEMBL/AssemblyMapper.pm modules/Bio/EnsEMBL/Attribute.pm modules/Bio/EnsEMBL/BaseAlignFeature.pm modules/Bio/EnsEMBL/ChainedAssemblyMapper.pm modules/Bio/EnsEMBL/Collection.pm modules/Bio/EnsEMBL/Collection/Exon.pm modules/Bio/EnsEMBL/Collection/Gene.pm modules/Bio/EnsEMBL/Collection/RepeatFeature.pm modules/Bio/EnsEMBL/Collection/Transcript.pm modules/Bio/EnsEMBL/CoordSystem.pm modules/Bio/EnsEMBL/DB/ExternalFeatureFactoryI.pm modules/Bio/EnsEMBL/DBEntry.pm modules/Bio/EnsEMBL/DBLoader.pm modules/Bio/EnsEMBL/DBSQL/AnalysisAdaptor.pm modules/Bio/EnsEMBL/DBSQL/ArchiveStableIdAdaptor.pm modules/Bio/EnsEMBL/DBSQL/AssemblyExceptionFeatureAdaptor.pm modules/Bio/EnsEMBL/DBSQL/AssemblyMapperAdaptor.pm modules/Bio/EnsEMBL/DBSQL/AssemblySliceAdaptor.pm modules/Bio/EnsEMBL/DBSQL/AttributeAdaptor.pm modules/Bio/EnsEMBL/DBSQL/BaseAdaptor.pm modules/Bio/EnsEMBL/DBSQL/BaseAlignFeatureAdaptor.pm modules/Bio/EnsEMBL/DBSQL/BaseFeatureAdaptor.pm modules/Bio/EnsEMBL/DBSQL/BaseMetaContainer.pm modules/Bio/EnsEMBL/DBSQL/CompressedSequenceAdaptor.pm modules/Bio/EnsEMBL/DBSQL/CoordSystemAdaptor.pm modules/Bio/EnsEMBL/DBSQL/DBAdaptor.pm modules/Bio/EnsEMBL/DBSQL/DBConnection.pm modules/Bio/EnsEMBL/DBSQL/DBEntryAdaptor.pm modules/Bio/EnsEMBL/DBSQL/DensityFeatureAdaptor.pm modules/Bio/EnsEMBL/DBSQL/DensityTypeAdaptor.pm modules/Bio/EnsEMBL/DBSQL/DnaAlignFeatureAdaptor.pm modules/Bio/EnsEMBL/DBSQL/ExonAdaptor.pm modules/Bio/EnsEMBL/DBSQL/GOTermAdaptor.pm modules/Bio/EnsEMBL/DBSQL/GeneAdaptor.pm modules/Bio/EnsEMBL/DBSQL/KaryotypeBandAdaptor.pm modules/Bio/EnsEMBL/DBSQL/MergedAdaptor.pm modules/Bio/EnsEMBL/DBSQL/MetaContainer.pm modules/Bio/EnsEMBL/DBSQL/MetaCoordContainer.pm modules/Bio/EnsEMBL/DBSQL/MiscFeatureAdaptor.pm modules/Bio/EnsEMBL/DBSQL/MiscSetAdaptor.pm modules/Bio/EnsEMBL/DBSQL/OntologyDBAdaptor.pm modules/Bio/EnsEMBL/DBSQL/OntologyTermAdaptor.pm modules/Bio/EnsEMBL/DBSQL/PredictionExonAdaptor.pm modules/Bio/EnsEMBL/DBSQL/PredictionTranscriptAdaptor.pm modules/Bio/EnsEMBL/DBSQL/ProteinAlignFeatureAdaptor.pm modules/Bio/EnsEMBL/DBSQL/ProteinFeatureAdaptor.pm modules/Bio/EnsEMBL/DBSQL/ProxySNPAdaptor.pm modules/Bio/EnsEMBL/DBSQL/RepeatConsensusAdaptor.pm modules/Bio/EnsEMBL/DBSQL/RepeatFeatureAdaptor.pm modules/Bio/EnsEMBL/DBSQL/SOTermAdaptor.pm modules/Bio/EnsEMBL/DBSQL/SequenceAdaptor.pm modules/Bio/EnsEMBL/DBSQL/SimpleFeatureAdaptor.pm modules/Bio/EnsEMBL/DBSQL/SliceAdaptor.pm modules/Bio/EnsEMBL/DBSQL/SplicingEventAdaptor.pm modules/Bio/EnsEMBL/DBSQL/SplicingEventFeatureAdaptor.pm modules/Bio/EnsEMBL/DBSQL/SplicingTranscriptPairAdaptor.pm modules/Bio/EnsEMBL/DBSQL/StatementHandle.pm modules/Bio/EnsEMBL/DBSQL/StrainSliceAdaptor.pm modules/Bio/EnsEMBL/DBSQL/SupportingFeatureAdaptor.pm modules/Bio/EnsEMBL/DBSQL/TranscriptAdaptor.pm modules/Bio/EnsEMBL/DBSQL/TranscriptSupportingFeatureAdaptor.pm modules/Bio/EnsEMBL/DBSQL/TranslationAdaptor.pm modules/Bio/EnsEMBL/DBSQL/UnconventionalTranscriptAssociationAdaptor.pm modules/Bio/EnsEMBL/DBSQL/UnmappedObjectAdaptor.pm modules/Bio/EnsEMBL/DensityFeature.pm modules/Bio/EnsEMBL/DensityFeatureSet.pm modules/Bio/EnsEMBL/DensityPlot/BinValue.pm modules/Bio/EnsEMBL/DensityPlot/BinValueSet.pm modules/Bio/EnsEMBL/DensityType.pm modules/Bio/EnsEMBL/DnaDnaAlignFeature.pm modules/Bio/EnsEMBL/DnaPepAlignFeature.pm modules/Bio/EnsEMBL/Exon.pm modules/Bio/EnsEMBL/External/BlastAdaptor.pm modules/Bio/EnsEMBL/External/ExternalFeatureAdaptor.pm modules/Bio/EnsEMBL/Feature.pm modules/Bio/EnsEMBL/FeaturePair.pm modules/Bio/EnsEMBL/Gene.pm modules/Bio/EnsEMBL/GoXref.pm modules/Bio/EnsEMBL/IdentityXref.pm modules/Bio/EnsEMBL/IndividualSlice.pm modules/Bio/EnsEMBL/IndividualSliceFactory.pm modules/Bio/EnsEMBL/Intron.pm modules/Bio/EnsEMBL/KaryotypeBand.pm modules/Bio/EnsEMBL/LRGSlice.pm modules/Bio/EnsEMBL/Lite/DBAdaptor.pm modules/Bio/EnsEMBL/Lite/SNPAdaptor.pm modules/Bio/EnsEMBL/Map/DBSQL/DitagAdaptor.pm modules/Bio/EnsEMBL/Map/DBSQL/DitagFeatureAdaptor.pm modules/Bio/EnsEMBL/Map/DBSQL/MarkerAdaptor.pm modules/Bio/EnsEMBL/Map/DBSQL/MarkerFeatureAdaptor.pm modules/Bio/EnsEMBL/Map/DBSQL/QtlAdaptor.pm modules/Bio/EnsEMBL/Map/DBSQL/QtlFeatureAdaptor.pm modules/Bio/EnsEMBL/Map/Ditag.pm modules/Bio/EnsEMBL/Map/DitagFeature.pm modules/Bio/EnsEMBL/Map/MapLocation.pm modules/Bio/EnsEMBL/Map/Marker.pm modules/Bio/EnsEMBL/Map/MarkerFeature.pm modules/Bio/EnsEMBL/Map/MarkerSynonym.pm modules/Bio/EnsEMBL/Map/Qtl.pm modules/Bio/EnsEMBL/Map/QtlFeature.pm modules/Bio/EnsEMBL/MappedSlice.pm modules/Bio/EnsEMBL/MappedSliceContainer.pm modules/Bio/EnsEMBL/Mapper.pm modules/Bio/EnsEMBL/Mapper/Coordinate.pm modules/Bio/EnsEMBL/Mapper/Gap.pm modules/Bio/EnsEMBL/Mapper/IndelCoordinate.pm modules/Bio/EnsEMBL/Mapper/IndelPair.pm modules/Bio/EnsEMBL/Mapper/Pair.pm modules/Bio/EnsEMBL/Mapper/RangeRegistry.pm modules/Bio/EnsEMBL/Mapper/Unit.pm modules/Bio/EnsEMBL/MiscFeature.pm modules/Bio/EnsEMBL/MiscSet.pm modules/Bio/EnsEMBL/OntologyTerm.pm modules/Bio/EnsEMBL/PepDnaAlignFeature.pm modules/Bio/EnsEMBL/PredictionExon.pm modules/Bio/EnsEMBL/PredictionTranscript.pm modules/Bio/EnsEMBL/ProjectionSegment.pm modules/Bio/EnsEMBL/ProteinFeature.pm modules/Bio/EnsEMBL/Registry.pm modules/Bio/EnsEMBL/RepeatConsensus.pm modules/Bio/EnsEMBL/RepeatFeature.pm modules/Bio/EnsEMBL/RepeatMaskedSlice.pm modules/Bio/EnsEMBL/Root.pm modules/Bio/EnsEMBL/SNP.pm modules/Bio/EnsEMBL/SeqEdit.pm modules/Bio/EnsEMBL/SeqFeature.pm modules/Bio/EnsEMBL/SeqFeatureI.pm modules/Bio/EnsEMBL/SimpleFeature.pm modules/Bio/EnsEMBL/Slice.pm modules/Bio/EnsEMBL/SplicingEvent.pm modules/Bio/EnsEMBL/SplicingEventFeature.pm modules/Bio/EnsEMBL/SplicingTranscriptPair.pm modules/Bio/EnsEMBL/StableIdEvent.pm modules/Bio/EnsEMBL/StableIdHistoryTree.pm modules/Bio/EnsEMBL/Storable.pm modules/Bio/EnsEMBL/StrainSlice.pm modules/Bio/EnsEMBL/TopLevelAssemblyMapper.pm modules/Bio/EnsEMBL/Transcript.pm modules/Bio/EnsEMBL/TranscriptFactory.pm modules/Bio/EnsEMBL/TranscriptMapper.pm modules/Bio/EnsEMBL/Translation.pm modules/Bio/EnsEMBL/UnconventionalTranscriptAssociation.pm modules/Bio/EnsEMBL/UnmappedObject.pm modules/Bio/EnsEMBL/Upstream.pm modules/Bio/EnsEMBL/Utils/Argument.pm modules/Bio/EnsEMBL/Utils/AssemblyProjector.pm modules/Bio/EnsEMBL/Utils/BitString.pm modules/Bio/EnsEMBL/Utils/Cache.pm modules/Bio/EnsEMBL/Utils/CigarString.pm modules/Bio/EnsEMBL/Utils/Collector.pm modules/Bio/EnsEMBL/Utils/ConfParser.pm modules/Bio/EnsEMBL/Utils/ConfigRegistry.pm modules/Bio/EnsEMBL/Utils/ConversionSupport.pm modules/Bio/EnsEMBL/Utils/Converter.pm modules/Bio/EnsEMBL/Utils/Converter/bio_ens.pm modules/Bio/EnsEMBL/Utils/Converter/bio_ens_analysis.pm modules/Bio/EnsEMBL/Utils/Converter/bio_ens_exon.pm modules/Bio/EnsEMBL/Utils/Converter/bio_ens_featurePair.pm modules/Bio/EnsEMBL/Utils/Converter/bio_ens_gene.pm modules/Bio/EnsEMBL/Utils/Converter/bio_ens_hit.pm modules/Bio/EnsEMBL/Utils/Converter/bio_ens_hsp.pm modules/Bio/EnsEMBL/Utils/Converter/bio_ens_predictionExon.pm modules/Bio/EnsEMBL/Utils/Converter/bio_ens_predictionGene.pm modules/Bio/EnsEMBL/Utils/Converter/bio_ens_seqFeature.pm modules/Bio/EnsEMBL/Utils/Converter/bio_ens_transcript.pm modules/Bio/EnsEMBL/Utils/Converter/ens_bio.pm modules/Bio/EnsEMBL/Utils/Converter/ens_bio_featurePair.pm modules/Bio/EnsEMBL/Utils/Converter/ens_bio_seqFeature.pm modules/Bio/EnsEMBL/Utils/EasyArgv.pm modules/Bio/EnsEMBL/Utils/Eprof.pm modules/Bio/EnsEMBL/Utils/EprofStack.pm modules/Bio/EnsEMBL/Utils/Exception.pm modules/Bio/EnsEMBL/Utils/Logger.pm modules/Bio/EnsEMBL/Utils/PolyA.pm modules/Bio/EnsEMBL/Utils/Scalar.pm modules/Bio/EnsEMBL/Utils/SchemaConversion.pm modules/Bio/EnsEMBL/Utils/ScriptUtils.pm modules/Bio/EnsEMBL/Utils/SeqDumper.pm modules/Bio/EnsEMBL/Utils/SeqRegionCache.pm modules/Bio/EnsEMBL/Utils/Sequence.pm modules/Bio/EnsEMBL/Utils/Slice.pm modules/Bio/EnsEMBL/Utils/SqlHelper.pm modules/Bio/EnsEMBL/Utils/TranscriptAlleles.pm modules/Bio/EnsEMBL/Utils/TranscriptSNPs.pm modules/Bio/EnsEMBL/Utils/User_defined_load.pm modules/Bio/EnsEMBL/Utils/VegaCuration/Gene.pm modules/Bio/EnsEMBL/Utils/VegaCuration/Transcript.pm modules/Bio/EnsEMBL/Utils/VegaCuration/Translation.pm modules/Bio/EnsEMBL/Utils/ensembl_init.example modules/t/MultiTestDB.conf.example modules/t/MultiTestDB.t modules/t/README modules/t/TestUtils.pm modules/t/analysis.t modules/t/archiveStableId.t modules/t/argument.t modules/t/assemblyException.t modules/t/assemblyExceptionFeature.t modules/t/assemblyMapper.t modules/t/attribute.t modules/t/attributeAdaptor.t modules/t/canonicalDBAdaptor.t modules/t/chainedAssemblyMapper.t modules/t/compressedSequenceAdaptor.t modules/t/coordSystem.t modules/t/coordSystemAdaptor.t modules/t/dbConnection.t modules/t/dbEntries.t modules/t/densityFeature.t modules/t/densityFeatureAdaptor.t modules/t/densityType.t modules/t/densityTypeAdaptor.t modules/t/ditag.t modules/t/ditagAdaptor.t modules/t/ditagFeature.t modules/t/ditagFeatureAdaptor.t modules/t/dnaAlignFeatureAdaptor.t modules/t/dnaDnaAlignFeature.t modules/t/dnaPepAlignFeature.t modules/t/easyargv.t modules/t/exception.t modules/t/exon.t modules/t/externalFeatureAdaptor.t modules/t/feature.t modules/t/featurePair.t modules/t/gene.t modules/t/geneview.t modules/t/info_testdb.pl modules/t/intron.t modules/t/karyotypeBand.t modules/t/karyotypeBandAdaptor.t modules/t/mapLocation.t modules/t/mapper.t modules/t/marker.t modules/t/markerAdaptor.t modules/t/markerFeature.t modules/t/markerFeatureAdaptor.t modules/t/markerSynonym.t modules/t/metaContainer.t modules/t/metaCoordContainer.t modules/t/miscFeature.t modules/t/miscFeatureAdaptor.t modules/t/miscSet.t modules/t/miscSetAdaptor.t modules/t/predictionTranscript.t modules/t/proteinAlignFeatureAdaptor.t modules/t/proteinFeature.t modules/t/proteinFeatureAdaptor.t modules/t/qtl.t modules/t/rangeRegistry.t modules/t/repeatConsensus.t modules/t/repeatConsensusAdaptor.t modules/t/repeatFeature.t modules/t/repeatFeatureAdaptor.t modules/t/repeatMaskedSlice.t modules/t/seqDumper.t modules/t/seqEdit.t modules/t/sequenceAdaptor.t modules/t/simpleFeature.t modules/t/slice.t modules/t/sliceAdaptor.t modules/t/sqlHelper.t modules/t/test-genome-DBs/homo_sapiens/core/alt_allele.sql modules/t/test-genome-DBs/homo_sapiens/core/alt_allele.txt modules/t/test-genome-DBs/homo_sapiens/core/analysis.sql modules/t/test-genome-DBs/homo_sapiens/core/analysis.txt modules/t/test-genome-DBs/homo_sapiens/core/analysis_description.sql modules/t/test-genome-DBs/homo_sapiens/core/analysis_description.txt modules/t/test-genome-DBs/homo_sapiens/core/assembly.sql modules/t/test-genome-DBs/homo_sapiens/core/assembly.txt modules/t/test-genome-DBs/homo_sapiens/core/assembly_exception.sql modules/t/test-genome-DBs/homo_sapiens/core/assembly_exception.txt modules/t/test-genome-DBs/homo_sapiens/core/attrib_type.sql modules/t/test-genome-DBs/homo_sapiens/core/attrib_type.txt modules/t/test-genome-DBs/homo_sapiens/core/coord_system.sql modules/t/test-genome-DBs/homo_sapiens/core/coord_system.txt modules/t/test-genome-DBs/homo_sapiens/core/density_feature.sql modules/t/test-genome-DBs/homo_sapiens/core/density_feature.txt modules/t/test-genome-DBs/homo_sapiens/core/density_type.sql modules/t/test-genome-DBs/homo_sapiens/core/density_type.txt modules/t/test-genome-DBs/homo_sapiens/core/ditag.sql modules/t/test-genome-DBs/homo_sapiens/core/ditag.txt modules/t/test-genome-DBs/homo_sapiens/core/ditag_feature.sql modules/t/test-genome-DBs/homo_sapiens/core/ditag_feature.txt modules/t/test-genome-DBs/homo_sapiens/core/dna.sql modules/t/test-genome-DBs/homo_sapiens/core/dna.txt modules/t/test-genome-DBs/homo_sapiens/core/dna_align_feature.sql modules/t/test-genome-DBs/homo_sapiens/core/dna_align_feature.txt modules/t/test-genome-DBs/homo_sapiens/core/dnac.sql modules/t/test-genome-DBs/homo_sapiens/core/dnac.txt modules/t/test-genome-DBs/homo_sapiens/core/exon.sql modules/t/test-genome-DBs/homo_sapiens/core/exon.txt modules/t/test-genome-DBs/homo_sapiens/core/exon_stable_id.sql modules/t/test-genome-DBs/homo_sapiens/core/exon_stable_id.txt modules/t/test-genome-DBs/homo_sapiens/core/exon_transcript.sql modules/t/test-genome-DBs/homo_sapiens/core/exon_transcript.txt modules/t/test-genome-DBs/homo_sapiens/core/external_db.sql modules/t/test-genome-DBs/homo_sapiens/core/external_db.txt modules/t/test-genome-DBs/homo_sapiens/core/external_synonym.sql modules/t/test-genome-DBs/homo_sapiens/core/external_synonym.txt modules/t/test-genome-DBs/homo_sapiens/core/gene.sql modules/t/test-genome-DBs/homo_sapiens/core/gene.txt modules/t/test-genome-DBs/homo_sapiens/core/gene_archive.sql modules/t/test-genome-DBs/homo_sapiens/core/gene_archive.txt modules/t/test-genome-DBs/homo_sapiens/core/gene_attrib.sql modules/t/test-genome-DBs/homo_sapiens/core/gene_attrib.txt modules/t/test-genome-DBs/homo_sapiens/core/gene_stable_id.sql modules/t/test-genome-DBs/homo_sapiens/core/gene_stable_id.txt modules/t/test-genome-DBs/homo_sapiens/core/go_xref.sql modules/t/test-genome-DBs/homo_sapiens/core/go_xref.txt modules/t/test-genome-DBs/homo_sapiens/core/identity_xref.sql modules/t/test-genome-DBs/homo_sapiens/core/identity_xref.txt modules/t/test-genome-DBs/homo_sapiens/core/interpro.sql modules/t/test-genome-DBs/homo_sapiens/core/interpro.txt modules/t/test-genome-DBs/homo_sapiens/core/karyotype.sql modules/t/test-genome-DBs/homo_sapiens/core/karyotype.txt modules/t/test-genome-DBs/homo_sapiens/core/map.sql modules/t/test-genome-DBs/homo_sapiens/core/map.txt modules/t/test-genome-DBs/homo_sapiens/core/mapping_session.sql modules/t/test-genome-DBs/homo_sapiens/core/mapping_session.txt modules/t/test-genome-DBs/homo_sapiens/core/mapping_set.sql modules/t/test-genome-DBs/homo_sapiens/core/mapping_set.txt modules/t/test-genome-DBs/homo_sapiens/core/marker.sql modules/t/test-genome-DBs/homo_sapiens/core/marker.txt modules/t/test-genome-DBs/homo_sapiens/core/marker_feature.sql modules/t/test-genome-DBs/homo_sapiens/core/marker_feature.txt modules/t/test-genome-DBs/homo_sapiens/core/marker_map_location.sql modules/t/test-genome-DBs/homo_sapiens/core/marker_map_location.txt modules/t/test-genome-DBs/homo_sapiens/core/marker_synonym.sql modules/t/test-genome-DBs/homo_sapiens/core/marker_synonym.txt modules/t/test-genome-DBs/homo_sapiens/core/meta.sql modules/t/test-genome-DBs/homo_sapiens/core/meta.txt modules/t/test-genome-DBs/homo_sapiens/core/meta_coord.sql modules/t/test-genome-DBs/homo_sapiens/core/meta_coord.txt modules/t/test-genome-DBs/homo_sapiens/core/misc_attrib.sql modules/t/test-genome-DBs/homo_sapiens/core/misc_attrib.txt modules/t/test-genome-DBs/homo_sapiens/core/misc_feature.sql modules/t/test-genome-DBs/homo_sapiens/core/misc_feature.txt modules/t/test-genome-DBs/homo_sapiens/core/misc_feature_misc_set.sql modules/t/test-genome-DBs/homo_sapiens/core/misc_feature_misc_set.txt modules/t/test-genome-DBs/homo_sapiens/core/misc_set.sql modules/t/test-genome-DBs/homo_sapiens/core/misc_set.txt modules/t/test-genome-DBs/homo_sapiens/core/object_xref.sql modules/t/test-genome-DBs/homo_sapiens/core/object_xref.txt modules/t/test-genome-DBs/homo_sapiens/core/oligo_array.sql modules/t/test-genome-DBs/homo_sapiens/core/oligo_array.txt modules/t/test-genome-DBs/homo_sapiens/core/oligo_feature.sql modules/t/test-genome-DBs/homo_sapiens/core/oligo_feature.txt modules/t/test-genome-DBs/homo_sapiens/core/oligo_probe.sql modules/t/test-genome-DBs/homo_sapiens/core/oligo_probe.txt modules/t/test-genome-DBs/homo_sapiens/core/peptide_archive.sql modules/t/test-genome-DBs/homo_sapiens/core/peptide_archive.txt modules/t/test-genome-DBs/homo_sapiens/core/prediction_exon.sql modules/t/test-genome-DBs/homo_sapiens/core/prediction_exon.txt modules/t/test-genome-DBs/homo_sapiens/core/prediction_transcript.sql modules/t/test-genome-DBs/homo_sapiens/core/prediction_transcript.txt modules/t/test-genome-DBs/homo_sapiens/core/protein_align_feature.sql modules/t/test-genome-DBs/homo_sapiens/core/protein_align_feature.txt modules/t/test-genome-DBs/homo_sapiens/core/protein_feature.sql modules/t/test-genome-DBs/homo_sapiens/core/protein_feature.txt modules/t/test-genome-DBs/homo_sapiens/core/qtl.sql modules/t/test-genome-DBs/homo_sapiens/core/qtl.txt modules/t/test-genome-DBs/homo_sapiens/core/qtl_feature.sql modules/t/test-genome-DBs/homo_sapiens/core/qtl_feature.txt modules/t/test-genome-DBs/homo_sapiens/core/qtl_synonym.sql modules/t/test-genome-DBs/homo_sapiens/core/qtl_synonym.txt modules/t/test-genome-DBs/homo_sapiens/core/repeat_consensus.sql modules/t/test-genome-DBs/homo_sapiens/core/repeat_consensus.txt modules/t/test-genome-DBs/homo_sapiens/core/repeat_feature.sql modules/t/test-genome-DBs/homo_sapiens/core/repeat_feature.txt modules/t/test-genome-DBs/homo_sapiens/core/seq_region.sql modules/t/test-genome-DBs/homo_sapiens/core/seq_region.txt modules/t/test-genome-DBs/homo_sapiens/core/seq_region_attrib.sql modules/t/test-genome-DBs/homo_sapiens/core/seq_region_attrib.txt modules/t/test-genome-DBs/homo_sapiens/core/seq_region_mapping.sql modules/t/test-genome-DBs/homo_sapiens/core/seq_region_mapping.txt modules/t/test-genome-DBs/homo_sapiens/core/simple_feature.sql modules/t/test-genome-DBs/homo_sapiens/core/simple_feature.txt modules/t/test-genome-DBs/homo_sapiens/core/stable_id_event.sql modules/t/test-genome-DBs/homo_sapiens/core/stable_id_event.txt modules/t/test-genome-DBs/homo_sapiens/core/supporting_feature.sql modules/t/test-genome-DBs/homo_sapiens/core/supporting_feature.txt modules/t/test-genome-DBs/homo_sapiens/core/transcript.sql modules/t/test-genome-DBs/homo_sapiens/core/transcript.txt modules/t/test-genome-DBs/homo_sapiens/core/transcript_attrib.sql modules/t/test-genome-DBs/homo_sapiens/core/transcript_attrib.txt modules/t/test-genome-DBs/homo_sapiens/core/transcript_stable_id.sql modules/t/test-genome-DBs/homo_sapiens/core/transcript_stable_id.txt modules/t/test-genome-DBs/homo_sapiens/core/transcript_supporting_feature.sql modules/t/test-genome-DBs/homo_sapiens/core/transcript_supporting_feature.txt modules/t/test-genome-DBs/homo_sapiens/core/translation.sql modules/t/test-genome-DBs/homo_sapiens/core/translation.txt modules/t/test-genome-DBs/homo_sapiens/core/translation_attrib.sql modules/t/test-genome-DBs/homo_sapiens/core/translation_attrib.txt modules/t/test-genome-DBs/homo_sapiens/core/translation_stable_id.sql modules/t/test-genome-DBs/homo_sapiens/core/translation_stable_id.txt modules/t/test-genome-DBs/homo_sapiens/core/unconventional_transcript_association.sql modules/t/test-genome-DBs/homo_sapiens/core/unconventional_transcript_association.txt modules/t/test-genome-DBs/homo_sapiens/core/unmapped_object.sql modules/t/test-genome-DBs/homo_sapiens/core/unmapped_object.txt modules/t/test-genome-DBs/homo_sapiens/core/unmapped_reason.sql modules/t/test-genome-DBs/homo_sapiens/core/unmapped_reason.txt modules/t/test-genome-DBs/homo_sapiens/core/xref.sql modules/t/test-genome-DBs/homo_sapiens/core/xref.txt modules/t/topLevelAssemblyMapper.t modules/t/transcript.t modules/t/translation.t modules/t/unconventionalTranscriptAssociation.t modules/t/unconventionalTranscriptAssociationAdaptor.t modules/t/unmappedObject.t modules/t/unmappedObjectAdaptor.t modules/t/utilsScalar.t sql/README sql/foreign_keys.sql sql/patch_21_22.sql sql/patch_23_24.sql sql/patch_24_25.sql sql/patch_25_26.sql sql/patch_26_27.sql sql/patch_27_28.sql sql/patch_28_29.sql sql/patch_29_30.sql sql/patch_30_31.sql sql/patch_31_32.sql sql/patch_32_33.sql sql/patch_33_34.sql sql/patch_34_35.sql sql/patch_35_36.sql sql/patch_36_37.sql sql/patch_37_38.sql sql/patch_38_39_a.sql sql/patch_38_39_b.sql sql/patch_38_39_c.sql sql/patch_38_39_d.sql sql/patch_38_39_e.sql sql/patch_39_40_a.sql sql/patch_39_40_b.sql sql/patch_39_40_c.sql sql/patch_39_40_d.sql sql/patch_39_40_e.sql sql/patch_39_40_f.sql sql/patch_39_40_g.sql sql/patch_39_40_h.sql sql/patch_39_40_i.sql sql/patch_39_40_j.sql sql/patch_40_41_a.sql sql/patch_40_41_b.sql sql/patch_40_41_c.sql sql/patch_40_41_d.sql sql/patch_40_41_e.sql sql/patch_40_41_f.sql sql/patch_41_42_a.sql sql/patch_41_42_b.sql sql/patch_41_42_c.sql sql/patch_41_42_d.sql sql/patch_41_42_e.sql sql/patch_41_42_f.sql sql/patch_41_42_g.sql sql/patch_42_43_a.sql sql/patch_42_43_b.sql sql/patch_42_43_c.sql sql/patch_42_43_d.sql sql/patch_42_43_e.sql sql/patch_42_43_f.sql sql/patch_43_44_a.sql sql/patch_43_44_b.sql sql/patch_43_44_c.sql sql/patch_43_44_d.sql sql/patch_43_44_e.sql sql/patch_43_44_f.sql sql/patch_44_45_a.sql sql/patch_44_45_b.sql sql/patch_44_45_c.sql sql/patch_45_46_a.sql sql/patch_45_46_b.sql sql/patch_45_46_c.sql sql/patch_45_46_d.sql sql/patch_45_46_e.sql sql/patch_45_46_f.sql sql/patch_45_46_g.sql sql/patch_46_47_a.sql sql/patch_46_47_b.sql sql/patch_46_47_c.sql sql/patch_47_48_a.sql sql/patch_48_49_a.sql sql/patch_48_49_b.sql sql/patch_48_49_c.sql sql/patch_48_49_d.sql sql/patch_48_49_e.sql sql/patch_49_50_a.sql sql/patch_49_50_b.sql sql/patch_49_50_c.sql sql/patch_49_50_d.sql sql/patch_49_50_e.sql sql/patch_50_51_a.sql sql/patch_50_51_b.sql sql/patch_50_51_c.sql sql/patch_50_51_d.sql sql/patch_50_51_e.sql sql/patch_50_51_f.sql sql/patch_50_51_g.sql sql/patch_50_51_h.sql sql/patch_50_51_i.sql sql/patch_51_52_a.sql sql/patch_51_52_b.sql sql/patch_51_52_c.sql sql/patch_51_52_d.sql sql/patch_52_53_a.sql sql/patch_52_53_b.sql sql/patch_52_53_c.sql sql/patch_52_53_d.sql sql/patch_53_54_a.sql sql/patch_53_54_b.sql sql/patch_53_54_c.sql sql/patch_54_55_a.sql sql/patch_54_55_b.sql sql/patch_54_55_c.sql sql/patch_54_55_d.sql sql/patch_54_55_e.sql sql/patch_54_55_f.sql sql/patch_54_55_g.sql sql/patch_54_55_h.sql sql/patch_55_56_a.sql sql/patch_55_56_b.sql sql/patch_55_56_c.sql sql/patch_55_56_d.sql sql/patch_56_57_a.sql sql/patch_56_57_b.sql sql/patch_56_57_c.sql sql/patch_56_57_d.sql sql/patch_56_57_e.sql sql/patch_56_57_f.sql sql/patch_57_58_a.sql sql/patch_58_59_a.sql sql/patch_58_59_b.sql sql/patch_58_59_c.sql sql/patch_58_59_d.sql sql/patch_58_59_e.sql sql/populate_meta_coord.pl sql/table.sql sql/transfer_misc_affy.pl sql/vega_latest_schema.sql sql/vega_specific_tables.sql --- LICENSE | 40 - docs/ensembl_changes_spec.txt | 955 - docs/ensembl_das/Homo_sapiens.ini | 319 - docs/ensembl_das/demo.ini | 9 - docs/ensembl_das/demo.pm | 86 - docs/ensembl_das/ensembl-das.pdf | Bin 163414 -> 0 bytes docs/ensembl_das/ensembl-das.sxw | Bin 12730 -> 0 bytes docs/schema_description/README | 1 - docs/schema_description/process-saxon.bat | 5 - docs/schema_description/process-saxon.sh | 11 - .../schema_description/schema_description.dtd | 48 - .../schema_description.html | 948 - docs/schema_description/tables.html | 918 - docs/schema_description/tables.txt | 770 - docs/schema_description/tables.xml | 1101 - docs/schema_description/xml2html.xsl | 150 - docs/schema_description/xml2wiki.xsl | 111 - docs/tutorial/ensembl_tutorial.pdf | Bin 472901 -> 0 bytes docs/tutorial/ensembl_tutorial.sxw | Bin 25983 -> 0 bytes docs/tutorial/ensembl_tutorial.txt | 933 - misc-scripts/CopyDBoverServer.pl | 745 - misc-scripts/CreateFile4CopyDBoverServer.pl | 79 - misc-scripts/README.schema_patching | 99 - misc-scripts/add_species_aliases.pl | 219 - .../AltSplicingToolkit/AUTHORS | 16 - .../AltSplicingToolkit/BUGS | 10 - .../AltSplicingToolkit/COPYING | 40 - .../AltSplicingToolkit/ChangeLog | 49 - .../AltSplicingToolkit/INSTALL | 40 - .../AltSplicingToolkit/INSTALL.configure | 291 - .../AltSplicingToolkit/Makefile.am | 6 - .../AltSplicingToolkit/Makefile.in | 605 - .../AltSplicingToolkit/NEWS | 5 - .../AltSplicingToolkit/README | 63 - .../AltSplicingToolkit/THANKS | 17 - .../AltSplicingToolkit/aclocal.m4 | 877 - .../AltSplicingToolkit/configure.ac | 171 - .../AltSplicingToolkit/depcomp | 589 - .../AltSplicingToolkit/release_notes.txt | 113 - .../AltSplicingToolkit/src/Constants.h | 56 - .../AltSplicingToolkit/src/Main.cpp | 258 - .../AltSplicingToolkit/src/Makefile.am | 64 - .../AltSplicingToolkit/src/Makefile.in | 851 - .../AltSplicingToolkit/src/as/Coordinates.cpp | 93 - .../AltSplicingToolkit/src/as/Coordinates.h | 79 - .../AltSplicingToolkit/src/as/ExonChunk.cpp | 102 - .../AltSplicingToolkit/src/as/ExonChunk.h | 87 - .../AltSplicingToolkit/src/as/Feature.cpp | 119 - .../AltSplicingToolkit/src/as/Feature.h | 100 - .../AltSplicingToolkit/src/as/Gene.cpp | 66 - .../AltSplicingToolkit/src/as/Gene.h | 68 - .../AltSplicingToolkit/src/as/GeneFeature.cpp | 79 - .../AltSplicingToolkit/src/as/GeneFeature.h | 80 - .../AltSplicingToolkit/src/as/RegionChunk.cpp | 451 - .../AltSplicingToolkit/src/as/RegionChunk.h | 97 - .../src/as/SplicingEvent.cpp | 791 - .../AltSplicingToolkit/src/as/SplicingEvent.h | 192 - .../src/as/SplicingEventContainer.cpp | 342 - .../src/as/SplicingEventContainer.h | 112 - .../src/as/SplicingEventMatrix.cpp | 1591 - .../src/as/SplicingEventMatrix.h | 124 - .../src/as/SplicingGraph.cpp | 514 - .../AltSplicingToolkit/src/as/SplicingGraph.h | 146 - .../src/as/SplicingVertex.cpp | 94 - .../src/as/SplicingVertex.h | 99 - .../AltSplicingToolkit/src/as/Transcript.cpp | 158 - .../AltSplicingToolkit/src/as/Transcript.h | 102 - .../src/as/TranscriptFeature.cpp | 108 - .../src/as/TranscriptFeature.h | 105 - .../src/gff/BioMartGffHandler.cpp | 326 - .../src/gff/BioMartGffHandler.h | 130 - .../src/gff/GffEventModel.cpp | 128 - .../src/gff/GffEventModel.h | 125 - .../AltSplicingToolkit/src/gff/GffParser.cpp | 172 - .../AltSplicingToolkit/src/gff/GffParser.h | 106 - .../src/gff/GffSimpleHandler.cpp | 78 - .../src/gff/GffSimpleHandler.h | 77 - .../src/gff/SplicingEventGffGenerator.cpp | 242 - .../src/gff/SplicingEventGffGenerator.h | 121 - .../AltSplicingToolkit/src/util/Logger.cpp | 71 - .../AltSplicingToolkit/src/util/Logger.h | 71 - .../src/util/StringUtil.cpp | 107 - .../AltSplicingToolkit/src/util/StringUtil.h | 98 - .../alternative_splicing/Fetch_gff.pl | 175 - misc-scripts/alternative_splicing/README.txt | 54 - .../load_alt_splice_gff.pl | 397 - .../analysis.descriptions | 425 - .../analysis_description/apply_rules.pl | 446 - .../chech_web_data_column.pl | 128 - .../load_analysis_descriptions.pl | 240 - .../anopheles_scripts/check_bad_regions.pl | 54 - misc-scripts/anopheles_scripts/check_stops.pl | 115 - .../anopheles_scripts/dump_genbank_45.pl | 1689 - .../anopheles_scripts/dump_genebank.pl | 799 - .../anopheles_scripts/dump_genebank_38.pl | 1273 - misc-scripts/anopheles_scripts/format_bacs.pl | 95 - misc-scripts/anopheles_scripts/format_blat.pl | 81 - .../anopheles_scripts/format_matepairs.pl | 150 - .../get_est_supporting_evidences.pl | 62 - misc-scripts/anopheles_scripts/get_freqs.pl | 165 - .../anopheles_scripts/get_good_matepairs.pl | 145 - .../get_transposon_repeats.pl | 78 - .../anopheles_scripts/load_karyotype.pl | 134 - .../location_check_for_dump.pl | 87 - .../produce_snap_training_set.pl | 287 - .../protein_annotation_from_embl.pl | 71 - .../remove_proteins_from_db.pl | 211 - .../split_fasta_in_subslices_anopheles.pl | 211 - .../assembly/AssemblyMapper/BlastzAligner.pm | 862 - misc-scripts/assembly/EXAMPLE.use_mapping.pl | 161 - misc-scripts/assembly/README | 227 - .../assembly/align_by_clone_identity.pl | 727 - .../assembly/align_nonident_regions.pl | 312 - .../align_nonident_regions_wrapper.pl | 188 - misc-scripts/assembly/blastz_matrix.txt | 6 - misc-scripts/assembly/check_mapping.pl | 224 - misc-scripts/assembly/cleanup_tmp_tables.sql | 11 - misc-scripts/assembly/compare_assemblies.pl | 232 - misc-scripts/assembly/find_overlaps.pl | 184 - misc-scripts/assembly/fix_overlaps.pl | 294 - .../assembly/load_alternative_assembly.pl | 304 - misc-scripts/assembly/mapping_stats.pl | 251 - misc-scripts/assembly_patches/README.TXT | 26 - .../assembly_patches/assembly_patch_load.pl | 380 - misc-scripts/attribute_types/attrib_type.txt | 378 - .../attribute_types/upload_attributes.pl | 321 - .../set_canonical_transcripts.pl | 166 - misc-scripts/chain/axt2assembly.pl | 123 - misc-scripts/chain/chain2assembly.pl | 182 - misc-scripts/chimp/Deletion.pm | 402 - misc-scripts/chimp/Gene.pm | 502 - misc-scripts/chimp/Insertion.pm | 166 - misc-scripts/chimp/InterimExon.pm | 281 - misc-scripts/chimp/InterimTranscript.pm | 95 - misc-scripts/chimp/Length.pm | 54 - misc-scripts/chimp/README | 355 - misc-scripts/chimp/StatLogger.pm | 49 - misc-scripts/chimp/StatMsg.pm | 210 - misc-scripts/chimp/Transcript.pm | 392 - misc-scripts/chimp/Utils.pm | 132 - misc-scripts/chimp/chimp_chr_ctg_assembly.pl | 29 - misc-scripts/chimp/get_stats.pl | 204 - misc-scripts/chimp/human2chimp.pl | 735 - misc-scripts/chimp/lift_assembly.pl | 55 - misc-scripts/chimp/run_hum2chimp.sh | 8 - misc-scripts/constitutive_exon.pl | 138 - misc-scripts/db-space.pl | 145 - misc-scripts/db/cleanup_tmp_tables.pl | 128 - misc-scripts/db/multidb_sql.pl | 131 - misc-scripts/density_feature/DensityCalc.sh | 129 - .../density_feature/densities_multi_db.pl | 119 - .../density_feature/density_feature_fetch.pl | 97 - .../density_feature/gene_density_calc.pl | 282 - .../density_feature/glovar_snp_density.pl | 293 - .../density_feature/logicname_density_calc.pl | 205 - .../density_feature/percent_gc_calc.pl | 213 - .../density_feature/repeat_coverage_calc.pl | 287 - .../density_feature/seq_region_stats.pl | 233 - .../density_feature/variation_density.pl | 238 - misc-scripts/ebi_search_dump/count_entries.sh | 3 - misc-scripts/ebi_search_dump/dump_44.sh | 34 - misc-scripts/ebi_search_dump/dump_ebi.pl | 488 - .../ebi_search_dump/ebi_search_dump.pl | 1756 - misc-scripts/external_db/README | 113 - .../external_db/convert_external_dbs.pl | 73 - misc-scripts/external_db/external_dbs.txt | 342 - .../load_additional_human_affy_xrefs.pl | 83 - .../load_additional_human_gkb_xrefs.pl | 88 - .../external_db/update_external_dbs.pl | 324 - misc-scripts/frameshift_transcript_attribs.pl | 152 - misc-scripts/gene_gc.pl | 114 - misc-scripts/generate_stable_ids.pl | 276 - misc-scripts/golden_path/check_sum.pl | 13 - misc-scripts/golden_path/fin_agp2ensembl | 208 - misc-scripts/golden_path/get_contig.pl | 31 - .../golden_path/gp_contig_mismatch.pl | 164 - misc-scripts/golden_path/gp_incons_test.pl | 82 - misc-scripts/golden_path/gp_parse.pl | 234 - misc-scripts/golden_path/makeunique.pl | 15 - misc-scripts/golden_path/ncbi2ensembl | 240 - misc-scripts/golden_path/nt_crossmatch.pl | 316 - misc-scripts/golden_path/pfetch2ensembl | 365 - misc-scripts/golden_path/rat_agp2ensembl | 136 - misc-scripts/meta_coord/update_meta_coord.pl | 132 - misc-scripts/meta_levels.pl | 165 - .../misc_feature/misc_set.descriptions | 8 - .../update_misc_set_descripitons.pl | 172 - .../add_ikmc_as_simple_features.pl | 166 - misc-scripts/ontology/README | 255 - .../ontology/scripts/add_subset_maps.pl | 123 - .../ontology/scripts/compute_closure.pl | 145 - misc-scripts/ontology/scripts/demo1.pl | 46 - misc-scripts/ontology/scripts/demo2.pl | 65 - .../ontology/scripts/load_OBO_file.pl | 510 - misc-scripts/ontology/sql/table.sql | 98 - misc-scripts/overlapping_regions.pl | 155 - misc-scripts/protein_match/process_pmach.pl | 268 - misc-scripts/qtl/extract_rat_map_ids.pl | 64 - misc-scripts/qtl/qtl_feature_calculation.pl | 192 - misc-scripts/qtl/rat_qtl_import.pl | 145 - misc-scripts/qtl/run_rat_import.pl | 80 - .../RegulatoryFeatureParser/BaseParser.pm | 275 - .../RegulatoryFeatureParser/cisred.pm | 309 - .../RegulatoryFeatureParser/enhancer.pm | 193 - .../RegulatoryFeatureParser/miranda.pm | 209 - .../regulatory_regions/gene_coverage.pl | 46 - .../regulatory_regions/load_regulatory.pl | 96 - .../regulatory_regions/parse_cisred.pl | 63 - misc-scripts/repeats/repeat-libraries.pl | 163 - misc-scripts/repeats/repeat-types.pl | 105 - misc-scripts/repeats/repeats.txt | 15168 --------- misc-scripts/repeats/shrink_trfs.pl | 190 - misc-scripts/repeats/vega_repeat_libraries.pl | 280 - misc-scripts/schema_patch.pl | 232 - misc-scripts/search_dbs.pl | 121 - misc-scripts/surgery/SchemaConverter.pm | 415 - .../SeqStoreConverter/AnophelesGambiae.pm | 244 - .../SeqStoreConverter/ApisMellifera.pm | 80 - .../SeqStoreConverter/BasicConverter.pm | 1231 - .../CaenorhabditisBriggsae.pm | 335 - .../CaenorhabditisElegans.pm | 113 - .../SeqStoreConverter/CanisFamiliaris.pm | 12 - .../surgery/SeqStoreConverter/DanioRerio.pm | 382 - .../DrosophilaMelanogaster.pm | 79 - .../surgery/SeqStoreConverter/FuguRubripes.pm | 140 - .../surgery/SeqStoreConverter/GallusGallus.pm | 159 - .../surgery/SeqStoreConverter/HomoSapiens.pm | 47 - .../surgery/SeqStoreConverter/MusMusculus.pm | 194 - .../SeqStoreConverter/PanTroglodytes.pm | 76 - .../SeqStoreConverter/RattusNorvegicus.pm | 116 - .../SeqStoreConverter/vega/CanisFamiliaris.pm | 14 - .../SeqStoreConverter/vega/DanioRerio.pm | 164 - .../SeqStoreConverter/vega/HomoSapiens.pm | 13 - .../SeqStoreConverter/vega/MusMusculus.pm | 13 - .../SeqStoreConverter/vega/VBasicConverter.pm | 180 - misc-scripts/surgery/convert_seqstore.pl | 150 - misc-scripts/surgery/converter.input | 9 - misc-scripts/surgery/create_fixsql.pl | 30 - misc-scripts/surgery/dump_seq_in_region | 123 - .../surgery/fuller_test_genome_9_chr20.pl | 525 - misc-scripts/surgery/push_align_features.pl | 290 - .../surgery/set_nonredundant_attribs.pl | 235 - .../surgery/shortintrons2frameshifts.pl | 314 - misc-scripts/surgery/table_column_munge | 57 - misc-scripts/transfer_karyotype.pl | 86 - misc-scripts/translation_attribs.pl | 316 - misc-scripts/translation_attribs_wrapper.pl | 158 - .../unmapped_reason/unmapped_reason.txt | 18 - .../update_unmapped_reasons.pl | 131 - misc-scripts/update_mapping_set.pl | 305 - misc-scripts/utilities/dna_compress.pl | 294 - misc-scripts/utilities/parse_embl.pl | 509 - misc-scripts/utilities/show_method_status.pl | 171 - misc-scripts/utilities/split_fasta.pl | 10 - .../variation/nonsense_transcript_attribs.pl | 436 - misc-scripts/web_stats.sh | 3 - misc-scripts/xref_mapping/FAQ.txt | 408 - .../xref_mapping/XrefMapper/BasicMapper.pm | 1500 - .../XrefMapper/CoordinateMapper.pm | 855 - .../xref_mapping/XrefMapper/CoreInfo.pm | 246 - .../xref_mapping/XrefMapper/DisplayXrefs.pm | 1539 - .../xref_mapping/XrefMapper/Interpro.pm | 142 - .../xref_mapping/XrefMapper/LoadMapper.pm | 19 - .../XrefMapper/Methods/ExonerateBasic.pm | 405 - .../XrefMapper/Methods/ExonerateBest1.pm | 18 - .../Methods/ExonerateGappedBest1.pm | 30 - .../Methods/ExonerateGappedBest1_agam.pm | 25 - .../Methods/ExonerateGappedBest1_culex.pm | 26 - .../ExonerateGappedBest_100_perc_id.pm | 30 - .../Methods/ExonerateGappedBest_90_perc_id.pm | 30 - .../Methods/ExonerateUngappedBest1.pm | 30 - .../Methods/LocalExonerateGappedBest1.pm | 83 - .../Methods/PBSExonerateGappedBest1.pm | 182 - .../XrefMapper/ProcessMappings.pm | 285 - .../xref_mapping/XrefMapper/ProcessPaired.pm | 222 - .../XrefMapper/ProcessPrioritys.pm | 149 - .../xref_mapping/XrefMapper/SubmitMapper.pm | 977 - .../xref_mapping/XrefMapper/TestMappings.pm | 457 - .../XrefMapper/VBCoordinateMapper.pm | 750 - .../xref_mapping/XrefMapper/XrefLoader.pm | 780 - .../xref_mapping/XrefMapper/aedes_aegypti.pm | 36 - .../XrefMapper/anopheles_gambiae.pm | 61 - .../XrefMapper/caenorhabditis_elegans.pm | 68 - .../XrefMapper/canis_familiaris.pm | 21 - .../XrefMapper/ciona_intestinalis.pm | 21 - .../xref_mapping/XrefMapper/culex_pipiens.pm | 54 - .../xref_mapping/XrefMapper/danio_rerio.pm | 40 - misc-scripts/xref_mapping/XrefMapper/db.pm | 126 - .../XrefMapper/drosophila_ananassae.pm | 450 - .../XrefMapper/drosophila_erecta.pm | 450 - .../XrefMapper/drosophila_grimshawi.pm | 450 - .../XrefMapper/drosophila_melanogaster.pm | 450 - .../XrefMapper/drosophila_mojavensis.pm | 450 - .../XrefMapper/drosophila_persimilis.pm | 450 - .../XrefMapper/drosophila_pseudoobscura.pm | 450 - .../XrefMapper/drosophila_sechellia.pm | 450 - .../XrefMapper/drosophila_simulans.pm | 450 - .../XrefMapper/drosophila_virilis.pm | 450 - .../XrefMapper/drosophila_willistoni.pm | 450 - .../XrefMapper/drosophila_yakuba.pm | 450 - .../xref_mapping/XrefMapper/fugu_rubripes.pm | 23 - .../xref_mapping/XrefMapper/homo_sapiens.pm | 107 - .../XrefMapper/ixodes_scapularis.pm | 45 - .../xref_mapping/XrefMapper/macaca_mulatta.pm | 21 - .../XrefMapper/monodelphis_domestica.pm | 21 - .../xref_mapping/XrefMapper/mus_musculus.pm | 141 - .../XrefMapper/ornithorhynchus_anatinus.pm | 53 - .../XrefMapper/rattus_norvegicus.pm | 83 - .../XrefMapper/saccharomyces_cerevisiae.pm | 81 - .../XrefMapper/tetraodon_nigroviridis.pm | 32 - .../XrefMapper/xenopus_tropicalis.pm | 35 - .../xref_mapping/XrefParser/AedesCAPParser.pm | 82 - .../XrefParser/AedesGenBankParser.pm | 94 - .../xref_mapping/XrefParser/AgilentParser.pm | 76 - .../XrefParser/AnophelesSymbolParser.pm | 75 - .../xref_mapping/XrefParser/BaseParser.pm | 2433 -- .../xref_mapping/XrefParser/CCDSParser.pm | 90 - .../xref_mapping/XrefParser/CeleraParser.pm | 88 - .../XrefParser/CeleraProteinParser.pm | 14 - .../XrefParser/CeleraTranscriptParser.pm | 14 - .../xref_mapping/XrefParser/CodelinkParser.pm | 71 - .../XrefParser/CoordinateParser.pm | 61 - .../xref_mapping/XrefParser/DBASSParser.pm | 112 - .../xref_mapping/XrefParser/DatabaseParser.pm | 60 - .../xref_mapping/XrefParser/DirectParser.pm | 88 - .../XrefParser/EntrezGeneParser.pm | 136 - .../xref_mapping/XrefParser/FantomParser.pm | 104 - .../xref_mapping/XrefParser/FastaParser.pm | 66 - .../xref_mapping/XrefParser/FlybaseParser.pm | 381 - .../XrefParser/Flybase_dmel_GFFv3_Parser.pm | 1197 - .../xref_mapping/XrefParser/GOParser.pm | 244 - .../xref_mapping/XrefParser/GOSlimParser.pm | 90 - .../xref_mapping/XrefParser/HGNCParser.pm | 271 - .../XrefParser/HGNC_CCDSParser.pm | 175 - .../XrefParser/HGNC_ENSTParser.pm | 244 - .../xref_mapping/XrefParser/HPAParser.pm | 76 - .../xref_mapping/XrefParser/IPIParser.pm | 85 - .../xref_mapping/XrefParser/IlluminaParser.pm | 82 - .../XrefParser/IlluminaWGParser.pm | 105 - .../XrefParser/InterproGoParser.pm | 116 - .../xref_mapping/XrefParser/InterproParser.pm | 156 - .../XrefParser/IxodesCAPParser.pm | 75 - .../xref_mapping/XrefParser/JGI_Parser.pm | 151 - .../XrefParser/JGI_ProteinParser.pm | 14 - .../xref_mapping/XrefParser/MGDParser.pm | 115 - .../XrefParser/MGI_CCDS_Parser.pm | 134 - .../XrefParser/MGI_Desc_Parser.pm | 119 - .../XrefParser/MGI_Vega_Parser.pm | 264 - .../xref_mapping/XrefParser/MIMParser.pm | 133 - .../xref_mapping/XrefParser/Mim2GeneParser.pm | 115 - .../xref_mapping/XrefParser/OTTTParser.pm | 110 - .../xref_mapping/XrefParser/RGDParser.pm | 116 - .../XrefParser/RefSeqGPFFParser.pm | 311 - .../xref_mapping/XrefParser/RefSeqParser.pm | 218 - .../XrefParser/RefSeq_CCDSParser.pm | 176 - .../xref_mapping/XrefParser/SGDParser.pm | 125 - .../xref_mapping/XrefParser/SegmentParser.pm | 71 - .../xref_mapping/XrefParser/UCSCParser.pm | 93 - .../xref_mapping/XrefParser/UniGeneParser.pm | 219 - .../XrefParser/UniProtDirectParser.pm | 159 - .../xref_mapping/XrefParser/UniProtParser.pm | 620 - .../UniProtParser_descriptions_only.pm | 398 - .../XrefParser/UniProtVarSplicParser.pm | 102 - .../XrefParser/VBCommunitySymbolParser.pm | 77 - .../xref_mapping/XrefParser/VbDirectParser.pm | 57 - .../xref_mapping/XrefParser/VbGFF3Parser.pm | 95 - .../XrefParser/WilsonAffyParser.pm | 137 - .../xref_mapping/XrefParser/WormPepParser.pm | 82 - .../WormbaseDatabaseStableIDParser.pm | 46 - .../XrefParser/XenopusJamboreeParser.pm | 76 - .../xref_mapping/XrefParser/ZFINParser.pm | 141 - .../XrefParser/curated_transcriptParser.pm | 230 - .../xref_mapping/XrefParser/ncRNAParser.pm | 96 - .../xref_mapping/XrefParser/ncRNA_DBParser.pm | 102 - misc-scripts/xref_mapping/compare_mapping.pl | 246 - .../xref_mapping/compare_xrefs_by_source.pl | 131 - .../convert_xrefs_to_all_translations.pl | 65 - .../xref_mapping/core_vega_link_check.pl | 150 - misc-scripts/xref_mapping/ensembl_xrefs.pdf | Bin 188363 -> 0 bytes misc-scripts/xref_mapping/ensembl_xrefs.sxw | Bin 23331 -> 0 bytes misc-scripts/xref_mapping/gen_perc_file.pl | 77 - .../xref_mapping/generate_csv_graph_file.pl | 62 - .../xref_mapping/parsing_information.txt | 392 - misc-scripts/xref_mapping/sql/table.sql | 404 - .../xref_mapping/test_mapping_files.pl | 100 - misc-scripts/xref_mapping/test_xref_mapper.pl | 381 - misc-scripts/xref_mapping/xref_config.ini | 4035 --- misc-scripts/xref_mapping/xref_config2sql.pl | 167 - misc-scripts/xref_mapping/xref_mapper.input | 39 - misc-scripts/xref_mapping/xref_mapper.pl | 367 - misc-scripts/xref_mapping/xref_parser.pl | 171 - misc-scripts/xref_mapping/xref_tracker.pl | 95 - .../xref_mapping/xrefs_detailed_docs.txt | 491 - misc-scripts/xref_mapping/xrefs_overview.txt | 167 - misc-scripts/xref_projection/README | 84 - .../xref_projection/project_display_xrefs.pl | 915 - .../xref_projection/projection_db.sql | 14 - misc-scripts/xref_projection/release_48.ini | 9 - .../xref_projection/submit_projections.pl | 258 - modules/Bio/EnsEMBL/AlignStrainSlice.pm | 344 - modules/Bio/EnsEMBL/Analysis.pm | 621 - modules/Bio/EnsEMBL/Analysis/PairAlign.pm | 400 - modules/Bio/EnsEMBL/Analysis/Programs.pm | 196 - modules/Bio/EnsEMBL/ArchiveStableId.pm | 537 - .../Bio/EnsEMBL/AssemblyExceptionFeature.pm | 183 - modules/Bio/EnsEMBL/AssemblyMapper.pm | 879 - modules/Bio/EnsEMBL/Attribute.pm | 188 - modules/Bio/EnsEMBL/BaseAlignFeature.pm | 902 - modules/Bio/EnsEMBL/ChainedAssemblyMapper.pm | 822 - modules/Bio/EnsEMBL/Collection.pm | 448 - modules/Bio/EnsEMBL/Collection/Exon.pm | 143 - modules/Bio/EnsEMBL/Collection/Gene.pm | 184 - .../Bio/EnsEMBL/Collection/RepeatFeature.pm | 129 - modules/Bio/EnsEMBL/Collection/Transcript.pm | 179 - modules/Bio/EnsEMBL/CoordSystem.pm | 360 - .../Bio/EnsEMBL/DB/ExternalFeatureFactoryI.pm | 301 - modules/Bio/EnsEMBL/DBEntry.pm | 685 - modules/Bio/EnsEMBL/DBLoader.pm | 131 - modules/Bio/EnsEMBL/DBSQL/AnalysisAdaptor.pm | 727 - .../EnsEMBL/DBSQL/ArchiveStableIdAdaptor.pm | 1513 - .../DBSQL/AssemblyExceptionFeatureAdaptor.pm | 618 - .../EnsEMBL/DBSQL/AssemblyMapperAdaptor.pm | 1832 -- .../Bio/EnsEMBL/DBSQL/AssemblySliceAdaptor.pm | 240 - modules/Bio/EnsEMBL/DBSQL/AttributeAdaptor.pm | 398 - modules/Bio/EnsEMBL/DBSQL/BaseAdaptor.pm | 785 - .../EnsEMBL/DBSQL/BaseAlignFeatureAdaptor.pm | 325 - .../Bio/EnsEMBL/DBSQL/BaseFeatureAdaptor.pm | 1100 - .../Bio/EnsEMBL/DBSQL/BaseMetaContainer.pm | 376 - .../DBSQL/CompressedSequenceAdaptor.pm | 205 - .../Bio/EnsEMBL/DBSQL/CoordSystemAdaptor.pm | 1074 - modules/Bio/EnsEMBL/DBSQL/DBAdaptor.pm | 1040 - modules/Bio/EnsEMBL/DBSQL/DBConnection.pm | 897 - modules/Bio/EnsEMBL/DBSQL/DBEntryAdaptor.pm | 1635 - .../EnsEMBL/DBSQL/DensityFeatureAdaptor.pm | 619 - .../Bio/EnsEMBL/DBSQL/DensityTypeAdaptor.pm | 305 - .../EnsEMBL/DBSQL/DnaAlignFeatureAdaptor.pm | 572 - modules/Bio/EnsEMBL/DBSQL/ExonAdaptor.pm | 796 - modules/Bio/EnsEMBL/DBSQL/GOTermAdaptor.pm | 66 - modules/Bio/EnsEMBL/DBSQL/GeneAdaptor.pm | 2214 -- .../Bio/EnsEMBL/DBSQL/KaryotypeBandAdaptor.pm | 234 - modules/Bio/EnsEMBL/DBSQL/MergedAdaptor.pm | 188 - modules/Bio/EnsEMBL/DBSQL/MetaContainer.pm | 281 - .../Bio/EnsEMBL/DBSQL/MetaCoordContainer.pm | 228 - .../Bio/EnsEMBL/DBSQL/MiscFeatureAdaptor.pm | 640 - modules/Bio/EnsEMBL/DBSQL/MiscSetAdaptor.pm | 317 - .../Bio/EnsEMBL/DBSQL/OntologyDBAdaptor.pm | 48 - .../Bio/EnsEMBL/DBSQL/OntologyTermAdaptor.pm | 764 - .../EnsEMBL/DBSQL/PredictionExonAdaptor.pm | 456 - .../DBSQL/PredictionTranscriptAdaptor.pm | 575 - .../DBSQL/ProteinAlignFeatureAdaptor.pm | 394 - .../EnsEMBL/DBSQL/ProteinFeatureAdaptor.pm | 371 - modules/Bio/EnsEMBL/DBSQL/ProxySNPAdaptor.pm | 141 - .../EnsEMBL/DBSQL/RepeatConsensusAdaptor.pm | 274 - .../Bio/EnsEMBL/DBSQL/RepeatFeatureAdaptor.pm | 492 - modules/Bio/EnsEMBL/DBSQL/SOTermAdaptor.pm | 67 - modules/Bio/EnsEMBL/DBSQL/SequenceAdaptor.pm | 426 - .../Bio/EnsEMBL/DBSQL/SimpleFeatureAdaptor.pm | 345 - modules/Bio/EnsEMBL/DBSQL/SliceAdaptor.pm | 2027 -- .../Bio/EnsEMBL/DBSQL/SplicingEventAdaptor.pm | 521 - .../DBSQL/SplicingEventFeatureAdaptor.pm | 147 - .../DBSQL/SplicingTranscriptPairAdaptor.pm | 143 - modules/Bio/EnsEMBL/DBSQL/StatementHandle.pm | 265 - .../Bio/EnsEMBL/DBSQL/StrainSliceAdaptor.pm | 361 - .../EnsEMBL/DBSQL/SupportingFeatureAdaptor.pm | 258 - .../Bio/EnsEMBL/DBSQL/TranscriptAdaptor.pm | 1803 - .../TranscriptSupportingFeatureAdaptor.pm | 259 - .../Bio/EnsEMBL/DBSQL/TranslationAdaptor.pm | 896 - ...onventionalTranscriptAssociationAdaptor.pm | 239 - .../EnsEMBL/DBSQL/UnmappedObjectAdaptor.pm | 450 - modules/Bio/EnsEMBL/DensityFeature.pm | 301 - modules/Bio/EnsEMBL/DensityFeatureSet.pm | 287 - modules/Bio/EnsEMBL/DensityPlot/BinValue.pm | 167 - .../Bio/EnsEMBL/DensityPlot/BinValueSet.pm | 341 - modules/Bio/EnsEMBL/DensityType.pm | 198 - modules/Bio/EnsEMBL/DnaDnaAlignFeature.pm | 402 - modules/Bio/EnsEMBL/DnaPepAlignFeature.pm | 110 - modules/Bio/EnsEMBL/Exon.pm | 1507 - modules/Bio/EnsEMBL/External/BlastAdaptor.pm | 1200 - .../External/ExternalFeatureAdaptor.pm | 702 - modules/Bio/EnsEMBL/Feature.pm | 1375 - modules/Bio/EnsEMBL/FeaturePair.pm | 990 - modules/Bio/EnsEMBL/Gene.pm | 1393 - modules/Bio/EnsEMBL/GoXref.pm | 171 - modules/Bio/EnsEMBL/IdentityXref.pm | 522 - modules/Bio/EnsEMBL/IndividualSlice.pm | 655 - modules/Bio/EnsEMBL/IndividualSliceFactory.pm | 142 - modules/Bio/EnsEMBL/Intron.pm | 138 - modules/Bio/EnsEMBL/KaryotypeBand.pm | 234 - modules/Bio/EnsEMBL/LRGSlice.pm | 273 - modules/Bio/EnsEMBL/Lite/DBAdaptor.pm | 64 - modules/Bio/EnsEMBL/Lite/SNPAdaptor.pm | 271 - modules/Bio/EnsEMBL/Map/DBSQL/DitagAdaptor.pm | 386 - .../EnsEMBL/Map/DBSQL/DitagFeatureAdaptor.pm | 724 - .../Bio/EnsEMBL/Map/DBSQL/MarkerAdaptor.pm | 462 - .../EnsEMBL/Map/DBSQL/MarkerFeatureAdaptor.pm | 418 - modules/Bio/EnsEMBL/Map/DBSQL/QtlAdaptor.pm | 271 - .../EnsEMBL/Map/DBSQL/QtlFeatureAdaptor.pm | 181 - modules/Bio/EnsEMBL/Map/Ditag.pm | 229 - modules/Bio/EnsEMBL/Map/DitagFeature.pm | 558 - modules/Bio/EnsEMBL/Map/MapLocation.pm | 207 - modules/Bio/EnsEMBL/Map/Marker.pm | 509 - modules/Bio/EnsEMBL/Map/MarkerFeature.pm | 198 - modules/Bio/EnsEMBL/Map/MarkerSynonym.pm | 135 - modules/Bio/EnsEMBL/Map/Qtl.pm | 341 - modules/Bio/EnsEMBL/Map/QtlFeature.pm | 149 - modules/Bio/EnsEMBL/MappedSlice.pm | 668 - modules/Bio/EnsEMBL/MappedSliceContainer.pm | 638 - modules/Bio/EnsEMBL/Mapper.pm | 1039 - modules/Bio/EnsEMBL/Mapper/Coordinate.pm | 208 - modules/Bio/EnsEMBL/Mapper/Gap.pm | 135 - modules/Bio/EnsEMBL/Mapper/IndelCoordinate.pm | 135 - modules/Bio/EnsEMBL/Mapper/IndelPair.pm | 55 - modules/Bio/EnsEMBL/Mapper/Pair.pm | 106 - modules/Bio/EnsEMBL/Mapper/RangeRegistry.pm | 373 - modules/Bio/EnsEMBL/Mapper/Unit.pm | 119 - modules/Bio/EnsEMBL/MiscFeature.pm | 380 - modules/Bio/EnsEMBL/MiscSet.pm | 187 - modules/Bio/EnsEMBL/OntologyTerm.pm | 311 - modules/Bio/EnsEMBL/PepDnaAlignFeature.pm | 96 - modules/Bio/EnsEMBL/PredictionExon.pm | 266 - modules/Bio/EnsEMBL/PredictionTranscript.pm | 570 - modules/Bio/EnsEMBL/ProjectionSegment.pm | 120 - modules/Bio/EnsEMBL/ProteinFeature.pm | 169 - modules/Bio/EnsEMBL/Registry.pm | 2618 -- modules/Bio/EnsEMBL/RepeatConsensus.pm | 253 - modules/Bio/EnsEMBL/RepeatFeature.pm | 296 - modules/Bio/EnsEMBL/RepeatMaskedSlice.pm | 308 - modules/Bio/EnsEMBL/Root.pm | 200 - modules/Bio/EnsEMBL/SNP.pm | 175 - modules/Bio/EnsEMBL/SeqEdit.pm | 431 - modules/Bio/EnsEMBL/SeqFeature.pm | 1255 - modules/Bio/EnsEMBL/SeqFeatureI.pm | 178 - modules/Bio/EnsEMBL/SimpleFeature.pm | 184 - modules/Bio/EnsEMBL/Slice.pm | 3583 -- modules/Bio/EnsEMBL/SplicingEvent.pm | 149 - modules/Bio/EnsEMBL/SplicingEventFeature.pm | 143 - modules/Bio/EnsEMBL/SplicingTranscriptPair.pm | 106 - modules/Bio/EnsEMBL/StableIdEvent.pm | 300 - modules/Bio/EnsEMBL/StableIdHistoryTree.pm | 1202 - modules/Bio/EnsEMBL/Storable.pm | 238 - modules/Bio/EnsEMBL/StrainSlice.pm | 839 - modules/Bio/EnsEMBL/TopLevelAssemblyMapper.pm | 433 - modules/Bio/EnsEMBL/Transcript.pm | 2536 -- modules/Bio/EnsEMBL/TranscriptFactory.pm | 325 - modules/Bio/EnsEMBL/TranscriptMapper.pm | 481 - modules/Bio/EnsEMBL/Translation.pm | 1123 - .../UnconventionalTranscriptAssociation.pm | 144 - modules/Bio/EnsEMBL/UnmappedObject.pm | 508 - modules/Bio/EnsEMBL/Upstream.pm | 582 - modules/Bio/EnsEMBL/Utils/Argument.pm | 160 - .../Bio/EnsEMBL/Utils/AssemblyProjector.pm | 459 - modules/Bio/EnsEMBL/Utils/BitString.pm | 87 - modules/Bio/EnsEMBL/Utils/Cache.pm | 703 - modules/Bio/EnsEMBL/Utils/CigarString.pm | 350 - modules/Bio/EnsEMBL/Utils/Collector.pm | 1717 - modules/Bio/EnsEMBL/Utils/ConfParser.pm | 618 - modules/Bio/EnsEMBL/Utils/ConfigRegistry.pm | 296 - .../Bio/EnsEMBL/Utils/ConversionSupport.pm | 1826 -- modules/Bio/EnsEMBL/Utils/Converter.pm | 232 - .../Bio/EnsEMBL/Utils/Converter/bio_ens.pm | 406 - .../Utils/Converter/bio_ens_analysis.pm | 78 - .../EnsEMBL/Utils/Converter/bio_ens_exon.pm | 122 - .../Utils/Converter/bio_ens_featurePair.pm | 154 - .../EnsEMBL/Utils/Converter/bio_ens_gene.pm | 82 - .../EnsEMBL/Utils/Converter/bio_ens_hit.pm | 158 - .../EnsEMBL/Utils/Converter/bio_ens_hsp.pm | 133 - .../Utils/Converter/bio_ens_predictionExon.pm | 78 - .../Utils/Converter/bio_ens_predictionGene.pm | 109 - .../Utils/Converter/bio_ens_seqFeature.pm | 133 - .../Utils/Converter/bio_ens_transcript.pm | 76 - .../Bio/EnsEMBL/Utils/Converter/ens_bio.pm | 90 - .../Utils/Converter/ens_bio_featurePair.pm | 93 - .../Utils/Converter/ens_bio_seqFeature.pm | 66 - modules/Bio/EnsEMBL/Utils/EasyArgv.pm | 137 - modules/Bio/EnsEMBL/Utils/Eprof.pm | 253 - modules/Bio/EnsEMBL/Utils/EprofStack.pm | 290 - modules/Bio/EnsEMBL/Utils/Exception.pm | 511 - modules/Bio/EnsEMBL/Utils/Logger.pm | 739 - modules/Bio/EnsEMBL/Utils/PolyA.pm | 322 - modules/Bio/EnsEMBL/Utils/Scalar.pm | 137 - modules/Bio/EnsEMBL/Utils/SchemaConversion.pm | 347 - modules/Bio/EnsEMBL/Utils/ScriptUtils.pm | 265 - modules/Bio/EnsEMBL/Utils/SeqDumper.pm | 1083 - modules/Bio/EnsEMBL/Utils/SeqRegionCache.pm | 97 - modules/Bio/EnsEMBL/Utils/Sequence.pm | 113 - modules/Bio/EnsEMBL/Utils/Slice.pm | 137 - modules/Bio/EnsEMBL/Utils/SqlHelper.pm | 806 - .../Bio/EnsEMBL/Utils/TranscriptAlleles.pm | 637 - modules/Bio/EnsEMBL/Utils/TranscriptSNPs.pm | 444 - .../Bio/EnsEMBL/Utils/User_defined_load.pm | 116 - .../Bio/EnsEMBL/Utils/VegaCuration/Gene.pm | 72 - .../EnsEMBL/Utils/VegaCuration/Transcript.pm | 342 - .../EnsEMBL/Utils/VegaCuration/Translation.pm | 388 - .../Bio/EnsEMBL/Utils/ensembl_init.example | 60 - modules/t/MultiTestDB.conf.example | 18 - modules/t/MultiTestDB.t | 62 - modules/t/README | 70 - modules/t/TestUtils.pm | 69 - modules/t/analysis.t | 114 - modules/t/archiveStableId.t | 192 - modules/t/argument.t | 32 - modules/t/assemblyException.t | 135 - modules/t/assemblyExceptionFeature.t | 93 - modules/t/assemblyMapper.t | 147 - modules/t/attribute.t | 45 - modules/t/attributeAdaptor.t | 231 - modules/t/canonicalDBAdaptor.t | 129 - modules/t/chainedAssemblyMapper.t | 145 - modules/t/compressedSequenceAdaptor.t | 72 - modules/t/coordSystem.t | 107 - modules/t/coordSystemAdaptor.t | 193 - modules/t/dbConnection.t | 194 - modules/t/dbEntries.t | 438 - modules/t/densityFeature.t | 62 - modules/t/densityFeatureAdaptor.t | 196 - modules/t/densityType.t | 55 - modules/t/densityTypeAdaptor.t | 110 - modules/t/ditag.t | 71 - modules/t/ditagAdaptor.t | 107 - modules/t/ditagFeature.t | 104 - modules/t/ditagFeatureAdaptor.t | 154 - modules/t/dnaAlignFeatureAdaptor.t | 173 - modules/t/dnaDnaAlignFeature.t | 579 - modules/t/dnaPepAlignFeature.t | 381 - modules/t/easyargv.t | 11 - modules/t/exception.t | 85 - modules/t/exon.t | 293 - modules/t/externalFeatureAdaptor.t | 145 - modules/t/feature.t | 608 - modules/t/featurePair.t | 117 - modules/t/gene.t | 765 - modules/t/geneview.t | 34 - modules/t/info_testdb.pl | 165 - modules/t/intron.t | 42 - modules/t/karyotypeBand.t | 58 - modules/t/karyotypeBandAdaptor.t | 86 - modules/t/mapLocation.t | 80 - modules/t/mapper.t | 361 - modules/t/marker.t | 168 - modules/t/markerAdaptor.t | 74 - modules/t/markerFeature.t | 96 - modules/t/markerFeatureAdaptor.t | 122 - modules/t/markerSynonym.t | 54 - modules/t/metaContainer.t | 70 - modules/t/metaCoordContainer.t | 60 - modules/t/miscFeature.t | 92 - modules/t/miscFeatureAdaptor.t | 170 - modules/t/miscSet.t | 43 - modules/t/miscSetAdaptor.t | 106 - modules/t/predictionTranscript.t | 313 - modules/t/proteinAlignFeatureAdaptor.t | 167 - modules/t/proteinFeature.t | 85 - modules/t/proteinFeatureAdaptor.t | 42 - modules/t/qtl.t | 58 - modules/t/rangeRegistry.t | 134 - modules/t/repeatConsensus.t | 44 - modules/t/repeatConsensusAdaptor.t | 88 - modules/t/repeatFeature.t | 98 - modules/t/repeatFeatureAdaptor.t | 130 - modules/t/repeatMaskedSlice.t | 89 - modules/t/seqDumper.t | 66 - modules/t/seqEdit.t | 90 - modules/t/sequenceAdaptor.t | 69 - modules/t/simpleFeature.t | 158 - modules/t/slice.t | 369 - modules/t/sliceAdaptor.t | 468 - modules/t/sqlHelper.t | 143 - .../homo_sapiens/core/alt_allele.sql | 7 - .../homo_sapiens/core/alt_allele.txt | 4 - .../homo_sapiens/core/analysis.sql | 19 - .../homo_sapiens/core/analysis.txt | 33 - .../core/analysis_description.sql | 10 - .../core/analysis_description.txt | 3 - .../homo_sapiens/core/assembly.sql | 13 - .../homo_sapiens/core/assembly.txt | 43 - .../homo_sapiens/core/assembly_exception.sql | 15 - .../homo_sapiens/core/assembly_exception.txt | 2 - .../homo_sapiens/core/attrib_type.sql | 9 - .../homo_sapiens/core/attrib_type.txt | 17 - .../homo_sapiens/core/coord_system.sql | 12 - .../homo_sapiens/core/coord_system.txt | 6 - .../homo_sapiens/core/density_feature.sql | 12 - .../homo_sapiens/core/density_feature.txt | 12 - .../homo_sapiens/core/density_type.sql | 10 - .../homo_sapiens/core/density_type.txt | 2 - .../homo_sapiens/core/ditag.sql | 10 - .../homo_sapiens/core/ditag.txt | 20 - .../homo_sapiens/core/ditag_feature.sql | 20 - .../homo_sapiens/core/ditag_feature.txt | 18 - .../test-genome-DBs/homo_sapiens/core/dna.sql | 6 - .../test-genome-DBs/homo_sapiens/core/dna.txt | 13 - .../homo_sapiens/core/dna_align_feature.sql | 27 - .../homo_sapiens/core/dna_align_feature.txt | 27166 ---------------- .../homo_sapiens/core/dnac.sql | 7 - .../homo_sapiens/core/dnac.txt | 0 .../homo_sapiens/core/exon.sql | 14 - .../homo_sapiens/core/exon.txt | 160 - .../homo_sapiens/core/exon_stable_id.sql | 10 - .../homo_sapiens/core/exon_stable_id.txt | 160 - .../homo_sapiens/core/exon_transcript.sql | 9 - .../homo_sapiens/core/exon_transcript.txt | 171 - .../homo_sapiens/core/external_db.sql | 15 - .../homo_sapiens/core/external_db.txt | 110 - .../homo_sapiens/core/external_synonym.sql | 7 - .../homo_sapiens/core/external_synonym.txt | 3 - .../homo_sapiens/core/gene.sql | 22 - .../homo_sapiens/core/gene.txt | 20 - .../homo_sapiens/core/gene_archive.sql | 14 - .../homo_sapiens/core/gene_archive.txt | 12 - .../homo_sapiens/core/gene_attrib.sql | 7 - .../homo_sapiens/core/gene_attrib.txt | 2 - .../homo_sapiens/core/gene_stable_id.sql | 10 - .../homo_sapiens/core/gene_stable_id.txt | 20 - .../homo_sapiens/core/go_xref.sql | 8 - .../homo_sapiens/core/go_xref.txt | 50 - .../homo_sapiens/core/identity_xref.sql | 14 - .../homo_sapiens/core/identity_xref.txt | 32 - .../homo_sapiens/core/interpro.sql | 7 - .../homo_sapiens/core/interpro.txt | 2 - .../homo_sapiens/core/karyotype.sql | 11 - .../homo_sapiens/core/karyotype.txt | 1 - .../test-genome-DBs/homo_sapiens/core/map.sql | 6 - .../test-genome-DBs/homo_sapiens/core/map.txt | 8 - .../homo_sapiens/core/mapping_session.sql | 15 - .../homo_sapiens/core/mapping_session.txt | 3 - .../homo_sapiens/core/mapping_set.sql | 8 - .../homo_sapiens/core/mapping_set.txt | 0 .../homo_sapiens/core/marker.sql | 13 - .../homo_sapiens/core/marker.txt | 100 - .../homo_sapiens/core/marker_feature.sql | 13 - .../homo_sapiens/core/marker_feature.txt | 100 - .../homo_sapiens/core/marker_map_location.sql | 11 - .../homo_sapiens/core/marker_map_location.txt | 412 - .../homo_sapiens/core/marker_synonym.sql | 10 - .../homo_sapiens/core/marker_synonym.txt | 1062 - .../homo_sapiens/core/meta.sql | 12 - .../homo_sapiens/core/meta.txt | 24 - .../homo_sapiens/core/meta_coord.sql | 7 - .../homo_sapiens/core/meta_coord.txt | 22 - .../homo_sapiens/core/misc_attrib.sql | 8 - .../homo_sapiens/core/misc_attrib.txt | 12 - .../homo_sapiens/core/misc_feature.sql | 10 - .../homo_sapiens/core/misc_feature.txt | 7 - .../core/misc_feature_misc_set.sql | 7 - .../core/misc_feature_misc_set.txt | 7 - .../homo_sapiens/core/misc_set.sql | 10 - .../homo_sapiens/core/misc_set.txt | 4 - .../homo_sapiens/core/object_xref.sql | 12 - .../homo_sapiens/core/object_xref.txt | 205 - .../homo_sapiens/core/oligo_array.sql | 9 - .../homo_sapiens/core/oligo_array.txt | 0 .../homo_sapiens/core/oligo_feature.sql | 14 - .../homo_sapiens/core/oligo_feature.txt | 0 .../homo_sapiens/core/oligo_probe.sql | 12 - .../homo_sapiens/core/oligo_probe.txt | 0 .../homo_sapiens/core/peptide_archive.sql | 8 - .../homo_sapiens/core/peptide_archive.txt | 10 - .../homo_sapiens/core/prediction_exon.sql | 16 - .../homo_sapiens/core/prediction_exon.txt | 191 - .../core/prediction_transcript.sql | 13 - .../core/prediction_transcript.txt | 27 - .../core/protein_align_feature.sql | 24 - .../core/protein_align_feature.txt | 7234 ---- .../homo_sapiens/core/protein_feature.sql | 18 - .../homo_sapiens/core/protein_feature.txt | 156 - .../test-genome-DBs/homo_sapiens/core/qtl.sql | 11 - .../test-genome-DBs/homo_sapiens/core/qtl.txt | 2 - .../homo_sapiens/core/qtl_feature.sql | 11 - .../homo_sapiens/core/qtl_feature.txt | 2 - .../homo_sapiens/core/qtl_synonym.sql | 9 - .../homo_sapiens/core/qtl_synonym.txt | 3 - .../homo_sapiens/core/repeat_consensus.sql | 13 - .../homo_sapiens/core/repeat_consensus.txt | 155 - .../homo_sapiens/core/repeat_feature.sql | 17 - .../homo_sapiens/core/repeat_feature.txt | 2356 -- .../homo_sapiens/core/seq_region.sql | 10 - .../homo_sapiens/core/seq_region.txt | 97 - .../homo_sapiens/core/seq_region_attrib.sql | 8 - .../homo_sapiens/core/seq_region_attrib.txt | 15 - .../homo_sapiens/core/seq_region_mapping.sql | 10 - .../homo_sapiens/core/seq_region_mapping.txt | 0 .../homo_sapiens/core/simple_feature.sql | 15 - .../homo_sapiens/core/simple_feature.txt | 136 - .../homo_sapiens/core/stable_id_event.sql | 13 - .../homo_sapiens/core/stable_id_event.txt | 42 - .../homo_sapiens/core/supporting_feature.sql | 8 - .../homo_sapiens/core/supporting_feature.txt | 330 - .../homo_sapiens/core/transcript.sql | 20 - .../homo_sapiens/core/transcript.txt | 25 - .../homo_sapiens/core/transcript_attrib.sql | 8 - .../homo_sapiens/core/transcript_attrib.txt | 0 .../core/transcript_stable_id.sql | 10 - .../core/transcript_stable_id.txt | 25 - .../core/transcript_supporting_feature.sql | 8 - .../core/transcript_supporting_feature.txt | 0 .../homo_sapiens/core/translation.sql | 11 - .../homo_sapiens/core/translation.txt | 25 - .../homo_sapiens/core/translation_attrib.sql | 8 - .../homo_sapiens/core/translation_attrib.txt | 0 .../core/translation_stable_id.sql | 10 - .../core/translation_stable_id.txt | 25 - .../unconventional_transcript_association.sql | 10 - .../unconventional_transcript_association.txt | 5 - .../homo_sapiens/core/unmapped_object.sql | 18 - .../homo_sapiens/core/unmapped_object.txt | 4 - .../homo_sapiens/core/unmapped_reason.sql | 9 - .../homo_sapiens/core/unmapped_reason.txt | 2 - .../homo_sapiens/core/xref.sql | 14 - .../homo_sapiens/core/xref.txt | 185 - modules/t/topLevelAssemblyMapper.t | 111 - modules/t/transcript.t | 718 - modules/t/translation.t | 297 - .../t/unconventionalTranscriptAssociation.t | 45 - ...conventionalTranscriptAssociationAdaptor.t | 49 - modules/t/unmappedObject.t | 129 - modules/t/unmappedObjectAdaptor.t | 67 - modules/t/utilsScalar.t | 43 - sql/README | 74 - sql/foreign_keys.sql | 180 - sql/patch_21_22.sql | 22 - sql/patch_23_24.sql | 182 - sql/patch_24_25.sql | 24 - sql/patch_25_26.sql | 50 - sql/patch_26_27.sql | 15 - sql/patch_27_28.sql | 20 - sql/patch_28_29.sql | 2 - sql/patch_29_30.sql | 2 - sql/patch_30_31.sql | 140 - sql/patch_31_32.sql | 89 - sql/patch_32_33.sql | 4 - sql/patch_33_34.sql | 20 - sql/patch_34_35.sql | 4 - sql/patch_35_36.sql | 35 - sql/patch_36_37.sql | 65 - sql/patch_37_38.sql | 179 - sql/patch_38_39_a.sql | 16 - sql/patch_38_39_b.sql | 35 - sql/patch_38_39_c.sql | 28 - sql/patch_38_39_d.sql | 13 - sql/patch_38_39_e.sql | 14 - sql/patch_39_40_a.sql | 199 - sql/patch_39_40_b.sql | 13 - sql/patch_39_40_c.sql | 14 - sql/patch_39_40_d.sql | 12 - sql/patch_39_40_e.sql | 22 - sql/patch_39_40_f.sql | 13 - sql/patch_39_40_g.sql | 44 - sql/patch_39_40_h.sql | 12 - sql/patch_39_40_i.sql | 13 - sql/patch_39_40_j.sql | 12 - sql/patch_40_41_a.sql | 12 - sql/patch_40_41_b.sql | 11 - sql/patch_40_41_c.sql | 11 - sql/patch_40_41_d.sql | 13 - sql/patch_40_41_e.sql | 13 - sql/patch_40_41_f.sql | 17 - sql/patch_41_42_a.sql | 11 - sql/patch_41_42_b.sql | 24 - sql/patch_41_42_c.sql | 12 - sql/patch_41_42_d.sql | 13 - sql/patch_41_42_e.sql | 10 - sql/patch_41_42_f.sql | 10 - sql/patch_41_42_g.sql | 10 - sql/patch_42_43_a.sql | 13 - sql/patch_42_43_b.sql | 12 - sql/patch_42_43_c.sql | 12 - sql/patch_42_43_d.sql | 12 - sql/patch_42_43_e.sql | 13 - sql/patch_42_43_f.sql | 13 - sql/patch_43_44_a.sql | 34 - sql/patch_43_44_b.sql | 19 - sql/patch_43_44_c.sql | 12 - sql/patch_43_44_d.sql | 13 - sql/patch_43_44_e.sql | 13 - sql/patch_43_44_f.sql | 12 - sql/patch_44_45_a.sql | 13 - sql/patch_44_45_b.sql | 13 - sql/patch_44_45_c.sql | 13 - sql/patch_45_46_a.sql | 13 - sql/patch_45_46_b.sql | 23 - sql/patch_45_46_c.sql | 14 - sql/patch_45_46_d.sql | 14 - sql/patch_45_46_e.sql | 12 - sql/patch_45_46_f.sql | 18 - sql/patch_45_46_g.sql | 14 - sql/patch_46_47_a.sql | 13 - sql/patch_46_47_b.sql | 21 - sql/patch_46_47_c.sql | 14 - sql/patch_47_48_a.sql | 13 - sql/patch_48_49_a.sql | 13 - sql/patch_48_49_b.sql | 11 - sql/patch_48_49_c.sql | 25 - sql/patch_48_49_d.sql | 16 - sql/patch_48_49_e.sql | 16 - sql/patch_49_50_a.sql | 13 - sql/patch_49_50_b.sql | 13 - sql/patch_49_50_c.sql | 14 - sql/patch_49_50_d.sql | 20 - sql/patch_49_50_e.sql | 44 - sql/patch_50_51_a.sql | 13 - sql/patch_50_51_b.sql | 17 - sql/patch_50_51_c.sql | 15 - sql/patch_50_51_d.sql | 43 - sql/patch_50_51_e.sql | 15 - sql/patch_50_51_f.sql | 13 - sql/patch_50_51_g.sql | 13 - sql/patch_50_51_h.sql | 13 - sql/patch_50_51_i.sql | 19 - sql/patch_51_52_a.sql | 13 - sql/patch_51_52_b.sql | 19 - sql/patch_51_52_c.sql | 15 - sql/patch_51_52_d.sql | 13 - sql/patch_52_53_a.sql | 13 - sql/patch_52_53_b.sql | 13 - sql/patch_52_53_c.sql | 25 - sql/patch_52_53_d.sql | 13 - sql/patch_53_54_a.sql | 13 - sql/patch_53_54_b.sql | 17 - sql/patch_53_54_c.sql | 22 - sql/patch_54_55_a.sql | 13 - sql/patch_54_55_b.sql | 13 - sql/patch_54_55_c.sql | 59 - sql/patch_54_55_d.sql | 21 - sql/patch_54_55_e.sql | 14 - sql/patch_54_55_f.sql | 13 - sql/patch_54_55_g.sql | 16 - sql/patch_54_55_h.sql | 26 - sql/patch_55_56_a.sql | 13 - sql/patch_55_56_b.sql | 124 - sql/patch_55_56_c.sql | 182 - sql/patch_55_56_d.sql | 14 - sql/patch_56_57_a.sql | 13 - sql/patch_56_57_b.sql | 14 - sql/patch_56_57_c.sql | 12 - sql/patch_56_57_d.sql | 13 - sql/patch_56_57_e.sql | 28 - sql/patch_56_57_f.sql | 17 - sql/patch_57_58_a.sql | 12 - sql/patch_58_59_a.sql | 12 - sql/patch_58_59_b.sql | 17 - sql/patch_58_59_c.sql | 28 - sql/patch_58_59_d.sql | 22 - sql/patch_58_59_e.sql | 17 - sql/populate_meta_coord.pl | 68 - sql/table.sql | 1564 - sql/transfer_misc_affy.pl | 231 - sql/vega_latest_schema.sql | 147 - sql/vega_specific_tables.sql | 251 - 948 files changed, 263741 deletions(-) delete mode 100755 LICENSE delete mode 100644 docs/ensembl_changes_spec.txt delete mode 100644 docs/ensembl_das/Homo_sapiens.ini delete mode 100644 docs/ensembl_das/demo.ini delete mode 100644 docs/ensembl_das/demo.pm delete mode 100644 docs/ensembl_das/ensembl-das.pdf delete mode 100644 docs/ensembl_das/ensembl-das.sxw delete mode 100644 docs/schema_description/README delete mode 100755 docs/schema_description/process-saxon.bat delete mode 100755 docs/schema_description/process-saxon.sh delete mode 100644 docs/schema_description/schema_description.dtd delete mode 100644 docs/schema_description/schema_description.html delete mode 100644 docs/schema_description/tables.html delete mode 100644 docs/schema_description/tables.txt delete mode 100644 docs/schema_description/tables.xml delete mode 100644 docs/schema_description/xml2html.xsl delete mode 100755 docs/schema_description/xml2wiki.xsl delete mode 100755 docs/tutorial/ensembl_tutorial.pdf delete mode 100644 docs/tutorial/ensembl_tutorial.sxw delete mode 100644 docs/tutorial/ensembl_tutorial.txt delete mode 100755 misc-scripts/CopyDBoverServer.pl delete mode 100755 misc-scripts/CreateFile4CopyDBoverServer.pl delete mode 100644 misc-scripts/README.schema_patching delete mode 100755 misc-scripts/add_species_aliases.pl delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/AUTHORS delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/BUGS delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/COPYING delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/ChangeLog delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/INSTALL delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/INSTALL.configure delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/Makefile.am delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/Makefile.in delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/NEWS delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/README delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/THANKS delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/aclocal.m4 delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/configure.ac delete mode 100755 misc-scripts/alternative_splicing/AltSplicingToolkit/depcomp delete mode 100755 misc-scripts/alternative_splicing/AltSplicingToolkit/release_notes.txt delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/Constants.h delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/Main.cpp delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/Makefile.am delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/Makefile.in delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/Coordinates.cpp delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/Coordinates.h delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/ExonChunk.cpp delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/ExonChunk.h delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/Feature.cpp delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/Feature.h delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/Gene.cpp delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/Gene.h delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/GeneFeature.cpp delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/GeneFeature.h delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/RegionChunk.cpp delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/RegionChunk.h delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/SplicingEvent.cpp delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/SplicingEvent.h delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/SplicingEventContainer.cpp delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/SplicingEventContainer.h delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/SplicingEventMatrix.cpp delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/SplicingEventMatrix.h delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/SplicingGraph.cpp delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/SplicingGraph.h delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/SplicingVertex.cpp delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/SplicingVertex.h delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/Transcript.cpp delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/Transcript.h delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/TranscriptFeature.cpp delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/TranscriptFeature.h delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/gff/BioMartGffHandler.cpp delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/gff/BioMartGffHandler.h delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/gff/GffEventModel.cpp delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/gff/GffEventModel.h delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/gff/GffParser.cpp delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/gff/GffParser.h delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/gff/GffSimpleHandler.cpp delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/gff/GffSimpleHandler.h delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/gff/SplicingEventGffGenerator.cpp delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/gff/SplicingEventGffGenerator.h delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/util/Logger.cpp delete mode 100644 misc-scripts/alternative_splicing/AltSplicingToolkit/src/util/Logger.h delete mode 100755 misc-scripts/alternative_splicing/AltSplicingToolkit/src/util/StringUtil.cpp delete mode 100755 misc-scripts/alternative_splicing/AltSplicingToolkit/src/util/StringUtil.h delete mode 100644 misc-scripts/alternative_splicing/Fetch_gff.pl delete mode 100644 misc-scripts/alternative_splicing/README.txt delete mode 100644 misc-scripts/alternative_splicing/load_alt_splice_gff.pl delete mode 100644 misc-scripts/analysis_description/analysis.descriptions delete mode 100755 misc-scripts/analysis_description/apply_rules.pl delete mode 100644 misc-scripts/analysis_description/chech_web_data_column.pl delete mode 100644 misc-scripts/analysis_description/load_analysis_descriptions.pl delete mode 100644 misc-scripts/anopheles_scripts/check_bad_regions.pl delete mode 100644 misc-scripts/anopheles_scripts/check_stops.pl delete mode 100755 misc-scripts/anopheles_scripts/dump_genbank_45.pl delete mode 100644 misc-scripts/anopheles_scripts/dump_genebank.pl delete mode 100755 misc-scripts/anopheles_scripts/dump_genebank_38.pl delete mode 100644 misc-scripts/anopheles_scripts/format_bacs.pl delete mode 100644 misc-scripts/anopheles_scripts/format_blat.pl delete mode 100644 misc-scripts/anopheles_scripts/format_matepairs.pl delete mode 100644 misc-scripts/anopheles_scripts/get_est_supporting_evidences.pl delete mode 100644 misc-scripts/anopheles_scripts/get_freqs.pl delete mode 100644 misc-scripts/anopheles_scripts/get_good_matepairs.pl delete mode 100644 misc-scripts/anopheles_scripts/get_transposon_repeats.pl delete mode 100644 misc-scripts/anopheles_scripts/load_karyotype.pl delete mode 100644 misc-scripts/anopheles_scripts/location_check_for_dump.pl delete mode 100644 misc-scripts/anopheles_scripts/produce_snap_training_set.pl delete mode 100755 misc-scripts/anopheles_scripts/protein_annotation_from_embl.pl delete mode 100755 misc-scripts/anopheles_scripts/remove_proteins_from_db.pl delete mode 100755 misc-scripts/anopheles_scripts/split_fasta_in_subslices_anopheles.pl delete mode 100644 misc-scripts/assembly/AssemblyMapper/BlastzAligner.pm delete mode 100644 misc-scripts/assembly/EXAMPLE.use_mapping.pl delete mode 100644 misc-scripts/assembly/README delete mode 100755 misc-scripts/assembly/align_by_clone_identity.pl delete mode 100755 misc-scripts/assembly/align_nonident_regions.pl delete mode 100755 misc-scripts/assembly/align_nonident_regions_wrapper.pl delete mode 100644 misc-scripts/assembly/blastz_matrix.txt delete mode 100755 misc-scripts/assembly/check_mapping.pl delete mode 100644 misc-scripts/assembly/cleanup_tmp_tables.sql delete mode 100755 misc-scripts/assembly/compare_assemblies.pl delete mode 100755 misc-scripts/assembly/find_overlaps.pl delete mode 100755 misc-scripts/assembly/fix_overlaps.pl delete mode 100755 misc-scripts/assembly/load_alternative_assembly.pl delete mode 100755 misc-scripts/assembly/mapping_stats.pl delete mode 100644 misc-scripts/assembly_patches/README.TXT delete mode 100644 misc-scripts/assembly_patches/assembly_patch_load.pl delete mode 100644 misc-scripts/attribute_types/attrib_type.txt delete mode 100644 misc-scripts/attribute_types/upload_attributes.pl delete mode 100644 misc-scripts/canonical_transcripts/set_canonical_transcripts.pl delete mode 100644 misc-scripts/chain/axt2assembly.pl delete mode 100644 misc-scripts/chain/chain2assembly.pl delete mode 100644 misc-scripts/chimp/Deletion.pm delete mode 100644 misc-scripts/chimp/Gene.pm delete mode 100644 misc-scripts/chimp/Insertion.pm delete mode 100644 misc-scripts/chimp/InterimExon.pm delete mode 100644 misc-scripts/chimp/InterimTranscript.pm delete mode 100644 misc-scripts/chimp/Length.pm delete mode 100644 misc-scripts/chimp/README delete mode 100644 misc-scripts/chimp/StatLogger.pm delete mode 100644 misc-scripts/chimp/StatMsg.pm delete mode 100644 misc-scripts/chimp/Transcript.pm delete mode 100644 misc-scripts/chimp/Utils.pm delete mode 100644 misc-scripts/chimp/chimp_chr_ctg_assembly.pl delete mode 100644 misc-scripts/chimp/get_stats.pl delete mode 100644 misc-scripts/chimp/human2chimp.pl delete mode 100644 misc-scripts/chimp/lift_assembly.pl delete mode 100755 misc-scripts/chimp/run_hum2chimp.sh delete mode 100755 misc-scripts/constitutive_exon.pl delete mode 100644 misc-scripts/db-space.pl delete mode 100755 misc-scripts/db/cleanup_tmp_tables.pl delete mode 100644 misc-scripts/db/multidb_sql.pl delete mode 100755 misc-scripts/density_feature/DensityCalc.sh delete mode 100644 misc-scripts/density_feature/densities_multi_db.pl delete mode 100644 misc-scripts/density_feature/density_feature_fetch.pl delete mode 100644 misc-scripts/density_feature/gene_density_calc.pl delete mode 100755 misc-scripts/density_feature/glovar_snp_density.pl delete mode 100644 misc-scripts/density_feature/logicname_density_calc.pl delete mode 100644 misc-scripts/density_feature/percent_gc_calc.pl delete mode 100644 misc-scripts/density_feature/repeat_coverage_calc.pl delete mode 100644 misc-scripts/density_feature/seq_region_stats.pl delete mode 100644 misc-scripts/density_feature/variation_density.pl delete mode 100755 misc-scripts/ebi_search_dump/count_entries.sh delete mode 100644 misc-scripts/ebi_search_dump/dump_44.sh delete mode 100644 misc-scripts/ebi_search_dump/dump_ebi.pl delete mode 100755 misc-scripts/ebi_search_dump/ebi_search_dump.pl delete mode 100644 misc-scripts/external_db/README delete mode 100644 misc-scripts/external_db/convert_external_dbs.pl delete mode 100644 misc-scripts/external_db/external_dbs.txt delete mode 100644 misc-scripts/external_db/load_additional_human_affy_xrefs.pl delete mode 100644 misc-scripts/external_db/load_additional_human_gkb_xrefs.pl delete mode 100644 misc-scripts/external_db/update_external_dbs.pl delete mode 100644 misc-scripts/frameshift_transcript_attribs.pl delete mode 100644 misc-scripts/gene_gc.pl delete mode 100644 misc-scripts/generate_stable_ids.pl delete mode 100644 misc-scripts/golden_path/check_sum.pl delete mode 100644 misc-scripts/golden_path/fin_agp2ensembl delete mode 100644 misc-scripts/golden_path/get_contig.pl delete mode 100755 misc-scripts/golden_path/gp_contig_mismatch.pl delete mode 100755 misc-scripts/golden_path/gp_incons_test.pl delete mode 100755 misc-scripts/golden_path/gp_parse.pl delete mode 100755 misc-scripts/golden_path/makeunique.pl delete mode 100644 misc-scripts/golden_path/ncbi2ensembl delete mode 100755 misc-scripts/golden_path/nt_crossmatch.pl delete mode 100644 misc-scripts/golden_path/pfetch2ensembl delete mode 100644 misc-scripts/golden_path/rat_agp2ensembl delete mode 100755 misc-scripts/meta_coord/update_meta_coord.pl delete mode 100644 misc-scripts/meta_levels.pl delete mode 100644 misc-scripts/misc_feature/misc_set.descriptions delete mode 100644 misc-scripts/misc_feature/update_misc_set_descripitons.pl delete mode 100644 misc-scripts/mouse_knockouts/add_ikmc_as_simple_features.pl delete mode 100644 misc-scripts/ontology/README delete mode 100755 misc-scripts/ontology/scripts/add_subset_maps.pl delete mode 100755 misc-scripts/ontology/scripts/compute_closure.pl delete mode 100755 misc-scripts/ontology/scripts/demo1.pl delete mode 100755 misc-scripts/ontology/scripts/demo2.pl delete mode 100755 misc-scripts/ontology/scripts/load_OBO_file.pl delete mode 100644 misc-scripts/ontology/sql/table.sql delete mode 100644 misc-scripts/overlapping_regions.pl delete mode 100644 misc-scripts/protein_match/process_pmach.pl delete mode 100644 misc-scripts/qtl/extract_rat_map_ids.pl delete mode 100644 misc-scripts/qtl/qtl_feature_calculation.pl delete mode 100644 misc-scripts/qtl/rat_qtl_import.pl delete mode 100644 misc-scripts/qtl/run_rat_import.pl delete mode 100644 misc-scripts/regulatory_regions/RegulatoryFeatureParser/BaseParser.pm delete mode 100644 misc-scripts/regulatory_regions/RegulatoryFeatureParser/cisred.pm delete mode 100644 misc-scripts/regulatory_regions/RegulatoryFeatureParser/enhancer.pm delete mode 100644 misc-scripts/regulatory_regions/RegulatoryFeatureParser/miranda.pm delete mode 100644 misc-scripts/regulatory_regions/gene_coverage.pl delete mode 100755 misc-scripts/regulatory_regions/load_regulatory.pl delete mode 100644 misc-scripts/regulatory_regions/parse_cisred.pl delete mode 100644 misc-scripts/repeats/repeat-libraries.pl delete mode 100644 misc-scripts/repeats/repeat-types.pl delete mode 100644 misc-scripts/repeats/repeats.txt delete mode 100644 misc-scripts/repeats/shrink_trfs.pl delete mode 100644 misc-scripts/repeats/vega_repeat_libraries.pl delete mode 100755 misc-scripts/schema_patch.pl delete mode 100644 misc-scripts/search_dbs.pl delete mode 100644 misc-scripts/surgery/SchemaConverter.pm delete mode 100644 misc-scripts/surgery/SeqStoreConverter/AnophelesGambiae.pm delete mode 100644 misc-scripts/surgery/SeqStoreConverter/ApisMellifera.pm delete mode 100644 misc-scripts/surgery/SeqStoreConverter/BasicConverter.pm delete mode 100644 misc-scripts/surgery/SeqStoreConverter/CaenorhabditisBriggsae.pm delete mode 100644 misc-scripts/surgery/SeqStoreConverter/CaenorhabditisElegans.pm delete mode 100644 misc-scripts/surgery/SeqStoreConverter/CanisFamiliaris.pm delete mode 100644 misc-scripts/surgery/SeqStoreConverter/DanioRerio.pm delete mode 100644 misc-scripts/surgery/SeqStoreConverter/DrosophilaMelanogaster.pm delete mode 100644 misc-scripts/surgery/SeqStoreConverter/FuguRubripes.pm delete mode 100644 misc-scripts/surgery/SeqStoreConverter/GallusGallus.pm delete mode 100644 misc-scripts/surgery/SeqStoreConverter/HomoSapiens.pm delete mode 100644 misc-scripts/surgery/SeqStoreConverter/MusMusculus.pm delete mode 100644 misc-scripts/surgery/SeqStoreConverter/PanTroglodytes.pm delete mode 100644 misc-scripts/surgery/SeqStoreConverter/RattusNorvegicus.pm delete mode 100644 misc-scripts/surgery/SeqStoreConverter/vega/CanisFamiliaris.pm delete mode 100644 misc-scripts/surgery/SeqStoreConverter/vega/DanioRerio.pm delete mode 100644 misc-scripts/surgery/SeqStoreConverter/vega/HomoSapiens.pm delete mode 100644 misc-scripts/surgery/SeqStoreConverter/vega/MusMusculus.pm delete mode 100644 misc-scripts/surgery/SeqStoreConverter/vega/VBasicConverter.pm delete mode 100644 misc-scripts/surgery/convert_seqstore.pl delete mode 100644 misc-scripts/surgery/converter.input delete mode 100644 misc-scripts/surgery/create_fixsql.pl delete mode 100644 misc-scripts/surgery/dump_seq_in_region delete mode 100644 misc-scripts/surgery/fuller_test_genome_9_chr20.pl delete mode 100644 misc-scripts/surgery/push_align_features.pl delete mode 100644 misc-scripts/surgery/set_nonredundant_attribs.pl delete mode 100644 misc-scripts/surgery/shortintrons2frameshifts.pl delete mode 100644 misc-scripts/surgery/table_column_munge delete mode 100644 misc-scripts/transfer_karyotype.pl delete mode 100644 misc-scripts/translation_attribs.pl delete mode 100644 misc-scripts/translation_attribs_wrapper.pl delete mode 100644 misc-scripts/unmapped_reason/unmapped_reason.txt delete mode 100644 misc-scripts/unmapped_reason/update_unmapped_reasons.pl delete mode 100644 misc-scripts/update_mapping_set.pl delete mode 100755 misc-scripts/utilities/dna_compress.pl delete mode 100644 misc-scripts/utilities/parse_embl.pl delete mode 100755 misc-scripts/utilities/show_method_status.pl delete mode 100644 misc-scripts/utilities/split_fasta.pl delete mode 100644 misc-scripts/variation/nonsense_transcript_attribs.pl delete mode 100644 misc-scripts/web_stats.sh delete mode 100644 misc-scripts/xref_mapping/FAQ.txt delete mode 100644 misc-scripts/xref_mapping/XrefMapper/BasicMapper.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/CoordinateMapper.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/CoreInfo.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/DisplayXrefs.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/Interpro.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/LoadMapper.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/Methods/ExonerateBasic.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/Methods/ExonerateBest1.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/Methods/ExonerateGappedBest1.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/Methods/ExonerateGappedBest1_agam.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/Methods/ExonerateGappedBest1_culex.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/Methods/ExonerateGappedBest_100_perc_id.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/Methods/ExonerateGappedBest_90_perc_id.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/Methods/ExonerateUngappedBest1.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/Methods/LocalExonerateGappedBest1.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/Methods/PBSExonerateGappedBest1.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/ProcessMappings.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/ProcessPaired.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/ProcessPrioritys.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/SubmitMapper.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/TestMappings.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/VBCoordinateMapper.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/XrefLoader.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/aedes_aegypti.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/anopheles_gambiae.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/caenorhabditis_elegans.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/canis_familiaris.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/ciona_intestinalis.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/culex_pipiens.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/danio_rerio.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/db.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/drosophila_ananassae.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/drosophila_erecta.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/drosophila_grimshawi.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/drosophila_melanogaster.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/drosophila_mojavensis.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/drosophila_persimilis.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/drosophila_pseudoobscura.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/drosophila_sechellia.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/drosophila_simulans.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/drosophila_virilis.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/drosophila_willistoni.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/drosophila_yakuba.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/fugu_rubripes.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/homo_sapiens.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/ixodes_scapularis.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/macaca_mulatta.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/monodelphis_domestica.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/mus_musculus.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/ornithorhynchus_anatinus.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/rattus_norvegicus.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/saccharomyces_cerevisiae.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/tetraodon_nigroviridis.pm delete mode 100644 misc-scripts/xref_mapping/XrefMapper/xenopus_tropicalis.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/AedesCAPParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/AedesGenBankParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/AgilentParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/AnophelesSymbolParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/BaseParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/CCDSParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/CeleraParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/CeleraProteinParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/CeleraTranscriptParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/CodelinkParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/CoordinateParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/DBASSParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/DatabaseParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/DirectParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/EntrezGeneParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/FantomParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/FastaParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/FlybaseParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/Flybase_dmel_GFFv3_Parser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/GOParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/GOSlimParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/HGNCParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/HGNC_CCDSParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/HGNC_ENSTParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/HPAParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/IPIParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/IlluminaParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/IlluminaWGParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/InterproGoParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/InterproParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/IxodesCAPParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/JGI_Parser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/JGI_ProteinParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/MGDParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/MGI_CCDS_Parser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/MGI_Desc_Parser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/MGI_Vega_Parser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/MIMParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/Mim2GeneParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/OTTTParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/RGDParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/RefSeqGPFFParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/RefSeqParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/RefSeq_CCDSParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/SGDParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/SegmentParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/UCSCParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/UniGeneParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/UniProtDirectParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/UniProtParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/UniProtParser_descriptions_only.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/UniProtVarSplicParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/VBCommunitySymbolParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/VbDirectParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/VbGFF3Parser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/WilsonAffyParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/WormPepParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/WormbaseDatabaseStableIDParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/XenopusJamboreeParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/ZFINParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/curated_transcriptParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/ncRNAParser.pm delete mode 100644 misc-scripts/xref_mapping/XrefParser/ncRNA_DBParser.pm delete mode 100644 misc-scripts/xref_mapping/compare_mapping.pl delete mode 100644 misc-scripts/xref_mapping/compare_xrefs_by_source.pl delete mode 100644 misc-scripts/xref_mapping/convert_xrefs_to_all_translations.pl delete mode 100644 misc-scripts/xref_mapping/core_vega_link_check.pl delete mode 100755 misc-scripts/xref_mapping/ensembl_xrefs.pdf delete mode 100755 misc-scripts/xref_mapping/ensembl_xrefs.sxw delete mode 100644 misc-scripts/xref_mapping/gen_perc_file.pl delete mode 100644 misc-scripts/xref_mapping/generate_csv_graph_file.pl delete mode 100644 misc-scripts/xref_mapping/parsing_information.txt delete mode 100755 misc-scripts/xref_mapping/sql/table.sql delete mode 100644 misc-scripts/xref_mapping/test_mapping_files.pl delete mode 100644 misc-scripts/xref_mapping/test_xref_mapper.pl delete mode 100644 misc-scripts/xref_mapping/xref_config.ini delete mode 100755 misc-scripts/xref_mapping/xref_config2sql.pl delete mode 100644 misc-scripts/xref_mapping/xref_mapper.input delete mode 100644 misc-scripts/xref_mapping/xref_mapper.pl delete mode 100644 misc-scripts/xref_mapping/xref_parser.pl delete mode 100644 misc-scripts/xref_mapping/xref_tracker.pl delete mode 100644 misc-scripts/xref_mapping/xrefs_detailed_docs.txt delete mode 100644 misc-scripts/xref_mapping/xrefs_overview.txt delete mode 100644 misc-scripts/xref_projection/README delete mode 100644 misc-scripts/xref_projection/project_display_xrefs.pl delete mode 100644 misc-scripts/xref_projection/projection_db.sql delete mode 100644 misc-scripts/xref_projection/release_48.ini delete mode 100644 misc-scripts/xref_projection/submit_projections.pl delete mode 100644 modules/Bio/EnsEMBL/AlignStrainSlice.pm delete mode 100755 modules/Bio/EnsEMBL/Analysis.pm delete mode 100755 modules/Bio/EnsEMBL/Analysis/PairAlign.pm delete mode 100755 modules/Bio/EnsEMBL/Analysis/Programs.pm delete mode 100644 modules/Bio/EnsEMBL/ArchiveStableId.pm delete mode 100644 modules/Bio/EnsEMBL/AssemblyExceptionFeature.pm delete mode 100644 modules/Bio/EnsEMBL/AssemblyMapper.pm delete mode 100644 modules/Bio/EnsEMBL/Attribute.pm delete mode 100644 modules/Bio/EnsEMBL/BaseAlignFeature.pm delete mode 100644 modules/Bio/EnsEMBL/ChainedAssemblyMapper.pm delete mode 100644 modules/Bio/EnsEMBL/Collection.pm delete mode 100644 modules/Bio/EnsEMBL/Collection/Exon.pm delete mode 100644 modules/Bio/EnsEMBL/Collection/Gene.pm delete mode 100644 modules/Bio/EnsEMBL/Collection/RepeatFeature.pm delete mode 100644 modules/Bio/EnsEMBL/Collection/Transcript.pm delete mode 100644 modules/Bio/EnsEMBL/CoordSystem.pm delete mode 100755 modules/Bio/EnsEMBL/DB/ExternalFeatureFactoryI.pm delete mode 100644 modules/Bio/EnsEMBL/DBEntry.pm delete mode 100755 modules/Bio/EnsEMBL/DBLoader.pm delete mode 100755 modules/Bio/EnsEMBL/DBSQL/AnalysisAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/ArchiveStableIdAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/AssemblyExceptionFeatureAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/AssemblyMapperAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/AssemblySliceAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/AttributeAdaptor.pm delete mode 100755 modules/Bio/EnsEMBL/DBSQL/BaseAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/BaseAlignFeatureAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/BaseFeatureAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/BaseMetaContainer.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/CompressedSequenceAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/CoordSystemAdaptor.pm delete mode 100755 modules/Bio/EnsEMBL/DBSQL/DBAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/DBConnection.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/DBEntryAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/DensityFeatureAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/DensityTypeAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/DnaAlignFeatureAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/ExonAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/GOTermAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/GeneAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/KaryotypeBandAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/MergedAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/MetaContainer.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/MetaCoordContainer.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/MiscFeatureAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/MiscSetAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/OntologyDBAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/OntologyTermAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/PredictionExonAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/PredictionTranscriptAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/ProteinAlignFeatureAdaptor.pm delete mode 100755 modules/Bio/EnsEMBL/DBSQL/ProteinFeatureAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/ProxySNPAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/RepeatConsensusAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/RepeatFeatureAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/SOTermAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/SequenceAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/SimpleFeatureAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/SliceAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/SplicingEventAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/SplicingEventFeatureAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/SplicingTranscriptPairAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/StatementHandle.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/StrainSliceAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/SupportingFeatureAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/TranscriptAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/TranscriptSupportingFeatureAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/TranslationAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/UnconventionalTranscriptAssociationAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DBSQL/UnmappedObjectAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/DensityFeature.pm delete mode 100644 modules/Bio/EnsEMBL/DensityFeatureSet.pm delete mode 100644 modules/Bio/EnsEMBL/DensityPlot/BinValue.pm delete mode 100644 modules/Bio/EnsEMBL/DensityPlot/BinValueSet.pm delete mode 100644 modules/Bio/EnsEMBL/DensityType.pm delete mode 100644 modules/Bio/EnsEMBL/DnaDnaAlignFeature.pm delete mode 100644 modules/Bio/EnsEMBL/DnaPepAlignFeature.pm delete mode 100755 modules/Bio/EnsEMBL/Exon.pm delete mode 100644 modules/Bio/EnsEMBL/External/BlastAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/External/ExternalFeatureAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/Feature.pm delete mode 100755 modules/Bio/EnsEMBL/FeaturePair.pm delete mode 100755 modules/Bio/EnsEMBL/Gene.pm delete mode 100644 modules/Bio/EnsEMBL/GoXref.pm delete mode 100644 modules/Bio/EnsEMBL/IdentityXref.pm delete mode 100644 modules/Bio/EnsEMBL/IndividualSlice.pm delete mode 100644 modules/Bio/EnsEMBL/IndividualSliceFactory.pm delete mode 100644 modules/Bio/EnsEMBL/Intron.pm delete mode 100644 modules/Bio/EnsEMBL/KaryotypeBand.pm delete mode 100644 modules/Bio/EnsEMBL/LRGSlice.pm delete mode 100755 modules/Bio/EnsEMBL/Lite/DBAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/Lite/SNPAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/Map/DBSQL/DitagAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/Map/DBSQL/DitagFeatureAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/Map/DBSQL/MarkerAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/Map/DBSQL/MarkerFeatureAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/Map/DBSQL/QtlAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/Map/DBSQL/QtlFeatureAdaptor.pm delete mode 100644 modules/Bio/EnsEMBL/Map/Ditag.pm delete mode 100644 modules/Bio/EnsEMBL/Map/DitagFeature.pm delete mode 100644 modules/Bio/EnsEMBL/Map/MapLocation.pm delete mode 100644 modules/Bio/EnsEMBL/Map/Marker.pm delete mode 100644 modules/Bio/EnsEMBL/Map/MarkerFeature.pm delete mode 100644 modules/Bio/EnsEMBL/Map/MarkerSynonym.pm delete mode 100644 modules/Bio/EnsEMBL/Map/Qtl.pm delete mode 100644 modules/Bio/EnsEMBL/Map/QtlFeature.pm delete mode 100644 modules/Bio/EnsEMBL/MappedSlice.pm delete mode 100644 modules/Bio/EnsEMBL/MappedSliceContainer.pm delete mode 100644 modules/Bio/EnsEMBL/Mapper.pm delete mode 100644 modules/Bio/EnsEMBL/Mapper/Coordinate.pm delete mode 100644 modules/Bio/EnsEMBL/Mapper/Gap.pm delete mode 100644 modules/Bio/EnsEMBL/Mapper/IndelCoordinate.pm delete mode 100644 modules/Bio/EnsEMBL/Mapper/IndelPair.pm delete mode 100644 modules/Bio/EnsEMBL/Mapper/Pair.pm delete mode 100644 modules/Bio/EnsEMBL/Mapper/RangeRegistry.pm delete mode 100644 modules/Bio/EnsEMBL/Mapper/Unit.pm delete mode 100644 modules/Bio/EnsEMBL/MiscFeature.pm delete mode 100644 modules/Bio/EnsEMBL/MiscSet.pm delete mode 100644 modules/Bio/EnsEMBL/OntologyTerm.pm delete mode 100644 modules/Bio/EnsEMBL/PepDnaAlignFeature.pm delete mode 100644 modules/Bio/EnsEMBL/PredictionExon.pm delete mode 100644 modules/Bio/EnsEMBL/PredictionTranscript.pm delete mode 100644 modules/Bio/EnsEMBL/ProjectionSegment.pm delete mode 100755 modules/Bio/EnsEMBL/ProteinFeature.pm delete mode 100644 modules/Bio/EnsEMBL/Registry.pm delete mode 100644 modules/Bio/EnsEMBL/RepeatConsensus.pm delete mode 100644 modules/Bio/EnsEMBL/RepeatFeature.pm delete mode 100644 modules/Bio/EnsEMBL/RepeatMaskedSlice.pm delete mode 100644 modules/Bio/EnsEMBL/Root.pm delete mode 100644 modules/Bio/EnsEMBL/SNP.pm delete mode 100644 modules/Bio/EnsEMBL/SeqEdit.pm delete mode 100755 modules/Bio/EnsEMBL/SeqFeature.pm delete mode 100755 modules/Bio/EnsEMBL/SeqFeatureI.pm delete mode 100644 modules/Bio/EnsEMBL/SimpleFeature.pm delete mode 100644 modules/Bio/EnsEMBL/Slice.pm delete mode 100644 modules/Bio/EnsEMBL/SplicingEvent.pm delete mode 100644 modules/Bio/EnsEMBL/SplicingEventFeature.pm delete mode 100644 modules/Bio/EnsEMBL/SplicingTranscriptPair.pm delete mode 100644 modules/Bio/EnsEMBL/StableIdEvent.pm delete mode 100644 modules/Bio/EnsEMBL/StableIdHistoryTree.pm delete mode 100644 modules/Bio/EnsEMBL/Storable.pm delete mode 100644 modules/Bio/EnsEMBL/StrainSlice.pm delete mode 100644 modules/Bio/EnsEMBL/TopLevelAssemblyMapper.pm delete mode 100755 modules/Bio/EnsEMBL/Transcript.pm delete mode 100755 modules/Bio/EnsEMBL/TranscriptFactory.pm delete mode 100644 modules/Bio/EnsEMBL/TranscriptMapper.pm delete mode 100755 modules/Bio/EnsEMBL/Translation.pm delete mode 100644 modules/Bio/EnsEMBL/UnconventionalTranscriptAssociation.pm delete mode 100644 modules/Bio/EnsEMBL/UnmappedObject.pm delete mode 100644 modules/Bio/EnsEMBL/Upstream.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/Argument.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/AssemblyProjector.pm delete mode 100755 modules/Bio/EnsEMBL/Utils/BitString.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/Cache.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/CigarString.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/Collector.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/ConfParser.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/ConfigRegistry.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/ConversionSupport.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/Converter.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/Converter/bio_ens.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/Converter/bio_ens_analysis.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/Converter/bio_ens_exon.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/Converter/bio_ens_featurePair.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/Converter/bio_ens_gene.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/Converter/bio_ens_hit.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/Converter/bio_ens_hsp.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/Converter/bio_ens_predictionExon.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/Converter/bio_ens_predictionGene.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/Converter/bio_ens_seqFeature.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/Converter/bio_ens_transcript.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/Converter/ens_bio.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/Converter/ens_bio_featurePair.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/Converter/ens_bio_seqFeature.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/EasyArgv.pm delete mode 100755 modules/Bio/EnsEMBL/Utils/Eprof.pm delete mode 100755 modules/Bio/EnsEMBL/Utils/EprofStack.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/Exception.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/Logger.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/PolyA.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/Scalar.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/SchemaConversion.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/ScriptUtils.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/SeqDumper.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/SeqRegionCache.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/Sequence.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/Slice.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/SqlHelper.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/TranscriptAlleles.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/TranscriptSNPs.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/User_defined_load.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/VegaCuration/Gene.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/VegaCuration/Transcript.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/VegaCuration/Translation.pm delete mode 100644 modules/Bio/EnsEMBL/Utils/ensembl_init.example delete mode 100644 modules/t/MultiTestDB.conf.example delete mode 100755 modules/t/MultiTestDB.t delete mode 100755 modules/t/README delete mode 100644 modules/t/TestUtils.pm delete mode 100644 modules/t/analysis.t delete mode 100644 modules/t/archiveStableId.t delete mode 100644 modules/t/argument.t delete mode 100644 modules/t/assemblyException.t delete mode 100644 modules/t/assemblyExceptionFeature.t delete mode 100644 modules/t/assemblyMapper.t delete mode 100644 modules/t/attribute.t delete mode 100644 modules/t/attributeAdaptor.t delete mode 100644 modules/t/canonicalDBAdaptor.t delete mode 100644 modules/t/chainedAssemblyMapper.t delete mode 100644 modules/t/compressedSequenceAdaptor.t delete mode 100644 modules/t/coordSystem.t delete mode 100644 modules/t/coordSystemAdaptor.t delete mode 100644 modules/t/dbConnection.t delete mode 100644 modules/t/dbEntries.t delete mode 100644 modules/t/densityFeature.t delete mode 100644 modules/t/densityFeatureAdaptor.t delete mode 100644 modules/t/densityType.t delete mode 100644 modules/t/densityTypeAdaptor.t delete mode 100644 modules/t/ditag.t delete mode 100644 modules/t/ditagAdaptor.t delete mode 100644 modules/t/ditagFeature.t delete mode 100644 modules/t/ditagFeatureAdaptor.t delete mode 100644 modules/t/dnaAlignFeatureAdaptor.t delete mode 100644 modules/t/dnaDnaAlignFeature.t delete mode 100644 modules/t/dnaPepAlignFeature.t delete mode 100644 modules/t/easyargv.t delete mode 100644 modules/t/exception.t delete mode 100644 modules/t/exon.t delete mode 100644 modules/t/externalFeatureAdaptor.t delete mode 100644 modules/t/feature.t delete mode 100644 modules/t/featurePair.t delete mode 100644 modules/t/gene.t delete mode 100644 modules/t/geneview.t delete mode 100644 modules/t/info_testdb.pl delete mode 100644 modules/t/intron.t delete mode 100644 modules/t/karyotypeBand.t delete mode 100644 modules/t/karyotypeBandAdaptor.t delete mode 100644 modules/t/mapLocation.t delete mode 100644 modules/t/mapper.t delete mode 100644 modules/t/marker.t delete mode 100644 modules/t/markerAdaptor.t delete mode 100644 modules/t/markerFeature.t delete mode 100644 modules/t/markerFeatureAdaptor.t delete mode 100644 modules/t/markerSynonym.t delete mode 100644 modules/t/metaContainer.t delete mode 100644 modules/t/metaCoordContainer.t delete mode 100644 modules/t/miscFeature.t delete mode 100644 modules/t/miscFeatureAdaptor.t delete mode 100644 modules/t/miscSet.t delete mode 100644 modules/t/miscSetAdaptor.t delete mode 100644 modules/t/predictionTranscript.t delete mode 100644 modules/t/proteinAlignFeatureAdaptor.t delete mode 100644 modules/t/proteinFeature.t delete mode 100644 modules/t/proteinFeatureAdaptor.t delete mode 100644 modules/t/qtl.t delete mode 100644 modules/t/rangeRegistry.t delete mode 100644 modules/t/repeatConsensus.t delete mode 100644 modules/t/repeatConsensusAdaptor.t delete mode 100644 modules/t/repeatFeature.t delete mode 100644 modules/t/repeatFeatureAdaptor.t delete mode 100644 modules/t/repeatMaskedSlice.t delete mode 100644 modules/t/seqDumper.t delete mode 100644 modules/t/seqEdit.t delete mode 100644 modules/t/sequenceAdaptor.t delete mode 100644 modules/t/simpleFeature.t delete mode 100644 modules/t/slice.t delete mode 100644 modules/t/sliceAdaptor.t delete mode 100644 modules/t/sqlHelper.t delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/alt_allele.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/alt_allele.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/analysis.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/analysis.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/analysis_description.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/analysis_description.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/assembly.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/assembly.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/assembly_exception.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/assembly_exception.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/attrib_type.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/attrib_type.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/coord_system.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/coord_system.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/density_feature.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/density_feature.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/density_type.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/density_type.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/ditag.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/ditag.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/ditag_feature.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/ditag_feature.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/dna.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/dna.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/dna_align_feature.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/dna_align_feature.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/dnac.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/dnac.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/exon.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/exon.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/exon_stable_id.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/exon_stable_id.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/exon_transcript.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/exon_transcript.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/external_db.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/external_db.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/external_synonym.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/external_synonym.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/gene.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/gene.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/gene_archive.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/gene_archive.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/gene_attrib.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/gene_attrib.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/gene_stable_id.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/gene_stable_id.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/go_xref.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/go_xref.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/identity_xref.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/identity_xref.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/interpro.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/interpro.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/karyotype.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/karyotype.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/map.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/map.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/mapping_session.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/mapping_session.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/mapping_set.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/mapping_set.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/marker.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/marker.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/marker_feature.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/marker_feature.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/marker_map_location.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/marker_map_location.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/marker_synonym.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/marker_synonym.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/meta.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/meta.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/meta_coord.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/meta_coord.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/misc_attrib.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/misc_attrib.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/misc_feature.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/misc_feature.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/misc_feature_misc_set.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/misc_feature_misc_set.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/misc_set.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/misc_set.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/object_xref.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/object_xref.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/oligo_array.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/oligo_array.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/oligo_feature.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/oligo_feature.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/oligo_probe.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/oligo_probe.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/peptide_archive.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/peptide_archive.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/prediction_exon.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/prediction_exon.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/prediction_transcript.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/prediction_transcript.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/protein_align_feature.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/protein_align_feature.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/protein_feature.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/protein_feature.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/qtl.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/qtl.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/qtl_feature.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/qtl_feature.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/qtl_synonym.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/qtl_synonym.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/repeat_consensus.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/repeat_consensus.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/repeat_feature.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/repeat_feature.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/seq_region.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/seq_region.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/seq_region_attrib.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/seq_region_attrib.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/seq_region_mapping.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/seq_region_mapping.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/simple_feature.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/simple_feature.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/stable_id_event.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/stable_id_event.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/supporting_feature.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/supporting_feature.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/transcript.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/transcript.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/transcript_attrib.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/transcript_attrib.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/transcript_stable_id.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/transcript_stable_id.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/transcript_supporting_feature.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/transcript_supporting_feature.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/translation.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/translation.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/translation_attrib.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/translation_attrib.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/translation_stable_id.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/translation_stable_id.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/unconventional_transcript_association.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/unconventional_transcript_association.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/unmapped_object.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/unmapped_object.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/unmapped_reason.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/unmapped_reason.txt delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/xref.sql delete mode 100644 modules/t/test-genome-DBs/homo_sapiens/core/xref.txt delete mode 100644 modules/t/topLevelAssemblyMapper.t delete mode 100644 modules/t/transcript.t delete mode 100644 modules/t/translation.t delete mode 100644 modules/t/unconventionalTranscriptAssociation.t delete mode 100644 modules/t/unconventionalTranscriptAssociationAdaptor.t delete mode 100644 modules/t/unmappedObject.t delete mode 100644 modules/t/unmappedObjectAdaptor.t delete mode 100644 modules/t/utilsScalar.t delete mode 100755 sql/README delete mode 100644 sql/foreign_keys.sql delete mode 100644 sql/patch_21_22.sql delete mode 100644 sql/patch_23_24.sql delete mode 100644 sql/patch_24_25.sql delete mode 100644 sql/patch_25_26.sql delete mode 100644 sql/patch_26_27.sql delete mode 100644 sql/patch_27_28.sql delete mode 100644 sql/patch_28_29.sql delete mode 100644 sql/patch_29_30.sql delete mode 100644 sql/patch_30_31.sql delete mode 100644 sql/patch_31_32.sql delete mode 100644 sql/patch_32_33.sql delete mode 100644 sql/patch_33_34.sql delete mode 100644 sql/patch_34_35.sql delete mode 100644 sql/patch_35_36.sql delete mode 100644 sql/patch_36_37.sql delete mode 100644 sql/patch_37_38.sql delete mode 100644 sql/patch_38_39_a.sql delete mode 100644 sql/patch_38_39_b.sql delete mode 100644 sql/patch_38_39_c.sql delete mode 100644 sql/patch_38_39_d.sql delete mode 100644 sql/patch_38_39_e.sql delete mode 100644 sql/patch_39_40_a.sql delete mode 100644 sql/patch_39_40_b.sql delete mode 100644 sql/patch_39_40_c.sql delete mode 100644 sql/patch_39_40_d.sql delete mode 100644 sql/patch_39_40_e.sql delete mode 100644 sql/patch_39_40_f.sql delete mode 100644 sql/patch_39_40_g.sql delete mode 100644 sql/patch_39_40_h.sql delete mode 100644 sql/patch_39_40_i.sql delete mode 100644 sql/patch_39_40_j.sql delete mode 100644 sql/patch_40_41_a.sql delete mode 100644 sql/patch_40_41_b.sql delete mode 100644 sql/patch_40_41_c.sql delete mode 100644 sql/patch_40_41_d.sql delete mode 100644 sql/patch_40_41_e.sql delete mode 100644 sql/patch_40_41_f.sql delete mode 100644 sql/patch_41_42_a.sql delete mode 100644 sql/patch_41_42_b.sql delete mode 100644 sql/patch_41_42_c.sql delete mode 100644 sql/patch_41_42_d.sql delete mode 100644 sql/patch_41_42_e.sql delete mode 100644 sql/patch_41_42_f.sql delete mode 100644 sql/patch_41_42_g.sql delete mode 100644 sql/patch_42_43_a.sql delete mode 100644 sql/patch_42_43_b.sql delete mode 100644 sql/patch_42_43_c.sql delete mode 100644 sql/patch_42_43_d.sql delete mode 100644 sql/patch_42_43_e.sql delete mode 100644 sql/patch_42_43_f.sql delete mode 100644 sql/patch_43_44_a.sql delete mode 100644 sql/patch_43_44_b.sql delete mode 100644 sql/patch_43_44_c.sql delete mode 100644 sql/patch_43_44_d.sql delete mode 100644 sql/patch_43_44_e.sql delete mode 100644 sql/patch_43_44_f.sql delete mode 100644 sql/patch_44_45_a.sql delete mode 100644 sql/patch_44_45_b.sql delete mode 100644 sql/patch_44_45_c.sql delete mode 100644 sql/patch_45_46_a.sql delete mode 100644 sql/patch_45_46_b.sql delete mode 100644 sql/patch_45_46_c.sql delete mode 100644 sql/patch_45_46_d.sql delete mode 100644 sql/patch_45_46_e.sql delete mode 100644 sql/patch_45_46_f.sql delete mode 100644 sql/patch_45_46_g.sql delete mode 100644 sql/patch_46_47_a.sql delete mode 100644 sql/patch_46_47_b.sql delete mode 100644 sql/patch_46_47_c.sql delete mode 100644 sql/patch_47_48_a.sql delete mode 100644 sql/patch_48_49_a.sql delete mode 100644 sql/patch_48_49_b.sql delete mode 100644 sql/patch_48_49_c.sql delete mode 100644 sql/patch_48_49_d.sql delete mode 100644 sql/patch_48_49_e.sql delete mode 100644 sql/patch_49_50_a.sql delete mode 100644 sql/patch_49_50_b.sql delete mode 100644 sql/patch_49_50_c.sql delete mode 100644 sql/patch_49_50_d.sql delete mode 100644 sql/patch_49_50_e.sql delete mode 100644 sql/patch_50_51_a.sql delete mode 100644 sql/patch_50_51_b.sql delete mode 100644 sql/patch_50_51_c.sql delete mode 100644 sql/patch_50_51_d.sql delete mode 100644 sql/patch_50_51_e.sql delete mode 100644 sql/patch_50_51_f.sql delete mode 100644 sql/patch_50_51_g.sql delete mode 100644 sql/patch_50_51_h.sql delete mode 100644 sql/patch_50_51_i.sql delete mode 100644 sql/patch_51_52_a.sql delete mode 100644 sql/patch_51_52_b.sql delete mode 100644 sql/patch_51_52_c.sql delete mode 100644 sql/patch_51_52_d.sql delete mode 100644 sql/patch_52_53_a.sql delete mode 100644 sql/patch_52_53_b.sql delete mode 100644 sql/patch_52_53_c.sql delete mode 100644 sql/patch_52_53_d.sql delete mode 100644 sql/patch_53_54_a.sql delete mode 100644 sql/patch_53_54_b.sql delete mode 100644 sql/patch_53_54_c.sql delete mode 100644 sql/patch_54_55_a.sql delete mode 100644 sql/patch_54_55_b.sql delete mode 100644 sql/patch_54_55_c.sql delete mode 100644 sql/patch_54_55_d.sql delete mode 100644 sql/patch_54_55_e.sql delete mode 100644 sql/patch_54_55_f.sql delete mode 100644 sql/patch_54_55_g.sql delete mode 100644 sql/patch_54_55_h.sql delete mode 100644 sql/patch_55_56_a.sql delete mode 100644 sql/patch_55_56_b.sql delete mode 100644 sql/patch_55_56_c.sql delete mode 100644 sql/patch_55_56_d.sql delete mode 100644 sql/patch_56_57_a.sql delete mode 100644 sql/patch_56_57_b.sql delete mode 100644 sql/patch_56_57_c.sql delete mode 100644 sql/patch_56_57_d.sql delete mode 100644 sql/patch_56_57_e.sql delete mode 100644 sql/patch_56_57_f.sql delete mode 100644 sql/patch_57_58_a.sql delete mode 100644 sql/patch_58_59_a.sql delete mode 100644 sql/patch_58_59_b.sql delete mode 100644 sql/patch_58_59_c.sql delete mode 100644 sql/patch_58_59_d.sql delete mode 100644 sql/patch_58_59_e.sql delete mode 100644 sql/populate_meta_coord.pl delete mode 100755 sql/table.sql delete mode 100644 sql/transfer_misc_affy.pl delete mode 100644 sql/vega_latest_schema.sql delete mode 100644 sql/vega_specific_tables.sql diff --git a/LICENSE b/LICENSE deleted file mode 100755 index 81ddbfbde..000000000 --- a/LICENSE +++ /dev/null @@ -1,40 +0,0 @@ - Copyright (c) 1999-2010 The European Bioinformatics Institute and - Genome Research Limited, and others. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer - in the documentation and/or other materials provided with the - distribution. - - 3. The name "Ensembl" must not be used to endorse or promote products - derived from this software without prior written permission. For - written permission, please contact helpdesk@ensembl.org - - 4. Products derived from this software may not be called "Ensembl" - nor may "Ensembl" appear in their names without prior written - permission of the Ensembl developers. - - 5. Redistributions in any form whatsoever must retain the following - acknowledgement: - - "This product includes software developed by Ensembl - (http://www.ensembl.org/)" - - THIS SOFTWARE IS PROVIDED BY THE ENSEMBL GROUP ``AS IS'' AND ANY - EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE ENSEMBL GROUP OR ITS - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/docs/ensembl_changes_spec.txt b/docs/ensembl_changes_spec.txt deleted file mode 100644 index 2153b7c4c..000000000 --- a/docs/ensembl_changes_spec.txt +++ /dev/null @@ -1,955 +0,0 @@ -ENSEMBL - API Change Specification -================================== - -CONTENTS --------- - -Introduction -Goals -Schema Modifications - Proposed New/Modified Tables - seq_region - coord_system - seq_region_annotation - dna - assembly - gene - transcript - translation - all feature tables - meta_coord - misc_feature - misc_set - misc_feature_misc_set - misc_attrib - Removed Tables - contig - clone - chromosome -Meta Information -API Changes - Slice - Tile - SliceAdaptor - RawContig - RawContigAdaptor - Clone - CloneAdaptor - Chromosome - ChromosomeAdaptor - Root - Storable Base Class - Features - transform - transfer - move - project - StickyExon - AssemblyMapper - FeatureAdaptors - CoordSystemAdaptor -New Features - Assembly Exceptions - Haplotypes - Pseudo Autosomal Regions - Multiple Assemblies -Other Considerations - Loci - - -INTRODUCTION ------------- - -This document describes the changes that are being made to the EnsEMBL core -schema and Perl/Java/C APIs. - -GOALS ------ --A cleaner, more intuitive API --A more general schema able to better capture divergent assembly types --More flexibility with regards to assembly related data such as haplotypes, - PARs, WGS assemblies etc. - -SCHEMA MODIFICATIONS --------------------- - -Proposed New/Modified Tables: ------------------------------ - - seq_region - ---------- - The seq_region table is a generic replacement for the clone, contig, - and chromosome tables. Additionally supercontigs which were formerly in the - assembly table are also present in this table. The name column can contain - chromosome names, clone accessions, supercontig names or anything that is - appropriate for the seq_region it describes. The coord_system_id is a - foreign key to the new coordinate system and is used to distinguish - between the divergent types of sequence regions in the table. - - seq_region_id int - name varchar - coord_system_id int references coord_system table - length int - - - coord_system - ------------ - The coordinate system table lists the available coordinate systems in the - database. The attrib is mysql set and is used to denote the default version - of each named coordinate system. E.g. there may be two 'chromosome' coordiate - systems and the default may be version 'NCBI34'. The 'top_level' and - sequence level attribs denote the coordinate system from which sequence is - retrieved and the coordinate system which has the largest assembled pieces. - The top_level coordinate system will usually be 'chromosome' but for some - shrapnel assemblied this may be something like 'supercontig' or 'clone'. - - There may be multiple toplevel coordinate systems providing that they share - the same name (but different version) and providing one of them is the - default. There may only be a single sequence level coordinate system. - - Note that the version in the coordinate system can be viewed as applying - to every seq_region of a given coordinate system. It is analagous to - a CVS tag, not a CVS version. E.g. The version would 'NCBI33' apply to - every chromosome seq_region so it is a valid version. A clone accession of - '8' would not be a valid version because it only describes a particular - seq_region of the coordinate system - not all of them. - - coord_system_id int - name varchar - version varchar - attrib set ('top_level', 'default_version', 'sequence_level') - - - seq_region_annotation - --------------------- - This table allows for extra arbitrary information to be attached to - seq_regions. For example the htg_phase was formerly part of the clone table - but now is stored in this table. - - seq_region_id int - attrib_type_id smallint references attrib_type table - value varchar - - - dna - --- - Formerly the contig table referenced the dna table. Now the dna table - refrences the seq_region_table. Every seq_region which has a coordinate - system with the 'sequence_level' attrib should be referenced by an entry in - the dna table. - - seq_region_id int - sequence varchar - - - assembly - -------- - The assembly table has been made more generic. Columns that previously - were names chr_* and contig_* have been renamed asm_* and cmp_* (assembled - and component) respectively. The superctg_name column has been removed. - Supercontigs are now defined in the seq_region table. - - The makeup of all seq_regions from smaller seq_regions can be described in - this table. The relationships which are explicitly defined must be listed - in the meta table. For example, the clone <-> contig mapping used to be - defined in the contig table with an embl_offset column. This information is - now found in this table instead. - - asm_seq_region_id int - asm_start int - asm_end int - cmp_seq_region_id int - cmp_start int - cmp_end int - ori tinyint - - gene - ---- - For faster retrieval and retrieval independently of transcripts and - exons, genes have a seq_region_id, seq_region_start and seq_region_end - which defines the span of their transcript. - - The transcript_count column has been removed as it was never used. - - gene_id int - type varchar - analysis_id int - seq_region_id int - seq_region_start int - seq_region_end int - seq_region_strand tinyint - display_xref_id int - - - transcript - ---------- - For faster retrieval and retrieval independently of genes and exons - transcripts also have a seq_region_id, seq_region_start and - seq_region_end. The translation_id has been removed; translations will point - to transcripts instead (and pseudogenes will have no translation). - - The exon_count column has been removed as it was never used. - - transcript_id int - gene_id int - seq_region_id int - seq_region_start int - seq_region_end int - seq_region_strand tinyint - display_xref_id int - - - translation - ----------- - Translations now reference transcripts rather than transcripts referencing - a single (or no) translation. This allows for more elegant handling of - pseudogenes (where there is no translation) and also can be used to supply - multiple translations for a single transcript (e.g. polycistronic genes). - - translation_id int - transcript_id int - start_exon_id int - end_exon_id int - seq_start int - seq_end int - - - all feature tables - ------------------ - All feature tables would now have seq_region_id, seq_region_start, - seq_region_end, seq_region_strand instead of contig_id, contig_start, - contig_end. This includes the repeat_feature, simple_feature, - dna_align_feature, protein_align_feature, exon, marker_feature, - karyotype and qtl_feature tables. - - meta_coord - ---------- - The meta coord table defines what coordinate systems are used to store each - type of feature. A given type of feature may be stored in multiple - coordinate systems, but these will not be retrieved by the API unless there - is an entry in the meta_coord table. - - table_name varchar - coord_system_id int - - - misc_feature - ------------ - This is a renaming of the mapfrag table. The renaming reflects the fact that - this table can be used to store any type of feature. - - misc_feature_id - seq_region_id - seq_region_start - seq_region_end - seq_region_strand - - misc_set - -------- - This table was formerly names mapset. It defines 'sets' that can be used - to group misc_features together. - - misc_set_id smallint - code varchar - name description - description text - max_length int - - misc_feature_misc_set - --------------------- - This is a link table defining the many-to-many relationship between the - misc_set and misc_feature tables. - - misc_feature_id int - misc_set_id smallint - - - misc_attrib - ----------- - This table was formerly named mapfrag_annotation. It contains arbitrary - annotations of misc_features and links to the same attrib_type table that - the seq_region_attrib table uses. - - misc_feature_id int - attrib_type_id smallint - value varchar - - - -Removed Tables --------------- - - contig - ------ - Contigs are no longer needed. They are stored as entries in the seq_region - table with type 'contig'. The embl_offset and clone_id will not be - necessary as their relationship to clones can be described by the - assembly table. - - clone - ----- - Clones are no longer needed. Clones are stored as entries in the seq_region - table with coord_system 'clone'. The modified timestamp will be discarded - as it is no longer maintained anyway. The embl_acc, version, and - embl_version columns are redundant and will also be discarded. Versions - are simply appended onto the end of the name with a delimiting '.'. - - Any additional information that needs to be present (such as htg_phase) can - be added to the seq_region_attrib table. - - chromosome - ---------- - This table is no longer needed. Chromosomes can be stored in the - seq_region table with a 'chromosome' coord_system. - - - -META INFORMATION ----------------- - -Considerable more meta information is stored in the core -databases in order for the general approach to be maintained. -This information is stored in the new coord_system table and in the -meta, and meta_coord tables. - -Meta information includes the following: - - * The coordinate system that features of a given type are stored in. This - information is stored in the meta_coord table and is used when constructing - queries for a particular feature table. - - * The top-level coordinate system. For human - this would be 'chromosome'. For briggsae this may be something like - 'scaffold' or 'super contig'. This information would be used to construct - the web display and would possibly be the default coordinate system when - a coordinate system is unspecified by a user. This is stored as a flag - in the coord_system table. - - * The default version of each coordinate system. This is stored as a flag - in the coord_system table. - - * The coord_system where sequence is stored. This will be stored as a - flag in the coord_system table. Initially it will only be possible - to have a single coord_system in which sequence is stored. This - may be extended in the future to allow sequence to be stored for multiple - coord_systems. - - * The coordinate system relationships between that are explicitly defined - in the assembly table. The new API is capable of 2 step (implicit) mapping - between coordinate systems, but these relationships can be determined - through the direct relationship information. - - For example the clone, chromosome and nt_contig coordinate systems may all - be constructed from the contig coordinate system: - contig -> clone - contig -> chromosome - contig -> nt_contig - Or there may be a more hierarchical approach: - contig -> clone - clone -> nt_contig - nt_contig -> chromosome - This information is stored in the meta table under the key - 'assembly.mapping' with the following format (versions are optional): - assembled_coord_system_name[:version]|component_coord_system_name[:version] - - For example the meta table for human might contain the following entries: - mysql> select * from meta where meta_key = 'assembly.mapping'; - +---------+------------------+--------------------------+ - | meta_id | meta_key | meta_value | - +---------+------------------+--------------------------+ - | 43 | assembly.mapping | chromosome:NCBI33|contig | - | 44 | assembly.mapping | clone|contig | - | 45 | assembly.mapping | supercontig|contig | - +---------+------------------+--------------------------+ - - * The names of the allowable coordinate systems. This would allow for - quick validation of API requests and provide a list that could be used - by the website for coordinate system selection. This information will be - stored in the coord_system table. - - * The coordinate system(s) that each feature type is stored in. This is - stored in the meta_coord table. - - -API CHANGES ------------ - -Slice ------ - Slice methods chr_start, chr_end, chr_name will be renamed start, end, - seq_region_name. For backwards compatibility the old methods are - chained to the new methods with deprecated warnings. - - A new slice method 'coord_system' will be added and will return a - Bio::EnsEMBL::CoordSystem object. - - Slices will represent a region on a seq_region as opposed to a region on a - chromosome. Slices will be immutable (i.e. their attributes will not be - changeable). A new slice will have to be created if the attributes are to - be changed. - - The following attributes will therefore define a unique slice: - coord_system (e.g. object with name and version) - seq_region_name (e.g. 'X' or 'AL035554.1') - start (e.g. 1000000 or 1) - end (e.g. 2000001 or 800) - strand (e.g. 1 or -1) - - The name method will return the above values joined by a ':' delimiter, and - will not be settable: - e.g. 'chromosome:NCBI33:X:1000000:2000001:1' or 'clone::AL035554.1:1:800:-1' - This value can be used as a hashvalue that uniquely defines a slice. - - The concept of an 'empty' slice will no longer exist. - - The get_tiling_path method will be deprecated in favour of a more general - method project(). Whereas get_tiling_path() implies a relationship between - an assembly and the coordinate system which makes up the assembly the - project method will allow conversion accross any two coordinate systems. - It will take a coord_system string as an argument and rather - than returning a list of Tile objects it will return a listref of triplets - containing a start int, and end int, and a 'to' slice object. The following - is an example of how this method would be used ($clone is a reference to a - slice object in the clone coordinate system): - - my $clone_path = $slice->project('clone'); - - foreach my $segment (@$clone_path) { - my ($start, $end, $clone) = @$segment; - print $slice->seq_region_name, ':', $start, '-', $end , ' -> ', - $clone->seq_region_name, ':', $clone->start, '-', $clone->end, - $clone->strand, "\n"; - } - - An optional second argument to project() will be the coordinate - system version. E.g.: - $ncbi34_path = $slice->project('chromosome','NCBI34'). - - -Tile ----- - The tile object will no longer be necessary. However for backwards - compatibility it will remain in the system for some time before being phased - out along with the get_tiling_path method. - - -SliceAdaptor ------------- - The Slice adaptor must provide a method to fetch a slice via its coordinate - system, seq_region_name, start, end, and strand. - The old, commonly used method fetch_by_chr_start_end has been altered to - simply chain to this new method (with a warning) as do most other - SliceAdaptor methods. - - Another method which is necessary with the disapearence of the Clone, - RawContig and Chromosome adaptors is one which allows for all slices - of a certain type to be retrieved. For example it is often necessary to - retrieve all chromosomes, or clones for a species. This method is simply - named fetch_all. The old fetch_all methods on the ChromosomeAdaptor, - RawContigAdaptor, CloneAdaptor, etc. chain to the new method for backwards - compatibility. - - Method Names and Signatures - --------------------------- - Slice fetch_by_region(coord_system, name) - Slice fetch_by_region(coord_system, name, start) - Slice fetch_by_region(coord_system, name, start, end) - Slice fetch_by_region(coord_system, name, start, end, strand) - Slice fetch_by_region(coord_system, name, start, end, strand, version) - listref of Slices fetch_all(coord_system) - listref of Slices fetch_all(coord_system, version) - -RawContig ---------- - The RawContig object is no longer necessary with the new system. RawContigs - are replaced by Slices with coord_system = 'contig'. In the interests of - backwards compatibility the RawContig class will still be present for - sometime as a minimal implmentation inheriting from the Slice class. - - -RawContigAdaptor ----------------- - The RawContigAdaptor is no longer necessary. The RawContigAdaptor is - replaced by the SliceAdaptor. For backwards compatibility a minimal - implementation of the RawContigAdaptor will remain which inherits from the - SliceAdaptor. - -Clone ------ - The Clone object is no longer necessary in the new system. Clones are - replaced by Slices with coord_system = 'clone'. For backwards compatibility - a minimal implementation will remain which inherits from the Slice object. - -CloneAdaptor ------------- - The CloneAdaptor object is no longer necessary in the new system. The - CloneAdaptor is replaced by the SliceAdaptor. For backwards compatibility - a minimal implementation will remain which inherits from the SliceAdaptor. - -Chromosome ----------- - The Chromosome object is no longer necessary in the new system. The - Chromosome is replaced by Slices with coord system 'chromosome' (or - whatever the top level seq_region type is for that species). For backwards - compatibility a minimal implementation will remain which inherits from the - Slice object. - - Statistical information (e.g. known genes, genes, snps) that - was on chromosomes may be stored in the seq_region_attrib table or - in some sort of density table. - -ChromosomeAdaptor ------------------ - The Chromosome object is no longer necessary in the new system. The - ChromosomeAdaptor is replaced by the SliceAdaptor. For backwards - compatibility a minimal implementation which inherits from the SliceAdaptor - will remain. - - -Root ----- - Every class in the current EnsEMBL perl API inherits directly or indirectly - from Bio::EnsEMBL::Root. This inheritance is almost exclusively for the - following following three methods: - throw - warn - _rearrange - - Nothing is gained by implementing this relationship as inheritance, and there - are several disadvantages: - (1) Everything must inherit from this class to use those 3 object methods. - This can result in patterns of multiple inheritance which are generally - considered to be a bad thing. - - (2) It is not possible to use the throw, warn or rearrange method within - the constructor until the object is blessed. Blessing the object first - and then calling rearrange to extract named arguments is slower because - the blessed hash needs to be expanded as more keys are added and several - key access/value assignements may need to be performed. - - (3) Objects become larger and object construction becomes slightly slower - because constructors traverse an additional level of inheritance. - - A better approach, which we have used, is to make the methods static and - create a static utility class that exports the methods. The warn method has - been renamed warning so as not to conflict with the builtin perl function - warn and the _rearrange method has be renamed rearrange. - - The following is an example of the old styl Root inheritance and the new - style static utility methods: - - # - # OLD STYLE - # - package Old; - - use Bio::EnsEMBL::Root; - - @ISA = qw(Bio::EnsEMBL::Root); - - sub new { - my $caller = shift; - my $class = ref($caller) || $caller; - - $self = $class->SUPER::new(@_); - - my ($start, $end) = $self->_rearrange(['START', 'END'], @_); - - if(!defined($start) || !$defined($end)) { - $self->throw('-START and -END arguments are required'); - } - - $self->{'start'} = $start; - $self->{'end'} = $end; - - return $self; - } - - # - # NEW STYLE - # - package New; - - use Bio::EnsEMBL::Utils::Exception qw(throw warning); - use Bio::EnsEMBL::Utils::Argument qw(rearrange); - - sub new { - my $caller = shift; - - my $class = ref($caller) || $caller; - - my ($start, $end) = rearrange(['START', 'END'], @_); - - if(!defined($start) || !defined($end)) { - throw('-START and -END arguments are required'); - } - - return bless {'start' => $start, 'end' => $end}, $class; - } - - The calls to $self->rearrange $self->warn and $self->throw have been - replaced by class method calls to warning() and throw() inside the core API. - However, for backwards compatibility the existance inheritance to - Bio::EnsEMBL::Root will remain in many cases (and be removed at a later date) - - -Storable Base Class -------------------- - Almost all business objects in the EnsEMBL system are storable in the db - and the ones which are always require 2 methods: dbID() and adaptor(). These - methods have been moved to a Storable base class which most of the - business objects now inherit from. This module has an additional method - is_stored() which takes a database argument and returns true if the object - appears to already have been stored in the provided database. - -Features --------- - All features should inherit from a base class that implements common feature - functionality. Formerly this role was filled by the bloated SeqFeature class - which inherits from Bio::SeqFeature and Bio::SeqFeatureI etc. - This class has been replaced by a smaller, less complicated - implementation named Feature. To make classes more polymorphic in general, - the gene, and transcript objects should now also inherit from the Feature - class. This class implements the following core methods common to all - features: - - start - end - strand - slice (formerly named contig/entire_seq/etc.) - transform - transfer - project - analysis - - The feature class inherits from the Storable base class and thereby inherits - the following methods: - - adaptor - dbID - is_stored - - The signature and behaviour of the transform method has been changed. The - existing method works differently depending on the arguments passed as - described below. - - OLD transform(no arguments) - ----------------------- - Transforms from slice coordinates to contig coordinates. The feature - is changed in place and returned. If the feature already is in contig - coordinates an exception is thrown. The feature may be split into two - features in which case both features are returned (not sure if one of - them is transformed in place). Some features are not permitted to be - split in two in which case an exception is thrown? (not sure) if it is - to be split accross contigs. - - OLD transform(slice) - ---------------- - If the feature is already in slice coordinates and the slice is on the - same chromosome the features coordinates are simply shifted. If the - feature is already in slice coordinates but on a different chromosome - an exception is thrown. - It the feature is in contig coordinates and the slice is not empty then - it is transformed onto the new slice (or an exception is thrown if the - transform would cause the feature to end up on a different chromosome - than the slice). If the feature is in contig coordinates and the - slice is an empty slice the feature is transformed into chromosomal - coordinates and placed on a newly created slice of the entire chromosome. - - The new transformation has only a single valid signature and splits its - responsibilities with the new transfer method. The transfer - method transfers a feature onto another slice, whereas the transform - method simply converts coordinate systems. Transform does - NOT transform features in place but rather returns the newly - transformed feature as a new object: - - transform(coord_system, [version]) - ----------------------- - Takes a single string specifying the new coord system. If the coord - system is not valid an exception is thrown. If the coord system is the - same coord system as the feature is currently in a new feature that is - a copy of the old one is still be returned. This also retrieves - a slice which is the entire span of the region of the coordinate system - that this feature is being transformed to. For example transforming - an exon in contig coordinates to chromosomal coodinates will place a - copied exon on a slice of an entire chromosome. If a feature spans a - boundary in the coordinate system, undef is returned by the method - instead. - - transfer(slice) - ---------------- - Shifts a feature from one slice to another. If the new slice is in the - same coordinate system but different seq_region_name (e.g. both - chromosomal but different chromosomes) an exception is thrown. - If the new slice is in a different coordinate system then the - transform method is internally called first. If the feature would be - split across a boundary undef is returned instead. After the transform - there follows a potential move, if the slice does not cover the full - seq_region. If there is no transform call necessary, the feature is - copied and then moved. - - move( start, end, strand ) - -------------------------- - In place change of the coordinates of the feature. It will stay on the - same slice. - - project(coord_system, [version]) - ----------------- - This method is analagous to the project method on Bio::EnsEMBL::Slice. - It 'projects' a feature onto another coordinate system and returns the - results formatted as a listref of [$start, $end, $feature] triplets. - The $features returned are copies of the feature on which the method was - called, but with coordinates in the coordinate system that was projected - to. If the feature maps entirely to a gap then an empty list ref [] will - be returned. If the feature is mapped to multiple locations a listref - containing split features will be returned. - -StickyExon ----------- - The sticky exon object is not be present in the new system. It does not - make sense to define features in a coordinate system where they are simply - not present. Exons are calculated in chromosomal coordinates and they - will generally be retrieved in the same coordinates system. It will - of course be possible to still retrieve exons in contig coordinates but only - is they are fully defined on the contigs of interest. - The split coordinates can be obtained through a call to the project - method. - - -AssemblyMapper --------------- - The assembly mapper and assembly mapper adaptor classes have become more - general and sophisticated.Not only is it possible to map between two - coordinates systems whose relationship is explicitly defined in the assembly - table, but it is also possible to perform implicit, 2-step mapping - using 'coordinate system chaining'. - - For example if no explicit relationship is defined between the supercontig - and clone coordinate systems but relationships between the clone and contig - and the supercontig and contig coordinate systems is present the mapper has - the faculty to perform the mapping between the clone and supercontig systems. - In this case the contig cooridinate system is used as an intermediary: - - NTContig <-> Contig <-> Clone - - In the above example the assembly mapper adaptor internally does the - following: - - (1) Create a mapper object between the NTContig and Contig region - (2) Create a mapper object between the Contig and Clone region - (3) Create and return a third mapper constructed from the sets of mappings - generated by the intermediate mappers. - - -FeatureAdaptors ---------------- - Most FeatureAdaptors inherit from the BaseFeature adaptor. As a - minimum feature adaptors provide fetch_all_by_Slice and fetch_by_dbID - methods. The fetch by slice method provides the same return types and - requires the same arguments as before, but required some internal changes. - - The simplified algorithm for fetching features via a slice is: - - (1) Check with coord system is requested or that slice is in. - (2) Check which coord system features are in - (3) Obtain mapper between coord systems - (5) Retrieve features in their native coord system. - (6) Remap features to the requested coord system using the mapper - (7) Return the features - - The method fetch_all_by_RawContig is obsolete (it is equivalent to - fetching by a slice of a contig) but has be left in as an alias for the - fetch all by slice method for backwards compatibility. - - When performing a non-locational fetch (e.g. by dbID) features are still - returned in the coordinate system that they are calculated in. This is to - ensure that the feature can always be retreived in this manner of fetching - and so that features which are not in the database can be distinguished from - features which are simply not in the requested coordinate sytem. When a - single feature which is not in the database is requested via a non-locational - fetch undef is returned instead. If multiple features are requested but none - are present in the database a reference to an empty list is returned. If the - features are required in a specific coordinate system the transfer, project - or transform method can always be used. - - -CoordSystemAdaptor ------------------- - A CoordSystemAdaptor provides access to the information in the - coord_system, meta and meta_coord tables. This adaptor provides - Bio::EnsEMBL::CoordSystem objects. - - -NEW FEATURES ------------- - -Assembly Exceptions (Symbolic Sequence Links) ---------------------------------------------- - - It is sometimes desirable to have multiple regions refer to the same - sequence. - - In much the same way a symlinked file acts as a pointer to a real file, - a symlinked region can point to another region of sequence. - - This can be described in the database through the addition of a table which - has a structure that mirrors that of the assembly table. The assembly table - does not define the structure underlying this seq_region, and it does not - have sequence of its own. By means of the assembly_exception table this - seq_region points to another seq_region where the underlying sequence is - defined: - - assembly_exception - ------------------ - seq_region_id int - seq_region_start int - seq_region_end int - exc_type enum('HAP', 'PAR') - exc_seq_region_id int - exc_seq_region_start int - exc_seq_region_end int - ori int (may not be needed, may implicitly be 1) - - When fetching features and sequence from a slice that overlaps a symlinked - region, the features and sequence from the symlinked region are returned. - This may be implemented by altering fetch by slice calls and adding a - SliceAdaptor method with splits a slice into non-symlinked components. - The following algorithm would apply to sequence and feature fetches: - (1) Split the slice into non-symlinked component slices - (2) Recursively call the method with the component slices - (3) Adjust the start and end of the returned features and place them - back on the original slice (or splice the sequence together if this - is a sequence fetch) - (4) Return the features or sequence - - Consider a slice which overlaps regions (A), (B), and (C) on chromosome Y: - - =============== (chrX) - ^^^^^^^^^^^ - ======== symlink ========= (chrY) - (A) (B) (C) - - Regions (A) and (C) are described by the assembly table, but region (B) - is described in the assembly_exception table and points to a region of - chromosome Y. When features or sequence are retrieved the slice is split - into 3 component slices which have no symlinks: region (A) and (C) are - slices on chromosome Y but region (B) is made into a slice on chromsome (X). - All of the features are fetched from the individual slices adjusted by - some addition and placed on back on the original Slice before being - returned. - - - -Haplotypes (and the MHC region) -------------------------------- - There are several requirements related to haplotypes: - - Must be able to determine which haplotypes overlap a slice - - Must be able to run genebuild/raw computes over the haplotypes - - Must be able to retrieve a slice on a haplotype and its flanking - regions (i.e. the regions of the default assembly bordering the - haplotype). - - It may be desireable to interpolate features from the default sequence - onto the haplotype - - Proposal: - The haplotype will be present as a full length 'chromosome' in the - seq_region table (or other appropriate coordinate system) but only the - region which differs from the the default assembly will be described in - the chromosome table. The regions which are identical will be described - by the assembly_exception table. - - It is possible to retrieve a slice on a haplotype just as any other slice - is retrieved from the SliceAdaptor. For example: - $slice = $slice_adaptor->fetch_by_region('chromosome', '6_DR52'); - - A slice created on a haplotype will have coordinates relative to the - start of the chromosome NOT relative to the start of the haplotype - region. For all intents and purposes a haplotype slice will behave as - a normal slice. - - For example, the assembly table could define the composition of the - divergent region of chromosome 6_DR52 (C), but leave the remainder of the - chromosomal composition undefined. The remainder of the - chromosome composition would be accounted for by 2 rows in the - assembly_exception table which described the synonymous regions in terms - of chromosome 6: - - ============== 6 ============== 6 - ^ ^ - _____|________ _______|______ - C ========== 6_DR52 - - - - - -Pseudo Autosomal Regions (PARs) -------------------------------- - There are several requirements related to PARs: - - The same sequence and features must be present on a region of - both chromosome X and chromosome Y - - The region and features should be returned when retreiving features - from either chromosome. - - It must still be possible to retrieve one of the features via its - identifier - - It must still be possible to transform features in the region from - chromosomal coordinates to contig coords and vice-versa. - - The genebuild should run over the region, but only once. - - Proposal: - Use the assembly_exception table in a similar fashion as it is used - for the haplotypes described above. Chromosome X can be the 'default' - chromosome for the PAR and Chromosome Y can be described by the assembly - table except in the PAR. The PAR on chromosome Y can be defined by the - assembly_exception table and refer to the corresponding sequence on - chromosome X. The same algorithm as used for haplotypes can then be used - when retrieving sequence or features from slices which overlap this - exception on chromosome Y. - - The following diagram illustrates how chromsome X and chromosome Y could - be defined: - - ========================================== X - ^ ^ - _|_ ____|____ - ====== ============ ============= Y - - -Multiple Assemblies -------------------- - -In theory it is possible to load multiple assemblies into the same database. -For example two coordinate systems with two versions chromosome:NCBI33 and -chromosome:NCBI34 could be loaded into the database. Leveraging the fact that -two step mapping is possible and that these coordinate systems share a -coincident mapping with the contig coorinate system it is possible to pull -across annotation from one assembly to the other. The following example -illustrates the transfer of genes from the chromosome X on the NCBI33 assembly -to the NCBI34 assembly: - - $slice = $slice_adaptor->fetch_by_region('chromosome', 'X', undef, - undef,undef, 'NCBI33'); - @genes = @{$gene_adaptor->fetch_all_by_Slice($slice)}; - - foreach my $gene (@genes) { - $gene->transform('chromosome', 'NCBI34'); - #... - } - - -OTHER CONSIDERATIONS --------------------- - -Loci ----- - -Similar genes which are defined across haplotypes need -to be somehow linked into loci. The intent is that -a user would be able to see that a gene has a counterpart -on an equivalent haplotypic sequence. - -This is work in progress. The current opinion among us is to implement -it via a relationship table that specifies which genes on default -haplotypes are considered equivalent to other genes on -(overlapping) haplotypes. - diff --git a/docs/ensembl_das/Homo_sapiens.ini b/docs/ensembl_das/Homo_sapiens.ini deleted file mode 100644 index c1322857e..000000000 --- a/docs/ensembl_das/Homo_sapiens.ini +++ /dev/null @@ -1,319 +0,0 @@ -############################################################################### -# -# Name: Homo_sapiens.ini -# -# Description: Configuration file for Human ensembl -# -############################################################################### - -################# -# GENERAL CONFIG -################# -[general] - -# Database info: only specify values if different from those in DEFAULTS -# DATABASE_HOST = -# DATABASE_HOST_PORT = -# DATABASE_DBUSER = -# DATABASE_DBPASS = -# DATABASE_WRITE_USER = -# DATABASE_WRITE_PASS = - -# Assembly info -ENSEMBL_PREFIX = ENS ; EnsEMBL gene id prefix -ENSEMBL_GOLDEN_PATH = NCBI34 ; Indentifier for the golden path type -ENSEMBL_CHROMOSOMES = [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 X Y ] - -# Search config -; list of features that are indexed ready for searching -ENSEMBL_SEARCH_IDXS = [ Disease Domain EST External Family Gene MRNA Marker Peptide Protein SNP SangerProject Sequence Unigene ] - - -# Display info -SPECIES_COMMON_NAME = Human -SPECIES_BIO_NAME = Homo sapiens -SPECIES_CODE = hs - -ENSEMBL_PREDICTION_TEXT_CORE = Genes were annotated by the Ensembl automatic analysis pipeline using either a GeneWise model from a human/vertebrate protein, a set of aligned human cDNAs followed by GenomeWise for ORF prediction or from Genscan exons supported by protein, cDNA and EST evidence. GeneWise models are further combined with available aligned cDNAs to annotate UTRs. -ENSEMBL_PREDICTION_TEXT_PSEUDOGENE = Potential processed pseudogenes are detected from genewise predictions that have a single-exon with frameshifts, have their evidence spliced elsewhere in the genome and have no match in the syntenic genomic region in mouse. -ENSEMBL_PREDICTION_TEXT_ESTGENE = ESTs are mapped on the genome using a combination of Exonerate, Blast and Est_Genome, with a threshold of overall percentage identity of 90 and at least one exon having 97 or higher. The results are processed by merging the redundant ESTs and setting splice-sites to the most common ends, resulting in alternative spliced forms. This evidence is processed by Genomewise which finds the longest ORF, and assigns 5' and 3' UTRs. -ENSEMBL_PREDICTION_TEXT_VEGA = Finished genomic sequence is analysed on a clone by clone basis using a combination of similarity searches against DNA and protein databases as well as a series of ab initio gene predictions (GENSCAN, GENEWISE). Gene structures are annotated on the basis of human interpretation of the combined supportive evidence generated during sequence analysis. In parallel, experimental methods are being applied to extend incomplete gene structures and discover new genes. The latter is initiated by comparative analysis of the finished sequence with vertebrate datasets such as the Riken mouse cDNAs, mouse whole-genome shotgun data and GenescopeTetraodon Ecores. - - - -################## -# DATABASE CONFIG -# Change the values to the local names of these databases -################## -[databases] - -DATABASE_DB = homo_sapiens_core_19_34b -DATABASE_VEGA = homo_sapiens_vega_19_34b - -# The following are extra configuration parameters for the databases -# You can overide the default settings for specific databases. Just add a -# like this for each database you want to overide the settings for -# -# [ENSEMBL_FOO] -# USER = myothersqluser -# PASS = -# HOST = mydb_server.domain.org -# PORT = 3306 - - -#################### -# Help Database Config -#################### - -[ENSEMBL_WEBSITE] -# Accept defaults - - -#################### -# Species-specific colours -#################### - -[ENSEMBL_COLOURS] -# Accept defaults - - -#################### -# External Database ad Indexer Config -#################### - -[ENSEMBL_EXTERNAL_DATABASES] -# Accept defaults - -[ENSEMBL_EXTERNAL_INDEXERS] -# Accept defaults - - -############# -# DAS CONFIG -############# - -[ENSEMBL_GENE_DAS_SOURCES] -Demo = 1 - -[Demo] -dsn = demo -url = http://DasServerMachine:9000/das -type = swissprot -authority = http:/www.ensembl.org -on = [ protview geneview ] - -[ENSEMBL_TRACK_DAS_SOURCES] -# None - -[ENSEMBL_INTERNAL_DAS_SOURCES] -das_DEMO = 1 - -# To get an unlinked menu leave the linkURL field empty -# The following are the details of the DAS sources. - -[das_DEMO] -dsn = demo -url = http://DasServerMachine:9000/das -label = demo data -caption = demo data -col = darkred -labelflag = U -strand = r -depth = 6 -group = 1 -on = 1 -types = [ ] - - -#################### -# Configure External Genome Browsers -#################### - -[EXTERNAL_GENOME_BROWSERS] -EGB_UCSC = UCSC browser -EGB_NCBI = NCBI browser -# EGB_TEST = Test external link -# KEY must be present in [ENSEMBL_EXTERNAL_URLS] section below which gives -# the URL.... for the click - the entry here just gives the text link - - -#################### -# Configure External URLs -# These are mainly for (1) External Genome Browse {EGB_ } -# (2) DAS tracks {DAS_ } -#################### - -[ENSEMBL_EXTERNAL_URLS] -DAS_SNPSTATUS = http://hapmap.cshl.org/docs/snp_categories.html -DAS_ACEMBLY = http://www.ncbi.nlm.nih.gov/AceView/av.cgi?db=30&q=###ID### -DAS_HSGENEID = http://www1.imim.es/cgi-bin/das/das_genes_human.cgi?geneid=###ID### -DAS_HSTIGR = http://www.tigr.org/docs/tigr-scripts/nhgi_scripts/tc_report.pl?species=human;tc=###ID### -DAS_NCBIGSCAN = http://www.ncbi.nlm.nih.gov/cgi-bin/Entrez/GSfasta?label=###ID### -DAS_REFSEQ = http://www.ncbi.nlm.nih.gov/LocusLink/list.cgi?Q=###ID### -DAS_NCBITRANS = http://www.ncbi.nlm.nih.gov/cgi-bin/Entrez/hum_srch?chr=hum_chr.inf&query=###ID###&qchr=&advsrch=off -DAS_ONCOVIEW = http://www.sanger.ac.uk/perl/CGP/oncoview?&action=mutation&gene_name=###ID### -EGB_NCBI = http://www.ncbi.nlm.nih.gov/mapview/maps.cgi?ORG=hum&CHR=###CHR###&BEG=###START###&END=###END### -EGB_UCSC = http://genome.cse.ucsc.edu/cgi-bin/hgTracks?position=chr###CHR###%3A###START###-###END###&Submit=Submit&db=hg16 -DOTS = http://www.allgenes.org/allgenes/servlet?page=gene&id=###ID### -HVER121 = http://www.sanger.ac.uk/cgi-bin/microarrays/reporter_annotation?array_id=Hver1.2.1&reporter_id=###ID### -HVER131 = http://www.sanger.ac.uk/cgi-bin/microarrays/reporter_annotation?array_id=Hver1.3.1&reporter_id=###ID### -AFFY_HG_U133 = /homo_sapiens/fastaview?faid=DNA_affyU133AB_1834&id=###ID### -AFFY_HG_U95 = /homo_sapiens/fastaview?faid=DNA_affyU95AE_1834&id=###ID### -AFFY_HG_U133A = /homo_sapiens/fastaview?faid=DNA_affyU133AB_1834&id=###ID### -AFFY_HG_U133B = /homo_sapiens/fastaview?faid=DNA_affyU133AB_1834&id=###ID### -AFFY_HG_U133_ALL = /homo_sapiens/fastaview?faid=DNA_affyU133AB_1834&id=###ID### -AFFY_HG_U95AV2 = /homo_sapiens/fastaview?faid=DNA_affyU95AE_1834&id=###ID### -AFFY_HG_U95A = /homo_sapiens/fastaview?faid=DNA_affyU95AE_1834&id=###ID### -AFFY_HG_U95B = /homo_sapiens/fastaview?faid=DNA_affyU95AE_1834&id=###ID### -AFFY_HG_U95C = /homo_sapiens/fastaview?faid=DNA_affyU95AE_1834&id=###ID### -AFFY_HG_U95D = /homo_sapiens/fastaview?faid=DNA_affyU95AE_1834&id=###ID### -AFFY_HG_U95E = /homo_sapiens/fastaview?faid=DNA_affyU95AE_1834&id=###ID### -AFFY_HG_U95_ALL = /homo_sapiens/fastaview?faid=DNA_affyU95AE_1834&id=###ID### - -#################### -# Configure blast data sources. -# Used in blastview to generate database dropdown -#################### -[ENSEMBL_BLAST_METHODS] -# Registers blast methods. Key values are the -# Bio::Tools::Run::Search classes used to run the search -# Accept defaults - -[BLAST_DATASOURCES] -# Registers blast datasources. Key values are used as labels. -# Keys should be registered against methods in species.ini files -# Accept defaults - -[BLASTN_DATASOURCES] -# Sequence databases to use with search method (BLASTN) -# Filesystem location set by DEFAULTS:ENSEMBL_BLAST_DATA_PATH -# Data available from ftp://ftp.ensembl.org/pub/current_human/data/fasta/ -DATASOURCE_TYPE = dna -LATESTGP = Homo_sapiens.NCBI34.contig.fa -LATESTGP_MASKED = Homo_sapiens.NCBI34.contig_masked.fa -CDNA_ALL = Homo_sapiens.NCBI34b.cdna.fa -CDNA_KNOWN = Homo_sapiens.NCBI34b.cdna_known.fa -CDNA_NOVEL = Homo_sapiens.NCBI34b.cdna_novel.fa -CDNA_PSEUDO = Homo_sapiens.NCBI34b.cdna_pseudo.fa - -[TBLASTX_DATASOURCES] -# Sequence databases to use with search method (TBLASTX) -# Filesystem location set by DEFAULTS:ENSEMBL_BLAST_DATA_PATH -# Data available from ftp://ftp.ensembl.org/pub/current_human/data/fasta/ -DATASOURCE_TYPE = dna -LATESTGP = Homo_sapiens.NCBI34.contig.fa -LATESTGP_MASKED = Homo_sapiens.NCBI34.contig_masked.fa -CDNA_ALL = Homo_sapiens.NCBI34b.cdna.fa -CDNA_KNOWN = Homo_sapiens.NCBI34b.cdna_known.fa -CDNA_NOVEL = Homo_sapiens.NCBI34b.cdna_novel.fa -CDNA_PSEUDO = Homo_sapiens.NCBI34b.cdna_pseudo.fa - -[TBLASTN_DATASOURCES] -# Sequence databases to use with search method (TBLASTN) -# Filesystem location set by DEFAULTS:ENSEMBL_BLAST_DATA_PATH -# Data available from ftp://ftp.ensembl.org/pub/current_human/data/fasta/ -DATASOURCE_TYPE = peptide -LATESTGP = Homo_sapiens.NCBI34.contig.fa -LATESTGP_MASKED = Homo_sapiens.NCBI34.contig_masked.fa -CDNA_ALL = Homo_sapiens.NCBI34b.cdna.fa -CDNA_KNOWN = Homo_sapiens.NCBI34b.cdna_known.fa -CDNA_NOVEL = Homo_sapiens.NCBI34b.cdna_novel.fa -CDNA_PSEUDO = Homo_sapiens.NCBI34b.cdna_pseudo.fa - -[BLASTP_DATASOURCES] -# Sequence databases to use with search method (BLASTP) -# Filesystem location set by DEFAULTS:ENSEMBL_BLAST_DATA_PATH -# Data available from ftp://ftp.ensembl.org/pub/current_human/data/fasta/ -DATASOURCE_TYPE = peptide -PEP_ALL = Homo_sapiens.NCBI34b.pep.fa -PEP_KNOWN = Homo_sapiens.NCBI34b.pep_known.fa -PEP_NOVEL = Homo_sapiens.NCBI34b.pep_novel.fa -PEP_PREDICTION = Homo_sapiens.NCBI34b.pep_genscan.fa - -[BLASTX_DATASOURCES] -# Sequence databases to use with search method (BLASTX) -# Filesystem location set by DEFAULTS:ENSEMBL_BLAST_DATA_PATH -# Data available from ftp://ftp.ensembl.org/pub/current_human/data/fasta/ -DATASOURCE_TYPE = dna -PEP_ALL = Homo_sapiens.NCBI34b.pep.fa -PEP_KNOWN = Homo_sapiens.NCBI34b.pep_known.fa -PEP_NOVEL = Homo_sapiens.NCBI34b.pep_novel.fa -PEP_PREDICTION = Homo_sapiens.NCBI34b.pep_genscan.fa - -[SSAHA_DATASOURCES] -# Sequence database server to use with search method (SSAHA) -# Format is HOST:PORT -# None - -#################### -# Configure the page header links -#################### - -[HEADER_LINKS] -IMAGE1_SRC = /gfx/header/human-header1.gif -IMAGE1_ALT = Ensembl Human -IMAGE1_URL = /Homo_sapiens -IMAGE1_WIDTH = 174 - -LINK3_TEXT = BlastSearch -LINK3_URL = /Multi/blastview?species=Homo_sapiens -LINK4_TEXT = MartSearch -LINK4_URL = /biomart/martview?species=Homo_sapiens -LINK5_TEXT = Export Data -LINK5_URL = /Homo_sapiens/exportview - - -#################### -# Configure search example links -#################### - -[SEARCH_LINKS] -DEFAULT1_TEXT = AP000462 -DEFAULT1_URL = contigview?clone=AP000462 -DEFAULT2_TEXT = RH9632 -DEFAULT2_URL = markerview?marker=RH9632 -DEFAULT3_TEXT = cancer -DEFAULT3_URL = diseaseview?disease=cancer - -CONTIGVIEW1_TEXT = AC067852 -CONTIGVIEW1_URL = contigview?clone=AC067852 -CONTIGVIEW2_TEXT = AP000869 -CONTIGVIEW2_URL = contigview?clone=AP000462 - -GENEVIEW1_TEXT = ENSG00000139618 -GENEVIEW1_URL = geneview?gene=ENSG00000139618 -GENEVIEW2_TEXT = BRCA2 -GENEVIEW2_URL = geneview?gene=BRCA2 - -DOMAINVIEW1_TEXT = IPR000504 -DOMAINVIEW1_URL = domainview?domainentry=IPR000504 - -TRANSVIEW1_TEXT = ENST00000157775 -TRANSVIEW1_URL = transview?transcript=ENST00000157775 - -PROTVIEW1_TEXT = ENSP00000267071 -PROTVIEW1_URL = protview?peptide=ENSP00000267071 - -MAPVIEW1_TEXT = 12 -MAPVIEW1_URL = mapview?chr=12 -MAPVIEW2_TEXT = X -MAPVIEW2_URL = mapview?chr=X - -MARKERVIEW1_TEXT = RH9632 -MARKERVIEW1_URL = markerview?marker=RH9632 -MARKERVIEW2_TEXT = D1S2806 -MARKERVIEW2_URL = markerview?marker=D1S2806 - -SNPVIEW1_TEXT = 20410 -SNPVIEW1_URL = snpview?snp=20410 - -DISEASEVIEW1_TEXT = cancer -DISEASEVIEW1_URL = diseaseview?disease=cancer - -HAPLOVIEW1_TEXT = CHR22_A_10 -HAPLOVIEW1_URL = haploview?haplotype=CHR22_A_10 -HAPLOVIEW2_TEXT = CHR22_A_11 -HAPLOVIEW2_URL = haploview?haplotype=CHR22_A_11 - -FAMILYVIEW1_TEXT = ENSF00000000117 -FAMILYVIEW1_URL = familyview?family=ENSF00000000117 diff --git a/docs/ensembl_das/demo.ini b/docs/ensembl_das/demo.ini deleted file mode 100644 index 53a0dd3a0..000000000 --- a/docs/ensembl_das/demo.ini +++ /dev/null @@ -1,9 +0,0 @@ -[general] -prefork=5 -maxclients=10 -port=9000 - -[demo] -adaptor = demo -state = on -needed_arg = okay diff --git a/docs/ensembl_das/demo.pm b/docs/ensembl_das/demo.pm deleted file mode 100644 index 952b84e36..000000000 --- a/docs/ensembl_das/demo.pm +++ /dev/null @@ -1,86 +0,0 @@ -######### -# Author: ensembl dev -# Maintainer: ensembl dev -# Created: 2004-03-08 -# Last Modified: 2004-03-12 -# Builds DAS features for a demo database -# -package Bio::Das::ProServer::SourceAdaptor::demo; - -=head1 AUTHOR - -Ensembl Dev - -This library is free software; you can redistribute it and/or modify -it under the same terms as Perl itself. See DISCLAIMER.txt for -disclaimers of warranty. - -=cut - -use strict; -use vars qw(@ISA); -use Bio::Das::ProServer::SourceAdaptor; -@ISA = qw(Bio::Das::ProServer::SourceAdaptor); - -my @id = qw(CLAT_HUMAN CLAT_HUMAN CLAT_HUMAN 10 AC073366 AC073366); -my @id2 = qw(CLAT_HUMAN CLAT_HUMAN not_same 10 AC073366 AC073366); -my @names = qw(PF00755 PF00755 CLAT_HUMAN 10 AC073366 AC073366); -my @starts = qw(30 100 50 50150000 1 ); -my @ends = qw(748 550 650 50200000 900); -my @method =qw(description PFAM SCOP REPEAT BLAST ANOTH); -my @types = qw(typ1 typ2 typ3 typ4 typ5 typ6); - - -sub init { - my $self = shift; - $self->{'dsn'} = "demo"; - $self->{'capabilities'} = { - 'features' => '1.0', - }; -} - -sub length { - return 0; -} - - -sub build_features { - my ($self, $opts) = @_; - my $spid = $opts->{'segment'}; - my $start = $opts->{'start'}; - my $end = $opts->{'end'}; - - # print $self->config->{'needed_arg'}."\n"; - # - #Create some dummy notes - # - my @notes=(); - for(my $i=0; $i <= $#id; $i++){ - $notes[$i] = "Demo annotation $i ??"; - } - - #create array of fearutes to return; - my @features = (); - for(my $i=0; $i <= $#id; $i++){ - - next if(($id[$i] ne $spid) || - (defined($start) and ($ends[$i] < $start or $starts[$i] > $end))); - push @features, { - 'id' => $id2[$i], - 'type' => $types[$i], # needed for proteinview protein - # features names in graphical view - 'feature'=> $names[$i], - 'method' => $method[$i], - 'start' => $starts[$i], - 'end' => $ends[$i], - 'note' => $notes[$i], - 'link' => 'http://www.ensembl.org/Docs/enstour/', - 'linktxt' => 'Tour', - }; - } - - return @features; -} - - -1; diff --git a/docs/ensembl_das/ensembl-das.pdf b/docs/ensembl_das/ensembl-das.pdf deleted file mode 100644 index b6dfabeb90c5f1ae807d855d485fd52c5d3ddec0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 163414 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�CHW2+GFA_|Adq#>2V!>gL1iL!>L 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
%f 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 diff --git a/docs/ensembl_das/ensembl-das.sxw b/docs/ensembl_das/ensembl-das.sxw deleted file mode 100644 index e131d2a65be9502e5e05c7fc89ee8f31897e5463..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12730 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�mHhsD2}{}9ni#KHBKq5o+A zcQC;Dh4+`i3MsRStFv-QbFwI~zF7Z*=--NeWByci1_7NI0YGyrdmw=H51_q?9Z-;5 z#@^h4l$D(MFB<<>7~B61#{PeUar_PY`)mY(Uxoz&TbcdoA=t#!7RYGk;A{^TB!4-x z|8U#N?uF0)Y;-WS2AaL(J^nk?@gGRm-};UwP9_#kCXSZB(d=v-f0=f1a02{pW#!`f ztzl;QqGI+Ek$?BGvatO@*$i=|FKLS*0uu` z@nAi*wRdjqDgp!6ayu7b$!CT7w zXXxt|WE=WpK~$jJ<$6M@pYrh}P~vY?n?M8lIy1rUR?D;8gR=fn4BQ^7GP=;|{7X@L zvyHo^36w3mN~_YKk&pB`U;R;+PgSrbqGr9Us*OJjp4};u^q#tTMoq-q)F!8n*vr_- zrVCyhRScdbi!ThU#Z0YSw=Fw8x+}Cn3Z3(u#hk}-b-~n(_Qfg6!Ub zMl>O^Fmj?nYA(>3=YCoBlA@%$B6TZtCg{GcGdA$P0&{fzoIzhh#Ydkg*egW9CB5-y zRgorLu%8}?05y_A9for|vVrEI(^!&LGE&-kgdEHhp$9|UO$|b&2pi|Y`V!f@i@$M# zpa_@O;;LvD?VrQsJSMX?>WP=?)-5Xc<6zaNZami}0NSMZ*h*#bwrV=ET3q0=TWGqg zmVGp_2s_W6$2$CUc1rfrcoVf1U-E7JBUUYfQ5+QN*^tmF?N&}E=K${|d)|XuE6>T% z*Vwyveis_E+p)wq>|amQWZ2qK2c)SXdo>87*FUa}2fo3@f$3{G@%` z+Sha>{>lkG=UMI(Y`B>iT(EM1AGSy{9=8?Jb0<7aKiQbp4hZSNBWfWO3jT~iszoEL zD^r38AhwQXqbzJpBOjd^Q|wGfBG>mO2PJK*XT{8+BLLDAE~hQf^&2 zDQY9XNf*M^X_81hwT!bcbD6u~1Re{Qim03I7$>N}sn89kDo#CO>AoHC{TsVai+@ZR zf72lhJ6lH`@>7CcE>91d&CJbpE+$0NMt<4{K%=#9JQtKm`H1-HnaxTjkVXkdo9h$x z$kV$dp*kCAXCeg>{%@1A`-?*1sWYzACpMj5=L7#Z9#>Ki4zax=D^Cw zuL!9tgOh;I!zSnUT&$XE*iw`6r}gJ^YUcg!2I~g&D_(cs2IUQyY>oQvKZp#Q=%IVK zrPTK9fiY&AjJc0*Zh(C18*npsAI%-2me8$HwiS!rxUKO4d`GZ-BpN}bmC*|f_)k3e>R0YlaE=3@%H;cBmT5gQ& zdCyngHILUgcxc#M+})?#PYE4dzZ=XAnY6R)pUt((;e0+g_qIf()i5gIbjfuudj4{i zq?!?dwcJW{4S{Vv`TS+d!1+!gOmnU!zmD~WXBFOK3IeaLPPk##KHL$~7j0ltoKzU^ z4PL$o+S)XYxO^~C`pQTAH=T-6Z|3}wIShpX0+DcE*R8(Pc~LXUTcA0R_(oske#%@y zIYy%(y&z?!Fg>Sfy@bMpJZKc}HVB#Q$j#D1OOfnOMAORFm+6-EW+Y(sQ2NY$StM;3 z6Z$Gp3U+A4yR98KCI-Vg%4A0qVQkg`6e788#s{lH;l%0!v7mhQ^mD}nfjOZ;el(3= zIvrT?h6I~G$)8rIe;Mcq?(Q!@3U^bQ0~|0-WIpb(5kxHw{G58*UkRt?swhj!WOq=O zt8(Ywy$*)ktdVD=#-6D_OC_5)e5dbV&&hP$>N)6kd~@mZl3Nas06ib)3Jd#^z5bH4 z{@*X3*e{n)1qpRgMj1s(W;+vmEAy9S!>>hQX-uVkCktB8wNRjkhtpW07)&k(orbj> z93EfONT9aUL0_Bl*_Cs!2vwE1X?1Dy@v~=D!am5X`?KfRh&hXr1!*6hmbJ&wT7{27 zx=E|Mw$OI-@Kf>J7fD?Mm9_5`Xy4bj9_=VdMVD#;E*g2*c_Sp~=Uz-gK}~&okmw0SN6tNm@dt#aGtbAN+R7R}F5Js^^J-^G`~P1h;6?n$w*ddC_|L`uug69I zDxq)w`S9qs-mm`u=~m!hdb^bWx-s~z_1n#VhSaZl_g|%w_TOjW|J3{^ZNEb9U*&}9 azXYJN9PGe6wf_gu9vi#> diff --git a/docs/schema_description/README b/docs/schema_description/README deleted file mode 100644 index 0933f2181..000000000 --- a/docs/schema_description/README +++ /dev/null @@ -1 +0,0 @@ -Update schema_description.hmtl and copy to ensembl-webcode/htdocs/info/software/core/schema diff --git a/docs/schema_description/process-saxon.bat b/docs/schema_description/process-saxon.bat deleted file mode 100755 index 90081efd2..000000000 --- a/docs/schema_description/process-saxon.bat +++ /dev/null @@ -1,5 +0,0 @@ -java -jar "C:/Program Files/saxon/saxon7.jar" tables.xml xml2html.xsl > schema_description.html - -java -jar "C:/Program Files/saxon/saxon7.jar" tables.xml xml2wiki.xsl > schema_description.txt - -copy /y schema_description.html ..\..\..\private-web\htdocs\Docs\ \ No newline at end of file diff --git a/docs/schema_description/process-saxon.sh b/docs/schema_description/process-saxon.sh deleted file mode 100755 index 8635bd894..000000000 --- a/docs/schema_description/process-saxon.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -java -jar "/nfs/acari/gp1/saxon/saxon8.jar" tables.xml xml2html.xsl > schema_description.html - -java -jar "/nfs/acari/gp1/saxon/saxon8.jar" tables.xml xml2wiki.xsl > schema_description.txt - -cp schema_description.html ../../../private-web/htdocs/Docs/ - -cd ../../../private-web/htdocs/Docs/ - -cvs commit schema_description.html \ No newline at end of file diff --git a/docs/schema_description/schema_description.dtd b/docs/schema_description/schema_description.dtd deleted file mode 100644 index 653cfa50b..000000000 --- a/docs/schema_description/schema_description.dtd +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/schema_description/schema_description.html b/docs/schema_description/schema_description.html deleted file mode 100644 index cc43c71c3..000000000 --- a/docs/schema_description/schema_description.html +++ /dev/null @@ -1,948 +0,0 @@ - - - - - EnsEMBL Core Schema Documentation - - - -

EnsEMBL Core Schema Documentation

-

Introduction

-

This document gives a high-level description of the tables that make up the EnsEMBL core schema. Tables are grouped into logical - groups, and the purpose of each table is explained. It is intended to allow people to familiarise themselves with the schema - when encountering it for the first time, or when they need to use some tables that they've not used before. Note that while - some of the more important columns in some of the tables are discussed, this document makes no attempt to enumerate all of - the names, types and contents of every single table. Some concepts which are referred to in the table descriptions are given - at the end of this document; these are linked to from the table description where appropriate. -

-

Different tables are populated throughout the gene build process:

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
StepProcess
0Create empty schema, populate meta table
1Load DNA - populates dna, clone, contig, chromosome, assembly tables
2Analyze DNA (raw computes) - populates genomic feature/analysis tables
3Build genes - populates exon, transcript,etc. gene-related tables
4aAnalyze genes - populate protein_feature, xref tables, interpro
4bID mapping
-

-

This document refers to version 52 of the EnsEMBL core schema. -

-
-

Quick links to tables:

-

Fundamental tables

- -

Features and analyses

- -

ID Mapping - (Tables involved in mapping identifiers between releases) - -

- -

Exernal references - (Tables used for storing links to and details about objects that are stored in other databases) - -

- -

Miscellaneous - (Tables that don't fit anywhere else.) - -

- -
-

Fundamental tables

-

- - - - -

seq_region

-

Stores information about sequence regions. The primary key is used as a pointer into the dna table so that actual sequence - can be obtained, and the coord_system_id allows sequence regions of multiple types to be stored. Clones, contigs and chromosomes - are all now stored in the seq_region table. Contigs are stored with the co-ordinate system 'contig'. The relationship between - contigs and clones is stored in the assembly table. The relationships between contigs and chromosomes, and between contigs - and supercontigs, are stored in the assembly table. -

-

See also:

-

Tables:

-
    -
  • dna - 1:1 relationship to the dna table. -
  • -
  • coord_system - Describes which co-ordinates a particular feature is stored in. -
  • -
- - - - -

coord_system

-

Stores information about the available co-ordinate systems for this species. Note that there must be one co-ordinate system - that has the attribute "top_level" and one that has the attribute "sequence_level". -

-

See also:

-

Tables:

-
    -
  • seq_region - Has coord_system_id foreign key to allow joins with the coord_system table. -
  • -
- - - - -

seq_region_attrib

-

Allows "attributes" to be defined for certain seq_regions. Provides a way of storing extra information about particular seq_regions - without adding extra columns to the seq_region table. e.g. -

-

See also:

-

Tables:

- - - - - -

attrib_type

-

Provides codes, names and desctriptions of attribute types.

-

See also:

-

Tables:

- - - - - -

dna

-

Contains DNA sequence. This table has a 1:1 relationship with the contig table.

-

See also:

-

Tables:

- - - - - -

dnac

-

Stores compressed DNA sequence.

- - - - -

assembly

-

The assembly table states, which parts of seq_regions are exactly equal. It enables to transform coordinates between seq_regions. Typically this contains how chromosomes are made of contigs, clones out of contigs, and chromosomes out of supercontigs. It allows you to artificially chunk chromosome sequence into smaller parts. -

-

See also:

-

Tables:

-
    -
  • seq_region - Stores extra information about both the assembled object and its component parts -
  • -
-

Concepts:

-
    -
  • supercontigs - The mapping between contigs and supercontigs is also stored in the assembly table. -
  • -
- - - - -

assembly_exception

-

Allows multiple sequence regions to point to the same sequence, analogous to a symbolic link in a filesystem pointing to the - actual file. This mechanism has been implemented specifically to support haplotypes and PARs, but may be useful for other - similar structures in the future. -

-

See also:

-

Tables:

- - - - - -

karyotype

-

Describes bands that can be stained on the chromosome.

- - - - -

exon

-

Stores data about exons. Associated with transcripts via exon_transcript. Allows access to contigsseq_regions.

-

See also:

-

Tables:

- - - - - -

exon_stable_id

-

Relates exon IDs in this release to release-independent stable identifiers.

-

See also:

-

Concepts:

-
    -
  • stable_id - Describes the rationale behind the use of stable identifiers. -
  • -
- - - - - -

transcript

-

Stores information about transcripts. Has seq_region_start, seq_region_end and seq_region_strand for faster retrieval and - to allow storage independently of genes and exons. Note that a transcript is usually associated with a translation, but may - not be, e.g. in the case of pseudogenes and RNA genes (those that code for RNA molecules). -

- - - - -

transcript_stable_id

-

Relates transcript IDs in this release to release-independent stable identifiers.

-

See also:

-

Concepts:

-
    -
  • stable_id - Describes the rationale behind the use of stable identifiers. -
  • -
- - - - -

transcript_attrib

-

Enables storage of attributes that relate to transcripts.

-

See also:

-

Tables:

- - - - - -

translation_attrib

-

Enables storage of attributes that relate to translations.

-

See also:

-

Tables:

- - - - - -

exon_transcript

-

Relationship table linking exons with transcripts. The rank column ndicates the 5' to 3' position of the exon within the transcript, - i.e. a rank of 1 means the exon is the 5' most within this transcript. -

-

See also:

-

Tables:

-
    -
  • exon - One of the entities related by the exon_transcript table. -
  • -
  • transcript - One of the entities related by the exon_transcript table. -
  • -
- - - - - -

gene

-

Allows transcripts to be related to genes.

- - - - -

gene_stable_id

-

Relates gene IDs in this release to release-independent stable identifiers.

-

See also:

-

Concepts:

-
    -
  • stable_id - Describes the rationale behind the use of stable identifiers. -
  • -
- - - - -

translation

-

Describes which parts of which exons are used in translation. The seq_start and seq_end columns are 1-based offsets into the - *relative* coordinate system of start_exon_id and end_exon_id. i.e, if the translation starts at the first base of the exon, - seq_start would be 1. Transcripts are related to translations by the transcript_id key in this table. -

- - - - -

translation_stable_id

-

Relates translation IDs in this release to release-independent stable identifiers.

-

See also:

-

Concepts:

-
    -
  • stable_id - Describes the rationale behind the use of stable identifiers. -
  • -
- - - - - - -

supporting_feature

-

Describes the exon prediction process by linking exons to DNA or protein alignment features. As in several other tables, the - feature_id column is a foreign key; the feature_type column specifies which table feature_id refers to. -

- - - - -

prediction_transcript

-

Stores transcripts that are predicted by ab initio gene finder programs (e.g. genscan, SNAP). Unlike EnsEMBL transcripts they - are not supported by any evidence. -

- - - - -

prediction_exon

-

Stores exons that are predicted by ab initio gene finder programs. Unlike EnsEMBL exons they are not supported by any evidence.

- - - - -

meta

-

Stores data about the data in the current schema. Taxonomy information, version information and the default value for the - type column in the assembly table are stored here. Unlike other tables, data in the meta table is stored as key/value pairs. - Also stores (via assembly.mapping keys) the relationships between co-ordinate systms in the assembly table. -

-

See also:

-

Tables:

-
    -
  • assembly - The default value for assembly.type is stored in the meta table. -
  • -
- - - - - -

meta_coord

-

Describes which co-ordinate systems the different feature tables use.

-

See also:

-

Tables:

- - - -
-

Features and analyses

-

- - - - -

analysis

-

Usually describes a program and some database that together are used to create a feature on a piece of sequence. Each feature - is marked with an analysis_id. The most important column is logic_name, which is used by the webteam to render a feature correctly - on contigview (or even retrieve the right feature). Logic_name is also used in the pipeline to identify the analysis which - has to run in a given status of the pipeline. The module column tells the pipeline which Perl module does the whole analysis, - typically a RunnableDB module. -

-

See also:

-

Tables:

- - - -

analysis_description

-

Allows the storage of a textual description of the analysis, as well as a "display label", primarily for the Ensembl web site.

-

See also:

-

Tables:

-
    -
  • analysis - Holds most analysis information. -
  • -
- - - - -

dna_align_feature

-

Stores DNA sequence alignments generated from Blast (or Blast-like) comparisons.

-

See also:

-

Concepts:

-
    -
  • cigar_line - Used to encode gapped alignments. -
  • -
- - - - -

protein_align_feature

-

Stores translation alignments generated from Blast (or Blast-like) comparisons.

-

See also:

-

Concepts:

-
    -
  • cigar_line - Used to encode gapped alignments. -
  • -
- - - -

repeat_feature

-

Describes sequence repeat regions.

- - - - -

marker_feature

-

Used to describe marker positions.

-

See also:

-

Tables:

- - - - - -

qtl_feature

-

Describes Quantitative Trail Loci (QTL) positions as obtained from inbreeding experiments. Note the values in this table are - in chromosomal co-ordinates. Also, this table is not populated all schemas. -

-

See also:

-

Tables:

-
    -
  • qtl - Describes the markers used to define a QTL. -
  • -
  • qtl_synonym - Stores alternative names for QTLs -
  • -
- - - - -

prediction_transcript

-

Stores information about ab initio gene transcript predictions.

- - - - -

simple_feature

-

Describes general genomic features that don't fit into any of the more specific feature tables.

- - - - -

protein_feature

-

Describes features on the translations (as opposed to the DNA sequence itself), i.e. parts of the peptide. In peptide co-ordinates - rather than contig co-ordinates. -

-

See also:

-

Tables:

-
    -
  • analysis - Describes how protein features were derived. -
  • -
-

Concepts:

- - - - - -

density_feature

-

.

-

See also:

-

Tables:

- - - - - -

density_type

-

.

-

See also:

-

Tables:

- - - - - -

qtl

-

Describes the markers (of which there may be up to three) which define Quantitative Trait Loci. Note that QTL is a statistical - technique used to find links between certain expressed traits and regions in a genetic map. -

-

See also:

-

Tables:

-
    -
  • qtl_synonym - Describes alternative names for QTLs -
  • -
- - - - -

qtl_synonym

-

Describes alternative names for Quantitative Trait Loci (QTLs).

- - - - -

marker

-

Stores data about the marker itself - e.g. the primer sequences used.

-

See also:

-

Tables:

- - - - - -

marker_map_location

-

Allows storage of information about the postion of a marker - these are positions on genetic or radiation hybrid maps (as - opposed to positions on the assembly, which EnsEMBL has determined and which are stored in marker_feature). -

-

See also:

-

Tables:

- - - - - -

marker_synonym

-

Stores alternative names for markers, as well as their sources.

-

See also:

-

Tables:

-
    -
  • marker - Stores the original marker. -
  • -
- - - - -

map

-

Stores the names of different genetic or radiation hybrid maps, for which there is marker map information.

-

See also:

-

Tables:

-
    -
  • marker - Stores the original marker. -
  • -
- - - - -

repeat_consensus

-

Stores consenus sequences obtained from analysing repeat features.

- - - - -

misc_feature

-

Alllows for storage of arbitrary features.

-

See also:

-

Tables:

-
    -
  • misc_attrib - Allows storage of arbitrary attributes for the misc_features. -
  • -
- - - - -

misc_attrib

-

Stores arbitrary attributes about the features in the misc_feature table.

-

See also:

-

Tables:

- - - - - -

misc_set

-

Defines "sets" that the features held in the misc_feature table can be grouped into.

-

See also:

-

Tables:

- - - - - -

misc_feature_misc_set

-

Defines which of the features in misc_feature are in which of the sets defined in misc_set

-

See also:

-

Tables:

- - - - - -

alt_allele

-

Stores information about genes on haplotypes that may be orthologous.

- - - - - - -
-

ID Mapping

-

Tables involved in mapping identifiers between releases

- - -

mapping_session

-

Stores details of ID mapping sessions - a mapping session represents the session when stable IDs where mapped from one database - to another. Details of the "old" and "new" databases are stored. -

-

See also:

-

Tables:

-
    -
  • stable_id_event - Stores details of what happened during the mapping session. -
  • -
-

Concepts:

-
    -
  • stable_id - Describes the need for ID mapping. -
  • -
- - - - -

stable_id_event

-

Represents what happened to all gene, transcript and translation stable IDs during a mapping session. This includes which - IDs where deleted, created and related to each other. Each event is represented by one or more rows in the table. -

-

See also:

-

Tables:

-
    -
  • mapping_session - Describes the session when events stored in this table occured. -
  • -
- - - - -

gene_archive

-

Contains a snapshot of the stable IDs associated with genes deleted or changed between releases. Includes gene, transcript - and translation stable IDs. -

- - - - -

peptide_archive

-

Contains the peptides for deleted or changed translations.

- - -
-

Exernal references

-

Tables used for storing links to and details about objects that are stored in other databases

- - - - -

xref

-

Holds data about objects which are external to EnsEMBL, but need to be associated with EnsEMBL objects. Information about - the database that the external object is stored in is held in the external_db table entry referred to by the external_db column. -

-

See also:

-

Tables:

- - - - - -

external_db

-

Stores data about the external databases in which the objects described in the xref table are stored.

-

See also:

-

Tables:

-
    -
  • xref - Holds data about the external objects that are stored in the external_dbs. -
  • -
- - - - -

external_synonym

-

Some xref objects can be referred to by more than one name. This table relates names to xref IDs.

-

See also:

-

Tables:

-
    -
  • xref - Holds most of the data about xrefs. -
  • -
- - - - -

object_xref

-

Describes links between EnsEMBL objects and objects held in external databases. The EnsEMBL object can be one of several types; - the type is held in the ensembl_object_type column. The ID of the particular EnsEMBL gene, translation or whatever is given - in the ensembl_id column. The xref_id points to the entry in the xref table that holds data about the external object.Each - EnsEMBL object can be associated with zero or more xrefs. An xref object can be associated with one or more EnsEMBL objects. -

-

See also:

-

Tables:

-
    -
  • xref - Stores the data about each externally-referenced object. -
  • -
  • go_xref - Stores extra data for relationships to GO objects. -
  • -
  • identity_xref - Stores data about how 'good' the relationships are -
  • -
- - - - -

go_xref

-

Links between EnsEMBL objects and external objects produced by GO (Gene Ontology) require some additional data which is not - stored in the object_xref table. -

-

See also:

-

Tables:

-
    -
  • object_xref - Stores basic, non GO-specific information for GO xrefs -
  • -
-

Links:

-
    -
  • GO - Gene Ontology website -
  • -
- - - - -

identity_xref

-

Describes how well a particular xref obeject matches the EnsEMBL object.

-

See also:

-

Tables:

-
    -
  • object_xref - Stores basic information about EnsEMBL object-xref mapping -
  • -
- - - - -
-

Miscellaneous

-

Tables that don't fit anywhere else.

- - -

interpro

-

Allows storage of links to the InterPro database. InterPro is a database of protein families, domains and functional sites - in which identifiable features found in known proteins can be applied to unknown protein sequences. -

-

See also:

-

Links:

- - - - -
-

Concepts

-
-
-

co-ordinates

-
-
-

There are several different co-ordinate systems used in the EnsEMBL database and API. For every co-ordinate system, the fundamental - unit is one base. The differences between co-ordinate systems lie in where a particular numbered base lies, and the start - position it is relative to. CONTIG co-ordinates, also called 'raw contig' co-ordinates or 'clone fragments' are relative to - the first base of the first contig of a clone. Note that the numbering is from 1, i.e. the very first base of the first contig - of a clone is numbered 1, not 0. In CHROMOSOMAL co-ordinates, the co-ordinates are relative to the first base of the chromosome. - Again, numbering is from 1. The seq_region table can store sequence regions in any of the co-ordinate systems defined in the - coord_system table. -

-
-
-

supercontigs

-
-
-

A supercontig is made up of a group of adjacent or overlapping contigs.

-
-
-

sticky_rank

-
-
-

The sticky_rank differentiates between fragments of the same exon; i.e for exons that span multiple contigs, all the fragments - would have the same ID, but different sticky_rank values -

-
-
-

stable_id

-
-
-

Gene predictions have changed over the various releases of the EnsEMBL databases. To allow the user to track particular gene - predictions over changing co-ordinates, each gene-related prediction is given a 'stable identifier'. If a prediction looks - similar between two releases, we try to give it the same name, even though it may have changed position and/or had some sequence - changes. -

-
-
-

cigar_line

-
-
-

This allows the compact storage of gapped alignments by storing the maximum extent of the matches and then a text string which - encodes the placement of gaps inside the alignment. Colloquially inside Ensembl this is called a and its adoption has shrunk - the number of rows in the feature table around 4-fold. -

-
-
-
- - \ No newline at end of file diff --git a/docs/schema_description/tables.html b/docs/schema_description/tables.html deleted file mode 100644 index f903d24aa..000000000 --- a/docs/schema_description/tables.html +++ /dev/null @@ -1,918 +0,0 @@ - - - - - EnsEMBL Core Schema Documentation - - - -

EnsEMBL Core Schema Documentation

-

Introduction

-

This document gives a high-level description of the tables that make up the EnsEMBL core schema. Tables are grouped into logical - groups, and the purpose of each table is explained. It is intended to allow people to familiarise themselves with the schema - when encountering it for the first time, or when they need to use some tables that they've not used before. Note that while - some of the more important columns in some of the tables are discussed, this document makes no attempt to enumerate all of - the names, types and contents of every single table. Some concepts which are referred to in the table descriptions are given - at the end of this document; these are linked to from the table description where appropriate. -

-

Different tables are populated throughout the gene build process:

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
StepProcess
0Create empty schema, populate meta table
1Load DNA - populates dna, clone, contig, chromosome, assembly tables
2Analyze DNA (raw computes) - populates genomic feature/analysis tables
3Build genes - populates exon, transcript,etc. gene-related tables
4aAnalyze genes - populate protein_feature, xref tables, interpro
4bID mapping
-

-

This document refers to version 21 of the EnsEMBL core schema. You are looking at revision 1.7 of this document. -

-
-

Quick links to tables:

-

Fundamental tables

- -

Features and analyses

- -

ID Mapping - (Tables involved in mapping identifiers between releases) - -

- -

Exernal references - (Tables used for storing links to and details about objects that are stored in other databases) - -

- -

Miscellaneous - (Tables that don't fit anywhere else.) - -

- -
-

Fundamental tables

-

- - - - -

seq_region

-

Stores information about sequence regions. The primary key is used as a pointer into the dna table so that actual sequence - can be obtained, and the coord_system_id allows sequence regions of multiple types to be stored. Clones, contigs and chromosomes - are all now stored in the seq_region table. Contigs are stored with the co-ordinate system 'contig'. The relationship between - contigs and clones is stored in the assembly table. The relationships between contigs and chromosomes, and between contigs - and supercontigs, are stored in the assembly table. -

-

See also:

-

Tables:

-
    -
  • dna - 1:1 relationship to the dna table. -
  • -
  • coord_system - Describes which co-ordinates a particular feature is stored in. -
  • -
- - - - -

coord_system

-

Stores information about the available co-ordinate systems for this species. Note that there must be one co-ordinate system - that has the attribute "top_level" and one that has the attribute "sequence_level". -

-

See also:

-

Tables:

-
    -
  • seq_region - Has coord_system_id foreign key to allow joins with the coord_system table. -
  • -
- - - - -

seq_region_attrib

-

Allows "attributes" to be defined for certain seq_regions. Provides a way of storing extra information about particular seq_regions - without adding extra columns to the seq_region table. e.g. -

-

See also:

-

Tables:

- - - - - -

attrib_type

-

Provides codes, names and desctriptions of attribute types.

-

See also:

-

Tables:

- - - - - -

dna

-

Contains DNA sequence. This table has a 1:1 relationship with the contig table.

-

See also:

-

Tables:

- - - - - -

dnac

-

Stores compressed DNA sequence.

- - - - -

assembly

-

Describes how contig sequences make up the chromosomal sequence. The data in this table defines the "static golden path", - i.e. the best effort draft full genome sequence as determined by the UCSC or NCBI (depending which assembly you are using) - Each row represents a contig (raw_id, FK from contig table) at least part of which is present in the golden path. The part - of the contig that is in the path is delimited by fields raw_start and raw_end and the absolute position within the golden - path chromosome (chromosome_id) is given by chr_start and chr_end. Each contig is in a "supercontig" such as a "fingerprint - clone contig" or NT contig and the super contig is identified by the superctg_name column and the position of the specified - section of the contig within its supercontig is given by fields superctg_start and superctg_end. -

-

See also:

-

Tables:

-
    -
  • seq_region - Stores extra information about both the assembled object and its component parts -
  • -
-

Concepts:

-
    -
  • supercontigs - The mapping between contigs and supercontigs is also stored in the assembly table. -
  • -
- - - - -

assembly_exception

-

Allows multiple sequence regions to point to the same sequence, analogous to a symbolic link in a filesystem pointing to the - actual file. This mechanism has been implemented specifically to support haplotypes and PARs, but may be useful for other - similar structures in the future. -

-

See also:

-

Tables:

- - - - - -

karyotype

-

Describes bands that can be stained on the chromosome.

- - - - -

exon

-

Stores data about exons. Associated with transcripts via exon_transcript. Allows access to contigsseq_regions.

-

See also:

-

Tables:

- - - - - -

exon_stable_id

-

Relates exon IDs in this release to release-independent stable identifiers.

-

See also:

-

Concepts:

-
    -
  • stable_id - Describes the rationale behind the use of stable identifiers. -
  • -
- - - - - -

transcript

-

Stores information about transcripts. Has seq_region_start, seq_region_end and seq_region_strand for faster retrieval and - to allow storage independently of genes and exons. Note that a transcript is usually associated with a translation, but may - not be, e.g. in the case of pseudogenes and RNA genes (those that code for RNA molecules). -

- - - - -

transcript_stable_id

-

Relates transcript IDs in this release to release-independent stable identifiers.

-

See also:

-

Concepts:

-
    -
  • stable_id - Describes the rationale behind the use of stable identifiers. -
  • -
- - - - - -

exon_transcript

-

Relationship table linking exons with transcripts. The rank column ndicates the 5' to 3' position of the exon within the transcript, - i.e. a rank of 1 means the exon is the 5' most within this transcript. -

-

See also:

-

Tables:

-
    -
  • exon - One of the entities related by the exon_transcript table. -
  • -
  • transcript - One of the entities related by the exon_transcript table. -
  • -
- - - - - -

gene

-

Allows transcripts to be related to genes.

- - - - -

gene_stable_id

-

Relates gene IDs in this release to release-independent stable identifiers.

-

See also:

-

Concepts:

-
    -
  • stable_id - Describes the rationale behind the use of stable identifiers. -
  • -
- - - - - -

gene_description

-

Where appropriate, allows specific genes to be given a description.

-

See also:

-

Tables:

-
    -
  • gene - for the actual gene. -
  • -
- - - - - -

translation

-

Describes which parts of which exons are used in translation. The seq_start and seq_end columns are 1-based offsets into the - *relative* coordinate system of start_exon_id and end_exon_id. i.e, if the translation starts at the first base of the exon, - seq_start would be 1. Transcripts are related to translations by the transcript_id key in this table. -

- - - - -

translation_stable_id

-

Relates translation IDs in this release to release-independent stable identifiers.

-

See also:

-

Concepts:

-
    -
  • stable_id - Describes the rationale behind the use of stable identifiers. -
  • -
- - - - - - -

supporting_feature

-

Describes the exon prediction process by linking exons to DNA or protein alignment features. As in several other tables, the - feature_id column is a foreign key; the feature_type column specifies which table feature_id refers to. -

- - - - -

prediction_transcript

-

Stores transcripts that are predicted by ab initio gene finder programs (e.g. genscan, SNAP). Unlike EnsEMBL transcripts they - are not supported by any evidence. -

- - - - -

prediction_exon

-

Stores exons that are predicted by ab initio gene finder programs. Unlike EnsEMBL exons they are not supported by any evidence.

- - - - -

meta

-

Stores data about the data in the current schema. Taxonomy information, version information and the default value for the - type column in the assembly table are stored here. Unlike other tables, data in the meta table is stored as key/value pairs. - Also stores (via assembly.mapping keys) the relationships between co-ordinate systms in the assembly table. -

-

See also:

-

Tables:

-
    -
  • assembly - The default value for assembly.type is stored in the meta table. -
  • -
- - - - - -

meta_coord

-

Describes which co-ordinate systems the different feature tables use.

-

See also:

-

Tables:

- - - -
-

Features and analyses

-

- - - - -

analysis

-

Usually describes a program and some database that together are used to create a feature on a piece of sequence. Each feature - is marked with an analysis_id. The most important column is logic_name, which is used by the webteam to render a feature correctly - on contigview (or even retrieve the right feature). Logic_name is also used in the pipeline to identify the analysis which - has to run in a given status of the pipeline. The module column tells the pipeline which Perl module does the whole analysis, - typically a RunnableDB module. -

- - - - - -

dna_align_feature

-

Stores DNA sequence alignments generated from Blast (or Blast-like) comparisons.

-

See also:

-

Concepts:

-
    -
  • cigar_line - Used to encode gapped alignments. -
  • -
- - - - -

protein_align_feature

-

Stores translation alignments generated from Blast (or Blast-like) comparisons.

-

See also:

-

Concepts:

-
    -
  • cigar_line - Used to encode gapped alignments. -
  • -
- - - -

repeat_feature

-

Describes sequence repeat regions.

- - - - -

marker_feature

-

Used to describe marker positions.

-

See also:

-

Tables:

- - - - - -

qtl_feature

-

Describes Quantitative Trail Loci (QTL) positions as obtained from inbreeding experiments. Note the values in this table are - in chromosomal co-ordinates. Also, this table is not populated all schemas. -

-

See also:

-

Tables:

-
    -
  • qtl - Describes the markers used to define a QTL. -
  • -
  • qtl_synonym - Stores alternative names for QTLs -
  • -
- - - - -

prediction_transcript

-

Stores information about ab initio gene transcript predictions.

- - - - -

simple_feature

-

Describes general genomic features that don't fit into any of the more specific feature tables.

- - - - -

protein_feature

-

Describes features on the translations (as opposed to the DNA sequence itself), i.e. parts of the peptide. In peptide co-ordinates - rather than contig co-ordinates. -

-

See also:

-

Tables:

-
    -
  • analysis - Describes how protein features were derived. -
  • -
-

Concepts:

- - - - - -

density_feature

-

.

-

See also:

-

Tables:

- - - - - -

density_type

-

.

-

See also:

-

Tables:

- - - - - -

qtl

-

Describes the markers (of which there may be up to three) which define Quantitative Trait Loci. Note that QTL is a statistical - technique used to find links between certain expressed traits and regions in a genetic map. -

-

See also:

-

Tables:

-
    -
  • qtl_synonym - Describes alternative names for QTLs -
  • -
- - - - -

qtl_synonym

-

Describes alternative names for Quantitative Trait Loci (QTLs).

- - - - -

marker

-

Stores data about the marker itself - e.g. the primer sequences used.

-

See also:

-

Tables:

- - - - - -

marker_map_location

-

Allows storage of information about the postion of a marker - these are positions on genetic or radiation hybrid maps (as - opposed to positions on the assembly, which EnsEMBL has determined and which are stored in marker_feature). -

-

See also:

-

Tables:

- - - - - -

marker_synonym

-

Stores alternative names for markers, as well as their sources.

-

See also:

-

Tables:

-
    -
  • marker - Stores the original marker. -
  • -
- - - - -

map

-

Stores the names of different genetic or radiation hybrid maps, for which there is marker map information.

-

See also:

-

Tables:

-
    -
  • marker - Stores the original marker. -
  • -
- - - - -

repeat_consensus

-

Stores consenus sequences obtained from analysing repeat features.

- - - - -

misc_feature

-

Alllows for storage of arbitrary features.

-

See also:

-

Tables:

-
    -
  • misc_attrib - Allows storage of arbitrary attributes for the misc_features. -
  • -
- - - - -

misc_attrib

-

Stores arbitrary attributes about the features in the misc_feature table.

-

See also:

-

Tables:

- - - - - -

misc_set

-

Defines "sets" that the features held in the misc_feature table can be grouped into.

-

See also:

-

Tables:

- - - - - -

misc_feature_misc_set

-

Defines which of the features in misc_feature are in which of the sets defined in misc_set

-

See also:

-

Tables:

- - - - -
-

ID Mapping

-

Tables involved in mapping identifiers between releases

- - -

mapping_session

-

Stores details of ID mapping sessions - a mapping session represents the session when stable IDs where mapped from one database - to another. Details of the "old" and "new" databases are stored. -

-

See also:

-

Tables:

-
    -
  • stable_id_event - Stores details of what happened during the mapping session. -
  • -
-

Concepts:

-
    -
  • stable_id - Describes the need for ID mapping. -
  • -
- - - - -

stable_id_event

-

Represents what happened to all gene, transcript and translation stable IDs during a mapping session. This includes which - IDs where deleted, created and related to each other. Each event is represented by one or more rows in the table. -

-

See also:

-

Tables:

-
    -
  • mapping_session - Describes the session when events stored in this table occured. -
  • -
- - - - -

gene_archive

-

Contains a snapshot of the stable IDs associated with genes deleted or changed between releases. Includes gene, transcript - and translation stable IDs. -

- - - - -

peptide_archive

-

Contains the peptides for deleted or changed translations.

- - -
-

Exernal references

-

Tables used for storing links to and details about objects that are stored in other databases

- - - - -

xref

-

Holds data about objects which are external to EnsEMBL, but need to be associated with EnsEMBL objects. Information about - the database that the external object is stored in is held in the external_db table entry referred to by the external_db column. -

-

See also:

-

Tables:

- - - - - -

external_db

-

Stores data about the external databases in which the objects described in the xref table are stored.

-

See also:

-

Tables:

-
    -
  • xref - Holds data about the external objects that are stored in the external_dbs. -
  • -
- - - - -

external_synonym

-

Some xref objects can be referred to by more than one name. This table relates names to xref IDs.

-

See also:

-

Tables:

-
    -
  • xref - Holds most of the data about xrefs. -
  • -
- - - - -

object_xref

-

Describes links between EnsEMBL objects and objects held in external databases. The EnsEMBL object can be one of several types; - the type is held in the ensembl_object_type column. The ID of the particular EnsEMBL gene, translation or whatever is given - in the ensembl_id column. The xref_id points to the entry in the xref table that holds data about the external object.Each - EnsEMBL object can be associated with zero or more xrefs. An xref object can be associated with one or more EnsEMBL objects. -

-

See also:

-

Tables:

-
    -
  • xref - Stores the data about each externally-referenced object. -
  • -
  • go_xref - Stores extra data for relationships to GO objects. -
  • -
  • identity_xref - Stores data about how 'good' the relationships are -
  • -
- - - - -

go_xref

-

Links between EnsEMBL objects and external objects produced by GO (Gene Ontology) require some additional data which is not - stored in the object_xref table. -

-

See also:

-

Tables:

-
    -
  • object_xref - Stores basic, non GO-specific information for GO xrefs -
  • -
-

Links:

-
    -
  • GO - Gene Ontology website -
  • -
- - - - -

identity_xref

-

Describes how well a particular xref obeject matches the EnsEMBL object.

-

See also:

-

Tables:

-
    -
  • object_xref - Stores basic information about EnsEMBL object-xref mapping -
  • -
- - - - -
-

Miscellaneous

-

Tables that don't fit anywhere else.

- - -

interpro

-

Allows storage of links to the InterPro database. InterPro is a database of protein families, domains and functional sites - in which identifiable features found in known proteins can be applied to unknown protein sequences. -

-

See also:

-

Links:

- - - - -
-

Concepts

-
-
-

co-ordinates

-
-
-

There are several different co-ordinate systems used in the EnsEMBL database and API. For every co-ordinate system, the fundamental - unit is one base. The differences between co-ordinate systems lie in where a particular numbered base lies, and the start - position it is relative to. CONTIG co-ordinates, also called 'raw contig' co-ordinates or 'clone fragments' are relative to - the first base of the first contig of a clone. Note that the numbering is from 1, i.e. the very first base of the first contig - of a clone is numbered 1, not 0. In CHROMOSOMAL co-ordinates, the co-ordinates are relative to the first base of the chromosome. - Again, numbering is from 1. The seq_region table can store sequence regions in any of the co-ordinate systems defined in the - coord_system table. -

-
-
-

supercontigs

-
-
-

A supercontig is made up of a group of adjacent or overlapping contigs.

-
-
-

sticky_rank

-
-
-

The sticky_rank differentiates between fragments of the same exon; i.e for exons that span multiple contigs, all the fragments - would have the same ID, but different sticky_rank values -

-
-
-

stable_id

-
-
-

Gene predictions have changed over the various releases of the EnsEMBL databases. To allow the user to track particular gene - predictions over changing co-ordinates, each gene-related prediction is given a 'stable identifier'. If a prediction looks - similar between two releases, we try to give it the same name, even though it may have changed position and/or had some sequence - changes. -

-
-
-

cigar_line

-
-
-

This allows the compact storage of gapped alignments by storing the maximum extent of the matches and then a text string which - encodes the placement of gaps inside the alignment. Colloquially inside Ensembl this is called a and its adoption has shrunk - the number of rows in the feature table around 4-fold. -

-
-
-
- - \ No newline at end of file diff --git a/docs/schema_description/tables.txt b/docs/schema_description/tables.txt deleted file mode 100644 index 0ad5d3a0d..000000000 --- a/docs/schema_description/tables.txt +++ /dev/null @@ -1,770 +0,0 @@ - - -=EnsEMBL Core Schema Documentation= - - -==Introduction== - -This document gives a high-level description of the tables that make up the EnsEMBL core schema. Tables are grouped into logical groups, and the purpose of each table is explained. It is intended to allow people to familiarise themselves with the schema when encountering it for the first time, or when they need to use some tables that they've not used before. Note that while some of the more important columns in some of the tables are discussed, this document makes no attempt to enumerate all of the names, types and contents of every single table. Some concepts which are referred to in the table descriptions are given at the end of this document; these are linked to from the table description where appropriate.Different tables are populated throughout the gene build process: - -||Step||Process|| -||0||Create empty schema, populate meta table|| -||1||Load DNA - populates dna, clone, contig, chromosome, assembly tables|| -||2||Analyze DNA (raw computes) - populates genomic feature/analysis tables|| -||3||Build genes - populates exon, transcript,etc. gene-related tables|| -||4a||Analyze genes - populate protein_feature, xref tables, interpro|| -||4b||ID mapping|| - -This document refers to version ''20'' of the EnsEMBL core schema. You are looking at revision ''1.5''of this document. - - -'''Diagrams:''' - - * http://www.sanger.ac.uk/Users/dta/schema/schema_a4.pdf - Schema diagram on 2 A4 pages for easy printing. - * http://www.sanger.ac.uk/Users/dta/schema/schema_a3.pdf - Schema diagram on one A3 page. ----- - -''Quick links to tables:'' - - -'''Fundamental tables''' - - * assembly - * assembly_exception - * attrib_type - * coord_system - * dna - * dnac - * exon - * exon_stable_id - * exon_transcript - * gene - * gene_description - * gene_stable_id - * karyotype - * meta - * meta_coord - * prediction_exon - * prediction_transcript - * seq_region - * seq_region_attrib - * supporting_feature - * transcript - * transcript_stable_id - * translation - * translation_stable_id - -'''Features and analyses''' - - * analysis - * density_feature - * density_type - * dna_align_feature - * map - * marker - * marker_feature - * marker_map_location - * marker_synonym - * misc_attrib - * misc_feature - * misc_feature_misc_set - * misc_set - * prediction_transcript - * protein_align_feature - * protein_feature - * qtl - * qtl_feature - * qtl_synonym - * repeat_consensus - * repeat_feature - * simple_feature - -'''ID Mapping''' - -(Tables involved in mapping identifiers between releases) - - * gene_archive - * mapping_session - * peptide_archive - * stable_id_event - -'''Exernal references''' - -(Tables used for storing links to and details about objects that are stored in other databases) - - * external_db - * external_synonym - * go_xref - * identity_xref - * object_xref - * xref - -'''Miscellaneous''' - -(Tables that don't fit anywhere else.) - - * interpro - ---- -== Fundamental tables == - - - - - -===seq_region=== -Stores information about sequence regions. The primary key is used as a pointer into the dna table so that actual sequence can be obtained, and the coord_system_id allows sequence regions of multiple types to be stored. Clones, contigs and chromosomes are all now stored in the seq_region table. Contigs are stored with the co-ordinate system 'contig'. The relationship between contigs and clones is stored in the assembly table. The relationships between contigs and chromosomes, and between contigs and supercontigs, are stored in the assembly table. -'''See also:''' - - -Tables: - - * dna - 1:1 relationship to the dna table. - * coord_system - Describes which co-ordinates a particular feature is stored in. - - - - -===coord_system=== -Stores information about the available co-ordinate systems for this species. Note that there must be one co-ordinate system that has the attribute "top_level" and one that has the attribute "sequence_level". -'''See also:''' - - -Tables: - - * seq_region - Has coord_system_id foreign key to allow joins with the coord_system table. - - - - -===seq_region_attrib=== -Allows "attributes" to be defined for certain seq_regions. Provides a way of storing extra information about particular seq_regions without adding extra columns to the seq_region table. e.g. -'''See also:''' - - -Tables: - - * seq_region - - * attrib_type - Provides codes, names and desctriptions of attribute types. - - - - -===attrib_type=== -Provides codes, names and desctriptions of attribute types. -'''See also:''' - - -Tables: - - * seq_region_attrib - Associates seq_regions with attributes. - - - - -===dna=== -Contains DNA sequence. This table has a 1:1 relationship with the contig table. -'''See also:''' - - -Tables: - - * seq_region - Relates sequence to features. - * external_synonym - Allows xrefs to have more than one name - - - - -===dnac=== -Stores compressed DNA sequence. - - - - -===assembly=== -Describes how contig sequences make up the chromosomal sequence. The data in this table defines the "static golden path", i.e. the best effort draft full genome sequence as determined by the UCSC or NCBI (depending which assembly you are using) Each row represents a contig (raw_id, FK from contig table) at least part of which is present in the golden path. The part of the contig that is in the path is delimited by fields raw_start and raw_end and the absolute position within the golden path chromosome (chromosome_id) is given by chr_start and chr_end. Each contig is in a "supercontig" such as a "fingerprint clone contig" or NT contig and the super contig is identified by the superctg_name column and the position of the specified section of the contig within its supercontig is given by fields superctg_start and superctg_end. -'''See also:''' - - -Tables: - - * seq_region - Stores extra information about both the assembled object and its component parts - -Concepts: - - * supercontigs - The mapping between contigs and supercontigs is also stored in the assembly table. - - - - -===assembly_exception=== -Allows multiple sequence regions to point to the same sequence, analogous to a symbolic link in a filesystem pointing to the actual file. This mechanism has been implemented specifically to support haplotypes and PARs, but may be useful for other similar structures in the future. -'''See also:''' - - -Tables: - - * assembly - - - - - -===karyotype=== -Describes bands that can be stained on the chromosome. - - - - -===exon=== -Stores data about exons. Associated with transcripts via exon_transcript. Allows access to contigsseq_regions. -'''See also:''' - - -Tables: - - * exon_transcript - Used to associate exons with transcripts. - - - - -===exon_stable_id=== -Relates exon IDs in this release to release-independent stable identifiers. -'''See also:''' - - -Concepts: - - * stable_id - Describes the rationale behind the use of stable identifiers. - - - - - -===transcript=== -Stores information about transcripts. Has seq_region_start, seq_region_end and seq_region_strand for faster retrieval and to allow storage independently of genes and exons. Note that a transcript is usually associated with a translation, but may not be, e.g. in the case of pseudogenes and RNA genes (those that code for RNA molecules). - - - - -===transcript_stable_id=== -Relates transcript IDs in this release to release-independent stable identifiers. -'''See also:''' - - -Concepts: - - * stable_id - Describes the rationale behind the use of stable identifiers. - - - - - -===exon_transcript=== -Relationship table linking exons with transcripts. The rank column ndicates the 5' to 3' position of the exon within the transcript, i.e. a rank of 1 means the exon is the 5' most within this transcript. -'''See also:''' - - -Tables: - - * exon - One of the entities related by the exon_transcript table. - * transcript - One of the entities related by the exon_transcript table. - - - - - -===gene=== -Allows transcripts to be related to genes. - - - - -===gene_stable_id=== -Relates gene IDs in this release to release-independent stable identifiers. -'''See also:''' - - -Concepts: - - * stable_id - Describes the rationale behind the use of stable identifiers. - - - - - -===gene_description=== -Where appropriate, allows specific genes to be given a description. -'''See also:''' - - -Tables: - - * gene - for the actual gene. - - - - - -===translation=== -Describes which parts of which exons are used in translation. The seq_start and seq_end columns are 1-based offsets into the *relative* coordinate system of start_exon_id and end_exon_id. i.e, if the translation starts at the first base of the exon, seq_start would be 1. Transcripts are related to translations by the transcript_id key in this table. - - - - -===translation_stable_id=== -Relates translation IDs in this release to release-independent stable identifiers. -'''See also:''' - - -Concepts: - - * stable_id - Describes the rationale behind the use of stable identifiers. - - - - - - -===supporting_feature=== -Describes the exon prediction process by linking exons to DNA or protein alignment features. As in several other tables, the feature_id column is a foreign key; the feature_type column specifies which table feature_id refers to. - - - - -===prediction_transcript=== -Stores transcripts that are predicted by ab initio gene finder programs (e.g. genscan, SNAP). Unlike EnsEMBL transcripts they are not supported by any evidence. - - - - -===prediction_exon=== -Stores exons that are predicted by ab initio gene finder programs. Unlike EnsEMBL exons they are not supported by any evidence. - - - - -===meta=== -Stores data about the data in the current schema. Taxonomy information, version information and the default value for the type column in the assembly table are stored here. Unlike other tables, data in the meta table is stored as key/value pairs. Also stores (via assembly.mapping keys) the relationships between co-ordinate systms in the assembly table. -'''See also:''' - - -Tables: - - * assembly - The default value for assembly.type is stored in the meta table. - - - - - -===meta_coord=== -Describes which co-ordinate systems the different feature tables use. -'''See also:''' - - -Tables: - - * coord_system - - - - ---- -== Features and analyses == - - - - - -===analysis=== -Usually describes a program and some database that together are used to create a feature on a piece of sequence. Each feature is marked with an analysis_id. The most important column is logic_name, which is used by the webteam to render a feature correctly on contigview (or even retrieve the right feature). Logic_name is also used in the pipeline to identify the analysis which has to run in a given status of the pipeline. The module column tells the pipeline which Perl module does the whole analysis, typically a RunnableDB module. - - - - - -===dna_align_feature=== -Stores DNA sequence alignments generated from Blast (or Blast-like) comparisons. -'''See also:''' - - -Concepts: - - * cigar_line - Used to encode gapped alignments. - - - - -===protein_align_feature=== -Stores translation alignments generated from Blast (or Blast-like) comparisons. -'''See also:''' - - -Concepts: - - * cigar_line - Used to encode gapped alignments. - - - -===repeat_feature=== -Describes sequence repeat regions. - - - - -===marker_feature=== -Used to describe marker positions. -'''See also:''' - - -Tables: - - * marker - Stores details about the markers themselves. - * marker_map_location - - * marker_synonym - Holds alternative names for markers. - - - - -===qtl_feature=== -Describes Quantitative Trail Loci (QTL) positions as obtained from inbreeding experiments. Note the values in this table are in chromosomal co-ordinates. Also, this table is not populated all schemas. -'''See also:''' - - -Tables: - - * qtl - Describes the markers used to define a QTL. - * qtl_synonym - Stores alternative names for QTLs - - - - -===prediction_transcript=== -Stores information about ab initio gene transcript predictions. - - - - -===simple_feature=== -Describes general genomic features that don't fit into any of the more specific feature tables. - - - - -===protein_feature=== -Describes features on the translations (as opposed to the DNA sequence itself), i.e. parts of the peptide. In peptide co-ordinates rather than contig co-ordinates. -'''See also:''' - - -Tables: - - * analysis - Describes how protein features were derived. - -Concepts: - - * co-ordinates - - - - - -===density_feature=== -. -'''See also:''' - - -Tables: - - * density_type - - - - - -===density_type=== -. -'''See also:''' - - -Tables: - - * density_feature - - - - - -===qtl=== -Describes the markers (of which there may be up to three) which define Quantitative Trait Loci. Note that QTL is a statistical technique used to find links between certain expressed traits and regions in a genetic map. -'''See also:''' - - -Tables: - - * qtl_synonym - Describes alternative names for QTLs - - - - -===qtl_synonym=== -Describes alternative names for Quantitative Trait Loci (QTLs). - - - - -===marker=== -Stores data about the marker itself - e.g. the primer sequences used. -'''See also:''' - - -Tables: - - * marker_synonym - Stores alternative names for markers. - * marker_map_location - - - - - -===marker_map_location=== -Allows storage of information about the postion of a marker - these are positions on genetic or radiation hybrid maps (as opposed to positions on the assembly, which EnsEMBL has determined and which are stored in marker_feature). -'''See also:''' - - -Tables: - - * marker - Stores marker data. - * marker_feature - Stores marker positions on the assembly. - - - - -===marker_synonym=== -Stores alternative names for markers, as well as their sources. -'''See also:''' - - -Tables: - - * marker - Stores the original marker. - - - - -===map=== -Stores the names of different genetic or radiation hybrid maps, for which there is marker map information. -'''See also:''' - - -Tables: - - * marker - Stores the original marker. - - - - -===repeat_consensus=== -Stores consenus sequences obtained from analysing repeat features. - - - - -===misc_feature=== -Alllows for storage of arbitrary features. -'''See also:''' - - -Tables: - - * misc_attrib - Allows storage of arbitrary attributes for the misc_features. - - - - -===misc_attrib=== -Stores arbitrary attributes about the features in the misc_feature table. -'''See also:''' - - -Tables: - - * misc_feature - - - - - -===misc_set=== -Defines "sets" that the features held in the misc_feature table can be grouped into. -'''See also:''' - - -Tables: - - * misc_feature_misc_set - Defines which features are in which set - - - - -===misc_feature_misc_set=== -Defines which of the features in misc_feature are in which of the sets defined in misc_set -'''See also:''' - - -Tables: - - * misc_feature - - * misc_set - - - - - ---- -== ID Mapping == -Tables involved in mapping identifiers between releases - - -===mapping_session=== -Stores details of ID mapping sessions - a mapping session represents the session when stable IDs where mapped from one database to another. Details of the "old" and "new" databases are stored. -'''See also:''' - - -Tables: - - * stable_id_event - Stores details of what happened during the mapping session. - -Concepts: - - * stable_id - Describes the need for ID mapping. - - - - -===stable_id_event=== -Represents what happened to all gene, transcript and translation stable IDs during a mapping session. This includes which IDs where deleted, created and related to each other. Each event is represented by one or more rows in the table. -'''See also:''' - - -Tables: - - * mapping_session - Describes the session when events stored in this table occured. - - - - -===gene_archive=== -Contains a snapshot of the stable IDs associated with genes deleted or changed between releases. Includes gene, transcript and translation stable IDs. - - - - -===peptide_archive=== -Contains the peptides for deleted or changed translations. - - - ---- -== Exernal references == -Tables used for storing links to and details about objects that are stored in other databases - - - - -===xref=== -Holds data about objects which are external to EnsEMBL, but need to be associated with EnsEMBL objects. Information about the database that the external object is stored in is held in the external_db table entry referred to by the external_db column. -'''See also:''' - - -Tables: - - * external_db - Describes the database that xrefs are stored in - * external_synonym - Allows xrefs to have more than one name - - - - -===external_db=== -Stores data about the external databases in which the objects described in the xref table are stored. -'''See also:''' - - -Tables: - - * xref - Holds data about the external objects that are stored in the external_dbs. - - - - -===external_synonym=== -Some xref objects can be referred to by more than one name. This table relates names to xref IDs. -'''See also:''' - - -Tables: - - * xref - Holds most of the data about xrefs. - - - - -===object_xref=== -Describes links between EnsEMBL objects and objects held in external databases. The EnsEMBL object can be one of several types; the type is held in the ensembl_object_type column. The ID of the particular EnsEMBL gene, translation or whatever is given in the ensembl_id column. The xref_id points to the entry in the xref table that holds data about the external object.Each EnsEMBL object can be associated with zero or more xrefs. An xref object can be associated with one or more EnsEMBL objects. -'''See also:''' - - -Tables: - - * xref - Stores the data about each externally-referenced object. - * go_xref - Stores extra data for relationships to GO objects. - * identity_xref - Stores data about how 'good' the relationships are - - - - -===go_xref=== -Links between EnsEMBL objects and external objects produced by GO (Gene Ontology) require some additional data which is not stored in the object_xref table. -'''See also:''' - - -Tables: - - * object_xref - Stores basic, non GO-specific information for GO xrefs - -Links: - - * GO - Gene Ontology website - - - - -===identity_xref=== -Describes how well a particular xref obeject matches the EnsEMBL object. -'''See also:''' - - -Tables: - - * object_xref - Stores basic information about EnsEMBL object-xref mapping - - - - - ---- -== Miscellaneous == -Tables that don't fit anywhere else. - - -===interpro=== -Allows storage of links to the InterPro database. InterPro is a database of protein families, domains and functional sites in which identifiable features found in known proteins can be applied to unknown protein sequences. -'''See also:''' - - -Links: - - * InterPro - The InterPro website - - - - ---- -==Concepts== - -''co-ordinates '' -: There are several different co-ordinate systems used in the EnsEMBL database and API. For every co-ordinate system, the fundamental unit is one base. The differences between co-ordinate systems lie in where a particular numbered base lies, and the start position it is relative to. CONTIG co-ordinates, also called 'raw contig' co-ordinates or 'clone fragments' are relative to the first base of the first contig of a clone. Note that the numbering is from 1, i.e. the very first base of the first contig of a clone is numbered 1, not 0. In CHROMOSOMAL co-ordinates, the co-ordinates are relative to the first base of the chromosome. Again, numbering is from 1. The seq_region table can store sequence regions in any of the co-ordinate systems defined in the coord_system table. -''supercontigs '' -: A supercontig is made up of a group of adjacent or overlapping contigs. -''sticky_rank '' -: The sticky_rank differentiates between fragments of the same exon; i.e for exons that span multiple contigs, all the fragments would have the same ID, but different sticky_rank values -''stable_id '' -: Gene predictions have changed over the various releases of the EnsEMBL databases. To allow the user to track particular gene predictions over changing co-ordinates, each gene-related prediction is given a 'stable identifier'. If a prediction looks similar between two releases, we try to give it the same name, even though it may have changed position and/or had some sequence changes. -''cigar_line '' -: This allows the compact storage of gapped alignments by storing the maximum extent of the matches and then a text string which encodes the placement of gaps inside the alignment. Colloquially inside Ensembl this is called a and its adoption has shrunk the number of rows in the feature table around 4-fold. - ---- diff --git a/docs/schema_description/tables.xml b/docs/schema_description/tables.xml deleted file mode 100644 index 0acce4727..000000000 --- a/docs/schema_description/tables.xml +++ /dev/null @@ -1,1101 +0,0 @@ - - - - - - - - - - This document gives a high-level description of the tables that make up the EnsEMBL core schema. Tables are grouped into logical groups, and the purpose of each table is explained. It is intended to allow people to familiarise themselves with the schema when encountering it for the first time, or when they need to use some tables that they've not used before. Note that while some of the more important columns in some of the tables are discussed, this document makes no attempt to enumerate all of the names, types and contents of every single table. Some concepts which are referred to in the table descriptions are given at the end of this document; these are linked to from the table description where appropriate. - - Create empty schema, populate meta table - Load DNA - populates dna, clone, contig, chromosome, assembly tables - Analyze DNA (raw computes) - populates genomic feature/analysis tables - Build genes - populates exon, transcript,etc. gene-related tables - Analyze genes - populate protein_feature, xref tables, interpro - ID mapping - - - - - - - - - - - - seq_region - - Stores information about sequence regions. The primary key is used as a pointer into the dna table so that actual sequence can be obtained, and the coord_system_id allows sequence regions of multiple types to be stored. Clones, contigs and chromosomes are all now stored in the seq_region table. Contigs are stored with the co-ordinate system 'contig'. The relationship between contigs and clones is stored in the assembly table. The relationships between contigs and chromosomes, and between contigs and supercontigs, are stored in the assembly table. - - - - - - - - -
- - - - - - coord_system - - Stores information about the available co-ordinate systems for this species. Note that there must be one co-ordinate system that has the attribute "top_level" and one that has the attribute "sequence_level". - - - - - - - -
- - - - - - seq_region_attrib - - Allows "attributes" to be defined for certain seq_regions. Provides a way of storing extra information about particular seq_regions without adding extra columns to the seq_region table. e.g. - - - - - - - - -
- - - - - - attrib_type - - Provides codes, names and desctriptions of attribute types. - - - - - - - -
- - - - - - dna - - Contains DNA sequence. This table has a 1:1 relationship with the contig table. - - - - - - - - -
- - - - - - dnac - - Stores compressed DNA sequence. - - - - - - - -
- - - - - - assembly - - Describes how contig sequences make up the chromosomal sequence. The data in this table defines the "static golden path", i.e. the best effort draft full genome sequence as determined by the UCSC or NCBI (depending which assembly you are using) Each row represents a contig (raw_id, FK from contig table) at least part of which is present in the golden path. The part of the contig that is in the path is delimited by fields raw_start and raw_end and the absolute position within the golden path chromosome (chromosome_id) is given by chr_start and chr_end. Each contig is in a "supercontig" such as a "fingerprint clone contig" or NT contig and the super contig is identified by the superctg_name column and the position of the specified section of the contig within its supercontig is given by fields superctg_start and superctg_end. - - - - - - - - -
- - - - - - assembly_exception - - Allows multiple sequence regions to point to the same sequence, analogous to a symbolic link in a filesystem pointing to the actual file. This mechanism has been implemented specifically to support haplotypes and PARs, but may be useful for other similar structures in the future. - - - - - - - -
- - - - - - karyotype - - Describes bands that can be stained on the chromosome. - - - - - - - -
- - - - - - exon - - Stores data about exons. Associated with transcripts via exon_transcript. Allows access to contigsseq_regions. - - - - - - - -
- - - - - - exon_stable_id - - Relates exon IDs in this release to release-independent stable identifiers. - - - - - - - -
- - - - - - - transcript - - Stores information about transcripts. Has seq_region_start, seq_region_end and seq_region_strand for faster retrieval and to allow storage independently of genes and exons. Note that a transcript is usually associated with a translation, but may not be, e.g. in the case of pseudogenes and RNA genes (those that code for RNA molecules). - - - - - - -
- - - - - - transcript_stable_id - - Relates transcript IDs in this release to release-independent stable identifiers. - - - - - - - -
- - - - - - transcript_attrib - - Enables storage of attributes that relate to transcripts. - - - - - - - -
- - - - - - translation_attrib - - Enables storage of attributes that relate to translations. - - - - - - - -
- - - - - - exon_transcript - - Relationship table linking exons with transcripts. The rank column ndicates the 5' to 3' position of the exon within the transcript, i.e. a rank of 1 means the exon is the 5' most within this transcript. - - - - - - - - -
- - - - - - - gene - - Allows transcripts to be related to genes. - - - - - - -
- - - - - - gene_stable_id - - Relates gene IDs in this release to release-independent stable identifiers. - - - - - - - -
- - - - - - translation - - Describes which parts of which exons are used in translation. The seq_start and seq_end columns are 1-based offsets into the *relative* coordinate system of start_exon_id and end_exon_id. i.e, if the translation starts at the first base of the exon, seq_start would be 1. Transcripts are related to translations by the transcript_id key in this table. - - - - - - -
- - - - - - translation_stable_id - - Relates translation IDs in this release to release-independent stable identifiers. - - - - - - - -
- - - - - - - - supporting_feature - - Describes the exon prediction process by linking exons to DNA or protein alignment features. As in several other tables, the feature_id column is a foreign key; the feature_type column specifies which table feature_id refers to. - - - - - - -
- - - - - - prediction_transcript - - Stores transcripts that are predicted by ab initio gene finder programs (e.g. genscan, SNAP). Unlike EnsEMBL transcripts they are not supported by any evidence. - - - - - - -
- - - - - - prediction_exon - - Stores exons that are predicted by ab initio gene finder programs. Unlike EnsEMBL exons they are not supported by any evidence. - - - - - - -
- - - - - - meta - - Stores data about the data in the current schema. Taxonomy information, version information and the default value for the type column in the assembly table are stored here. Unlike other tables, data in the meta table is stored as key/value pairs. Also stores (via assembly.mapping keys) the relationships between co-ordinate systms in the assembly table. - - - - - - - -
- - - - - - - meta_coord - - Describes which co-ordinate systems the different feature tables use. - - - - - - - -
- -
- - - - - - - - analysis - - Usually describes a program and some database that together are used to create a feature on a piece of sequence. Each feature is marked with an analysis_id. The most important column is logic_name, which is used by the webteam to render a feature correctly on contigview (or even retrieve the right feature). Logic_name is also used in the pipeline to identify the analysis which has to run in a given status of the pipeline. The module column tells the pipeline which Perl module does the whole analysis, typically a RunnableDB module. - - - - - - - -
- - - - analysis_description - - Allows the storage of a textual description of the analysis, as well as a "display label", primarily for the Ensembl web site. - - - - - - - -
- - - - - - dna_align_feature - - Stores DNA sequence alignments generated from Blast (or Blast-like) comparisons. - - - - - - - -
- - - - - - protein_align_feature - - Stores translation alignments generated from Blast (or Blast-like) comparisons. - - - - - - - -
- - - - - repeat_feature - - Describes sequence repeat regions. - - - - - - -
- - - - - - marker_feature - - Used to describe marker positions. - - - - - - - - - -
- - - - - - qtl_feature - - Describes Quantitative Trail Loci (QTL) positions as obtained from inbreeding experiments. Note the values in this table are in chromosomal co-ordinates. Also, this table is not populated all schemas. - - - - - - - - -
- - - - - - prediction_transcript - - Stores information about ab initio gene transcript predictions. - - - - - - - -
- - - - - - simple_feature - - Describes general genomic features that don't fit into any of the more specific feature tables. - - - - - - - -
- - - - - - protein_feature - - Describes features on the translations (as opposed to the DNA sequence itself), i.e. parts of the peptide. In peptide co-ordinates rather than contig co-ordinates. - - - - - - - - -
- - - - - - density_feature - - . - - - - - - - -
- - - - - - density_type - - . - - - - - - - -
- - - - - - qtl - - Describes the markers (of which there may be up to three) which define Quantitative Trait Loci. Note that QTL is a statistical technique used to find links between certain expressed traits and regions in a genetic map. - - - - - - - -
- - - - - - qtl_synonym - - Describes alternative names for Quantitative Trait Loci (QTLs). - - - - - - - -
- - - - - - marker - - Stores data about the marker itself - e.g. the primer sequences used. - - - - - - - - -
- - - - - - marker_map_location - - Allows storage of information about the postion of a marker - these are positions on genetic or radiation hybrid maps (as opposed to positions on the assembly, which EnsEMBL has determined and which are stored in marker_feature). - - - - - - - - -
- - - - - - marker_synonym - - Stores alternative names for markers, as well as their sources. - - - - - - - -
- - - - - - map - - Stores the names of different genetic or radiation hybrid maps, for which there is marker map information. - - - - - - - -
- - - - - - repeat_consensus - - Stores consenus sequences obtained from analysing repeat features. - - - - - - -
- - - - - - misc_feature - - Alllows for storage of arbitrary features. - - - - - - - -
- - - - - - misc_attrib - - Stores arbitrary attributes about the features in the misc_feature table. - - - - - - - -
- - - - - - misc_set - - Defines "sets" that the features held in the misc_feature table can be grouped into. - - - - - - - -
- - - - - - misc_feature_misc_set - - Defines which of the features in misc_feature are in which of the sets defined in misc_set - - - - - - - - -
- - - - - - alt_allele - - Stores information about genes on haplotypes that may be orthologous. - - - -
- - - - - - - regulatory_feature - - Stores information about features which have an effect (positive or negative) on transcription or translation,such as microRNAs. - - - - - - - - -
- - - - - - regulatory_factor - - Describe which regulatory factor a particular regulatory feature is composed of. - - - - - - - -
- - - - - - regulatory_feature_object - - Links regulatory features to the Ensembl objects they are associated with. Analagous to object_xref. - - - - - - - -
- - - - - - regulatory_factor_transcript - - Describes which transcripts code for particular regulatory factors. - - - - - - -
- -
- - - - - - - - mapping_session - - Stores details of ID mapping sessions - a mapping session represents the session when stable IDs where mapped from one database to another. Details of the "old" and "new" databases are stored. - - - - - - - - -
- - - - - - stable_id_event - - Represents what happened to all gene, transcript and translation stable IDs during a mapping session. This includes which IDs where deleted, created and related to each other. Each event is represented by one or more rows in the table. - - - - - - - -
- - - - - - gene_archive - - Contains a snapshot of the stable IDs associated with genes deleted or changed between releases. Includes gene, transcript and translation stable IDs. - - - - - - -
- - - - - - peptide_archive - - Contains the peptides for deleted or changed translations. - - - - - - -
- -
- - - - - - - - - - xref - - Holds data about objects which are external to EnsEMBL, but need to be associated with EnsEMBL objects. Information about the database that the external object is stored in is held in the external_db table entry referred to by the external_db column. - - - - - - - - - -
- - - - - - external_db - - Stores data about the external databases in which the objects described in the xref table are stored. - - - - - - - -
- - - - - - external_synonym - - Some xref objects can be referred to by more than one name. This table relates names to xref IDs. - - - - - - - -
- - - - - - object_xref - - Describes links between EnsEMBL objects and objects held in external databases. The EnsEMBL object can be one of several types; the type is held in the ensembl_object_type column. The ID of the particular EnsEMBL gene, translation or whatever is given in the ensembl_id column. The xref_id points to the entry in the xref table that holds data about the external object.Each EnsEMBL object can be associated with zero or more xrefs. An xref object can be associated with one or more EnsEMBL objects. - - - - - - - - - -
- - - - - - go_xref - - Links between EnsEMBL objects and external objects produced by GO (Gene Ontology) require some additional data which is not stored in the object_xref table. - - - - - - - - -
- - - - - - identity_xref - - Describes how well a particular xref obeject matches the EnsEMBL object. - - - - - - - -
- - - -
- - - - - - - - interpro - - Allows storage of links to the InterPro database. InterPro is a database of protein families, domains and functional sites in which identifiable features found in known proteins can be applied to unknown protein sequences. - - - - - - - -
- - -
- - - - - - - - - - - - - - - - - - - - -
diff --git a/docs/schema_description/xml2html.xsl b/docs/schema_description/xml2html.xsl deleted file mode 100644 index fb3e8d2dd..000000000 --- a/docs/schema_description/xml2html.xsl +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - - - - - EnsEMBL Core Schema Documentation - - - - -

EnsEMBL Core Schema Documentation

- - - - - - - - - -
- - - - -

Introduction

-

- -

-

- - - - - -
StepProcess
-

- - - -

This document refers to version of the EnsEMBL core schema. You are looking at revision of this document.

- - -

Diagrams:

-
    - -
  • -
  • -
    -
-
-
-
- - - -

Quick links to tables:

- -

- - () - -

-
    - - -
  • -
    -
-
-
- - - - - - - - - - - -
-

-

- - -
- - - - -

- -

- - - -

See also:

- -

Tables:

-
    - -
  • -
  • -
    -
-
- -

Concepts:

-
    - -
  • -
  • -
    -
-
- -

Links:

-
    - -
  • -
  • -
    -
-
- -
- - - -
- - - - -
-

Concepts

-
- -

-

-
-
-
-
- -
- diff --git a/docs/schema_description/xml2wiki.xsl b/docs/schema_description/xml2wiki.xsl deleted file mode 100755 index f07561ff4..000000000 --- a/docs/schema_description/xml2wiki.xsl +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - - - -=EnsEMBL Core Schema Documentation= - - - - - - - - - - - -==Introduction== - - - - - -||Step||Process|| -|||||| - -This document refers to version '''' of the EnsEMBL core schema. You are looking at revision ''''of this document. - - -'''Diagrams:''' - - * - - - ----- - - - - -''Quick links to tables:'' - - -'''''' - -() - - - - - * - - - - - - - - - ---- -== == - - - - - -====== - - - -'''See also:''' - - -Tables: - - * - - - - - -Concepts: - - * - - - - - -Links: - - * - - - - - - - - - ---- -==Concepts== - -'' '' -: - - ---- - - - diff --git a/docs/tutorial/ensembl_tutorial.pdf b/docs/tutorial/ensembl_tutorial.pdf deleted file mode 100755 index ba77ad3b3ea933c737b55335f743b9023691eea3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 472901 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 z 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�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 diff --git a/docs/tutorial/ensembl_tutorial.sxw b/docs/tutorial/ensembl_tutorial.sxw deleted file mode 100644 index 980940805632aa2eceffc42b09a9fd05a7cd0bcd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25983 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 @Ik%5-=@AHM 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 diff --git a/docs/tutorial/ensembl_tutorial.txt b/docs/tutorial/ensembl_tutorial.txt deleted file mode 100644 index a065b5a3c..000000000 --- a/docs/tutorial/ensembl_tutorial.txt +++ /dev/null @@ -1,933 +0,0 @@ -Ensembl Perl API Tutorial - -By Michele Clamp. Updated, revised, and rewritten by Michele Clamp, Ewan Birney, Graham McVicker and Dan Andrews. - -Revisions: EB Oct 01, MC Jan 02, MC Mar 02, DA Jul 02, DA Oct 02, GM Oct 02, DA Feb 03, GM Feb 04, GM Aug 04 - - -Introduction - -This tutorial describes how to use the Ensembl Perl API. It is intended to be an introduction and demonstration of the general API concepts. This tutorial is not comprehensive, but it will hopefully enable to reader to become quickly productive, and facilitate a rapid understanding of the core system. This tutorial assumes at least some familiarity with Perl. - -The Perl API provides a level of abstraction over the Ensembl databases and is used by the Ensembl web interface, pipeline, and genebuild systems. To external users the API may be useful to automate the extraction of particular data, to customize Ensembl to fulfill a particular purpose, or to store additional data in Ensembl. As a brief introduction this tutorial focuses primarily on the retrieval of data from the Ensembl databases. - -The Perl API is only one of many ways of accessing the data stored in Ensembl. Additionally there is a Java API, the genome browser web interface, and the EnsMart system. If you are a Java programmer then the Java API is likely to be of more interest to you. Similarly, EnsMart may be a more appropriate tool for certain types of data mining. - - -Other Sources of Information - -The Perl API has a decent set of code documentation in the form of PODs (Plain Old Documentation). This is documentation is mixed in with the actual code, but can be automatically extracted and formatted using some software tools. One version of this documentation is available at: www.ensembl.org/Docs/Pdoc/ - -If you have your PERL5LIB environment variable set correctly (see the section on Setting Up the Environment) you can use the command perldoc. For example the following command will bring up some documentation about the Slice class and each of its methods: - -perldoc Bio::EnsEMBL::Slice - -For additional information you can contact ensembl-dev, the Ensembl development mailing list (see www.ensembl.org/Docs/Lists/). - - -Perl - -The Ensembl Perl API is compatible with Perl versions 5.6.0 and later. You can tell what version of Perl you are using by typing perl -v. This will give you version information like the following: - -perl -v - -This is perl, v5.6.0 built for i386-linux - - -Obtaining the Code - -Before you start, you will need to have the relevant Ensembl and BioPerl modules installed. These are : - -bioperl-1.2 (or greater) -ensembl - -These modules can be obtained via anonymous CVS as in the following examples. Notice the -r argument in the CVS commands which is used to specify the branch of code to obtain. Branches are stable versions of the code. If no branch is specified the bleeding edge HEAD code will be obtained (not recommended). In this example we are obtaining branch-1-2 of BioPerl and branch-ensembl-24 of the Ensembl core. The branch of Ensembl code that you use should correspond to the version of the Ensembl database that you are using. For example if you are using the database homo_sapiens_core_24_34e you should use branch-ensembl-24. - -To obtain the BioPerl code perform the following CVS commands: - -cvs -d :pserver:cvs@cvs.bioperl.org:/home/repository/bioperl \ - login - -when prompted, the password is 'cvs' - -cvs -d :pserver:cvs@cvs.bioperl.org:/home/repository/bioperl \ - checkout -r branch-1-2 bioperl-live - -To obtain the Ensembl API code perform these CVS commands, substituting 24 with the appropriate branch number: - -cvs -d :pserver:cvsuser@cvs.sanger.ac.uk:/cvsroot/ensembl \ - login - -when prompted, the password is 'CVSUSER' - -cvs -d :pserver:cvsuser@cvs.sanger.ac.uk:/cvsroot/ensembl \ - checkout -r branch-ensembl-24 ensembl - - -Database Access - -If you don't have, or don't want to install, the Ensembl database locally you can point your scripts at a publicly available database at the Sanger Centre. Use the following connection information in your scripts (where X_Y is the latest version of the database, for example 24_34e): - -host ensembldb.ensembl.org -dbname homo_sapiens_core_X_Y -user anonymous - - -DBI and DBD::mysql - -You will need to install the Perl DBI and DBD::mysql modules from CPAN if they are not already present on your system. See the CPAN site (www.cpan.org) for installation instructions and further information on DBI and DBD::mysql. - - -Setting up the Environment - -Perl needs to know the location of the BioPerl and Ensembl API modules in order for any scripts that you write to work. You can do this by setting the PERL5LIB environment variable from your shell. Assuming that you have placed the source in an src directory under your home directory the following tcsh/csh commands could be used: - -setenv PERL5LIB ${PERL5LIB}:${HOME}/src/bioperl-live -setenv PERL5LIB ${PERL5LIB}:${HOME}/src/ensembl/modules - -The same example in bash would be: - -export PERL5LIB=${PERL5LIB}:${HOME}/src/bioperl-live -export PERL5LIB=${PERL5LIB}:${HOME}/src/ensembl/modules - -Alternatively you can use the perl pragma use lib at the top of your scripts to point to the location of the perl modules you wish to use. - -use lib '/my/modules/directory/ensembl/modules'; -use lib '/my/modules/directory/bioperl1.2/'; - - -Code Conventions - -Several naming conventions are used throughout the API. Learning these conventions will aid in your understanding of the code. - -Variable names are underscore separated all-lowercase words. - -$slice, @exons, %exon_hash, $database_adaptor - -Class and package names are mixed-case words that begin with capital letters. - -Bio::EnsEMBL::GeneAdaptor, Bio::EnsEMBL::Exon, Bio::EnsEMBL::Slice, Bio::EnsEMBL::DBSQL::DBAdaptor - -Method names are entirely lowercase, underscore separated words. Class names in the method are an exception to this convention; these words begin with an uppercase letter and are not underscore separated. The word dbID is another exception which denotes the unique database identifier of an object. No method names begin with a capital letter, even if they refer to a class. - -fetch_all_by_Slice, get_all_Genes, traslation, fetch_by_dbID - -Method names that begin with a an underscore '_' are intended to be private and should not be called externally from the class in which they are defined. - -ObjectAdaptors are responsible for the creation of various objects. The adaptor should be named after the object it creates, and the methods responsible for the retrieval of these objects should all start with the word fetch. All of the fetch methods should return only objects of the type that the adaptor creates. Therefore the object name is not required in the method name. For example, all fetch methods in the GeneAdaptor return Gene objects. Non-adaptor methos generally avoid the use of the word fetch. - -fetch_all_by_Slice, fetch_by_dbID, fetch_by_region - -Methods which begin with get_all or fetch_all return references to lists. Many methods in Ensembl pass lists by reference, rather than by value, for efficiency. This takes some getting used to, but it results in more efficient code, especially when very large lists are passed around (as they often are in Ensembl). - -get_all_Transcripts, fetch_all_by_Slice, get_all_Exons - -The following examples demonstrate some of perl's list reference syntax. You do not need to understand the API concepts in this example. The important thing to note is the language syntax; the concepts will be described later. - -#fetch all clones from the slice adaptor (returns listref) -my $clones_ref = $slice_adaptor->fetch_all('clone'); - -#if you want a copy of the referenced array, do this: -my @clones = @$clones_ref; - -# get the first clone from the list via the reference: -my $first_clone = $clones_ref->[0]; - -# another way of getting the same thing: -($first_clone) = @$clones_ref; - -# iterate through all of the genes on a clone -foreach my $gene (@{$first_clone->get_all_Genes()}) { - print $contig->stable_id() . "\n"; -} - -# another way of doing the same thing: -my $genes = $first_clone->get_all_Genes(); -foreach my $contig (@$genes) { - print $contig->name . "\n"; -} - -# retrieve a single Slice object (not a listref) -$clone = $slice_adaptor->fetch_by_region('clone', 'AL031658.11'); -# no dereferencing needed: -print $clone->seq_region_name() . "\n"; - - -Connecting to the Database - The DBAdaptor - -All data used and created by Ensembl is stored in a MySQL relational database. If you want to access this database the first thing you have to do is to connect to it. This is done behind the scenes by Ensembl using the DBI module. You will need to know three things before you start : - -host - the hostname where the Ensembl database lives -dbname - the name of the Ensembl database -user - the username to access the database - -First, we need to import any Perl modules that we will be using. Since we need a connection to an Ensembl database we first have to import the DBAdaptor modules that we use to establish this connection. Almost every Ensembl script that you will write will contain a use statement like the following: - -use Bio::EnsEMBL::DBSQL::DBAdaptor; - -Then we set the some variables containing the location of the database: - -my $host = 'ensembldb.ensembl.org'; -my $user = 'anonymous'; -my $dbname = 'homo_sapiens_core_20_34c'; - -Now we can make a database connection: - -my $db = new Bio::EnsEMBL::DBSQL::DBAdaptor(-host => $host, - -user => $user, - -dbname => $dbname); - -We've made a connection to an Ensembl database and passed parameters in using the -attribute => 'somevalue' syntax present in many of the Ensembl object constructors. Formatted correctly, this syntax lets you see exactly what arguments and values you are passing. - -In addition to the parameters provided above the optional port, driver and pass parameters can be used specify the TCP port to connect via, the type of database driver to use, and the password to use respectively. These values have sensible defaults and can often be omitted. - - -Object Adaptors - -Before we launch into the ways the API can be used to retrieve and process data from the Ensembl databases it is best to mention the fundamental relationships the Ensembl objects have with the database. - -The Ensembl API allows manipulation of the database data through various objects. For example, some of the more heavily used objects are the Gene, Slice and Exon objects. More details of how to effectively use these objects will be covered later. These objects are retrieved and stored in the database through the use of object adaptors. Object adaptors have internal knowledge of the underlying database schema and use this knowledge to fetch, store and remove objects (and data) from the database. This way you can write code and use the Ensembl API without having to know anything about the underlying databases you are using. The database adaptor that we created in the previous section is a special adaptor which has the responsibility of maintaining the database connection and creating other object adaptors. - -Object adaptors are obtained from the main database adaptor via a suite of methods with the naming convention get_ObjectAdaptor. To obtain a SliceAdaptor or a GeneAdaptor (which retrieve Slice and Gene objects) do the following: - -my $gene_adaptor = $db->get_GeneAdaptor(); -my $slice_adaptor = $db->get_SliceAdaptor(); - -Don't worry if you don't immediately see how useful this could be. Just remember that you don't need to know anything about how the database is structured, but you can retrieve the necessary data (neatly packaged in objects) by asking for it from the correct adaptor. Throughout the rest of this document we are going to work through the ways the Ensembl objects can be used to derive the information you want. - - -Slices - -A Slice object represents a single continuous region of a genome. Slices can be used to obtain sequence, features or other information from a particular region of interest. To retrieve a Slice it is first necessary to get a SliceAdaptor: - -my $slice_adaptor = $db->get_SliceAdaptor(); - -The SliceAdaptor provides several ways to obtain Slices, but we will start with the fetch_by_region method which is the most commonly used. This method takes numerous arguments but most of them are optional. In order, the arguments are: coord_system_name, seq_region_name, start, end, strand, coord_system_version. The following are several examples of how to use the fetch_by_region method: - -# obtain a slice of the entire chromosome X: -my $slice = $slice_adaptor->fetch_by_region('chromosome', 'X'); - -# obtain a slice of the entire clone AL359765.6 -$slice = $slice_adaptor->fetch_by_region('clone','AL359765.6'); - -# obtain a slice of an entire NT contig -$slice = $slice_adaptor->fetch_by_region('supercontig', - 'NT_011333'); - -# obtain a slice of 1-2MB of chromosome 20 -$slice = $slice_adaptor->fetch_by_region('chromosome', '20', - 1e6, 2e6); - -Another useful way to obtain a Slice is with respect to a gene: - -my $slice = - $slice_adaptor->fetch_by_gene_stable_id('ENSG00000099889', 5000); - -This will return a Slice that contains the sequence of the gene specified by its stable Ensembl id. It also returns 5000bp of flanking sequence at both the 5' and 3' ends, which is useful if you are interested in the environs that a gene inhabits. You needn't have the flanking sequence it you don't want it - in this case set the number of flanking bases to 0 or omit the second argument entirely. Note that for historical reasons the fetch_by_gene_stable_id method always returns a slice on the forward strand even if the gene is on the reverse strand. - -To retrieve a set of slices from a particular coordinate system the fetch_all method can be used: - -# retrieve slices of every chromosome in the database -@slices = @{$slice_adaptor->fetch_all('chromosome')}; - -# retrieve slices of every BAC clone in the database -@slices = @{$slice_adaptor->fetch_all('clone')}; - - -For certain types of analysis it is necessary to break up regions into smaller manageable pieces. The method split_Slices can be imported from the Bio::EnsEMBL::Utils::Slice module to break up larger slices into smaller component slices. - -use Bio::EnsEMBL::Utils::Slice qw(split_Slices); - -#... - -my $slices = $slice_adaptor->fetch_all('chromosome'); - -# basepairs overlap between returned slices -my $overlap = 0; - -# maximum size of returned slices -my $max_size = 100000; - -# break chromosomal slices into smaller 100k component slices -$slices = split_Slices($slices, $max_length, $overlap); - -To obtain sequence from a slice the seq or subseq methods can be used: - -my $sequence = $slice->seq(); -print “$sequence\n”; - -$sequence = $slice->subseq(100, 200); - -We can query the Slice for information about itself: - -# coord_system() returns a Bio::EnsEMBL::CoordSystem object -my $coord_sys = $slice->coord_system()->name(); -my $seq_region = $slice->seq_region_name(); -my $start = $slice->start(); -my $end = $slice->end(); -my $strand = $slice->strand(); - -print “Slice: $coord_sys $seq_region $start-$end ($strand)\n”; - -Many object adaptors can provide a set of features which overlap a slice. The Slice itself also provides a means to obtain features which overlap its region. The following are two ways to obtain a list of genes which overlap a Slice: - -my @genes = @{$gene_adaptor->fetch_all_by_Slice($slice)}; - -# another way of doing the same thing: -@genes = @{$slice->get_all_Genes()}; - - -Features - -Features are objects in the database which have a defined location on the genome. All features in Ensembl inherit from the Bio::EnsEMBL::Feature class and have the following location defining attributes: start, end, strand, slice. - -In addition to locational attributes all features have internal database identifiers accessed via the method dbID. All feature objects can be retrieved from their associated object adaptors using a Slice object or the feature's internal identifer (dbID). The following example illustrates how Transcript features and DnaDnaAlignFeature features can be obtained from the database. All features in the database can be retrieved in similar ways from their own object adaptors. - -my $tr_adaptor = $db->get_TranscriptAdaptor(); -my $daf_adaptor = $db->get_DnaAlignFeatureAdaptor(); - -# get a slice of chr20 10MB-11MB -my $slice = $slice_adaptor->fetch_by_region('chromosome', '20', - 10e6, 11e6); - -# fetch all of the transcripts overlapping chr20 10-11MB -my $transcripts = $tr_adaptor->fetch_all_by_Slice($slice); -foreach my $tr (@$transcripts) { - my $dbID = $tr->dbID(); - my $start = $tr->start(); - my $end = $tr->end(); - my $strand = $tr->strand(); - my $stable_id = $tr->stable_id(); - print “Transcript $stable_id [$dbID] $start-$end($strand)\n”; -} - -# fetch all of the dna-dna alignments overlapping chr20 10-11MB -my $dafs = $daf_adaptor->fetch_all_by_Slice($slice); -foreach my $daf (@$dafs) { - my $dbID = $daf->dbID(); - my $start = $daf->start(); - my $end = $daf->end(); - my $strand = $daf->strand(); - my $hseqname = $daf->hseqname(); - print “DNA Alignment $hseqname [$dbID] $start-$end($strand)\n”; -} - -# fetch a transcript by its internal identifier -my $transcript = $tr_adaptor->fetch_by_dbID(100); - -# fetch a dnaAlignFeature by its internal identifiers -my $dna_align_feat = $daf_adaptor->fetch_by_dbID(100); - - -All features also have the methods transform, transfer, and project which are described in detail in the Transform, Transfer and Project sections of this tutorial. - -Genes, Transcripts, Exons - -Genes, Exons and Transcripts are also features and can be treated in the same way as any other feature within Ensembl. A Transcript in Ensembl is a grouping of Exons. A Gene in Ensembl is a grouping of Transcripts which share any overlapping (or partially overlapping) Exons. Transcripts also have an associated Translation object which defines the UTR and and CDS composition of the Transcript. Introns are not defined explicitly in the database but can be obtained by the transcript method get_all_Introns. - -Like all Ensembl features the start of an Exon is always less than or equal to the end of the Exon, regardless of the strand it is on. The start of the Transcript is the start of the first Exon of a forward strand Transcript or the start of the last Exon of a reverse strand Transcript. The start and end of a Gene are defined to be the lowest start value of its Transcripts and the highest end value respectively. - -Genes, Translations, Transcripts and Exons all have stable identifiers. These are identifiers that are assigned to Ensembl's predictions, and maintained in subsequent releases. For example, if a Transcript (or a sufficiently similar Transcript) is re-predicted in a future release then it will be assigned the same stable identifier as its predecessor. - -The following is an example of the retrieval of a set of Genes, Transcripts and Exons: - -sub feature2string { - my $f = shift; - - my $stable_id = $f->stable_id(); - my $seq_region = $f->slice->seq_region_name(); - my $start = $f->start(); - my $end = $f->end(); - my $strand = $f->strand(); - - return “$stable_id : $seq_region:$start-$end ($strand)”; -} - - -$slice_adaptor = $db->get_SliceAdaptor(); -$slice = $slice_adaptor->fetch_by_region('chromosome','X', - 1e6,10e6); - -foreach my $gene (@{$slice->get_all_Genes()}) { - my $gstring = feature2string($gene); - print “$gstring\n”; - - foreach my $trans (@{$gene->get_all_Transcripts()}) { - my $tstring = feature2string($trans); - print “ $tstring\n”; - - foreach my $exon (@{$trans->get_all_Exons()}) { - my $estring = feature2string($exon); - print “ $estring\n”; - } - } -} - - -In addition to the methods which are present on every feature, the transcript class has many other methods which are commonly used. Several methods can be used to obtain transcript related sequences. For historical reasons some of these methods return strings while others return Bio::Seq objects. The following example demonstrates the use of some of these methods: - -# spliced_seq returns the concatenation of the exon sequences. -# This is the cDNA of the transcript -print “cDNA: “, $trans->spliced_seq(), “\n”; - -# translateable_seq returns only the CDS of the transcript -print “CDS: “, $trans->translateable_seq(), “\n”; - -# UTR sequences are obtained via the five_prime_utr and -# three_prime_utr methods -my $fiv_utr = $trans->five_prime_utr(); -my $thr_utr = $trans->three_prime_utr(); - -print ($fiv_utr) ? $fiv_utr->seq() : 'No 5' UTR', “\n”; -print ($thr_utr) ? $thr_utr->seq() : 'No 3' UTR', “\n”; - -# The peptide sequence is obtained from the translate method -# undef is returned if this transcript is non-coding -my $pep = $trans->translate(); -print ($pep) ? $pep->seq() : 'No Translation', “\n”; - - -Translations and ProteinFeatures - -Translation objects and peptide sequence can be extracted from a Transcript object. It is important to remember that some Ensembl transcripts are non-coding (pseudogenes, ncRNAs, etc.) and have no translation. The primary purpose of a Translation object is to define the CDS and UTRs of its associated Transcript object. Peptide sequence is obtained directly from a Transcript object – not a Translation object as might be expected. The following example obtains the peptide sequence of a Transcript and the Translation's stable identifier: - -my $stable_id = 'ENST00000044768'; -my $transcript_adaptor = $db->get_TranscriptAdaptor(); -my $transcript = - $transcript_adaptor->fetch_by_stable_id($stable_id); - -print $transcript->translation()->stable_id(), “\n”; -print $transcript->translate()->seq(), “\n”; - -ProteinFeatures are features which are on an amino acid sequence rather than a nucleotide sequence. The method get_all_ProteinFeatures can be used to obtain a set of protein features from a Translation object. - -$translation = $transcript->translation(); - -my $protein_feats = $translation->get_all_ProteinFeatures(); - -foreach my $pf (@$protein_feats) { - my $logic_name = $pf->analysis()->logic_name(); - print $pf->start(), '-', $pf->end(), ' ', $logic_name, ' ', - $pf->interpro_ac(), ' ', $pf->idesc(), "\n"; -} - -If only the protein features created by a particular analysis are desired the name of the analysis can be provided as an argument. To obtain the subset of features which are considered to be 'domain' features the convenience method get_all_DomainFeatures can be used: - -my $seg_feats = $translation->get_all_ProteinFeatures('Seg'); -my $domain_feats = $translation->get_all_DomainFeatures(); - - -PredictionTranscripts - -PredictionTranscripts are the results of ab initio gene finding programs that are stored in Ensembl. Example programs include Genscan and SNAP. Prediction transcripts have the same interface as normal transcripts and thus they can be used in the same way. - -my $ptranscripts = $slice->get_all_PredictionTranscripts; - -foreach my $ptrans (@$ptranscripts) { - my $exons = $ptrans->get_all_Exons(); - my $type = $ptrans->analysis->logic_name(); - print "$type prediction has ".scalar(@$exons).” exons\n"; - - foreach my $exon (@$exons) { - print $exon->start . " - " . - $exon->end . " : " . - $exon->strand . " " . - $exon->phase ."\n"; - } -} - - -Alignment Features - -Two types of alignments are stored in the core Ensembl database: alignments of DNA sequence to the genome and aligments of peptide sequence to the genome. These can be retrieved as DnaDnaAlignFeatures and DnaPepAlignFeatures respectively. A single gapped alignment is represented by a single feature with a CIGAR line. A CIGAR line is a concise representation of a gapped alignment as single string containing letters M (match) D (deletion), and I (insertion) prefixed by integer lengths (the number may be omitted if it is 1). A gapped alignment feature can be broken into its component ungapped alignments by the method ungapped_features which returns a list of FeaturePair objects. The following example shows the retrieval of some alignment features. - -# retrieve dna-dna alignment features from the slice region -my $feats = $slice->get_all_DnaAlignFeatures('Vertrna'); -print_align_features($feats); - -# retrieve protein-dna alignment features from the slice region -$feats = $slice->get_all_ProteinAlignFeatures('Swall'); -print_align_features($feats); - -sub print_align_features { - my $feats = shift; - - foreach my $feat (@$feats) { - - print_feature_pairs([$feat]); - - print "Percent identity: ", $feat->percent_id(), "\n"; - print " - - print "CIGAR: ", $feat->cigar_string(), "\n"; - - my @ungapped = $feat->ungapped_features(); - - print "ungapped:\n"; - print_feature_pairs(\@ungapped); - print "\n"; - } -} - -sub print_feature_pairs { - my $feats = shift; - - foreach my $feat (@$feats) { - # print out the 'hit' name and coordinates - print $feat->hseqname()," ",$feat->hstart, '-',$feat->hend(), - '(', $feat->hstrand(), ')', ' => ', - # print out the genomic coordinates - $feat->start, '-', $feat->end(), - '(', $feat->strand(), ")\n"; - } -} - - -Repeats - -Repetitive regions found by RepeatMasker and TRF (Tandem Repeat Finder) are represented in the Ensembl database as RepeatFeatures. Short non-repetitive regions between repeats are found by the program Dust and are also stored as RepeatFeatures. RepeatFeatures can be retrieved and used in the same way as other Ensembl features. - -my $repeats = $slice->get_all_RepeatFeatures(); -foreach my $repeat (@$repeats) { - print $repeat->display_id(), “ “, - $repeat->start(), “-”, $repeat->end(), “\n”; -} - -RepeatFeatures are used to perform repeat masking of the genomic sequence. Hard or softmasked genomic sequence can be retrieved from Slice objects using the get_repeatmasked_seq method. Hardmasking replaces sequence in repeat regions with Ns. Softmasking replaces sequence in repeat regions with lowercase sequence. - -my $unmasked_seq = $slice->seq(); - -my $hardmasked_seq = $slice->get_repeatmasked_seq(); - -my $softmasked_seq = $slice->get_repeatmasked_seq(undef, 1); - -# softmask sequence using TRF results only -my $tandem_masked_seq = $slice->get_repeatmasked_seq(['TRF'], 1); - - -Markers - -Markers are imported into the Ensembl database from UniSTS and several other sources. A marker in Ensembl consists of a pair of primer sequences, an expected product size and a set of associated identifiers known as synonyms. Markers are placed on the genome electronically using an analysis program such as ePCR and their genomic positions are retrievable as MarkerFeatures. Map locations (genetic, radiation hybrid and in situ hybridization) for markers obtained from actual experimental evidence are also accessible. - -Markers can be fetched via their name from the MarkerAdaptor. - -my $marker_adaptor = $db->get_MarkerAdaptor(); - -# obtain marker by one of its names -my ($marker) = @{$marker_adaptor->fetch_all_by_synonym('D9S1038E')}; - -# print the various names associated with the same marker -foreach my $synonym ($marker->get_all_MarkerSynonyms()}) { - print $synonym->source(), ':' if($synonym->source()); - print $synonym->name(), ' '; -} - -# print the primer info -print “\nleft primer: ”, $marker->left_primer(), “\n”; -print “right primer: ”, $marker->right_primer(), “\n”; -print “product size: ”, $marker->min_primer_dist(), '-', - $marker->max_primer_dist(), “\n”; - -# print out genetic/RH/FISH map information -print “Map locations:\n”; -foreach my $map_loc (@{$marker->get_all_MapLocations()}) { - print “ “, $map_loc->map_name(), ' ', - $map_loc->chromosome_name(), ' ', - $map_loc->position(), “\n”; -} - -MarkerFeatures, which represent genomic positions of markers, can be retrieved and manipulated in the same way as other Ensembl features. - -# obtain the positions for an already retrieved marker -foreach my $marker_feat (@{$marker->get_all_MarkerFeatures()}) { - print $marker_feat->seq_region_name(), - $marker_feat->start(), '-', $marker_feat->end(), “\n”; -} - -# retrieve all marker features in a given region -my $marker_feats = $slice->get_all_MarkerFeatures(); -foreach my $marker_feat (@$marker_feats) { - print $marker_feat->display_id(), “ “, - $marker_feat->seq_region_name(), - $marker_feat->start(), '-', $marker_feat->end(), “\n”; -} - -MiscFeatures - -MiscFeatures are features with arbitrary attributes which are placed into arbitrary groupings. MiscFeatures can be retrieved as any other feature and are classified into distinct sets by a set code. Generally it only makes sense to retrieve all features which have a particular set code because very diverse types of MiscFeatures are stored in the database. - -MiscFeature attributes are represented by Attribute objects and can be retrieved via a get_all_Attributes method. - -The following example retrieves all MiscFeatures representing ENCODE regions on a given slice and prints out their attributes: - -my $enc_regions = $slice->get_all_MiscFeatures('encode_regions'); -foreach my $enc_region (@$enc_regions) { - foreach my $attr (@{$enc_region->get_all_Attributes()}) { - print $attr->name(), ':', $attr->value(), “\n”; - } -} - -This example retrieves all misc features representing a BAC clone via its name and prints out their location and other information: - -my $mfa = $db->get_MiscFeatureAdaptor(); -my $clones = $mfa->fetch_all_by_attribute_type_value('Name', - 'RP11-62N12'); - -foreach my $clone (@$clones) { - my $slice = $clone->slice(); - print $slice->coord_system->name(), ' ', - $slice->seq_region_name(), ' ', - $clone->start(), '-', $clone->end(), "\n"; - - foreach my $a (@{$clone->get_all_Attributes()}) { - print ' ', $a->name, ':', $a->value, "\n"; - } -} - - -External References - -Ensembl cross references its genes, transcripts and translations with identifiers from other databases. A DBEntry object represents a cross reference and is often referred to as an 'xref'. The following code snippet retrieves and prints DBEntries for a gene, its transcripts and its translations: - -# define a helper subroutine to print DBEnties -sub print_DBEntries { - my $db_entries = shift; - foreach my $dbe (@$db_entries) { - print $dbe->dbname(),“ - “,$dbe->display_id(),“\n”; - } -} - -print “GENE “, $gene->stable_id(), “\n”; -print_DBEntries($gene->get_all_DBEntries()); - -foreach my $trans(@{$gene->get_all_Transcripts()}){ - print “TRANSCRIPT “, $trans->stable_id(), “\n”; - print_DBEntries($trans->get_all_DBEntries()); - # watch out: pseudogenes have no translation - if($trans->translation()) { - my $transl = $trans->translation(); - print “TRANSLATION “,$transl->stable_id(),”\n”; - print_DBEntries($transl->get_all_DBEntries()); - } -} - - -Often it is useful to obtain all of the DBEntries associated with a gene and its associated transcripts and translation as in the above example. As a shortcut to calling get_all_DBEntries on all of the above objects the get_all_DBLinks method can be used instead. The above example could be shortened by using the following: - -print_DBEntries($gene->get_all_DBLinks()); - - -Coordinates - -We have already discussed the fact that Slices and features have coordinates, but we have not defined exactly what these coordinates mean. - -Ensembl, and many other bioinformatics applications, use inclusive coordinates which start at 1. The first nucleotide of a DNA sequence is 1 and the first amino acid of a peptide sequence is also 1. The length of a sequence is defined as end - start + 1. - -In some rare cases inserts are specified with a start which is one greater than the end. For example a feature with a start of 10 and an end of 9 would be a zero length feature between basepairs 9 and 10. - -Slice coordinates are relative to the start of the underlying DNA sequence region. The strand of the Slice represents its orientation relative to the default orientation of the sequence region. By convention the start of the Slice is always less than or equal to the end - 1, and does not vary with its strandedness. Most Slices you will encounter will have a strand of 1, and this is what we will consider in our examples. It is legal to create a Slice which extends past the boundaries of a sequence region. Sequence retrieved from regions where the sequence is not defined will consist of Ns. - -All features retrieved from the database have an associated Slice (accessible via the slice method). A feature's coordinates are always relative to this associated Slice. I.e. the start and end attributes define a feature's position relative to the start of the Slice the feature is on (or the end of the Slice if it is a negative strand Slice). The strand attribute of a feature is relative to the strand of the Slice. By convention the start of a feature is always less than or equal to the end of the feature regardless of its strand (except in the case of an insert). It is legal to have features with coordinates which are less than one or greater than the length of the slice. Such cases are common when features that partially overlap a slice are retrieved from the database. - -Consider, for example, the following figure of two features associated with a Slice: - - - [-----] (Feature A) - - |================================| (Slice) - - [--------] (Feature B) - - A C T A A A T C T T G (Sequence) - 1 2 3 4 5 6 7 8 9 10 11 12 13 - - -The Slice itself has a start of 2, an end of 13, and a length of 12 even though the underlying sequence region only has a length of 11. Retrieving the sequence of such a slice would give the string CTAAATCTTGNN -- the undefined region of sequence is represented by Ns. Feature A has a start of 0, an end of 2, and a strand of 1. Feature B has a start of 3, an end of 6, and a strand of -1. - - -Coordinate Systems - -Sequences stored in Ensembl are associated with coordinate systems. What the coordinate systems are varies from species to species. For example, the homo_sapiens database has the following coordinate systems: contig, clone, supercontig, chromosome. Sequence and features may be retrieved from any coordinate system despite the fact they are only stored internally in a single coordinate system. The database stores the relationship between these coordinate systems and the API provides means to convert between them. The API has a CoordSystem object and object adaptor, however, these are most often used internally. The following example fetches a chromosome coordinate system object from the database: - -my $csa = $db->get_CoordSystemAdaptor(); -my $cs = $csa->fetch_by_name('chromosome'); - -print “Coord system: “ . $cs->name().“ “.$cs->version.”\n”; - -A coordinate system is uniquely defined by its name and version. Most coordinate systems do not have a version, and the ones that do have a default version, so it is usually sufficient to use only the name when requesting a coordinate system. For example, chromosome coordinate systems have a version which is the assembly that defined the construction of the coordinate system. The version of human chromosome coordinate system might be NCBI33 or NCBI34. - -Slice objects have an associated CoordSystem object and a seq_region_name that uniquely defines the sequence that they are positioned on. You may have noticed that the coordinate system of the sequence region was specified when obtaining a Slice in the fetch_by_region method. Similarly the version may also be specified (though it can almost always be omitted): - -$slice = $slice_adaptor->fetch_by_region('chromosome', 'X', - 1e6, 10e6, 'NCBI33'); - - -Sometimes it is useful to obtain full Slices of every sequence in a given coordinate system; this may be done using the SliceAdaptor method fetch_all: - -my @chromosomes = @{$slice_adaptor->fetch_all('chromosome')}; -my @clones = @{$slice_adaptor->fetch_all('clone')}; - - -Now suppose that you wish to write code which is independent of the species used. Not all species have the same coordinate systems; the available coordinate systems depends on the style of assembly used for that species (WGS, clone-based, etc.). You can obtain the list of available coordinate systems for a species using the CoordSystemAdaptor and there is also a special pseudo-coordinate system named toplevel. The toplevel coordinate system is not a real coordinate system, but is used to refer to the highest level coordinate system in a given region. The toplevel coordinate system is particulary useful in genomes that are incompletely assembled. For example, the latest zebrafish genome consists of a set of assembled chromosomes, and a set of supercontigs that are not part of any chromosome. In this example, the toplevel coordinate system sometimes refers to the chromosome coordinate system and sometimes to the supercontig coordinate system depending on the region it is used in. - -#list all coordinate systems in this database: -my @coord_systems = @{$csa->fetch_all()}; -foreach $cs (@coord_systems) { - print “Coord system: “.$cs->name().“ “.$cs->version.”\n”; -} - -#get all slices on the highest coordinate system: -my @slices = @{$slice_adaptor->fetch_all('toplevel')}; - - -Transform - -Features on a Slice in a given coordinate system may be moved to another slice in the same coordinate system or to another coordinate system entirely. This is useful if you are working with a particular coordinate system but you are interested in obtaining the features coordinates in another coordinate system. - -The method transform can be used to move a feature to any coordinate system which is in the database. The feature will be placed on a Slice which spans the entire sequence that the feature is on in the requested coordinate system. - -if(my $new_feature = $feature->transform('clone')) { - print “Feature's clonal position is:”, - $new_feature->slice->seq_region_name(), ' ', - $new_feature->start(),'-',$feature->end(),' (', - $new_feature->strand(), “)\n”; -} else { - print “Feature is not defined in clonal coordinate system\n”; -} - -The transform method returns a copy of the original feature in the new coordinate system, or undef if the feature is not defined in that coordinate system. A feature is considered to be undefined in a coordinate system if it overlaps an undefined region or if it crosses a coordinate system boundary. Take for example the tiling path relationship between chromosome and contig coordinate systems: - - - |~~~~~~~| (Feature A) |~~~~| (Feature B) - - (ctg 1) [=============] - (ctg 2) (------==========] (ctg 2) - (ctg 3) (--============] (ctg3) - - -Both Feature A and Feature B are defined in the chromosomal coordinate system described by the tiling path of contigs. However, Feature A is not defined in the contig coordinate system because it spans both Contig 1 and Contig 2. Feature B, on the other hand, is still defined in the contig coordinate system. - -The special toplevel coordinate system can also be used in this instance to move the feature to the highest possible coordinate system in a given region: - -my $new_feature = $feature->transform('toplevel'); -print “Feature's toplevel position is:”, -$new_feature->slice->coord_system->name(), ' ', -$new_feature->slice->seq_region_name(), ' ', -$new_feature->start(),'-',$feature->end(),' (', -$new_feature->strand(), “)\n”; - - -Transfer - -Another method that is available on all Ensembl features is the transfer method. The transfer method is similar to the perviously described transform method, but rather than taking a coordinate system argument it takes a Slice argument. This is useful when you want a feature's coordinates to be relative to a certain region. Calling transform on the feature will return a copy of the which is shifted onto the provided Slice. If the feature would be placed on a gap or across a cooridinate system boundary, then undef is returned instead. It is illegal to transfer a feature to a Slice on a sequence region which is cannot be placed on. For example, a feature which is on chromosome X cannot be transferred to a Slice on chromosome 20 and attempting to do so will raise an exception. It is legal to transfer a feature to a Slice on which it has coordinates past the slice end or before the slice start. The following example illustrates the use of the transfer method: - -$slice = $slice_adaptor->fetch_by_region('chromosome','2', - 1e6, 2e6); - -$new_slice = $slice_adaptor->fetch_by_region('chromosome, '2', - 1_500_000, 2_000_000); - -foreach $sf (@{$slice->get_all_SimpleFeatures('Eponine')}) { - print “Before: “, $sf->start, '-', $sf->end, “\n”; - $new_feat = $sf->transfer($new_slice); - if(!$new_feat) { - print “Could not transfer feature\n”; - } else { - print “After: “, $new_feat->start, '-', $new_feat->end, “\n”; - } -} - - -In the above example a Slice from another coordinate system could also have been used, provided you had an idea about what sequence region the features would be mapped to. - -Project - -When moving features between coordinate systems it is usually sufficient to use the transfer or transform methods. Sometimes, however, it is necessary to obtain coordinates in a another coordinate system even when a coordinate system boundary is crossed. Even though the feature is considered to be undefined in this case, the feature's coordinates in can still be obtained in the requested coordinate system using the project method. - -Both Slices and features have their own project methods, which take the same arguments and have the same return values. The project method takes a coordinate system name as an argument and returns a reference to a list of ProjectionSegment objects. A projection segment has three attributes: from_start, from_end, to_Slice. The from_start and from_end methods return integers representing the part of the feature or Slice that is used to form that part of the projection. The to_Slice method returns a Slice object representing the part of the region that the slice or feature was projected to. The following example illustrates the use of the project method on a feature. The project method on a Slice can be used in the same way. As with the Feature transform method the pseudo coordinate system toplevel can be used to indicate you wish to project to the highest possible level. - -$projection = $feature->project('clone'); - -my $seq_region = $feature->seq_region_name(); -my $start = $feature->start(); -my $end = $feature->end(); -my $strand = $feature->strand(); - -print “Feature at: $seq_region $start-$end ($strand) projects “ . - “to\n“; - -foreach my $segment (@$projection) { - my $to_slice = $segment->to_Slice(); - my $to_seq_region = $to_slice->seq_region_name(); - my $to_start = $to_slice->start(); - my $to_end = $to_slice->end(); - my $to_strand = $to_slice->strand(); - print “ $to_seq_region $to_start-$to_end ($to_strand)\n”; -} - - -Feature Convenience Methods - -We have described how a feature's position on the genome is defined by an associated Slice and a start, end, and strand on that slice. Often it is more convenient to retrieve a feature's absolute position on the underlying sequence region rather than its relative position on a Slice. For convenience a number of methods are provided that can be used to easily obtain a feature's absolute coordinates. - -# shortcuts to doing $feat->slice()->coord_system()->name() -# and $feat->slice()->seq_region_name(); -print $feat->coord_system_name(),' ',$feat->seq_region_name(),' '; - -# get the feature's position on the sequence region -print $feature->seq_region_start(),'-',$feature->seq_region_end(), - '(', $feature->seq_region_strand(), “)\n”; - -Another useful method is display_id. This will return a string that can be used as the name or identifier for a particular feature. For a gene or transcript this method would return the stable_id, for an alignment feature this would return the hit sequence name (hseqname), etc. - -# display_id returns a suitable display value for any feature type -print $feat->display_id(), “\n”; - -The feature_Slice method will return a Slice which is the exact overlap of the feature the method was called on. This slice can then be used to obtain the underlying sequence of the feature or to retrieve other features that overlap the same region, etc. - -$feat_slice = $feat->feature_Slice(); - -# print the sequence of the feature region -print $feat_slice->seq(), “\n”; - -# print the sequence of the feature region + 5000bp flanking -# sequence -print $feat_slice->expand(5000, 5000)->seq(), “\n”; - -# get all genes which overlap the feature -$genes = $feat_slice->get_all_Genes(); - - - - - - - - - - - - - - - - - -The Registry - -The registry is a convienient storage/retrieval area for all the adaptors and provides an easy way to access them. If you have an Ensembl Web Server setup then you can automatically load all it's adaptors with the load_registry_with_web_adaptors method from the Registry module. - -use Bio::EnsEMBL::Registry; -my $reg = "Bio::EnsEMBL::Registry"; - - - -$reg->load_registy_with_web_adaptors(); - - -my $ga = $reg>get_adaptor("Homo_sapiens","estgene",”Gene”); - -my $gene = $ga->fetch_by_stable_id("ENSESTG00000015126"); - -print $gene->seq()."\n"; - - -The above gives an example of using the database data held in the Ensembl Web Server to ease the maintainance of code as we do not need to add the host, database name, host etc as this will already be set up. Plus it should now be more readable. - -Another example of a general script is given below and takes four arguments the species, chromosome, start and end. This script will print out all the gene names with their start and end points and from which group database they were found for all genes found on the named chromosome between the start and end points specified. - -#test2.pl -use Bio::EnsEMBL::Registry; -my $reg = "Bio::EnsEMBL::Registry"; - -my ($species, $chrom, $start, $end) = @ARGV; - -die("Error species chrom start and end needed\n") unless defined($end); - -$reg->load_registry_with_web_adaptors(); - -$species = $reg->get_alias($species); - -my @dbs = $reg->get_all_DBAdaptors(); -foreach my $db (@dbs){ - if($db->species eq $species){ - my $slice_adap = $reg->get_adaptor - ($db->species, $db->group,"Slice"); - if(defined($slice_adap)){ - my $slice = $slice_adap->fetch_by_region - ('chromosome',$chrom, $start, $end); - foreach $gene ( @{$slice->get_all_Genes} ) { - my $gene2= $gene->transform('chromosome'); - my $name = $gene->stable_id() || $gene->type().".". - $gene->dbID() ; - print $db->group."\t".$name."\t".$gene2->start."\t". - $gene2->end."\n"; - } - } - } -} - -Note the path to the SiteDefs.pm module must first be added to the PERL5LIB enviroment variable if you want to use the load_registry_with_web_adaptors method. The next example will list all the databases that have been set up for the Ensembl Web Server :- - -use Bio::EnsEMBL::Registry; -my $reg = "Bio::EnsEMBL::Registry"; - -$reg->load_registry_with_web_adaptors(); - -my @dbs = $reg->get_all_DBAdaptors(); -foreach my $db (@dbs){ - print $db->species()."\t". - $db->group()."\t". - $db->dbc->dbname()."\t". - $db->dbc->host()."\t". - $db->dbc->port()."\n"; -} - -To ensure the Registry stores the Adaptors in an organised way two new arguments have been added to the DBAdaptor new method, these are species and group. Default values are used if these are not given. Configuration scripts can be written to enable an easy setup of the Registry for all scripts to use. Below is an example of a configuration script. - -use Bio::EnsEMBL::DBSQL::DBAdaptor; -use Bio::EnsEMBL::Utils::ConfigRegistry; -my $reg = "Bio::EnsEMBL::Registry"; - -my @a = ('H_Sapiens', 'homo sapiens', 'human', - 'Homo_Sapiens',"Homo sapiens"); - -Bio::EnsEMBL::Utils::ConfigRegistry-> - add_alias( -species => "Homo_sapiens", - -alias => \@a); - -new Bio::EnsEMBL::DBSQL::DBAdaptor( - -species => "Homo_sapiens", - -group => "core", - -host => 'host1', - -user => 'anonymous', - -dbname => 'homo_sapiens_core_24_34e', - -port => '3306' ); - -my $db = new Bio::EnsEMBL::DBSQL::DBAdaptor( - -species => "Homo_sapiens", - -group => "estgene", - -host => 'host1', - -user => 'anonymous', - -dbname => 'homo_sapiens_estgene_24_34e', - -port => '3306' ); - - -$reg->add_DNAAdaptor($db->species, $db->group, "core"); - -The script is ran by calling the method load_all and passing it the file name. Alternatively if there is no file name the Enviroment Variable ENSEMBL_REGISTRY is checked for a valid file. If that fails the file ./ensembl_initrc is checked. So a central configuration script can be setup and occasional API programmers will no longer have to remember what databases are where and on what port etc. So to use the above configuration to get the sequence from a estgene stable_id would be :- This presumes i have set up ENSEMBL_REGISTRY. - - - -use Bio::EnsEMBL::Registry; -my $reg = "Bio::EnsEMBL::Registry"; - -$reg->load_all(); - -my $gadap = $reg->get_adaptor("human","estgene",”Gene”); - -my $gene = $gadap->fetch_by_stable_id("ENSESTG00000015126"); - -print $gene->seq."\n"; - - diff --git a/misc-scripts/CopyDBoverServer.pl b/misc-scripts/CopyDBoverServer.pl deleted file mode 100755 index bf223805d..000000000 --- a/misc-scripts/CopyDBoverServer.pl +++ /dev/null @@ -1,745 +0,0 @@ -#!/usr/bin/env perl - -use strict; -use warnings; - -use DBI; -use File::Copy; -use File::Spec::Functions - qw( rel2abs curdir canonpath updir catdir catfile ); -use Getopt::Long; -use IO::File; -use Sys::Hostname; - -my $start_time = time(); - -sub short_usage { - my $indent = ' ' x length($0); - - print < \$opt_password, - 'flush!' => \$opt_flush, - 'check!' => \$opt_check, - 'opt!' => \$opt_optimize, - 'force!' => \$opt_force, - 'subset=s' => \$opt_subset, - 'skip_innodb!' => \$skip_innodb, - 'help' => \$opt_help ) - || ( !defined($opt_password) && !defined($opt_help) ) ) -{ - short_usage(); - exit 1; -} - -if ( defined($opt_help) ) { - long_usage(); - exit 0; -} - -if ( scalar( getpwuid($<) ) ne 'mysqlens' ) { - die("You need to run this script as the 'mysqlens' user.\n"); -} - -my $input_file = shift(@ARGV); - -if ( !defined($input_file) ) { - short_usage(); - exit 1; -} - -my %executables = ( - 'myisamchk' => '/software/farm/mysql/bin/myisamchk', - 'rsync' => '/usr/bin/rsync' -); - -my %table_subsets = ( - 'xref' => [ - 'xref', 'object_xref', - 'identity_xref', 'go_xref', - 'external_db', 'external_synonym', - 'unmapped_reason', 'unmapped_object', - ], - 'stable_id' => [ - 'gene_stable_id', 'transcript_stable_id', - 'translation_stable_id', 'exon_stable_id', - 'mapping_session', 'stable_id_event', - 'gene_archive', 'peptide_archive', - ] ); - -if ( defined($opt_subset) ) { - if ( !exists( $table_subsets{ lc($opt_subset) } ) ) { - die( sprintf( "Unknown table subset '%s'\n", $opt_subset ) ); - } - $opt_subset = lc($opt_subset); -} - -my $run_hostname = ( gethostbyname( hostname() ) )[0]; -my $working_dir = rel2abs( curdir() ); - -$run_hostname =~ s/\..+//; # Cut off everything but the first part. - -##====================================================================## -## Read the configuration file line by line and try to validate all ## -## parts of each line. Store the validated information in the @todo ## -## list (a list of hashes) for later processing. ## -##====================================================================## - -my $in = IO::File->new( '<' . $input_file ) - or die( sprintf( "Can not open '%s' for reading", $input_file ) ); - -my @todo; # List of verified databases etc. to copy. - -my $lineno = 0; -while ( my $line = $in->getline() ) { - ++$lineno; - - $line =~ s/^\s+//; # Strip leading whitespace. - $line =~ s/\s+$//; # Strip trailing whitespace. - - if ( $line =~ /^\#/ ) { next } # Comment line. - if ( $line =~ /^\s*$/ ) { next } # Empty line. - - my $failed = 0; # Haven't failed so far... - - my ( - $source_server, $source_port, $source_db, - $target_server, $target_port, $target_db - ) = split( /\s+/, $line ); - - my $source_hostname = ( gethostbyname($source_server) )[0]; - my $target_hostname = ( gethostbyname($target_server) )[0]; - - # Verify source server and port. - if ( !defined($source_hostname) || $source_hostname eq '' ) { - warn( - sprintf( - "line %d: Source server '%s' is not valid.\n", - $lineno, $source_server - ) ); - $failed = 1; - } else { - $source_hostname =~ s/\..+//; - } - - if ( !defined($source_port) || $source_port =~ /\D/ ) { - warn( - sprintf( - "line %d: Source port '%s' is not a number.\n", - $lineno, $source_port || '' - ) ); - $failed = 1; - } - - # Verify target server and port. - if ( !defined($target_hostname) || $target_hostname eq '' ) { - warn( - sprintf( - "line %d: Target server '%s' is not valid.\n", - $lineno, $target_server - ) ); - $failed = 1; - } else { - $target_hostname =~ s/\..+//; - } - - if ( !defined($target_port) || $target_port =~ /\D/ ) { - warn( - sprintf( - "line %d: Target port '%s' is not a number.\n", - $lineno, $target_port || '' - ) ); - $failed = 1; - } - - # Make sure we running on the target server. - if ( !$failed && $run_hostname ne $target_hostname ) { - warn( - sprintf( - "line %d: " - . "This script needs to be run on the destination server " - . "'%s' ('%s').\n", - $lineno, $target_server, $target_hostname - ) ); - $failed = 1; - } - - if ( !$failed ) { - push( - @todo, - { - 'source_server' => $source_server, - 'source_hostname' => $source_hostname, - 'source_port' => $source_port, - 'source_db' => $source_db, - 'target_server' => $target_server, - 'target_hostname' => $target_hostname, - 'target_port' => $target_port, - 'target_db' => $target_db, - } ); - } -} ## end while ( my $line = $in->getline...) - -$in->close(); - -##====================================================================## -## Take the copy specifications from the @todo list and for each ## -## specification copy the database to a staging area using rsync, ## -## check it with myisamchk, and move it in place in the database ## -## directory. ## -##====================================================================## - -foreach my $spec (@todo) { - my $source_server = $spec->{'source_server'}; - my $source_hostname = $spec->{'source_hostname'}; - my $source_port = $spec->{'source_port'}; - my $source_db = $spec->{'source_db'}; - my $target_server = $spec->{'target_server'}; - my $target_hostname = $spec->{'target_hostname'}; - my $target_port = $spec->{'target_port'}; - my $target_db = $spec->{'target_db'}; - - my $label = sprintf( "{ %s -> %s }==", $source_db, $target_db ); - print( '=' x ( 80 - length($label) ), $label, "\n" ); - - print("CONNECTING TO SOURCE AND TARGET DATABASES " - . "TO GET 'datadir'\n" ); - - my $source_dsn = sprintf( "DBI:mysql:database=%s;host=%s;port=%d", - $source_db, $source_hostname, $source_port ); - - my $source_dbh = - DBI->connect( $source_dsn, 'ensadmin', $opt_password, - { 'PrintError' => 1, 'AutoCommit' => 0 } ); - - if ( !defined($source_dbh) ) { - warn( - sprintf( - "Failed to connect to the source database '%s:%d/%s'.\n", - $source_server, $source_port, $source_db - ) ); - - $spec->{'status'} = - sprintf( "FAILED: can not connect to source database '%s:%d/%s'.", - $source_server, $source_port, $source_db ); - next; - } - - my $target_dsn = sprintf( "DBI:mysql:host=%s;port=%d", - $target_hostname, $target_port ); - - my $target_dbh = - DBI->connect( $target_dsn, 'ensadmin', $opt_password, - { 'PrintError' => 1, 'AutoCommit' => 0 } ); - - if ( !defined($target_dbh) ) { - warn( - sprintf( - "Failed to connect to the target server '%s:%d'.\n", - $target_server, $target_port - ) ); - - $spec->{'status'} = - sprintf( "FAILED: can not connect to target server '%s:%d'.", - $target_server, $target_port ); - - $source_dbh->disconnect(); - next; - } - - # Get source and target server data directories. - my $source_dir = - $source_dbh->selectall_arrayref("SHOW VARIABLES LIKE 'datadir'") - ->[0][1]; - my $target_dir = - $target_dbh->selectall_arrayref("SHOW VARIABLES LIKE 'datadir'") - ->[0][1]; - - $target_dbh->disconnect(); - - if ( !defined($source_dir) ) { - warn( - sprintf( - "Failed to find data directory for source server at '%s:%d'.\n", - $source_server, $source_port - ) ); - - $spec->{'status'} = sprintf( - "FAILED: can not find data directory on source server '%s:%d'.", - $source_server, $source_port ); - - $source_dbh->disconnect(); - next; - } - - if ( !defined($target_dir) ) { - warn( - sprintf( - "Failed to find data directory for target server at '%s:%d'.\n", - $target_server, $target_port - ) ); - - $spec->{'status'} = sprintf( - "FAILED: can not find data directory on target server '%s:%d'.", - $target_server, $target_port ); - - $source_dbh->disconnect(); - next; - } - - printf( "SOURCE 'datadir' = '%s'\n", $source_dir ); - printf( "TARGET 'datadir' = '%s'\n", $target_dir ); - - my $tmp_dir = canonpath( catdir( $target_dir, updir(), 'tmp' ) ); - - my $staging_dir = catdir( $tmp_dir, sprintf( "tmp.%s", $target_db ) ); - my $destination_dir = catdir( $target_dir, $target_db ); - - $spec->{'status'} = 'SUCCESS'; # Assume success until failure. - - # Try to make sure the temporary directory and the final destination - # directory actually exists, and that the staging directory within the - # temporary directory does *not* exist. Allow the staging directory - # to be reused when the --force switch is used. - - if ( !-d $tmp_dir ) { - die( - sprintf( "Can not find the temporary directory '%s'", $tmp_dir ) - ); - } - - if ( -d $destination_dir ) { - warn( - sprintf( "Destination directory '%s' already exists.\n", - $destination_dir ) ); - - $spec->{'status'} = - sprintf( "FAILED: database destination directory '%s' exists.", - $destination_dir ); - - $source_dbh->disconnect(); - next; - } - - if ( !$opt_force && -d $staging_dir ) { - warn( - sprintf( "Staging directory '%s' already exists.\n", - $staging_dir ) ); - - $spec->{'status'} = - sprintf( "FAILED: staging directory '%s' exists.", $staging_dir ); - - $source_dbh->disconnect(); - next; - } - - if ( !mkdir($staging_dir) ) { - if ( !$opt_force || !-d $staging_dir ) { - warn( - sprintf( "Failed to create staging directory '%s'.\n", - $staging_dir ) ); - - $spec->{'status'} = - sprintf( "FAILED: can not create staging directory '%s'.", - $staging_dir ); - - $source_dbh->disconnect(); - next; - } - } - - my @tables; - if ( defined($opt_subset) ) { - # Copy only a subset of the tables. - @tables = @{ $table_subsets{$opt_subset} }; - } else { - # Copy all tables. - - foreach my $table ( @{ $source_dbh->selectall_arrayref('SHOW TABLES') } ) - { - - $table = $table->[0]; - my ($engine) = $source_dbh->selectrow_array("select t.Engine from information_schema.TABLES t where t.TABLE_SCHEMA='${source_db}' and t.TABLE_NAME='${table}'"); - - if($engine eq 'InnoDB'){ - - if($skip_innodb){ - warn("SKIPPING InnoDB table:\t$table\n"); - next; - } - else{ - die("Found InnoDB table:\t${source_db}.${table}\nPlease convert table engine or specify -skip_innodb"); - } - } - - push( @tables, $table ); - } - } - - # Lock tables with a read lock. - print("LOCKING TABLES...\n"); - $source_dbh->do( - sprintf( "LOCK TABLES %s READ", join( ' READ, ', @tables ) ) ); - - if ($opt_flush) { - # Flush tables. - - print("FLUSHING TABLES...\n"); - $source_dbh->do( - sprintf( "FLUSH TABLES %s", join( ', ', @tables ) ) ); - } - - ##------------------------------------------------------------------## - ## OPTIMIZE ## - ##------------------------------------------------------------------## - - if ($opt_optimize) { - print( '-' x 35, ' OPTIMIZE ', '-' x 35, "\n" ); - - foreach my $table (@tables) { - printf( "Optimizing table '%s'...", $table ); - $source_dbh->do( sprintf( "OPTIMIZE TABLE %s", $table ) ); - print("\tok\n"); - } - } - - ##------------------------------------------------------------------## - ## COPY ## - ##------------------------------------------------------------------## - - print( '-' x 37, ' COPY ', '-' x 37, "\n" ); - - # Set up database copying. We're using rsync for this because it's - # using SSH for network transfers, because it may be used for local - # copy too, and because it has good inclusion/exclusion filter - # options. - - my @copy_cmd = - ( $executables{'rsync'}, '--whole-file', '--archive', - '--progress' ); - - if ($opt_force) { - push( @copy_cmd, '--delete', '--delete-excluded' ); - } - - if ( defined($opt_subset) ) { - # Subset copy. - push( @copy_cmd, "--include=db.opt" ); - push( @copy_cmd, - map { sprintf( "--include=%s.*", $_ ) } - @{ $table_subsets{$opt_subset} } ); - push( @copy_cmd, "--exclude=*" ); - } - - if ( $source_hostname eq $target_hostname ) { - # Local copy. - push( @copy_cmd, - sprintf( "%s/", catdir( $source_dir, $source_db ) ) ); - } else { - # Copy from remote server. - push( - @copy_cmd, - sprintf( "%s:%s/", - $source_hostname, catdir( $source_dir, $source_db ) ) ); - } - - push( @copy_cmd, sprintf( "%s/", $staging_dir ) ); - - # Perform the copy and make sure it succeeds. - - printf( "COPYING '%s:%d/%s' TO STAGING DIRECTORY '%s'\n", - $source_server, $source_port, $source_db, $staging_dir ); - - # For debugging: - # print( join( ' ', @copy_cmd ), "\n" ); - - my $copy_failed = 0; - if ( system(@copy_cmd) != 0 ) { - warn( - sprintf( - "Failed to copy database.\n" - . "Please clean up '%s' (if needed).", - $staging_dir - ) ); - $copy_failed = 1; - } - - # Unlock tables. - print("UNLOCKING TABLES...\n"); - $source_dbh->do('UNLOCK TABLES'); - - $source_dbh->disconnect(); - - if ($copy_failed) { - $spec->{'status'} = - sprintf( "FAILED: copy failed (cleanup of '%s' may be needed).", - $staging_dir ); - next; - } - - ##------------------------------------------------------------------## - ## CHECK ## - ##------------------------------------------------------------------## - - print( '-' x 36, ' CHECK ', '-' x 37, "\n" ); - - # Check the copied table files with myisamchk. Let myisamchk - # automatically repair any broken or un-closed tables. - - if ( !$opt_check ) { - print("NOT CHECKING...\n"); - } else { - print("CHECKING TABLES...\n"); - - my $check_failed = 0; - - foreach my $table (@tables) { - foreach my $index ( - glob( catfile( $staging_dir, sprintf( '%s*.MYI', $table ) ) ) ) - { - my @check_cmd = ( - $executables{'myisamchk'}, - '--check', - '--check-only-changed', - '--update-state', - '--silent', - '--silent', # Yes, twice. - $index - ); - - if ( system(@check_cmd) != 0 ) { - $check_failed = 1; - - warn( - sprintf( - "Failed to check some tables. " - . "Please clean up '%s'.\n", - $staging_dir - ) ); - - $spec->{'status'} = sprintf( - "FAILED: MYISAM table check failed " - . "(cleanup of '%s' may be needed).", - $staging_dir - ); - - last; - } - } ## end foreach my $index ( glob( catfile...)) - } ## end foreach my $table (@tables) - - if ($check_failed) { next } - - } ## end else [ if ( !$opt_check ) ] - - ##------------------------------------------------------------------## - ## MOVE ## - ##------------------------------------------------------------------## - - print( '-' x 37, ' MOVE ', '-' x 37, "\n" ); - - # Move table files into place in $destination_dir using - # File::Copy::move(), and remove the staging directory. We already - # know that the destination directory does not exist. - - printf( "MOVING '%s' TO '%s'...\n", $staging_dir, $destination_dir ); - - if ( !mkdir($destination_dir) ) { - warn( - sprintf( - "Failed to create destination directory '%s'.\n" - . "Please clean up '%s'.\n", - $destination_dir, $staging_dir - ) ); - - $spec->{'status'} = - sprintf( "FAILED: can not create destination directory '%s' " - . "(cleanup of '%s' may be needed)", - $destination_dir, $staging_dir ); - next; - } - - move( catfile( $staging_dir, 'db.opt' ), $destination_dir ); - - foreach my $table ( @tables ) { - my @files = - glob( catfile( $staging_dir, sprintf( "%s*", $table ) ) ); - - printf( "Moving %s...\n", $table ); - - foreach my $file (@files) { - if ( !move( $file, $destination_dir ) ) { - warn( - sprintf( - "Failed to move database.\n" - . "Please clean up '%s' and '%s'.\n", - $staging_dir, $destination_dir - ) ); - - $spec->{'status'} = - sprintf( "FAILED: move from staging directory failed " - . "(cleanup of '%s' and '%s' may be needed)", - $staging_dir, $destination_dir ); - next; - } - } - } - - # Remove the now empty staging directory. - if ( !rmdir($staging_dir) ) { - warn( - sprintf( - "Failed to unlink the staging directory '%s'.\n" - . "Clean this up manually.\n", - $staging_dir - ) ); - - $spec->{'status'} = - sprintf( "SUCCESS: cleanup of '%s' may be needed", $staging_dir ); - } - -} ## end foreach my $spec (@todo) - -# Display summary. - -my $label = '{ SUMMARY }~~'; -print( "\n", '~' x ( 80 - length($label) ), $label, "\n" ); - -foreach my $spec (@todo) { - printf( "%s -> %s\n %s\n\n", - $spec->{'source_db'}, $spec->{'target_db'}, $spec->{'status'} ); -} - -print("DONE!\n"); - -END { - my $seconds = time() - $start_time; - - my $hours = int( $seconds/( 60*60 ) ); - $seconds -= 60*60*$hours; - - my $minutes = int( $seconds/60 ); - $seconds -= 60*$minutes; - - printf( - "Time taken: %s%dm%ds\n", - ( $hours > 0 ? sprintf( "%dh", $hours ) : '' ), - $minutes, $seconds - ); -} diff --git a/misc-scripts/CreateFile4CopyDBoverServer.pl b/misc-scripts/CreateFile4CopyDBoverServer.pl deleted file mode 100755 index 2ae83fa38..000000000 --- a/misc-scripts/CreateFile4CopyDBoverServer.pl +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/local/ensembl/bin/perl -w -########################################## -# -# Simple but handy script that generate the input file -# neded by the script CopyDBoverServer.pl -# -# Benoit Ballester -# -# Please post comments/questions to the Ensembl development list -# -# -######################################### -use strict; -use DBI; -use Getopt::Long; - -my $help= 0; -my $sourceHost="ens-staging"; -my $sourcePort="3306"; -my $sourceUser=""; -my $sourcePwd=""; -my $destinationHost="mart2"; -my $destinationPort="3306"; -my $limit=''; - -my $usage = "\nUsage: $0 -sourceHost mart1 -sourceUser xxx -destinationHost mart2 -limit %42%\n - -help or -h [for help] - - -sourceHost [default: ens-staging] - -sourcePort [default: 3306 ] - -sourceUser [default: ] - -destinationHost [default: mart2 ] - -destinationPort [default: 3306 ] - -limit [eg. %core_42% ]\n - -The limit option will limit the databases being copied according to your limit criteria. -With -limit %core_42% only ensembl core 42 databases will be copied\n\n -"; - -GetOptions('help|h' => \$help, - 'sourceHost=s' => \$sourceHost, - 'sourcePort=s' => \$sourcePort, - 'sourceUser=s' => \$sourceUser, - 'sourcePwd=s' => \$sourcePwd, - 'destinationHost=s' => \$destinationHost, - 'destinationPort=s' => \$destinationPort, - 'limit=s' => \$limit); - -if ($help || scalar @ARGV == 0 ) { -#if ($help) { - print $usage; - exit 0; -} -#--------------connect to MySQL Source Host -my $dbh = DBI->connect ("DBI:mysql:host=$sourceHost:port=$sourcePort", - $sourceUser, - $sourcePwd) - or die "Can\'t connect to database: $DBI::errstr\n"; - -#--------------prepare and execute the query -my $sql; -if (!$limit){ - $sql = "show databases ;"; -}else { - $sql = "show databases like \"".$limit."\" ;"; -} - -my $sth = $dbh->prepare( $sql); - -$sth->execute( ); -while ( my @row = $sth->fetchrow ){ - - my $result = sprintf ("%s %d %50s %s %d %s",$sourceHost.".internal.sanger.ac.uk", $sourcePort, $row[0], $destinationHost.".internal.sanger.ac.uk ", $destinationPort, $row[0]); - - print $result . "\n"; - -} - -$sth->finish( ); diff --git a/misc-scripts/README.schema_patching b/misc-scripts/README.schema_patching deleted file mode 100644 index 232520a19..000000000 --- a/misc-scripts/README.schema_patching +++ /dev/null @@ -1,99 +0,0 @@ -*** Schema patching using patch_schema.pl *** - -This document describes the schema patch procedure for Ensembl core and -variation databases. - - -------------------------------------------------------------------------------- -Applying patches -------------------------------------------------------------------------------- - -Schema patches are split into multiple files, each containing one "task". The -convention for patch files (in ensembl/sql) is: - - patch_FROM_TO_[a-z].sql - -where FROM is the schema version before patching, TO the version to patch to, -and [a-z] is a letter specifying the respective patch. - -Each patch will put an entry into the meta table (meta_key = 'patch') to -indicate that it has been applied successfully. this should make it easier to -track which patches have been applied to which dbs. - -This meta information is also used by the new script to determine which patches -need to be applied to a db (note that you can still apply the patches manually -if you prefer). The script is ensembl/misc-scripts/schema_patch.pl, run with ---help to see all options it accepts (on the commandline or from an ini-style -script passed in with --conffile). - - -Typical use for core databases: -------------------------------- - -1. check which patches need to be applied: - -This step is entirely optional, you can proceed to step (2) immediately if you -like. - - $ ensembl/misc-scripts/schema_patch.pl --host ecs2 --port 3364 \ - --user xxx --pass xxx --pattern %_core_39_% --schema 39 \ - --dry_run 1 --interactive 0 - -2. actually patch the databases: - - $ ensembl/misc-scripts/schema_patch.pl --host ecs2 --port 3364 \ - --user xxx --pass xxx --pattern %_core_39_% --schema 39 \ - --logfile /your/log/patch/schema_patch.39.log - -The script will run interactively and prompt you for each database matching the -pattern. --logfile is optional but useful for keeping track of what you've -done. - - -Patching variation databases: ------------------------------ - -The schema_patch.pl has been modified to work as well to patch variation -databases. By default, and if you run it as above, it will patch the core -databases. If you want to patch the variation_databases, the option ---patch_variation_database should be added, so it will read the -ensembl-variation/sql directory and apply all the patch_*.sql to the database, -as it does with the core databases. - - -------------------------------------------------------------------------------- -Writing patches -------------------------------------------------------------------------------- - -Each patch file *must* add an entry to the meta table to indicate that it has -been run. This should be the last SQL statement in your patch, and look for -example like this: - -# patch idenifier -INSERT INTO meta (meta_key, meta_value) VALUES ('patch', 'patch_39_40_a.sql|rationalise_key_columns'); - - -The meta_value is the name of the patch file plus a short string describing the -purpose of the patch, separated by a '|'. - -For each patch, the same line should be added to table.sql if it contains this -patch. These entries get cleared from table.sql at the beginning of each -release cycle. - - -------------------------------------------------------------------------------- -Related files -------------------------------------------------------------------------------- - -The patch script: - - ensembl/misc_scripts/patch_schema.pl - -Schema definition and patch files: - - ensembl/sql/table.sql - ensembl/sql/patch*.sql - - ensembl-variation/sql/table.sql - ensembl-variation/sql/patch*.sql - diff --git a/misc-scripts/add_species_aliases.pl b/misc-scripts/add_species_aliases.pl deleted file mode 100755 index ab5cbc315..000000000 --- a/misc-scripts/add_species_aliases.pl +++ /dev/null @@ -1,219 +0,0 @@ -#!/usr/local/ensembl/bin/perl -w - -use strict; -use warnings; - -use Bio::EnsEMBL::Registry; - -use Getopt::Long qw( :config no_ignore_case ); - -#----------------------------------------------------------------------- - -sub usage { - print("Info:\n"); - print <> The Release Coordinator runs this script << - >> when all databases have been copied over << - >> to the staging severs. << - - The script reads the already existing aliases from the - meta table (meta_key 'species.alias') and adds to this - aliases computed from the species name. It also uses the - information stored for the meta_keys species.taxonomy_id, - species.common_name, species.ensembl_common_name, and - species.ensembl_alias_name as aliases. - - If the -n or --dryrun options are *not* specified, the existing - list of aliases is appended with any missing aliases. In any - case, the list of aliases will be displayed on the console. - - The database will not be written to if there are no new aliases - to be written to the meta table. - - If the -d or --dbname options are *not* used, the script will - iterate over all Core databases. If the -d or --dbname option - *is* used, only that Core database will be examined. - - This script assumes that the database is a single-species - database. - - This script does not check for alias duplications between - species. - - -EOT - - print("Usage:\n"); - printf( "\t%s\t[-n] -h dbhost [-P dbport] \\\n" - . "\t%s\t-u dbuser [-p dbpass] \\\n" - . "\t%2\$s\t[-d dbname]\n", - $0, ' ' x length($0) ); - print("\n"); - printf( "\t%s\t-?\n", $0 ); - print("\n"); - print("Arguments:\n"); - print("\t-n/--dryrun\t\tDry run, don't write to database\n"); - print("\t-h/--host dbhost\tDatabase server host name\n"); - print("\t-P/--port dbport\tDatabase server port (optional)\n"); - print("\t-u/--user dbuser\tDatabase user name\n"); - print("\t-p/--pass dbpass\tUser password (optional)\n"); - print("\t-d/--name dbname\tDatabase name (optional)\n"); - print("\t-?/--help\t\tDisplays this information\n"); -} ## end sub usage - -#----------------------------------------------------------------------- - -my $dryrun; -my ( $dbhost, $dbport ); -my ( $dbuser, $dbpass ); -my $dbname; - -if ( - !GetOptions( - 'dryrun|n' => \$dryrun, - 'dbhost|host|h=s' => \$dbhost, - 'dbport|port|P=i' => \$dbport, - 'dbuser|user|u=s' => \$dbuser, - 'dbpass|pass|p=s' => \$dbpass, - 'dbname|name|d=s' => \$dbname, - 'help|?' => sub { usage(); exit } ) - || !defined($dbhost) - || !defined($dbuser) ) -{ - usage(); - exit; -} - -my $registry = 'Bio::EnsEMBL::Registry'; - -$registry->load_registry_from_db( - '-host' => $dbhost, - '-port' => $dbport, - '-user' => $dbuser, - '-pass' => $dbpass, -); - -my $select_stmt = qq( -SELECT DISTINCT LCASE(meta_value) -FROM meta -WHERE meta_key IN ( - 'species.taxonomy_id', 'species.common_name', - 'species.ensembl_common_name', 'species.ensembl_alias_name' -) - AND species_id = 1 -); - -my $select_aliases_stmt = qq( -SELECT DISTINCT LCASE(meta_value) -FROM meta -WHERE meta_key = 'species.alias' - AND species_id = 1 -); - -my @dbas = @{ $registry->get_all_DBAdaptors( '-group' => 'Core' ) }; - -foreach my $dba ( sort { $a->species() cmp $b->species() } @dbas ) { - my $dbh = $dba->dbc()->db_handle(); - if ( defined($dbname) && $dbname ne $dba->dbc()->dbname() ) { next } - - my $species = $dba->species(); - if ( $species =~ /^Ancestral/ ) { next } - - printf( "%s{ %s }--\n", - '-' x ( 80 - ( 6 + length($species) ) ), $species ); - printf( "Database = %s\n", $dba->dbc()->dbname() ); - - my %automatic_aliases; - my @existing_aliases; - - my $alias = $species; - $automatic_aliases{$alias} = 1; - - $alias =~ tr [_] [ ]; - $automatic_aliases{$alias} = 1; - - $species =~ /^(.)[^_]*_(.*)$/; - $alias = $1 . $2; - $automatic_aliases{$alias} = 1; - - $species =~ /^(.)[^_]*_(...).*$/; - $alias = $1 . $2; - $automatic_aliases{$alias} = 1; - - $species =~ /^(...)[^_]*_(...).*$/; - $alias = $1 . $2; - $automatic_aliases{$alias} = 1; - - { - my $select_sth = $dbh->prepare($select_stmt); - - $select_sth->execute(); - - my $meta_value; - - $select_sth->bind_columns( \$meta_value ); - - while ( $select_sth->fetch() ) { - $automatic_aliases{$meta_value} = 1; - } - } - { - my $select_sth = $dbh->prepare($select_aliases_stmt); - - $select_sth->execute(); - - my $meta_value; - - $select_sth->bind_columns( \$meta_value ); - - while ( $select_sth->fetch() ) { - push( @existing_aliases, $meta_value ); - } - } - - my @old_aliases; - print("Aliases =\n"); - foreach my $existing_alias ( sort(@existing_aliases) ) { - if ( exists( $automatic_aliases{$existing_alias} ) ) { - printf( "\t'%s' (automatic, in database)\n", $existing_alias ); - push( @old_aliases, $existing_alias ); - } else { - printf( "\t'%s' (in database)\n", $existing_alias ); - } - } - - map { delete( $automatic_aliases{$_} ) } @old_aliases; - - my @new_aliases = - sort { length($a) <=> length($b) || $a cmp $b } - keys(%automatic_aliases); - - if (@new_aliases) { - foreach my $new_alias (@new_aliases) { - printf( "\t'%s' (new automatic alias)\n", $new_alias ); - } - - my $insert_stmt = sprintf( - "INSERT IGNORE INTO meta (species_id, meta_key, meta_value) " - . "VALUES %s", - join( - ', ', - map { - sprintf( "( 1, 'species.alias', %s )", $dbh->quote( lc($_) ) ) - } @new_aliases - ) ); - - if ( !$dryrun ) { - # Insert new aliases. - $dbh->do($insert_stmt); - print("Status = wrote new aliases to database\n"); - } else { - print("Status = dry-run, not writing to database\n"); - } - } else { - print("Status = no new aliases to write to database\n"); - } - -} ## end foreach my $dba ( sort { $a...}) diff --git a/misc-scripts/alternative_splicing/AltSplicingToolkit/AUTHORS b/misc-scripts/alternative_splicing/AltSplicingToolkit/AUTHORS deleted file mode 100644 index bec93070a..000000000 --- a/misc-scripts/alternative_splicing/AltSplicingToolkit/AUTHORS +++ /dev/null @@ -1,16 +0,0 @@ -Authors of AltSplicingToolkit. - -Gautier Koscielny koscieln@ebi.ac.uk 2008-10-01 - -======================================================================== - -Copyright (c) 1999-2010 The European Bioinformatics Institute and -Genome Research Limited, and others. All rights reserved. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -Ensembl License for more details. - -You should have received a copy of the Ensembl License -along with this program. If not, see . diff --git a/misc-scripts/alternative_splicing/AltSplicingToolkit/BUGS b/misc-scripts/alternative_splicing/AltSplicingToolkit/BUGS deleted file mode 100644 index 93dad3947..000000000 --- a/misc-scripts/alternative_splicing/AltSplicingToolkit/BUGS +++ /dev/null @@ -1,10 +0,0 @@ --*- outline -*- - -This file lists the bugs you must be aware of. Be sure to check this -file before using programs from the AltSplicingToolkit. - -altSpliceFinder must not be used in production if there are ``Serious'' bugs. - -* Status: sane - -* No known serious or important bugs so far. diff --git a/misc-scripts/alternative_splicing/AltSplicingToolkit/COPYING b/misc-scripts/alternative_splicing/AltSplicingToolkit/COPYING deleted file mode 100644 index 81ddbfbde..000000000 --- a/misc-scripts/alternative_splicing/AltSplicingToolkit/COPYING +++ /dev/null @@ -1,40 +0,0 @@ - Copyright (c) 1999-2010 The European Bioinformatics Institute and - Genome Research Limited, and others. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer - in the documentation and/or other materials provided with the - distribution. - - 3. The name "Ensembl" must not be used to endorse or promote products - derived from this software without prior written permission. For - written permission, please contact helpdesk@ensembl.org - - 4. Products derived from this software may not be called "Ensembl" - nor may "Ensembl" appear in their names without prior written - permission of the Ensembl developers. - - 5. Redistributions in any form whatsoever must retain the following - acknowledgement: - - "This product includes software developed by Ensembl - (http://www.ensembl.org/)" - - THIS SOFTWARE IS PROVIDED BY THE ENSEMBL GROUP ``AS IS'' AND ANY - EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE ENSEMBL GROUP OR ITS - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/misc-scripts/alternative_splicing/AltSplicingToolkit/ChangeLog b/misc-scripts/alternative_splicing/AltSplicingToolkit/ChangeLog deleted file mode 100644 index 09ea745e7..000000000 --- a/misc-scripts/alternative_splicing/AltSplicingToolkit/ChangeLog +++ /dev/null @@ -1,49 +0,0 @@ -2010-02-03 Gautier Koscielny - - Part of Ensembl release 57 - -2010-01-15 Gautier Koscielny - - altSpliceFinder modification. - Corrected options to compute statistics (--statistiscs|-s) - -2009-12-08 Gautier Koscielny - - altSpliceFinder modification. - * relax mode: option ``-relax|-r'' to compute cassette exons - and mutually exclusive events with relaxed constraints on - flanking exons. - In this mode, flanking exons are required to overlap but the - constraints on the same 3p or 5p end are removed. - * bug on A5SS computation fixed. - * remove spurious STDERR logs on intron retention event - computations. - -2009-05-13 Gautier Koscielny - - Release Version 0.4. - * NEWS: Mention the release. - -2009-05-12 Gautier Koscielny - - Add constitutives option: - * modify Main.cpp: add an option to compute constitutive exons. - * modify gff/SplicingEventGffGenerator.cpp to compute constitutive - exons only if the constitutives flag is on - Fix bug on constitutive exon computations. An exonic region is said - to be constitutive if and only if the number of transcripts covering - this region is equal to the number of known transcripts for this gene. - Any other exon is subject to a splicing event. - * modify as/RegionChunk.cpp to correctly merge a set of transcript exon - locations. - -All previous changes are stored in the release-notes.txt file. - ------ - - Copyright (c) 1999-2010 The European Bioinformatics Institute and - Genome Research Limited, and others. All rights reserved. - - Copying and distribution of this file, with or without - modification, are permitted provided the copyright notice and this - notice are preserved. diff --git a/misc-scripts/alternative_splicing/AltSplicingToolkit/INSTALL b/misc-scripts/alternative_splicing/AltSplicingToolkit/INSTALL deleted file mode 100644 index f91f80359..000000000 --- a/misc-scripts/alternative_splicing/AltSplicingToolkit/INSTALL +++ /dev/null @@ -1,40 +0,0 @@ -Installation: ------------- - -This package uses GNU autoconf generated configure scripts, see the -file INSTALL.configure for generic configure documentation. - -Pre-requisites: --------------- - -You'll need to install 2 extra libraries that are used by the toolkit: - -* The Boost C++ libraries or boost for short (http://www.boost.org) - which provides free portable libraries compatible with standard - libraries. - We currently rely on boost version 1.37.0. - This version can be downloaded at: - http://sourceforge.net/projects/boost/files/ - -* Log for C++ library or Log4cpp for short. - Log4cpp is a library of C++ classes for flexible logging to files, - syslog, IDSA and other destinations. - See the page of the project on SourceForge: - http://log4cpp.sourceforge.net/ - -AltSplicingToolkit: ------------------- - -Once Boost and Log4cpp are installed, simply type: - -./configure --prefix= \ ---with-boost-include=/include/boost-1_37 \ ---with-boost-lib=/lib \ ---with-log4cpp= - -make - -and (as root) - -make install - diff --git a/misc-scripts/alternative_splicing/AltSplicingToolkit/INSTALL.configure b/misc-scripts/alternative_splicing/AltSplicingToolkit/INSTALL.configure deleted file mode 100644 index 8b82ade08..000000000 --- a/misc-scripts/alternative_splicing/AltSplicingToolkit/INSTALL.configure +++ /dev/null @@ -1,291 +0,0 @@ -Installation Instructions -************************* - -Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, -2006, 2007, 2008 Free Software Foundation, Inc. - - This file is free documentation; the Free Software Foundation gives -unlimited permission to copy, distribute and modify it. - -Basic Installation -================== - - Briefly, the shell commands `./configure; make; make install' should -configure, build, and install this package. The following -more-detailed instructions are generic; see the `README' file for -instructions specific to this package. - - The `configure' shell script attempts to guess correct values for -various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that -you can run in the future to recreate the current configuration, and a -file `config.log' containing compiler output (useful mainly for -debugging `configure'). - - It can also use an optional file (typically called `config.cache' -and enabled with `--cache-file=config.cache' or simply `-C') that saves -the results of its tests to speed up reconfiguring. Caching is -disabled by default to prevent problems with accidental use of stale -cache files. - - If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can -be considered for the next release. If you are using the cache, and at -some point `config.cache' contains results you don't want to keep, you -may remove or edit it. - - The file `configure.ac' (or `configure.in') is used to create -`configure' by a program called `autoconf'. You need `configure.ac' if -you want to change it or regenerate `configure' using a newer version -of `autoconf'. - -The simplest way to compile this package is: - - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. - - Running `configure' might take a while. While running, it prints - some messages telling which features it is checking for. - - 2. Type `make' to compile the package. - - 3. Optionally, type `make check' to run any self-tests that come with - the package. - - 4. Type `make install' to install the programs and any data files and - documentation. - - 5. You can remove the program binaries and object files from the - source code directory by typing `make clean'. To also remove the - files that `configure' created (so you can compile the package for - a different kind of computer), type `make distclean'. There is - also a `make maintainer-clean' target, but that is intended mainly - for the package's developers. If you use it, you may have to get - all sorts of other programs in order to regenerate files that came - with the distribution. - - 6. Often, you can also type `make uninstall' to remove the installed - files again. - -Compilers and Options -===================== - - Some systems require unusual options for compilation or linking that -the `configure' script does not know about. Run `./configure --help' -for details on some of the pertinent environment variables. - - You can give `configure' initial values for configuration parameters -by setting variables in the command line or in the environment. Here -is an example: - - ./configure CC=c99 CFLAGS=-g LIBS=-lposix - - *Note Defining Variables::, for more details. - -Compiling For Multiple Architectures -==================================== - - You can compile the package for more than one kind of computer at the -same time, by placing the object files for each architecture in their -own directory. To do this, you can use GNU `make'. `cd' to the -directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. - - With a non-GNU `make', it is safer to compile the package for one -architecture at a time in the source code directory. After you have -installed the package for one architecture, use `make distclean' before -reconfiguring for another architecture. - - On MacOS X 10.5 and later systems, you can create libraries and -executables that work on multiple system types--known as "fat" or -"universal" binaries--by specifying multiple `-arch' options to the -compiler but only a single `-arch' option to the preprocessor. Like -this: - - ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ - CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ - CPP="gcc -E" CXXCPP="g++ -E" - - This is not guaranteed to produce working output in all cases, you -may have to build one architecture at a time and combine the results -using the `lipo' tool if you have problems. - -Installation Names -================== - - By default, `make install' installs the package's commands under -`/usr/local/bin', include files under `/usr/local/include', etc. You -can specify an installation prefix other than `/usr/local' by giving -`configure' the option `--prefix=PREFIX'. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -pass the option `--exec-prefix=PREFIX' to `configure', the package uses -PREFIX as the prefix for installing programs and libraries. -Documentation and other data files still use the regular prefix. - - In addition, if you use an unusual directory layout you can give -options like `--bindir=DIR' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. - - If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. - -Optional Features -================= - - Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the -package recognizes. - - For packages that use the X Window System, `configure' can usually -find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. - -Particular systems -================== - - On HP-UX, the default C compiler is not ANSI C compatible. If GNU -CC is not installed, it is recommended to use the following options in -order to use an ANSI C compiler: - - ./configure CC="cc -Ae" - -and if that doesn't work, install pre-built binaries of GCC for HP-UX. - - On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot -parse its `' header file. The option `-nodtk' can be used as -a workaround. If GNU CC is not installed, it is therefore recommended -to try - - ./configure CC="cc" - -and if that doesn't work, try - - ./configure CC="cc -nodtk" - -Specifying the System Type -========================== - - There may be some features `configure' cannot figure out -automatically, but needs to determine by the type of machine the package -will run on. Usually, assuming the package is built to be run on the -_same_ architectures, `configure' can figure that out, but if it prints -a message saying it cannot guess the machine type, give it the -`--build=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name which has the form: - - CPU-COMPANY-SYSTEM - -where SYSTEM can have one of these forms: - - OS KERNEL-OS - - See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't -need to know the machine type. - - If you are _building_ compiler tools for cross-compiling, you should -use the option `--target=TYPE' to select the type of system they will -produce code for. - - If you want to _use_ a cross compiler, that generates code for a -platform different from the build platform, you should specify the -"host" platform (i.e., that on which the generated programs will -eventually be run) with `--host=TYPE'. - -Sharing Defaults -================ - - If you want to set default values for `configure' scripts to share, -you can create a site shell script called `config.site' that gives -default values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. - -Defining Variables -================== - - Variables not defined in a site shell script can be set in the -environment passed to `configure'. However, some packages may run -configure again during the build, and the customized values of these -variables may be lost. In order to avoid this problem, you should set -them in the `configure' command line, using `VAR=value'. For example: - - ./configure CC=/usr/local2/bin/gcc - -causes the specified `gcc' to be used as the C compiler (unless it is -overridden in the site shell script). - -Unfortunately, this technique does not work for `CONFIG_SHELL' due to -an Autoconf bug. Until the bug is fixed you can use this workaround: - - CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash - -`configure' Invocation -====================== - - `configure' recognizes the following options to control how it -operates. - -`--help' -`-h' - Print a summary of all of the options to `configure', and exit. - -`--help=short' -`--help=recursive' - Print a summary of the options unique to this package's - `configure', and exit. The `short' variant lists options used - only in the top level, while the `recursive' variant lists options - also present in any nested packages. - -`--version' -`-V' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`--cache-file=FILE' - Enable the cache: use and save the results of the tests in FILE, - traditionally `config.cache'. FILE defaults to `/dev/null' to - disable caching. - -`--config-cache' -`-C' - Alias for `--cache-file=config.cache'. - -`--quiet' -`--silent' -`-q' - Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error - messages will still be shown). - -`--srcdir=DIR' - Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. - -`--prefix=DIR' - Use DIR as the installation prefix. *Note Installation Names:: - for more details, including other options available for fine-tuning - the installation locations. - -`--no-create' -`-n' - Run the configure checks, but stop before creating any output - files. - -`configure' also accepts some other, not widely useful, options. Run -`configure --help' for more details. - diff --git a/misc-scripts/alternative_splicing/AltSplicingToolkit/Makefile.am b/misc-scripts/alternative_splicing/AltSplicingToolkit/Makefile.am deleted file mode 100644 index 54564b49e..000000000 --- a/misc-scripts/alternative_splicing/AltSplicingToolkit/Makefile.am +++ /dev/null @@ -1,6 +0,0 @@ -# -# Author: Gautier Koscielny 2008 - 2010 -# -# Master Makefile for alternative splicing toolkit. - -SUBDIRS = src diff --git a/misc-scripts/alternative_splicing/AltSplicingToolkit/Makefile.in b/misc-scripts/alternative_splicing/AltSplicingToolkit/Makefile.in deleted file mode 100644 index f435d5993..000000000 --- a/misc-scripts/alternative_splicing/AltSplicingToolkit/Makefile.in +++ /dev/null @@ -1,605 +0,0 @@ -# Makefile.in generated by automake 1.10.2 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# -# Author: Gautier Koscielny 2008 - 2010 -# -# Master Makefile for alternative splicing toolkit. -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -subdir = . -DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in $(top_srcdir)/configure \ - $(top_srcdir)/include/config.hpp.in AUTHORS COPYING ChangeLog \ - INSTALL NEWS THANKS config.guess config.sub depcomp install-sh \ - ltmain.sh missing -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ - configure.lineno config.status.lineno -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/include/config.hpp -CONFIG_CLEAN_FILES = -SOURCES = -DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -ETAGS = etags -CTAGS = ctags -DIST_SUBDIRS = $(SUBDIRS) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -distdir = $(PACKAGE)-$(VERSION) -top_distdir = $(distdir) -am__remove_distdir = \ - { test ! -d $(distdir) \ - || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -fr $(distdir); }; } -DIST_ARCHIVES = $(distdir).tar.gz -GZIP_ENV = --best -distuninstallcheck_listfiles = find . -type f -print -distcleancheck_listfiles = find . -type f -print -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -ARFLAGS = @ARFLAGS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EXEEXT = @EXEEXT@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -ISODATE = @ISODATE@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -OBJEXT = @OBJEXT@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build_alias = @build_alias@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host_alias = @host_alias@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -SUBDIRS = src -all: all-recursive - -.SUFFIXES: -am--refresh: - @: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ - cd $(srcdir) && $(AUTOMAKE) --gnu \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - echo ' $(SHELL) ./config.status'; \ - $(SHELL) ./config.status;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(srcdir) && $(AUTOCONF) -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) - -include/config.hpp: include/stamp-h1 - @if test ! -f $@; then \ - rm -f include/stamp-h1; \ - $(MAKE) $(AM_MAKEFLAGS) include/stamp-h1; \ - else :; fi - -include/stamp-h1: $(top_srcdir)/include/config.hpp.in $(top_builddir)/config.status - @rm -f include/stamp-h1 - cd $(top_builddir) && $(SHELL) ./config.status include/config.hpp -$(top_srcdir)/include/config.hpp.in: $(am__configure_deps) - cd $(top_srcdir) && $(AUTOHEADER) - rm -f include/stamp-h1 - touch $@ - -distclean-hdr: - -rm -f include/config.hpp include/stamp-h1 - -# This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -$(RECURSIVE_CLEAN_TARGETS): - @failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$tags$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - $(am__remove_distdir) - test -d $(distdir) || mkdir $(distdir) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - distdir) \ - || exit 1; \ - fi; \ - done - -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ - ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ - || chmod -R a+r $(distdir) -dist-gzip: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) - -dist-bzip2: distdir - tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 - $(am__remove_distdir) - -dist-lzma: distdir - tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma - $(am__remove_distdir) - -dist-tarZ: distdir - tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z - $(am__remove_distdir) - -dist-shar: distdir - shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz - $(am__remove_distdir) - -dist-zip: distdir - -rm -f $(distdir).zip - zip -rq $(distdir).zip $(distdir) - $(am__remove_distdir) - -dist dist-all: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) - -# This target untars the dist file and tries a VPATH configuration. Then -# it guarantees that the distribution is self-contained by making another -# tarfile. -distcheck: dist - case '$(DIST_ARCHIVES)' in \ - *.tar.gz*) \ - GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ - *.tar.bz2*) \ - bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ - *.tar.lzma*) \ - unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\ - *.tar.Z*) \ - uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ - *.shar.gz*) \ - GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ - *.zip*) \ - unzip $(distdir).zip ;;\ - esac - chmod -R a-w $(distdir); chmod a+w $(distdir) - mkdir $(distdir)/_build - mkdir $(distdir)/_inst - chmod a-w $(distdir) - dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ - && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ - && cd $(distdir)/_build \ - && ../configure --srcdir=.. --prefix="$$dc_install_base" \ - $(DISTCHECK_CONFIGURE_FLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ - && $(MAKE) $(AM_MAKEFLAGS) check \ - && $(MAKE) $(AM_MAKEFLAGS) install \ - && $(MAKE) $(AM_MAKEFLAGS) installcheck \ - && $(MAKE) $(AM_MAKEFLAGS) uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ - distuninstallcheck \ - && chmod -R a-w "$$dc_install_base" \ - && ({ \ - (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ - distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ - } || { rm -rf "$$dc_destdir"; exit 1; }) \ - && rm -rf "$$dc_destdir" \ - && $(MAKE) $(AM_MAKEFLAGS) dist \ - && rm -rf $(DIST_ARCHIVES) \ - && $(MAKE) $(AM_MAKEFLAGS) distcleancheck - $(am__remove_distdir) - @(echo "$(distdir) archives ready for distribution: "; \ - list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ - sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' -distuninstallcheck: - @cd $(distuninstallcheck_dir) \ - && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ - || { echo "ERROR: files left after uninstall:" ; \ - if test -n "$(DESTDIR)"; then \ - echo " (check DESTDIR support)"; \ - fi ; \ - $(distuninstallcheck_listfiles) ; \ - exit 1; } >&2 -distcleancheck: distclean - @if test '$(srcdir)' = . ; then \ - echo "ERROR: distcleancheck can only run from a VPATH build" ; \ - exit 1 ; \ - fi - @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left in build directory after distclean:" ; \ - $(distcleancheck_listfiles) ; \ - exit 1; } >&2 -check-am: all-am -check: check-recursive -all-am: Makefile -installdirs: installdirs-recursive -installdirs-am: -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-recursive - -clean-am: clean-generic mostlyclean-am - -distclean: distclean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-hdr distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -info: info-recursive - -info-am: - -install-data-am: - -install-dvi: install-dvi-recursive - -install-exec-am: - -install-html: install-html-recursive - -install-info: install-info-recursive - -install-man: - -install-pdf: install-pdf-recursive - -install-ps: install-ps-recursive - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf $(top_srcdir)/autom4te.cache - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-generic - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: - -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ - install-strip - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am am--refresh check check-am clean clean-generic \ - ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \ - dist-lzma dist-shar dist-tarZ dist-zip distcheck distclean \ - distclean-generic distclean-hdr distclean-tags distcleancheck \ - distdir distuninstallcheck dvi dvi-am html html-am info \ - info-am install install-am install-data install-data-am \ - install-dvi install-dvi-am install-exec install-exec-am \ - install-html install-html-am install-info install-info-am \ - install-man install-pdf install-pdf-am install-ps \ - install-ps-am install-strip installcheck installcheck-am \ - installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ - pdf-am ps ps-am tags tags-recursive uninstall uninstall-am - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/misc-scripts/alternative_splicing/AltSplicingToolkit/NEWS b/misc-scripts/alternative_splicing/AltSplicingToolkit/NEWS deleted file mode 100644 index 0496ba28d..000000000 --- a/misc-scripts/alternative_splicing/AltSplicingToolkit/NEWS +++ /dev/null @@ -1,5 +0,0 @@ -AltSplicingToolkit NEWS - User visible changes. - -See release-notes.txt - - diff --git a/misc-scripts/alternative_splicing/AltSplicingToolkit/README b/misc-scripts/alternative_splicing/AltSplicingToolkit/README deleted file mode 100644 index 08ceda096..000000000 --- a/misc-scripts/alternative_splicing/AltSplicingToolkit/README +++ /dev/null @@ -1,63 +0,0 @@ - --*- text -*- - -AltSplicingToolkit contains a set of tools to compute information -regarding alternative splicing. At the moment, this toolkit contains -one binary program called: - -altSpliceFinder - -altSpliceFinder is an extensible and generic tool to compute recurrent -alternative splicing patterns from a set of transcripts variants. -It takes a GFF3 file as an input containing a list of transcript -structures in terms of exons and generates a GFF3 file containing the -resulting set of alternative splicing events. - -Currently altSpliceFinder is able to find the following types of -splicing events: - - Cassette exons (skipped exons) - - Intron retention - - Mutually exclusive exons - - Alternative 3' sites - - Alternative 5' sites - - Intron isoform - - Exon isoform - - Alternative first exon - - Alternative last exon - - Alternative initiation - - Alternative termination - -This program is also able to list constitutive exons from a set of -splicing variants. - -The file INSTALL should be distributed with packages that use -Autoconf-generated configure scripts and Makefiles that conform to the -GNU coding standards. The package's README can just give an overview -of the package, where to report bugs, and a pointer to INSTALL for -instructions on compilation and installation. This removes the need -to maintain many similar sets of installation instructions. - -Be sure to read BUGS (especially if this version is not an official -release) and INSTALL. - -Licensing - -AltSplicingToolkit is released under the Ensembl Licence. - -For more licensing information, see -. - - ------ - - Copyright (c) 1999-2010 The European Bioinformatics Institute and - Genome Research Limited, and others. All rights reserved. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -Ensembl License for more details. - -You should have received a copy of the Ensembl License -along with this program. If not, see -. diff --git a/misc-scripts/alternative_splicing/AltSplicingToolkit/THANKS b/misc-scripts/alternative_splicing/AltSplicingToolkit/THANKS deleted file mode 100644 index 0247b8dc6..000000000 --- a/misc-scripts/alternative_splicing/AltSplicingToolkit/THANKS +++ /dev/null @@ -1,17 +0,0 @@ -AltSplicingToolkit THANKS file - -altSpliceFinder was originally written by Gautier Koscielny. It would -not be what it is today without the invaluable help of these people, -who have reported problems and suggested improvements. - -Ian Longden -Jernej Ule - - Copyright (c) 2008-2010 Gautier Koscielny - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.2 or -any later version published by the Free Software Foundation; with no -Invariant Sections, with no Front-Cover Texts, and with no Back-Cover -Texts. A copy of the license is included in the ``GNU Free -Documentation License'' file as part of this distribution. diff --git a/misc-scripts/alternative_splicing/AltSplicingToolkit/aclocal.m4 b/misc-scripts/alternative_splicing/AltSplicingToolkit/aclocal.m4 deleted file mode 100644 index e846b7a71..000000000 --- a/misc-scripts/alternative_splicing/AltSplicingToolkit/aclocal.m4 +++ /dev/null @@ -1,877 +0,0 @@ -# generated automatically by aclocal 1.10.2 -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2007, 2008 Free Software Foundation, Inc. -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.63],, -[m4_warning([this file was generated for autoconf 2.63. -You have another version of autoconf. It may work, but is not guaranteed to. -If you have problems, you may need to regenerate the build system entirely. -To do so, use the procedure documented by the package, typically `autoreconf'.])]) - -# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_AUTOMAKE_VERSION(VERSION) -# ---------------------------- -# Automake X.Y traces this macro to ensure aclocal.m4 has been -# generated from the m4 files accompanying Automake X.Y. -# (This private macro should not be called outside this file.) -AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.10' -dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to -dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.10.2], [], - [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl -]) - -# _AM_AUTOCONF_VERSION(VERSION) -# ----------------------------- -# aclocal traces this macro to find the Autoconf version. -# This is a private macro too. Using m4_define simplifies -# the logic in aclocal, which can simply ignore this definition. -m4_define([_AM_AUTOCONF_VERSION], []) - -# AM_SET_CURRENT_AUTOMAKE_VERSION -# ------------------------------- -# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. -# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. -AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.10.2])dnl -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) - -# AM_AUX_DIR_EXPAND -*- Autoconf -*- - -# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to -# `$srcdir', `$srcdir/..', or `$srcdir/../..'. -# -# Of course, Automake must honor this variable whenever it calls a -# tool from the auxiliary directory. The problem is that $srcdir (and -# therefore $ac_aux_dir as well) can be either absolute or relative, -# depending on how configure is run. This is pretty annoying, since -# it makes $ac_aux_dir quite unusable in subdirectories: in the top -# source directory, any form will work fine, but in subdirectories a -# relative path needs to be adjusted first. -# -# $ac_aux_dir/missing -# fails when called from a subdirectory if $ac_aux_dir is relative -# $top_srcdir/$ac_aux_dir/missing -# fails if $ac_aux_dir is absolute, -# fails when called from a subdirectory in a VPATH build with -# a relative $ac_aux_dir -# -# The reason of the latter failure is that $top_srcdir and $ac_aux_dir -# are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is `.', but things will broke when you -# start a VPATH build or use an absolute $srcdir. -# -# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, -# iff we strip the leading $srcdir from $ac_aux_dir. That would be: -# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` -# and then we would define $MISSING as -# MISSING="\${SHELL} $am_aux_dir/missing" -# This will work as long as MISSING is not called from configure, because -# unfortunately $(top_srcdir) has no meaning in configure. -# However there are other variables, like CC, which are often used in -# configure, and could therefore not use this "fixed" $ac_aux_dir. -# -# Another solution, used here, is to always expand $ac_aux_dir to an -# absolute PATH. The drawback is that using absolute paths prevent a -# configured tree to be moved without reconfiguration. - -AC_DEFUN([AM_AUX_DIR_EXPAND], -[dnl Rely on autoconf to set up CDPATH properly. -AC_PREREQ([2.50])dnl -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` -]) - -# AM_CONDITIONAL -*- Autoconf -*- - -# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 8 - -# AM_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ(2.52)dnl - ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE])dnl -AC_SUBST([$1_FALSE])dnl -_AM_SUBST_NOTMAKE([$1_TRUE])dnl -_AM_SUBST_NOTMAKE([$1_FALSE])dnl -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi -AC_CONFIG_COMMANDS_PRE( -[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then - AC_MSG_ERROR([[conditional "$1" was never defined. -Usually this means the macro was only invoked conditionally.]]) -fi])]) - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 9 - -# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be -# written in clear, in which case automake, when reading aclocal.m4, -# will think it sees a *use*, and therefore will trigger all it's -# C support machinery. Also note that it means that autoscan, seeing -# CC etc. in the Makefile, will ask for an AC_PROG_CC use... - - -# _AM_DEPENDENCIES(NAME) -# ---------------------- -# See how the compiler implements dependency checking. -# NAME is "CC", "CXX", "GCJ", or "OBJC". -# We try a few techniques and use that to set a single cache variable. -# -# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was -# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular -# dependency, and given that the user is not expected to run this macro, -# just rely on AC_PROG_CC. -AC_DEFUN([_AM_DEPENDENCIES], -[AC_REQUIRE([AM_SET_DEPDIR])dnl -AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl -AC_REQUIRE([AM_MAKE_INCLUDE])dnl -AC_REQUIRE([AM_DEP_TRACK])dnl - -ifelse([$1], CC, [depcc="$CC" am_compiler_list=], - [$1], CXX, [depcc="$CXX" am_compiler_list=], - [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], UPC, [depcc="$UPC" am_compiler_list=], - [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) - -AC_CACHE_CHECK([dependency style of $depcc], - [am_cv_$1_dependencies_compiler_type], -[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_$1_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` - fi - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - case $depmode in - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - none) break ;; - esac - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. - if depmode=$depmode \ - source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_$1_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_$1_dependencies_compiler_type=none -fi -]) -AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) -AM_CONDITIONAL([am__fastdep$1], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) -]) - - -# AM_SET_DEPDIR -# ------------- -# Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES -AC_DEFUN([AM_SET_DEPDIR], -[AC_REQUIRE([AM_SET_LEADING_DOT])dnl -AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl -]) - - -# AM_DEP_TRACK -# ------------ -AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE(dependency-tracking, -[ --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors]) -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' -fi -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH])dnl -_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl -]) - -# Generate code to set up dependency tracking. -*- Autoconf -*- - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -#serial 4 - -# _AM_OUTPUT_DEPENDENCY_COMMANDS -# ------------------------------ -AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[# Autoconf 2.62 quotes --file arguments for eval, but not when files -# are listed without --file. Let's play safe and only enable the eval -# if we detect the quoting. -case $CONFIG_FILES in -*\'*) eval set x "$CONFIG_FILES" ;; -*) set x $CONFIG_FILES ;; -esac -shift -for mf -do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done -done -])# _AM_OUTPUT_DEPENDENCY_COMMANDS - - -# AM_OUTPUT_DEPENDENCY_COMMANDS -# ----------------------------- -# This macro should only be invoked once -- use via AC_REQUIRE. -# -# This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each `.P' file that we will -# need in order to bootstrap the dependency handling code. -AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], -[AC_CONFIG_COMMANDS([depfiles], - [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], - [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) -]) - -# Do all the work for Automake. -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2008 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 13 - -# This macro actually does too much. Some checks are only needed if -# your package does certain things. But this isn't really a big deal. - -# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) -# AM_INIT_AUTOMAKE([OPTIONS]) -# ----------------------------------------------- -# The call with PACKAGE and VERSION arguments is the old style -# call (pre autoconf-2.50), which is being phased out. PACKAGE -# and VERSION should now be passed to AC_INIT and removed from -# the call to AM_INIT_AUTOMAKE. -# We support both call styles for the transition. After -# the next Automake release, Autoconf can make the AC_INIT -# arguments mandatory, and then we can depend on a new Autoconf -# release and drop the old call support. -AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_PREREQ([2.60])dnl -dnl Autoconf wants to disallow AM_ names. We explicitly allow -dnl the ones we care about. -m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl -AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl -AC_REQUIRE([AC_PROG_INSTALL])dnl -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi -AC_SUBST([CYGPATH_W]) - -# Define the identity of the package. -dnl Distinguish between old-style and new-style calls. -m4_ifval([$2], -[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl - AC_SUBST([PACKAGE], [$1])dnl - AC_SUBST([VERSION], [$2])], -[_AM_SET_OPTIONS([$1])dnl -dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. -m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, - [m4_fatal([AC_INIT should be called with package and version arguments])])dnl - AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl - AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl - -_AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) - AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl - -# Some tools Automake needs. -AC_REQUIRE([AM_SANITY_CHECK])dnl -AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) -AM_MISSING_PROG(AUTOCONF, autoconf) -AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) -AM_MISSING_PROG(AUTOHEADER, autoheader) -AM_MISSING_PROG(MAKEINFO, makeinfo) -AM_PROG_INSTALL_SH -AM_PROG_INSTALL_STRIP -AC_REQUIRE([AM_PROG_MKDIR_P])dnl -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([AC_PROG_MAKE_SET])dnl -AC_REQUIRE([AM_SET_LEADING_DOT])dnl -_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], - [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], - [_AM_PROG_TAR([v7])])]) -_AM_IF_OPTION([no-dependencies],, -[AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES(CC)], - [define([AC_PROG_CC], - defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES(CXX)], - [define([AC_PROG_CXX], - defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_OBJC], - [_AM_DEPENDENCIES(OBJC)], - [define([AC_PROG_OBJC], - defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl -]) -]) - - -# When config.status generates a header, we must update the stamp-h file. -# This file resides in the same directory as the config header -# that is generated. The stamp files are numbered to have different names. - -# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the -# loop where config.status creates the headers, so we can generate -# our stamp files there. -AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], -[# Compute $1's index in $config_headers. -_am_arg=$1 -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) - -# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_INSTALL_SH -# ------------------ -# Define $install_sh. -AC_DEFUN([AM_PROG_INSTALL_SH], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} -AC_SUBST(install_sh)]) - -# Copyright (C) 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 2 - -# Check whether the underlying file-system supports filenames -# with a leading dot. For instance MS-DOS doesn't. -AC_DEFUN([AM_SET_LEADING_DOT], -[rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null -AC_SUBST([am__leading_dot])]) - -# Check to see how 'make' treats includes. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 3 - -# AM_MAKE_INCLUDE() -# ----------------- -# Check to see how make treats includes. -AC_DEFUN([AM_MAKE_INCLUDE], -[am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo done -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -AC_MSG_CHECKING([for style of include used by $am_make]) -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# We grep out `Entering directory' and `Leaving directory' -# messages which can occur if `w' ends up in MAKEFLAGS. -# In particular we don't look at `^make:' because GNU make might -# be invoked under some other name (usually "gmake"), in which -# case it prints its new name instead of `make'. -if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then - am__include=include - am__quote= - _am_result=GNU -fi -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then - am__include=.include - am__quote="\"" - _am_result=BSD - fi -fi -AC_SUBST([am__include]) -AC_SUBST([am__quote]) -AC_MSG_RESULT([$_am_result]) -rm -f confinc confmf -]) - -# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- - -# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 5 - -# AM_MISSING_PROG(NAME, PROGRAM) -# ------------------------------ -AC_DEFUN([AM_MISSING_PROG], -[AC_REQUIRE([AM_MISSING_HAS_RUN]) -$1=${$1-"${am_missing_run}$2"} -AC_SUBST($1)]) - - -# AM_MISSING_HAS_RUN -# ------------------ -# Define MISSING if not defined so far and test if it supports --run. -# If it does, set am_missing_run to use it, otherwise, to nothing. -AC_DEFUN([AM_MISSING_HAS_RUN], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([missing])dnl -test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - AC_MSG_WARN([`missing' script is too old or missing]) -fi -]) - -# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_MKDIR_P -# --------------- -# Check for `mkdir -p'. -AC_DEFUN([AM_PROG_MKDIR_P], -[AC_PREREQ([2.60])dnl -AC_REQUIRE([AC_PROG_MKDIR_P])dnl -dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, -dnl while keeping a definition of mkdir_p for backward compatibility. -dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. -dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of -dnl Makefile.ins that do not define MKDIR_P, so we do our own -dnl adjustment using top_builddir (which is defined more often than -dnl MKDIR_P). -AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl -case $mkdir_p in - [[\\/$]]* | ?:[[\\/]]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac -]) - -# Helper functions for option handling. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 4 - -# _AM_MANGLE_OPTION(NAME) -# ----------------------- -AC_DEFUN([_AM_MANGLE_OPTION], -[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) - -# _AM_SET_OPTION(NAME) -# ------------------------------ -# Set option NAME. Presently that only means defining a flag for this option. -AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) - -# _AM_SET_OPTIONS(OPTIONS) -# ---------------------------------- -# OPTIONS is a space-separated list of Automake options. -AC_DEFUN([_AM_SET_OPTIONS], -[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) - -# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) -# ------------------------------------------- -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -AC_DEFUN([_AM_IF_OPTION], -[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) - -# Check to make sure that the build environment is sane. -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 4 - -# AM_SANITY_CHECK -# --------------- -AC_DEFUN([AM_SANITY_CHECK], -[AC_MSG_CHECKING([whether build environment is sane]) -# Just in case -sleep 1 -echo timestamp > conftest.file -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t $srcdir/configure conftest.file` - fi - rm -f conftest.file - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken -alias in your environment]) - fi - - test "$[2]" = conftest.file - ) -then - # Ok. - : -else - AC_MSG_ERROR([newly created file is older than distributed files! -Check your system clock]) -fi -AC_MSG_RESULT(yes)]) - -# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_INSTALL_STRIP -# --------------------- -# One issue with vendor `install' (even GNU) is that you can't -# specify the program used to strip binaries. This is especially -# annoying in cross-compiling environments, where the build's strip -# is unlikely to handle the host's binaries. -# Fortunately install-sh will honor a STRIPPROG variable, so we -# always use install-sh in `make install-strip', and initialize -# STRIPPROG with the value of the STRIP variable (set by the user). -AC_DEFUN([AM_PROG_INSTALL_STRIP], -[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be `maybe'. -if test "$cross_compiling" != no; then - AC_CHECK_TOOL([STRIP], [strip], :) -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" -AC_SUBST([INSTALL_STRIP_PROGRAM])]) - -# Copyright (C) 2006 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# _AM_SUBST_NOTMAKE(VARIABLE) -# --------------------------- -# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. -# This macro is traced by Automake. -AC_DEFUN([_AM_SUBST_NOTMAKE]) - -# Check how to create a tarball. -*- Autoconf -*- - -# Copyright (C) 2004, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 2 - -# _AM_PROG_TAR(FORMAT) -# -------------------- -# Check how to create a tarball in format FORMAT. -# FORMAT should be one of `v7', `ustar', or `pax'. -# -# Substitute a variable $(am__tar) that is a command -# writing to stdout a FORMAT-tarball containing the directory -# $tardir. -# tardir=directory && $(am__tar) > result.tar -# -# Substitute a variable $(am__untar) that extract such -# a tarball read from stdin. -# $(am__untar) < result.tar -AC_DEFUN([_AM_PROG_TAR], -[# Always define AMTAR for backward compatibility. -AM_MISSING_PROG([AMTAR], [tar]) -m4_if([$1], [v7], - [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], - [m4_case([$1], [ustar],, [pax],, - [m4_fatal([Unknown tar format])]) -AC_MSG_CHECKING([how to create a $1 tar archive]) -# Loop over all known methods to create a tar archive until one works. -_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' -_am_tools=${am_cv_prog_tar_$1-$_am_tools} -# Do not fold the above two line into one, because Tru64 sh and -# Solaris sh will not grok spaces in the rhs of `-'. -for _am_tool in $_am_tools -do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; - do - AM_RUN_LOG([$_am_tar --version]) && break - done - am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' - ;; - pax) - am__tar='pax -L -x $1 -w "$$tardir"' - am__tar_='pax -L -x $1 -w "$tardir"' - am__untar='pax -r' - ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H $1 -L' - am__tar_='find "$tardir" -print | cpio -o -H $1 -L' - am__untar='cpio -i -H $1 -d' - ;; - none) - am__tar=false - am__tar_=false - am__untar=false - ;; - esac - - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_$1}" && break - - # tar/untar a dummy directory, and stop if the command works - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) - rm -rf conftest.dir - if test -s conftest.tar; then - AM_RUN_LOG([$am__untar /dev/null 2>&1 && break - fi -done -rm -rf conftest.dir - -AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) -AC_MSG_RESULT([$am_cv_prog_tar_$1])]) -AC_SUBST([am__tar]) -AC_SUBST([am__untar]) -]) # _AM_PROG_TAR - diff --git a/misc-scripts/alternative_splicing/AltSplicingToolkit/configure.ac b/misc-scripts/alternative_splicing/AltSplicingToolkit/configure.ac deleted file mode 100644 index eb4b1f188..000000000 --- a/misc-scripts/alternative_splicing/AltSplicingToolkit/configure.ac +++ /dev/null @@ -1,171 +0,0 @@ -# -*- Autoconf -*- -# Process this file with autoconf to produce a configure script. - -# Copyright (c) 1999-2010 The European Bioinformatics Institute and -# Genome Research Limited, and others. All rights reserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# Ensembl License for more details. - -# You should have received a copy of the Ensembl License -# along with this program. If not, see -# . - -dnl -------------------------------- -dnl run aclocal first -dnl run autoconf -dnl automake --add-missing -dnl -------------------------------- - -dnl -------------------------------- -dnl Initialization macros. -dnl Every configure script must call -dnl AC_INIT before doing something else -dnl -------------------------------- - -dnl Require Autoconf 2.60 -AC_PREREQ([2.60]) -AC_INIT([Ensembl AltSplicingToolkit], [0.5.2], [koscieln@ebi.ac.uk]) - -dnl ----------------------------------------------- -dnl Package name and version number (user defined) -dnl for automake -dnl ----------------------------------------------- - -AM_INIT_AUTOMAKE -#([1.0 -Wall -Werror foreign]) - -dnl ----------------------------------------------- -dnl Finding configure Input -dnl ----------------------------------------------- - -AC_CONFIG_SRCDIR([src/Main.cpp]) -AC_CONFIG_HEADER([include/config.hpp]) - -AC_SUBST(VERSION) - -ISODATE=`date +%Y-%m-%d` -AC_SUBST(ISODATE) - -dnl ----------------------------------------------- -dnl Checks for programs. -dnl ----------------------------------------------- -# We are using C++ -#AC_LANG(C++) -# autoconf2.13: AC_LANG_CPLUSPLUS -#AC_LANG_CPLUSPLUS -#AC_REQUIRE_CPP -AC_PROG_CXX -#CPPFLAGS([-O2 -Wno-deprecated]) - -AC_PROG_INSTALL -AC_PROG_RANLIB -AC_PROG_CC_C_O - -# Turn off shared libraries during beta-testing, since they -# make the build process take too long -#LT_INIT -#AC_PROG_LIBTOOL -#AC_DISABLE_SHARED -#AM_PROG_LIBTOOL -AM_SANITY_CHECK - -## ----- ## -## Make. ## -## ----- ## -#AC_PROG_MAKE_CASE_SENSITIVE - -dnl These are standard among *NIX systems, but not when cross-compiling -#AC_CHECK_TOOL(RANLIB, ranlib, ':') -#AC_CHECK_TOOL(LD, ld, ld) -#AC_CHECK_TOOL(AR, ar, ar) - - -dnl ----------------------------------------------- -dnl Checks for libraries. -dnl ----------------------------------------------- - -# Paths to examplelib stuff: -AC_SUBST([LDFLAGS],["${LDFLAGS} -L."]) - -## -## check for log4cpp -## -AC_ARG_WITH([log4cpp], - AC_HELP_STRING([--with-log4cpp=LOG4CPP_PATH], - [Supply the location of Log for C++ installation]), - [ql_log4cpp_path=$withval], - [ql_log4cpp_path=""]) -if test [ -n "$ql_log4cpp_path/include/log4cpp" ] ; then - AC_SUBST([CPPFLAGS],["${CPPFLAGS} -I${ql_log4cpp_path}/include"]) -fi -if test [ -n "$ql_log4cpp_path/lib" ] ; then - AC_SUBST([LDFLAGS],["${LDFLAGS} -L${ql_log4cpp_path}/lib -llog4cpp"]) -fi - -## check for boost, this segment as well as segment below are -## from QuantLib's configure.ac -## -## -## Help the compiler find external software -AC_ARG_WITH([boost-include], - AC_HELP_STRING([--with-boost-include=BOOST_INCLUDE_PATH], - [Supply the location of Boost header files]), - [ql_boost_include_path=$withval], - [ql_boost_include_path=""]) -if test [ -n "$ql_boost_include_path/boost" ] ; then - AC_SUBST([CPPFLAGS],["${CPPFLAGS} -I${ql_boost_include_path}"]) - #AC_SUBST([CXXFLAGS],["${CXXFLAGS} -I${ql_boost_include_path}"]) -fi -AC_ARG_WITH([boost-lib], - AC_HELP_STRING([--with-boost-lib=BOOST_LIB_PATH], - [Supply the location of Boost libraries]), - [ql_boost_lib_path=$withval], - [ql_boost_lib_path=""]) -if test [ -n "$ql_boost_lib_path" ] ; then - AC_SUBST([LDFLAGS],["${LDFLAGS} -L${ql_boost_lib_path} -lboost_program_options-gcc41-mt-1_37 -lboost_regex-gcc41-mt-1_37"]) -fi - - - -# libboost_regex-gcc41-mt-1_37.a - -#PKG_CHECK_MODULES(DEPS, libboost_regex-gcc41-mt-1_37 >= 1.37.0 ) -#AC_SUBST(DEPS_CFLAGS) -#AC_SUBST(DEPS_LIBS) - -#AC_CHECK_LIB(boost_regex-gcc, main,, [ - # AC_CHECK_LIB(boost_regex, main,, - # AC_MSG_ERROR([** cannot find required boost_regex library. Get it from www.boost.org **])) - # ]) - -#AC_CHECK_HEADERS(boost/regex.hpp, , [ -# echo "######################" -# echo " Boost headers needed " -# echo "######################" -# exit 1 -# ]) - -#AC_CHECK_LIB(boost_program_options-gcc, main,, [ -# AC_CHECK_LIB(boost_program_options, main,, -# AC_MSG_ERROR([** cannot find required boost_program_options library. Get it from www.boost.org **])) -# ]) - -#AC_CHECK_HEADERS(boost/program_options.hpp, , [ -# echo "######################" -# echo " Boost headers needed " -# echo "######################" -# exit 1 -# ]) - - - - -#AC_SUBST(CXXFLAGS) -#AC_SUBST(LDFLAGS) -AC_SUBST([ARFLAGS],["${ARFLAGS} -rfs"]) -AC_OUTPUT( [Makefile src/Makefile] ) -#dnl src/as/Makefile src/gff/Makefile src/util/Makefile] ) - diff --git a/misc-scripts/alternative_splicing/AltSplicingToolkit/depcomp b/misc-scripts/alternative_splicing/AltSplicingToolkit/depcomp deleted file mode 100755 index e5f9736c7..000000000 --- a/misc-scripts/alternative_splicing/AltSplicingToolkit/depcomp +++ /dev/null @@ -1,589 +0,0 @@ -#! /bin/sh -# depcomp - compile a program generating dependencies as side-effects - -scriptversion=2007-03-29.01 - -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007 Free Software -# Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301, USA. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Originally written by Alexandre Oliva . - -case $1 in - '') - echo "$0: No command. Try \`$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF -Usage: depcomp [--help] [--version] PROGRAM [ARGS] - -Run PROGRAMS ARGS to compile a file, generating dependencies -as side-effects. - -Environment variables: - depmode Dependency tracking mode. - source Source file read by `PROGRAMS ARGS'. - object Object file output by `PROGRAMS ARGS'. - DEPDIR directory where to store dependencies. - depfile Dependency file to output. - tmpdepfile Temporary file to use when outputing dependencies. - libtool Whether libtool is used (yes/no). - -Report bugs to . -EOF - exit $? - ;; - -v | --v*) - echo "depcomp $scriptversion" - exit $? - ;; -esac - -if test -z "$depmode" || test -z "$source" || test -z "$object"; then - echo "depcomp: Variables source, object and depmode must be set" 1>&2 - exit 1 -fi - -# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. -depfile=${depfile-`echo "$object" | - sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} -tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} - -rm -f "$tmpdepfile" - -# Some modes work just like other modes, but use different flags. We -# parameterize here, but still list the modes in the big case below, -# to make depend.m4 easier to write. Note that we *cannot* use a case -# here, because this file can only contain one case statement. -if test "$depmode" = hp; then - # HP compiler uses -M and no extra arg. - gccflag=-M - depmode=gcc -fi - -if test "$depmode" = dashXmstdout; then - # This is just like dashmstdout with a different argument. - dashmflag=-xM - depmode=dashmstdout -fi - -case "$depmode" in -gcc3) -## gcc 3 implements dependency tracking that does exactly what -## we want. Yay! Note: for some reason libtool 1.4 doesn't like -## it if -MD -MP comes after the -MF stuff. Hmm. -## Unfortunately, FreeBSD c89 acceptance of flags depends upon -## the command line argument order; so add the flags where they -## appear in depend2.am. Note that the slowdown incurred here -## affects only configure: in makefiles, %FASTDEP% shortcuts this. - for arg - do - case $arg in - -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; - *) set fnord "$@" "$arg" ;; - esac - shift # fnord - shift # $arg - done - "$@" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - mv "$tmpdepfile" "$depfile" - ;; - -gcc) -## There are various ways to get dependency output from gcc. Here's -## why we pick this rather obscure method: -## - Don't want to use -MD because we'd like the dependencies to end -## up in a subdir. Having to rename by hand is ugly. -## (We might end up doing this anyway to support other compilers.) -## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like -## -MM, not -M (despite what the docs say). -## - Using -M directly means running the compiler twice (even worse -## than renaming). - if test -z "$gccflag"; then - gccflag=-MD, - fi - "$@" -Wp,"$gccflag$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz -## The second -e expression handles DOS-style file names with drive letters. - sed -e 's/^[^:]*: / /' \ - -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" -## This next piece of magic avoids the `deleted header file' problem. -## The problem is that when a header file which appears in a .P file -## is deleted, the dependency causes make to die (because there is -## typically no way to rebuild the header). We avoid this by adding -## dummy dependencies for each header file. Too bad gcc doesn't do -## this for us directly. - tr ' ' ' -' < "$tmpdepfile" | -## Some versions of gcc put a space before the `:'. On the theory -## that the space means something, we add a space to the output as -## well. -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -sgi) - if test "$libtool" = yes; then - "$@" "-Wp,-MDupdate,$tmpdepfile" - else - "$@" -MDupdate "$tmpdepfile" - fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - - if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files - echo "$object : \\" > "$depfile" - - # Clip off the initial element (the dependent). Don't try to be - # clever and replace this with sed code, as IRIX sed won't handle - # lines with more than a fixed number of characters (4096 in - # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; - # the IRIX cc adds comments like `#:fec' to the end of the - # dependency line. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ - tr ' -' ' ' >> $depfile - echo >> $depfile - - # The second pass generates a dummy entry for each header file. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> $depfile - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -aix) - # The C for AIX Compiler uses -M and outputs the dependencies - # in a .u file. In older versions, this file always lives in the - # current directory. Also, the AIX compiler puts `$object:' at the - # start of each line; $object doesn't have directory information. - # Version 6 uses the directory in both cases. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.u - tmpdepfile2=$base.u - tmpdepfile3=$dir.libs/$base.u - "$@" -Wc,-M - else - tmpdepfile1=$dir$base.u - tmpdepfile2=$dir$base.u - tmpdepfile3=$dir$base.u - "$@" -M - fi - stat=$? - - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - # Each line is of the form `foo.o: dependent.h'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a tab and a space in the []. - sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -icc) - # Intel's C compiler understands `-MD -MF file'. However on - # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c - # ICC 7.0 will fill foo.d with something like - # foo.o: sub/foo.c - # foo.o: sub/foo.h - # which is wrong. We want: - # sub/foo.o: sub/foo.c - # sub/foo.o: sub/foo.h - # sub/foo.c: - # sub/foo.h: - # ICC 7.1 will output - # foo.o: sub/foo.c sub/foo.h - # and will wrap long lines using \ : - # foo.o: sub/foo.c ... \ - # sub/foo.h ... \ - # ... - - "$@" -MD -MF "$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - # Each line is of the form `foo.o: dependent.h', - # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" - # Some versions of the HPUX 10.20 sed can't process this invocation - # correctly. Breaking it into two sed invocations is a workaround. - sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | - sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp2) - # The "hp" stanza above does not work with aCC (C++) and HP's ia64 - # compilers, which have integrated preprocessors. The correct option - # to use with these is +Maked; it writes dependencies to a file named - # 'foo.d', which lands next to the object file, wherever that - # happens to be. - # Much of this is similar to the tru64 case; see comments there. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir.libs/$base.d - "$@" -Wc,+Maked - else - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir$base.d - "$@" +Maked - fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" - # Add `dependent.h:' lines. - sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" "$tmpdepfile2" - ;; - -tru64) - # The Tru64 compiler uses -MD to generate dependencies as a side - # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. - # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put - # dependencies in `foo.d' instead, so we check for that too. - # Subdirectories are respected. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - - if test "$libtool" = yes; then - # With Tru64 cc, shared objects can also be used to make a - # static library. This mechanism is used in libtool 1.4 series to - # handle both shared and static libraries in a single compilation. - # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. - # - # With libtool 1.5 this exception was removed, and libtool now - # generates 2 separate objects for the 2 libraries. These two - # compilations output dependencies in $dir.libs/$base.o.d and - # in $dir$base.o.d. We have to check for both files, because - # one of the two compilations can be disabled. We should prefer - # $dir$base.o.d over $dir.libs/$base.o.d because the latter is - # automatically cleaned when .libs/ is deleted, while ignoring - # the former would cause a distcleancheck panic. - tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 - tmpdepfile2=$dir$base.o.d # libtool 1.5 - tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 - tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 - "$@" -Wc,-MD - else - tmpdepfile1=$dir$base.o.d - tmpdepfile2=$dir$base.d - tmpdepfile3=$dir$base.d - tmpdepfile4=$dir$base.d - "$@" -MD - fi - - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a tab and a space in the []. - sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -#nosideeffect) - # This comment above is used by automake to tell side-effect - # dependency tracking mechanisms from slower ones. - -dashmstdout) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout, regardless of -o. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test $1 != '--mode=compile'; do - shift - done - shift - fi - - # Remove `-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - test -z "$dashmflag" && dashmflag=-M - # Require at least two characters before searching for `:' - # in the target name. This is to cope with DOS-style filenames: - # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. - "$@" $dashmflag | - sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - tr ' ' ' -' < "$tmpdepfile" | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -dashXmstdout) - # This case only exists to satisfy depend.m4. It is never actually - # run, as this mode is specially recognized in the preamble. - exit 1 - ;; - -makedepend) - "$@" || exit $? - # Remove any Libtool call - if test "$libtool" = yes; then - while test $1 != '--mode=compile'; do - shift - done - shift - fi - # X makedepend - shift - cleared=no - for arg in "$@"; do - case $cleared in - no) - set ""; shift - cleared=yes ;; - esac - case "$arg" in - -D*|-I*) - set fnord "$@" "$arg"; shift ;; - # Strip any option that makedepend may not understand. Remove - # the object too, otherwise makedepend will parse it as a source file. - -*|$object) - ;; - *) - set fnord "$@" "$arg"; shift ;; - esac - done - obj_suffix="`echo $object | sed 's/^.*\././'`" - touch "$tmpdepfile" - ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - sed '1,2d' "$tmpdepfile" | tr ' ' ' -' | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" "$tmpdepfile".bak - ;; - -cpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test $1 != '--mode=compile'; do - shift - done - shift - fi - - # Remove `-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - "$@" -E | - sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ - -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | - sed '$ s: \\$::' > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - cat < "$tmpdepfile" >> "$depfile" - sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvisualcpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout, regardless of -o, - # because we must use -o when running libtool. - "$@" || exit $? - IFS=" " - for arg - do - case "$arg" in - "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") - set fnord "$@" - shift - shift - ;; - *) - set fnord "$@" "$arg" - shift - shift - ;; - esac - done - "$@" -E | - sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" - echo " " >> "$depfile" - . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -none) - exec "$@" - ;; - -*) - echo "Unknown depmode $depmode" 1>&2 - exit 1 - ;; -esac - -exit 0 - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" -# End: diff --git a/misc-scripts/alternative_splicing/AltSplicingToolkit/release_notes.txt b/misc-scripts/alternative_splicing/AltSplicingToolkit/release_notes.txt deleted file mode 100755 index 7243fabab..000000000 --- a/misc-scripts/alternative_splicing/AltSplicingToolkit/release_notes.txt +++ /dev/null @@ -1,113 +0,0 @@ -altSpliceFinder Release Notes - User visible changes. - -Release 0.5.2 (03 February 2010) --------------------------------- - -* First distribution as part of Ensembl - -Release 0.5.1 (15 January 2010) -------------------------------- - -* Corrected options to compute statistics (--statistiscs|-s) - Released by Gautier Koscielny, based on stable version 0.5. - -Release 0.5 (08 December 2009) ------------------------------- - -* Major changes in altSpliceFinder 0.5 [stable] - Released by Gautier Koscielny, based on stable version 0.4. - -** relax mode: option ``-relax|-r'' to compute cassette exons and mutually - exclusive events with relaxed constraints on flanking exons. - In this mode, flanking exons are required to overlap but the constraints - on the same 3p or 5p end is removed. - -** bug on A5SS computation fixed. - -** remove spurious STDERR logs on intron retention event - computations. - -Release 0.4 (13 May 2009) -------------------------- - -* Major changes in altSpliceFinder 0.4 (2009-05-13) [stable] - Released by Gautier Koscielny, based on stable version 0.3. - -** GFF output: each feature in featuresA or featuresB is followed by a list - of corresponding transcripts in brackets. - -** constitutive mode: option ``-constitutives|-c'' to compute constitutive exons - events only. - -** bug on constitutive exon computation fixed. - -Release 0.3 (27 January 2009) ------------------------------ - -* Major changes in altSpliceFinder 0.3 (2009-01-27) [stable] - Released by Gautier Koscielny, based on stable version 0.2. - -** Unique ID for each event based on gene ID and event type: - --number - -** Splice sites coordinates added for each feature of each type of events. - -** Extension of Intron Retention computations to catch more cases (not only - exact exon 5p/3p but also overlapping cases). - -** Log4C++ Verbose mode added. - -** GNU Configure program with Log4CPP libraries dependencies. - -Release 0.2 (13 January 2009) ------------------------------ - -* Major changes in altSpliceFinder 0.2 (2009-01-13) [stable] - Released by Gautier Koscielny, based on stable version 0.1. - -** Alternative First Exon (AFE) event computation. - -** Alternative Last Exon (ALE) event computation. - -** Constitutive Exon (CNE) event computation module added. - -** Source code directory structure reflects C++ namespace structure. - -** Replace the traditional Makefile with a GNU Configure program - including Boost libraries dependencies. - -** GPL license added. - -release 0.1 (December 2008) ---------------------------- - -* First release by Gautier Koscielny - -** Cassette Exon (CE) event computation. - -** Intron Isoform (II) event computation. - -** Exon Isoform (EI) event computation. - -** Intron Retention (IR) event computation. - -** Mutually Exclusive (MXE) event computation. - -** Alternative Initiation (AI) event computation. - -** Alternative Termination (AT) event computation. - -** Simple makefile. - ------ - -Copyright (c) 1999-2010 The European Bioinformatics Institute and -Genome Research Limited, and others. All rights reserved. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -Ensembl License for more details. - -You should have received a copy of the Ensembl License -along with this program. If not, see . diff --git a/misc-scripts/alternative_splicing/AltSplicingToolkit/src/Constants.h b/misc-scripts/alternative_splicing/AltSplicingToolkit/src/Constants.h deleted file mode 100644 index c0381552b..000000000 --- a/misc-scripts/alternative_splicing/AltSplicingToolkit/src/Constants.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * AltSplicingToolkit - * Author: Gautier Koscielny - * - * Copyright (c) 1999-2010 The European Bioinformatics Institute and - * Genome Research Limited, and others. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer - * in the documentation and/or other materials provided with the - * distribution. - * - * 3. The name "Ensembl" must not be used to endorse or promote products - * derived from this software without prior written permission. For - * written permission, please contact helpdesk@ensembl.org - * - * 4. Products derived from this software may not be called "Ensembl" - * nor may "Ensembl" appear in their names without prior written - * permission of the Ensembl developers. - * - * 5. Redistributions in any form whatsoever must retain the following - * acknowledgement: - * - * "This product includes software developed by Ensembl - * (http://www.ensembl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE ENSEMBL GROUP ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE ENSEMBL GROUP OR ITS - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -const int GFF_TYPE=2; -const int GFF_START=3; -const int GFF_END=4; -const int GFF_COMMENTS=8; - -const int GFF_GENE_ID=0; -const int GFF_TRANSCRIPT_ID=1; -const int GFF_EXON_ID=2; - - diff --git a/misc-scripts/alternative_splicing/AltSplicingToolkit/src/Main.cpp b/misc-scripts/alternative_splicing/AltSplicingToolkit/src/Main.cpp deleted file mode 100644 index 4ca750676..000000000 --- a/misc-scripts/alternative_splicing/AltSplicingToolkit/src/Main.cpp +++ /dev/null @@ -1,258 +0,0 @@ -/* - * altSpliceFinder main program. - * Author: Gautier Koscielny - * - * Copyright (c) 1999-2010 The European Bioinformatics Institute and - * Genome Research Limited, and others. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer - * in the documentation and/or other materials provided with the - * distribution. - * - * 3. The name "Ensembl" must not be used to endorse or promote products - * derived from this software without prior written permission. For - * written permission, please contact helpdesk@ensembl.org - * - * 4. Products derived from this software may not be called "Ensembl" - * nor may "Ensembl" appear in their names without prior written - * permission of the Ensembl developers. - * - * 5. Redistributions in any form whatsoever must retain the following - * acknowledgement: - * - * "This product includes software developed by Ensembl - * (http://www.ensembl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE ENSEMBL GROUP ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE ENSEMBL GROUP OR ITS - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include -#include -#include -#include -#include -#include -#include // useful for std::pair -#include -#include -#include -#include - -#include "log4cpp/Appender.hh" -#include "log4cpp/OstreamAppender.hh" -#include "log4cpp/Layout.hh" -#include "log4cpp/BasicLayout.hh" -#include -#include "log4cpp/Priority.hh" -#include "log4cpp/Category.hh" - -//#include -//#include -//#include - - -// for std::for_each - -#include "Constants.h" -#include "gff/GffParser.h" -#include "gff/GffSimpleHandler.h" -#include "gff/BioMartGffHandler.h" -#include "gff/SplicingEventGffGenerator.h" - -using namespace std; -using namespace boost; -using namespace as; -using namespace gff; -namespace po = boost::program_options; - -void outputUsage(const po::options_description& desc) -{ - std::cout << "altSpliceFinder 0.5.2\n" << endl - //<< as::version::Version::getApplicationVersion() - << "Copyright (c) 2008, 2009, 2010 Gautier Koscielny " << endl - << "The European Bioinformatics Institute and" << endl - << "Genome Research Limited, and others." << endl - << "All rights reserved.\n\n"; - - // notice - - // usage - std::cout << "Usage:" << endl << endl; - std::cout << " altSpliceFinder [-i gfffile] [-o resultfile]" << endl << endl; - - std::cout << desc << endl; - std::cout << "Notes:"<< endl << " Reads from the standard input stream if no input file is given." << endl - << " Writes to the standard output stream if no output file is given." << endl; -} - -int main(int argc, char **argv, char **ppenv) -{ - /** - * Read program options - */ - string inputFile; - string outputFile; - - po::options_description desc("Allowed options"); - desc.add_options() - ("version,V", "print version string") - ("help,h", "Produce help message") - ("verbose,v", "Log computational details on stderr") - ("inputFile,i", po::value(&inputFile), "Provide a path to a Ensembl BioMart gff file that contains transcript structure") - ("outputFile,o", po::value(&outputFile), "Provide a path to a gff file that will contains the splicing events") - ("limit,l", po::value(), "set a limit on the number of genes (with splicing events) to parse") - ("constitutives,c", "Compute constitutive exon events only") - ("relax,r", "Compute splicing events with relaxed constraints on flanking features") - ("statistics,s", "Compute and show statistics on splicing events"); - - //("verbose", value()->zero_tokens(), "verbosity level"); - //("listRejectedGenes,lrg", value()->zero_tokens(), "store genes with variants but no events in a file"); - - - po::variables_map vm; - po::store(po::parse_command_line(argc, argv, desc), vm); - po::notify(vm); - - // argc < 2 - if (vm.count("help") || vm.count("version") || (argc > 1 && (!strcmp(argv[1], "-?") || !strcmp(argv[1], "--?") || !strcmp(argv[1], "/?") || !strcmp(argv[1], "/h") || !strcmp(argv[1], "-h") || !strcmp(argv[1], "--h") || !strcmp(argv[1], "--help") || !strcmp(argv[1], "/help") || !strcmp(argv[1], "-help") || !strcmp(argv[1], "help")) )) - { - outputUsage(desc); - return 1; - } - - /* - * Log for C++ Appender declaration - */ - - log4cpp::Appender* appender; // = Logger.getAppender(); - - appender = new log4cpp::OstreamAppender("default", &std::cerr); - log4cpp::PatternLayout* patternLayout = new log4cpp::PatternLayout(); - patternLayout->setConversionPattern("%d{%H:%M:%S:%l} %c: %m\n"); //"%R %p %c %x: %m\n"); - appender->setLayout(patternLayout); - //appender->setLayout(new log4cpp::BasicLayout()); - log4cpp::Category& root = log4cpp::Category::getRoot(); - root.addAppender(appender); - - if (vm.count("verbose")) { - - root.setPriority(log4cpp::Priority::INFO); - root.info("Switch to verbose mode."); - - } else { - - root.setPriority(log4cpp::Priority::ERROR); - - } - - ifstream inStream; - ofstream outStream; - - bool inFile = false; - bool outFile = false; - - int limit = (vm.count("limit")) ? vm["limit"].as() : 0; - - if (vm.count("inputFile")) - { - inFile = true; - root.infoStream() << "reading filename " << inputFile << log4cpp::eol; - - // ok, just try to open it and then close it - inStream.open(inputFile.c_str(), ifstream::in); - if(inStream.fail()) - { - inStream.clear(ios::failbit); - inStream.close(); - root.errorStream() << "Error:\tinput file """ << inputFile.c_str() << """ does not exists. Exiting program." << log4cpp::eol; - exit(1); - } - - } else { - - // check cin - - if(std::cin.fail()) { - root.errorStream() << "Error:\tno data on input stream. Exiting program." << log4cpp::eol; - exit(1); - } - - } - - if (vm.count("outputFile")) - { - outFile = true; - outStream.open(outputFile.c_str(), ios::out); //, ios_base::out ); - if(outStream.fail()) { - outStream.clear(ios::failbit); - outStream.close(); - cerr << "Error:\t enable to create output file """ << outputFile.c_str() << """." << endl; - exit(1); - } - } - - SplicingEventGffGenerator gffGenerator((outFile) ? outStream : std::cout, "Ensembl", vm.count("constitutives"), vm.count("relax")); - - BioMartGffHandler martHandler(limit); - martHandler.registerNewGeneEventListener(&gffGenerator); - - GffParser parser((inFile) ? inStream : std::cin, &martHandler); - - parser.parse(); - - if (inFile) - inStream.close(); - - if (outFile) - outStream.close(); - - root.info("Parsing done."); - - if (vm.count("statistics")) { - - cerr << "Genes parsed:\t\t\t" << gffGenerator.getGeneCount() << endl; - cerr << "Genes with multiple transcripts:\t" << gffGenerator.getGenesWithSeveralTranscriptsCount() << endl; - cerr << "Genes with events:\t\t\t" << gffGenerator.getGenesWithEventsCount() << endl; - cerr << "Splicing Events:\t\t\t" << gffGenerator.getEventCount() << endl; - - if (gffGenerator.getEventCount() > 0) { - - cerr << "Alternative Initiation Events:\t" << gffGenerator.getCountAI() << " (" << ((int) ((100*gffGenerator.getCountAI())/gffGenerator.getEventCount())) << "%)" << endl ; - cerr << "Alternative Termination Events:\t" << gffGenerator.getCountAT() << " (" << ((int) ((100*gffGenerator.getCountAT())/gffGenerator.getEventCount())) << "%)" << endl ; - - cerr << "Alternative First Exon Events:\t" << gffGenerator.getCountAFE() << " (" << ((int) ((100*gffGenerator.getCountAFE())/gffGenerator.getEventCount())) << "%)" << endl ; - cerr << "Alternative Last Exon Events:\t" << gffGenerator.getCountALE() << " (" << ((int) ((100*gffGenerator.getCountALE())/gffGenerator.getEventCount())) << "%)" << endl ; - - cerr << "Exon Isoform Events:\t" << gffGenerator.getCountEI() << " (" << ((int) ((100*gffGenerator.getCountEI())/gffGenerator.getEventCount())) << "%)" << endl ; - cerr << "Intron Isoform Events:\t" << gffGenerator.getCountII() << " (" << ((int) ((100*gffGenerator.getCountII())/gffGenerator.getEventCount())) << "%)" << endl ; - cerr << "Intron Retention Events:\t" << gffGenerator.getCountIR() << " (" << ((int) ((100*gffGenerator.getCountIR())/gffGenerator.getEventCount())) << "%)" << endl ; - cerr << "Cassette Exon Events:\t" << gffGenerator.getCountCE() << " (" << ((int) ((100*gffGenerator.getCountCE())/gffGenerator.getEventCount())) << "%)" << endl ; - cerr << "Mutually Exclusive Events:\t" << gffGenerator.getCountMXE() << " (" << ((int) ((100*gffGenerator.getCountMXE())/gffGenerator.getEventCount())) << "%)" << endl ; - } - } - - log4cpp::Category::shutdown(); - - return (EXIT_SUCCESS); - -} - diff --git a/misc-scripts/alternative_splicing/AltSplicingToolkit/src/Makefile.am b/misc-scripts/alternative_splicing/AltSplicingToolkit/src/Makefile.am deleted file mode 100644 index f5176be84..000000000 --- a/misc-scripts/alternative_splicing/AltSplicingToolkit/src/Makefile.am +++ /dev/null @@ -1,64 +0,0 @@ - -bin_PROGRAMS = altSpliceFinder - -bin_CPPFLAGS = -L@top_srcdir@/src -LDADD = -lAltSplicing -lm - -altSpliceFinder_SOURCES = Main.cpp Constants.h -altSpliceFinder_CPPFLAGS = -L@top_srcdir@/src - -# general use to compile individuals objects -AM_CPPFLAGS = -I@top_srcdir@/src -L@top_srcdir@/src - -# ------------------------------- -# AltSplicingToolkit library configuration -# ------------------------------- - -lib_LIBRARIES = libAltSplicing.a - -libAltSplicing_a_SOURCES = \ - as/GeneFeature.cpp\ - as/SplicingEventMatrix.cpp\ - as/Transcript.cpp\ - as/Feature.cpp\ - as/Coordinates.cpp\ - as/SplicingEventContainer.cpp\ - as/TranscriptFeature.cpp\ - as/Gene.cpp\ - as/SplicingEvent.cpp\ - as/RegionChunk.cpp\ - as/ExonChunk.cpp\ - gff/BioMartGffHandler.cpp\ - gff/GffParser.cpp\ - gff/SplicingEventGffGenerator.cpp\ - gff/GffEventModel.cpp\ - gff/GffSimpleHandler.cpp\ - util/StringUtil.cpp\ - util/Logger.cpp - -libAltSplicing_a_CPPFLAGS = $(AM_CPPFLAGS) - -# ------------------------------- -# AltSplicingToolkit package distribution -# ------------------------------- - -pkginclude_HEADERS = \ - as/Coordinates.h\ - as/GeneFeature.h\ - as/SplicingEventMatrix.h\ - as/Transcript.h\ - as/Feature.h\ - as/SplicingEventContainer.h\ - as/TranscriptFeature.h\ - as/Gene.h\ - as/SplicingEvent.h\ - as/RegionChunk.h\ - as/ExonChunk.h\ - gff/BioMartGffHandler.h\ - gff/GffParser.h\ - gff/SplicingEventGffGenerator.h\ - gff/GffEventModel.h\ - gff/GffSimpleHandler.h\ - util/StringUtil.h - -EXTRA_DIST = $(pkginclude_HEADERS) diff --git a/misc-scripts/alternative_splicing/AltSplicingToolkit/src/Makefile.in b/misc-scripts/alternative_splicing/AltSplicingToolkit/src/Makefile.in deleted file mode 100644 index 79b86238f..000000000 --- a/misc-scripts/alternative_splicing/AltSplicingToolkit/src/Makefile.in +++ /dev/null @@ -1,851 +0,0 @@ -# Makefile.in generated by automake 1.10.2 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - - - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -bin_PROGRAMS = altSpliceFinder$(EXEEXT) -subdir = src -DIST_COMMON = $(pkginclude_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/include/config.hpp -CONFIG_CLEAN_FILES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; -am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \ - "$(DESTDIR)$(pkgincludedir)" -libLIBRARIES_INSTALL = $(INSTALL_DATA) -LIBRARIES = $(lib_LIBRARIES) -AR = ar -libAltSplicing_a_AR = $(AR) $(ARFLAGS) -libAltSplicing_a_LIBADD = -am_libAltSplicing_a_OBJECTS = libAltSplicing_a-GeneFeature.$(OBJEXT) \ - libAltSplicing_a-SplicingEventMatrix.$(OBJEXT) \ - libAltSplicing_a-Transcript.$(OBJEXT) \ - libAltSplicing_a-Feature.$(OBJEXT) \ - libAltSplicing_a-Coordinates.$(OBJEXT) \ - libAltSplicing_a-SplicingEventContainer.$(OBJEXT) \ - libAltSplicing_a-TranscriptFeature.$(OBJEXT) \ - libAltSplicing_a-Gene.$(OBJEXT) \ - libAltSplicing_a-SplicingEvent.$(OBJEXT) \ - libAltSplicing_a-RegionChunk.$(OBJEXT) \ - libAltSplicing_a-ExonChunk.$(OBJEXT) \ - libAltSplicing_a-BioMartGffHandler.$(OBJEXT) \ - libAltSplicing_a-GffParser.$(OBJEXT) \ - libAltSplicing_a-SplicingEventGffGenerator.$(OBJEXT) \ - libAltSplicing_a-GffEventModel.$(OBJEXT) \ - libAltSplicing_a-GffSimpleHandler.$(OBJEXT) \ - libAltSplicing_a-StringUtil.$(OBJEXT) \ - libAltSplicing_a-Logger.$(OBJEXT) -libAltSplicing_a_OBJECTS = $(am_libAltSplicing_a_OBJECTS) -binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) -PROGRAMS = $(bin_PROGRAMS) -am_altSpliceFinder_OBJECTS = altSpliceFinder-Main.$(OBJEXT) -altSpliceFinder_OBJECTS = $(am_altSpliceFinder_OBJECTS) -altSpliceFinder_LDADD = $(LDADD) -altSpliceFinder_DEPENDENCIES = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -CXXLD = $(CXX) -CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ - -o $@ -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -SOURCES = $(libAltSplicing_a_SOURCES) $(altSpliceFinder_SOURCES) -DIST_SOURCES = $(libAltSplicing_a_SOURCES) $(altSpliceFinder_SOURCES) -pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(pkginclude_HEADERS) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -ARFLAGS = @ARFLAGS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EXEEXT = @EXEEXT@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -ISODATE = @ISODATE@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -OBJEXT = @OBJEXT@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build_alias = @build_alias@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host_alias = @host_alias@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -bin_CPPFLAGS = -L@top_srcdir@/src -LDADD = -lAltSplicing -lm -altSpliceFinder_SOURCES = Main.cpp Constants.h -altSpliceFinder_CPPFLAGS = -L@top_srcdir@/src - -# general use to compile individuals objects -AM_CPPFLAGS = -I@top_srcdir@/src -L@top_srcdir@/src - -# ------------------------------- -# AltSplicingToolkit library configuration -# ------------------------------- -lib_LIBRARIES = libAltSplicing.a -libAltSplicing_a_SOURCES = \ - as/GeneFeature.cpp\ - as/SplicingEventMatrix.cpp\ - as/Transcript.cpp\ - as/Feature.cpp\ - as/Coordinates.cpp\ - as/SplicingEventContainer.cpp\ - as/TranscriptFeature.cpp\ - as/Gene.cpp\ - as/SplicingEvent.cpp\ - as/RegionChunk.cpp\ - as/ExonChunk.cpp\ - gff/BioMartGffHandler.cpp\ - gff/GffParser.cpp\ - gff/SplicingEventGffGenerator.cpp\ - gff/GffEventModel.cpp\ - gff/GffSimpleHandler.cpp\ - util/StringUtil.cpp\ - util/Logger.cpp - -libAltSplicing_a_CPPFLAGS = $(AM_CPPFLAGS) - -#noinst_HEADERS = intloops.h list.h - -#EXTRA_DIST = circfold.inc alicircfold.inc - -# ------------------------------- -# AltSplicingToolkit package distribution -# ------------------------------- -pkginclude_HEADERS = \ - as/Coordinates.h\ - as/GeneFeature.h\ - as/SplicingEventMatrix.h\ - as/Transcript.h\ - as/Feature.h\ - as/SplicingEventContainer.h\ - as/TranscriptFeature.h\ - as/Gene.h\ - as/SplicingEvent.h\ - as/RegionChunk.h\ - as/ExonChunk.h\ - gff/BioMartGffHandler.h\ - gff/GffParser.h\ - gff/SplicingEventGffGenerator.h\ - gff/GffEventModel.h\ - gff/GffSimpleHandler.h\ - util/StringUtil.h - -EXTRA_DIST = $(pkginclude_HEADERS) -all: all-am - -.SUFFIXES: -.SUFFIXES: .cpp .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -install-libLIBRARIES: $(lib_LIBRARIES) - @$(NORMAL_INSTALL) - test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" - @list='$(lib_LIBRARIES)'; for p in $$list; do \ - if test -f $$p; then \ - f=$(am__strip_dir) \ - echo " $(libLIBRARIES_INSTALL) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ - $(libLIBRARIES_INSTALL) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ - else :; fi; \ - done - @$(POST_INSTALL) - @list='$(lib_LIBRARIES)'; for p in $$list; do \ - if test -f $$p; then \ - p=$(am__strip_dir) \ - echo " $(RANLIB) '$(DESTDIR)$(libdir)/$$p'"; \ - $(RANLIB) "$(DESTDIR)$(libdir)/$$p"; \ - else :; fi; \ - done - -uninstall-libLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(lib_LIBRARIES)'; for p in $$list; do \ - p=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(libdir)/$$p'"; \ - rm -f "$(DESTDIR)$(libdir)/$$p"; \ - done - -clean-libLIBRARIES: - -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES) -libAltSplicing.a: $(libAltSplicing_a_OBJECTS) $(libAltSplicing_a_DEPENDENCIES) - -rm -f libAltSplicing.a - $(libAltSplicing_a_AR) libAltSplicing.a $(libAltSplicing_a_OBJECTS) $(libAltSplicing_a_LIBADD) - $(RANLIB) libAltSplicing.a -install-binPROGRAMS: $(bin_PROGRAMS) - @$(NORMAL_INSTALL) - test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" - @list='$(bin_PROGRAMS)'; for p in $$list; do \ - p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ - if test -f $$p \ - ; then \ - f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ - $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ - else :; fi; \ - done - -uninstall-binPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(bin_PROGRAMS)'; for p in $$list; do \ - f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ - echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ - rm -f "$(DESTDIR)$(bindir)/$$f"; \ - done - -clean-binPROGRAMS: - -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) -altSpliceFinder$(EXEEXT): $(altSpliceFinder_OBJECTS) $(altSpliceFinder_DEPENDENCIES) - @rm -f altSpliceFinder$(EXEEXT) - $(CXXLINK) $(altSpliceFinder_OBJECTS) $(altSpliceFinder_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/altSpliceFinder-Main.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAltSplicing_a-BioMartGffHandler.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAltSplicing_a-Coordinates.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAltSplicing_a-ExonChunk.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAltSplicing_a-Feature.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAltSplicing_a-Gene.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAltSplicing_a-GeneFeature.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAltSplicing_a-GffEventModel.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAltSplicing_a-GffParser.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAltSplicing_a-GffSimpleHandler.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAltSplicing_a-Logger.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAltSplicing_a-RegionChunk.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAltSplicing_a-SplicingEvent.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAltSplicing_a-SplicingEventContainer.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAltSplicing_a-SplicingEventGffGenerator.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAltSplicing_a-SplicingEventMatrix.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAltSplicing_a-StringUtil.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAltSplicing_a-Transcript.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libAltSplicing_a-TranscriptFeature.Po@am__quote@ - -.cpp.o: -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< - -.cpp.obj: -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -libAltSplicing_a-GeneFeature.o: as/GeneFeature.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libAltSplicing_a-GeneFeature.o -MD -MP -MF $(DEPDIR)/libAltSplicing_a-GeneFeature.Tpo -c -o libAltSplicing_a-GeneFeature.o `test -f 'as/GeneFeature.cpp' || echo '$(srcdir)/'`as/GeneFeature.cpp -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libAltSplicing_a-GeneFeature.Tpo $(DEPDIR)/libAltSplicing_a-GeneFeature.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='as/GeneFeature.cpp' object='libAltSplicing_a-GeneFeature.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libAltSplicing_a-GeneFeature.o `test -f 'as/GeneFeature.cpp' || echo '$(srcdir)/'`as/GeneFeature.cpp - -libAltSplicing_a-GeneFeature.obj: as/GeneFeature.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libAltSplicing_a-GeneFeature.obj -MD -MP -MF $(DEPDIR)/libAltSplicing_a-GeneFeature.Tpo -c -o libAltSplicing_a-GeneFeature.obj `if test -f 'as/GeneFeature.cpp'; then $(CYGPATH_W) 'as/GeneFeature.cpp'; else $(CYGPATH_W) '$(srcdir)/as/GeneFeature.cpp'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libAltSplicing_a-GeneFeature.Tpo $(DEPDIR)/libAltSplicing_a-GeneFeature.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='as/GeneFeature.cpp' object='libAltSplicing_a-GeneFeature.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libAltSplicing_a-GeneFeature.obj `if test -f 'as/GeneFeature.cpp'; then $(CYGPATH_W) 'as/GeneFeature.cpp'; else $(CYGPATH_W) '$(srcdir)/as/GeneFeature.cpp'; fi` - -libAltSplicing_a-SplicingEventMatrix.o: as/SplicingEventMatrix.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libAltSplicing_a-SplicingEventMatrix.o -MD -MP -MF $(DEPDIR)/libAltSplicing_a-SplicingEventMatrix.Tpo -c -o libAltSplicing_a-SplicingEventMatrix.o `test -f 'as/SplicingEventMatrix.cpp' || echo '$(srcdir)/'`as/SplicingEventMatrix.cpp -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libAltSplicing_a-SplicingEventMatrix.Tpo $(DEPDIR)/libAltSplicing_a-SplicingEventMatrix.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='as/SplicingEventMatrix.cpp' object='libAltSplicing_a-SplicingEventMatrix.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libAltSplicing_a-SplicingEventMatrix.o `test -f 'as/SplicingEventMatrix.cpp' || echo '$(srcdir)/'`as/SplicingEventMatrix.cpp - -libAltSplicing_a-SplicingEventMatrix.obj: as/SplicingEventMatrix.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libAltSplicing_a-SplicingEventMatrix.obj -MD -MP -MF $(DEPDIR)/libAltSplicing_a-SplicingEventMatrix.Tpo -c -o libAltSplicing_a-SplicingEventMatrix.obj `if test -f 'as/SplicingEventMatrix.cpp'; then $(CYGPATH_W) 'as/SplicingEventMatrix.cpp'; else $(CYGPATH_W) '$(srcdir)/as/SplicingEventMatrix.cpp'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libAltSplicing_a-SplicingEventMatrix.Tpo $(DEPDIR)/libAltSplicing_a-SplicingEventMatrix.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='as/SplicingEventMatrix.cpp' object='libAltSplicing_a-SplicingEventMatrix.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libAltSplicing_a-SplicingEventMatrix.obj `if test -f 'as/SplicingEventMatrix.cpp'; then $(CYGPATH_W) 'as/SplicingEventMatrix.cpp'; else $(CYGPATH_W) '$(srcdir)/as/SplicingEventMatrix.cpp'; fi` - -libAltSplicing_a-Transcript.o: as/Transcript.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libAltSplicing_a-Transcript.o -MD -MP -MF $(DEPDIR)/libAltSplicing_a-Transcript.Tpo -c -o libAltSplicing_a-Transcript.o `test -f 'as/Transcript.cpp' || echo '$(srcdir)/'`as/Transcript.cpp -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libAltSplicing_a-Transcript.Tpo $(DEPDIR)/libAltSplicing_a-Transcript.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='as/Transcript.cpp' object='libAltSplicing_a-Transcript.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libAltSplicing_a-Transcript.o `test -f 'as/Transcript.cpp' || echo '$(srcdir)/'`as/Transcript.cpp - -libAltSplicing_a-Transcript.obj: as/Transcript.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libAltSplicing_a-Transcript.obj -MD -MP -MF $(DEPDIR)/libAltSplicing_a-Transcript.Tpo -c -o libAltSplicing_a-Transcript.obj `if test -f 'as/Transcript.cpp'; then $(CYGPATH_W) 'as/Transcript.cpp'; else $(CYGPATH_W) '$(srcdir)/as/Transcript.cpp'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libAltSplicing_a-Transcript.Tpo $(DEPDIR)/libAltSplicing_a-Transcript.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='as/Transcript.cpp' object='libAltSplicing_a-Transcript.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libAltSplicing_a-Transcript.obj `if test -f 'as/Transcript.cpp'; then $(CYGPATH_W) 'as/Transcript.cpp'; else $(CYGPATH_W) '$(srcdir)/as/Transcript.cpp'; fi` - -libAltSplicing_a-Feature.o: as/Feature.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libAltSplicing_a-Feature.o -MD -MP -MF $(DEPDIR)/libAltSplicing_a-Feature.Tpo -c -o libAltSplicing_a-Feature.o `test -f 'as/Feature.cpp' || echo '$(srcdir)/'`as/Feature.cpp -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libAltSplicing_a-Feature.Tpo $(DEPDIR)/libAltSplicing_a-Feature.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='as/Feature.cpp' object='libAltSplicing_a-Feature.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libAltSplicing_a-Feature.o `test -f 'as/Feature.cpp' || echo '$(srcdir)/'`as/Feature.cpp - -libAltSplicing_a-Feature.obj: as/Feature.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libAltSplicing_a-Feature.obj -MD -MP -MF $(DEPDIR)/libAltSplicing_a-Feature.Tpo -c -o libAltSplicing_a-Feature.obj `if test -f 'as/Feature.cpp'; then $(CYGPATH_W) 'as/Feature.cpp'; else $(CYGPATH_W) '$(srcdir)/as/Feature.cpp'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libAltSplicing_a-Feature.Tpo $(DEPDIR)/libAltSplicing_a-Feature.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='as/Feature.cpp' object='libAltSplicing_a-Feature.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libAltSplicing_a-Feature.obj `if test -f 'as/Feature.cpp'; then $(CYGPATH_W) 'as/Feature.cpp'; else $(CYGPATH_W) '$(srcdir)/as/Feature.cpp'; fi` - -libAltSplicing_a-Coordinates.o: as/Coordinates.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libAltSplicing_a-Coordinates.o -MD -MP -MF $(DEPDIR)/libAltSplicing_a-Coordinates.Tpo -c -o libAltSplicing_a-Coordinates.o `test -f 'as/Coordinates.cpp' || echo '$(srcdir)/'`as/Coordinates.cpp -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libAltSplicing_a-Coordinates.Tpo $(DEPDIR)/libAltSplicing_a-Coordinates.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='as/Coordinates.cpp' object='libAltSplicing_a-Coordinates.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libAltSplicing_a-Coordinates.o `test -f 'as/Coordinates.cpp' || echo '$(srcdir)/'`as/Coordinates.cpp - -libAltSplicing_a-Coordinates.obj: as/Coordinates.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libAltSplicing_a-Coordinates.obj -MD -MP -MF $(DEPDIR)/libAltSplicing_a-Coordinates.Tpo -c -o libAltSplicing_a-Coordinates.obj `if test -f 'as/Coordinates.cpp'; then $(CYGPATH_W) 'as/Coordinates.cpp'; else $(CYGPATH_W) '$(srcdir)/as/Coordinates.cpp'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libAltSplicing_a-Coordinates.Tpo $(DEPDIR)/libAltSplicing_a-Coordinates.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='as/Coordinates.cpp' object='libAltSplicing_a-Coordinates.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libAltSplicing_a-Coordinates.obj `if test -f 'as/Coordinates.cpp'; then $(CYGPATH_W) 'as/Coordinates.cpp'; else $(CYGPATH_W) '$(srcdir)/as/Coordinates.cpp'; fi` - -libAltSplicing_a-SplicingEventContainer.o: as/SplicingEventContainer.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libAltSplicing_a-SplicingEventContainer.o -MD -MP -MF $(DEPDIR)/libAltSplicing_a-SplicingEventContainer.Tpo -c -o libAltSplicing_a-SplicingEventContainer.o `test -f 'as/SplicingEventContainer.cpp' || echo '$(srcdir)/'`as/SplicingEventContainer.cpp -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libAltSplicing_a-SplicingEventContainer.Tpo $(DEPDIR)/libAltSplicing_a-SplicingEventContainer.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='as/SplicingEventContainer.cpp' object='libAltSplicing_a-SplicingEventContainer.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libAltSplicing_a-SplicingEventContainer.o `test -f 'as/SplicingEventContainer.cpp' || echo '$(srcdir)/'`as/SplicingEventContainer.cpp - -libAltSplicing_a-SplicingEventContainer.obj: as/SplicingEventContainer.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libAltSplicing_a-SplicingEventContainer.obj -MD -MP -MF $(DEPDIR)/libAltSplicing_a-SplicingEventContainer.Tpo -c -o libAltSplicing_a-SplicingEventContainer.obj `if test -f 'as/SplicingEventContainer.cpp'; then $(CYGPATH_W) 'as/SplicingEventContainer.cpp'; else $(CYGPATH_W) '$(srcdir)/as/SplicingEventContainer.cpp'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libAltSplicing_a-SplicingEventContainer.Tpo $(DEPDIR)/libAltSplicing_a-SplicingEventContainer.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='as/SplicingEventContainer.cpp' object='libAltSplicing_a-SplicingEventContainer.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libAltSplicing_a-SplicingEventContainer.obj `if test -f 'as/SplicingEventContainer.cpp'; then $(CYGPATH_W) 'as/SplicingEventContainer.cpp'; else $(CYGPATH_W) '$(srcdir)/as/SplicingEventContainer.cpp'; fi` - -libAltSplicing_a-TranscriptFeature.o: as/TranscriptFeature.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libAltSplicing_a-TranscriptFeature.o -MD -MP -MF $(DEPDIR)/libAltSplicing_a-TranscriptFeature.Tpo -c -o libAltSplicing_a-TranscriptFeature.o `test -f 'as/TranscriptFeature.cpp' || echo '$(srcdir)/'`as/TranscriptFeature.cpp -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libAltSplicing_a-TranscriptFeature.Tpo $(DEPDIR)/libAltSplicing_a-TranscriptFeature.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='as/TranscriptFeature.cpp' object='libAltSplicing_a-TranscriptFeature.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libAltSplicing_a-TranscriptFeature.o `test -f 'as/TranscriptFeature.cpp' || echo '$(srcdir)/'`as/TranscriptFeature.cpp - -libAltSplicing_a-TranscriptFeature.obj: as/TranscriptFeature.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libAltSplicing_a-TranscriptFeature.obj -MD -MP -MF $(DEPDIR)/libAltSplicing_a-TranscriptFeature.Tpo -c -o libAltSplicing_a-TranscriptFeature.obj `if test -f 'as/TranscriptFeature.cpp'; then $(CYGPATH_W) 'as/TranscriptFeature.cpp'; else $(CYGPATH_W) '$(srcdir)/as/TranscriptFeature.cpp'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libAltSplicing_a-TranscriptFeature.Tpo $(DEPDIR)/libAltSplicing_a-TranscriptFeature.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='as/TranscriptFeature.cpp' object='libAltSplicing_a-TranscriptFeature.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libAltSplicing_a-TranscriptFeature.obj `if test -f 'as/TranscriptFeature.cpp'; then $(CYGPATH_W) 'as/TranscriptFeature.cpp'; else $(CYGPATH_W) '$(srcdir)/as/TranscriptFeature.cpp'; fi` - -libAltSplicing_a-Gene.o: as/Gene.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libAltSplicing_a-Gene.o -MD -MP -MF $(DEPDIR)/libAltSplicing_a-Gene.Tpo -c -o libAltSplicing_a-Gene.o `test -f 'as/Gene.cpp' || echo '$(srcdir)/'`as/Gene.cpp -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libAltSplicing_a-Gene.Tpo $(DEPDIR)/libAltSplicing_a-Gene.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='as/Gene.cpp' object='libAltSplicing_a-Gene.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libAltSplicing_a-Gene.o `test -f 'as/Gene.cpp' || echo '$(srcdir)/'`as/Gene.cpp - -libAltSplicing_a-Gene.obj: as/Gene.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libAltSplicing_a-Gene.obj -MD -MP -MF $(DEPDIR)/libAltSplicing_a-Gene.Tpo -c -o libAltSplicing_a-Gene.obj `if test -f 'as/Gene.cpp'; then $(CYGPATH_W) 'as/Gene.cpp'; else $(CYGPATH_W) '$(srcdir)/as/Gene.cpp'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libAltSplicing_a-Gene.Tpo $(DEPDIR)/libAltSplicing_a-Gene.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='as/Gene.cpp' object='libAltSplicing_a-Gene.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libAltSplicing_a-Gene.obj `if test -f 'as/Gene.cpp'; then $(CYGPATH_W) 'as/Gene.cpp'; else $(CYGPATH_W) '$(srcdir)/as/Gene.cpp'; fi` - -libAltSplicing_a-SplicingEvent.o: as/SplicingEvent.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libAltSplicing_a-SplicingEvent.o -MD -MP -MF $(DEPDIR)/libAltSplicing_a-SplicingEvent.Tpo -c -o libAltSplicing_a-SplicingEvent.o `test -f 'as/SplicingEvent.cpp' || echo '$(srcdir)/'`as/SplicingEvent.cpp -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libAltSplicing_a-SplicingEvent.Tpo $(DEPDIR)/libAltSplicing_a-SplicingEvent.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='as/SplicingEvent.cpp' object='libAltSplicing_a-SplicingEvent.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libAltSplicing_a-SplicingEvent.o `test -f 'as/SplicingEvent.cpp' || echo '$(srcdir)/'`as/SplicingEvent.cpp - -libAltSplicing_a-SplicingEvent.obj: as/SplicingEvent.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libAltSplicing_a-SplicingEvent.obj -MD -MP -MF $(DEPDIR)/libAltSplicing_a-SplicingEvent.Tpo -c -o libAltSplicing_a-SplicingEvent.obj `if test -f 'as/SplicingEvent.cpp'; then $(CYGPATH_W) 'as/SplicingEvent.cpp'; else $(CYGPATH_W) '$(srcdir)/as/SplicingEvent.cpp'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libAltSplicing_a-SplicingEvent.Tpo $(DEPDIR)/libAltSplicing_a-SplicingEvent.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='as/SplicingEvent.cpp' object='libAltSplicing_a-SplicingEvent.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libAltSplicing_a-SplicingEvent.obj `if test -f 'as/SplicingEvent.cpp'; then $(CYGPATH_W) 'as/SplicingEvent.cpp'; else $(CYGPATH_W) '$(srcdir)/as/SplicingEvent.cpp'; fi` - -libAltSplicing_a-RegionChunk.o: as/RegionChunk.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libAltSplicing_a-RegionChunk.o -MD -MP -MF $(DEPDIR)/libAltSplicing_a-RegionChunk.Tpo -c -o libAltSplicing_a-RegionChunk.o `test -f 'as/RegionChunk.cpp' || echo '$(srcdir)/'`as/RegionChunk.cpp -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libAltSplicing_a-RegionChunk.Tpo $(DEPDIR)/libAltSplicing_a-RegionChunk.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='as/RegionChunk.cpp' object='libAltSplicing_a-RegionChunk.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libAltSplicing_a-RegionChunk.o `test -f 'as/RegionChunk.cpp' || echo '$(srcdir)/'`as/RegionChunk.cpp - -libAltSplicing_a-RegionChunk.obj: as/RegionChunk.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libAltSplicing_a-RegionChunk.obj -MD -MP -MF $(DEPDIR)/libAltSplicing_a-RegionChunk.Tpo -c -o libAltSplicing_a-RegionChunk.obj `if test -f 'as/RegionChunk.cpp'; then $(CYGPATH_W) 'as/RegionChunk.cpp'; else $(CYGPATH_W) '$(srcdir)/as/RegionChunk.cpp'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libAltSplicing_a-RegionChunk.Tpo $(DEPDIR)/libAltSplicing_a-RegionChunk.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='as/RegionChunk.cpp' object='libAltSplicing_a-RegionChunk.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libAltSplicing_a-RegionChunk.obj `if test -f 'as/RegionChunk.cpp'; then $(CYGPATH_W) 'as/RegionChunk.cpp'; else $(CYGPATH_W) '$(srcdir)/as/RegionChunk.cpp'; fi` - -libAltSplicing_a-ExonChunk.o: as/ExonChunk.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libAltSplicing_a-ExonChunk.o -MD -MP -MF $(DEPDIR)/libAltSplicing_a-ExonChunk.Tpo -c -o libAltSplicing_a-ExonChunk.o `test -f 'as/ExonChunk.cpp' || echo '$(srcdir)/'`as/ExonChunk.cpp -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libAltSplicing_a-ExonChunk.Tpo $(DEPDIR)/libAltSplicing_a-ExonChunk.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='as/ExonChunk.cpp' object='libAltSplicing_a-ExonChunk.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libAltSplicing_a-ExonChunk.o `test -f 'as/ExonChunk.cpp' || echo '$(srcdir)/'`as/ExonChunk.cpp - -libAltSplicing_a-ExonChunk.obj: as/ExonChunk.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libAltSplicing_a-ExonChunk.obj -MD -MP -MF $(DEPDIR)/libAltSplicing_a-ExonChunk.Tpo -c -o libAltSplicing_a-ExonChunk.obj `if test -f 'as/ExonChunk.cpp'; then $(CYGPATH_W) 'as/ExonChunk.cpp'; else $(CYGPATH_W) '$(srcdir)/as/ExonChunk.cpp'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libAltSplicing_a-ExonChunk.Tpo $(DEPDIR)/libAltSplicing_a-ExonChunk.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='as/ExonChunk.cpp' object='libAltSplicing_a-ExonChunk.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libAltSplicing_a-ExonChunk.obj `if test -f 'as/ExonChunk.cpp'; then $(CYGPATH_W) 'as/ExonChunk.cpp'; else $(CYGPATH_W) '$(srcdir)/as/ExonChunk.cpp'; fi` - -libAltSplicing_a-BioMartGffHandler.o: gff/BioMartGffHandler.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libAltSplicing_a-BioMartGffHandler.o -MD -MP -MF $(DEPDIR)/libAltSplicing_a-BioMartGffHandler.Tpo -c -o libAltSplicing_a-BioMartGffHandler.o `test -f 'gff/BioMartGffHandler.cpp' || echo '$(srcdir)/'`gff/BioMartGffHandler.cpp -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libAltSplicing_a-BioMartGffHandler.Tpo $(DEPDIR)/libAltSplicing_a-BioMartGffHandler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='gff/BioMartGffHandler.cpp' object='libAltSplicing_a-BioMartGffHandler.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libAltSplicing_a-BioMartGffHandler.o `test -f 'gff/BioMartGffHandler.cpp' || echo '$(srcdir)/'`gff/BioMartGffHandler.cpp - -libAltSplicing_a-BioMartGffHandler.obj: gff/BioMartGffHandler.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libAltSplicing_a-BioMartGffHandler.obj -MD -MP -MF $(DEPDIR)/libAltSplicing_a-BioMartGffHandler.Tpo -c -o libAltSplicing_a-BioMartGffHandler.obj `if test -f 'gff/BioMartGffHandler.cpp'; then $(CYGPATH_W) 'gff/BioMartGffHandler.cpp'; else $(CYGPATH_W) '$(srcdir)/gff/BioMartGffHandler.cpp'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libAltSplicing_a-BioMartGffHandler.Tpo $(DEPDIR)/libAltSplicing_a-BioMartGffHandler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='gff/BioMartGffHandler.cpp' object='libAltSplicing_a-BioMartGffHandler.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libAltSplicing_a-BioMartGffHandler.obj `if test -f 'gff/BioMartGffHandler.cpp'; then $(CYGPATH_W) 'gff/BioMartGffHandler.cpp'; else $(CYGPATH_W) '$(srcdir)/gff/BioMartGffHandler.cpp'; fi` - -libAltSplicing_a-GffParser.o: gff/GffParser.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libAltSplicing_a-GffParser.o -MD -MP -MF $(DEPDIR)/libAltSplicing_a-GffParser.Tpo -c -o libAltSplicing_a-GffParser.o `test -f 'gff/GffParser.cpp' || echo '$(srcdir)/'`gff/GffParser.cpp -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libAltSplicing_a-GffParser.Tpo $(DEPDIR)/libAltSplicing_a-GffParser.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='gff/GffParser.cpp' object='libAltSplicing_a-GffParser.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libAltSplicing_a-GffParser.o `test -f 'gff/GffParser.cpp' || echo '$(srcdir)/'`gff/GffParser.cpp - -libAltSplicing_a-GffParser.obj: gff/GffParser.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libAltSplicing_a-GffParser.obj -MD -MP -MF $(DEPDIR)/libAltSplicing_a-GffParser.Tpo -c -o libAltSplicing_a-GffParser.obj `if test -f 'gff/GffParser.cpp'; then $(CYGPATH_W) 'gff/GffParser.cpp'; else $(CYGPATH_W) '$(srcdir)/gff/GffParser.cpp'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libAltSplicing_a-GffParser.Tpo $(DEPDIR)/libAltSplicing_a-GffParser.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='gff/GffParser.cpp' object='libAltSplicing_a-GffParser.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libAltSplicing_a-GffParser.obj `if test -f 'gff/GffParser.cpp'; then $(CYGPATH_W) 'gff/GffParser.cpp'; else $(CYGPATH_W) '$(srcdir)/gff/GffParser.cpp'; fi` - -libAltSplicing_a-SplicingEventGffGenerator.o: gff/SplicingEventGffGenerator.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libAltSplicing_a-SplicingEventGffGenerator.o -MD -MP -MF $(DEPDIR)/libAltSplicing_a-SplicingEventGffGenerator.Tpo -c -o libAltSplicing_a-SplicingEventGffGenerator.o `test -f 'gff/SplicingEventGffGenerator.cpp' || echo '$(srcdir)/'`gff/SplicingEventGffGenerator.cpp -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libAltSplicing_a-SplicingEventGffGenerator.Tpo $(DEPDIR)/libAltSplicing_a-SplicingEventGffGenerator.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='gff/SplicingEventGffGenerator.cpp' object='libAltSplicing_a-SplicingEventGffGenerator.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libAltSplicing_a-SplicingEventGffGenerator.o `test -f 'gff/SplicingEventGffGenerator.cpp' || echo '$(srcdir)/'`gff/SplicingEventGffGenerator.cpp - -libAltSplicing_a-SplicingEventGffGenerator.obj: gff/SplicingEventGffGenerator.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libAltSplicing_a-SplicingEventGffGenerator.obj -MD -MP -MF $(DEPDIR)/libAltSplicing_a-SplicingEventGffGenerator.Tpo -c -o libAltSplicing_a-SplicingEventGffGenerator.obj `if test -f 'gff/SplicingEventGffGenerator.cpp'; then $(CYGPATH_W) 'gff/SplicingEventGffGenerator.cpp'; else $(CYGPATH_W) '$(srcdir)/gff/SplicingEventGffGenerator.cpp'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libAltSplicing_a-SplicingEventGffGenerator.Tpo $(DEPDIR)/libAltSplicing_a-SplicingEventGffGenerator.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='gff/SplicingEventGffGenerator.cpp' object='libAltSplicing_a-SplicingEventGffGenerator.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libAltSplicing_a-SplicingEventGffGenerator.obj `if test -f 'gff/SplicingEventGffGenerator.cpp'; then $(CYGPATH_W) 'gff/SplicingEventGffGenerator.cpp'; else $(CYGPATH_W) '$(srcdir)/gff/SplicingEventGffGenerator.cpp'; fi` - -libAltSplicing_a-GffEventModel.o: gff/GffEventModel.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libAltSplicing_a-GffEventModel.o -MD -MP -MF $(DEPDIR)/libAltSplicing_a-GffEventModel.Tpo -c -o libAltSplicing_a-GffEventModel.o `test -f 'gff/GffEventModel.cpp' || echo '$(srcdir)/'`gff/GffEventModel.cpp -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libAltSplicing_a-GffEventModel.Tpo $(DEPDIR)/libAltSplicing_a-GffEventModel.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='gff/GffEventModel.cpp' object='libAltSplicing_a-GffEventModel.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libAltSplicing_a-GffEventModel.o `test -f 'gff/GffEventModel.cpp' || echo '$(srcdir)/'`gff/GffEventModel.cpp - -libAltSplicing_a-GffEventModel.obj: gff/GffEventModel.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libAltSplicing_a-GffEventModel.obj -MD -MP -MF $(DEPDIR)/libAltSplicing_a-GffEventModel.Tpo -c -o libAltSplicing_a-GffEventModel.obj `if test -f 'gff/GffEventModel.cpp'; then $(CYGPATH_W) 'gff/GffEventModel.cpp'; else $(CYGPATH_W) '$(srcdir)/gff/GffEventModel.cpp'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libAltSplicing_a-GffEventModel.Tpo $(DEPDIR)/libAltSplicing_a-GffEventModel.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='gff/GffEventModel.cpp' object='libAltSplicing_a-GffEventModel.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libAltSplicing_a-GffEventModel.obj `if test -f 'gff/GffEventModel.cpp'; then $(CYGPATH_W) 'gff/GffEventModel.cpp'; else $(CYGPATH_W) '$(srcdir)/gff/GffEventModel.cpp'; fi` - -libAltSplicing_a-GffSimpleHandler.o: gff/GffSimpleHandler.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libAltSplicing_a-GffSimpleHandler.o -MD -MP -MF $(DEPDIR)/libAltSplicing_a-GffSimpleHandler.Tpo -c -o libAltSplicing_a-GffSimpleHandler.o `test -f 'gff/GffSimpleHandler.cpp' || echo '$(srcdir)/'`gff/GffSimpleHandler.cpp -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libAltSplicing_a-GffSimpleHandler.Tpo $(DEPDIR)/libAltSplicing_a-GffSimpleHandler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='gff/GffSimpleHandler.cpp' object='libAltSplicing_a-GffSimpleHandler.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libAltSplicing_a-GffSimpleHandler.o `test -f 'gff/GffSimpleHandler.cpp' || echo '$(srcdir)/'`gff/GffSimpleHandler.cpp - -libAltSplicing_a-GffSimpleHandler.obj: gff/GffSimpleHandler.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libAltSplicing_a-GffSimpleHandler.obj -MD -MP -MF $(DEPDIR)/libAltSplicing_a-GffSimpleHandler.Tpo -c -o libAltSplicing_a-GffSimpleHandler.obj `if test -f 'gff/GffSimpleHandler.cpp'; then $(CYGPATH_W) 'gff/GffSimpleHandler.cpp'; else $(CYGPATH_W) '$(srcdir)/gff/GffSimpleHandler.cpp'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libAltSplicing_a-GffSimpleHandler.Tpo $(DEPDIR)/libAltSplicing_a-GffSimpleHandler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='gff/GffSimpleHandler.cpp' object='libAltSplicing_a-GffSimpleHandler.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libAltSplicing_a-GffSimpleHandler.obj `if test -f 'gff/GffSimpleHandler.cpp'; then $(CYGPATH_W) 'gff/GffSimpleHandler.cpp'; else $(CYGPATH_W) '$(srcdir)/gff/GffSimpleHandler.cpp'; fi` - -libAltSplicing_a-StringUtil.o: util/StringUtil.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libAltSplicing_a-StringUtil.o -MD -MP -MF $(DEPDIR)/libAltSplicing_a-StringUtil.Tpo -c -o libAltSplicing_a-StringUtil.o `test -f 'util/StringUtil.cpp' || echo '$(srcdir)/'`util/StringUtil.cpp -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libAltSplicing_a-StringUtil.Tpo $(DEPDIR)/libAltSplicing_a-StringUtil.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='util/StringUtil.cpp' object='libAltSplicing_a-StringUtil.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libAltSplicing_a-StringUtil.o `test -f 'util/StringUtil.cpp' || echo '$(srcdir)/'`util/StringUtil.cpp - -libAltSplicing_a-StringUtil.obj: util/StringUtil.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libAltSplicing_a-StringUtil.obj -MD -MP -MF $(DEPDIR)/libAltSplicing_a-StringUtil.Tpo -c -o libAltSplicing_a-StringUtil.obj `if test -f 'util/StringUtil.cpp'; then $(CYGPATH_W) 'util/StringUtil.cpp'; else $(CYGPATH_W) '$(srcdir)/util/StringUtil.cpp'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libAltSplicing_a-StringUtil.Tpo $(DEPDIR)/libAltSplicing_a-StringUtil.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='util/StringUtil.cpp' object='libAltSplicing_a-StringUtil.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libAltSplicing_a-StringUtil.obj `if test -f 'util/StringUtil.cpp'; then $(CYGPATH_W) 'util/StringUtil.cpp'; else $(CYGPATH_W) '$(srcdir)/util/StringUtil.cpp'; fi` - -libAltSplicing_a-Logger.o: util/Logger.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libAltSplicing_a-Logger.o -MD -MP -MF $(DEPDIR)/libAltSplicing_a-Logger.Tpo -c -o libAltSplicing_a-Logger.o `test -f 'util/Logger.cpp' || echo '$(srcdir)/'`util/Logger.cpp -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libAltSplicing_a-Logger.Tpo $(DEPDIR)/libAltSplicing_a-Logger.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='util/Logger.cpp' object='libAltSplicing_a-Logger.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libAltSplicing_a-Logger.o `test -f 'util/Logger.cpp' || echo '$(srcdir)/'`util/Logger.cpp - -libAltSplicing_a-Logger.obj: util/Logger.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libAltSplicing_a-Logger.obj -MD -MP -MF $(DEPDIR)/libAltSplicing_a-Logger.Tpo -c -o libAltSplicing_a-Logger.obj `if test -f 'util/Logger.cpp'; then $(CYGPATH_W) 'util/Logger.cpp'; else $(CYGPATH_W) '$(srcdir)/util/Logger.cpp'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libAltSplicing_a-Logger.Tpo $(DEPDIR)/libAltSplicing_a-Logger.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='util/Logger.cpp' object='libAltSplicing_a-Logger.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libAltSplicing_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libAltSplicing_a-Logger.obj `if test -f 'util/Logger.cpp'; then $(CYGPATH_W) 'util/Logger.cpp'; else $(CYGPATH_W) '$(srcdir)/util/Logger.cpp'; fi` - -altSpliceFinder-Main.o: Main.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(altSpliceFinder_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT altSpliceFinder-Main.o -MD -MP -MF $(DEPDIR)/altSpliceFinder-Main.Tpo -c -o altSpliceFinder-Main.o `test -f 'Main.cpp' || echo '$(srcdir)/'`Main.cpp -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/altSpliceFinder-Main.Tpo $(DEPDIR)/altSpliceFinder-Main.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='Main.cpp' object='altSpliceFinder-Main.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(altSpliceFinder_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o altSpliceFinder-Main.o `test -f 'Main.cpp' || echo '$(srcdir)/'`Main.cpp - -altSpliceFinder-Main.obj: Main.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(altSpliceFinder_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT altSpliceFinder-Main.obj -MD -MP -MF $(DEPDIR)/altSpliceFinder-Main.Tpo -c -o altSpliceFinder-Main.obj `if test -f 'Main.cpp'; then $(CYGPATH_W) 'Main.cpp'; else $(CYGPATH_W) '$(srcdir)/Main.cpp'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/altSpliceFinder-Main.Tpo $(DEPDIR)/altSpliceFinder-Main.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='Main.cpp' object='altSpliceFinder-Main.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(altSpliceFinder_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o altSpliceFinder-Main.obj `if test -f 'Main.cpp'; then $(CYGPATH_W) 'Main.cpp'; else $(CYGPATH_W) '$(srcdir)/Main.cpp'; fi` -install-pkgincludeHEADERS: $(pkginclude_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" - @list='$(pkginclude_HEADERS)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(pkgincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgincludedir)/$$f'"; \ - $(pkgincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgincludedir)/$$f"; \ - done - -uninstall-pkgincludeHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(pkginclude_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(pkgincludedir)/$$f'"; \ - rm -f "$(DESTDIR)$(pkgincludedir)/$$f"; \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$tags$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(HEADERS) -installdirs: - for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgincludedir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-binPROGRAMS clean-generic clean-libLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: install-pkgincludeHEADERS - -install-dvi: install-dvi-am - -install-exec-am: install-binPROGRAMS install-libLIBRARIES - -install-html: install-html-am - -install-info: install-info-am - -install-man: - -install-pdf: install-pdf-am - -install-ps: install-ps-am - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-binPROGRAMS uninstall-libLIBRARIES \ - uninstall-pkgincludeHEADERS - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ - clean-generic clean-libLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-binPROGRAMS install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am \ - install-libLIBRARIES install-man install-pdf install-pdf-am \ - install-pkgincludeHEADERS install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-binPROGRAMS \ - uninstall-libLIBRARIES uninstall-pkgincludeHEADERS - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/Coordinates.cpp b/misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/Coordinates.cpp deleted file mode 100644 index 9ba7be28c..000000000 --- a/misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/Coordinates.cpp +++ /dev/null @@ -1,93 +0,0 @@ -/* - * AltSplicingToolkit - * Author: Gautier Koscielny - * - * Copyright (c) 1999-2010 The European Bioinformatics Institute and - * Genome Research Limited, and others. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer - * in the documentation and/or other materials provided with the - * distribution. - * - * 3. The name "Ensembl" must not be used to endorse or promote products - * derived from this software without prior written permission. For - * written permission, please contact helpdesk@ensembl.org - * - * 4. Products derived from this software may not be called "Ensembl" - * nor may "Ensembl" appear in their names without prior written - * permission of the Ensembl developers. - * - * 5. Redistributions in any form whatsoever must retain the following - * acknowledgement: - * - * "This product includes software developed by Ensembl - * (http://www.ensembl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE ENSEMBL GROUP ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE ENSEMBL GROUP OR ITS - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "Coordinates.h" - -namespace as -{ - - Coordinates::Coordinates() - { - // TODO Auto-generated constructor stub - - } - - Coordinates::Coordinates(unsigned int start, unsigned int end) : start(start), end(end) - { - - } - - Coordinates::~Coordinates() - { - // TODO Auto-generated destructor stub - } - - unsigned int Coordinates::getStart() const - { - return start; - } - - unsigned int Coordinates::getEnd() const - { - return end; - } - - unsigned int Coordinates::getLength() const - { - return end-start+1; - } - - void Coordinates::setStart(unsigned int v) - { - start = v; - } - - void Coordinates::setEnd(unsigned int v) - { - end = v; - } - -} diff --git a/misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/Coordinates.h b/misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/Coordinates.h deleted file mode 100644 index 26c50f543..000000000 --- a/misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/Coordinates.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - * AltSplicingToolkit - * Author: Gautier Koscielny - * - * Copyright (c) 1999-2010 The European Bioinformatics Institute and - * Genome Research Limited, and others. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer - * in the documentation and/or other materials provided with the - * distribution. - * - * 3. The name "Ensembl" must not be used to endorse or promote products - * derived from this software without prior written permission. For - * written permission, please contact helpdesk@ensembl.org - * - * 4. Products derived from this software may not be called "Ensembl" - * nor may "Ensembl" appear in their names without prior written - * permission of the Ensembl developers. - * - * 5. Redistributions in any form whatsoever must retain the following - * acknowledgement: - * - * "This product includes software developed by Ensembl - * (http://www.ensembl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE ENSEMBL GROUP ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE ENSEMBL GROUP OR ITS - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef COORDINATES_H_ -#define COORDINATES_H_ - -namespace as -{ - - class Coordinates - { - public: - Coordinates(); - Coordinates(unsigned int start, unsigned int end); - - virtual - ~Coordinates(); - - public: - - unsigned int getStart() const; - unsigned int getEnd() const; - unsigned int getLength() const; - - void setStart(unsigned int v); - void setEnd(unsigned int v); - - protected: - unsigned int start; - unsigned int end; - - }; - -} - -#endif /* COORDINATES_H_ */ diff --git a/misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/ExonChunk.cpp b/misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/ExonChunk.cpp deleted file mode 100644 index 5a40c0f19..000000000 --- a/misc-scripts/alternative_splicing/AltSplicingToolkit/src/as/ExonChunk.cpp +++ /dev/null @@ -1,102 +0,0 @@ -/* - * AltSplicingToolkit - * Author: Gautier Koscielny - * - * Copyright (c) 1999-2010 The European Bioinformatics Institute and - * Genome Research Limited, and others. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer - * in the documentation and/or other materials provided with the - * distribution. - * - * 3. The name "Ensembl" must not be used to endorse or promote products - * derived from this software without prior written permission. For - * written permission, please contact helpdesk@ensembl.org - * - * 4. Products derived from this software may not be called "Ensembl" - * nor may "Ensembl" appear in their names without prior written - * permission of the Ensembl developers. - * - * 5. Redistributions in any form whatsoever must retain the following - * acknowledgement: - * - * "This product includes software developed by Ensembl - * (http://www.ensembl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE ENSEMBL GROUP ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE ENSEMBL GROUP OR ITS - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "ExonChunk.h" - -namespace as -{ - - ExonChunk::ExonChunk(unsigned int start, unsigned int end) : Coordinates(start, end) - { - // TODO Auto-generated constructor stub - - } - - Ex