def setUp(self):
     self.g = Goldilocks(NucleotideCounterStrategy(
         ["A", "C", "G", "T", "N"]),
                         sequence_data,
                         length=3,
                         stride=1)
     self.TOTAL_REGIONS = 29
Esempio n. 2
0
    def setUpClass(cls):
        cls.sequence_data = {
            "my_sample": {
                2: "NANANANANA",
                "X": "GATTACAGATTACAN",
                "one": "CATCANCAT",
                "three": "..A",
            },
            "my_other_sample": {
                2: "GANGANGAN",
                "X": "GATTACAGATTACAN",
                "one": "TATANTATA",
                "three": ".N.",
            }
        }
        cls.g = Goldilocks(NucleotideCounterStrategy(["A", "C", "G", "T",
                                                      "N"]),
                           cls.sequence_data,
                           length=3,
                           stride=1)
        cls.GROUPS = ["my_sample", "my_other_sample", "total"]
        cls.TRACKS = ["A", "C", "G", "T", "N", "default"]

        cls.EXPECTED_REGIONS = {
            2: {
                "my_sample": {
                    0: {
                        'A': 1,
                        'C': 0,
                        'T': 0,
                        'G': 0,
                        'N': 2,
                        "default": 3
                    },
                    1: {
                        'A': 2,
                        'C': 0,
                        'T': 0,
                        'G': 0,
                        'N': 1,
                        "default": 3
                    },
                    2: {
                        'A': 1,
                        'C': 0,
                        'T': 0,
                        'G': 0,
                        'N': 2,
                        "default": 3
                    },
                    3: {
                        'A': 2,
                        'C': 0,
                        'T': 0,
                        'G': 0,
                        'N': 1,
                        "default": 3
                    },
                    4: {
                        'A': 1,
                        'C': 0,
                        'T': 0,
                        'G': 0,
                        'N': 2,
                        "default": 3
                    },
                    5: {
                        'A': 2,
                        'C': 0,
                        'T': 0,
                        'G': 0,
                        'N': 1,
                        "default": 3
                    },
                    6: {
                        'A': 1,
                        'C': 0,
                        'T': 0,
                        'G': 0,
                        'N': 2,
                        "default": 3
                    },
                    7: {
                        'A': 2,
                        'C': 0,
                        'T': 0,
                        'G': 0,
                        'N': 1,
                        "default": 3
                    },
                },
                "my_other_sample": {
                    0: {
                        'A': 1,
                        'C': 0,
                        'T': 0,
                        'G': 1,
                        'N': 1,
                        "default": 3
                    },
                    1: {
                        'A': 1,
                        'C': 0,
                        'T': 0,
                        'G': 1,
                        'N': 1,
                        "default": 3
                    },
                    2: {
                        'A': 1,
                        'C': 0,
                        'T': 0,
                        'G': 1,
                        'N': 1,
                        "default": 3
                    },
                    3: {
                        'A': 1,
                        'C': 0,
                        'T': 0,
                        'G': 1,
                        'N': 1,
                        "default": 3
                    },
                    4: {
                        'A': 1,
                        'C': 0,
                        'T': 0,
                        'G': 1,
                        'N': 1,
                        "default": 3
                    },
                    5: {
                        'A': 1,
                        'C': 0,
                        'T': 0,
                        'G': 1,
                        'N': 1,
                        "default": 3
                    },
                    6: {
                        'A': 1,
                        'C': 0,
                        'T': 0,
                        'G': 1,
                        'N': 1,
                        "default": 3
                    },
                    7: {
                        'A': 1,
                        'C': 0,
                        'T': 0,
                        'G': 0,
                        'N': 1,
                        "default": 2
                    },
                },
                "total": {
                    0: {
                        'A': 2,
                        'C': 0,
                        'T': 0,
                        'G': 1,
                        'N': 3,
                        "default": 6
                    },
                    1: {
                        'A': 3,
                        'C': 0,
                        'T': 0,
                        'G': 1,
                        'N': 2,
                        "default": 6
                    },
                    2: {
                        'A': 2,
                        'C': 0,
                        'T': 0,
                        'G': 1,
                        'N': 3,
                        "default": 6
                    },
                    3: {
                        'A': 3,
                        'C': 0,
                        'T': 0,
                        'G': 1,
                        'N': 2,
                        "default": 6
                    },
                    4: {
                        'A': 2,
                        'C': 0,
                        'T': 0,
                        'G': 1,
                        'N': 3,
                        "default": 6
                    },
                    5: {
                        'A': 3,
                        'C': 0,
                        'T': 0,
                        'G': 1,
                        'N': 2,
                        "default": 6
                    },
                    6: {
                        'A': 2,
                        'C': 0,
                        'T': 0,
                        'G': 1,
                        'N': 3,
                        "default": 6
                    },
                    7: {
                        'A': 3,
                        'C': 0,
                        'T': 0,
                        'G': 0,
                        'N': 2,
                        "default": 5
                    },
                },
            },
            "X": {
                "my_sample": {
                    0: {
                        'A': 1,
                        'C': 0,
                        'T': 1,
                        'G': 1,
                        'N': 0,
                        "default": 3
                    },
                    1: {
                        'A': 1,
                        'C': 0,
                        'T': 2,
                        'G': 0,
                        'N': 0,
                        "default": 3
                    },
                    2: {
                        'A': 1,
                        'C': 0,
                        'T': 2,
                        'G': 0,
                        'N': 0,
                        "default": 3
                    },
                    3: {
                        'A': 1,
                        'C': 1,
                        'T': 1,
                        'G': 0,
                        'N': 0,
                        "default": 3
                    },
                    4: {
                        'A': 2,
                        'C': 1,
                        'T': 0,
                        'G': 0,
                        'N': 0,
                        "default": 3
                    },
                    5: {
                        'A': 1,
                        'C': 1,
                        'T': 0,
                        'G': 1,
                        'N': 0,
                        "default": 3
                    },
                    6: {
                        'A': 2,
                        'C': 0,
                        'T': 0,
                        'G': 1,
                        'N': 0,
                        "default": 3
                    },
                    7: {
                        'A': 1,
                        'C': 0,
                        'T': 1,
                        'G': 1,
                        'N': 0,
                        "default": 3
                    },
                    8: {
                        'A': 1,
                        'C': 0,
                        'T': 2,
                        'G': 0,
                        'N': 0,
                        "default": 3
                    },
                    9: {
                        'A': 1,
                        'C': 0,
                        'T': 2,
                        'G': 0,
                        'N': 0,
                        "default": 3
                    },
                    10: {
                        'A': 1,
                        'C': 1,
                        'T': 1,
                        'G': 0,
                        'N': 0,
                        "default": 3
                    },
                    11: {
                        'A': 2,
                        'C': 1,
                        'T': 0,
                        'G': 0,
                        'N': 0,
                        "default": 3
                    },
                    12: {
                        'A': 1,
                        'C': 1,
                        'T': 0,
                        'G': 0,
                        'N': 1,
                        "default": 3
                    },
                },
                "my_other_sample": {
                    0: {
                        'A': 1,
                        'C': 0,
                        'T': 1,
                        'G': 1,
                        'N': 0,
                        "default": 3
                    },
                    1: {
                        'A': 1,
                        'C': 0,
                        'T': 2,
                        'G': 0,
                        'N': 0,
                        "default": 3
                    },
                    2: {
                        'A': 1,
                        'C': 0,
                        'T': 2,
                        'G': 0,
                        'N': 0,
                        "default": 3
                    },
                    3: {
                        'A': 1,
                        'C': 1,
                        'T': 1,
                        'G': 0,
                        'N': 0,
                        "default": 3
                    },
                    4: {
                        'A': 2,
                        'C': 1,
                        'T': 0,
                        'G': 0,
                        'N': 0,
                        "default": 3
                    },
                    5: {
                        'A': 1,
                        'C': 1,
                        'T': 0,
                        'G': 1,
                        'N': 0,
                        "default": 3
                    },
                    6: {
                        'A': 2,
                        'C': 0,
                        'T': 0,
                        'G': 1,
                        'N': 0,
                        "default": 3
                    },
                    7: {
                        'A': 1,
                        'C': 0,
                        'T': 1,
                        'G': 1,
                        'N': 0,
                        "default": 3
                    },
                    8: {
                        'A': 1,
                        'C': 0,
                        'T': 2,
                        'G': 0,
                        'N': 0,
                        "default": 3
                    },
                    9: {
                        'A': 1,
                        'C': 0,
                        'T': 2,
                        'G': 0,
                        'N': 0,
                        "default": 3
                    },
                    10: {
                        'A': 1,
                        'C': 1,
                        'T': 1,
                        'G': 0,
                        'N': 0,
                        "default": 3
                    },
                    11: {
                        'A': 2,
                        'C': 1,
                        'T': 0,
                        'G': 0,
                        'N': 0,
                        "default": 3
                    },
                    12: {
                        'A': 1,
                        'C': 1,
                        'T': 0,
                        'G': 0,
                        'N': 1,
                        "default": 3
                    },
                },
                "total": {
                    0: {
                        'A': 2,
                        'C': 0,
                        'T': 2,
                        'G': 2,
                        'N': 0,
                        "default": 6
                    },
                    1: {
                        'A': 2,
                        'C': 0,
                        'T': 4,
                        'G': 0,
                        'N': 0,
                        "default": 6
                    },
                    2: {
                        'A': 2,
                        'C': 0,
                        'T': 4,
                        'G': 0,
                        'N': 0,
                        "default": 6
                    },
                    3: {
                        'A': 2,
                        'C': 2,
                        'T': 2,
                        'G': 0,
                        'N': 0,
                        "default": 6
                    },
                    4: {
                        'A': 4,
                        'C': 2,
                        'T': 0,
                        'G': 0,
                        'N': 0,
                        "default": 6
                    },
                    5: {
                        'A': 2,
                        'C': 2,
                        'T': 0,
                        'G': 2,
                        'N': 0,
                        "default": 6
                    },
                    6: {
                        'A': 4,
                        'C': 0,
                        'T': 0,
                        'G': 2,
                        'N': 0,
                        "default": 6
                    },
                    7: {
                        'A': 2,
                        'C': 0,
                        'T': 2,
                        'G': 2,
                        'N': 0,
                        "default": 6
                    },
                    8: {
                        'A': 2,
                        'C': 0,
                        'T': 4,
                        'G': 0,
                        'N': 0,
                        "default": 6
                    },
                    9: {
                        'A': 2,
                        'C': 0,
                        'T': 4,
                        'G': 0,
                        'N': 0,
                        "default": 6
                    },
                    10: {
                        'A': 2,
                        'C': 2,
                        'T': 2,
                        'G': 0,
                        'N': 0,
                        "default": 6
                    },
                    11: {
                        'A': 4,
                        'C': 2,
                        'T': 0,
                        'G': 0,
                        'N': 0,
                        "default": 6
                    },
                    12: {
                        'A': 2,
                        'C': 2,
                        'T': 0,
                        'G': 0,
                        'N': 2,
                        "default": 6
                    },
                },
            },
            "one": {
                "my_sample": {
                    0: {
                        'A': 1,
                        'C': 1,
                        'T': 1,
                        'G': 0,
                        'N': 0,
                        "default": 3
                    },
                    1: {
                        'A': 1,
                        'C': 1,
                        'T': 1,
                        'G': 0,
                        'N': 0,
                        "default": 3
                    },
                    2: {
                        'A': 1,
                        'C': 1,
                        'T': 1,
                        'G': 0,
                        'N': 0,
                        "default": 3
                    },
                    3: {
                        'A': 1,
                        'C': 1,
                        'T': 0,
                        'G': 0,
                        'N': 1,
                        "default": 3
                    },
                    4: {
                        'A': 1,
                        'C': 1,
                        'T': 0,
                        'G': 0,
                        'N': 1,
                        "default": 3
                    },
                    5: {
                        'A': 1,
                        'C': 1,
                        'T': 0,
                        'G': 0,
                        'N': 1,
                        "default": 3
                    },
                    6: {
                        'A': 1,
                        'C': 1,
                        'T': 1,
                        'G': 0,
                        'N': 0,
                        "default": 3
                    },
                },
                "my_other_sample": {
                    0: {
                        'A': 1,
                        'C': 0,
                        'T': 2,
                        'G': 0,
                        'N': 0,
                        "default": 3
                    },
                    1: {
                        'A': 2,
                        'C': 0,
                        'T': 1,
                        'G': 0,
                        'N': 0,
                        "default": 3
                    },
                    2: {
                        'A': 1,
                        'C': 0,
                        'T': 1,
                        'G': 0,
                        'N': 1,
                        "default": 3
                    },
                    3: {
                        'A': 1,
                        'C': 0,
                        'T': 1,
                        'G': 0,
                        'N': 1,
                        "default": 3
                    },
                    4: {
                        'A': 1,
                        'C': 0,
                        'T': 1,
                        'G': 0,
                        'N': 1,
                        "default": 3
                    },
                    5: {
                        'A': 1,
                        'C': 0,
                        'T': 2,
                        'G': 0,
                        'N': 0,
                        "default": 3
                    },
                    6: {
                        'A': 2,
                        'C': 0,
                        'T': 1,
                        'G': 0,
                        'N': 0,
                        "default": 3
                    },
                },
                "total": {
                    0: {
                        'A': 2,
                        'C': 1,
                        'T': 3,
                        'G': 0,
                        'N': 0,
                        "default": 6
                    },
                    1: {
                        'A': 3,
                        'C': 1,
                        'T': 2,
                        'G': 0,
                        'N': 0,
                        "default": 6
                    },
                    2: {
                        'A': 2,
                        'C': 1,
                        'T': 2,
                        'G': 0,
                        'N': 1,
                        "default": 6
                    },
                    3: {
                        'A': 2,
                        'C': 1,
                        'T': 1,
                        'G': 0,
                        'N': 2,
                        "default": 6
                    },
                    4: {
                        'A': 2,
                        'C': 1,
                        'T': 1,
                        'G': 0,
                        'N': 2,
                        "default": 6
                    },
                    5: {
                        'A': 2,
                        'C': 1,
                        'T': 2,
                        'G': 0,
                        'N': 1,
                        "default": 6
                    },
                    6: {
                        'A': 3,
                        'C': 1,
                        'T': 2,
                        'G': 0,
                        'N': 0,
                        "default": 6
                    },
                },
            },
            "three": {
                "my_sample": {
                    0: {
                        'A': 1,
                        'C': 0,
                        'T': 0,
                        'G': 0,
                        'N': 0,
                        "default": 1
                    },
                },
                "my_other_sample": {
                    0: {
                        'A': 0,
                        'C': 0,
                        'T': 0,
                        'G': 0,
                        'N': 1,
                        "default": 1
                    },
                },
                "total": {
                    0: {
                        'A': 1,
                        'C': 0,
                        'T': 0,
                        'G': 0,
                        'N': 1,
                        "default": 2
                    },
                }
            }
        }

        # 29 regions * 5 bases * (2+1) samples (two samples + total)
        cls.EXPECTED_NUM_REGION = 29
        cls.EXPECTED_REGION_COUNT = cls.EXPECTED_NUM_REGION * 5 * 3

        # Each region gets an additional counter
        cls.EXPECTED_COUNTERS_COUNT = cls.EXPECTED_REGION_COUNT + cls.EXPECTED_NUM_REGION * 3
