text:
Make Enzyme dispatches compatible with closures

In the Enzyme setups https://github.com/gdalle/DifferentiationInterface.jl/blob/main/DifferentiationInterface/ext/DifferentiationInterfaceEnzymeExt/forward_onearg.jl#L13 it looks like you're using the raw f. This omits the handling of any memory associated with caches, particularly within closures. To fix this is rather straightforward though, you can just copy SciMLSensitivity. You just do a duplicated on the f https://github.com/SciML/SciMLSensitivity.jl/blob/master/src/derivative_wrappers.jl#L697 where the duplicated part is just an f_cache = Enzyme.make_zero(f) copy. To make this safe for repeated application, you need to add a call Enzyme.make_zero!(f_cache) so its duplicated values are always zero if you reuse it.

@wsmoses said this was probably a bad idea due to performance degradation, leaving the PR closed for now unless there are other solutions?

Well the other option is incorrectness or just erroring if caches are used, I don't see how that's better?

I mean honestly this is where activity info/multi arg is critical.
if you have a closure (which is is required by DI atm), then you'll end up differentiating every var in the original fn. So if you have something like
NN = complex neural network
DI.gradient(AutoEnzyme(), x->NN() + x, 3.1)

you'll now be forced to AD the entire neural network as opposed to the one scalar. In this case leading an O(1) derivative being unboundedly worse. Without the ability to handle multiple args/activity, DI would be forced to AD through the whole NN if the closure were marked active.

Frankly, this is where I'd say it makes sense for DI to figure out how it and/or AD.jl wants to handle multiple args, use direct Enzyme autodiff calls which don't have such limitations for now, revisiting this question later.

I'm slowly getting a clearer picture of how I can pull it off. But the initial plan was for AbstractDifferentiation to handle multiple arguments, so I wanna wait for @mohamed82008's approval before I dive into it within DI.

Even if DI handles multiple arguments though, you'd still want to duplicate the function because if you don't handle any enclosed caches correctly you can get incorrect derivatives, so I don't see why this would wait. Indeed the downside is that you always have to assume that all caches can be differentiated, and this is then a good reason to allow for multiple arguments so you can Const some, but my point is that if we want DI to actually be correct then we do need to enforce the differentiation of enclosed variables carries forward their derivative values.

It at least needs to be an option, AutoEnzyme(duplicate_function = Val(true)) by default, but can be Val(false) as an optimization if someone wants to forcibly Const all enclosed values (at their own risk). If someone has no enclosed values there's no overhead, and if they are non-const then the default is correct, so it's just a performance optimization so I'd leave that as a user toggle. Adding that to ADTypes would be good for SciMLSensitivity as well as we'd do the same in implementation.

My point about support for multiple arguments and/or activity, is that they would potentially remedy the performance issue in my example.
if DI supported specifying the function as const/duplicated [aka activity] the problem is trivially remedied.
In the alternative, if multiple arguments were supported [perhaps with a Const input], you could pass the NN and/or closure data in it and again avoid the issue.

I don't disagree with that. My point though is that even if DI makes all of the inputs arguments, the default activity on a function would likely be const unless the documentation showed people how to do this. I don't think that's the right default for DI since then many common Julia functions would give wrong values. You'd basically have to say, don't pass f, the interface is Duplicated(f, make_zero(f)). My point is that shouldn't be left to the user of DI who should expect that the simple thing is correct, and if DI.gradient(f, x) is wrong because they need to DI.gradient(Duplicated(f, make_zero(f)), x) otherwise they drop derivatives on enclosed caches, I would think something has gone wrong with the interface. My suggestion is to just via AutoEnzyme make the assumption that's required, which is still optimal in the case that there are no caches, but yes is effectively a safety copy done to make caching functions work out of the box, but with an option to turn it off at their own risk.
But also, DI shouldn't wait until multi-arg activities are supported before doing any of this. Otherwise it will have issues with user-written closures until multi-arg activities, which arguably is a pretty nasty bug that requires a hotfix. It does mean that yes constants enclosed in functions will slow things down a bit because you'll differentiate more than you need to, but it also means that enclosed cache variables will correctly propagate derivatives which is more important to a high level interface.
I didn't test this exactly, but I would think an MWE would be as simple as:
a = [1.0]
function f(x)
  a[1] = 1.0
  a[1] += x
  a[1]^2
end

would give an incorrect derivative with DI without this, which to me is a red flag that needs to be fixed. And then we can argue when the multi-arg form comes whether the user needs to enable the fix or whether the fix comes enabled by default, but I don't think we should wait to make this work.
And to be clear, I don't think Enzyme's interface should do this, but Enzyme is a much lower level utility targeting a different level of user.

I tend to agree with Chris on this one. Until I add activities or multiple arguments, better safe and slow than fast and wrong.

I see what you're saying, but I still feel like this is an edge case that is more likely to cause problems for users than fixes.
In particular, the only sort of case where this is needed is where you read and write to a captured buffer. With the exception of preallocation tools code, this is immensely rare in Julia functions you want to AD [largely due to non-mutation, especially non-mutation of closures].
However, by marking the entire closure as duplicated, you now need enzyme to successfully differentiate all closure operations, including those where this read and write to capured buffer doesn't apply. If there's a function currently unhandled by Enzyme you'll error with the duplicated fn, whereas marking it const would succeed.
To be clear, I see the arguments for both sides of this, but I'm wondering what is the better trade off to make.

Honestly, given that I'm doubtful of much code outside of preallocationtools that would have this apply, I wonder if it make sense to just add a preallocationtools mode to DI [which may be separately useful in its own right]

In particular, the only sort of case where this is needed is where you read and write to a captured buffer. With the exception of preallocation tools code, this is immensely rare in Julia functions you want to AD [largely due to non-mutation, especially non-mutation of closures].

That's not really the case though. It's not rare. It's actually very common and explicitly mentioned in the documentation of many packages and tutorials that one should write non-allocating code. Here is one of many examples of that:
https://docs.sciml.ai/DiffEqDocs/stable/tutorials/faster_ode_example/#Example-Accelerating-Linear-Algebra-PDE-Semi-Discretization
Such functions are made to be fully mutating and non-allocating, and also fully type-stable, and so perfectly within the realm of Enzyme. And these functions will not error but give the wrong answer if the closure is not duplicated, which is not the nicest behavior.
I think you're thinking specifically about Flux using functors where it's effectively allocating type-unstable functional code carrying around parameters in its objects which may not need to be differentiated. Flux is the weird one, not everything else. I actually can't think of another library that is engineered similarly to Flux, while most scientific models, PDE solvers, etc. are engineered similarly to the example I have up there where pre-allocated buffers are either passed around or enclosed and then used for getting a allocation-free runtime. And in any case, I'd argue it should be the Flux example to opt-out of duplicating the closure as a performance improvement, not the scientific models, PDE solvers, etc. opting into duplicating the function in order to ensure they get the right gradient value on repeated applications with caches.

Hm, I’m not seeing the read and write to a captured buffer. It’s reading or
writing to an argument for sure which isn’t impacted here.
Mind pasting the example you’re thinking of?
On Tue, Jul 2, 2024 at 3:41 AM Christopher Rackauckas <
@.***> wrote:

In particular, the only sort of case where this is needed is where you
read and write to a captured buffer. With the exception of preallocation
tools code, this is immensely rare in Julia functions you want to AD
[largely due to non-mutation, especially non-mutation of closures].
That's not really the case though. It's not rare. It's actually very
common and explicitly mentioned in the documentation of many packages and
tutorials that one should write non-allocating code. Here is one of many
examples of that:
https://docs.sciml.ai/DiffEqDocs/stable/tutorials/faster_ode_example/#Example-Accelerating-Linear-Algebra-PDE-Semi-Discretization
Such functions are made to be fully mutating and non-allocating, and also
fully type-stable, and so perfectly within the realm of Enzyme. And these
functions will not error but give the wrong answer if the closure is not
duplicated, which is not the nicest behavior.
I think you're thinking specifically about Flux using functors where it's
effectively allocating type-unstable functional code carrying around
parameters in its objects which may not need to be differentiated. Flux is
the weird one, not everything else. I actually can't think of another
library that is engineered similarly to Flux, while most scientific models,
PDE solvers, etc. are engineered similarly to the example I have up there
where pre-allocated buffers are either passed around or enclosed and then
used for getting a allocation-free runtime. And in any case, I'd argue it
should be the Flux example to opt-out of duplicating the closure as a
performance improvement, not the scientific models, PDE solvers, etc.
opting into duplicating the function in order to ensure they get the right
gradient value on repeated applications with caches.
—
Reply to this email directly, view it on GitHub
https://github.com/gdalle/DifferentiationInterface.jl/issues/339#issuecomment-2201719700,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAJTUXBEWU4YGUU54PFS76DZKIHMRAVCNFSM6AAAAABJ7W6EQKVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEMBRG4YTSNZQGA
.
You are receiving this because you were mentioned.Message ID:
@.***>

