def test_serialization(): original = VariantCollection([ Variant( 1, start=10, ref="AA", alt="AAT", ensembl=77), Variant(10, start=15, ref="A", alt="G"), Variant(20, start=150, ref="", alt="G"), ]) original.metadata[original[0]] = {"a": "b"} original.metadata[original[2]] = {"bar": 2} # This causes the variants' ensembl objects to make a SQL connection, # which makes the ensembl object non-serializable. By calling this # method, we are checking that we don't attempt to directly serialize # the ensembl object. original.effects() # Test pickling. serialized = pickle.dumps(original) reconstituted = pickle.loads(serialized) eq_(original, reconstituted) eq_(reconstituted[0], original[0]) eq_(reconstituted.metadata[original[0]], original.metadata[original[0]]) # Test json. serialized = original.to_json() reconstituted = VariantCollection.from_json(serialized) eq_(original, reconstituted) eq_(reconstituted[0], original[0]) eq_(reconstituted.metadata[original[0]], original.metadata[original[0]])
def test_variant_collection_serialization(): variant_list = [ Variant(1, start=10, ref="AA", alt="AAT"), Variant(10, start=15, ref="A", alt="G"), Variant(20, start=150, ref="", alt="G"), ] original = VariantCollection( variant_list, source_to_metadata_dict={ "test_data": {variant: { "a": "b", "bar": 2 } for variant in variant_list} }) # This causes the variants' ensembl objects to make a SQL connection, # which makes the ensembl object non-serializable. By calling this # method, we are checking that we don't attempt to directly serialize # the ensembl object. original.effects() original_first_variant = original[0] original_metadata = original.metadata # Test pickling reconstructed = pickle.loads(pickle.dumps(original)) eq_(original, reconstructed) eq_(reconstructed[0], original_first_variant) eq_(reconstructed.metadata[original_first_variant], original_metadata[original_first_variant]) merged = original.intersection(original) merged_reconstructed = pickle.loads(pickle.dumps(merged)) eq_(merged, merged_reconstructed) # Test JSON serialization variants_from_json = VariantCollection.from_json(original.to_json()) eq_(original, variants_from_json) eq_(variants_from_json[0], original_first_variant) # pylint: disable=no-member eq_(variants_from_json.metadata[original_first_variant], original_metadata[original_first_variant])
def test_variant_collection_serialization(): variant_list = [ Variant( 1, start=10, ref="AA", alt="AAT"), Variant(10, start=15, ref="A", alt="G"), Variant(20, start=150, ref="", alt="G"), ] original = VariantCollection( variant_list, source_to_metadata_dict={ "test_data": {variant: {"a": "b", "bar": 2} for variant in variant_list}}) # This causes the variants' ensembl objects to make a SQL connection, # which makes the ensembl object non-serializable. By calling this # method, we are checking that we don't attempt to directly serialize # the ensembl object. original.effects() original_first_variant = original[0] original_metadata = original.metadata # Test pickling reconstructed = pickle.loads(pickle.dumps(original)) eq_(original, reconstructed) eq_(reconstructed[0], original_first_variant) eq_(reconstructed.metadata[original_first_variant], original_metadata[original_first_variant]) merged = original.intersection(original) merged_reconstructed = pickle.loads(pickle.dumps(merged)) eq_(merged, merged_reconstructed) # Test JSON serialization variants_from_json = VariantCollection.from_json(original.to_json()) eq_(original, variants_from_json) eq_(variants_from_json[0], original_first_variant) # pylint: disable=no-member eq_(variants_from_json.metadata[original_first_variant], original_metadata[original_first_variant])
]) gene_fpkm_dict = { "ENSG00000165841": 10.0, "ENSG00000204007": 20.0, "ENSG00000276490": 30.0, } transcript_fpkm_dict = { "ENST00000371321": 10.0, "ENST00000464755": 20.0, "ENST00000371763": 30.0, "ENST00000613244": 40.0, } effects = variants.effects() empty_variants = VariantCollection([]) empty_effects = empty_variants.effects() def test_filter_variants(): eq_(variants.filter(lambda _: True), variants) eq_(variants.filter(lambda _: False), empty_variants) def test_filter_effects(): eq_(effects.filter(lambda _: True), effects) eq_(effects.filter(lambda _: False), empty_effects)
]) gene_fpkm_dict = { "ENSG00000165841": 10.0, "ENSG00000204007": 20.0, "ENSG00000276490": 30.0, } transcript_fpkm_dict = { "ENST00000371321": 10.0, "ENST00000464755": 20.0, "ENST00000371763": 30.0, "ENST00000613244": 40.0, } effects = variants.effects() empty_variants = VariantCollection([]) empty_effects = empty_variants.effects() def test_filter_variants(): eq_(variants.filter(lambda _: True), variants) eq_(variants.filter(lambda _: False), empty_variants) def test_filter_effects(): eq_(effects.filter(lambda _: True), effects) eq_(effects.filter(lambda _: False), empty_effects) def test_filter_variants_by_gene_expression(): eq_(variants.filter_by_gene_expression( gene_fpkm_dict, 0.0), variants)