Switch to your IDE or text editor select "Startup" class and delete all distracting boilerplate code and comments that you don't need like screenshot below.
This is much cleaner.
You must configure .NET Core middleware to add static files into pipeline, to do that we use "Microsoft.AspNetCore.StaticFiles" library and then call extension method "UseStaticFiles".
By default .NET Core looking in "wwwroot" folder that is already created for you from project template in beginning of the tutorial.
Lets test use of current root as go to "wwwroot" and create new html file like on screenshot below in my case "test.html" with pure text for testing purpose.
Then start terminal(in my case I use vscode integrated terminal, see above screenshot) go to project folder and type `dotnet run`, like before dotnet will run local server and start listening for requests on port 5000 and from there our pipeline should have acces to "test.html" file.
On browser when we navigate url to file name (in my case url is localhost:5000/test.html) we see that the content appear on screen also files are properly injected and last but not least our console has no red lines (no errors).
Here is our html file when we open network tab.
If you follow along with me and everything is fine so far go to "wwwroot" folder and delete "test.html" file.
Next we should setup typescript and angular-cli configurations to sync with new changes on projects structure that we made, then serve webpack bundles in our public root because they had to be accesible from client browser.


Robin has suggested that I put the details for the Mk2 kits in one place,
Price options are-
Two etched and drilled boards £10
Two boards and kit of board mounted parts £35 + £3.70 P&P
Two built up boards with C.T. socket and off board LED and flying leads (no solder option) £45 = £3.70 P&P
Contrary to my post saying I wouldn't be able to supply the triac boards on their own I will now be able to supply kits for the O/P board with all components for £15 plus £1 P&P, please PM me if interested.
Rich.
Anyone who wants a fully built unit please PM me.
International post is extra please PM me for a quote
I have attached a parts list for those who wish to source their own bits.
The input board does not show the transformer, but this is included in the kit and made up boards.
IMPORTANT NOTE - When testing the Mk2 the Arduino is best powered by a separate 9-12V DC adapter, do not rely on the USB input to power the system, it will not necessarily give you the correct 2.5V reference voltage.
To order, please contact me direct.
Robin himself now has a small supply of suitable heatsinks for Mk2 Routers - see http://openenergymonitor.org/emon/node/2857
Re: Robins Mk2 solar diverter. For sale
Very neat, Rich, especially the heatsink.
I've not been able to find Discount Devices Shop on eBay. Any chance of a link?
(I've just found it as http://myworld.ebay.co.uk/ha5ia/ , but not that tubular heatsink)
Re: Robins Mk2 solar diverter. For sale
No problem -
http://www.ebay.co.uk/itm/200703388959?ssPageName=STRK:MEWAX:IT&_trksid=p3984.m1438.l2649
Re: Robins Mk2 solar diverter. For sale
I've just etched some more boards, and have bits available so if anyone is poised on the edge now the sun is back it may be time to take the plunge!
Re: Robins Mk2 solar diverter. For sale
Just to be clear, "Robin's code" will work equally well on any platform that has a current sensor & a voltage sensor. This obviously includes the emonTx. When I started out on this lark, I was convinced that having a shared reference was best, hence my use of the buffered reference. This is the arrangement that Rich's PCBs provide.
Some months down the line, it became apparent that, for the purpose of calculating real power" (which is what the meter does), it is not necessary to remove DC from the current stream. This happens automatically in the maths. All versions of Mk2 code therefore work equally well regardless of whether there is a shared reference or two independent ones. The only thing that's important is that DC-offset is accurately removed from the stream voltage samples, a feature which has been in place in the Mk2 code right from Day 1.
For a simple and effective Power Router, the combination of a standard Arduino with a pair of Rich's PCBs is hard to beat. I've just boxed up a configuration like this, picture attached. To add a remote dump facility, or anything else that requires an RF capability, the addition of a RFM12B module is very straightforward. It can just plug straight into the Arduino's i/o sockets as my LED gantry does in the attached pic. (Those LED's are just for demo purposes, but could no doubt shine through windows in the box's cover if required)
If an emonTx platform were to be used instead for a Mk 2 Router, then one would still need to fabricate the output circuitry on strip-board or the like, and provide an external AC source for the voltage sensor. When using Rich's PCBs, a pcb-mounted transformer for the voltage sensor is already included, which is a very neat feature.
Re: Robins Mk2 solar diverter. For sale
You don't even need to fabricate the strip-board output circuitry if using an SSR.
Makes for a very simple plug-n-play solution.
P.
Re: Robins Mk2 solar diverter. For sale
The wiring from the immersion heater circuit only connects up to the triac using the live /feed wires and earth, is their any reason not to just use one 3 core flex. Using the brown core from the circuit breaker and return to the outgoing immersion heater wire with the blue wire, connecting it on a din rail connector or similar? The blue wire would of course need marking brown at both ends.
http://en.wikipedia.org/wiki/DIN_rail
http://uk.rs-online.com/mobile/p/non-fused-din-rail-terminals/0802783/
Re: Robins Mk2 solar diverter. For sale
Hi I am new to this site, I have made a very crude Arduino controlled solar diverter. This consist of 2 x hall effect sensors one monitoring solar generation and the other monitoring consumption feeding an Arduino. I have 3 x 1Kw immersion heaters wired in a series / parallel configuration this can potentially give 333w 500w 1000w 1500w 2000w & 3000w. At present I have opted for 500w 1000w 1500w and 2000w. Although this is very crude it works after a fashion. However discovering this site and seeing how much more sophisticated solutions have been developed I would like to buy the kit of parts with the 2 boards, how can I proceed with this purchase?
Many Thanks Peter
P.S. I have attached a picture of my display if is of any interest. the figures on the right are the temperatures of my 300l hot water cylinder
Re: Robins Mk2 solar diverter. For sale
Peter: Send a message to richmc
Re: Robins Mk2 solar diverter. For sale
Anyone having difficulty testing the Mk2 please see the important note in the opening post.
Re: Robins Mk2 solar diverter. For sale
Hi Rich,
Can you explain the important note in the opening post please.
As far as I'm aware, my Arduino-based systems have always worked just as well when powered from either source: USB or 9V DC adaptor.
Re: Robins Mk2 solar diverter. For sale
I've had a couple of instances recently with customers trying to power the Mk2 with a laptop or PC USB lead and having problems getting a stable 2.5V, I know it sounds strange but could be down to the quality of the PC ect. I've also seen others powering the system using an external USB power supply with no problem so I put the rider there so hopefully anyone having similar problems will try an external PSU before pulling their hair out.
Have edited it slightly.
Re: Robins Mk2 solar diverter. For sale
I've done a little more research on the arduino web site and found.
"The board can operate on an external supply of 6 to 20 volts. If supplied with less than 7V, however, the 5V pin may supply less than five volts and the board may be unstable. If using more than 12V, the voltage regulator may overheat and damage the board. The recommended range is 7 to 12 volts."
And
"5V.This pin outputs a regulated 5V from the regulator on the board. The board can be supplied with power either from the DC power jack (7 - 12V), the USB connector (5V), or the VIN pin of the board (7-12V). Supplying voltage via the 5V or 3.3V pins bypasses the regulator, and can damage your board. We don't advise it."
It's not made clear if the circuit switches between power sources to get to the 5V O/P pin but I'm guessing if its using the USB for the supply it won't take much to go below the regulators drop out voltage, effectively switching the 5V o/p off. Either way it seems it's not recommended to operate the arduino from the USB I/P if you are powering outputs.
Thats my thinking unless someone wiser comes along, and puts me right.
Re: Robins Mk2 solar diverter. For sale
OK, so the Arduino prefers to operate with its own locally regulated 5V supply rather than relying on an external one via the USB. That makes sense.
Having said which, I've never noticed any difference in performance. When running a rig via the USB, I generally disconnect any existing DC adaptor if only to give it a break. The battery in my laptop is pretty knackered so I always use the laptop on mains power. Maybe this will improve the quality of the 5V that is available at its USB ports ;)
Re: Robins Mk2 solar diverter. For sale
I had a chance to explore the nominal 5v line today.
When powered via the USB on my laptop it was 4.92v and when supplied with 7v or more from a bench PSU, the voltage was 5.01v. In each case the reference voltage was almost exactly half the measured values.
Like Robin, I could find no difference in performance from one supply or the other.
Bob
Re: Robins Mk2 solar diverter. For sale
Thank you post office, after "realigning" their postal rates, what a different way of saying "putting the price up" . P&P for kits and populated boards is now £3.70.It also appears that the "free compensation" has dropped from £50 to £20, Oh well!
Re: Robins Mk2 solar diverter. For sale
Today, I finally got around to doing a comparison of how the two platforms perform.
As a lasting record of the process, I took two videos. The first one at http://youtu.be/h8HDdIpAD_c just shows how the test rig behaves on its own. With current passing through two of the coils of my 3-phase meter in opposite directions, the dial is more or less static but a bit of drift does creep in as the currents are increased.
The second video, at: http://youtu.be/nq8U3v0nzr4 shows each of the two Mk2 Routers controlling a dump load in order to balance the flow of simulated PV. There is minimal difference between their performances. I have also checked with the two systems swapped over, thereby using different coils in the meter, and there was no noticeable difference that I could see.
So, as far as I can ascertain, the Mk2 Router design works equally well on either platform: the emonTx, with its multiple independent voltage references, or my alternative hardware which its single shared reference.
Re: Robins Mk2 solar diverter. For sale
Robin, It appears that your videos are marked as private or at least they are from my you tube a/c
Cheers
Bob
Re: Robins Mk2 solar diverter. For sale
Oops, sorry about that, they are now Public.
Re: Robins Mk2 solar diverter. For sale
I've just watched the videos, Thanks for those. Interesting that the degree of drift in the meter looks like it is masking the energy bucket algorithm in your code. I'd expect it to be moving the dial forwards and then back as 'PV' is dumped out to the grid and then pulled back.
I've got several meters here but they are all digital types rather than dial ones. Aren't they beautifully made. Real engineering!
I'm going to be busy plumbing for a while now as my thermal store has arrived. Just typical that all the components for my diverter have arrived too so I can set my other pair of hands to work on those.
Cheers
Bob
Re: Robins Mk2 solar diverter. For sale
I'd expect it to be moving the dial forwards and then back as 'PV' is dumped out to the grid and then pulled back.
When watched close-up, the dial can indeed be seen to be moving in that way. I'm sorry if that doesn't come across effectively on the videos.
My hunch is that because of its inertia, the dial has difficulty when called on to suddenly change direction, hence some non-linearity is creeping in. Digital meters do not have such problems, but they unfortunately tend to remain silent until you've been charged, by which time it's too late to do anything about it!
A home-built router provides the best of all worlds. It has zero 'inertia', and can communicate its energy state at any time. The measurement system just needs to be linear, hence my frequent reminders of this basic requirement.
The choice of hardware platform is intimately linked to its ability to measure the flow of energy linearly.
Re: Robins Mk2 solar diverter. For sale
Hi is your pv system still for sale and would it work on a 4 kw system
Re: Robins Mk2 solar diverter. For sale
Hi is your pv system still for sale and would it work on a 4 kw system
I don't see why not Roy. The hardware needs to be scaled up slightly so that
1)The CT provides +/- 400 counts of the ADC for say 16-20 amps
2)The triac or SSR needs to be rated for a minimum of 20amps and have adequate heat sinking
3) The dump load should be able to absorb the maximum power your PV system can provide. eg two immersion heaters connected in parallel or other resistive loads totally a minimum of 4kW
4) all the power wiring must be able to take the peak currents involved.
hth
Bob
Re: Robins Mk2 solar diverter. For sale
Hi is your pv system still for sale and would it work on a 4 kw system
Robin's PV system is not up for sale as such (unless someone makes him an offer that he can't refuse!), but my PV Router design should indeed be able to handle 4 kW without any difficulty.
The latest version of the sketch, Mk2i_rev5, can control any number of logical loads - and physical loads too, if you can find the pins to drive them.
If you don't require an RF capability, there should be plenty of spare pins to work with.
Re: Robins Mk2 solar diverter. For sale
I ought to point out that the thread title refers to pcb's and a kit of parts as detailed at the head of the thread; and that the emonTx kit with or without the RFM12B module can also be used, with the addition of a small handful of extra components and a pcb (available as above), heatsink and case.
If you ask nicely, richmc might put an "output kit" together for you for use with the emonTx (one resistor R6 on the triac board needs changing to 75 Ohms to suit the lower supply voltage of 3.3 V).
Re: Robins Mk2 solar diverter. For sale
"Hi is your pv system still for sale and would it work on a 4 kw system
As Robert & Robin say its not actually Robins own system hence "Robins Mk2 solar diverter (full stop) For sale." I think Robin is quite happy with his set up and wants to keep it!
I don't see why not Roy. The hardware needs to be scaled up slightly so that..........
Are you talking about 4KW of PV of 4KW of load? either way it will work fine with no adjustment.
1)The CT provides +/- 400 counts of the ADC for say 16-20 amps
Not sure what 9fingers is saying there. The Mk2 Arduino Uno based does that already, I cant speak for the open energy products as I've not tried them, I bought an Eco Eye before I knew about it. So I'm happy with my Mk2 and Eco Eye (despite its limitations) to do all the emon can offer for my needs plus I only had to build the Mk2 and have a professionally built monitoring unit on my desk.
2)The triac or SSR needs to be rated for a minimum of 20amps and have adequate heat sinking
The triac is already rated at 40A as a safety feature (that's around 9.6KW worth of resistive load) And of course a good heatsink is essential.
3) The dump load should be able to absorb the maximum power your PV system can provide. eg two immersion heaters connected in parallel or other resistive loads totally a minimum of 4kW
WHY? It dosn't NEED to absorb all the maximum power, you have to be really tight if you think you need to install another hot water tank just to prevent anything going back to the grid. Personally I'm set up to firstly heat up the water, then I manually switch over to a 2KW convection heater, why manually? because if I'm not in I don't need to waste generated power heating the home, I'd rather "stay green" and let the grid have it. In the summer I will be installing aircon with a different switching system. If I had a swimming pool I would be heating that, but I havn't so I'm not getting into a paddy about exporting energy.
4) all the power wiring must be able to take the peak currents involved."
Yes that is true of anything you plug into your mains and rather obvious.
And lastly I sell the bits as listed in the opening post so cannot supply just the O/P board (sorry Robert, just not worth the faffing around as I etch the boards as pairs four or eight at a time), I make practically nothing from this stuff once postage in and other costs like etchent and equipment is taken into account. My time isn't factored in either, I sell this stuff because I enjoy "playing around" with electronics something I did professionally for many years. I also like to think I'm helping others to benefit from Robins elegant design and use of his code and of the code he has adapted from other sources by supplying these kits to others. I will on occasion supply a full unit to those who don't feel comfortable doing it themselves but stress its up to them what they do with the box of magic tricks.
Re: Robins Mk2 solar diverter. For sale
Hi, I am looking to build one of these, what bits do you have available and what bits will I still need to get in order to complete it. I live in Spain and in dire need of one of these routers as I am getting charged by my grid provider for any excess that I produce!!!!
Thank for your help.
Cheers
Don.....
Re: Robins Mk2 solar diverter. For sale
Thewaver is that really happening? Jajaja viva España.
Un saludo!
Re: Robins Mk2 solar diverter. For sale
Hi, I am looking to build one of these, what bits do you have available and what bits will I still need to get in order to complete it.
Don, all the available items are listed at the top of this thread, as I explained to you in my PM.
Re: Robins Mk2 solar diverter. For sale
well, I am told that it depends on what meter you have. If you have the old mechanical type with the spinning wheel, then this is fine, no charge for any excess being pumped back into the grid. If you have a digital meter, then you will be charged for excess being pumped back into the grid, I read that iberdrola are embarking on a project to update all of their meters to new smart digital meters. I have a digital meter, worst luck!!
Re: Robins Mk2 solar diverter. For sale
Contrary to my post saying I wouldn't be able to supply the triac boards on their own I will now be able to supply kits for the O/P board with all components for £15 plus £1 P&P, please PM me if interested.
Rich.
Re: Robins Mk2 solar diverter. For sale
It's good that you are now doing this richmc but, as has been said many times before, wouldn't it make more sense for people to use an SSR instead since they are available for <£10 ?
I know there have been questions about the quality of some of the very cheap (£3) eBay versions but I'm sure there are also some good ones out there too. It would be helpful if anyone who is using one successfully could post their supplier details.
Re: Robins Mk2 solar diverter. For sale
Hi Martin, just giving the consumer the choice, Having seen some of the fakes selling for £15-£20 being cheap is not the only issue, just because you pay more doesn't mean you are going to get the real thing, The two big suppliers (I can't name them buy you know) have been stung by finding stock of all sorts of components to be fakes. Personally I would prefer to know that what I an using is safe and legitimately produced. A "fake" SSR could be built with bona fide parts, but then what, is it encapsulated in fire retardant epoxy or a cheep liquid plastic that will give off cyanide if it catches fire. For the sake of a few quid I'll build my own thanks.
Re: Robins Mk2 solar diverter. For sale
I'm not aware of any good SSR's Martin, but I used a £3 SSR-25 DA from Ebay and it only lasted a couple of weeks.
It was bolted to a large steel plate, used thermal paste and only controlled a 4A passive load, yet it only lasted 2 weeks (not as long as it took to arrive from China!), but then, what should I expect for £3....
I'm now using a BTA16-600B Triac (£2.09p from Maplins) + MOC3063 optocoupled driver which I feel more comfortable with.
Paul
Re: Robins Mk2 solar diverter. For sale
I've used a BTA16 too without any trouble. Some months ago, I unintentionally left it running for several hours on a lovely sunny day. With only a small heatsink in place, I thought it would have fried. But no, it survived and has been an integral part of my demo rig ever since. Last week it was replaced by a BTA25 and attached to a larger heatsink. After running for an hour at 3 kW, this arrangement was pleasantly warm, but certainly not hot.
The BTA series of triacs seem mighty robust to me. For most systems, the BTA41 is massively over-rated for the job.
Re: Robins Mk2 solar diverter. For sale
The point about using the BTA41 was that it might, just might be able to survive blowing a 13 A fuse or tripping a 16 A MCB. A lesser rated device would stand no chance. ( The I2t value is 1000 A2s compared with 144 A2s for the 16 A version.) The maximum junction temperature for both is 125 °C so they can safely get quite warm.
Re: Robins Mk2 solar diverter. For sale
Good point, Robert, thanks for the reminder.
The only point I was trying to make yesterday is that there is no need to go for the higher rated triac under normal conditions. Under normal conditions, with a 3 kW load, the 16 Amp BTA16 with a suitable heatsink works fine.
With its smaller package type (TO-220), getting the heat out of the BTA16 is more tricky than for the higher-rated devices. The 25 and 40 Amp versions both have the larger (TO3) package.
Re: Robins Mk2 solar diverter. For sale
Did you open up your faulty SSR Paul? I'm curious to know what was in it and hopefully what failed. Someone (Robert?) mentioned that they had seen some clones that just had a reed switch inside them.
The one that Petrik opened up looks reasonable - at least it has a triac in it!
Re: Robins Mk2 solar diverter. For sale
What I didn't mention is a triac is to a first approximation a constant-voltage device (in the 'on' state), so the power dissipation is dependent only and almost perfectly linearly on the average current passing through it. In fact, the 40 A version has a somewhat lower dissipation (14 W compared to 17 W @ 15 A ) due to its lower bulk resistance.
You can of course use the lower rated triac, but unless you want to include a very expensive but easily replaceable fast-acting fuse, you'd better make sure the triac is easily replaceable. (Even with the 40 A one, its survival is by no means certain.)
It wasn't me who said a SSR was 'just' a reed relay. I have one in front of me, made by FR Electronics (now Crydom) that does have a reed relay in it (you can hear it ping), but it also has the top of a TO-3 Q6025 poking through a hole in the base, clearly intended to sit on a hefty heatsink. The Q6025 is a 25 A triac, I believe. Obviously this one couldn't be used even for burst-mode control.
Re: Robins Mk2 solar diverter. For sale
The one that Petrik opened up looks reasonable - at least it has a triac in it!
Sorry, cancel this post, I was behind the times. Things move fast around here. Blink and you can miss half a dozen posts!
Re: Robins Mk2 solar diverter. For sale
"The point about using the BTA41 was that it might, just might be able to survive blowing a 13 A fuse or tripping a 16 A MCB. A lesser rated device would stand no chance. ( The I2t value is 1000 A2s compared with 144 A2s for the 16 A version.) The maximum junction temperature for both is 125 °C so they can safely get quite warm".
I knew there was a reason I went for the 40A triac, it was after the fuse debate early on in the Mk2 thread and Noah wanting to switch 6KW, from what Robert says worth sticking with it.
"The one that Petrik opened up looks reasonable - at least it has a triac in it!"
I'm not sure I agree with that , I've seen the best and worst of electronic construction and think thats pretty poor, blooby soldering with the triac leads rather close to each other. And it looks like the triac tab has been cut off, also no sign of any heatsink compound and the component encapsulation looks like a token gesture. I wouldn't be happy using that.
The problem with SSRs is you don't know how good they are unless you destroy them by hacking them apart.
Re: Robins Mk2 solar diverter. For sale
Martin, well as can be seen, they have almost covered all of the components in some sort of (very hard) resin, with just the LED protruding, and despite my trusty hammer, I could not remove it!
The Triac is a BTA16-600B which was screwed to the metal back plate, and which again was completely enclosed in the resin, so no air circulation was possible and there was no thermal compound between the Triac/backplate.
Not exactly CE lab testing, but I reassembled the case, and put a blowlamp on it for 15 seconds until it was well alight and emitted loads of black acrid smoke. To my surprise, it self-extinguished within 3 seconds. A further prolonged blast from the blowtorch showed that it retained it's structure and did not drip molten plastic. Again it self-extinguished almost immediately.
Paul
PS - Martin, I've now installed root onto a external HDD from a fresh install, so I've only about a week's worth of data and therefore your php script hasn't kicked in yet. I'll let you know how it goes.
Re: Robins Mk2 solar diverter. For sale
If an SRR at best just has a triac inside it, then what is the objection to simply using a triac? An MOC3041 and BTA41 pair come to no more than a fiver, and their performance is virtually guaranteed.
Seems a no brainer to me (he says while diving for cover ...)
Re: Robins Mk2 solar diverter. For sale
1) If using a emontx module, it avoids building and mounting another PCB to accommodate the Triac driver.
2) It's neater and easier to physically mount and wire a SSR.
But neither of the above apply if the SSR's longevity and performance are issues.
Paul
Re: Robins Mk2 solar diverter.  And bares out my point that with an SSR you can see what you are getting.
I used to be an engineer for Kodak on equipment that had around 25 SSRs on board, even as a "foot soldier" we would carry at least 4 spares and get through them pretty quickly I think they were mainly Crydom relays, now £36 a pop.
Re: Robins Mk2 solar diverter. For sale
Thanks for that Paul. It's a shame they do get covered in resin as without it you could doctor one to improve any shortcomings. I guess we'll never know what actually failed.
I have to agree that the emonTx/SSR combination is by far the neatest and most professional-looking solution. Probably the easiest to build too. I'm sure there are good quality SSRs out there. This one from Farnell looks promising for £18.
I've ordered a couple of the Fotek ones from UK eBay suppliers to have a play with.
Re: Robins Mk2 solar diverter. For sale
I can't see why a properly built SSR should be any less reliable than a PCB with the exactly the same components on it Rich?
Re: Robins Mk2 solar diverter. For sale
Well, 10 out of 10 for delivery anyway! I ordered two 25A SSRs at £6.49 each and one 40A version at £13.20 from different suppliers yesterday afternoon and they all turned up in this morning's post.
There is a clear difference in quality between the two versions. It's subtle but everything feels and looks slightly better on the 40A device. The label contrast is much better, the text is crisper and the circle around the LED window is exactly centered.
Also the 40A part came with a protective cover and there is clear evidence of heat sink compound on the screw holding the triac on the 40A device, whereas there isn't any sign of this on the 25A devices.
The chap selling the 40A parts made a point of stating that they are genuine CE approved parts and considering the above comments and the general feel of quality I think I'm inclined to believe him. I also think I could probably now tell the difference between genuine and cloned parts.
Now to do a bit of testing...
Re: Robins Mk2 solar diverter. For sale
Martin, Robert Wall made the suggestion that it may be better to trigger the SSR by using negative applied from the emonTX rather than positive applied, because you would have an increased voltage margin to effect the trigger cleanly.
If you want me to test them to see if they self-extinguish, I've got plenty of gas left!
Paul
Re: Robins Mk2 solar diverter. For sale
Yes, that makes sense, although the spec is a bit confusing because at 5V there is a slightly higher voltage if you apply the positive signal whereas at 3V it's slightly higher if you apply the negative signal.
Are you going to do your test in an enclosed space to test for cyanide too :)
Re: Robins Mk2 solar diverter. For sale
"The label contrast is much better, the text is crisper and the circle around the LED window is exactly centered."
So what one is the fake?, did either come with a silicon thermal washer as specified by the maker?
Re: Robins Mk2 solar diverter. For sale
Sorry, I thought I'd made it clear that I believe the 40A one to be genuine but obviously I can't be sure. Neither came with a thermal washer but then I haven't seen any mention of one being supplied with any of manufacturer's info that I've looked at.
Regardless to these particular examples it's clear that there are genuine, quality SSRs around and if you want a professional-looking, CE approved solution it's surely the best, possibly the only, way to go.
Still think the emonTx/SSR combo is the easiest to put together too, and you get the benefits of a second CT input for PV monitoring, RF capability and temperature and pulse inputs...
Re: Robins Mk2 solar diverter. For sale
Hi- I am in the process of building my own PV diverter - I bought one of Robin's kits and have just put together a new emonTX that I bought a while ago. I also have a Crydom D2450PG SSR and thought I would have a look at driving it as an alternative. The Crydom is currently about £30 from Farnell.
Using the emonTX and a very simple sketch of on/off every half second I found that the Crydom was making my load light bulb flicker. Although its rated at 3-32v to trigger, 3.3V from the emonTX was not good enough. (The front does say 4.5V-32V - I suspect the Farnell and the spec sheet are wrong)
Using the Temperature connector proved a good solution as it can supply 5V and switches down to 1.7V when switched to on (5v - 3.3V). No flickering when using this setup - it works perfectly.
Can anyone answer if I be loosing anything by not using Robin's kit for the CT input side and just having a standard CT connected to the emonTX?
Ian
Re: Robins Mk2 solar diverter. For sale
Hi, as I don't supply any kits myself, I presume that you've bought one from Rich ;)
The input circuitry on those boards requires a +5V supply from which to drive the buffer for the shared reference supply. The outputs are expected to go to an Arduino which has its ADC input range set to the default value of 5V.
The emonTx runs on 3.3V and so its input signals need to be biased at the lower value of 1.65V. This happens automatically when you populate the relevant resistor locations.
I think your question is: "Does Robin's Mk2 PV Router work equally well using either type of hardware?" The answer to which is "Yes, both platforms appear to give give identical performance."
Re: Robins Mk2 solar diverter. For sale
Thanks for that - ill go with the SSR first and keep the kit as a backup or to dump into another source.
Ian
Re: Robins Mk2 solar diverter. For sale
As far as I'm aware, your SSR will only replace the output components, i.e. the triac and trigger. You'll still need the input circuits, but either variant of hardware should give the same performance.
As your SSR requires a 5V control signal, then an Arduino + Rich's input board would seem a good way to go. You could then use your emonTx with Rich's output board and a triac for a second system.
Re: Robins Mk2 solar diverter. For sale
I have to reiterate, if you use an SSR, you don't know what you are using, if it only costs you a few quid as we all know "you get what you pay for". At least if you go for my option you can see what you are getting. I'm honestly wondering why I bothered to start this thread. It was meant as a simple statement of what I have to offer, not a platform for those who think they know better to throw their 2p worth in. There are many on this and other forum who have had SSR failures, to my knowledge there have been no failures with my boards based on Robins system.
I'm happy to have 100 plus happy people using the boards I've produced in one form or another who are using them to save money heating water.
Re: Robins Mk2 solar diverter. For sale
Interesting debate - I have both richmc and SSR+emontx on the desktop. In my case SSR is hooked to the emontx pulse output configured to 5V. As the SSR can be ordered with DIN rain mount this allows me to install it inside the main fuse cabinet next to warm water solenoid as a professional installation with CE approved parts. Richmc unit I will continue to use when testing but as it is lacking normal installation screw holes and its not CE marked it will stay as testing rig. Both of these have a purpose and a place in the evolution of mk2(i) as the BTA triac based output device.
Re: Robins Mk2 solar diverter. For sale
Hi richmc - Great job on the boards/kit. Are they still available?
Re: Robins Mk2 solar diverter. For sale
Hi Solaroz you have PM.
Re: Robins Mk2 solar diverter. For sale
Hi,
On RichMC cct diagram, R7 is stated as 380 ohms but on the parts list there is no 390 ohm resister listed. There is a 360 ohm listed so am I right in assuming that R7 is really a 360 Ohm resister ?
Thanks
Re: Robins Mk2 solar diverter. For sale
As far as I'm aware, Rich has always followed the Mk2 Router design that I posted originally. The component values in the output stage are exactly as recommended in Fairchild's datasheet.
The resistor that's connected to pin 6 of the trigger is 360R, and the one that's connected to pin 4 is 330R. Having said which, neither of these values appear to be critical.
At once stage, while attempting to obtain a value of exactly 360R by using two resistors in parallel, I inadvertantly connected them in series. This gave a total resistance in excess of 1Kohm, yet the circuit worked perfectly during the next few days until I spotted my mistake and remedied the wiring. I also recall someone saying that one of these resistors need not be fitted at all.
Re: Robins Mk2 solar diverter. For sale
Suitable heatsinks for Mk2 Routers are now available at:
http://openenergymonitor.org/emon/node/2857
Re: Robins Mk2 solar diverter. For sale
Earlier this year, I bought a batch of "output" PCBs from Rich. Around a dozen of these are surplus to my needs and I'd be happy to pass these on for £8 each including postage.
These boards are ideal for an emonTx-based PV Router. Send me a PM if you're interested.
(Cheers Rich, hope to see you back online soon)
Re: Robins Mk2 solar diverter. For sale
Is it still possible to purchase a PV Router board , or assembled unit ?
I am using an emontx3 with 4 Ct's 1x grid 2 x pv 1 x EV
Dave
Re: Robins Mk2 solar diverter. For sale
Talk to Robin Emley (calypso_rae). I only got hold of the schematic for the production emonTx V3 last night, so I can't comment on how easy (or otherwise) it is to use it to drive the opto-trigger and hence perform as an energy diverter/router. For now, an emonTx V2 or Arduino would be the safest starting point.
We've not heard from Rich for some time, although I believe attempts have been made to contact him.
[Edit] I understand Rich has in fact been in contact with one of the community recently. We hope he's recovering satisfactorily and will be back soon.
Re: Robins Mk2 solar diverter. For sale
I can only supply the output PCB. The input circuitry is not difficult to construct on stripboard for use with an Arduino.
I've not used the V3 emonTx but see no reason why this board can't be used for a Mk2 PV Router just as the V2 version. Then there's no need for an input board, only an AC voltage source. The output pin for the trigger may need to be changed, but the same PCB for the trigger & triac should be usable.
Re: Robins Mk2 solar diverter. For sale
I should be getting my hands on a production V3 within a day or two. It's not immediately clear how practical it is to drive an output, nor which one to use, and that's why I was suggesting staying with V2 until the V3 is proven in this application.
Re: Robins Mk2 solar diverter. For sale
It should be just as easy if not easier to control things from the emonTx V3. A number of I/O's are broken out on the terminal block for easy access. See the port map on the wiki: http://wiki.openenergymonitor.org/index.php?title=EmonTx_V3
If IRQ is not needed dig 2 is an easy one to use as a digital I/O.
ADC 5 / Dig19 and Dig 5 are connected together with with a 4.7K resistor for DS18B20. This can be removed if not required or one of the I/O's could be used as long as the other is in high impedance state (input). The schematic is on solder pad: http://solderpad.com/openenergymon/emontxv3/.
Any feedback, ideas for future revisions is much appreciated. Please message me direct, I struggle to monitor all forum threads.
Re: Robins Mk2 solar diverter. For sale
I'm pretty new to all this. i now have a emonTx V3 up and running with 2 CTs to monitor my solar and grid power. I'm very keen to get a solar diverter up and running asap.
I presume I'll need a temperature sensor for the cylinder (need to to run a long cable from my main cupboard up to the cylinder - recommendations for cable?)
I've read many posts giving both sides of the arguement for either a controller / triac or SSR. I have to admit the SSR looks neater.
At the moment I'm using the emonTxV3 Discrete Sampling sketch to output some nice dials and graphs. I presume a replacement sketch to switch the triac / SSR would also still be able to transmit the data required to keep these running?
Exciting times ahead - and lower electricity and gas (HW )consumption in sight!
Re: Robins Mk2 solar diverter. For sale
Yes - if you choose the right sketch!
Re: Robins Mk2 solar diverter. For sale
If you just want to heat your water, there's no need for a temperature sensor. Until the 'stat opens, your diverter system will keep on heating while the sun shines. If a sensor is available, the code would need to be able to make some use of it.
So far, none of my Mk2 PV Router sketches have included temperature sensing or the transmission of routine data. Other constructors have gone down this route, but I've not done so. Once my new hardware (*) is available, I intend to post further versions of the Mk2 code that will include an RF capability which can supply routine data for use by emonCMS. The new hardware has two independent current-sensors thus making it possible to record accurately the amount of diverted energy, or anything else of interest, e.g. total generated energy.
Knowing how much surplus energy has been diverted "today" is a really nice feature. Having been away for a few days, I was pleasantly surprised to find the DHW was hot on our return. With my front-panel display showing "2.317 kWh", that explains why :)
(*) My new h/w is described at: http://openenergymonitor.org/emon/node/3238
Re: Robins Mk2 solar diverter. For sale
Hi
I am new to the forum so have not got to grip with the protocols as yet.
I am in the process of collecting together the components for the Mk2 and would like to buy the input and triac pcbs.
What will the price be including postage to Devon and what is the ordering process.
Please help.
Thanks in anticipation.
Re: Robins Mk2 solar diverter. For sale
Hi Laurence, if you send me a PM, I should be able to help :)
Thanks, Robin (calypso_rae)
Re: Robins Mk2 solar diverter. For sale
Hi Robin eand all.
I'm trying to set up robins mk2 with an ssr . the voltage as i have now read and discovered requires to be 5v . how can i convert mk2 to give this trigger voltage
Thanks Chris
Re: Robins Mk2 solar diverter. For sale
How about adding a transistor stage which could supply a higher DC voltage to your SSR?
Or you could use an Arduino which runs at 5V rather than 3.3V
Re: Robins Mk2 solar diverter. For sale
Thanks Robin
Thats done the trick , Flashing away quite nicely
regards Chris
Re: Robins Mk2 solar diverter. For sale
Hello. Would you kindly share where you bought these genuine SSR from?
I'd like to know since it seems they are genuine, as per:
http://canada.ul.com/safetyalerts/ul-warns-of-solid-state-relay-with-cou...
and there are so many fakes overheating, etc.
Thanks
Re: Robins Mk2 solar diverter. For sale
http://uk.rs-online.com
Re: Robins Mk2 solar diverter. For sale
A while back, I was kindly given a 25A SSR to play with. This SSR appears to work OK but I have always used the Crydom version instead, mainly because that name has often appeared on this forum.
Turns out that my supposedly "Fotek" SSR is an exact match to the counterfeit one in the above link ...


| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/boto3/__init__.py |
29 |
10 |
0 |
66% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/boto3/docs/__init__.py |
11 |
8 |
0 |
27% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/boto3/docs/action.py |
44 |
30 |
0 |
32% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/boto3/docs/attr.py |
20 |
13 |
0 |
35% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/boto3/docs/base.py |
14 |
10 |
0 |
29% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/boto3/docs/client.py |
10 |
7 |
0 |
30% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/boto3/docs/collection.py |
55 |
42 |
0 |
24% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/boto3/docs/docstring.py |
41 |
10 |
0 |
76% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/boto3/docs/method.py |
24 |
21 |
0 |
12% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/boto3/docs/resource.py |
158 |
123 |
0 |
22% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/boto3/docs/service.py |
67 |
49 |
0 |
27% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/boto3/docs/subresource.py |
50 |
40 |
0 |
20% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/boto3/docs/utils.py |
79 |
65 |
0 |
18% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/boto3/docs/waiter.py |
32 |
22 |
0 |
31% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/boto3/exceptions.py |
35 |
12 |
0 |
66% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/boto3/resources/__init__.py |
0 |
0 |
0 |
100% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/boto3/resources/action.py |
70 |
47 |
0 |
33% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/boto3/resources/base.py |
57 |
25 |
0 |
56% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/boto3/resources/collection.py |
133 |
70 |
0 |
47% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/boto3/resources/factory.py |
153 |
67 |
0 |
56% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/boto3/resources/model.py |
194 |
46 |
0 |
76% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/boto3/resources/params.py |
55 |
47 |
0 |
15% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/boto3/resources/response.py |
92 |
74 |
0 |
20% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/boto3/s3/__init__.py |
0 |
0 |
0 |
100% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/boto3/s3/inject.py |
98 |
67 |
0 |
32% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/boto3/s3/transfer.py |
74 |
45 |
0 |
39% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/boto3/session.py |
86 |
24 |
0 |
72% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/boto3/utils.py |
27 |
2 |
0 |
93% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/__init__.py |
35 |
5 |
0 |
86% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/args.py |
90 |
22 |
0 |
76% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/auth.py |
471 |
371 |
0 |
21% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/awsrequest.py |
220 |
168 |
0 |
24% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/client.py |
376 |
135 |
0 |
64% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/compat.py |
135 |
75 |
0 |
44% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/config.py |
36 |
11 |
0 |
69% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/configloader.py |
84 |
44 |
0 |
48% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/credentials.py |
529 |
295 |
0 |
44% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/docs/__init__.py |
11 |
8 |
0 |
27% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/docs/bcdoc/__init__.py |
1 |
0 |
0 |
100% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/docs/bcdoc/docstringparser.py |
119 |
83 |
0 |
30% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/docs/bcdoc/restdoc.py |
107 |
74 |
0 |
31% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/docs/bcdoc/style.py |
273 |
196 |
0 |
28% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/docs/client.py |
61 |
43 |
0 |
30% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/docs/docstring.py |
38 |
14 |
0 |
63% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/docs/example.py |
119 |
100 |
0 |
16% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/docs/method.py |
87 |
76 |
0 |
13% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/docs/paginator.py |
48 |
38 |
0 |
21% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/docs/params.py |
130 |
107 |
0 |
18% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/docs/service.py |
47 |
32 |
0 |
32% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/docs/shape.py |
37 |
29 |
0 |
22% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/docs/sharedexample.py |
141 |
122 |
0 |
13% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/docs/utils.py |
69 |
39 |
0 |
43% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/docs/waiter.py |
29 |
21 |
0 |
28% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/endpoint.py |
141 |
71 |
0 |
50% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/errorfactory.py |
36 |
24 |
0 |
33% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/exceptions.py |
120 |
17 |
0 |
86% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/handlers.py |
408 |
303 |
0 |
26% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/hooks.py |
201 |
63 |
0 |
69% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/loaders.py |
133 |
14 |
0 |
89% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/model.py |
276 |
163 |
0 |
41% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/paginate.py |
356 |
296 |
0 |
17% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/parsers.py |
393 |
293 |
0 |
25% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/regions.py |
81 |
25 |
0 |
69% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/response.py |
41 |
25 |
0 |
39% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/retryhandler.py |
160 |
70 |
0 |
56% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/serialize.py |
318 |
237 |
0 |
25% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/session.py |
296 |
82 |
0 |
72% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/signers.py |
192 |
146 |
0 |
24% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/translate.py |
14 |
0 |
0 |
100% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/utils.py |
496 |
355 |
0 |
28% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/validate.py |
154 |
110 |
0 |
29% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/__init__.py |
0 |
0 |
0 |
100% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/__init__.py |
26 |
5 |
0 |
81% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/adapters.py |
177 |
120 |
0 |
32% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/api.py |
24 |
14 |
0 |
42% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/auth.py |
133 |
107 |
0 |
20% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/certs.py |
9 |
4 |
0 |
56% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/compat.py |
35 |
12 |
0 |
66% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/cookies.py |
224 |
159 |
0 |
29% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/exceptions.py |
26 |
6 |
0 |
77% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/hooks.py |
18 |
10 |
0 |
44% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/models.py |
404 |
338 |
0 |
16% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/packages/__init__.py |
2 |
0 |
0 |
100% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/packages/chardet/__init__.py |
11 |
8 |
0 |
27% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/packages/urllib3/__init__.py |
34 |
12 |
0 |
65% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/packages/urllib3/_collections.py |
178 |
123 |
0 |
31% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/packages/urllib3/connection.py |
111 |
67 |
0 |
40% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/packages/urllib3/connectionpool.py |
280 |
226 |
0 |
19% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/packages/urllib3/contrib/__init__.py |
0 |
0 |
0 |
100% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/packages/urllib3/contrib/pyopenssl.py |
148 |
145 |
0 |
2% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/packages/urllib3/exceptions.py |
67 |
15 |
0 |
78% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/packages/urllib3/fields.py |
68 |
56 |
0 |
18% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/packages/urllib3/filepost.py |
38 |
27 |
0 |
29% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/packages/urllib3/packages/__init__.py |
2 |
0 |
0 |
100% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/packages/urllib3/packages/six.py |
217 |
120 |
0 |
45% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/packages/urllib3/packages/ssl_match_hostname/__init__.py |
8 |
5 |
0 |
38% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/packages/urllib3/poolmanager.py |
116 |
83 |
0 |
28% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/packages/urllib3/request.py |
36 |
24 |
0 |
33% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/packages/urllib3/response.py |
241 |
198 |
0 |
18% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/packages/urllib3/util/__init__.py |
7 |
0 |
0 |
100% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/packages/urllib3/util/connection.py |
55 |
49 |
0 |
11% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/packages/urllib3/util/request.py |
23 |
19 |
0 |
17% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/packages/urllib3/util/response.py |
10 |
9 |
0 |
10% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/packages/urllib3/util/retry.py |
98 |
67 |
0 |
32% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/packages/urllib3/util/ssl_.py |
112 |
90 |
0 |
20% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/packages/urllib3/util/timeout.py |
57 |
41 |
0 |
28% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/packages/urllib3/util/url.py |
94 |
80 |
0 |
15% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/sessions.py |
258 |
193 |
0 |
25% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/status_codes.py |
8 |
0 |
0 |
100% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/structures.py |
39 |
15 |
0 |
62% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/requests/utils.py |
329 |
253 |
0 |
23% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/vendored/six.py |
393 |
183 |
0 |
53% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/botocore/waiter.py |
150 |
119 |
0 |
21% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/certifi/__init__.py |
2 |
0 |
0 |
100% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/certifi/core.py |
13 |
4 |
0 |
69% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/__init__.py |
11 |
7 |
0 |
36% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/big5freq.py |
3 |
0 |
0 |
100% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/big5prober.py |
14 |
6 |
0 |
57% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/chardistribution.py |
117 |
83 |
0 |
29% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/charsetgroupprober.py |
70 |
61 |
0 |
13% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/charsetprober.py |
50 |
36 |
0 |
28% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/codingstatemachine.py |
27 |
18 |
0 |
33% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/compat.py |
10 |
4 |
0 |
60% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/cp949prober.py |
14 |
6 |
0 |
57% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/enums.py |
34 |
1 |
0 |
97% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/escprober.py |
56 |
45 |
0 |
20% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/escsm.py |
17 |
0 |
0 |
100% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/eucjpprober.py |
47 |
34 |
0 |
28% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/euckrfreq.py |
3 |
0 |
0 |
100% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/euckrprober.py |
14 |
6 |
0 |
57% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/euctwfreq.py |
3 |
0 |
0 |
100% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/euctwprober.py |
14 |
6 |
0 |
57% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/gb2312freq.py |
3 |
0 |
0 |
100% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/gb2312prober.py |
14 |
6 |
0 |
57% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/hebrewprober.py |
74 |
48 |
0 |
35% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/jisfreq.py |
3 |
0 |
0 |
100% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/jpcntx.py |
80 |
61 |
0 |
24% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/langbulgarianmodel.py |
5 |
0 |
0 |
100% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/langcyrillicmodel.py |
13 |
0 |
0 |
100% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/langgreekmodel.py |
5 |
0 |
0 |
100% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/langhebrewmodel.py |
3 |
0 |
0 |
100% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/langthaimodel.py |
3 |
0 |
0 |
100% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/langturkishmodel.py |
3 |
0 |
0 |
100% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/latin1prober.py |
50 |
29 |
0 |
42% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/mbcharsetprober.py |
42 |
33 |
0 |
21% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/mbcsgroupprober.py |
14 |
3 |
0 |
79% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/mbcssm.py |
41 |
0 |
0 |
100% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/sbcharsetprober.py |
73 |
60 |
0 |
18% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/sbcsgroupprober.py |
19 |
8 |
0 |
58% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/sjisprober.py |
47 |
34 |
0 |
28% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/universaldetector.py |
124 |
104 |
0 |
16% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/utf8prober.py |
41 |
29 |
0 |
29% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/chardet/version.py |
2 |
0 |
0 |
100% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/dateutil/__init__.py |
1 |
0 |
0 |
100% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/dateutil/_common.py |
22 |
13 |
0 |
41% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/dateutil/parser.py |
695 |
600 |
0 |
14% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/dateutil/relativedelta.py |
236 |
204 |
0 |
14% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/dateutil/tz/__init__.py |
2 |
0 |
0 |
100% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/dateutil/tz/_common.py |
143 |
110 |
0 |
23% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/dateutil/tz/tz.py |
698 |
576 |
0 |
17% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/dateutil/tz/win.py |
151 |
148 |
0 |
2% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/decorator.py |
240 |
114 |
0 |
52% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/idna/__init__.py |
1 |
0 |
0 |
100% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/idna/core.py |
275 |
237 |
0 |
14% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/idna/idnadata.py |
3 |
0 |
0 |
100% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/idna/intranges.py |
29 |
24 |
0 |
17% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/jmespath/__init__.py |
7 |
2 |
0 |
71% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/jmespath/ast.py |
44 |
22 |
0 |
50% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/jmespath/compat.py |
40 |
21 |
0 |
48% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/jmespath/exceptions.py |
68 |
36 |
0 |
47% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/jmespath/functions.py |
198 |
137 |
0 |
31% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/jmespath/lexer.py |
139 |
120 |
0 |
14% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/jmespath/parser.py |
314 |
246 |
0 |
22% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/jmespath/visitor.py |
212 |
161 |
0 |
24% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/requests/__init__.py |
50 |
8 |
0 |
84% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/requests/__version__.py |
10 |
0 |
0 |
100% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/requests/_internal_utils.py |
16 |
12 |
0 |
25% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/requests/adapters.py |
212 |
161 |
0 |
24% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/requests/api.py |
22 |
12 |
0 |
45% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/requests/auth.py |
162 |
129 |
0 |
20% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/requests/certs.py |
4 |
1 |
0 |
75% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/requests/compat.py |
37 |
13 |
0 |
65% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/requests/cookies.py |
236 |
175 |
0 |
26% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/requests/exceptions.py |
34 |
6 |
0 |
82% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/requests/hooks.py |
15 |
11 |
0 |
27% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/requests/models.py |
444 |
371 |
0 |
16% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/requests/packages.py |
6 |
0 |
0 |
100% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/requests/sessions.py |
270 |
219 |
0 |
19% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/requests/status_codes.py |
8 |
0 |
0 |
100% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/requests/structures.py |
40 |
19 |
0 |
52% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/requests/utils.py |
400 |
336 |
0 |
16% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/s3transfer/__init__.py |
309 |
221 |
0 |
28% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/s3transfer/compat.py |
38 |
24 |
0 |
37% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/s3transfer/copies.py |
75 |
52 |
0 |
31% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/s3transfer/delete.py |
9 |
3 |
0 |
67% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/s3transfer/download.py |
238 |
150 |
0 |
37% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/s3transfer/exceptions.py |
13 |
2 |
0 |
85% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/s3transfer/futures.py |
238 |
158 |
0 |
34% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/s3transfer/manager.py |
181 |
127 |
0 |
30% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/s3transfer/subscribers.py |
21 |
11 |
0 |
48% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/s3transfer/tasks.py |
119 |
94 |
0 |
21% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/s3transfer/upload.py |
239 |
166 |
0 |
31% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/s3transfer/utils.py |
303 |
215 |
0 |
29% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/six.py |
444 |
213 |
0 |
52% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/urllib3/__init__.py |
38 |
12 |
0 |
68% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/urllib3/_collections.py |
174 |
128 |
0 |
26% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/urllib3/connection.py |
160 |
108 |
0 |
32% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/urllib3/connectionpool.py |
313 |
253 |
0 |
19% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/urllib3/contrib/__init__.py |
0 |
0 |
0 |
100% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/urllib3/contrib/pyopenssl.py |
228 |
226 |
0 |
1% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/urllib3/contrib/socks.py |
71 |
62 |
0 |
13% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/urllib3/exceptions.py |
96 |
21 |
0 |
78% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/urllib3/fields.py |
69 |
56 |
0 |
19% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/urllib3/filepost.py |
39 |
27 |
0 |
31% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/urllib3/packages/__init__.py |
3 |
0 |
0 |
100% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/urllib3/packages/six.py |
444 |
208 |
0 |
53% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/urllib3/packages/ssl_match_hostname/__init__.py |
11 |
6 |
0 |
45% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/urllib3/poolmanager.py |
164 |
125 |
0 |
24% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/urllib3/request.py |
38 |
27 |
0 |
29% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/urllib3/response.py |
306 |
254 |
0 |
17% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/urllib3/util/__init__.py |
10 |
0 |
0 |
100% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/urllib3/util/connection.py |
66 |
46 |
0 |
30% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/urllib3/util/request.py |
45 |
36 |
0 |
20% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/urllib3/util/response.py |
32 |
26 |
0 |
19% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/urllib3/util/retry.py |
148 |
102 |
0 |
31% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/urllib3/util/selectors.py |
363 |
297 |
0 |
18% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/urllib3/util/ssl_.py |
126 |
98 |
0 |
22% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/urllib3/util/timeout.py |
59 |
42 |
0 |
29% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/urllib3/util/url.py |
103 |
87 |
0 |
16% |
| /Users/jmelloy/.envs/aws-automation/lib/python3.6/site-packages/urllib3/util/wait.py |
16 |
12 |
0 |
25% |
| downloader.py |
22 |
11 |
0 |
50% |
| lib/validators/__init__.py |
16 |
0 |
0 |
100% |
| lib/validators/between.py |
17 |
13 |
0 |
24% |
| lib/validators/domain.py |
5 |
1 |
0 |
80% |
| lib/validators/email.py |
21 |
14 |
0 |
33% |
| lib/validators/extremes.py |
15 |
6 |
0 |
60% |
| lib/validators/hashes.py |
17 |
5 |
0 |
71% |
| lib/validators/i18n/__init__.py |
1 |
0 |
0 |
100% |
| lib/validators/i18n/fi.py |
23 |
16 |
0 |
30% |
| lib/validators/iban.py |
15 |
8 |
0 |
47% |
| lib/validators/ip_address.py |
33 |
30 |
0 |
9% |
| lib/validators/length.py |
7 |
3 |
0 |
57% |
| lib/validators/mac_address.py |
5 |
1 |
0 |
80% |
| lib/validators/slug.py |
5 |
1 |
0 |
80% |
| lib/validators/truthy.py |
4 |
1 |
0 |
75% |
| lib/validators/url.py |
12 |
4 |
0 |
67% |
| lib/validators/utils.py |
29 |
13 |
0 |
55% |
| lib/validators/uuid.py |
5 |
1 |
0 |
80% |
| loader.py |
40 |
28 |
0 |
30% |
| queue_czds_downloads.py |
45 |
27 |
0 |
40% |
| test/__init__.py |
0 |
0 |
0 |
100% |
| test/test_compile.py |
7 |
0 |
0 |
100% |