Ayu = zeros(N, N)
uAx = zeros(N, N)
Du = zeros(N, N)
Ayv = zeros(N, N)
vAx = zeros(N, N)
Dv = zeros(N, N)
function gm3!(dr, r, p, t)
    a, α, ubar, β, D1, D2 = p
    u = @view r[:, :, 1]
    v = @view r[:, :, 2]
    du = @view dr[:, :, 1]
    dv = @view dr[:, :, 2]
    mul!(Ayu, Ay, u)
    mul!(uAx, u, Ax)
    mul!(Ayv, Ay, v)
    mul!(vAx, v, Ax)
    @. Du = D1 * (Ayu + uAx)
    @. Dv = D2 * (Ayv + vAx)
    @. du = Du + a * u * u ./ v + ubar - α * u
    @. dv = Dv + a * u * u - β * v
end
prob = ODEProblem(gm3!, r0, (0.0, 0.1), p)
@btime solve(prob, Tsit5());

Okay yeah that does have it.
If it is indeed common, I think the scales weigh towards the duplicated
then.
However I will say that globals/captured vars like this are likely poor for
performance in contrast to being passed as an argument and separately these
examples (and perhaps a perf guide) should be updated
On Tue, Jul 2, 2024 at 10:17 AM Christopher Rackauckas <
@.***> wrote:

