def test_add_new_call_set(self):
     vcf = VCF(f="tests/vcf_tests/test.vcf",
               reference_set_id=self.reference_set.id,
               method="CORTEX")
     vcf.add_to_database()
     # Only one callset but the callset should belong to multiple variant
     # sets
     assert VariantCallSet.objects().count() == 1
     assert VariantCallSet.objects()[0].created_at <= datetime.datetime.now(
     )
     assert len(VariantCallSet.objects()[0].variant_sets) == 2
Esempio n. 2
0
    def setUp(self):
        self.reference_set = ReferenceSet().create_and_save(name="ref_set")
        self.variant_set = VariantSet.create_and_save(
            name="this_vcf_file2",
            reference_set=self.reference_set)
        self.variant_sets = [self.variant_set]
        self.reference = Reference().create_and_save(
            name="ref",
            md5checksum="sre",
            reference_sets=[
                self.reference_set])
        self.call_set = VariantCallSet.create(
            sample_id="C00123",
            name="C00123",
            variant_sets=self.variant_sets)
        self.variant_snp = Variant.create(variant_sets=self.variant_sets,
                                          start=0, end=1, reference_bases="A",
                                          alternate_bases=["T"],
                                          reference=self.reference)

        self.variant_snp_mult_alts = Variant.create(
            variant_sets=self.variant_sets,
            start=0,
            end=1,
            reference_bases="T",
            alternate_bases=[
                "A",
                "C"],
            reference=self.reference)
Esempio n. 3
0
    def setUp(self):
        self.reference_set = ReferenceSet().create_and_save(name="ref_set")
        self.variant_set = VariantSet.create_and_save(
            name="this_vcf_file2",
            reference_set=self.reference_set)
        self.variant_sets = [self.variant_set]
        self.reference = Reference().create_and_save(
            name="ref",
            md5checksum="sre",
            reference_sets=[
                self.reference_set])
        self.call_set = VariantCallSet.create(
            sample_id="C00123",
            name="C00123",
            variant_sets=self.variant_sets)
        self.variant_snp = Variant.create(variant_sets=self.variant_sets,
                                          start=0, end=1, reference_bases="A",
                                          alternate_bases=["T"],
                                          reference=self.reference)

        self.variant_snp_mult_alts = Variant.create(
            variant_sets=self.variant_sets,
            start=0,
            end=1,
            reference_bases="T",
            alternate_bases=[
                "A",
                "C"],
            reference=self.reference)
Esempio n. 4
0
 def test_create_call_set(self):
     call_set = VariantCallSet.create_and_save(
         name="call_set",
         sample_id="C00123",
         variant_sets=self.variant_sets)
     cs = VariantCallSet.objects.get(name="call_set")
     assert call_set == cs
     assert cs.name == "call_set"
     assert cs.variant_sets[0].reference_set.name == "ref_set"
Esempio n. 5
0
 def test_create_call_set(self):
     call_set = VariantCallSet.create_and_save(
         name="call_set",
         sample_id="C00123",
         variant_sets=self.variant_sets)
     cs = VariantCallSet.objects.get(name="call_set")
     assert call_set == cs
     assert cs.name == "call_set"
     assert cs.variant_sets[0].reference_set.name == "ref_set"
Esempio n. 6
0
 def _remove_variant_set(self, variant_set_name):
     vs = VariantSet.objects.get(name=variant_set_name,
                                 reference_set=self.reference_set)
     for call_set in VariantCallSet.objects(variant_sets=vs):
         call_set.variant_sets.remove(vs)
         call_set.save()
         # Remove calls from callsets that only have this variantset
         if len(call_set.variant_sets) < 2:
             VariantCall.objects(call_set=call_set).delete()
             call_set.delete()
     # Remove variants that are ONLY from this variant set
     Variant.objects(variant_sets=vs, variant_sets__size=2).delete()
     VariantSetMetadata.objects(variant_set=vs).delete()
     vs.delete()
Esempio n. 7
0
 def _create_call_sets(self):
     for sample in self.vcf_reader.samples:
         try:
             cs = VariantCallSet.create_and_save(
                 name="_".join([sample, self.method]),
                 variant_sets=self.variant_sets,
                 sample_id=sample,
                 info={"variant_caller": self.method})
         except NotUniqueError:
             raise ValueError(
                 "There is already a call set for sample %s with method %s "
                 % (sample, self.method))
         else:
             self.call_sets[sample] = cs
 def test_add_second_vcf_variant_set(self):
     # This VCF only has one Variant which is not in the first VCF
     vcf = VCF(f="tests/vcf_tests/test2.vcf",
               reference_set_id=self.reference_set.id,
               method="CORTEX")
     vcf.add_to_database()
     assert VariantSet.objects().count() == 3
     assert VariantCallSet.objects().count() == 2
     assert VariantCall.objects().count() == 42
     assert Variant.objects().count() == 22
     assert len(Variant.objects()[0].variant_sets) == 3
     assert len(
         Variant.objects.get(
             names="UNION_BC_k31_var_147").variant_sets) == 3
 def test_add_second_vcf_variant_set(self):
     # This VCF only has one Variant which is not in the first VCF
     vcf = VCF(f="tests/vcf_tests/test3.vcf",
               reference_set_id=self.reference_set.id,
               method="CORTEX")
     vcf.add_to_database()
     assert VariantSet.objects().count() == 2
     assert VariantCallSet.objects().count() == 1
     assert VariantCall.objects().count() == 106
     assert Variant.objects().count() == 106
     assert Variant.snps().count() == 89
     assert Variant.indels().count() == 17
     assert Variant.insertions().count() == 8
     assert Variant.deletions().count() == 8
     assert Variant.ph_snps.count() == 1
Esempio n. 10
0
 def _create_call_sets(self):
     try:
         self.call_set = VariantCallSet.create_and_save(
             name=self.call_set_name,
             variant_sets=[self.global_variant_set],
             sample_id=self.sample,
             info={"variant_caller": self.method})
     except NotUniqueError:
         if self.force:
             # logger.info("There is already a call set for sample %s with method %s but add has been called with --force so this callset is being removed from the DB" %
             #     (self.sample, self.method))
             cs = VariantCallSet.objects.get(
                 name="_".join([self.sample, self.method]))
             VariantCall.objects(call_set=cs).delete()
             cs.delete()
             self._create_call_sets()
         else:
             raise ValueError(
                 "There is already a call set for sample %s with method %s "
                 % (self.sample, self.method))