fuzzy_rbind() binds dataframes based on columns with slightly different names.
fuzzy_rbind( df1, df2, threshold, method = "jw", q = 1, p = 0, bt = 0, useBytes = FALSE, weight = c(d = 1, i = 1, t = 1) )
| df1 | The first dataframe to be bound. |
|---|---|
| df2 | The second dataframe to be bound. |
| threshold | The maximum string distance between column names, if the distance between columns is greater than this threshold the columns will not be bound. |
| method | The type of string distance calculation to use. Possible methods are : osa, lv, dl, hamming, lcs, qgram, cosine, jaccard, jw, and soundex. See package stringdist for more information. Default: 'jw', Default: 'jw' |
| q | Size of the q-gram used in string distance calculation. Default: 1 |
| p | Only used with method "jw", the Jaro-Winkler penatly size. Default: 0 |
| bt | Only used with method "jw" with p > 0, Winkler's boost threshold. Default: 0 |
| useBytes | Whether or not to perform byte-wise comparison. Default: FALSE |
| weight | Only used with methods "osa" or "dl", a vector representing the penalty for deletion, insertion, substitution, and transposition, in that order. Default: c(d = 1, i = 1, t = 1) |
fuzzy_rbind() returns a dataframe that has bound the two inputted dataframes based on the closest matching columns, column names from dataframe 1 are preserved.
When using datasets often times column names are slightly different, and fuzzy_rbind()
helps
to bind dataframes using fuzzy matching of the column names.
if (FALSE) { if(interactive()){ mtcars_colnames_messy = mtcars colnames(mtcars_colnames_messy)[1:5] = paste0(colnames(mtcars)[1:5], "_17") colnames(mtcars_colnames_messy)[6:11] = paste0(colnames(mtcars)[6:11], "_2017") x = fuzzy_rbind(mtcars, mtcars_colnames_messy, .5) x = fuzzy_rbind(mtcars, mtcars_colnames_messy, .2) } }