Ayu = zeros(N, N)
uAx = zeros(N, N)
Du = zeros(N, N)
Ayv = zeros(N, N)
vAx = zeros(N, N)
Dv = zeros(N, N)function gm3!(dr, r, p, t)
a, α, ubar, β, D1, D2 = p
u = @view r[:, :, 1]
v = @view r[:, :, 2]
du = @view dr[:, :, 1]
dv = @view dr[:, :, 2]
mul!(Ayu, Ay, u)
mul!(uAx, u, Ax)
mul!(Ayv, Ay, v)
mul!(vAx, v, Ax)
@. Du = D1 * (Ayu + uAx)
@. Dv = D2 * (Ayv + vAx)
@. du = Du + a * u * u ./ v + ubar - α * u
@. dv = Dv + a * u * u - β * vend
prob = ODEProblem(gm3!, r0, (0.0, 0.1), @.*** solve(prob, Tsit5());
—
Reply to this email directly, view it on GitHub
https://github.com/gdalle/DifferentiationInterface.jl/issues/339#issuecomment-2202474610,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAJTUXDHU3NJ5TKNQIBVV6LZKJVYZAVCNFSM6AAAAABJ7W6EQKVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEMBSGQ3TINRRGA
.
You are receiving this because you were mentioned.Message ID:
@.***>

See https://github.com/SciML/SciMLBenchmarks.jl/pull/988 for a more involved discussion

The first ingredient of the solution is available in the latest release of ADTypes with AutoEnzyme(constant_function=true/false). Now it's on me to implement both variants here

@willtebbutt what kind of assumptions does Tapir make vis-a-vis constant functions?

At present, Tapir.jl assumes that all arguments are active, and differentiates through everything. Consequently I'm reasonably confident that there's nothing here that is relevant to Tapir.jl.

authors: ChrisRackauckas gdalle willtebbutt wsmoses


text:
Functionality via Hiera

Great work on this module (sorry I've never mentioned this before now...)!
I am currently using this module directly from hiera which is great for me as I don't need to write and maintain a wrapper/profile for it. One downside is that I cannot use the defined types directly through hiera (unless I am missing something) so I am using some trickery to get a template defined in my startup script.
consul_template::extra_options: |
  '-template /path/to/my/template.ctmpl:/path/to/my/output.out'

What I would like to request is that this module's defined types are made accessible through the init.pp class. I've implemented this myself (and seen it done elsewhere) simply by including a parameter that is to be a hash of types which is later verified and passed to create_resources('type', $hash). This would greatly simplify using consul_template::watch: for anyone using this module directly from hiera!
Please let me know if you have any questions or again, if I am missing something.
Thanks again!

Hm that sounds interesting - can you show me an example of another module doing this so I have some basis to compare?

Sure thing!
Check out @solarkennedy's Consul module. You can see how he includes hashes in his init.pp that are later checked and if defined uses create_resources() for those types.
This seems to be the direction that a lot of modules have taken as it help to support declaration directly from hiera as well as utilization via puppetcode (in the event the organization decides a role/profile type wrapper is necessary). For our purposes, a wrapper isn't entirely necessary but including this functionality would be fantastic and solidify this!
Let me know what you think.

Heh that's funny - I based this module wholly on solarkennedy's consul module before he refactored it to use newer patterns - I'll give the init.pp setup a look and see if it can be integrated without too much pain.

Give master a go and let me know? :)

Sweeeet! When I get a chance I'll VPN in and take the change for a ride and report back! Looks like it should do the trick though! :smile:

Fingers crossed - I'll close this issue - feel free to reopen it if there are problems.

source: gharchive/issue

authors: ccampanale gdhbashton

license_type: permissive

license_source: bigquery


text:
🛑 Gitea is down

In e1f13f2, Gitea ($SITE_GITEA) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Gitea is back up in e81a3e6 after 8 minutes.

license: MIT

license_source: github-api


text:
Provisioning with example Vagrantfile fails

warning: Could not retrieve fact fqdn
warning: Host is missing hostname and/or domain: graphite
info: Applying configuration version '1409333312'
notice: /Stage[main]/Graphite::Deps/Package[python-cairo]/ensure: ensure changed 'purged' to 'present'
notice: /Stage[main]/Python::Install/Package[python-pip]/ensure: ensure changed 'purged' to 'present'
notice: /Stage[main]/Python::Install/Package[python-virtualenv]/ensure: ensure changed 'purged' to 'present'
notice: /Stage[main]/Python::Install/Package[python-dev]/ensure: ensure changed 'purged' to 'present'
notice: /Stage[main]/Graphite::Deps/Python::Virtualenv[/var/lib/graphite]/File[/var/lib/graphite]/ensure: created
notice: /Stage[main]/Graphite::Deps/Python::Virtualenv[/var/lib/graphite]/Exec[python_virtualenv_/var/lib/graphite]/returns: executed successfully
notice: /Stage[main]/Graphite::Deps/Python::Pip[twisted==11.1.0]/Exec[pip_install_twisted==11.1.0]/returns: executed successfully
notice: /Stage[main]/Graphite::Deps/Python::Pip[python-memcached==1.47]/Exec[pip_install_python-memcached==1.47]/returns: executed successfully
notice: /Stage[main]/Graphite::Deps/Python::Pip[django==1.4.10]/Exec[pip_install_django==1.4.10]/returns: executed successfully
notice: /Stage[main]/Graphite::Deps/Python::Pip[django-tagging==0.3.1]/Exec[pip_install_django-tagging==0.3.1]/returns: executed successfully
notice: /Stage[main]/Graphite::Deps/Python::Pip[gunicorn]/Exec[pip_install_gunicorn]/returns: executed successfully
notice: /Stage[main]/Graphite::Deps/Python::Pip[simplejson==2.1.6]/Exec[pip_install_simplejson==2.1.6]/returns: executed successfully
notice: /Stage[main]/Graphite::Deps/File[/var/lib/graphite/lib/python2.7/site-packages/cairo]/ensure: created
notice: /Stage[main]/Graphite::Install/Python::Pip[graphite-web==0.9.12]/Exec[pip_install_graphite-web==0.9.12]/returns: executed successfully
notice: /Stage[main]/Graphite::Install/Python::Pip[whisper==0.9.12]/Exec[pip_install_whisper==0.9.12]/returns: executed successfully
notice: /Stage[main]/Graphite::Install/Python::Pip[carbon==0.9.12]/Exec[pip_install_carbon==0.9.12]/returns: executed successfully
notice: /Stage[main]/Graphite::Config/File[/etc/init.d/carbon-aggregator]/ensure: created
err: /Stage[main]/Graphite::Config/File[/var/lib/graphite/conf/storage-aggregation.conf]/ensure: change from absent to file failed: Could not set 'file on ensure: No such file or directory - /var/lib/graphite/conf/storage-aggregation.conf.puppettmp_5202 at /etc/puppet/modules/graphite/manifests/config.pp:90
err: /Stage[main]/Graphite::Config/File[/var/lib/graphite/conf/storage-schemas.conf]/ensure: change from absent to file failed: Could not set 'file on ensure: No such file or directory - /var/lib/graphite/conf/storage-schemas.conf.puppettmp_2641 at /etc/puppet/modules/graphite/manifests/config.pp:96
notice: /Stage[main]/Graphite::Config/File[/etc/init/carbon-aggregator.conf]/ensure: created
notice: /Stage[main]/Graphite::Config/File[/etc/init/graphite-web.conf]/ensure: created
err: /Stage[main]/Graphite::Config/File[/var/lib/graphite/storage/log/webapp/]/ensure: change from absent to directory failed: Cannot create /var/lib/graphite/storage/log/webapp; parent directory /var/lib/graphite/storage/log does not exist
err: /Stage[main]/Graphite::Config/File[/var/lib/graphite/conf/carbon.conf]/ensure: change from absent to present failed: Could not set 'present on ensure: No such file or directory - /var/lib/graphite/conf/carbon.conf.puppettmp_274 at /etc/puppet/modules/graphite/manifests/config.pp:78
err: /Stage[main]/Graphite::Config/File[/var/lib/graphite/webapp/graphite/local_settings.py]/ensure: change from absent to file failed: Could not set 'file on ensure: No such file or directory - /var/lib/graphite/webapp/graphite/local_settings.py.puppettmp_6721 at /etc/puppet/modules/graphite/manifests/config.pp:133
err: /Stage[main]/Graphite::Config/File[/var/lib/graphite/webapp/graphite/initial_data.json]/ensure: change from absent to present failed: Could not set 'present on ensure: No such file or directory - /var/lib/graphite/webapp/graphite/initial_data.json.puppettmp_1812 at /etc/puppet/modules/graphite/manifests/config.pp:115
notice: /Stage[main]/Graphite::Config/Exec[init-db]: Dependency File[/var/lib/graphite/webapp/graphite/initial_data.json] has failures: true
warning: /Stage[main]/Graphite::Config/Exec[init-db]: Skipping because of failed dependencies
notice: /Stage[main]/Graphite::Config/File[/var/lib/graphite/storage/graphite.db]: Dependency File[/var/lib/graphite/webapp/graphite/initial_data.json] has failures: true
warning: /Stage[main]/Graphite::Config/File[/var/lib/graphite/storage/graphite.db]: Skipping because of failed dependencies
notice: /Stage[main]/Graphite::Config/File[/etc/init.d/graphite-web]/ensure: created
notice: /Stage[main]/Graphite::Config/File[/etc/init.d/carbon-cache]/ensure: created
notice: /Stage[main]/Graphite::Config/File[/etc/init/carbon-cache.conf]/ensure: created
info: Class[Graphite::Config]: Scheduling refresh of Class[Graphite::Service]
info: Class[Graphite::Service]: Scheduling refresh of Service[carbon-aggregator]
info: Class[Graphite::Service]: Scheduling refresh of Service[carbon-cache]
info: Class[Graphite::Service]: Scheduling refresh of Service[graphite-web]
notice: /Stage[main]/Graphite::Service/Service[carbon-aggregator]: Dependency File[/var/lib/graphite/webapp/graphite/initial_data.json] has failures: true
notice: /Stage[main]/Graphite::Service/Service[carbon-aggregator]: Dependency File[/var/lib/graphite/conf/storage-aggregation.conf] has failures: true
notice: /Stage[main]/Graphite::Service/Service[carbon-aggregator]: Dependency File[/var/lib/graphite/storage/log/webapp/] has failures: true
notice: /Stage[main]/Graphite::Service/Service[carbon-aggregator]: Dependency File[/var/lib/graphite/webapp/graphite/local_settings.py] has failures: true
notice: /Stage[main]/Graphite::Service/Service[carbon-aggregator]: Dependency File[/var/lib/graphite/conf/storage-schemas.conf] has failures: true
notice: /Stage[main]/Graphite::Service/Service[carbon-aggregator]: Dependency File[/var/lib/graphite/conf/carbon.conf] has failures: true
warning: /Stage[main]/Graphite::Service/Service[carbon-aggregator]: Skipping because of failed dependencies
notice: /Stage[main]/Graphite::Service/Service[carbon-aggregator]: Triggered 'refresh' from 1 events
notice: /Stage[main]/Graphite::Service/Service[carbon-cache]: Dependency File[/var/lib/graphite/webapp/graphite/initial_data.json] has failures: true
notice: /Stage[main]/Graphite::Service/Service[carbon-cache]: Dependency File[/var/lib/graphite/conf/storage-aggregation.conf] has failures: true
notice: /Stage[main]/Graphite::Service/Service[carbon-cache]: Dependency File[/var/lib/graphite/storage/log/webapp/] has failures: true
notice: /Stage[main]/Graphite::Service/Service[carbon-cache]: Dependency File[/var/lib/graphite/webapp/graphite/local_settings.py] has failures: true
notice: /Stage[main]/Graphite::Service/Service[carbon-cache]: Dependency File[/var/lib/graphite/conf/storage-schemas.conf] has failures: true
notice: /Stage[main]/Graphite::Service/Service[carbon-cache]: Dependency File[/var/lib/graphite/conf/carbon.conf] has failures: true
warning: /Stage[main]/Graphite::Service/Service[carbon-cache]: Skipping because of failed dependencies
notice: /Stage[main]/Graphite::Service/Service[carbon-cache]: Triggered 'refresh' from 1 events
notice: /Stage[main]/Graphite::Service/Service[graphite-web]: Dependency File[/var/lib/graphite/webapp/graphite/initial_data.json] has failures: true
notice: /Stage[main]/Graphite::Service/Service[graphite-web]: Dependency File[/var/lib/graphite/conf/storage-aggregation.conf] has failures: true
notice: /Stage[main]/Graphite::Service/Service[graphite-web]: Dependency File[/var/lib/graphite/storage/log/webapp/] has failures: true
notice: /Stage[main]/Graphite::Service/Service[graphite-web]: Dependency File[/var/lib/graphite/webapp/graphite/local_settings.py] has failures: true
notice: /Stage[main]/Graphite::Service/Service[graphite-web]: Dependency File[/var/lib/graphite/conf/storage-schemas.conf] has failures: true
notice: /Stage[main]/Graphite::Service/Service[graphite-web]: Dependency File[/var/lib/graphite/conf/carbon.conf] has failures: true
warning: /Stage[main]/Graphite::Service/Service[graphite-web]: Skipping because of failed dependencies
notice: /Stage[main]/Graphite::Service/Service[graphite-web]: Triggered 'refresh' from 1 events
info: Creating state file /var/lib/puppet/state/state.yaml
notice: Finished catalog run in 188.16 seconds

Hi @jhoblitt,
Firstly apologies for not getting around to this issue sooner.
We've tested the vagrant image under vagrant 1.7.4 and we've been unable to reproduce the issue. We're planning on moving to Trusty in the very near future so hopefully this problem is resolved and won't return. If it does please feel free to reopen the issue and we can take another look.

authors: deanwilson jhoblitt

repo: gds-operations/puppet-graphite


text:
応援団さん: No.2-2 スケジュール表

担当コンポーネント
https://docs.google.com/presentation/d/13BA7Ol3sZFcLYRL2Gw9d5YMDgsymD20LJo8S_rJViAM/edit#slide=id.g118e5a81708_1_10

scheduleA (Templates)

実装項目

スケジュール表をorganismsとして実装
templatesと同じ階層にjsonファイルを用意し、予定を書き込んでもらう

変更しました！

source: gharchive/pull-request

repo: gdsc-osaka/gonuxt


text:
enable tighter metal routes

The current routing algorithm does not allow for small "kinks" in the wire.
More precisely, for the current wiring algorithms (gf.routing.getroute() and gf.routing.get_bundle()), if the wire needs to make an S-bend, the lateral displacement of the wire must be GREATER than the wire width. This makes tight wiring and/or very painful.
import gdsfactory as gf

if __name__ == "__main__":
    c = gf.Component("mzi_with_pads")
    c1 = c << gf.components.pad()
    c2 = c << gf.components.pad()

    c2.movex(30)
    c2.movey(200)

    port1 = c1.ports["e2"]
    port2 = c2.ports["e4"]

    route = gf.routing.get_route(
        port1,
        port2,
        cross_section=gf.cross_section.metal1,
        width=50,
        bend=gf.components.wire_corner,
    )
    c.add(route.references)
    c.show()

@flaport maybe your non-manhattan router could help with this?

It looks like the ports of your corner are on the edges. Moving them in the center of the metal corner would fix this type of issue

@joamatab , I did not really build an auto router. I just put some effort into enabling routing with non-90° euler bends. Not sure how applicable this is here...

Both centering the port pads or increasing y solve this issue
import gdsfactory as gf

if __name__ == "__main__":
    c = gf.Component("mzi_with_pads")
    c1 = c << gf.components.pad()
    c2 = c << gf.components.pad()

    c2.movex(30)
    c2.movey(300)

    port1 = c1.ports["pad"]
    port2 = c2.ports["pad"]

    route = gf.routing.get_route(
        port1,
        port2,
        cross_section=gf.cross_section.metal1,
        width=50,
        bend=gf.components.wire_corner,
    )
    c.add(route.references)
    c.show()

import gdsfactory as gf

if __name__ == "__main__":
    c = gf.Component("mzi_with_pads")
    c1 = c << gf.components.pad()
    c2 = c << gf.components.pad()

    c2.movex(30)
    c2.movey(300)

    port1 = c1.ports["e2"]
    port2 = c2.ports["e4"]

    route = gf.routing.get_route(
        port1,
        port2,
        cross_section=gf.cross_section.metal1,
        width=50,
        bend=gf.components.wire_corner,
    )
    c.add(route.references)
    c.show()

authors: flaport joamatab photonicsflow

repo: gdsfactory/gdsfactory

license: mit


text:
RACK GUI (config w/o python venv)

[x] try installing the eclipse plug-in and have a team discussion on best approach
[x] run the Flask demo locally as rack-ui package
[x] put rack-ui demo into RACK file system and start automatically by local docker, opening the new port at startup
[x] execute sample overlay/nodegroup load
[x] demonstrate giving Docker access to user-selected ingestion package from host machine
[ ] try new manifest (being developed by Eric)
[ ] button to load Apache data, using manifest (force clear first, with confirm dialog)
[ ] button to clear data (with confirm dialog)
[ ] Kit try loading via "rack manifest" command

[ ] another task ?

Is this going to be a replacement of RACK Eclipse plugin? What is the motivation behind this? @cuddihyge @kityansiu @pauls4GE

As just a no-cli-involved ingestion and basic querying GUI for RACK (I am guessing this will be a part/offshoot of the RiB page that is visible on localhost) aimed at novice users, it makes sense for now.
Also, our plan is to make such a feature in the RACK Eclipse Plugin as well which will provide two user modes: 1. Advanced Mode and 2. Easy Mode.

The RACK plugin is NOT only for ontologists. It would be end-to-end tool and is for everyone regardless of their levels of expertise. Most of the features you mentioned were already part of the RACK plugin GUI and also dummy enough for everyone. I am not sure why we want to exclude Eclipse. But right now the only benefit of your approach I can see is that the RACK website and SemTK website would be written in the same language and can easily be integrated together. I am not sure what else the new website GUI would bring to the project.
Btw, Saswata Paul is planning to take over the RACK plugin and continue the development.

I think the original motivation was a zero-install option, and the oxymoronic phrase: Eclipse plug-in with 'Easy Mode'
Eclipse and plug-ins have historically been fairly complicated for folks to navigate, but the infrastructure is improving.
If we expect all users to have eclipse and manage a plug-in, then we may not need a separate installation and data-loading UI.

spun out issue #747 to track details and features in the rack cli manifest

moved some tasks to new issue #750, so this one will close when basic functionality is merged into master and tested.

authors: baoluomeng cuddihyge pauls4GE

repo: ge-high-assurance/RACK


text:
Fix deprecation warnings

Fixes this:
source/fluentasserts/core/basetype.d(23,17): Deprecation: Using this as a type is deprecated. Use typeof(this) instead
source/fluentasserts/core/basetype.d(24,17): Deprecation: Using this as a type is deprecated. Use typeof(this) instead
source/fluentasserts/core/basetype.d(25,18): Deprecation: Using this as a type is deprecated. Use typeof(this) instead
<repeated over and over again>

thanks!

authors: gedaiu ohdatboi

repo: gedaiu/fluent-asserts


text:
Backtracking Problems in Cpp

Implementation of the following in Cpp:

[x] The Knight’s tour problem

[x] Rat in a Maze

[x] N Queen Problem

[x] Subset Sum

[x] m Coloring Problem

[x] Hamiltonian Cycle

[x] Magnet Puzzle

To be merged in "cpp/backtracking" folder.

@geekquad Please assign this to me.
I want to add Rat in a maze and N Queen's problem

Assigning you with the same @Vrindagupta6828.

@geekquad please assign this to me
I want to work on  The Knight's tour problem, Subset sum, and m Coloring problem

Can you please assign me hamilton cycle as well

Assigning The Knight's tour problem, Subset-sum, and m Coloring problem to @itish-agarwal.
Assigning Hamiltonian Cycle to @Vrindagupta6828.

Hey!
I'd like to take Magnet Puzzle problem

Assigning Magnet Puzzle problem to @Aarushi11H.

I will work on Subset sum problem
@geekquad   please assign it to me

Hey @shash-2468, the Subset sum problem is already assigned to someone else. Please see if you can contribute to some other issues.

Hey @itish-agarwal, are you willing to complete the issues assigned to you?

Okay @geekquad , If @itish-agarwal isn't willing to do then assign me please!!

Yes please assign the issue to @shash-2468 as i am not able to complete it

Assigning Knight's tour problem, Subset-sum, and m Coloring problem to @shash-2468.

everything is solved in this issue.
close this

repo: geekquad/AlgoBook


text:
🛑 blist is down

In a89a640, blist (https://Blistingsnip.geeks121.repl.co) was down:

HTTP code: 0
Response time: 0 ms

Resolved: blist is back up in 9b86b29.


text:
Failing to Copy Nginx vhosts into place

What could be the source of this do you think?  Something in my config.yml? Worked a few days ago with same config.ymlbut ansible-galaxy downloaded updated tasks today. Can't remember how to temporarily turn this off. ansible-galaxy download adds 15 mins each failure here :-(
TASK [Copy Nginx vhosts into place.] *******************************************
fatal: [dbapc]: FAILED! => \
{"failed": true, "msg": "ERROR! failed to resolve remote temporary directory from \
ansible-tmp-1467216529.41-44739228166008:  \
`( umask 22 && mkdir -p \"$( echo $HOME/.ansible/tmp/ansible-tmp-1467216529.41-44739228166008 )\" \
&& echo \"$( echo $HOME/.ansible/tmp/ansible-tmp-1467216529.41-44739228166008 )\" )` \
 returned empty string"}

@iainhouston - usually this is some weird temporary issue. If you provision again, does it work on the second try?

You're quite right. second provisioning worked fine. thanks.

I blame cosmic rays :)

authors: geerlingguy iainhouston

repo: geerlingguy/drupal-vm


text:
Icon colour doesnt change

Bug report 🐞
Version & Environment

Version of browser: Chrome Latest
Version of geist-ui/react: Latest

Expected Behaviour
The behavior I expect is ...
When I do
<Home color="#123" />

it should change colour, but it doesn't. This also applies for sizing. I'm trying to change the size of breadcrumbs and it isn't changing.
Actual results (or Errors)
Colour doesn't change
https://github.com/Milo123459/website/tree/Milo123459/issue97 < code

I also have a question, I need to disable the hover effect in the breadcrumbs when using next link. I set aria-disabled but that doesn't stop the animation. Any ideas?

I clone your project and changed the color and everything looks fine.

If you are still experiencing this issue, please provide an online example that reproduces the problem. (codesandbox)

Also, if you want to change the CSS effect of the hover, use CSS to override the original style:
nav > a:hover {
  color: inherit;
}

Okay. What about the size of the breadcrumbs not changing?

I did  and nothing changed?

@Milo123459
As you can see, the size property accepts an enumerated value instead of a number or other string, please refer to the official website to modify it:

So I have to do:
size="medium"

I did, nothing changed. Can you take a look at my code and see what I did wrong?

In your project, everything looks great, do you need to check your code again?

I don't think so. In my _app.tsx I have the size property set to medium yet the size doesn't change. I really don't understand

I have changed, checked, and previewed your project and everything looks fine, please refer to the above screenshot.
Back to the original question, if you are still troubled by this, please provide an online example so that I can help you figure out why.

I'm not troubled by the original problem, just the size not changing.
Here is a preview deployment, built by Vercel: https://milo123459-h41bfgr6a-salvage.vercel.app/
As you can see, the breadcrumbs size didn't change. Still ridiculously confused.

if you are still troubled by this, please provide an online example so that I can help you figure out why.

Well, it works when I try it online but not in my regular project.

In my next project, it doesn't change size. On the code sandbox, it does.

I guess it isn't a bug, but would you mind helping me out / figuring out why it doesn't work?

repo: geist-org/react


text:
Make reportDir configurable

According to docs it is not possible now to use another directory for report than gemini-report.

+1

#691

authors: levonet puzankov varya

repo: gemini-testing/gemini


text:
Arch.Extended ParallelQuery?

Discussed in https://github.com/genaray/Arch/discussions/62

Originally posted by stgeorge February  4, 2023
This is more for the Arch.Extended project but it didn't have a Discussions section.
I noticed there's not an easy way to change a [Query] to parallel other than kind of pulling it out of the source generator and using the Arch scheme. While this is OK, it would be pretty cool to just be able to say [ParallelQuery] and have it work without much fuss. I am liking the source generator approach in terms of less boilerplate.

Solved in https://github.com/genaray/Arch.Extended/pull/72

repo: genaray/Arch


text:
Feature request: Use the same color theme for the code as in the VSCode itself

Describe the feature
Right now the ChatGPT extension uses its own color theme for the code it generates. Would it be possible to change it to use the same theme as the one I'm currently using in the editor? Purely a cosmetic thing of course, not a high priority.

The extension uses HighlighJS to highlight the code blocks. If someone could find or implement a custom theme for HighlightJS with vscode's CSS variables let me know. I'd be happy to integrate it.

authors: Yardanico gencay

repo: gencay/vscode-chatgpt

license: ISC


text:
Publish extensions to open-vsx

I'm a VS Codium user, a FLOSS version of VS Code, it's the same code but without the Microsoft's telemetry and branding.
I want to request if possible to add the SCSS Everywhere extension on the open-vsx.org market to us doesn't need to works with the Microsoft marketplace as is unclear if it's legal to use it on VS Code forks, see here.
Additional info:

This is how to publish a new extension.

Hey @orblazer. I've just published it. Thanks for bringing this to my attention.
I will make sure its always in sync between both marketplaces.

authors: gencer orblazer

repo: gencer/SCSS-Everywhere


text:
peptide transport/ protein localization

I'm not sure how we treat peptide vs. protein, but I think it might be different in different branches.
Anyway the question is, should  peptide transport have protein localization as an ancestor
(not to self, if not this will need a separate entry in AE config file)

Peptide vs. proteins: https://github.com/geneontology/go-ontology/issues/12341 or https://github.com/geneontology/go-ontology/issues/12259
I just asked other editors on the call and @ukemi explained that you can have transport without localisation, for example in case the peptide is transported but then diffuse freely, so peptide transport should not have protein localisation as an ancestor.
However, checking the hierarchy, things seem a bit more confused:

as for example single-organism transport is_a single organism localization, and transport is_a localisation (indirectly). @ukemi: what do you think?

@ukemi is rarely wrong, but he is here;)
all transport is localization. He'll agree in a minute.

