Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Python: when c2 <= c1 output is not flipped back #119

Open
lldelisle opened this issue Oct 31, 2022 · 0 comments
Open

Python: when c2 <= c1 output is not flipped back #119

lldelisle opened this issue Oct 31, 2022 · 0 comments

Comments

@lldelisle
Copy link

Describe the bug
When fetching the contacts between 'chr1' 'chrM', it gives the same result as 'chrM' 'chr1' without any notice to the user.

To Reproduce

import numpy as np
import hicstraw
hic_file =  'ENCFF080DPJ.hic'
chrom1 = 'chr1'
chrom2 = 'chr2'
result = hicstraw.straw('observed', 'NONE', hic_file, chrom1, chrom2, 'BP', 1000000)
for i in range(10):
     print("{0}\t{1}\t{2}".format(result[i].binX, result[i].binY, result[i].counts))
result = hicstraw.straw('observed', 'NONE', hic_file, chrom2, chrom1, 'BP', 1000000)
for i in range(10):
     print("{0}\t{1}\t{2}".format(result[i].binX, result[i].binY, result[i].counts))

Expected behavior
I would expect to have the same result but with column 1 and 2 shifted.
I got exactly the same result.

The problem is that the chromosomes are flipped here:

} else { // flip
this->c1 = c02;
this->c2 = c01;
this->numBins1 = static_cast<int32_t>(chrom2.length / resolution);
this->numBins2 = static_cast<int32_t>(chrom1.length / resolution);
}
but this is information is not stored.
Therefore, the results are not flipped back in:
if (!isnan(c) && !isinf(c)){
contactRecord record = contactRecord();
record.binX = static_cast<int32_t>(x);
record.binY = static_cast<int32_t>(y);
record.counts = c;
records.push_back(record);
}

and the matrix is not transposed in:
return py::array(py::cast(finalMatrix));

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant