same_subject_snp_plowers = [] same_subject_snp_puppers = [] same_subject_gene_plowers = [] same_subject_gene_puppers = [] for sample_pair_idx in xrange(0, len(same_subject_snp_idxs[0])): i = same_subject_snp_idxs[0][sample_pair_idx] j = same_subject_snp_idxs[1][sample_pair_idx] plower, pupper = stats_utils.calculate_poisson_rate_interval( snp_difference_matrix[i, j], snp_opportunity_matrix[i, j], alpha) same_subject_snp_plowers.append(plower) same_subject_snp_puppers.append(pupper) snp_differences = diversity_utils.calculate_snp_differences_between( i, j, allele_counts_map, passed_sites_map, min_change=min_change) i = same_subject_gene_idxs[0][sample_pair_idx] j = same_subject_gene_idxs[1][sample_pair_idx] gene_differences = gene_diversity_utils.calculate_gene_differences_between( i, j, gene_depth_matrix, marker_coverages, min_log2_fold_change=4) plower, pupper = stats_utils.calculate_poisson_rate_interval( gene_difference_matrix[i, j], gene_opportunity_matrix[i, j]) same_subject_gene_plowers.append(plower) same_subject_gene_puppers.append(pupper) if (len(snp_differences) > 0) or (len(gene_differences) > 0): # Print them out! print "Changes between pair", sample_pair_idx
i = same_subject_idxs[0][sample_pair_idx] j = same_subject_idxs[1][sample_pair_idx] sample_i = snp_samples[i] sample_j = snp_samples[j] avg_depth_i = sample_coverage_map[sample_i] avg_depth_j = sample_coverage_map[sample_j] chunk_tracked_private_snps = diversity_utils.calculate_tracked_private_snvs( i, j, allele_counts_map, passed_sites_map, avg_depth_i, avg_depth_j, private_snv_map) chunk_snp_changes = diversity_utils.calculate_snp_differences_between( i, j, allele_counts_map, passed_sites_map, avg_depth_i, avg_depth_j) sample_pair = (sample_i, sample_j) if sample_pair not in snp_changes: snp_changes[sample_pair] = [] gene_changes[sample_pair] = [] snp_opportunities[sample_pair] = 0 gene_opportunities[sample_pair] = 0 snp_perrs[sample_pair] = -1 gene_perrs[sample_pair] = -1 tracked_private_snps[sample_pair] = [] tracked_private_snp_opportunities[sample_pair] = 0 tracked_private_snp_perrs[sample_pair] = -1
# Calculate fixation matrix sys.stderr.write("Calculating joint freqs...\n") for pair_idx in xrange(0,len(desired_sample_pairs)): initial_sample_idx, final_sample_idx = desired_sample_pair_idxs[pair_idx] chunk_gene_names, chunk_chromosomes, chunk_positions, chunk_initial_freqs, chunk_final_freqs, chunk_initial_depths, chunk_final_depths = diversity_utils.calculate_temporal_sample_freqs(allele_counts_map, passed_sites_map, initial_sample_idx, final_sample_idx) # joint_passed_sites = (chunk_initial_depths>0)*(chunk_final_depths>0) gene_names[pair_idx].extend(chunk_gene_names[joint_passed_sites]) initial_freqs[pair_idx].extend(chunk_initial_freqs[joint_passed_sites]) initial_depths[pair_idx].extend(chunk_initial_depths[joint_passed_sites]) final_freqs[pair_idx].extend(chunk_final_freqs[joint_passed_sites]) snp_changes[pair_idx].extend(diversity_utils.calculate_snp_differences_between(initial_sample_idx, final_sample_idx, allele_counts_map, passed_sites_map, lower_threshold=snv_lower_threshold, upper_threshold=snv_upper_threshold)) sys.stderr.write("Done!\n") for pair_idx in xrange(0,len(desired_sample_pairs)): gene_names[pair_idx] = numpy.array(gene_names[pair_idx]) initial_freqs[pair_idx] = numpy.array(initial_freqs[pair_idx]) final_freqs[pair_idx] = numpy.array(final_freqs[pair_idx]) sys.stderr.write("Done!\n") highlighted_gene_colors = {} highlighted_gene_depths = {} # Plot joint SFS!