Diffusion isn't controlled by a gene product, so  this does not hold in GO. Although some localization is my diffusion.

He is wrong more than you think. I don't think diffusion is a type of localization, but I think anchoring a diffused substance in a location is.  I guess it depends on how we define transport. If we define the purpose of transport to be localization, then I think this is ok. This assumes that nothing is transported without the purpose of localizing it. However, I still think that not all localization is accomplished by transport.

That is true ;)

Actually he had made a good job of convincing me during the call; IIRC the example he used was about diffusion of proteins during embryogenesis, where a protein is transported but not localised as it diffuses freely. I was thinking at cases in which things are secreted for example, and we have 'lactation' in GO - it seems odd to say that lactation is a localisation process.
I think in general transport process can result in localisation, but they don't necessarily overlap. Now as David says, it all boils down to how we define transport. Right now, definition reads 'The directed movement of substances (such as macromolecules, small molecules, ions) into, out of or within a cell, or between cells, or within a multicellular organism by means of some agent such as a transporter or pore.' which doesn't imply an end location is achieved. If we decide to go that route (and it seems we do based on the existing hierarchy) this probably deserves to be made clearer. We could either update the definition or add a comment along the lines of 'In GO, all transport proceses are types of localisation processes'.

Hmm, I don't have a problem with any secretion being transport-> localization.
I wish I could find the old tickets when this was immediately implemented. Its probably about 10 years ago and it has held up for everything so far... but there could be exceptions...I don't think this is one of them. The crux here is if a peptide is a protein.... protein transport is already is_a protein localization.