You have now completed the tutorial.
Please pay attention to the game until it finishes.
Press the "Next" button when you are ready to join the game.


Below is a list of all the first round matches in the 2018 World Cup. For each match, click the name of the team that you believe will win. Each correct answer is worth 1 pt. Picks must be in before each game.


Name
HPL_ptimer_walltime
Return the elapsed (wall-clock) time.
Synopsis
#include "hpl.h"
double
HPL_ptimer_walltime();
Description
HPL_ptimer_walltime
returns the elapsed (wall-clock) time.
See Also
HPL_ptimer_cputime
,
HPL_ptimer
.


Make sure that multiple modules mapped to the same URL only get the URL fetched once.
Check console for messages


This is something that can modify properties of the existing HLS playlists on the fly for testing purposes.
Supported operations:
VOD
playlist into an EVENT
one so it appears as a live broadcast to the player and turns into a VOD
playlist after the specified duration.Currently all operations are performed via {{ url_for('proxy') }}
endpoint on this server, where the following parameters can be passed via the query string:
{{ url_arg }}
The URL of the playlist to modify. Required.
In addition to regular URLs this also allows to use "aliases", short identifiers of publicly available playlist demos, e.g. {{ aliases.keys()[0] }}
; see the list below.
Note that the URL can point both to a master or a media playlist. All the media playlist URIs in the master playlists will be modified to be passed via this endpoint with the same parameters (except the url
of course).
{{ start_time_arg }}
The base time for the event, a Unix timestamp.
Required for media playlists. Optional for master playlists, where it is assumed to be the time the playlist is accessed.
This is not exactly the time the event begins at but a reference point from which the actual start time is calculated, which is currently 3 "target durations" earlier to avoid the initial playback to stall.
{{ event_duration_arg }}
How long the EVENT
mode should last, seconds.
Optional, assumed to be 60 seconds by default.
{{ ad_interval_arg }}
Time in seconds between ad cue points inserted.
Optional, ad cue points are not inserted by default.
{{ ad_duration_arg }}
The length of each ad slot in seconds.
Has effect only when {{ ad_interval_arg }}
is provided.
Optional, 30 seconds by default.
{{ comment }}
As mentioned above the url
parameter of the {{ url_for('proxy') }}
endpoint also accepts aliases for well known URLs. Here is the full list:
{{ alias[0] }}
— {{ alias[1] }}