Esempio n. 3
0
    def setUpClass(cls):
        cls.sequence_data = {
            "my_sample": {
                1: "GCGCGCGC..GCGCGC....GCGC......GC",
            },
            "my_other_sample": {
                1: "GC......GCGC....GCGCGC..GCGCGCGC",
            }
        }
        cls.g = Goldilocks(GCRatioStrategy(),
                           cls.sequence_data,
                           length=8,
                           stride=8)
        cls.GROUPS = ["my_sample", "my_other_sample", "total"]
        cls.TRACKS = ["default"]

        cls.EXPECTED_REGIONS = {
            1: {
                "my_sample": {
                    0: {
                        "default": 1.0
                    },
                    1: {
                        "default": 0.75
                    },
                    2: {
                        "default": 0.5
                    },
                    3: {
                        "default": 0.25
                    },
                },
                "my_other_sample": {
                    0: {
                        "default": 0.25
                    },
                    1: {
                        "default": 0.5
                    },
                    2: {
                        "default": 0.75
                    },
                    3: {
                        "default": 1.0
                    },
                },
                "total": {
                    0: {
                        "default": 0.625
                    },
                    1: {
                        "default": 0.625
                    },
                    2: {
                        "default": 0.625
                    },
                    3: {
                        "default": 0.625
                    },
                },
            },
        }

        cls.EXPECTED_NUM_REGION = 4
        cls.EXPECTED_REGION_COUNT = cls.EXPECTED_NUM_REGION * 3

        # Each region gets an additional default counter
        cls.EXPECTED_COUNTERS_COUNT = cls.EXPECTED_REGION_COUNT