Secretion is one example, excretion from the kidney is another. Would you consider transport of metabolites into a cell localization? I think these are just a bit weird. To me localization means here, but not there. I think transport can just move from here to there. What do you think? It doesn't mean that transport can't be involved in localization, I'm just not sure it always is.

I think the type of localization we refer to in GO has to be performed by a gene product establishing or maintaining a specific location. This limits it to anchoring, sequestering transport etc are all localization processes.  Sure, things can localize to places in other ways that are not actively dependent on gene products, but these are not 'annotatable' by GO, because they aren't biological processes.
I would consider transport of metabolites into a cell 'localization'.
Need @mah11 (just in case I'm wrong!)

Sorry, I never worked on that area (in biology or in GO) and therefore can't help.

I remember you initially making localization a parent of transport.

I did not do any of the work on that branch of GO.

I agree that we shouldn't consider things that are not accomplished by the action of gene products. I guess the major question is does localization encompass more than just moving things from place to place. Does it mean that something is restricted to a specific place? I would say yes.

Does it mean that something is restricted to a specific place? I would say yes.

Yes.
But this doesn't prevent all transport being localization. It only stops all localization being transport.

I think it is the other way around. You can also get localization by anchoring something (protein myristoylation can localize a protein to a membrane as an example off the top of my head) and you can get localization from selective spatial degradation, both of which are accomplished by gene products.
Does transport ever occur for a purpose other than restricting the location of something? I would say that sometimes it occurs just to move something somewhere, but not necessarily to restrict its location.

PS. I'm not saying that all peptide transport is not for the purpose of peptide localization. I don't know the answer to that. I'm just suggesting that not all transport is accomplishing localization.

Localization is defined:
Any process in which a cell, a substance, or a cellular entity, such as a protein complex or organelle, is transported to or maintained in a specific location
;)

I think both @ukemi and I have an issue with the part 'transported to a specific location'. To reiterate the example above, I don't think that secretion occurs in a specific location. As David says above,

sometimes [transport] occurs just to move something somewhere, but not necessarily to restrict its location.

Again, I think it all boils down to how we want to define transport in GO, and the current definition doesn't mention end location. Though I agree with Val that it seems implied based on the current hierarchy, it still deserves clarification. Shall we bring that up at an editor or annotation call? It would be I think helpful to have contributions from others to reach consensus. Though keeping things as is would as usual be easier :)

Ugh, I see what you mean. That would be horrible to fix.....I wonder if there is always some restriction of location (for example in secretion it is outside the cell)?

That seems reasonable based on the current hierarchy. Maybe just adding a comment to that effect to the transport term and link to this ticket to leave an audit trail?
Re protein vs peptide, I believe this should be 'fixed' when the bridge described at https://github.com/geneontology/go-ontology/issues/12341 is implemented. Pinging @dosumis.

I know what the secretion problem is now.
I'll migrate that part to a new ticket as its a separate issue....

I still think that all transport is localization. the problems reported in this ticket as far as I can see would be fixed by sorting out this branch/ secretion
https://github.com/geneontology/go-ontology/issues/12381

The general problem with this branch is the glossing the distinction between individual molecules and concentration.  GO bakes in an assumption that transport always leads to a change in localization.  This must be true on an individual molecule level, but is not necessarily true for molecular concentration.  Fixing this for the whole branch and all annotations would be hard.

Summary: the issue transport vs localisation has been submitted as a new ticket as it became a side discussion from @ValWood's original question which was more regarding peptide vs protein. We expect the latter issue to be fixed by #12341.
Nothing to do on this ticket atm, but keeping it open to not forget to check its status when #12341 gets fixed.

[ ] fix #12341

[ ] check status on parentage: if peptide transport is_a protein transport -> close

The distinction between individual molecules and concentration never crossed my mind before. I still can't think of any transport which does not lead to a change in localization.
I tried to think of a few contexts. A single glucose transporter transports some molecules in a directed . It's still  changing the localization of those molecules regardless of what happens to them subsequently. I can't think of an exception where transport isn't localization.

I closed this older one as duplicate:
https://github.com/geneontology/go-ontology/issues/9543

I am not sure if this adds any clarity but I was working with OMP https://github.com/microbialphenotypes on phenotype terms and a "protein secretion" term came up where the secreted protein is "secreted Phospholipase B1." This secreted protein interacts with host tissues and mutants that fail to secrete this normally "secreted form" of Phospholipase B1 have defects in virulence, even if this Phospholipase B family member accumulates inside the cell. In this case, the mere secretion of the protein outside of the fungal cell is required for proximity to host tissues. The function does not require additional localization beyond "outside the cell." I am in agreement with all secretion being a localization.

This ticket was really about the relationship between "peptide process" and the equivalent "protein process". However it seems that now, these are not related in chebi.

I think you can make an equivalence, in two steps. CHEBI:16541 (protein polypeptide chain, "A naturally occurring polypeptide synthesized at the ribosome.") has the outgoing relationship: protein polypeptide chain (CHEBI:16541) is a polypeptide (CHEBI:15841). Polypeptide ("A peptide containing ten or more amino acid residues.") in turn has the outgoing relationship: polypeptide (CHEBI:15841) is a peptide (CHEBI:16670).
Can that work?

ChEBI already states
protein polypeptide chain (CHEBI:16541) is a polypeptide (CHEBI:15841) (see here)
and
polypeptide (CHEBI:15841) is a peptide (CHEBI:16670)  (see here)
The issue is on the protein term, https://www.ebi.ac.uk/chebi/searchId.do?chebiId=CHEBI:36080, which states protein (CHEBI:36080) has part protein polypeptide chain (CHEBI:16541)
I think the issue of how to deal with protein should be discussed in https://github.com/geneontology/go-ontology/issues/12341, which deals with the bridging between Chebi and PRO and being consistent throughout to enable proper inferences.