THE PET WORLD
Home
PETS
ABOUT US
FEED PET
USER
ORDERFOOD
ADMIN
Pets are not our whole life,but they make our lives whole.


What size product queue should you create to hold an hour's worth of data? This depends on what data feeds you are subscribing to as well as the changing contents of the data streams. The number of products and the aggregate amount of data for each feed type may change over time. The LDM program pqmon, available with version 5.1.1 and later releases, may be useful for helping to determine what size queue to create, whether your current queue size is adequate, or whether you are wasting space in the queue with many unused product slots.
The pqmon program monitors the state of a product queue, including the number of products currently in the queue, the number of queue bytes that are in use to hold products, the maximum number of products in the queue since it was created, and the age of the oldest product in the queue.
Here's an example of the first two lines of output from invoking "pqmon -i 5", which prints a line of queue statistics to standard output every 5 seconds:
% pqmon -i 5 Nov 07 15:05:19 pqmon: Starting Up (7628) Nov 07 15:05:19 pqmon: nprods nfree nempty nbytes maxprods maxfree minempty maxext age Nov 07 15:05:19 pqmon: 139246 3<PHONE_NUMBER>558728 173916 503<PHONE_NUMBER>56 9663 Nov 07 15:05:24 pqmon: 139273 2<PHONE_NUMBER>992192 173916 503<PHONE_NUMBER>2 9658 ...
You will usually need a wide terminal to see all of the pqmon output on one line. The statistics of primary use to LDM site administrators are the number of products in the queue (nprods), the number of bytes of the product queue currently in use (nbytes), the maximum number of products in the queue so far (maxprods), and the age in seconds of the oldest product in the queue (age). The above shows a product queue that contained 139246 products, about 1.95 Gbytes of data, a previous maximum of 173916 products, and an age for the oldest product in the queue of 9663 seconds (about 2.68 hours). 5 seconds later, some of these statistics have changed as more products have come in, more bytes have been added to the queue, and some old products have been deleted.
After you have run an LDM system for a while and the queue has reached a steady state, where old products are being expired to make room for new products as they arrive, it is useful to note the age of the oldest product in the queue. This is the last column of pqmon output providing the age in seconds of the oldest product. If this is over 3600, you currently have more than an hour's worth of data in the queue. If you are relaying data to downstream sites, this would permit a downstream site to disconnect and reconnect within an hour without losing data.
As a rule of thumb, you want to make sure that your product queue is large enough that the age of the oldest product does not go below 3600 seconds. Note that you might want to watch the age of the oldest product for a while using the -i option of pqmon to specify an interval in seconds between outputs, because this number can vary over time. For example, if a large product arrives and there is no free region in the queue big enough to hold it, many old products might be deleted until enough room is available.
Another useful statistic in pqmon output is the maximum number of products stored in the queue so far. This is a "high-water mark" of the number of products that could fit in the queue at once, and depends on the distribution of product sizes over time. For example, if a large number of small products arrive in a short time interval replacing a few large old products, the number of products in the queue might rise.
It is desirable to allocate on creation more product slots in the queue than are ever needed, so that products are only deleted for lack of space and not for lack of empty product slots. On the other hand, allocating too many product slots that never get used wastes some space that could be used instead to hold more products. Each product slot only has an overhead of about 68 bytes, however, so it is OK to over-allocate product slots to some extent to make sure you don't run out. By default, an average product size -- that is guaranteed to be incorrect -- is used to compute the default number of product slots.
The other statistics in pqmon output are of less relevance for tuning queue parameters, but may be useful to make sure the allocation and garbage collection algorithms are working as intended.


Press F11 to maximize your browser window and then follow this link to the speaker timer:
Simple Speaker Timer


Detailed course offerings (Time Schedule) are available for
CLAS 101 Latin and Greek in Current Use (2) VLPA
Designed to improve and increase English vocabulary through a study of the Latin and Greek elements in English, with emphasis on words in current literary and scientific use. No auditors. Knowledge of Latin or Greek is not required. Offered: AWSpS.
View course details in MyPlan: CLAS 101
CLAS 102 Grammar and Syntax through Latin (3) VLPA
Improve familiarity with basic grammar, syntax, logic through study of mechanics of the Latin language. For Educational Opportunity Program students only. No auditors. Knowledge of Latin or Greek not required.
View course details in MyPlan: CLAS 102
CLAS 122 Gateway to the Ancient Greco-Roman World (5) VLPA Clauss
Introduces students to aspects of Ancient Greek and/or Roman literature and culture. Develops understanding of the nature and process of critical thinking and basic research techniques.
View course details in MyPlan: CLAS 122
CLAS 205 Bioscientific Vocabulary Building From Latin and Greek (3) VLPA
Designed to help the student master the scientific vocabulary of his or her particular field by a study of the Latin and Greek roots that are used to create the majority of scientific terms. No auditors. Knowledge of Latin or Greek is not required. Offered: AWSpS.
View course details in MyPlan: CLAS 205
CLAS 210 Greek and Roman Classics in English (5) VLPA Blondell, Clauss, Connors, Gowing, Hinds, Hollmann, Kamen, Levaniouk, Levin-Richardson, Stroup, Topper
Introduction to classical literature through a study of the major Greek and Latin authors in modern translation. Offered: AWSp.
View course details in MyPlan: CLAS 210
CLAS 320 Greek and Roman Private and Public Life (5) VLPA/I&S Kamen
Study of the civic and social practices and institutions of everyday Greek and Roman private and public life, including the family, social classes, the courts and legal systems, military service and war, technology and the trades, money and banking, agriculture and rural life. Many lectures illustrated by slides. Offered: A.
View course details in MyPlan: CLAS 320
CLAS 324 Greek and Roman Athletics (5) I&S Stroup
Surveys Greek and Roman athletic festivals and events; the place of athletes and sports in ancient politics, economy, religion, art, and literature; and the relationship between ancient athletic spectacle and its modern heirs.
View course details in MyPlan: CLAS 324
CLAS 326 Women in Antiquity (5) VLPA/I&S, DIV Connors, Levaniouk
A broad survey of primary sources in medicine, law, philosophy, religious ritual, myth, history, and ethnography, informed by perspectives from literature, art, and archaeology. Provides students the tools to analyze the social roles of women in ancient Greece and Rome.
View course details in MyPlan: CLAS 326
CLAS 328 Sex, Gender, and Representation in Greek and Roman Literature (3) VLPA/I&S, DIV Hinds, Levin-Richardson, Stroup
Affirmation and inversion of gender roles in Greek and Roman literature, myths of male and female heroism; marginalization of female consciousness; interaction of gender, status, and sexual preference in love poetry. Readings from epic, drama, historiography, romance, and lyric.
View course details in MyPlan: CLAS 328
CLAS 330 The Age of Augustus (5) VLPA/I&S Gowing
Detailed study of the history and culture of the reign of Augustus, the first Roman emperor (31 BC-AD 14). Includes readings in Augustan authors such as Vergil, Ovid, and Horace as well as the study of Augustan art and architecture. Offered: jointly with HSTAM 330.
View course details in MyPlan: CLAS 330
CLAS 360 Jews, Greeks, and Romans in the Ancient World (5) VLPA Stroup
Examines the interactions between populations of Jews, Greeks, and Romans in the ancient Mediterranean from the late Bronze Age through the early Talmudic period, informed by perspectives from literature (religious and secular), art, and archaeology. Offered: jointly with JSIS C 360.
View course details in MyPlan: CLAS 360
CLAS 399 Study Abroad: Classics (3-15, max. 20) VLPA
For participants in Classics overseas study programs. Specific course content determined by assigned faculty member. Credit not applicable to majors in the Classics Department without approval.
View course details in MyPlan: CLAS 399
CLAS 405 Undergraduate Seminar in Classics (5, max. 15)
Seminar on a broadly defined topic in classics. Includes reading in Latin or Greek as appropriate for individual students. Additional readings of works in English translation and works of scholarship chosen to give undergraduate majors familiarity with research methods and perspective on the discipline.
View course details in MyPlan: CLAS 405
CLAS 422 Intellectual History of Classical Greece (5) VLPA/I&S Blondell
Uses Plato's Republic as a core text to explore a range of issues of ancient and contemporary interest, such as justice, political theory, education, gender, and the nature of the soul. Besides the Republic and other works of Plato, reading are taken from Homer, Hesiod, the dramatists, and other authors. Taught in English.
View course details in MyPlan: CLAS 422
CLAS 424 The Epic Tradition (5) VLPA Clauss, Levaniouk
Ancient and medieval epic and heroic poetry of Europe in English: the Iliad, Odyssey, and Aeneid; the Roland or a comparable work from the medieval oral tradition; pre-Greek forerunners, other Greco-Roman literary epics, and later medieval and Renaissance developments and adaptations of the genre. Choice of reading material varies according to instructor's preference. Offered: jointly with C LIT 424.
View course details in MyPlan: CLAS 424
CLAS 427 Greek and Roman Tragedy in English (5) VLPA Stroup
Study of the development of Greek and Roman tragedy, with extensive readings in representative plays of Aeschylus, Sophocles, Euripides, and Seneca.
View course details in MyPlan: CLAS 427
CLAS 428 Greek and Roman Comedy in English (5) VLPA Stroup
Readings from the comedies of Aristophanes, Plautus, and Terence.
View course details in MyPlan: CLAS 428
CLAS 430 Greek and Roman Mythology (3/5) VLPA
Principal myths found in classical and later literature. Offered: AWSp.
View course details in MyPlan: CLAS 430
CLAS 432 Classical Mythology in Film (3/5) VLPA Clauss
Comparison and discussion of classical myths and modern films inspired by them. Promotes access to the reading of classical mythology. Analyzes significant differences between ancient literary and modern cinematographic representations of the myth.
View course details in MyPlan: CLAS 432
CLAS 435 The Ancient Novel (3) VLPA Connors
Reading and discussion of the principal Greek and Roman novels, the earliest European prose fiction, with attention to earlier literature and to imperial culture.
View course details in MyPlan: CLAS 435
CLAS 445 Greek and Roman Religion (5) VLPA/I&S Hollmann, Levaniouk
Religion in the social life of the Greeks and Romans, with emphasis placed on their public rituals and festivals. Attention is given to the priesthoods, personal piety, rituals of purification and healing, and the conflict of religions in the early Roman Empire. Many lectures illustrated by slides. Offered: jointly with JSIS C 445.
View course details in MyPlan: CLAS 445
CLAS 490 Supervised Study (1-6, max. 18)
Individual study in classical topics by arrangement.
View course details in MyPlan: CLAS 490
CLAS 495 Senior Essay (1-3, max. 4) VLPA
Usually written in conjunction with another course in the final year of study in the major.
View course details in MyPlan: CLAS 495
CLAS 496 Special Topics (2-5, max. 15) VLPA
Offered occasionally by visitors or resident faculty.
View course details in MyPlan: CLAS 496
CLAS 510 Interdisciplinary Seminar in Classics (3-5, max. 25)
Advanced work on Greek and Latin studies in English translation. Offered: AWSpS.
View course details in MyPlan: CLAS 510
CLAS 520 Seminar (5, max. 45)
Advanced comparative work on Greek and Latin materials studied in both original languages.
View course details in MyPlan: CLAS 520
CLAS 525 Proseminar (5)
Introduces graduate students to the chief subfields, together with their various methodologies and resources, of the broad discipline of classical studies.
View course details in MyPlan: CLAS 525
CLAS 540 Topics in Greek and Latin Literary History (5, max. 25)
Reading of a range of Greek and Latin texts by various authors.
View course details in MyPlan: CLAS 540
CLAS 700 Master's Thesis (*-)
View course details in MyPlan: CLAS 700
CLAS 800 Doctoral Dissertation (*-)
View course details in MyPlan: CLAS 800


@* * Copyright 2010-2017 Artima, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@ @import controllers.Application.scaladocsPageUrl @import controllers.Application.latestVersion @widePage("Getting Started with FunSuite") {
FunSuite
By learning to use FunSuite
, simple assertions, and the BeforeAndAfter
trait, you can become
productive in the TDD style of ScalaTest very quickly. You can then learn and use more
of ScalaTest over time.
In a FunSuite
, tests are function values. (The “Fun
” in FunSuite
stands for function.) You denote tests with test
and provide the name of the test as a string enclosed in parentheses, followed by the code of the test in curly braces.
Here's an example:
import org.scalatest.funsuite.AnyFunSuite import scala.collection.mutable.Stack class ExampleSuite extends AnyFunSuite { test("pop is invoked on a non-empty stack") { val stack = new Stack[Int] stack.push(1) stack.push(2) val oldSize = stack.size val result = stack.pop() assert(result === 2) assert(stack.size === oldSize - 1) } test("pop is invoked on an empty stack") { val emptyStack = new Stack[Int] intercept[NoSuchElementException] { emptyStack.pop() } assert(emptyStack.isEmpty) } }
You can compile this FunSuite
like this:
$ scalac -cp<EMAIL_ADDRESS>ExampleSuite.scala
Here's how you run it:
$ scala -cp<EMAIL_ADDRESS>org.scalatest.run ExampleSuite Run starting. Expected test count is: 2 ExampleSuite: - pop is invoked on a non-empty stack - pop is invoked on an empty stack Run completed in 73 milliseconds. Total number of tests run: 2 Suites: completed 1, aborted 0 Tests: succeeded 2, failed 0, ignored 0, pending 0 All tests passed.
To get started quickly with ScalaTest, learn to use assert
with the ===
operator
and intercept
. Later if you prefer you can switch to ScalaTest's matchers.
ScalaTest lets you use Scala's assertion syntax, but defines a triple equals operator (===
) to give you better error messages. The following
code would give you an error indicating only that an assertion failed:
assert(1 == 2)
Using triple equals instead would give you the more informative error message, "1 did not equal 2"
:
assert(1 === 2)
To test whether a bit of code produces an expected exception, use intercept
. Place the expected exception type in
square brackets after intercept
, and the bit of code in curly braces, like this:
val s = "hi" intercept[IndexOutOfBoundsException] { s.charAt(-1) }
If the bit of code between the curly braces throws the expected exception, intercept
will return it. In the previous example that return value was ignored.
If you want to inspect the thrown exception, you can do so like this:
val s = "hi" val thrown = intercept[IndexOutOfBoundsException] { s.charAt(-1) } assert(thrown.getMessage === "String index out of range: -1")
If the bit of code between the curly braces throws the wrong exception, or does not throw any exception, you'll get a test failure describing the problem.
If you want to factor out duplicate code from tests, mix in BeforeAndAfter
, surround the code you
want to run before each test by before { ... }
, and after each test by after { ... }
. Here's an example that just uses before
:
import org.scalatest.funsuite.AnyFunSuite import org.scalatest.BeforeAndAfter import scala.collection.mutable.Stack class ExampleSuite extends AnyFunSuite with BeforeAndAfter { var stack: Stack[Int] = _ before { stack = new Stack[Int] } test("pop is invoked on a non-empty stack") { stack.push(1) stack.push(2) val oldSize = stack.size val result = stack.pop() assert(result === 2) assert(stack.size === oldSize - 1) } test("pop is invoked on an empty stack") { intercept[NoSuchElementException] { stack.pop() } assert(stack.isEmpty) } }
You compile and run it the same way:
$ scalac -cp<EMAIL_ADDRESS>ExampleSuite.scala $ scala -cp<EMAIL_ADDRESS>org.scalatest.run ExampleSuite Run starting. Expected test count is: 2 ExampleSuite: - pop is invoked on a non-empty stack - pop is invoked on an empty stack Run completed in 73 milliseconds. Total number of tests run: 2 Suites: completed 1, aborted 0 Tests: succeeded 2, failed 0, ignored 0, pending 0 All tests passed.
Armed with this knowledge, you can already write real TDD-style tests with ScalaTest. To go further, check out the user guide.