Esempio n. 4
0
    def setUpClass(cls):
        cls.sequence_data = {
            "my_sample": {
                1: "..N..N..N",
                2: "A.A.AA..A",
                3: "NNN.NN...",
            },
            "my_other_sample": {
                1: "N..NN.NNN",
                2: "A..AA....",
                3: "AAA.AA...",
            }
        }
        cls.g = Goldilocks(NucleotideCounterStrategy(["A", "N"]),
                           cls.sequence_data,
                           length=3,
                           stride=3)
        cls.GROUPS = ["my_sample", "my_other_sample", "total"]
        cls.TRACKS = ["A", "N", "default"]

        cls.EXPECTED_REGIONS = {
            1: {
                "my_sample": {
                    0: {
                        'A': 0,
                        'N': 1,
                        "default": 1
                    },
                    1: {
                        'A': 0,
                        'N': 1,
                        "default": 1
                    },
                    2: {
                        'A': 0,
                        'N': 1,
                        "default": 1
                    },
                },
                "my_other_sample": {
                    0: {
                        'A': 0,
                        'N': 1,
                        "default": 1
                    },
                    1: {
                        'A': 0,
                        'N': 2,
                        "default": 2
                    },
                    2: {
                        'A': 0,
                        'N': 3,
                        "default": 3
                    },
                },
                "total": {
                    0: {
                        'A': 0,
                        'N': 2,
                        "default": 2
                    },
                    1: {
                        'A': 0,
                        'N': 3,
                        "default": 3
                    },
                    2: {
                        'A': 0,
                        'N': 4,
                        "default": 4
                    },
                },
            },
            2: {
                "my_sample": {
                    0: {
                        'A': 2,
                        'N': 0,
                        "default": 2
                    },
                    1: {
                        'A': 2,
                        'N': 0,
                        "default": 2
                    },
                    2: {
                        'A': 1,
                        'N': 0,
                        "default": 1
                    },
                },
                "my_other_sample": {
                    0: {
                        'A': 1,
                        'N': 0,
                        "default": 1
                    },
                    1: {
                        'A': 2,
                        'N': 0,
                        "default": 2
                    },
                    2: {
                        'A': 0,
                        'N': 0,
                        "default": 0
                    },
                },
                "total": {
                    0: {
                        'A': 3,
                        'N': 0,
                        "default": 3
                    },
                    1: {
                        'A': 4,
                        'N': 0,
                        "default": 4
                    },
                    2: {
                        'A': 1,
                        'N': 0,
                        "default": 1
                    },
                },
            },
            3: {
                "my_sample": {
                    0: {
                        'A': 0,
                        'N': 3,
                        "default": 3
                    },
                    1: {
                        'A': 0,
                        'N': 2,
                        "default": 2
                    },
                    2: {
                        'A': 0,
                        'N': 0,
                        "default": 0
                    },
                },
                "my_other_sample": {
                    0: {
                        'A': 3,
                        'N': 0,
                        "default": 3
                    },
                    1: {
                        'A': 2,
                        'N': 0,
                        "default": 2
                    },
                    2: {
                        'A': 0,
                        'N': 0,
                        "default": 0
                    },
                },
                "total": {
                    0: {
                        'A': 3,
                        'N': 3,
                        "default": 6
                    },
                    1: {
                        'A': 2,
                        'N': 2,
                        "default": 4
                    },
                    2: {
                        'A': 0,
                        'N': 0,
                        "default": 0
                    },
                },
            }
        }

        # 9 regions * 2 bases * (2+1) samples (two samples + total)
        cls.EXPECTED_NUM_REGION = 9
        cls.EXPECTED_REGION_COUNT = cls.EXPECTED_NUM_REGION * 2 * 3

        # Each region gets an additional default counter
        cls.EXPECTED_COUNTERS_COUNT = cls.EXPECTED_REGION_COUNT + cls.EXPECTED_NUM_REGION * 3
Esempio n. 5
0
from goldilocks.goldilocks import Goldilocks
from goldilocks.strategies import VariantCounterStrategy, GCRatioStrategy, NucleotideCounterStrategy, KMerCounterStrategy

#TODO Methods may take a list of locations or may need to actually analyze
#     a proper genomic sequence
"""Execute Goldilocks search."""
data = {"ONE": {1: [1, 2, 5]}}
g = Goldilocks(VariantCounterStrategy(),
               data,
               is_seq=False,
               stride=1,
               length=3)

candidates = g._filter("max", actual_distance=1)

print candidates

#########################################
data = {"ONE": {1: "CCCGGGAGATTT"}}
g = Goldilocks(GCRatioStrategy(), data, 3, 1)

candidates = g._filter("max", actual_distance=1)

print candidates

candidates.export_fasta(["ONE"])

#########################################
data = {"ONE": {1: "AAACCCGGGCCCGGGAGAAAAAAA"}}
g = Goldilocks(KMerCounterStrategy(["AAA", "CCC"]), data, 6, 1)