Closing this ticket as issues have been addressed (but for peptide/protein which is dealt with in #12341). Related ticket on lactation https://github.com/geneontology/go-ontology/issues/12381 mentioned for information here.

authors: ValWood deustp01 dianeoinglis dosumis mah11 mcourtot ukemi

repo: geneontology/go-ontology


text:
NTR: Positive regulation of replication fork progression

I am a CACAO student trying to annotate the paper PMID: 27611590 and the Schizosaccharomyces pombe protein (pfh1) that I am trying to annotate decreases the amount of pausing experienced by the replication fork at hard to replicate areas. I tried to use the GO term GO:0031297 (replication fork processing) but nowhere in the paper does it say that the protein restarts the act of replication, only that replication fork pausing is decreased. I was hoping that a term could be created to accommodate this issue. Perhaps something along the lines of positive regulation of replication fork progression, DEFINITION: Any process that activates or increases the frequency, rate or extent of replication fork progression.
GO:0097046 (replication fork progression beyond termination site) exists however the term that I need should be a parent of this term.

Hi @ValWood : do you know of cases where the replication fork processing does not result in replication restarting? I would have thought decreasing pausing would fall under 'restarting', but I can see how this is a bit ambiguous and you're the expert :)
Current definition for replication fork processing reads 'The process in which a DNA replication fork that has stalled is restored to a functional state and replication is restarted. The stalling may be due to DNA damage, DNA secondary structure, bound proteins, dNTP shortage, or other causes.", and @ethanclary143 mentions issues with the "replication is restarted" part of this definition.

Well I'm not the expert here @mah11  is ;)
But I can tell you that the author has curated this paper (not yet approved)
https://curation.pombase.org/pombe/curs/c131e5fc09dccabc/ro
and used the term "replication fork processing"
Val

do you know of cases where the replication fork processing does not result in replication restarting?

No; I would say that replication fork processing does always include restarting, as the GO:0031297 definition says.

I would have thought decreasing pausing would fall under 'restarting'

I think an observation of decreased pausing could result from either quicker clearance of paused forks (i.e. quicker "replication fork processing") or from forks not pausing as often in the first place. If a fork doesn't pause it won't need to be restarted.
I haven't (yet) read the paper carefully, but from a quick glance it seems that the actual observation was the converse - depleting Pfh1 causes increased pausing, which suggests that Pfh1 may contribute to fork processing, or help forks avoid having to pause in the first place, or both. I don't yet know if other data in the paper form part of the author's willingness to use the fork processing term.
If we want to use a term that isn't specific to processing forks that have already paused, a term for regulation of DNA strand elongation might work (choose one at the appropriate level of specificity, most likely regulation of GO:1902983). I'm not sure it's worthwhile for GO to try to capture anydistinction between strand elongation and fork progression. (I know nothing of the history of GO:0097046 including why its name uses "fork progression".)

GO:0097046 replication fork progression beyond termination site
sounds like a process which has gone wrong? is it  just a mutant phenotype?

Hi @ethanclary143 ,
Apologies, I haven’t had a chance to work on this ticket (and on 2 more from you) until now, and I’ll be on leave next week. If they can't wait until then, please comment here. Thanks for your patience.

Dear @ethanclary143 ,
Based on earlier comments in this ticket, it seems that you could annotate to the existing term GO:0031297 ‘replication fork processing’, or to a regulation term for GO:0022616 ‘DNA strand elongation’ or one of its specific children. If you choose the latter option, and there is no existing regulation term at the level you require, one should be requested via TermGenie (TG, http://go.termgenie.org). I presume you don’t have a TG account. Routine curators usually have one, but for CACAO competitions this is not strictly required, so I can create one for you if you let me know which one you need. Thanks.

Hi @ValWood and @srengel ,
Wrt Val's comment
"GO:0097046 replication fork progression beyond termination site
sounds like a process which has gone wrong? is it just a mutant phenotype?"
That might be the case, based on its supporting PMID (https://www.ncbi.nlm.nih.gov/pubmed/?term=20797631). I added that term early on (https://github.com/geneontology/go-ontology/issues/8557); it was requested by Maria Costanzo who is no longer at SGD, so I'm asking @srengel to take a look and comment here please.

re the question that perhaps the GO:0097046 term itself is just a mutant phenotype, i would say not.  looking at PMID: 20797631, there is a section 'Rrm3 Is Required for Fork Progression across TERs', and figure 3 indicates that knocking out RRM3 ablates this.  that is, fork progression through the tough areas stops without Rrm3. previous papers have reported similar findings.

The GO term still sounds slightly strange. If the process is really enabling replication through difficult regions "replication fork progression beyond termination site"  seems an odd way to describe it. I am sure we have equivalent, but I'm not sure what terms we have used for this..I'll see if I can find anything....

i.e it sounds as thought he process is "slowing replication"...(maybe we used maintenance of GO:1902298	cell cycle DNA replication maintenance of fidelity?)

Hi @ValWood ,
Thanks for your feedback. I propose that if you’d like to suggest a different name for GO:0097046 ‘replication fork progression beyond termination site’, or any other course of action for that term, please open a new ticket with all necessary details. BTW, I think we’ve highlighted the 'replication' branch as in need of work and experts'  help before - maybe something to keep in mind for future ontology development, if others feel the same.

Hi @ethanclary143 ,
I’ll close this ticket now. Should you need a new ‘regulation’ term, please request/have someone request it via TermGenie, or open a new ticket, as detailed in my previous comment to you. Thanks.

authors: ValWood ethanclary143 mah11 mcourtot paolaroncaglia srengel


text:
GO:0045259  proton-transporting ATP synthase complex

none of the synonyms contain "F1-F0"  can this be added?
Wouldn't it be more recognisable if it were called:
F-type or F-ATPase
I always need to think about
GO:0045259  proton-transporting ATP synthase complex

F1-F0 complex? related, exact, narrow, etc. ?

exact? from def and other names?

done; synonym added

authors: ValWood hdrabkin


text:
GO:0016104	 triterpenoid biosynthetic process

InterPro ID / label

GO:0016104 | triterpenoid biosynthetic process | IEA with IPR018333

Example sequences with problematic annotation (ID + gene/protein name):

Description of issue

is a  triterpenoid derivative, rather than a triterpenoid.
you could  probably use  sterol biosynthetic process ?

This highlights a potential ontology issue. The " isoprenoid family" classification is orthogonal to "end product" and it might complicate the curation of pathways.
For instance, in this case, lanosterol is_a triterpenoid, but is also past the commitment point of ergosterol biosynthesis (which isn't classed as isoprenoid biosynthesis because ergosterol is an isoprenoid-derivative rather than an iso[prenoid)
Flagging as an example.

Hi Val,
Thank you very much. I have replaced GO:0016104 with GO:0006694, which will be available in the next InterPro release (102.).
Best wishes
Sara

Hi Sara,
see follow up comments, I changed my mind, I think this is an ontology issue, but I haven't figured out a fix yet.

Ok, thanks, I will revert this then.


text:
synonym request "breakdown"

"breakdown" is currently an exact synonym of "catalytic process.
This makes the Europe PMC text miners flag every instance of "breakdown" as "catalytic process.
I'd like to edit this  synonym to be "breakdown of substance", make it related, or remove it altogether.

This may be a tangent here, but breakdown should include spontaneous reactions that proceed without enzyme-mediated catalysis, like a number of physiologically important steps in eicosanoid metabolism, so will your edit fix the root problem?

I guess that makes it even broader.
Is it a useful synonym? I can only see it being useful if it is in the context of a specific compound, so "x compound" would be useful, but  "catabolic process" is a high-level grouping term anyway.
(@pgaudet  not, don't worry I don't intend to do this for every problem synonym for text mining but this one has been bugging me for a couple of years when I have reviewed because it's a straightforward fox to remove a lot of obvious nonsense, and I don't think a curator would miss this label)

Would "breakdown of substance" (or breakdown of molecule) be enough to avoid it being picked up by text mining tools?

I think so because they stopped doing partial string matches (or appeared to, but if not I will raise that issue again when I cheat with Europe PMC)

Sounds good, then go ahead and change it.

@ValWood I assume you meant 'catabolic process' , not catalytic process.

authors: ValWood deustp01 pgaudet


text:
Adding funcat xrefs

As decided on #16989, we will retire these into the ontology

Random aside: the URLs for MIPS won't resolve as the website was taken down for GDPR European General Data Protection Regulation. http://mips.gsf.de/proj/funcatDB/ (still fine to merge this though)

Chris - I am not sure what you did. Replaced MultiFun by Funcats?
Do we need to add some metadata somewhere?
Thanks, Pascale

authors: cmungall pgaudet


text:
Rendered view for Aquifer API content

Ryder has an endpoint from the BiblioNexus team and an API key we can use in the app.

Initial work done.
Support for additional modalities refs https://github.com/genesis-ai-dev/aquifer-search-tool/issues/1

repo: genesis-ai-dev/codex-editor


text:
use specifed env to execute recipe

should follow the deployEnv on cook

LGTM

authors: hokichaio yugui

repo: gengo/goship


text:
Link into CIVIC by HUGO gene ID

Is it possible to link into CIVIC using the HUGO gene ID and optionally a protein-level variant? I have not found any way to do so and the data I can download does not include the CIVIC gene IDs (CIVIC gene 25 is not ABL1, for example).

It is possible to query the API via Entrez gene id or symbol like so:
https://civic.genome.wustl.edu/api/genes/ALK?identifier_type=entrez_symbol

https://civic.genome.wustl.edu/api/genes/128?identifier_type=entrez_id

But at the current time it isn't possible to link to the frontend in that manner (or via HUGO ids or protein level variants). Its a feature we might consider adding in the future however!
If you are interested in using the data downloads to construct links to CIViC, we can definitely include our internal CIViC ids in the TSV files - that is a pretty minor change! I will go ahead and make the change and let you know when its live on the site.

Yes, please! :)

I can't find the issue. But, I thought this was an existing issue to add internal IDs and other missing data to the data dumps as part of being compliant with UCSC submissions. Did that not get resolved already and maybe just not yet pushed live?

@obigriffith You're right, it was sitting in a branch waiting to be merged in and pushed!
Its out as of today's deploy and I went ahead and manually triggered a build of the nightly TSV dumps. So as of today, the nightly dumps will include all the fields that @LeiChen0218 specified: including our internal CIViC ids and links to all entities on the site!
I will also re-ran the monthly dump for April so it will include the same information.

@holtgrewe Since this solves the immediate linking problem, I'm going to go ahead and close this issue, but I've opened #396 to track the more general problem of supporting links into CIViC via alternate identifiers.

authors: acoffman holtgrewe obigriffith

repo: genome/civic-client


text:
Programmatic usage

I'm trying to use this package programmatically, but I'm running into a few issues. I'm sure this is not the intended way to use this tool, but it'd work nicely for us if we could use the Client in our own go package.
Specifically, I'm trying to pull an image, unpack it and save the containerd ImageConfig to a file. As far as I can tell, I should be able to do most of this with a few changes.
Example program:
import (
	"github.com/genuinetools/img/client"
	"github.com/containerd/containerd/content"
	"github.com/containerd/containerd/namespaces"
	"github.com/containerd/containerd/platforms"
	"github.com/moby/buildkit/identity"
	"github.com/moby/buildkit/session"
)

func main() {
	fullImageName := "redis:latest"

	c, err := client.New("/tmp/img", "auto", nil)
	check(err)

	cCtx := context.Background()
	id := identity.NewID()
	cCtx = session.NewContext(cCtx, id)
	cCtx = namespaces.WithNamespace(cCtx, "buildkit")

	img, err := c.Pull(cCtx, fullImageName)
	check(err)

	err = c.Unpack(cCtx, fullImageName, "./rootfs")
	check(err)

	// all good up to here

	// `createWorkerOpt` is private, can't call it (obviously).
	conf, err := img.Config(cCtx, c.createWorkerOpt(false), platforms.Default())
	check(err)
}

func check(e error) {
	if e != nil {
		panic(e)
	}
}

Would it be possible to expose a way to get the ImageConfig from ListedImage?
Since dependencies are vendored, I couldn't easily get at the nested dependencies. For example, containerd's content.Provider don't match since they're considered different from the vendored code and anything I'd import.
It would also help if this package could be installed via Go modules (by pushing the forks vendored into repositories and including them with go.mod? Not sure.)
If nothing of this is desirable, that's fine, I'll wrap my bit of logic in a script that'll use the provided img binaries.

Why not just use buidkit library directly?

We would also need this fictionally to leverage it from our orchestrating tools.
Why should one reinvent what has been accomplished here?
@AkihiroSuda

The BuildKit upstream (https://github.com/moby/buildkit) has full featured and actively maintained libraries.
I don't think img has really "accomplished here" stuff w.r.t. API.
For rootless execution you need to reexec your app with a user namespace. Take a look at how k3s is consuming RootlessKit for this: https://github.com/rancher/k3s/blob/0aeea78060bed1829713f7a8a0eb9898af4bd6e3/pkg/rootless/rootless.go

authors: AkihiroSuda jeromegn universam1

repo: genuinetools/img


text:
Building from a local image fails

To repro:

docker tag ubuntu:16.04 base-ubuntu
Make a Dockerfile containing only FROM base-ubuntu
img build -t output .

The output is:
Building docker.io/library/output:latest
Setting up the rootfs... this may take a bit.
INFO[0000] resolving docker.io/library/base-ubuntu:latest
solving failed: pull access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed

img does not store images in docker path. it uses its own (/tmp/img). You should run img tag ubuntu:16.04 base-ubuntu instead.

yeah it is out of scope of this tool to provide the compatibilty from docker like you are doing

OK, thanks for the help!

So even after img tag ubuntu:16.04 base-ubuntu, it looks like FROM can't refer to a local image:
# img ls | grep ubuntu
docker.io/library/base-ubuntu:latest                                                         40.98MiB 2 hours ago             46 seconds ago          sha256:e348fbbea0e0a0e73ab0370de151e7800684445c509d46195aef73e090a49bd6
docker.io/library/ubuntu:16.04                                                               40.98MiB 6 minutes ago           6 minutes ago           sha256:e348fbbea0e0a0e73ab0370de151e7800684445c509d46195aef73e090a49bd6

# img build -t output .
Building docker.io/library/output:latest
Setting up the rootfs... this may take a bit.
INFO[0000] resolving docker.io/library/base-ubuntu:latest
solving failed: pull access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed

It looks like this patch: https://github.com/moby/buildkit/pull/289 hasn't landed on https://github.com/jessfraz/buildkit.

@apatil you should try this again, since there's been several fixes on BuildKit. Works fine for me.

authors: apatil ehotinger jessfraz nogoegst


text:
Error running the server web front-end

When I try to run the web front-end via
java -Xmx2500m -Xms50m -Dgraphhopper.prepare.ch.weightings=no   -Dgraphhopper.datareader.file=graphhopper/europe_germany_berlin.pbf -Dgraphhopper.profiles=freight_diesel   -jar target/railway_routing-0.0.1-SNAPSHOT-jar-with-dependencies.jar server

I get the error:
   Unrecognized field at: assets.resourcePathToUriMappings
    Did you mean?:
      - mappings
      - overrides
      - cacheSpec
      - mimeTypes
      - cacheControlHeader

I can run GraphHopper from the graphhopper subdirectory just fine using the Berlin PBF file.

When you do not enter any command the code returns:
       [-h] [-v] {server,check,import,match}

So perhaps there is a typo there? (as it suggests "server", not "serve").
Nonetheless, when I use "serve" I still get exactly the same error as before:
io.dropwizard.configuration.ConfigurationParsingException: default configuration has an error:
  * Unrecognized field at: assets.resourcePathToUriMappings
    Did you mean?:
      - mappings
      - overrides
      - cacheSpec
      - mimeTypes
      - cacheControlHeader

You haven't passed in the name of the .yml configuration file.  Dropwizard wants a .yml configuration file as the argument to its server command.  Just leaving this here for any Googlers.

repo: geofabrik/OpenRailRouting


text:
Bug: read_arrow with attribute or spatial filtering produces unusable Table (sometimes)

TLDR: calling combine_chunks, when an attribute filter, bbox or mask is supplied, might be worth doing unconditionally.
Environment details (conda managed, linux x64):

python 3.10.13
pyogrio 0.7.2
pyarrow, libarrow* 14.0.1
gdal 3.8.0
libgdal-arrow-parquet 3.8.0
geopandas 0.14.1 (for the mask)
fsspec, s3fs 2023.10.0

Reproduction:
import pyogrio
import pyogrio.raw
import geopandas as gpd

# NB: independent of fs, but somewhat dependent on data
target_path = "s3://overturemaps-us-west-2/release/2023-11-14-alpha.0/part-00000-6cb89013-4ec2-4b94-8e4b-8e27c7d30865.c000.zstd.parquet"

countries_gdf = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
au_mask = countries_gdf[countries_gdf.name == 'Australia'].geometry.iloc[0]

meta, table = pyogrio.raw.read_arrow(target_path, mask=au_mask)
# Attempt to convert to pandas, with or without self-destruct
table.to_pandas() # ⚡ throws obscure/unpredictable column conversion errors

Supplying the max_features flag fixes this because combine_chunks is called when that flag's present (plugging in a very large max_features is enough for a temporary workaround).
It seems to be restricted to geoparquet files involving Map<String, String> columns - running validate(full=True) without first calling combine_chunks, on just the map columns (sourceTags in this case) gets you this:

In chunk 0: Invalid: List child array invalid: Invalid: Struct child array #0 invalid: Invalid: Offset invariant failure: non-monotonic offset at slot 3505: 23393 < 24692

I suspect the post-filter arrow stream construction is slightly bugged in gdal, given a number of 'null count greater than array length' style validation errors also crop up (though these are much less severe, since to_pandas corrects them).

It looks like this is solved in GDAL #8768 in the forthcoming 3.8.1 release.

@H-Plus-Time GDAL 3.8.1 has been released and is available in Conda-Forge.

authors: H-Plus-Time brendan-ward rouault

repo: geopandas/pyogrio


text:
Error occurred loading flow for integration midea_ac_lan: cannot import name 'TIME_DAYS' from 'homeassistant.const' (/usr/src/homeassistant/homeassistant/const.py)

HA core version
2025.1.0b1
Intergration version
0.3.22
Device type and model
Air Conditioner Rotenso Versu Cloth
Used App
NetHome Plus
The description of problem
Integration does not load on the latest HOme Assistant Core beta with this error:
Error occurred loading flow for integration midea_ac_lan: cannot import name 'TIME_DAYS' from 'homeassistant.const' (/usr/src/homeassistant/homeassistant/const.py)
The logs
Additional warning:
Detected blocking call to import_module with args ('custom_components.midea_ac_lan.config_flow',) inside the event loop by integration 'config' at homeassistant/components/config/config_entries.py, line 179: return await super()._post_impl(request, data) (offender: /usr/src/homeassistant/homeassistant/loader.py, line 1304: return importlib.import_module(f"{self.pkg_path}.{platform_name}")), please create a bug report at https://github.com/home-assistant/core/issues?q=is%3Aopen+is%3Aissue+label%3A%22integration%3A+config%22 For developers, please see https://developers.home-assistant.io/docs/asyncio_blocking_operations/#import_module Traceback (most recent call last): File "<frozen runpy>", line 198, in _run_module_as_main File "<frozen runpy>", line 88, in _run_code File "/usr/src/homeassistant/homeassistant/__main__.py", line 227, in <module> sys.exit(main()) File "/usr/src/homeassistant/homeassistant/__main__.py", line 213, in main exit_code = runner.run(runtime_conf) File "/usr/src/homeassistant/homeassistant/runner.py", line 154, in run return loop.run_until_complete(setup_and_run_hass(runtime_config)) File "/usr/local/lib/python3.13/asyncio/base_events.py", line 707, in run_until_complete self.run_forever() File "/usr/local/lib/python3.13/asyncio/base_events.py", line 678, in run_forever self._run_once() File "/usr/local/lib/python3.13/asyncio/base_events.py", line 2033, in _run_once handle._run() File "/usr/local/lib/python3.13/asyncio/events.py", line 89, in _run self._context.run(self._callback, *self._args) File "/usr/local/lib/python3.13/site-packages/aiohttp/web_protocol.py", line 480, in _handle_request resp = await request_handler(request) File "/usr/local/lib/python3.13/site-packages/aiohttp/web_app.py", line 569, in _handle return await handler(request) File "/usr/local/lib/python3.13/site-packages/aiohttp/web_middlewares.py", line 117, in impl return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 92, in security_filter_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 83, in forwarded_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 26, in request_context_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 86, in ban_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 242, in auth_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/headers.py", line 32, in headers_middleware response = await handler(request) File "/usr/src/homeassistant/homeassistant/helpers/http.py", line 73, in handle result = await handler(request, **request.match_info) File "/usr/src/homeassistant/homeassistant/components/http/decorators.py", line 81, in with_admin return await func(self, request, *args, **kwargs) File "/usr/src/homeassistant/homeassistant/components/http/data_validator.py", line 74, in wrapper return await method(view, request, data, *args, **kwargs) File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 172, in post return await self._post_impl(request, data) File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 179, in _post_impl return await super()._post_impl(request, data)

I'm getting this issue as well.

Same.

@georgezhao2010 Let us know if you need any additional information here.

Read issue #595

Thanks @rafkra I can confirm https://github.com/wuwentao/midea_ac_lan repo is maintained and working fine.
All the best @georgezhao2010! I hope You're doing fine.

authors: aric89 ehbush mackowskim rafkra


text:
Bug displaying Expressions (Source Content) in the Container tab

With the need to create Expressions (called Source Content in Geovistory Toolbox) without the physical support, with Francesco we tinkered with the addition of Expression in the create menu (by putting the class 218 on "true").
This caused the display of those Expressions in the Container tab in the Sources (and not in the Content tab).
To avoid any issues, the class 218 was put back as "false" in the creation menu, but this bug needs to be solved for a project in autumn 2025.

Le problème semble se trouver dans ce fichier :
client/apps/app-toolbox/src/app/components/layout/left-drawer/components/sources-tabs/sources-tabs.component.ts
Il faudrait exclure de container les classes 218 et 503.

repo: geovistory/toolbox


text:
Does the plugin support the AMSmath environments (\begin{aligned}....\end{aligned})?

When I typed the sentences "- $$\begin{aligned}\sigma \ \delta\end{aligned}$$"，the result  was
.
The symbols "\ \" did not work.

The right result is

The backslash needs to be escaped in Markdown. Either of the following works:
- $$\begin{aligned}\sigma \\\\ \delta\end{aligned}$$
- `$$\begin{aligned}\sigma \\ \delta\end{aligned}$$`

See also https://github.com/gera2ld/markmap-lib/issues/9#issuecomment-617031900 .


text:
"violation" might not be the greatest word to use for reports/data structures

The codebase is filled with "violation", which itself has /quite/ a negative connotation.  Some synonym would probably be handy.

I totally agree and never really liked the usage. Do you have any suggestions for an alternative?

Do you have any suggestions for an alternative?

"finding" gets my vote

authors: Fuco1 caitlinelfring danbeam

repo: get-woke/woke