|
PIC16F15214 Bootloader
|
Latest version can be found at: https://github.com/BroadwellConsultingInc/BootloaderPIC16F15214
Copyright (c) 2020 Broadwell Consulting Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Note that the Rx pin has moved from pin 3 (RA4) to pin 4 (RA3) since this video was made. The user may select their own pins by changing the TRISA and PPS configuration.
The main program implements a bootloader that runs without interrupts. It was developed on MPLAB X v5.40 and XC8 v2.31 running in PRO mode, optimization level s. Compiling the bootloader under -O2 (free) optimization levels will result in larger sizes, and addresses that are hard coded, such as the reset and interrupt jump vectors at 0x140 and 0x144 may need to be adjusted.
The bootloader consists of a number of modules:
1- Initialization
2- Stay in Boot Check
If stay in boot (else jump to App)...
3- Wait for boot handshake word
4- Erase entire application area
5- Send a 'W' command and write 64 received bytes (32 words) to flash
6- Repeat (5.) until all words have been received
7- Read entire application flash area out through serial port
8- While(1) loop waiting for power cycle reset.
(A C# .Net Core app which performs these steps can be downloaded from https://github.com/BroadwellConsultingInc/BootloaderPIC16F15214/tree/main/PIC16F15214BootloaderApp )
1- Load the hex file. Crop to the Application range 0x140-0xFFF (16 bit word addresses) or 0x280-0x1FFE (8 bit addresses), inclusive Fill any empty locations in the hex file inside the application space with 0x3FFF .
2- Connect at 115,200 / 8-N-1
3- Optionally wait for a EBOOTx>> string to indicate bootloader entry. x indicates reason for bootload mode.
4- This is sent once after reset if the bootloader stays in boot mode
5- Send the sequence 0x52, 0xA3, 0x4D, 0xF6 to start the download sequence. If the bootloader does not respond with 'e' then send again until an 'e' follows.
The bootloader will Erase the entire Application Area. In testing this took about 300mS.
6- Wait for a 'W' to be sent indicating the bootloader is ready to begin writing.
7- Send 64 bytes of data to be programmed, starting at address 0x140.
8- Wait for another 'W' response, and send the next 64 bytes. Continue this way until the entire application area is sent.
The bootloader will respond with a final 'W', then an 'R' indicating that the bootloader is now reading out flash.
The bootloader will send the entire contents of the application flash area.
9- Verify this against the hex file to determine if programming was correct.
10- Power cycle the micro to exit boot mode.
(A sample application can be found at https://github.com/BroadwellConsultingInc/BootloaderPIC16F15214/tree/main/ApplicationPIC16F15214.X )
In order to build an application that can be downloaded with this bootloader, the application must be shifted up 0x140 words.
This is done in MPLAB X v5.40 by choosing project properties/XC8 global options / XC8 Global Options/ XC8 Linker / Additional Options and putting 0x140 in the Codeoffset window.
The final word of the application's flash must be 0x14B7 This can be achieved by adding an assembly .s file that contains the following (code also sets a stub reset vector for IDE debugging):
This area must be reserved by the linker, or it will override any code in this area. This is done in MPLAB X v5.40 by choosing project properties/XC8 global options / XC8 Global Options/ XC8 Linker / Memory Model and putting -FFF-FFF in the "ROM ranges" box to remove that space from available area for allocation.
Before using this bootloader you should consider the device configuration settings in device_config.c . These are the settings that will be used for both the bootloader and application. The application will NOT download new configuration byte settings. For instance, if your application requires a permanently turned on watchdog, then the config bits (and this bootloader) will need to be modified.
The built application now has no reset vector or interrupt vector at the address 0x0000 / 0x0004 in the micro. This will make the code unusable if it is downloaded via a programmer/debugger rather than the bootloader, making debugging with an ICD or PicKit difficult. To solve this problem stub vectors are added in the assembly snippet above which jump from the natural vector locations to the offset locations in the application.


.BREEZED
Home
About
Project
Drop Down
Contact Us
INTEGRATED MARKETING MEDIA
BEST DIGITAL MARKETING
READ MORE
TAKE ACTION


On the second rotation, we learnt about CAD, or computer aiderd design. We learnt how to use Autodesk Fusion 360 to create different shapes, some of them were quite challenging to make.
At first, it was quite challenging ot create these shapes as it was difficult to correctly utilize all of the functions on Autodesk Dusion 360. One particular difficlties that I faced duinring the course of desinging the shapes was the "extrude" function. As these shapes consist of different parts, and each part has different depth, they require different value of extrusion. I could not figure out how to extrude each part differently, because as long as I extruded one part, the rest disappeared. When I finally discovered the solution, the designing process was much more quick and effective.
Back to Index


--- layout: post title: Updating the JDBC drivers tags: [] status: publish type: post published: true meta: {} ---
I found myself in a position today where I had to update the JDBC drivers on our CFMX servers. You can find out more about the fixes when applying the driver and download here.
First things first, to check what version you are running add the following lines to a .cfm template and run it:
<cfscript>
jdbcDriver = CreateObject("java", "macromedia.jdbc.sqlserver.SQLServerDriver");
writeoutput(jdbcDriver.getMajorVersion() & "." & jdbcDriver.getMinorVersion());
</cfscript>
<!--- just for the hell of it dump all the methods --->
<cfdump var="#jdbcDriver#" />
This should return 3.2 (if you are running 6.1 anyway). Now back up your copy of macromedia_drivers.jar, stop your instance and copy the new macromedia_drivers.jar file over. Now if you have CFMX running as an instance of JRun (or as Macromedia call it: the J2EE configuration), you?ll need to copy the drivers over to instance cfusion\lib folder. Simply copying it into JRun\lib will only affect JRun.
{your install path}\JRun4\servers\{your instance}\cfusion-ear\cfusion-war\WEB-INF\cfusion\lib\
Then remember to restart the CFMX instance and the re-run the script and see if the version number has increased to 3.3. If not consider stopping and restarting your JRun server and all the instance associated with it.
One thing I noticed and this was purely coincidental was that if I checked the version of jdbc driver currently loaded after copying the new drivers over and not restarting the instance, the version number returned was: -1.-1!


?
You can use URL parameters, for example:
index.html?normalize=true&logplot=true&countries=China;Italy;South%20Korea
log
Switch to log-plot [l]
n
Normalize by population (default) [n]
d
Cycle through available datasets [d]
by
Holger Dell
(2020). Source code on
github
.
empty tooltip


| SYSLOGD(1) |
User Commands |
SYSLOGD(1) |
syslogd - manual page for syslogd 1.31.1
BusyBox v1.31.1 (2020-04-30 13:38:01 EDT) multi-call binary.
System logging utility
- -n
- Run in foreground
- -R HOST[:PORT]
- Log to HOST:PORT (default PORT:514)
- -L
- Log locally and via network (default is network only if -R)
- -C[size_kb]
- Log to shared mem buffer (use logread to read it)
- -K
- Log to kernel printk buffer (use dmesg to read it)
- -O FILE
- Log to FILE (default: /var/log/messages, stdout if -)
- -s SIZE
- Max size (KB) before rotation (default 200KB, 0=off)
- -b N
- N rotated logs to keep (default 1, max 99, 0=purge)
- -l N
- Log only messages more urgent than prio N (1-8)
- -S
- Smaller output
- -t
- Strip client-generated timestamps
- -D
- Drop duplicates
- -f FILE
- Use FILE as config (default:/etc/syslog.conf)


Dear *|FNAME|*,
Often, that's exactly how rejection leaves
us feeling.
But, as awful as it is, rejection is unavoidable.
Not everybody will want to date you. Some of your
friendships will end. Jobs will turn you down. You won't
always get your way.
But, that's okay.
Don’t let those rejections make you believe the lie that
you’re fundamentally flawed or unworthy.
If you struggle with doing that, remember this:
You’re so worthy that Jesus died for
you.

You should remind yourself of those realities because
they are just as real as the rejections that you will
inevitably experience.
Keep reading for this week's collection of articles
(including one about managing rejection with
grace)!
Don't forget, as much as rejection, heartbreak, and loss
can hurt...we don't always know in the moment what is
best for us.
But, God does.
So, when He closes a door, even a door you wanted open
SO BADLY, remember, He knows what is best for you.
And, the best is yet to come!
Sincerely,


{% load static %}
The below dropdown is a list of questions asked to a selected group of individuals in random places in Nairobi County. Click on a question and hover on each mapped circle to view either the region or the response for a particular question:


Streamy is a crowd-sourced journalism platform. With streamy, you can view live broadcasts of popular current events provided by nearby users. Becoming a streamy broadcaster is easy, it takes seconds! Just click "Broadcast" and begin broadcasting straight away, on any device. When you make a tweet near a place covered by major news networks, streamy will tweet you a link to begin streaming unbiased content to other users. Discover more!


Deadlock over PM's resignation, re-elections: Pervaiz Khattak
by https://www.facebook.com/dunyanewsISLAMABAD (Dunya News) – Head of government’s negotiation committee Pervaiz Khattak said opposition and government are in deadlock over demand of PM’s resignation and re-elections in the country.
Talking to media he said opposition must provide proves of rigging in 2018 general elections. He said PM’s resignation cannot be demanded without any proof.
On the other hand, Speaker Punjab Assembly Chaudhary Pervaiz Elahi has met with JUI-F chief on Thursday to discuss matters pertaining to Azadi March and current political situation.
After his fourth meeting with Maulana Fazlu Rehman in a week, Elahi said we are hopeful as things are moving in a positive trajectory. He said many suggestions were discussed and nation would soon hear a good result of talks.


Club Secretary | Womxn in Computer Science | Hunter College
As a Club Secreatary, I organize networking events for members and board members, take minutes for club meetings as well as design flyers for club events.
I also maintain a bi-weekly newsletter with my Co-Secretary pertaining to internship opportunities and student resources.
Sales Associates (Flex) | Macy's Inc.
As a Sales Associate, I operated a computerized cash register system to conduct daily business transactions.
I also developed interpersonal skills to boost credit and sales in my department by 15%.
Student Intern | Break Through Tech (Summer Guild)
As a Student Intern, I gained knowledge and skills in HTML, CSS, and JavaScript.
Afterwards, I completed a working model of an interactive website in a team of 3 within 5 days.
This experience was particularly very eye-opening for me as it helped me realize my passion for coding and building new and exciting apps.
Undergraduate Junior | CUNY Hunter College
GPA: 3.792
Expected Graduation Date: June 2023
Relevant Coursework: Calculus II | Software Analysis and Design III | Discrete Structures I | Intro to Applied Statistics | Computer Architecture I


Photography & Video
X1's main objective has always been to increase the chances of a better return on investment when our customers buy from us. As part of this, X1 provides photography and video options to add variety, control and value to the service that we offer.
Photography
Whether it be pack shots...
product imagery...
food and drink...
or outdoor events...
X1 can help.
Specialist Photography & Video
For more advanced project, X1 has teamed up with CJ Property Marketing, who are specialists in property photography with a portfolio of services including RICS compliant floor plans, EPCs and property videos.
Their talented and creative team work with the most up-to-date equipment to provide the highest quality photography and videos.
For an overview of their services, watch the following short video.
If you have any questions, contact Brett Jordan on 01753 215315 or email brett@x1.ltd.uk.


DSRM Attack Mitigation
The only true mitigation for this issue is to ensure the DSRM account passwords are unique for every Domain Controller and are changed regularly (at least as often as other account passwords). Also, ensure the DsrmAdminLogonBehavior regkey is *not* set to 2 – this registry key doesn’t exist by default. Setting this regkey to 1 forces the admin to stop the Directory Services service for DSRM logon to work.
The Registry Key HKLM\System\CurrentControlSet\Control\Lsa\DsrmAdminLogonBehavior should not exist or be set to 1.


About
Me
Hi! I'm Thomas Bell, currently a first-year undergraduate at Curtin University. I'm studying Electronic and Communication Engineering and Computer Science as a double degree (I love saying that one out loud). My interests include technology, mathematics, computer graphics, design, and learning Japanese as a second language.
Programming has held a special place in my heart ever since my high school's Specialist ICT program introduced me to the versatility and boundless potential of websites and web programming. My favourite languages include Python, JavaScript (both on the front end and the back end), C++, ANSI C and C#. Many of my personal projects are open-source - I believe development is better when it's more collaborative and free to view, allowing code to thrive and expand much more quickly and effectively.
Privacy
I like privacy, and so do you. I try and make everything I create free, open and collect as little information as possible. However, I am now using Google Analytics on my website, mainly because I want to find out more about people who visit this place and where they come from. And like any good privacy-concerned service, I have provided an opt-out for those who object to even simple analytics. I do not, and will never, serve ads on this website or use your information for profit.
Here is a list of basic information that Google Analytics collects.
Click here to opt out of Google Analytics tracking.
This Website
It started out as a side project after I had finished working on a website assignment for school. I would make quick little applications and put it on this website on a local web server. It only got off the ground and into the cloud once I moved to GitHub Pages. It's still nothing that remarkable, but I'd like to think that one day it'll be one of those things you can look back on when I'm all grown up.
Contacting Me
Want to talk? I am very reserved, so I don't go on social media websites that often. Your best bet at having a conversation is to email me. I do have Facebook, Twitter, Skype, all that, but I'd rather not share to people whom I don't necessarily know anything about. My GitHub profile has a few more projects that I might not have uploaded to this website yet. I should get into the habit of making more commits.
Content Licensing
Legal stuff is a pain, so I release all my coding work under the MIT License. What that means is that you can copy, edit, redistribute, remix and even commercially sell things based upon my work under one condition: You must attribute me in the product. My name and a link back to the website should suffice as attribution. The words, creative works and styling that I have produced are covered under the CC BY license. You can do the same as the MIT License, under the same conditions as well; it's a little more formal. Any concerns can be redirected to my email.
Other People's Work
The above does not apply to stuff that other people have made, but I am using in the website. Here is a short rundown of things that I haven't made:
- The icons for the navigation to the left and right, excluding the "V6" logo down the lower right, are courtesy of iconmonstr.com. It's a pretty cool free icon website that lets you use as many icons as you want without attribution. There are still some terms and conditions you have to follow, however.
- jQuery is an excellent JavaScript library that handles a lot of things, and which I use liberally. It belongs to the jQuery Foundation, and is licensed under the MIT License.
- Any other people's code which I use will be pointed at by documentation and in the descriptions for the projects themselves.


Using Qt Quick Behaviors with States
Using Behaviors with States
In some cases you may choose to use a Behavior to animate a property change caused by a state change. While this works well for some situations, in other situations it may lead to unexpected behavior.
Here's an example that shows the problem:
import QtQuick 2.0 Rectangle { width: 400 height: 400 Rectangle { id: coloredRect width: 100 height: 100 anchors.centerIn: parent color: "red" Behavior on color { ColorAnimation {} } MouseArea { id: mouser anchors.fill: parent hoverEnabled: true } states: State { name: "GreenState" when: mouser.containsMouse PropertyChanges { target: coloredRect color: "green" } } } }
Testing the example by quickly and repeatedly moving the mouse in to and out of the colored rectangle shows that the colored rectangle will settle into a green color over time, never returning to full red. This is not what we wanted! The problem occurs because we have used a Behavior to animate the change in color, and our state change is trigged by the mouse entering or exiting the MouseArea, which is easily interrupted.
To state the problem more formally, using States and Behaviors together can cause unexpected behavior when:
- a Behavior is used to animate a property change, specifically when moving from an explicitly defined state back to the implicit base state; and
- this Behavior can be interrupted to (re-)enter an explicitly defined state.
The problem occurs because of the way the base state is defined for QML: as the "snapshot" state of the application just prior to entering an explicitly defined state. In this case, if we are in the process of animating from green back to red, and interrupt the animation to return to "GreenState", the base state will include the color in its intermediate, mid-animation form.
While future versions of QML should be able to handle this situation more gracefully, there are currently several ways to rework your application to avoid this problem.
1. Use a transition to animate the change, rather than a Behavior.
import QtQuick 2.0 Rectangle { width: 400 height: 400 Rectangle { id: coloredRect width: 100 height: 100 anchors.centerIn: parent color: "red" MouseArea { id: mouser anchors.fill: parent hoverEnabled: true } states: State { name: "GreenState" when: mouser.containsMouse PropertyChanges { target: coloredRect color: "green" } } transitions: Transition { ColorAnimation {} } } }
2. Use a conditional binding to change the property value, rather than a state
import QtQuick 2.0 Rectangle { width: 400 height: 400 Rectangle { id: coloredRect width: 100 height: 100 anchors.centerIn: parent color: mouser.containsMouse ? "green" : "red" Behavior on color { ColorAnimation {} } MouseArea { id: mouser anchors.fill: parent hoverEnabled: true } } }
3. Use only explicitly defined states, rather than an implicit base state
import QtQuick 2.0 Rectangle { width: 400 height: 400 Rectangle { id: coloredRect width: 100 height: 100 anchors.centerIn: parent Behavior on color { ColorAnimation {} } MouseArea { id: mouser anchors.fill: parent hoverEnabled: true } states: [ State { name: "GreenState" when: mouser.containsMouse PropertyChanges { target: coloredRect color: "green" } }, State { name: "RedState" when: !mouser.containsMouse PropertyChanges { target: coloredRect color: "red" } }] } }


Trends
| # | Search Terms | Views |
|---|---|---|
| 1 | The Dark Knight Rises (Google Russia) | 317,233 |
| 2 | The Dark Knight Rises (Google Russia) | 317,233 |
| 3 | The Dark Knight Rises (Google Russia) | 317,233 |
| 4 | The Dark Knight Rises (Google Russia) | 317,233 |
| 5 | The Dark Knight Rises (Google Russia) | 317,233 |
| 6 | The Dark Knight Rises (Google Russia) | 317,233 |
| 7 | The Dark Knight Rises (Google Russia) | 317,233 |
| 8 | The Dark Knight Rises (Google Russia) | 317,233 |
| 9 | The Dark Knight Rises (Google Russia) | 317,233 |
| 10 | The Dark Knight Rises (Google Russia) | 317,233 |


Besides the user guide, there exist other opportunities to get help on using skimage.
The General examples gallery provides graphical examples of typical image processing tasks. By a quick glance at the different thumbnails, the user may find an example close to a typical use case of interest. Each graphical example page displays an introductory paragraph, a figure, and the source code that generated the figure. Downloading the Python source code enables one to modify quickly the example into a case closer to one’s image processing applications.
Users are warmly encouraged to report on their use of skimage on the Mailing-list, in order to propose more examples in the future. Contributing examples to the gallery can be done on github (see How to contribute to skimage).
The quick search field located in the navigation bar of the html documentation can be used to search for specific keywords (segmentation, rescaling, denoising, etc.).
Docstrings of skimage functions are formatted using Numpy’s documentation standard, starting with a Parameters section for the arguments and a Returns section for the objects returned by the function. Also, most functions include one or more examples.
The scikit-image mailing-list is<EMAIL_ADDRESS>(users should join the Google Group before posting). This mailing-list is shared by users and developers, and it is the right place to ask any question about skimage, or in general, image processing using Python. Posting snippets of code with minimal examples ensures to get more relevant and focused answers.
We would love to hear from how you use skimage for your work on the mailing-list!


It is a long established fact that a reader will be distracted by
It is a long established fact that a reader will be distracted by
It is a long established fact that a reader will be distracted by
It is a long established fact that a reader will be distracted by
It is a long established fact that a reader will be distracted bIt is a long established fact that a reader will be distracted by y It is a long established fact that a reader will be distracted by It is a long established fact that a reader will be distracted by
Read More


CHAPTER 90
STATE POLICY CONCERNING THE UTILIZATION OF
VOLUNTEER SERVICES
Section
90-1 Definitions
90-2 Scope of chapter; status of volunteers
90-3 Rights, responsibilities, and expectations in
volunteer relationships
90-4 Volunteer benefits
90-5 Agency reports, required information
Cross References
Volunteer emergency medical disaster response personnel, see §321-23.
Volunteer service (immunity), see chapter 662D.


| DOSE: |
180 mg |
oral |
Codeine |
(extract) |
I was prescribed generic Codeine 3's (these pills had a M in a square on one side, and a large 3 on the other) for an injury/reoccurring pain I've been dealing with. I had only consumed Codeine in the form of Tylenol 1's a couple years before. I was taking double the recommended dose and it still did virtually nothing for the pain. Needless to say I had my doubts about Codeine's recreational value.
I have used Hydrocodone recreationally before and was pleased with the effects in time.
I noticed that it took a few uses to recognize the all the effects and that each time I used Hydrocodone it seemed a little better and more enjoyable. I'm aware it's probably part of the addictive process.
NOTE: I've made a habit (no pun intended) of always waiting at least a month between recreational doses of Opiates, so I haven't built any tolerance.
One night I took a single 30 mg. I wasn't expecting it to help my chronic pain much but it did fairly well (better than Aspirin could). The next night I decided to take a recreational dose and see how it compares to Hydrocodone.
I performed a Cold Water Extraction on four 30 mg pills(with the Hydrocodone I was dissolving the crushed pills in cold water and then filtering, with the Codeine I decided to dissolve the pills in warm water first, then cool the water until it's ice cold - I'm not sure which works better, I suppose the latter). I've been mixing it for 5-10 minutes on average before pouring the mixture through coffee filters.
I proceeded to drink the ultra-bitter Water/Codeine...cringing with each gulp...not as bad as Kava Kava...I then walked around a little waiting for the that pleasant floating feeling Hydrocodone gives me...nope...not feeling it...so I swallowed an extra 2 pills (10 minutes apart). This would bring the total amount of Codeine taken to around 180 mg.
I'm just gonna list the effects, since I wanted to keep this report somewhat short:
- Warm, comfortable, relaxed, no pain - Duh.
- Quite energetic (Opiates seem to invigorate me)
- Very talkative (Like a child)
- I felt very loving...then again maybe I was just really happy.
- Mild nausea (Very Mild, Only when standing - laying down always fixes this)
- No floating feeling/Initial rush (like I got with Hydrocodone) (Maybe I would have if I had consumed the entire dose in a Cold Water Extraction all at one time)
- Increased enjoyment in eating. LOL
(I always enjoy eating little bits of food while on Opiates)
- Virtually no Itching (Hydrocodone makes me itch - I actually enjoy it though)
- 'Orgasmic breathing' –
This was an effect I didn't notice on the Hydrocodone. Taking deep breaths was very enjoyable. It's kinda hard to explain, but each deep breath I took produced this wonderful pleasant and relaxed feeling deep in my body. I just laid there watching Letterman while breathing in and out in and out. Very enjoyable. I believe it lasted for about 2 or 3 hours, I wasn't really paying attention :)
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


EUR/USD remains depressed near 1.1060, FOMC eyed
by Pablo Piovano- EUR/USD stays under pressure in 2-day lows.
- DXY raises to weekly highs beyond the 98.00 mark.
- FOMC minutes coming up next in the NA session.
The bearish note around the shared currency remains unchanged towards the end of the European trading hours on Wednesday, dragging EUR/USD to new lows in the vicinity of 1.1050.
EUR/USD looks to trade, FOMC
The euro and the rest of the riskier assets came under extra downside pressure on Wednesday following the resurgence of US-China trade concerns as well as increasing jitters stemming from the unabated social unrest in Hong Kong. In fact, the relationship between the US and China carries the potential to deteriorate even further after the US Senate unanimously passed the Hong Kong Humans Right and Democracy Act bill on Tuesday.
Also weighing on spot, yields of the German Bund keep navigating in the area of 3-week lows in the -0.387 region, sponsoring a wider spread vs. their American peers.
On the docket, another poor print from the German Producer Prices in October is also undermining the sentient in the shared currency. Across the pond, the most relevant event will be the publication of the FOMC minutes later in the European evening.
What to look for around EUR
Spot met strong resistance in the 1.1080/90 band for the time being while it keeps looking to USD-dynamics and headlines from the US-China trade front for direction. On the macro view, the outlook in Euroland remains fragile and does nothing but justify the ‘looser for longer’ monetary stance by the ECB and the bearish view on the single currency in the medium term at least. In this regard, all the looks will be upon the release of November’s preliminary PMIs later in the week.
EUR/USD levels to watch
At the moment, the pair is losing 0.15% at 1.1062 and a breach of 1.0989 (monthly low Nov.14) would target 1.0925 (low Sep.3) en route to 1.0879 (2019 low Oct.1). On the upside, the initial barrier emerges at 1.1089 (high Nov.18) followed by 1.1174 (200-day SMA) and finally 1.1179 (monthly high Oct.21).


Ornamentum Dropdown is a highly configurable Angular component which support dropdown data representation. This component supports client/server/realtime data binding along with data filtering, grouping, selection, templating, theming and much more.
This component can be integrated with any UI framework and fully responsive dynamic mobile friendly component user interface design will deliver best user experience in any device resolution. Built with pure angular components and minimal peer dependencies to minimize overall bundle size. Guaranteed seamless integration via developer friendly component API along with rich example code based documentation. This component support all angular supported browsers out of the box.
Following example depicts the outer appearance of the Ornamentum Dropdown. Try out yourself in Stack Blitz Demo.
Angular 7 or higher version is required to use the latest version ({{packageVersion}}) of Ornamentum.
Download & Install the Ornamentum package and its dependencies using the following command.
or
Once the installation is successful, add the Ornamentum Dropdown component to your application Root Module as depicted below.
Import the Ornamentum theme style sheet reference to apply theming of your preference. Refer Themes section for more details.
SCSS: Include Ornamentum theme SCSS style sheets in Angular CLI config "styles".
You must install compass mixins if you are using scss style sheets. Install using either of following command depending on your package manager.
or
CSS: Include Ornamentum prebuilt CSS theme style sheets in Angular CLI config "styles".
Finally, use Ornamentum dropdown component.
Example usage component markup fileFollowing dependencies are required to be installed along with Ornamentum.
Refer below sections for available feature/functionality usage in detail.


Use https if you want the payment forms to load
Tristan
Square is the commerce platform of the future
Card
Catalog
Customers
Devices
Orders
Solutions
Square POS
Square for retail
Stadium ticketing app
Square for services
Hotel pms
Loyalty
SAP
invoices
Virtual Terminal
eventbrite
employee management
payroll
APIs
Catalog API
Customers API
Orders API
eCommerce API
primitives
Card
Catalog
Customers
Devices
Orders
Inventory
Fee
Permission
Employee
Customer
Coupon
Discount
Identity
Location
Bank Account
Payment
Refund
Course
Delivery
Address
Variation
Modifier
Tender
Timecard
Display
Store
Tax
Campaign
E-Commerce
-
Security
-
Ease of use
-
Compliance
Recurring payments?
Transaction based fees
Point of Sale API
square-connect
Square is the commerce platform of the future


RSDStepViewController
open class RSDStepViewController : UIViewController, RSDStepViewControllerProtocol
Undocumented
-
Undocumented
Declaration
Swift
open weak var taskController: RSDTaskController!
-
Undocumented
Declaration
Swift
open weak var delegate: RSDStepViewControllerDelegate?
-
Undocumented
Declaration
Swift
open var step: RSDStep!
-
Undocumented
Declaration
Swift
public var uiStep: RSDUIStep?
-
Undocumented
Declaration
Swift
public var themedStep: RSDThemedUIStep?
-
Undocumented
Declaration
Swift
public var activeStep: RSDActiveUIStep?
-
Undocumented
Declaration
Swift
open var originalResult: RSDResult?
-
Undocumented
Declaration
Swift
lazy open var currentResult: RSDResult =
-
Undocumented
Declaration
Swift
public init(step: RSDStep)
-
Undocumented
Declaration
Swift
public override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?)
-
Undocumented
Declaration
Swift
public required init?(coder aDecoder: NSCoder)
-
Undocumented
Declaration
Swift
public private(set) var isVisible = false
-
Undocumented
Declaration
Swift
public private(set) var isFirstAppearance: Bool = true
-
Undocumented
Declaration
Swift
open override func viewWillAppear(_ animated: Bool)
-
Undocumented
Declaration
Swift
open override func viewDidAppear(_ animated: Bool)
-
Undocumented
Declaration
Swift
open override func viewWillDisappear(_ animated: Bool)
-
Undocumented
Declaration
Swift
open override func viewDidDisappear(_ animated: Bool)
-
Undocumented
Declaration
Swift
@IBOutlet open var statusBackgroundView: UIView?
-
Undocumented
Declaration
Swift
@IBOutlet open var navigationHeader: RSDNavigationBarView?
-
Undocumented
Declaration
Swift
@IBOutlet open var navigationFooter: RSDNavigationFooterView?
-
Undocumented
Declaration
Swift
open var continueButton: UIButton?
-
Undocumented
Declaration
Swift
open var isForwardEnabled: Bool
-
Undocumented
Declaration
Swift
open func didFinishLoading()
-
Undocumented
Declaration
Swift
open func setupNavigation()
-
Undocumented
Declaration
Swift
open func setupBackgroundColorTheme()
-
Undocumented
Declaration
Swift
open func setupHeader(_ header: RSDNavigationBarView)
-
Undocumented
Declaration
Swift
open func hasTopBackgroundImage() -> Bool
-
Undocumented
Declaration
Swift
open func setupFooter(_ footer: RSDNavigationFooterView)
-
Undocumented
Declaration
Swift
open func shouldUseGlobalButtonVisibility() -> Bool
-
Undocumented
Declaration
Swift
open func setupNavigationView(_ navigationView: RSDStepNavigationView, isFooter: Bool)
-
Undocumented
Declaration
Swift
open func usesLightStyle(isFooter: Bool) -> Bool?
-
Undocumented
Declaration
Swift
open func setupButton(_ button: UIButton?, for actionType: RSDUIActionType, isFooter: Bool)
-
Undocumented
Declaration
Swift
open func color(named name: String?) -> UIColor?
-
Undocumented
Declaration
Swift
@IBAction open func goForward()
-
Undocumented
Declaration
Swift
@IBAction open func goBack()
-
Undocumented
Declaration
Swift
@IBAction open func skipForward()
-
Undocumented
Declaration
Swift
@IBAction open func cancel()
-
Undocumented
Declaration
Swift
@IBAction open func showLearnMore()
-
Undocumented
Declaration
Swift
open func action(for actionType: RSDUIActionType) -> RSDUIAction?
-
Undocumented
Declaration
Swift
open func shouldHideAction(for actionType: RSDUIActionType) -> Bool
-
Undocumented
Declaration
Swift
open var countdown: Int = 0
-
Should this step start the timer? By default, this will return true for active steps. However, if you are running your app in the background, then you will need to set up a secondary means of keeping the app from suspending when the user locks the screen. You can do so by playing music or by using background GPS location updates.
Note: The speech synthesizer does not work when the app is in background mode, but sounds and vibrations will still fire if the AVAudioSession is set up to do so.
Declaration
Swift
open var usesTimer: Bool
-
Time interval for firing a repeating timer.
Declaration
Swift
open var timerInterval: TimeInterval
-
Undocumented
Declaration
Swift
public private(set) var pauseUptime: TimeInterval?
-
Undocumented
Declaration
Swift
public private(set) var startUptime: TimeInterval?
-
Undocumented
Declaration
Swift
public private(set) var completedUptime: TimeInterval?
-
Undocumented
Declaration
Swift
open func performStartCommands()
-
Undocumented
Declaration
Swift
open func performStopCommands()
-
Undocumented
Declaration
Swift
open func playSound(_ sound: RSDSound = .short_low_high)
-
Undocumented
Declaration
Swift
open func vibrateDevice()
-
Undocumented
Declaration
Swift
open func speakInstruction(_ instruction: String, at timeInterval: TimeInterval, completion: RSDVoiceBoxCompletionHandler?)
-
Undocumented
Declaration
Swift
open func speakInstruction(at duration: TimeInterval)
-
Undocumented
Declaration
Swift
open func start()
-
Undocumented
Declaration
Swift
open func stop()
-
Undocumented
Declaration
Swift
open func pause()
-
Undocumented
Declaration
Swift
open func resume()
-
Undocumented
Declaration
Swift
open func timerFired()
-
Undocumented
Declaration
Swift
open func playCompletedAlert()


Recipe 18.3. Generating Random Samples with ReplacementCredit: Sean Ross ProblemYou need to generate random samples with replacement out of a "population" of items that are held in a sequence. SolutionA generator for the purpose is quintessentially simple: import random def sample_wr(population, _choose=random.choice): while True: yield _choose(population) Discussionrandom.sample lets you do random sampling without replacement, and Recipe 18.4, which follows, shows a generator to perform sampling without replacement with excellent memory-consumption characteristics. This recipe provides a generator for sampling with replacement, which is an even simpler task. Basically all the work gets delegated to random.choice. The sample_wr generator shown in this recipe is unbounded: used on its own, it will keep looping forever. To bound the output of an intrinsically unbounded generator, you can use it in a for statement that at some point executes a break, or use other techniques shown in Recipe 19.2. For example, to make a random string of 50 lowercase ASCII letters: import itertools from string import ascii_lowercase x = ''.join(itertools.slice(sample_wr(ascii_lowercase), 50)) string.ascii_lowercase is exactly the string 'abcdefghijklmnopqrstuvwxyz'. If you didn't have the sample_wr generator, the equivalent code might be something like: from string import ascii_lowercase from random import choice x = ''.join([ random.choice(ascii_lowercase) for i in xrange(50) ]) So, the practical added-value of sample_wr is modest, when compared to other available building-blocks. It is, however, preferable to have such a fundamental concept of statistics as sampling with replacement embodied as its own function, rather than having to implement it with an explicit loop over random.choice each time it is needed. See AlsoLibrary Reference and Python in a Nutshell docs for module random. |


welcome to the shibsa website! thios website is still a W.IP (work in progress(my owners taught em that!!!)) so dont expecrt much!. webiste coded by me!, rosie and i got some help from otherhs too! yay!
* me workign very hard *
we are vworkin very hard to make yuor experience optimal!!!
in the meantime you can watch this video!!


Ro produces everything from the ground up. He wirtes the lyrics, makes the beat, takes video footage and edits them to completion. He is the a creative media chemist.
Second song and video produced by Ro Trilogy
First completed music video produced by Ro Trilogy


Privacy Policy
The Data Controller
This privacy policy relates to Centre Of Excellence Group Limited which comprises the following subsidiaries and their corresponding websites: Centre Of Excellence Online, Hypnotherapy Centre Of Excellence and NLP Centre Of Excellence. Centre Of Excellence Group Limited is the Data Controller. We may collect certain information about you in the course of our dealings and through transactions with you. We take privacy and security of customer information seriously and operate a high level of internal security. We will treat your personal data as confidential and will only use it as set out in this privacy policy. By dealing with us you agree to us collecting, using and publishing your personal information in accordance with the details below.
What information do we collect about you?
- We collect information about you when you register with us, when you use our services and when you contact us either by post or by e-mail. We collect information that will help us provide you with a better service whenever you interact with us by whatever means you choose to communicate with us, that could be via the website, email, phone or post or any other form of interaction such as social media.
- When subscribing there is a link to this privacy policy and also in the confirmation email that we send when you subscribe and also an ‘unsubscribe’ link at the bottom of every email communication.
How will we use the information we collect about you?
We will do the following with your personal information:
- store and use it to provide you with any services which you order from us and maintain evidence of your being a subscriber to our services.
- and improve and develop the services we offer by analysing your information including information related to your usage of our website or any other interaction with us
- as a subscriber, either contractually (as a customer) or as somebody who has demonstrated clear interest in our products (subscribed to find out more), we will send you information and updates about them and the group and its services.
- If you no longer wish to receive marketing material, simply click the ‘unsubscribe button’ that is included on every electronic communication such as email or contact us to request that we unsubscribe you.
How long do we store and use your data?
we keep and use your data under contract for as long as you choose to maintain your account once opened, whereas data from subscribers who don’t open an account remains on our system for 3 years after registering or initially subscribing.
Do we store any ‘sensitive’ or payment data?
- We don’t collect or store any ‘sensitive data’
- We work with a PCI compliant Payment Processor to arrange your payments for courses, we don’t therefore collect or hold any payment records.
Will we share your information with anyone else?
- Apart from our group businesses and the partners or processors that we employ under strict privacy contracts to carry out work for us, we don’t share any data with unrelated parties. Be assured that your privacy is important to us and so your data cannot be accessed by any unauthorised person or business.
- If for any reason we needed to share your data other than for our group business in the future, we will first ask your permission to do so.
Can you update your information?
- Most of your data is held in your account on our training portal, you can securely access it there and we’d appreciate it if you keep it up to date amend it or add to it as you wish. Your data is held there under contract until you close your account with us at which point, access to your courses will be disabled and your data will be deleted.
- You may also update your information by contacting us by email as set out below. Please help us keep your personal data up to date by notifying us of any such changes in accordance with this privacy policy.
Can you ask for a copy of the information we hold?
- We conform to the latest data regulations for May 2018 and in addition we conform to best practice by enabling your rights to access your data via your account where available.
- In addition to conform to the latest data protection legislation i.e. the GDPR 2018 and accordingly your right to access any personal information that we may hold about you. This could be in addition to what you can freely access from the portal and may include for example, information relating to affiliate programme activity if applicable. To access this information or advise us to delete it (right to be forgotten) please contact us as set out below, there may be a charge depending on the circumstances.
Contacting us
If you:
- do not wish to receive marketing material; or
- wish to update your personal information or request access to it: or
- have any other queries or requests about our processing of your personal information Please contact us at<EMAIL_ADDRESS>Privacy Policy Details
Lawful basis for ‘processing your data’
We process personal information on the following bases:
- Customers are processed on a contractual basis as they have perpetual licences to access and use their training courses within the ‘portal’.
- Enquirers and subscribers who have not purchased and so not opened an account are processed under the Privacy and electronic communication regulations for ‘soft opt-in’ rules.
- More recent subscribers will have been also offered the opportunity to consent to their data being processed and to receive marketing material.
- Any customer or subscriber can exclude themselves from receiving marketing material by simply unsubscribing using the facility included on every communication.
Personal data for International Customers
We are based in the UK and comply with all local privacy regulations, we cannot legislate for any regulations or laws that may apply differently in other countries. Submitting your personal data is done so strictly on that basis and the data of any foreign nationals that we may hold as a result is the responsibility of the person who submits it. If you would like us to remove any data please contact us and advise us as detailed above
Confirming that you are the subscriber
We provide individuals with privacy information at the time we collect their personal data from them and confirm it immediately with a follow up email to confirm that it is you who has submitted the data and to confirm that our customers are aware of our position on personal information
Marketing to Children
- In line with the new data laws, on registration we ask the customer to confirm that they consent to receive marketing information and that you are 16 or over.
- Our courses are designed for adult education only.
Use of ‘electronic communications’
We try to use the most popular and convenient forms of electronic communication. This could include email or sms or for example, new and emerging forms of communication such as Facebook messenger. Where we ask for consent to receive communications we are doing this in general to cover all forms of electronic communication- if you wish to be excluded from any simply use the unsubscribe link on every communication or contact us as above.
Use of Cookies
As is common practice with almost all professional websites this site uses cookies, which are tiny files that are downloaded to your computer, designed to improve your experience. For more information on cookies and how we use them please refer to our separate cookie policy, which describes what information they gather, how we use it, why we sometimes need to store these cookies and how you can remove them if you wish to.
How do we use ‘Profiling’
To avoid wasteful or potentially annoying marketing where products are not appropriate, we use various profiling tools to help us select just the customers whom we believe will be interested in a particular offer or piece of information. Clearly, this can never be 100% accurate but we hope it helps us provide information that is relevant and of interest to you rather than sending everything that is available on our website. To exclude yourself from any profiling and to just receive everything, please contact us and advise us of your wishes.
Changes to the Privacy Policy
We regularly review and, where necessary, update our privacy information and should there be any change of use of our privacy information, we’ll communicate the changes to individuals before starting any new processing.


---
layout: post
title: 11/5 schoolwork
date: '2013-11-06T22:19:00.001-07:00'
author: Jacob .
tags:
- homeschool-journal
modified_time: '2013-11-06T22:19:56.304-07:00'
blogger_id: tag:blogger.com,1999:blog-6400085873105072120.post-2885175894762201577
blogger_orig_url: http://www.svlark.com/2013/11/115-schoolwork.html
---
Spanish with Audrey
Read Little Farm in the Ozarks, "Theif!" to both girls
Read TWO, "Slaying of the Suitors"


Day 1
Exercise |
Set 1 |
Set 2 |
|---|---|---|
| Bench Press |
|
|
Exercise |
Set 1 |
Set 2 |
|---|---|---|
| Bench Press |
|
|


The final design encompasses details for the first and the second floor which includes the specific ETAP luminaires used and its resulting photometric values. These details are discussed in the main body in relation to meeting the AS/NZS 1680 lighting standards. Each floor contains variety of rooms for different tasks such as the board room and the CAD room, so special conditions and factors were taken into account during the design. These factors are also noted in more details in the discussion.
electronic design has been produced and this will be evident in this report. The finalised prototype successfully manages the operations of the motor. Some important features include stroke length control, resonant frequency detection and having minimised power consumption. Other features were implemented in order to enhance the capabilities of the motor operation this include a dynamic adjustment for any sudden load changes that were experienced during motor operation.
As the demand for power becomes ever increasing, a
smarter approach is necessary to meet this demand. Smart
Meters will play a key role in the deployment of the Smart
Grid and the management of power demand. This report
containsthe steps taken to develop a Smart Meter enabled
household with load control. Also included in this report
is the developed prototype which entails various
communication methods and Smart Meter enabled
programs that will benefit both the consumers and the
utility. Communication technologies that were used in
this implementation includes Wi-Fi, Z-Wave and Power
Line Communication (PLC). The household loads
communicate using these methodologies to the PC master
controller where they are controlled during Demand Side
Management between certain periods of the day.
The working ice cream factory currently has 6 different stations each specializing in a specific activity. These activities are Chocolate / Vanilla Ice cream loading, Dual Loading, Lid loading and Ice cream storage. There is also a conveyor system that helps to transfer the ice cream from station to station. Each of these stations (including the conveyors) are controlled using a Beagle Bone Black embedded controllers that can communicate to each other using the local network connection.


clone()
method and uses of java.lang.Cloneable
.
Some coding standards prohibit the use of clone()
and recommend using a copy constructor or
the static
factory method instead.
The inspection ignores calls to clone()
on arrays because it's a correct and compact way to copy an array.


The external prediction capability of quantitative structure-activity relationship (QSAR) models is often quantified using the predictive squared correlation coefficient. This value can be calculated with an external data set or by cross validation.
| Version: | 1.2.0 |
| Depends: | methods, stats |
| Published: | 2013-10-15 |
| Author: | Torsten Thalheim |
| Maintainer: | Torsten Thalheim <torstenthalheim at gmx.de> |
| License: | GPL-3 |
| NeedsCompilation: | no |
| CRAN checks: | cvq2 results |
| Reference manual: | cvq2.pdf |
| Package source: | cvq2_1.2.0.tar.gz |
| Windows binaries: | r-devel: cvq2_1.2.0.zip, r-release: cvq2_1.2.0.zip, r-oldrel: cvq2_1.2.0.zip |
| OS X binaries: | r-release: cvq2_1.2.0.tgz, r-oldrel: cvq2_1.2.0.tgz |
| Old sources: | cvq2 archive |
Please use the canonical form https://CRAN.R-project.org/package=cvq2 to link to this page.


How to remove blank rows in Microsoft Excel to tidy up your spreadsheet
by Kelly Laffey, Business Insider US- You can remove blank rows in Excel by first doing a “Find & Select” of blank rows in the document. You can then delete them all at once using the “Delete” button on the Home tab.
- Double check that you’re only deleting the rows that you want, as selecting and deleting individual cells will move the data below it up, potentially disrupting the workflow of your Excel sheet.
- Visit Business Insider’s homepage for more stories.
Though having blank rows in an Excel worksheet isn’t necessarily a bad thing, sometimes they’re unnecessary, as they can make a document take up much more space than intended.
Removing blank spaces and rows in Excel is easy and can be done by using “Find & Select” for all of the blank spaces.
Here’s how to do it on a Mac or PC.
Check out the products mentioned in this article:
Microsoft Office (From $149.99 at Best Buy)
MackBook Pro (From 1,299.99 at Best Buy)
Lenovo IdeaPad (From 299.99 at Best Buy)
How to remove blank rows in Excel
1. Click the Home tab in the top menu bar in Excel, and click “Find & Select” on the right side.
2. Select “Go to Special.”
3. A pop-up box will appear. Select “Blanks,” and then hit “OK.”
4. Excel will then highlight all of the blank cells. Before you delete the blank cells, ensure that only the cells that you want to remove are highlighted. If you just want to remove rows and not individual blank cells, you can always select a cell with “control + click” on a PC, or “command + click” on a Mac, to deselect it. Note that when you delete cells, the data below it will be moved up.
5. Once all the blank rows are highlighted, go to the Home tab and find the “Delete” button on the right-hand side. Select “Delete Sheet Rows.” This will remove the blank rows.
Related coverage from How To Do Everything: Tech:
-
How to make a line graph in Microsoft Excel in 4 simple steps using data in your spreadsheet
-
How to add a column in Microsoft Excel in 2 different ways
-
How to insert multiple rows in Microsoft Excel on your Mac or PC
-
How to make a pie chart from your spreadsheet data in Microsoft Excel in 5 easy steps
-
How to lock cells in Microsoft Excel, so people you send spreadsheets to can’t change certain cells or data


Words of Life
A variant of Conway's Game of Life
First Published: 15/12/22
“I've actually written about it, he [Wittgenstein] talks about how
language developed … couple of people are together. One of them points
to a rock and says “rock”, and the other one says a “rock”. It's just
not even remotely like that. That's just off the spectrum of
discussion. None of these things happen. That's not the way language
develops at all. In fact, the concepts of our mind, you can easily
show, are much richer than anything that's presented.”
- Noam Chomsky
This morning, I was browsing Hacker News, when I came across this link
from
Saharan, where they created a
recursive Game of Life. Mesmerized by its wonderful patterns, I started thinking -
what would happen if we replace a live cell with an alphabet? More
specifically, I am proposing the following changes to
Conway's Game of Life:
- Every live cell is represented by a set of alphabets.
-
Any live cell with two or three live neighbors survives, takes the set
of alphabets from its neighbors, and combines it with its own set.
-
Any dead cell with three live neighbors becomes a live cell. This cell
would be represented by a set with a single element containing a
randomly chosen alphabet.
-
All other live cells die in the next generation.
Things get fascinating when you ask yourself -
Assuming a certain probability distribution over the alphabet, what kind
of words can we construct from these sets?
Is there a word of life?
So like every curious programmer, I wrote some code to explore this
problem. I started with a simple script that generates an 8 x 8 grid and
performs the classic Game of Life with it. I choose to use
the glider pattern
for this experiment.
Next, I replaced the starting live cells with alphabets. For the first
experiment, my probability distribution was based on
the relative frequency in the English language. I also modified the rules to accommodate the changes mentioned above.
All that was left now was to see it in action!
I ran each Game of Life for four iterations and repeated this with a
thousand different starting grids. Here's what I found -
[
("tea", 178),
("eta", 178),
("eat", 178),
("ate", 178),
("toe", 176),
("tie", 174),
("rte", 160),
("ten", 159),
("net", 159),
("est", 152),
("set", 152),
("the", 144),
("one", 144),
("eon", 144),
("roe", 143),
("ore", 143),
("sea", 137),
("ear", 133),
("are", 133),
("era", 133),
("nae", 130),
("oat", 123),
("tel", 121),
("let", 121),
("hoe", 121),
("sat", 120),
("hen", 120),
("hie", 116),
("res", 116),
("ire", 115),
("ode", 115),
("doe", 115),
("ted", 113),
("sot", 112),
("hes", 112),
("she", 112),
("ale", 110),
("lea", 110),
("its", 106),
("sit", 106),
("her", 106),
("ton", 105),
("not", 105),
("ens", 105),
("sen", 105),
("tor", 105),
("rot", 105),
("hit", 104),
("hat", 102),
("oar", 100),
("tan", 99),
("ant", 99),
("int", 98),
("nit", 98),
("tin", 98),
("hot", 98),
("tho", 98),
("die", 94),
("tar", 93),
("lie", 93),
("art", 93),
("lei", 93),
("air", 93),
("rat", 93),
("ole", 93),
("ion", 90),
("nth", 90),
("den", 90),
("end", 90),
("alt", 89),
("lat", 89),
("eds", 89),
("nor", 88),
("dot", 88),
("has", 87),
("ash", 87),
("etc", 87),
("hos", 86),
("ohs", 86),
("rel", 85),
("tad", 85),
("red", 84),
("met", 82),
("ail", 77),
("til", 75),
("lit", 75),
("his", 74),
("sir", 74),
("ran", 73),
("ado", 73),
("ace", 73),
("lot", 73),
("nah", 72),
("dos", 72),
("sod", 72),
("aid", 72),
("ans", 71),
("hrs", 71),
("rent", 70),
("tern", 70),
]
In hindsight, this seems kinda obvious as the alphabets with the highest
frequency are 'e', 't', and 'a', followed by 'o' and 'i'. However, it was
surprising to see how important 'r' (9
th most popular) seemed
to be in the simulation. There were only two four-letter words in Top-100
and both had 'r' in them - rent and tern. I ran this again, and the
results seemed more or less similar.
This got me thinking -
what would happen if all the alphabets have an equal probability?
So I ran the same experiment with an equal probability distribution. Only
this time, the experiment got repeated with
four thousand different starting grids! Here are the results -
Most common words:
[('ltd', 108), ('ult', 104), ('jut', 103), ('icy', 103), ('tab', 103),
('bat', 103), ('fut', 102), ('flt', 100), ('fro', 99), ('for', 99)]
Most common four-letter words:
[('iron', 30), ('ship', 30), ('phis', 30), ('hips', 30), ('bets', 30),
('best', 30), ('pawn', 30), ('tube', 29), ('glut', 29), ('cult', 29)]
Most common five-letter words:
[('bahts', 10), ('baths', 10), ('donas', 9), ('wafer', 9), ('gaits', 9),
('nitro', 8), ('intro', 8), ('prawn', 8), ('bytes', 8), ('chats', 8)]
Most common six-letter words:
[('ovular', 4), ('ration', 3), ('shadow', 3), ('thrive', 3), ('josher',
3), ('thorns', 3), ('bracts', 3), ('beauty', 3), ('prefab', 3),
('ticker', 3)]
Now, in all honesty, none of these seem to mean anything significant - it
all seems quite chaotic. The results could have easily been different with
a different random function (I was using Python's in-built module). I am
curious about how the results would look on a different architecture with
say ten thousand different starting grids! Having more than four
iterations of Game of Life seems to blow up the search space.
I guess, for now, you could say that my machine has decided that its words
of life are - ltd, iron, bahts, and ovular. What a sequence!
I am open-sourcing the script
used to conduct the above experiment.
I would love to know your thoughts on this.
Happy exploring!
←


Last updated: 2020-11-18
Checks: 7 0
Knit directory: cytomapper_publication/
This reproducible R Markdown analysis was created with workflowr (version 1.6.2). The Checks tab describes the reproducibility checks that were applied when the results were created. The Past versions tab lists the development history.
Great! Since the R Markdown file has been committed to the Git repository, you know the exact version of the code that produced these results.
Great job! The global environment was empty. Objects defined in the global environment can affect the analysis in your R Markdown file in unknown ways. For reproduciblity it’s best to always run the code in an empty environment.
The command set.seed(20200602)
was run prior to running the code in the R Markdown file. Setting a seed ensures that any results that rely on randomness, e.g. subsampling or permutations, are reproducible.
Great job! Recording the operating system, R version, and package versions is critical for reproducibility.
Nice! There were no cached chunks for this analysis, so you can be confident that you successfully produced the results during this run.
Great job! Using relative paths to the files within your workflowr project makes it easier to run your code on other machines.
Great! You are using Git for version control. Tracking code development and connecting the code version to the results is critical for reproducibility.
The results in this page were generated with repository version 6ccdd51. See the Past versions tab to see a history of the changes made to the R Markdown and HTML files.
Note that you need to be careful to ensure that all relevant files for the analysis have been committed to Git prior to generating the results (you can use wflow_publish
or wflow_git_commit
). workflowr only checks the R Markdown file, but you know if there are other scripts or data files that it depends on. Below is the status of the Git repository when the results were generated:
Ignored files:
Ignored: .Rproj.user/
Note that any generated files, e.g. HTML, png, CSS, etc., are not included in this status report because it is ok for generated content to have uncommitted changes.
These are the previous versions of the repository in which changes were made to the R Markdown (analysis/01-LoadPancreasData.Rmd
) and HTML (docs/01-LoadPancreasData.html
) files. If you’ve configured a remote Git repository (see ?wflow_git_remote
), click on the hyperlinks in the table below to view the files as they were in that past version.
| File | Version | Author | Date | Message |
|---|---|---|---|---|
| Rmd | 1ffd9d9 | Nils Eling | 2020-11-16 | Small changes to text |
| html | 3c9f49b | Nils Eling | 2020-09-22 | Recompiled from new docker |
| html | 05d2b29 | Nils Eling | 2020-09-14 | Recompiled htmls |
| Rmd | 177107f | nilseling | 2020-09-14 | Updated links to files |
| html | 8e6633e | Nils Eling | 2020-08-21 | Recompiled scripts |
| html | 9ddf2b3 | Nils Eling | 2020-08-20 | Recompiled from with docker container |
| html | d47d609 | nilseling | 2020-07-22 | Recompiled from docker |
| html | a100544 | nilseling | 2020-07-10 | Recompiled htmls |
| html | 2e3df83 | nilseling | 2020-07-09 | Added Github icon and recompiled |
| html | 69f1501 | nilseling | 2020-07-09 | Small fixes and recompilation |
| Rmd | 9b3076b | nilseling | 2020-07-09 | Added more comments |
| html | 55b6a0a | nilseling | 2020-07-08 | Recompiled clean .Rmd files |
| Rmd | a47f6fd | nilseling | 2020-07-08 | Cleanup and further comments |
| html | 5476a61 | nilseling | 2020-07-08 | Recompiled files |
| Rmd | cb92024 | nilseling | 2020-07-03 | Finalized Figure 4 |
| html | 2fbf302 | nilseling | 2020-06-02 | Re-compiled htmls |
| Rmd | 7960caa | nilseling | 2020-06-02 | Compiled htmls of preprocessing steps |
| html | 7960caa | nilseling | 2020-06-02 | Compiled htmls of preprocessing steps |
| Rmd | cddc968 | nilseling | 2020-06-02 | Chenged header |
| Rmd | c68803c | nilseling | 2020-06-02 | Restructured to workflowr poject |
This script downloads the single-cell data from the pancreas IMC dataset available here. The dataset is associated to the following publication:
After obtaining the raw data as produced by the IMC segmentation pipeline, we will further process them to create a SingleCellExperiment object.
Here, a subset of single-cell data, corresponding to 100 images from the full dataset is downloaded.
We read in the single-cell meta- and expression data and order them based on the image and cell number.
library(S4Vectors)
library(SingleCellExperiment)
library(cytomapper)
# Download the zipped folder image and unzip it
url.cells <- ("https://data.mendeley.com/public-files/datasets/cydmwsfztj/files/f1e3b8dc-56be-4172-bbc4-3a6f9de97563/file_downloaded")
download.file(url.cells, destfile = "data/PancreasData/CellSubset.zip")
unzip("data/PancreasData/CellSubset.zip", exdir = "data/PancreasData")
file.remove("data/PancreasData/CellSubset.zip")
[1] TRUE
# Read-in the data
cells <- read.csv("data/PancreasData/CellSubset.csv", stringsAsFactors = FALSE)
# Order the dataset by ImageNumber and ObjectNumber
cells <- cells[order(cells$ImageNumber, cells$ObjectNumber), ]
Next, we will read in the image-specific metadata.
# Download the zipped folder image and unzip it
url.image <- ("https://data.mendeley.com/public-files/datasets/cydmwsfztj/files/0b236273-d21b-4566-84a2-f1c56324a900/file_downloaded")
download.file(url.image, destfile = "data/PancreasData/Image.zip")
unzip("data/PancreasData/Image.zip", exdir = "data/PancreasData")
file.remove("data/PancreasData/Image.zip")
[1] TRUE
# Read-in the data
image <- read.csv("data/PancreasData/All_Image.csv", stringsAsFactors = FALSE)
In the original publication, cells were phenotyped based on informative marker expression. These phenotype labels are supplied in the online repository.
# Download the zipped folder image and unzip it
url.celltypes <- ("https://data.mendeley.com/public-files/datasets/cydmwsfztj/files/59e8da72-5bfe-4289-b95b-28348a6e1222/file_downloaded")
download.file(url.celltypes, destfile = "data/PancreasData/CellTypes.zip")
unzip("data/PancreasData/CellTypes.zip", exdir = "data/PancreasData")
file.remove("data/PancreasData/CellTypes.zip")
[1] TRUE
# Read-in the data
celltypes <- read.csv("data/PancreasData/CellTypes.csv", stringsAsFactors = FALSE)
We will furthermore read in the metadata per donor.
# Download the zipped folder image and unzip it
url.donors <- ("https://data.mendeley.com/public-files/datasets/cydmwsfztj/files/9074990e-1b93-4c79-8c49-1db01a66398b/file_downloaded")
download.file(url.donors, destfile = "data/PancreasData/Donors.zip")
unzip("data/PancreasData/Donors.zip", exdir = "data/PancreasData")
file.remove("data/PancreasData/Donors.zip")
[1] TRUE
# Read-in the data
donors <- read.csv("data/PancreasData/Donors.csv", stringsAsFactors = FALSE)
In this part of the workflow, we will select cell-specific metadata and collect them in a single DataFrame
. This will be the colData
entry of the final SingleCellExperiment
object.
The cell-specific metadata can be obtained from the cells
object.
cell.metadata <- DataFrame(ImageNumber = cells$ImageNumber,
CellNumber = cells$ObjectNumber,
Pos_X = cells$Location_Center_X,
Pos_Y = cells$Location_Center_Y,
ParentIslet = cells$Parent_Islets,
ClosestIslet = cells$Parent_ExpandedIslets,
Area = cells$AreaShape_Area,
NbNeighbours = cells$Neighbors_NumberOfNeighbors_3)
Specific image metadata can be obtained from column-entries of the image
object.
image.metadata <- DataFrame(ImageNumber = image$ImageNumber,
ImageFullName = image$FileName_CleanStack,
slide = image$Metadata_Slide,
width = image$Width_CleanStack,
height = image$Height_CleanStack)
We will next merge the cell- and image-specific metadata.
cell.metadata <- merge(cell.metadata, image.metadata, by="ImageNumber")
We will also add the ImageName
entry to the metadata object. This information is used by cytomapper
to match single-cell data with images and masks.
cell.metadata$ImageName <- sub("_a0_full_clean.tiff", "", cell.metadata$ImageFullName)
We will now add the cell-type information to the metadata object.
# Add cell ids to cell metadata (format: "ImageName_CellNumber")
cell.metadata$id <- paste(cell.metadata$ImageName, cell.metadata$CellNumber, sep="_")
# Merge cell metadata and cell type information
cell.metadata <- merge(cell.metadata,
celltypes[, c("id", "CellCat", "CellType")],
by="id")
We will add the donor information to the metadata object.
cell.metadata <- merge(cell.metadata, donors, by="slide")
Finally, we order the cell-metadata object based on ImageNumber
and CellNumber
and add rownames.
# Rows are ordered by ImageNumber and CellNumber
cell.metadata <- cell.metadata[order(cell.metadata$ImageNumber, cell.metadata$CellNumber), ]
# Cell ids are used as row names
rownames(cell.metadata) <- cell.metadata$id
Here, we will download the panel information, which contains antibody-related metadata. However, for some datasets, the channel-order and the panel order do not match. For this, the channel-mass file is used to match panel information and image stack slices.
# Import panel
url.panel <- ("https://data.mendeley.com/public-files/datasets/cydmwsfztj/files/2f9fecfc-b98f-4937-bc38-ae1b959bd74d/file_downloaded")
download.file(url.panel, destfile = "data/PancreasData/panel.csv")
panel <- read.csv("data/PancreasData/panel.csv")
# Import channel-mass file
url.channelmass <- ("https://data.mendeley.com/public-files/datasets/cydmwsfztj/files/704312eb-377c-42e2-8227-44bb9aca0fb3/file_downloaded")
download.file(url.channelmass, destfile = "data/PancreasData/ChannelMass.csv")
channel.mass <- read.csv("data/PancreasData/ChannelMass.csv", header = FALSE)
First, we will select the relevant channels used for analysis and order the pannel based on channel mass.
# Match panel and stack slice information
panel <- panel[panel$full == 1,]
panel <- panel[match(channel.mass[,1], panel$MetalTag),]
# Add short protein names as panel rownames
rownames(panel) <- panel$shortname
CellProfiler measures a number of different statistics per marker and cell. We will select the mean intensity per channel and per cell to obtain single-cell expression counts.
cur_counts <- cells[, grepl("Intensity_MeanIntensity_CleanStack", colnames(cells))]
Next, we will reorder the channels based on channel number.
channelNumber <- as.numeric(sub("^.*_c", "", colnames(cur_counts)))
cur_counts <- cur_counts[, order(channelNumber, decreasing = FALSE)]
We have now obtained all metadata and feature data to create the SingleCellExperiment
object. We will first create it is based on the raw expression counts.
sce <- SingleCellExperiment(assays = list(counts = t(as.matrix(cur_counts))))
Furthermore, we will store the arcsinh-transformed (using a co-factor of 1) counts in the exprs
assay slot.
assay(sce, "exprs") <- asinh(counts(sce)/1)
Now, we will set the dimnames of the object.
rownames(sce) <- rownames(panel)
colnames(sce) <- rownames(cell.metadata)
Finally, we will store the marker- and cell-specific metadata in the SingleCellExperiment
object. Here, columns are cells and rows are markers.
colData(sce) <- cell.metadata
rowData(sce) <- panel
sce
class: SingleCellExperiment
dim: 38 252059
metadata(0):
assays(2): counts exprs
rownames(38): H3 SMA ... Ir191 Ir193
rowData names(15): TubeNb MetalTag ... miCAT2 miCAT
colnames(252059): E02_1 E02_2 ... J34_1149 J34_1150
colData names(26): slide id ... Ethnicity BMI
reducedDimNames(0):
altExpNames(0):
For further analysis, we will save the SingleCellExperiment
object.
saveRDS(sce, "data/PancreasData/pancreas_sce.rds")
Finally, we remove the downloaded objects to save storage space.
file.remove("data/PancreasData/All_Image.csv",
"data/PancreasData/CellSubset.csv",
"data/PancreasData/CellTypes.csv",
"data/PancreasData/Donors.csv",
"data/PancreasData/panel.csv",
"data/PancreasData/ChannelMass.csv")
[1] TRUE TRUE TRUE TRUE TRUE TRUE
sessionInfo()
R version 4.0.3 (2020-10-10)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 20.04.1 LTS
Matrix products: default
BLAS/LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.8.so
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=C
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] parallel stats4 stats graphics grDevices utils datasets
[8] methods base
other attached packages:
[1] cytomapper_1.2.0 EBImage_4.32.0
[3] SingleCellExperiment_1.12.0 SummarizedExperiment_1.20.0
[5] Biobase_2.50.0 GenomicRanges_1.42.0
[7] GenomeInfoDb_1.26.0 IRanges_2.24.0
[9] MatrixGenerics_1.2.0 matrixStats_0.57.0
[11] S4Vectors_0.28.0 BiocGenerics_0.36.0
[13] workflowr_1.6.2
loaded via a namespace (and not attached):
[1] viridis_0.5.1 viridisLite_0.3.0 svgPanZoom_0.3.4
[4] shiny_1.5.0 sp_1.4-4 GenomeInfoDbData_1.2.4
[7] vipor_0.4.5 tiff_0.1-6 yaml_2.2.1
[10] gdtools_0.2.2 pillar_1.4.6 lattice_0.20-41
[13] glue_1.4.2 digest_0.6.27 RColorBrewer_1.1-2
[16] promises_1.1.1 XVector_0.30.0 colorspace_2.0-0
[19] htmltools_0.5.0 httpuv_1.5.4 Matrix_1.2-18
[22] pkgconfig_2.0.3 raster_3.4-5 zlibbioc_1.36.0
[25] purrr_0.3.4 xtable_1.8-4 fftwtools_0.9-9
[28] scales_1.1.1 svglite_<IP_ADDRESS> whisker_0.4
[31] jpeg_0.1-8.1 later_<IP_ADDRESS> git2r_0.27.1
[34] tibble_3.0.4 generics_0.1.0 ggplot2_3.3.2
[37] ellipsis_0.3.1 magrittr_2.0.1 crayon_1.3.4
[40] mime_0.9 evaluate_0.14 fs_1.5.0
[43] beeswarm_0.2.3 shinydashboard_0.7.1 tools_4.0.3
[46] lifecycle_0.2.0 stringr_1.4.0 munsell_0.5.0
[49] locfit_1.5-9.4 DelayedArray_0.16.0 compiler_4.0.3
[52] systemfonts_0.3.2 rlang_0.4.8 grid_4.0.3
[55] RCurl_1.98-1.2 rstudioapi_0.13 htmlwidgets_1.5.2
[58] bitops_1.0-6 rmarkdown_2.5 gtable_0.3.0
[61] codetools_0.2-18 abind_1.4-5 R6_2.5.0
[64] gridExtra_2.3 knitr_1.30 dplyr_1.0.2
[67] fastmap_1.0.1 rprojroot_2.0.2 stringi_1.5.3
[70] ggbeeswarm_0.6.0 Rcpp_1.0.5 vctrs_0.3.5
[73] png_0.1-7 tidyselect_1.1.0 xfun_0.19


@headerSignup()
Create Account
Login
Account successfully created!
User with that email exists!!!
Select Country
Select City
@footer()


It is with great excitement that Oakton CSCS Club in partnership with null.black and Fixotech announces the Oakhacks hackathon. Oakhacks Hackathon will take place on the 18th and 19th of April from 12:00pm to 12:00pm
Registration is open to all Highschool students in the Northern Virginia area and must be done through our registration form. Throughout the hackathon, officers of Oakton CSCS club will be providing technical support and mentoring.
Challenge: Build out a project from an idea to a workable prototype withing the 24 hour time limit with a team of up to 3 people. This project can be software or hardware and written in any language you prefer.
Prize: Each person on the top three teams will recieve a gift card, one free year of null.black vpn, and 100GB of free Fixotech cloud file storage.
Check the list of selected teams
Teams may not have more than 3 people.
All persons wishing to participate must fill out this registration form.
In order for the team to begin working, an open repository must be created on github to contain the code used in the project. If your project is 100% hardware, you should upload photos to this repo.
Winning teams will be subject to a code review after the event, or before receiving their prize(s).
The use of code that is already written is prohibited! Everyone will start the hackathon at the same time. This will ensure impartiality of the competition. Do not participate in the hackathon if you are going to reuse an existing project.
April 18-19 2020
Due to the COVID-19 outbreak the hackathon will be held online


@sumatra = (plugin_name, plugin_code) ->
Defines a jQuery plugin using a service object with a nice,
consistent, CoffeeScript-style interface. Plugins can extend
SumatraPlugin
, a prototype that makes defining plugins with
Sumatra easier.
The runtime function returns the generated jQuery plugin to the global scope so it can be used in your application code.
Arguments:
$('div').myPlugin();
element
being targeted by jQuery, the index
at which it appears
in the query, and the options
hash passed during the instantiation of the
jQuery plugin.Example:
sumatra 'myPlugin', ->
class MyPlugin extends SumatraPlugin
action: null
initialize:
alert 'loaded'
@sumatra = (plugin_name, plugin_code) ->
Instantiate a PluginHelper and apply the current scope. This can
be any object that responds to 3 parameters in its constructor
and will be set to whatever is returned by plugin_code()
.
PluginHelper = plugin_code.apply this
jQuery.fn[plugin_name] = (options={}) ->
@each (index, element) ->
For each element, create a PluginHelper
instance
of the passed-in plugin_code
and apply the jQuery
plugin parameters to the constructor.
new PluginHelper(element, index, options)


EXOSIMS.SurveySimulation package¶
Submodules¶
EXOSIMS.SurveySimulation.KnownRVSurvey module¶
-
class
EXOSIMS.SurveySimulation.KnownRVSurvey.
KnownRVSurvey
(**specs)[source]¶ Bases:
EXOSIMS.Prototypes.SurveySimulation.SurveySimulation
Survey Simulation module based on Know RV planets
This class uses estimates of delta magnitude (dMagint) and instrument working angle (WAint) for integration time calculation, specific to the known RV planets.
EXOSIMS.SurveySimulation.SLSQPScheduler module¶
-
class
EXOSIMS.SurveySimulation.SLSQPScheduler.
SLSQPScheduler
(cacheOptTimes=False, staticOptTimes=False, **specs)[source]¶ Bases:
EXOSIMS.Prototypes.SurveySimulation.SurveySimulation
This class implements a continuous optimization of integration times using the scipy minimize function with method SLSQP. ortools with the CBC linear solver is used to find an initial solution consistent with the constraints. For details see Savransky et al. 2017 (SPIE).
Parameters: **specs – user specified values Notes
Due to the time costs of the current comp_per_inttime calculation in GarrettCompleteness this should be used with BrownCompleteness.
Requires ortools
-
calc_targ_intTime
(sInds, startTimes, mode)[source]¶ Given a subset of targets, calculate their integration times given the start of observation time.
This implementation updates the optimized times based on current conditions and mission time left.
Note: next_target filter will discard targets with zero integration times.
Parameters: - sInds (integer array) – Indices of available targets
- startTimes (astropy quantity array) – absolute start times of observations. must be of the same size as sInds
- mode (dict) – Selected observing mode for detection
Returns: Integration times for detection same dimension as sInds
Return type: intTimes (astropy Quantity array)
-
choose_next_target
(old_sInd, sInds, slewTimes, intTimes)[source]¶ Given a subset of targets (pre-filtered by method next_target or some other means), select the best next one.
Parameters: - old_sInd (integer) – Index of the previous target star
- sInds (integer array) – Indices of available targets
- slewTimes (astropy quantity array) – slew times to all stars (must be indexed by sInds)
- intTimes (astropy Quantity array) – Integration times for detection in units of day
Returns: Index of next target star
Return type: sInd (integer)
-
inttimesfeps
(eps, Cb, Csp)[source]¶ Compute the optimal subset of targets for a given epsilon value where epsilon is the maximum completeness gradient.
Everything is in units of days
-
objfun
(t, sInds, fZ)[source]¶ Objective Function for SLSQP minimization. Purpose is to maximize summed completeness
Parameters: - t (ndarray) – Integration times in days. NB: NOT an astropy quantity.
- sInds (ndarray) – Target star indices (of same size as t)
- fZ (astropy Quantity) – Surface brightness of local zodiacal light in units of 1/arcsec2 Same size as t
-
objfun_deriv
(t, sInds, fZ)[source]¶ Jacobian of objective Function for SLSQP minimization.
Parameters: - t (astropy Quantity) – Integration times in days. NB: NOT an astropy quantity.
- sInds (ndarray) – Target star indices (of same size as t)
- fZ (astropy Quantity) – Surface brightness of local zodiacal light in units of 1/arcsec2 Same size as t
-
EXOSIMS.SurveySimulation.SS_char_only module¶
-
class
EXOSIMS.SurveySimulation.SS_char_only.
SS_char_only
(coeffs=[1, 0, 0, 0], **specs)[source]¶ Bases:
EXOSIMS.Prototypes.SurveySimulation.SurveySimulation
-
choose_next_target
(old_sInd, sInds, slewTimes, t_dets)[source]¶ Choose next target based on truncated depth first search of linear cost function.
Parameters: - old_sInd (integer) – Index of the previous target star
- sInds (integer array) – Indices of available targets
- slewTime (float array) – slew times to all stars (must be indexed by sInds)
- t_dets (astropy Quantity array) – Integration times for detection in units of day
Returns: Index of next target star
Return type: sInd (integer)
-
observation_characterization
(sInd, mode)[source]¶ Finds if characterizations are possible and relevant information
Parameters: - sInd (integer) – Integer index of the star of interest
- mode (dict) – Selected observing mode for characterization
Returns: - Characterization status for each planet orbiting the observed
target star including False Alarm if any, where 1 is full spectrum, -1 partial spectrum, and 0 not characterized
- fZ (astropy Quantity):
Surface brightness of local zodiacal light in units of 1/arcsec2
- systemParams (dict):
Dictionary of time-dependant planet properties averaged over the duration of the integration
- SNR (float ndarray):
Characterization signal-to-noise ratio of the observable planets. Defaults to None.
- intTime (astropy Quantity):
Selected star characterization time in units of day. Defaults to None.
Return type: characterized (integer list)
-
EXOSIMS.SurveySimulation.SS_det_only module¶
-
class
EXOSIMS.SurveySimulation.SS_det_only.
SS_det_only
(scriptfile=None, ntFlux=1, nVisitsMax=5, charMargin=0.15, WAint=None, dMagint=None, dt_max=1.0, **specs)[source]¶ Bases:
EXOSIMS.Prototypes.SurveySimulation.SurveySimulation
SS_det_only is a variant of survey scheduler that performs only detections
-
calc_int_inflection
(sInd, fEZ, fZ, WA, mode, ischar=False)[source]¶ Calculate integration time based on inflection point of Completeness as a function of int_time
Parameters: - sInd (integer) – Index of the target star
- fEZ (astropy Quantity array) – Surface brightness of exo-zodiacal light in units of 1/arcsec2
- fZ (astropy Quantity) –
- WA (astropy Quantity) – Working angle of the planet of interest in units of arcsec
- mode (dict) – Selected observing mode
Returns: The suggested integration time
Return type: int_time (float)
-
choose_next_target
(old_sInd, sInds, slewTime, t_dets)[source]¶ Choose next telescope target based on star completeness and integration time.
Parameters: - old_sInd (integer) – Index of the previous target star
- sInds (integer array) – Indices of available targets
- slewTime (float array) – slew times to all stars (must be indexed by sInds)
- t_dets (astropy Quantity array) – Integration times for detection in units of day
Returns: Index of next target star
Return type: sInd (integer)
-
genC
(Cpath, nplan, xedges, yedges, steps)[source]¶ Gets completeness interpolant for initial completeness
This function either loads a completeness .comp file based on specified Planet Population module or performs Monte Carlo simulations to get the 2D completeness values needed for interpolation.
Parameters: - Cpath (string) – path to 2D completeness value array
- nplan (float) – number of planets used in each simulation
- xedges (float ndarray) – x edge of 2d histogram (separation)
- yedges (float ndarray) – y edge of 2d histogram (dMag)
- steps (integer) – number of simulations to perform
Returns: 2D numpy ndarray containing completeness probability density values
Return type: H (float ndarray)
-
genplans
(nplan)[source]¶ Generates planet data needed for Monte Carlo simulation
Parameters: nplan (integer) – Number of planets Returns: Planet apparent separations in units of AU dMag (ndarray): Difference in brightnessReturn type: s (astropy Quantity array)
-
hist
(nplan, xedges, yedges)[source]¶ Returns completeness histogram for Monte Carlo simulation
This function uses the inherited Planet Population module.
Parameters: - nplan (float) – number of planets used
- xedges (float ndarray) – x edge of 2d histogram (separation)
- yedges (float ndarray) – y edge of 2d histogram (dMag)
Returns: 2D numpy ndarray containing completeness histogram
Return type: h (ndarray)
-
next_target
(old_sInd, mode)[source]¶ Finds index of next target star and calculates its integration time.
This method chooses the next target star index based on which stars are available, their integration time, and maximum completeness. Returns None if no target could be found.
Parameters: - old_sInd (integer) – Index of the previous target star
- mode (dict) – Selected observing mode for detection
Returns: - Design Reference Mission, contains the results of one complete
observation (detection and characterization)
- sInd (integer):
Index of next target star. Defaults to None.
- intTime (astropy Quantity):
Selected star integration time for detection in units of day. Defaults to None.
Return type: DRM (dict)
-
EXOSIMS.SurveySimulation.cbytScheduler module¶
-
class
EXOSIMS.SurveySimulation.cbytScheduler.
cbytScheduler
(**specs)[source]¶ Bases:
EXOSIMS.Prototypes.SurveySimulation.SurveySimulation
C-by-t Scheduler
This class implements a Scheduler that selects the current highest Completeness/Integration Time.
-
choose_next_target
(old_sInd, sInds, slewTimes, intTimes)[source]¶ Choose next target based on truncated depth first search of linear cost function.
Parameters: - old_sInd (integer) – Index of the previous target star
- sInds (integer array) – Indices of available targets
- slewTimes (astropy quantity array) – slew times to all stars (must be indexed by sInds)
- intTimes (astropy Quantity array) – Integration times for detection in units of day
Returns: Index of next target star
Return type: sInd (integer)
-
EXOSIMS.SurveySimulation.linearJScheduler module¶
-
class
EXOSIMS.SurveySimulation.linearJScheduler.
linearJScheduler
(coeffs=[1, 1, 2, 1], **specs)[source]¶ Bases:
EXOSIMS.Prototypes.SurveySimulation.SurveySimulation
This class implements the linear cost function scheduler described in Savransky et al. (2010).
Args: coeffs (iterable 3x1):
Cost function coefficients: slew distance, completeness, target list coverage- **specs:
- user specified values
-
choose_next_target
(old_sInd, sInds, slewTimes, intTimes)[source]¶ Choose next target based on truncated depth first search of linear cost function.
Parameters: - old_sInd (integer) – Index of the previous target star
- sInds (integer array) – Indices of available targets
- slewTimes (astropy quantity array) – slew times to all stars (must be indexed by sInds)
- intTimes (astropy Quantity array) – Integration times for detection in units of day
Returns: Index of next target star
Return type: sInd (integer)
EXOSIMS.SurveySimulation.randomWalkScheduler module¶
-
class
EXOSIMS.SurveySimulation.randomWalkScheduler.
randomWalkScheduler
(scriptfile=None, ntFlux=1, nVisitsMax=5, charMargin=0.15, WAint=None, dMagint=None, dt_max=1.0, **specs)[source]¶ Bases:
EXOSIMS.Prototypes.SurveySimulation.SurveySimulation
This class implements a random walk scheduler that selects the next target at random from the pool of currently available targets.
This is useful for mapping out the space of possible mission outcomes for a fixed population of planets in order to validate other schedulers.
-
choose_next_target
(old_sInd, sInds, slewTimes, intTimes)[source]¶ Choose next target at random
Parameters: - old_sInd (integer) – Index of the previous target star
- sInds (integer array) – Indices of available targets
- slewTimes (astropy quantity array) – slew times to all stars (must be indexed by sInds)
- intTimes (astropy Quantity array) – Integration times for detection in units of day
Returns: Index of next target star
Return type: sInd (integer)
-
EXOSIMS.SurveySimulation.starkAYO_staticSchedule module¶
-
class
EXOSIMS.SurveySimulation.starkAYO_staticSchedule.
starkAYO_staticSchedule
(cacheOptTimes=False, **specs)[source]¶ Bases:
EXOSIMS.Prototypes.SurveySimulation.SurveySimulation
starkAYO _static Scheduler
This class implements a Scheduler that creates a list of stars to observe and integration times to observe them. It also selects the best star to observe at any moment in time Generates cachedfZ.csv and cachedMaxCbyTtime.csv If the above exist but some problem is found, moved_MacCbyTtime.csv and moved_fZAllStars.csv are created
2nd execution time 2 min 30 sec
-
calc_targ_intTime
(sInds, startTimes, mode)[source]¶ Finds and Returns Precomputed Observation Time :param sInds: Indices of available targets :type sInds: integer array :param startTimes: absolute start times of observations.
must be of the same size as sIndsParameters: mode (dict) – Selected observing mode for detection Returns: Integration times for detection same dimension as sInds Return type: intTimes (astropy Quantity array)
-
choose_next_target
(old_sInd, sInds, slewTime, intTimes)[source]¶ Generate Next Target to Select based off of AYO at this instant in time :param sInds - indicies of stars under consideration: :param old_sInd - unused: :param slewTime - unused: :param intTimes - unused:
Returns: DRM - A blank structure sInd - the single index of self.schedule_startSaved to observe t_det - the time to observe sInd in days (u.d)
-
distributedt
(sInds, t_dets, sacrificedStarTime, fZ, fEZ, WA)[source]¶ Distributes sacrificedStarTime amoung sInds :param sInds[nStars] - indicies of stars in the list: :param t_dets[nStars] - time to observe each star: :type t_dets[nStars] - time to observe each star: in days :param sacrificedStarTime - time to distribute in days: :param fZ[nStars] - zodiacal light for each target: :param fEZ - 0:
Returns: t_dets[nStars] - time to observe each star (in days)
-
generate_fZ
(sInds)[source]¶ Calculates fZ values for each star over an entire orbit of the sun :param sInds[nStars] - indicies of stars to generate yearly fZ for:
Returns: fZ[resolution, sInds] where fZ is the zodiacal light for each star
-
sacrificeStarCbyT
(sInds, t_dets, fZ, fEZ, WA, overheadTime)[source]¶ Sacrifice the worst performing CbyT star :param sInds[nStars] - indicies of stars in the list: :param t_dets[nStars] - time to observe each star: :type t_dets[nStars] - time to observe each star: in days :param fZ[nStars] - zodiacal light for each target: :param fEZ - 0: :param WA - inner working angle of the instrument: :param overheadTime - overheadTime added to each observation:
Returns: sInds[nStars] - indicies of stars in the list t_dets[nStars] - time to observe each star (in days) sacrificedStarTime - time to distribute in days fZ[nStars] - zodiacal light for each target
-
EXOSIMS.SurveySimulation.tieredScheduler module¶
-
class
EXOSIMS.SurveySimulation.tieredScheduler.
tieredScheduler
(coeffs=[2, 1, 8, 4], occHIPs=[], topstars=0, missionPortion=0.75, **specs)[source]¶ Bases:
EXOSIMS.Prototypes.SurveySimulation.SurveySimulation
This class implements a tiered scheduler that independantly schedules the observatory while the starshade slews to its next target.
Args: as (iterable 4x1):
Cost function coefficients: slew distance, completeness- as (iterable nx1)
- List of star HIP numbers to initialize occulter target list.
- **specs:
- user specified values
-
calc_int_inflection
(t_sInds, fEZ, startTime, WA, mode, ischar=False)[source]¶ Calculate integration time based on inflection point of Completeness as a function of int_time
Parameters: - t_sInds (integer array) – Indices of the target stars
- fEZ (astropy Quantity array) – Surface brightness of exo-zodiacal light in units of 1/arcsec2
- startTime (astropy Quantity array) – Surface brightness of local zodiacal light in units of 1/arcsec2
- WA (astropy Quantity) – Working angle of the planet of interest in units of arcsec
- mode (dict) – Selected observing mode
Returns: The suggested integration time
Return type: int_times (astropy quantity array)
-
choose_next_occulter_target
(old_occ_sInd, occ_sInds, t_dets)[source]¶ Choose next target for the occulter based on truncated depth first search of linear cost function.
Parameters: - old_occ_sInd (integer) – Index of the previous target star
- occ_sInds (integer array) – Indices of available targets
- t_dets (astropy Quantity array) – Integration times for detection in units of day
Returns: Index of next target star
Return type: sInd (integer)
-
choose_next_telescope_target
(old_sInd, sInds, t_dets)[source]¶ Choose next telescope target based on star completeness and integration time.
Parameters: - old_sInd (integer) – Index of the previous target star
- sInds (integer array) – Indices of available targets
- t_dets (astropy Quantity array) – Integration times for detection in units of day
Returns: Index of next target star
Return type: sInd (integer)
-
next_target
(old_sInd, old_occ_sInd, detmode, charmode)[source]¶ Finds index of next target star and calculates its integration time.
This method chooses the next target star index based on which stars are available, their integration time, and maximum completeness. Returns None if no target could be found.
Parameters: - old_sInd (integer) – Index of the previous target star for the telescope
- old_occ_sInd (integer) – Index of the previous target star for the occulter
- detmode (dict) – Selected observing mode for detection
- charmode (dict) – Selected observing mode for characterization
Returns: Contains the results of survey simulation sInd (integer):
Index of next target star. Defaults to None.
- occ_sInd (integer):
Index of next occulter target star. Defaults to None.
- t_det (astropy Quantity):
Selected star integration time for detection in units of day. Defaults to None.
Return type: DRM (dicts)
-
observation_characterization
(sInd, mode)[source]¶ Finds if characterizations are possible and relevant information
Parameters: - sInd (integer) – Integer index of the star of interest
- mode (dict) – Selected observing mode for characterization
Returns: - Characterization status for each planet orbiting the observed
target star including False Alarm if any, where 1 is full spectrum, -1 partial spectrum, and 0 not characterized
- fZ (astropy Quantity):
Surface brightness of local zodiacal light in units of 1/arcsec2
- systemParams (dict):
Dictionary of time-dependant planet properties averaged over the duration of the integration
- SNR (float ndarray):
Characterization signal-to-noise ratio of the observable planets. Defaults to None.
- intTime (astropy Quantity):
Selected star characterization time in units of day. Defaults to None.
Return type: characterized (integer list)


 If you have it installed just uninstall it and install only the sGrid package.
#### Read about it:
- [Introducing sGrid: A Stylus-based Flexbox Grid System](http://www.sitepoint.com/introducing-sgrid-a-stylus-based-flexbox-grid-system/) (sitepoint.com)
- [sGrid - Working with Flexible Box layouts](http://julian.io/s-grid-working-with-flexible-box-layouts/) (julian.io)
- [My workflow with the Stylus and Flexbox grid system](https://medium.com/@juliancwirko/my-workflow-with-the-stylus-and-flexbox-grid-system-5f4f50ac3f33) (medium.com)
## Use PostCSS plugins with Stylus
- - -
**It is totally optional and usage will change for Meteor 1.3**
From version 2.1.0 you can use PostCSS and PostCSS plugins with this package. It is possible because of Stylus plugin which is called [poststylus](https://github.com/seaneking/poststylus).
From version 2.2.0 to use PostCSS with this package you will need to install [meteorhacks:npm](https://github.com/meteorhacks/npm) package and you should do it by hand because not all users want to use PostCSS so it will not be added automatically. Read more below.
(You don't have to add autoprefixer. It is added by default because s-grid needs it. You can configure it. Read more about it below.)
**To use PostCSS plugins all you need to do is:**
### 1. Add `meteorhacks:npm` package
```
$ meteor add meteorhacks:npm
```
When you run your Meteor app there will be `packages.json` file created in the root of your app. You can specify PostCSS plugins there (standard npm packages). Example:
**packages.json (npm packages):**
```javascript
{
"rucksack-css": "0.8.5"
}
```
Restart your app.
Of course you can use `meteorhacks:npm` as always.
PostCSS will know which Npm packages are PostCSS plugins and which are not.
### 2. If you need to pass some options to your PostCSS plugins create options file `sgrid.json` in the root app folder.
Example of options file (passing some options to the autoprefixer plugin):
**sgrid.json (PostCSS plugins options - this file is optional):**
```javascript
{
"postcss": {
"pluginsOptions": {
"autoprefixer": {"browsers": ["last 2 versions"]}
}
}
}
```
### 3. Now you can use all the features which are provided by Rucksack plugin.
So in our example in .styl file you could write something like:
Stylus:
```css
@alias
fs font-size
bg background
c color
.item
fs 30px
bg #000
c #fff
```
Compiled to (with Rucksack):
```css
.item
font-size 30px
background-color #000
color #fff
```
**Of course you can add more PostCSS plugins. There is no need to use PostCSS plugins which are responsible for imports, variables etc because it is all in Stylus, but sometimes there are great PostCSS plugins out there.**
Unfortunately for now in Meteor there isn't simpler way to include custom PostCSS plugins from outside. You need to use `meteorhacks:npm` package which is great.
If you want to change something in `sgrid.json` config file later, you should restart your app and also change any .style file to rerun build plugin.
**Standalone PostCSS package for Meteor:**
- [PostCSS for Meteor](https://atmospherejs.com/juliancwirko/postcss)
### License
- - -
MIT
### Download and use this website for your documentation
```
$ git clone https://github.com/juliancwirko/meteor-s-grid-website.git
$ cd meteor-s-grid-website
$ rm -rf .git
$ meteor
```
[https://github.com/juliancwirko/meteor-s-grid-website](https://github.com/juliancwirko/meteor-s-grid-website)
### Check out other tools for Meteor:
- - -
* [SimpleChat.Support - Open Source Live Chat App built with Meteor](https://www.simplechat.support)
* [Prettify and export your raw git diff output](https://atmospherejs.com/juliancwirko/pretty-diff)
* [Foundation 5 with Scss for Meteor](https://atmospherejs.com/juliancwirko/zf5)
* [Simple and fancy notifications for Meteor](https://atmospherejs.com/juliancwirko/s-alert)
* [Stylus with Jeet, Autoprefixer, Rupture and Nib for Meteor](https://atmospherejs.com/juliancwirko/s-jeet)
* [Simple accounts for Meteor](https://atmospherejs.com/juliancwirko/s-id)
* [Scotty - Meteor boilerplate](https://github.com/juliancwirko/scotty)
* [Meteor CylonJS wrapper for Arduino board](https://atmospherejs.com/juliancwirko/caprica)
### Also check out standalone front-end tools:
- - -
* [S-Grid GruntJS project scaffold](https://github.com/juliancwirko/s-grid-grunt)
* [Yeoman generator for Zurb Foundation 5](https://github.com/juliancwirko/generator-zf5)
* [Free, very simple and clean starter theme for your Ghost blog](https://github.com/juliancwirko/abc)
* [HTML only and GruntJS based project scaffold](https://github.com/juliancwirko/html-project)
{{/markdown}}