Repository 'vcfs2fasta'
hg clone https://toolshed.g2.bx.psu.edu/repos/ulfschaefer/vcfs2fasta

Changeset 12:19c42b3cce4a (2015-12-16)
Previous changeset 11:cb443c64ebad (2015-12-16) Next changeset 13:2e69ce9dca65 (2015-12-16)
Commit message:
Deleted selected files
removed:
vcfs2fasta/phe/variant/__init__.py
b
diff -r cb443c64ebad -r 19c42b3cce4a vcfs2fasta/phe/variant/__init__.py
--- a/vcfs2fasta/phe/variant/__init__.py Wed Dec 16 07:25:53 2015 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
[
b'@@ -1,288 +0,0 @@\n-"""Classes and methods to work with variants and such."""\n-import abc\n-#ulf\n-# from collections import OrderedDict\n-try:\n-    from collections import OrderedDict\n-except ImportError:\n-    from ordereddict import OrderedDict\n-    \n-import logging\n-import pickle\n-\n-from vcf import filters\n-import vcf\n-from vcf.parser import _Filter\n-\n-from phe.metadata import PHEMetaData\n-from phe.variant_filters import make_filters, PHEFilterBase, str_to_filters\n-\n-\n-class VCFTemplate(object):\n-    """This is a small hack class for the Template used in generating\n-    VCF file."""\n-\n-    def __init__(self, vcf_reader):\n-        self.infos = vcf_reader.infos\n-        self.formats = vcf_reader.formats\n-        self.filters = vcf_reader.filters\n-        self.alts = vcf_reader.alts\n-        self.contigs = vcf_reader.contigs\n-        self.metadata = vcf_reader.metadata\n-        self._column_headers = vcf_reader._column_headers\n-        self.samples = vcf_reader.samples\n-\n-class VariantSet(object):\n-    """A convenient representation of set of variants.\n-    TODO: Implement iterator and generator for the variant set.\n-    """\n-\n-    _reader = None\n-\n-    def __init__(self, vcf_in, filters=None):\n-        """Constructor of variant set.\n-\n-        Parameters:\n-        -----------\n-        vcf_in: str\n-            Path to the VCF file for loading information.\n-        filters: str or dict, optional\n-            Dictionary or string of the filter:threshold key value pairs.\n-        """\n-        self.vcf_in = vcf_in\n-        self._reader = vcf.Reader(filename=vcf_in)\n-        self.out_template = VCFTemplate(self._reader)\n-\n-        self.filters = []\n-        if filters is not None:\n-            if isinstance(filters, str):\n-                self.filters = str_to_filters(filters)\n-            elif isinstance(filters, dict):\n-                self.filters = make_filters(config=filters)\n-            elif isinstance(filters, list):\n-                self.filters = filters\n-            else:\n-                logging.warn("Could not create filters from %s", filters)\n-        else:\n-            reader = vcf.Reader(filename=self.vcf_in)\n-            filters = {}\n-            for filter_id in reader.filters:\n-                filters.update(PHEFilterBase.decode(filter_id))\n-\n-            if filters:\n-                self.filters = make_filters(config=filters)\n-\n-        self.variants = []\n-\n-    def filter_variants(self, keep_only_snps=True):\n-        """Create a variant """\n-\n-        if self._reader is None:\n-            # Create a reader class from input VCF.\n-            self._reader = vcf.Reader(filename=self.vcf_in)\n-\n-        # get list of existing filters.\n-        existing_filters = {}\n-        removed_filters = []\n-\n-        for filter_id in self._reader.filters:\n-            conf = PHEFilterBase.decode(filter_id)\n-            tuple(conf.keys())\n-            existing_filters.update({tuple(conf.keys()):filter_id})\n-\n-        # Add each filter we are going to use to the record.\n-        # This is needed for writing out proper #FILTER header in VCF.\n-        for record_filter in self.filters:\n-            # We know that each filter has short description method.\n-            short_doc = record_filter.short_desc()\n-            short_doc = short_doc.split(\'\\n\')[0].lstrip()\n-\n-            filter_name = PHEFilterBase.decode(record_filter.filter_name())\n-\n-            # Check if the sample has been filtered for this type of filter\n-            #    in the past. If so remove is, because it is going to be refiltered.\n-            if tuple(filter_name) in existing_filters:\n-                logging.info("Removing existing filter: %s", existing_filters[tuple(filter_name)])\n-                removed_filters.append(existing_filters[tuple(filter_name)])\n-                del self._reader.filters[existing_filters[tuple(filter_name)]]\n-\n-            self._reader.filters[record_filter.filter_name()] = _Filter(record_filter.filter_name(), short_doc)\n-\n-        '..b'    (default: False).\n-\n-        Returns:\n-        int:\n-            Number of records written.\n-        """\n-        written_variants = 0\n-        with open(vcf_out, "w") as out_vcf:\n-            writer = vcf.Writer(out_vcf, self.out_template)\n-            for record in self.variants:\n-\n-                if only_snps and not record.is_snp:\n-                    continue\n-\n-                if only_good and record.FILTER != "PASS" or record.FILTER is None:\n-                    continue\n-\n-                writer.write_record(record)\n-                written_variants += 1\n-\n-        return written_variants\n-\n-    def _write_bad_variants(self, vcf_out):\n-        """**PRIVATE:** Write only those records that **haven\'t** passed."""\n-        written_variants = 0\n-        with open(vcf_out, "w") as out_vcf:\n-            writer = vcf.Writer(out_vcf, self.out_template)\n-            for record in self.variants:\n-                if record.FILTER != "PASS" and record.FILTER is not None:\n-                    writer.write_record(record)\n-                    written_variants += 1\n-        return written_variants\n-\n-    def serialise(self, out_file):\n-        """Save the data in this class to a file for future use/reload.\n-\n-        Parameters:\n-        -----------\n-        out_file: str\n-            path to file where the data should be written to.\n-\n-        Returns:\n-        --------\n-        int:\n-            Number of variants written.\n-        """\n-        written_variants = 0\n-        with open(out_file, "w") as out_vcf:\n-            writer = vcf.Writer(out_vcf, self.out_template)\n-            for record in self.variants:\n-                writer.write_record(record)\n-                written_variants += 1\n-\n-        return written_variants\n-\n-    def update_filters(self, new_filters):\n-        """Update internal filters in the output template."""\n-        for new_filter, filter_data in new_filters.items():\n-            self.out_template.filters[new_filter] = filter_data\n-\n-\n-class VariantCaller(PHEMetaData):\n-    """Abstract class used for access to the implemented variant callers."""\n-\n-    __metaclass__ = abc.ABCMeta\n-\n-    def __init__(self, cmd_options=None):\n-        """Constructor for variant caller.\n-\n-        Parameters:\n-        -----------\n-        cmd_options: str, optional\n-            Command options to pass to the variant command.\n-        """\n-        self.cmd_options = cmd_options\n-\n-        super(VariantCaller, self).__init__()\n-\n-    @abc.abstractmethod\n-    def make_vcf(self, *args, **kwargs):\n-        """Create a VCF from **BAM** file.\n-\n-        Parameters:\n-        -----------\n-        ref: str\n-            Path to the reference file.\n-        bam: str\n-            Path to the indexed **BAM** file for calling variants.\n-        vcf_file: str\n-            path to the VCF file where data will be written to.\n-\n-        Returns:\n-        --------\n-        bool:\n-            True if variant calling was successful, False otherwise.\n-        """\n-        raise NotImplementedError("make_vcf is not implemented yet.")\n-\n-    @abc.abstractmethod\n-    def create_aux_files(self, ref):\n-        """Create needed (if any) auxiliary files.\n-        These files are required for proper functioning of the variant caller.\n-        """\n-        raise NotImplementedError("create_aux_files is not implemeted.")\n-\n-    @abc.abstractmethod\n-    def get_info(self, plain=False):\n-        """Get information about this variant caller."""\n-        raise NotImplementedError("Get info has not been implemented yet."\n-                                  )\n-    def get_meta(self):\n-        """Get the metadata about this variant caller."""\n-        od = self.get_info()\n-        od["ID"] = "VariantCaller"\n-        return OrderedDict({"PHEVariantMetaData": [od]})\n-\n-    @abc.abstractmethod\n-    def get_version(self):\n-        """Get the version of the underlying command used."""\n-        raise NotImplementedError("Get version has not been implemented yet.")\n'