Okay, we'll deliver! Please enter your address below.
Sounds good! We can't wait to see you in store.
Where should we deliver?
⌘ + click to select multiple
Pickup/Delivery Time:
Estimated Wait Time:
~25 minutes
Thank you for your business.
Name:
Address:
Toppings:
Size:
Ready by:
Total:
Requests:


I am a dedicated public relations professional, with an experience of over an year in the communication industry, seeking a full-time position in your esteemed organization where I can apply my knowledge and skills for continuous personal as well as organization's development.
Contact me at +91-9891665353
Bring to the table win-win survival strategies to ensure proactive domination. At the end of the day, going forward, a new normal that has evolved from generation X is on the runway heading towards a streamlined cloud solution. User generated content in real-time will have multiple touchpoints for offshoring.
Capitalize on low hanging fruit to identify a ballpark value added activity to beta test. Override the digital divide with additional clickthroughs from DevOps. Nanotechnology immersion along the information highway will close the loop on focusing solely on the bottom line.
Podcasting operational change management inside of workflows to establish a framework. Taking seamless key performance indicators offline to maximise the long tail. Keeping your eye on the ball while performing a deep dive on the start-up mentality to derive convergence on cross-platform integration.
Collaboratively administrate empowered markets via plug-and-play networks. Dynamically procrastinate B2C users after installed base benefits. Dramatically visualize customer directed convergence without revolutionary ROI.
PERCENTAGE : 70.71%
PERCENTAGE : 74.71%
PERCENTAGE : 80.28%
PERCENTAGE : 84.20%


--- layout: archive title: Zulip Chat Archive permalink: /stream/116395-maths/topic/Convexity.html ---
Because of calculus, I realized we don't have anything about convexity in mathlib. I started something, but filling the holes in the API (including the interval API) will be very tedious, so I'd like feedback before moving on: https://gist.github.com/PatrickMassot/6b03a8cd63c44cac510e2abeb2ea710f
@Mario Carneiro do you understand why https://gist.github.com/PatrickMassot/6b03a8cd63c44cac510e2abeb2ea710f#file-convex-lean-L116-L120 can't be shrinked to one line containing only abel
?
I believe Alexander Bentkamp has been working on convexity, although I don't know if he is ready to release anything
@Alexander Bentkamp?
Yes, I have started working on convexity, too. What I have is only slightly larger than yours so far.
We should probably merge our efforts. My definition is a bit different from yours, but I think they are equivalent.
Could you share your file?
I have been working along the Isabelle theory on convexity: http://isabelle.in.tum.de/dist/library/HOL/HOL-Analysis/Convex_Euclidean_Space.html
Nice! I think we'll need to define segments anyway. For instance we want to be able to state the mean value inequality in terms of a bound on the derivative on the relevant segment. The chosen definition of is_convex
itself is not very import, we will have many equivalent formulations anyway (like in you file). About convexity of intervals, I think we need to fill in the intervals API anyway. And once we get inclusion criterion for all kinds of intervals then the convexity of intervals will come for free (from the caracterisation of convexity by inclusion of segments, and the fact that a segment in R is a closed interval). About half spaces in C, why don't you use the fact that re
and im
are real-linear forms and use the general result you proved above?
Are you currently working on this, or is it dormant?
I am actively working on this
Concerning the halfspaces in C, I haven't found lemmas stating that re and im are real-linear forms...
Then let's prove it!
Well, that's essentially what I did, but you are right that we should have a lemma explicitly stating that fact.
Since you are actively working on this, here is what I propose. I'll open a PR adding stuff to intervals.lean
, filling the missing intervals and adding all lemmas stating precisely when a non-empty Icc is contained in another interval. Then you can take everything you want from my convexity gist. I really think we want the segment definition, but then I don't care what is the official definition of convexity, as long as we have many lemmas giving caracterisations.
And I say that convexity of all intervals will follow trivially from my interval lemmas
Ok, sounds good.
https://github.com/leanprover-community/mathlib/pull/805
So you can take this intervals file, remove the corresponding bits from my convexity file, and move from there. Actually I think your symmetric descriptions of segments may be pretty convenient in the ball proofs
By the way, it means that you should find a way to make sure your proofs of different conditions for convexity also prove the corresponding descriptions of segments. It only means you should state them as conditions about being in a segment, and then transfer to convexity condition.
The Isabelle file is really large. I like the way they state that distance to a fixed point is convex instead of hiding it inside the proof of convexity of balls like I did.
By the way, it means that you should find a way to make sure your proofs of different conditions for convexity also prove the corresponding descriptions of segments. It only means you should state them as conditions about being in a segment, and then transfer to convexity condition.
I am not sure what you mean here. Do you just mean that I should prove that my definition is eqivalent to how you defined convexity?
re: re
and im
linearity, I don't think this exact statement is there but it's a direct application of lemmas that should be there (i.e. re (x + y) = re x + re y
, re (r * x) = r * re x
)
Yes, but I also needed to instantiate C as a R-vector space and then show that (c • x).re = c • x.re. That's around 30 lines that should probably be put into complex/basic.lean at some point.
Oh, I expected these to be in there but they were missing:
lemma smul_re (r : ℝ) (z : ℂ) : (↑r * z).re = r * z.re := by simp lemma smul_im (r : ℝ) (z : ℂ) : (↑r * z).im = r * z.im := by simp
The stuff about having C as an R vector space and instantiating coe and re as linear functions should go somewhere else, maybe somewhere in ring_theory?
I'm pretty sure we have a method for obtaining a vector space from a ring hom (coe), so that part should be easy, and the linearity conditions should should all be defeq to existing lemmas
Oh, then I probably did it the hard way...
How would that work exactly?

@Kenny Lau will know the state of this - I've seen various versions of it float by the chat but I'm not sure what's made it into mathlib
there should be something in ring_theory/algebra.lean
yes, algebra.of_ring_hom
looks like it will work, although you have to get the module part out and upgrade it to a vector_space
But I guess it's not a bad thing knowing that actually C is a R-algebra rather than just a module
By the way, it means that you should find a way to make sure your proofs of different conditions for convexity also prove the corresponding descriptions of segments. It only means you should state them as conditions about being in a segment, and then transfer to convexity condition.
I am not sure what you mean here. Do you just mean that I should prove that my definition is eqivalent to how you defined convexity?
Yes, I think so
ok, sure. I can do that.
and algebra.of_ring_hom
works like a charm!
Last updated: Apr 24 2020 at 19:02 UTC