# Porting fragment code Python to Julia

**URL:** <https://discourse.julialang.org/t/porting-fragment-code-python-to-julia/85099>\
**Category:** General Usage\
**Created:** [August 1, 2022, 11:34am UTC](https://discourse.julialang.org/t/porting-fragment-code-python-to-julia/85099 "2022-08-01T11:34:39Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![Sergey\_Novak](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sergey_novak/32/37716_2.png) [@Sergey\_Novak](https://discourse.julialang.org/u/Sergey_Novak)\
**Post date:** [August 1, 2022, 11:34am UTC](https://discourse.julialang.org/t/porting-fragment-code-python-to-julia/85099/1 "2022-08-01T11:34:39Z")

</div>

```julia
selection = np.linspace(0,3,5000000)

eps = 0.9

# spikes numpy 1d array

ee_counter = np.array( [( ( spikes >= selection[j] ) & ( spikes < selection[j]+eps ) ).sum() for j in range( len( selection ) ) ] )

pdf = ee_counter / spikes.sum()

```

I have this fragment code on python. How can i porting this code on Julia with minimal number of cycles and rows of codes

---

<div class="post-metadata">

**Author:** ![DNF](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dnf/32/10191_2.png) [@DNF](https://discourse.julialang.org/u/DNF)\
**Post date:** [August 1, 2022, 12:00pm UTC](https://discourse.julialang.org/t/porting-fragment-code-python-to-julia/85099/2 "2022-08-01T12:00:01Z")

</div>

Can you please copy and paste the code as text instead of a screen shot? Also, remember to put it inside triple backticks.

---

<div class="post-metadata">

**Author:** ![Seif\_Shebl](https://avatars.discourse-cdn.com/v4/letter/s/eada6e/32.png) [@Seif\_Shebl](https://discourse.julialang.org/u/Seif_Shebl)\
**Post date:** [August 1, 2022, 12:00pm UTC](https://discourse.julialang.org/t/porting-fragment-code-python-to-julia/85099/3 "2022-08-01T12:00:53Z")

</div>

Please post editable code instead of images. Anyway, this might be a direct translation:

```julia
selection = range(0,3,5000000)
ϵ = 0.9

ee_counter = [sum(i->s<=i<s+ϵ, spikes) for s in selection]
pdf = ee_counter ./ sum(spikes)

```

---

<div class="post-metadata">

**Author:** ![Sergey\_Novak](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sergey_novak/32/37716_2.png) [@Sergey\_Novak](https://discourse.julialang.org/u/Sergey_Novak)\
**Post date:** [August 1, 2022, 12:08pm UTC](https://discourse.julialang.org/t/porting-fragment-code-python-to-julia/85099/4 "2022-08-01T12:08:33Z")

</div>

I edited, sorry.

---

<div class="post-metadata">

**Author:** ![Sergey\_Novak](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sergey_novak/32/37716_2.png) [@Sergey\_Novak](https://discourse.julialang.org/u/Sergey_Novak)\
**Post date:** [August 1, 2022, 12:12pm UTC](https://discourse.julialang.org/t/porting-fragment-code-python-to-julia/85099/6 "2022-08-01T12:12:59Z")

</div>

I edited topic. I tried this and has next error

 ![image](https://global.discourse-cdn.com/julialang/original/3X/1/7/17c41657cb28edc62d8bcc742a4067b76a90ba93.png)

Spikes is vector  
 ![image](https://global.discourse-cdn.com/julialang/original/3X/4/5/45fcbbcdf3fb13a38e174350db0311e31c6109a0.png)

---

<div class="post-metadata">

**Author:** ![DNF](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dnf/32/10191_2.png) [@DNF](https://discourse.julialang.org/u/DNF)\
**Post date:** [August 1, 2022, 12:13pm UTC](https://discourse.julialang.org/t/porting-fragment-code-python-to-julia/85099/7 "2022-08-01T12:13:46Z")

</div>

> [@Seif\_Shebl](#):
>
> `sum`

`sum` and `count` do the same thing here, but using `count` makes more sense, imho, and is more likely to discover bugs.

---

<div class="post-metadata">

**Author:** ![Seif\_Shebl](https://avatars.discourse-cdn.com/v4/letter/s/eada6e/32.png) [@Seif\_Shebl](https://discourse.julialang.org/u/Seif_Shebl)\
**Post date:** [August 1, 2022, 12:25pm UTC](https://discourse.julialang.org/t/porting-fragment-code-python-to-julia/85099/8 "2022-08-01T12:25:36Z")

</div>

True, but sometimes I prefer `sum` as it allows simd optimizations more than the other alternatives.

---

<div class="post-metadata">

**Author:** ![Sergey\_Novak](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sergey_novak/32/37716_2.png) [@Sergey\_Novak](https://discourse.julialang.org/u/Sergey_Novak)\
**Post date:** [August 1, 2022, 12:33pm UTC](https://discourse.julialang.org/t/porting-fragment-code-python-to-julia/85099/9 "2022-08-01T12:33:53Z")

</div>

This helped, but the calculation takes a long time. This code on python ran for 1 minute. Length of spikes 3098

After 5 minutes of calculations, I aborted ran code

---

<div class="post-metadata">

**Author:** ![DNF](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dnf/32/10191_2.png) [@DNF](https://discourse.julialang.org/u/DNF)\
**Post date:** [August 1, 2022, 12:37pm UTC](https://discourse.julialang.org/t/porting-fragment-code-python-to-julia/85099/10 "2022-08-01T12:37:14Z")

</div>

You must put the code in a function, and make sure to avoid global variables.

---

<div class="post-metadata">

**Author:** ![DNF](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dnf/32/10191_2.png) [@DNF](https://discourse.julialang.org/u/DNF)\
**Post date:** [August 1, 2022, 12:40pm UTC](https://discourse.julialang.org/t/porting-fragment-code-python-to-julia/85099/11 "2022-08-01T12:40:44Z")

</div>

The code you provided is still not self-contained, it isn’t a ‘minimal working example’ or MWE. Can you provide some example data for `spikes`?

Also, when developing and testing code, I suggest that you make smaller data sets. Waiting for minutes just to see if your code works seems like a waste of time.

---

<div class="post-metadata">

**Author:** ![Seif\_Shebl](https://avatars.discourse-cdn.com/v4/letter/s/eada6e/32.png) [@Seif\_Shebl](https://discourse.julialang.org/u/Seif_Shebl)\
**Post date:** [August 1, 2022, 12:42pm UTC](https://discourse.julialang.org/t/porting-fragment-code-python-to-julia/85099/12 "2022-08-01T12:42:34Z")

</div>

It takes 3s in Julia:

```julia
function sum_spikes(spikes)
    ϵ = 0.9
    ee_counter = [sum(i->s<=i<s+ϵ, spikes) for s in range(0,3,5000000)]
    pdf = ee_counter ./ sum(spikes)
end

spikes = randn(3098)
@btime sum_spikes($spikes) # 3.237 s (4 allocations: 76.29 MiB)

```

---

<div class="post-metadata">

**Author:** ![Sergey\_Novak](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sergey_novak/32/37716_2.png) [@Sergey\_Novak](https://discourse.julialang.org/u/Sergey_Novak)\
**Post date:** [August 1, 2022, 12:47pm UTC](https://discourse.julialang.org/t/porting-fragment-code-python-to-julia/85099/13 "2022-08-01T12:47:41Z")

</div>

It helped, thank you
