biogo / graphics

biogo genomic graphics repository
9 stars 3 forks source link

Graph partitionning #4

Closed HanisLouiza closed 8 years ago

HanisLouiza commented 8 years ago

Hey, I'm actually checking for a graph partitioning function , i would like to know if it's implemented in go graph package! Thanks for answers

kortschak commented 8 years ago

biogo/graphics is not a package for graph manipulation, it does graphical rendering of certain types of genomics information.

If you want graph handling, look at https://github.com/gonum/graph. There are graph segmentation routines there in the topo and communities packages.

HanisLouiza commented 8 years ago

Hey, I have already looking there i didnt find.i think it is not yet implémenter

Envoyé depuis mon Sony Xperia Z3 Compact d'Orange

---- Dan Kortschak a écrit ----

biogo/graphics is not a package for graph manipulation, it does graphical rendering of certain types of genomics information.

If you want graph handling, look at https://github.com/gonum/graph. There are graph segmentation routines there in the topo and communities packages.


You are receiving this because you authored the thread. Reply to this email directly or view it on GitHub: https://github.com/biogo/graphics/issues/4#issuecomment-214567424

kortschak commented 8 years ago

I guess it depends what kind of segmentation you want. There is Louvain community detection in communities and simple connected component and Tarjan's strongly connection components analysis in topo. What are you actually asking for (gonum-dev would be a better place than here for this discussion).

HanisLouiza commented 8 years ago

Im asking for a graph partitionning fonction in Go, i need it in a biological field.

Envoyé depuis mon Sony Xperia Z3 Compact d'Orange

---- Dan Kortschak a écrit ----

I guess it depends what kind of segmentation you want. There is Louvain community detection in communities and simple connected component and Tarjan's strongly connection components analysis in topo. What are you actually asking for (gonum-dev would be a better place than here for this discussion).


You are receiving this because you authored the thread. Reply to this email directly or view it on GitHub: https://github.com/biogo/graphics/issues/4#issuecomment-214569265

kortschak commented 8 years ago

There are many ways to partition graphs, so without knowing which is important for you I can't answer. The fact that the problem is in the biological domain is not really relevant.

I suspect (without any real information to base this on) that you want community detection, which is implemented in community.

Please take this discussion to gonum-dev, this issue tracker is for biogo/graph.

HanisLouiza commented 8 years ago

In field of Hpc( High performance and computing), the way to partitionate a graph in a lot of process for accelerating the computing. Im asking if go already do that. If it is not so clear now i Will send u an other mail tomorrow because here is 2.30 am sorry

Envoyé depuis mon Sony Xperia Z3 Compact d'Orange

---- Dan Kortschak a écrit ----

There are many ways to partition graphs, so without knowing which is important for you I can't answer. The fact that the problem is in the biological domain is not really relevant.

I suspect (without any real information to base this on) that you want community detection, which is implemented in community.

Please take this discussion to gonum-dev, this issue tracker is for biogo/graph.


You are receiving this because you authored the thread. Reply to this email directly or view it on GitHub: https://github.com/biogo/graphics/issues/4#issuecomment-214570722

kortschak commented 8 years ago

Ah, OK. Yes, that is not something we have, but it certainly is something that is worthwhile. Would you file an issue for adding something along those lines at https://github.com/gonum/graph/issues/new and also start a discussion at https://groups.google.com/forum/#!forum/gonum-dev - the problem is not trivial and AFAIK reasonably context dependent, so it would be good to have input from others there. The two obvious solutions are to wrap METIS or to reimplement some subportion of METIS from the paper (for licensing reasons) with a view to a complete implementation. I don't have time to do either of those, but it would be a good project.

HanisLouiza commented 8 years ago

Hey Dan,

I'm actually trying to plot a graphic curves using the package plotter So in my code i have the following function:

func processFile(ArrayPos[] int) (local_distrib plotter.XYs) {

local_distrib = make(plotter.XYs, MaxGeneLength) 
for i:=0;i<len(ArrayPos);i++ {
        delta_i := TabPos[i]
        //limit gene size to 3000
        if delta_i < MaxGeneLength {
            local_distrib[delta_i].X = float64(delta_i)
            local_distrib[delta_i].Y++
        }
}
return local_distrib

}

This work perfectely since ArrayPos is an array of integers, now if i try to use a float64 array it doesn't work because we can't index the array by float64.

So i get the idea to work with maps , but unfortunatly the functions of the package plotter work only with type plotter.XYS and not with map[float64] plotter.XYS

Any help would be appreciated :)

Thanks

Date: Mon, 25 Apr 2016 18:42:47 -0700 From: notifications@github.com To: graphics@noreply.github.com CC: louiz_m@hotmail.fr; author@noreply.github.com Subject: Re: [biogo/graphics] Graph partitionning (#4)

Ah, OK. Yes, that is not something we have, but it certainly is something that is worthwhile. Would you file an issue for adding something along those lines at https://github.com/gonum/graph/issues/new and also start a discussion at https://groups.google.com/forum/#!forum/gonum-dev - the problem is not trivial and AFAIK reasonably context dependent, so it would be good to have input from others there. The two obvious solutions are to wrap METIS or to reimplement some subportion of METIS from the paper (for licensing reasons) with a view to a complete implementation. I don't have time to do either of those, but it would be a good project.

— You are receiving this because you authored the thread. Reply to this email directly or view it on GitHub

kortschak commented 8 years ago

This is only tangentially related to biogo/graphics, so it would be better if you posted this either as a gonum/plot issue or preferably a thread to gonum-dev.

However, yes, that's expected, Go does not index into slices or arrays with non-integer types (and you wouldn't want to. A blunt approach is to type convert, delta_i := int(TabPos[i]), though it looks to me like you're making a histogram, so plotter.Histogram is probably what you want (or some variation on that).

HanisLouiza commented 8 years ago

But if i convert i will loose the precision, and it doesn't mean anything since i have values between 0 and 1 so 0<TabPos[i]<1 So if i convert i will get only 0 and 1 as values in TabPos. Maybe there are another package in galang that can do that. I have to search more for that

Envoyé depuis mon Sony Xperia Z3 Compact d'Orange

---- Dan Kortschak a écrit ----

This is only tangentially related to biogo/graphics, so it would be better if you posted this either as a gonum/plot issue or preferably a thread to gonum-dev.

However, yes, that's expected, Go does not index into slices or arrays with non-integer types (and you wouldn't want to. A blunt approach is to type convert, delta_i := int(TabPos[i]), though it looks to me like you're making a histogram, so plotter.Histogram is probably what you want (or some variation on that).


You are receiving this because you authored the thread. Reply to this email directly or view it on GitHub: https://github.com/biogo/graphics/issues/4#issuecomment-222262626

kortschak commented 8 years ago

Please take this to gonum-dev, this is not the right place for it.

Before I lock this:

Yes, you would lose precision, so perhaps you need to consider exactly what indexing on a float might actually mean if it were possible (for example if a map[float64]float64 were orderable and accepted by the API). Adjacent float64 values would count as separate bins. This is not what you want. You need to bin your values into histogram buckets. This, if you use the approach I suggested would entail scaling the float64 values so that they are spread over a reasonable number of integrally-indexed bins. This is essentially what the histogram plotter does. The alternative is to write a kernel density estimation function that populates a plotter.XYs.