closed
by Kevin McElwee at 2020-09-30 13:54:09.closed
by None at 2020-09-30 18:54:47.referenced
by None at 2020-09-30 18:54:47.merged
by None at 2020-09-30 18:54:47.closed
by None at 2020-09-30 18:54:47.head_ref_deleted
by None at 2020-09-30 18:54:51.closed
by Trey Pendragon at 2020-09-30 19:29:27.referenced
by Trey Pendragon at 2020-09-30 19:29:27.merged
by Trey Pendragon at 2020-09-30 19:29:27.closed
by Trey Pendragon at 2020-09-30 19:29:27.head_ref_deleted
by Trey Pendragon at 2020-09-30 19:29:30.referenced
by Cliff Wulfman at 2020-09-30 15:24:47.closed
by Cliff Wulfman at 2020-09-30 15:45:35.referenced
by Cliff Wulfman at 2020-09-30 15:45:35.merged
by Cliff Wulfman at 2020-09-30 15:45:35.closed
by Cliff Wulfman at 2020-09-30 15:45:36.head_ref_deleted
by Cliff Wulfman at 2020-09-30 15:45:37.referenced
by Kevin Reiss at 2020-09-30 13:06:12.merged
by Kevin Reiss at 2020-09-30 13:06:12.closed
by Kevin Reiss at 2020-09-30 13:06:13.referenced
by None at 2020-09-30 12:10:17.closed
by Kevin Reiss at 2020-09-30 13:06:13.referenced
by Kevin Reiss at 2020-09-30 13:06:14.The decision from the 09/25/2020 meeting was not to index this info.
closed
by Christina Chortaria at 2020-09-30 14:02:10.The decision from the 09/25/2020 meeting was not to index this info.
closed
by Christina Chortaria at 2020-09-30 14:02:42.unlabeled
by None at 2020-09-30 14:05:58.unlabeled
by None at 2020-09-30 14:05:58.Coverage remained the same at 81.707% when pulling d741eef7672d8f19fdd22dc221b53fe842ce4776 on 751-bib-items into fb72e4ae51ad093c5619cf873a82b1ef423a05a6 on master.
head_ref_force_pushed
by None at 2020-09-30 14:46:00.head_ref_force_pushed
by None at 2020-09-30 15:18:57.referenced
by Christina Chortaria at 2020-09-30 15:28:15.merged
by Christina Chortaria at 2020-09-30 15:28:15.closed
by Christina Chortaria at 2020-09-30 15:28:15.referenced
by Kevin Reiss at 2020-09-30 17:04:48.merged
by Kevin Reiss at 2020-09-30 17:04:48.closed
by Kevin Reiss at 2020-09-30 17:04:48.labeled
by Christina Chortaria at 2020-09-30 19:07:24.closed
by None at 2020-09-30 20:35:17.referenced
by None at 2020-09-30 20:35:17.merged
by None at 2020-09-30 20:35:17.closed
by None at 2020-09-30 20:35:17.head_ref_deleted
by None at 2020-09-30 20:35:20.renamed
by None at 2020-09-30 15:26:38.Please note the status label logic has all been migrated to marcliberation. It hasn't been pulled out of OL yet but changes to the logic should be made in marcliberation, not OL. (see #2281)
labeled
by Kate Lynch at 2020-09-30 13:51:04.closed
by Kevin Reiss at 2020-09-30 19:27:37.head_ref_deleted
by Kevin Reiss at 2020-09-30 19:27:43.closed
by None at 2020-09-30 20:14:37.@hackmastera does this PR make sense? You commented on the closed PR that you needed more context.
Coverage remained the same at 96.578% when pulling 270877b7376e1ff4223c14c99824ced402cbc216 on bdcampuscategory_check into 45f10ab0dcfd17dbfc31a7c523ea4709f1beeddc on main.
review_requested
by Kevin Reiss at 2020-09-30 18:37:52.head_ref_force_pushed
by Kevin Reiss at 2020-09-30 18:47:28.mentioned
by None at 2020-09-30 18:58:13.subscribed
by None at 2020-09-30 18:58:13.renamed
by Kevin Reiss at 2020-09-30 19:26:29.deployed
by Trey Pendragon at 2020-09-30 19:38:46.referenced
by None at 2020-09-30 20:14:37.merged
by None at 2020-09-30 20:14:37.closed
by None at 2020-09-30 20:14:37.head_ref_deleted
by None at 2020-09-30 20:14:42.deployed
by Trey Pendragon at 2020-09-30 20:34:07.review_requested
by Kevin Reiss at 2020-09-30 20:55:23.referenced
by None at 2020-09-30 20:57:06.merged
by None at 2020-09-30 20:57:06.closed
by None at 2020-09-30 20:57:06.head_ref_deleted
by None at 2020-09-30 20:57:15.mentioned
by None at 2020-09-30 21:02:50.subscribed
by None at 2020-09-30 21:02:50.mentioned
by Axa Mei Liauw at 2020-09-30 21:02:50.subscribed
by Axa Mei Liauw at 2020-09-30 21:02:50.Coverage remained the same at 96.578% when pulling 9417575fef97095ff02c7d7730cb4d61f2b45d89 on 2168-UseGoogleanalytics into a9a1440acf50ca72f9ee12265a123a7fcd6e14ae on main.
I've removed the GA work from this branch in the interest of the ability to deploy Google Analytics to Orangelight.
I've created a separate issue for this request and the Hathi event, where I'll be happy to address the need - https://github.com/pulibrary/orangelight/issues/2285
ready_for_review
by Kate Lynch at 2020-09-30 23:08:16.Closing because I added the alma-region api_key in the alma keys. Will be added in #1643
assigned
by Christina Chortaria at 2020-09-30 15:33:45.unassigned
by Christina Chortaria at 2020-09-30 15:34:12.closed
by Christina Chortaria at 2020-09-30 15:36:12.labeled
by Christina Chortaria at 2020-09-30 19:13:35.renamed
by Christina Chortaria at 2020-09-30 19:34:49.assigned
by Christina Chortaria at 2020-09-30 15:33:34.closed
by None at 2020-09-30 20:37:32.I just realized that the bibs read only alma key has changed. I will update the pr and remove the [WIP]
I updated the ALMABIBSREAD_ONLY key and removed the [WIP]
renamed
by Christina Chortaria at 2020-09-30 18:47:55.renamed
by Christina Chortaria at 2020-09-30 19:01:30.referenced
by None at 2020-09-30 20:37:32.merged
by None at 2020-09-30 20:37:32.closed
by None at 2020-09-30 20:37:32.head_ref_deleted
by None at 2020-09-30 20:37:33.head_ref_force_pushed
by Eliot Jordan at 2020-09-30 18:22:49.head_ref_force_pushed
by Eliot Jordan at 2020-09-30 18:23:57.Coverage remained the same at 100.0% when pulling 0084ab348c44b0b5aea78131982da0d7c4bd8f4c on test-pr into 2007f33e0bbbd2a46633896e46c350a6694b4731 on master.
closed
by Eliot Jordan at 2020-09-30 16:14:01.head_ref_deleted
by Eliot Jordan at 2020-09-30 16:14:05.referenced
by Kevin Reiss at 2020-09-29 22:36:36.merged
by Kevin Reiss at 2020-09-29 22:36:36.closed
by Kevin Reiss at 2020-09-29 22:36:36.head_ref_deleted
by Kevin Reiss at 2020-09-29 22:36:40.assigned
by None at 2020-09-30 18:12:11.referenced
by None at 2020-09-30 19:36:06.referenced
by None at 2020-09-30 20:07:42.closed
by Kevin Reiss at 2020-09-30 20:17:10.referenced
by Kevin Reiss at 2020-09-30 20:17:09.merged
by Kevin Reiss at 2020-09-30 20:17:09.closed
by Kevin Reiss at 2020-09-30 20:17:10.head_ref_deleted
by Kevin Reiss at 2020-09-30 20:17:15.head_ref_force_pushed
by Kevin Reiss at 2020-09-30 22:16:57.review_requested
by Axa Mei Liauw at 2020-09-30 13:09:45.review_requested
by Axa Mei Liauw at 2020-09-30 13:09:45.referenced
by Kevin Reiss at 2020-09-30 14:48:49.merged
by Kevin Reiss at 2020-09-30 14:48:49.closed
by Kevin Reiss at 2020-09-30 14:48:49.head_ref_deleted
by Kevin Reiss at 2020-09-30 14:48:52.


Object Localization and Identification in Maritime Videos
Motivation: Maritime imagery properties differ from consumer imagery. How applicable are state-of-art machine learning method to this domain for piracy detection? Approach: Proposed and deployed multiple solutions for high-confidence maritime object detection, small sample learning schema for maritime object identification given few samples, and maritime activity modeling.
Identifying Structures in Aerial Imagery
Motivation: How to utilize open source city data to improve the AI systems? Approach: Transform open source city data to machine vision training data; adapt and train deep network to identify structures of varying size in overhead imagery; adjust framework to work on edge, and deploy it on Nvidia Jetson TX2 mobile platform.
Sclalable Health Data Integration and Analysis
Motivation: Health data is unstructured, noisy, and incomplete. How can data science help unlock the information? Approach: Revisit state-of-art from data science perspective; utilize data reduction and network techniques to scale integration and analysis of biological and clinical data.
Scaling Social Balance Theory for Social and Content Network Analysis
Motivation: Social Networks model the community dynamics. How to describe and identify inequity and bias in that community? Approach: Propose innovative scalable graph processing algorithm that scales social balance theory to automatically quantify disbalance and to predict outcomes in social and content networks.


--- layout: page permalink: /404 scripts: - /js/redirect.js ---
Send us an email at<EMAIL_ADDRESS>or reach out to one of the @Committee via Discord.


|
src/api/access.service.ts
|
injectable |
AccessService |
100 %
(10/10)
|
|
src/api/administrator.service.ts
|
injectable |
AdministratorService |
18 %
(6/33)
|
|
src/api/api.ts
|
variable |
APIS |
0 %
(0/1)
|
|
src/api/authenticationServer.service.ts
|
injectable |
AuthenticationServerService |
7 %
(1/13)
|
|
src/api/general.service.ts
|
injectable |
GeneralService |
33 %
(3/9)
|
|
src/api/organization.service.ts
|
injectable |
OrganizationService |
15 %
(4/26)
|
|
src/api/place.service.ts
|
injectable |
PlaceService |
16 %
(4/25)
|
|
src/api/presence.service.ts
|
injectable |
PresenceService |
11 %
(2/17)
|
|
src/api/report.service.ts
|
injectable |
ReportService |
7 %
(1/13)
|
|
src/app/AdminManagement/bind-administrator/bind-administrator.component.ts
|
component |
BindAdministratorComponent |
0 %
(0/26)
|
|
src/app/AdminManagement/createAdministrator/create-administrator.component.ts
|
component |
CreateAdministratorComponent |
0 %
(0/32)
|
|
src/app/AdminManagement/modifyPermission/administrator-management.component.ts
|
component |
AdministratorManagementComponent |
0 %
(0/32)
|
|
src/app/Home-page/home-page-content.component.ts
|
component |
HomePageContentComponent |
33 %
(2/6)
|
|
src/app/Organization/Organization-information/Organization-information/organization-information-content.component.ts
|
component |
OrganizationInformationContentComponent |
42 %
(3/7)
|
|
src/app/Organization/Organization-information/organization-management-content/organization-management-content.component.ts
|
component |
OrganizationManagementContentComponent |
40 %
(11/27)
|
|
src/app/Organization/Organization-information/place-management-content/place-management-content.component.ts
|
component |
PlaceManagementContentComponent |
45 %
(14/31)
|
|
src/app/Organization/Organization-tracking-perimeter/View-organization-tracking-area/view-organization-tracking-area-content.component.ts
|
component |
ViewOrganizationTrackingAreaContentComponent |
31 %
(7/22)
|
|
src/app/Organization/Organization-tracking-perimeter/modify-organization-tracking-area-content/modify-organization-tracking-area-content.component.ts
|
component |
ModifyOrganizationTrackingAreaContentComponent |
35 %
(7/20)
|
|
src/app/Organization/Organization-tracking-perimeter/modify-place-tracking-area-content/modify-place-tracking-area-content.component.ts
|
component |
ModifyPlaceTrackingAreaContentComponent |
45 %
(11/24)
|
|
src/app/Organization/osm-map-content/osm-map-content.component.ts
|
component |
OsmMapContentComponent |
0 %
(0/13)
|
|
src/app/Tracking/AnonymousTracking/OrganizationPresenceNumber/organization-presence-number.component.ts
|
component |
OrganizationPresenceNumberComponent |
0 %
(0/14)
|
|
src/app/Tracking/AnonymousTracking/place-presence-number/place-presence-number.component.ts
|
component |
PlacePresenceNumberComponent |
0 %
(0/18)
|
|
src/app/Tracking/AuthenticatedUsersAccesses/authenitcated-user-accesses/authenticated-user-accesses.component.ts
|
component |
AuthenticatedUserAccessesComponent |
0 %
(0/46)
|
|
src/app/Tracking/AuthenticatedUsersAccesses/time-report/time-report.component.ts
|
component |
TimeReportComponent |
0 %
(0/23)
|
|
src/app/UserNoAuthenticated/login/login.component.ts
|
component |
LoginComponent |
100 %
(12/12)
|
|
src/app/UserNoAuthenticated/reset-password/reset-password.component.ts
|
component |
ResetPasswordComponent |
0 %
(0/11)
|
|
src/app/app.component.ts
|
component |
AppComponent |
0 %
(0/2)
|
|
src/app/content/content.component.ts
|
component |
ContentComponent |
0 %
(0/3)
|
|
src/app/control-panel.component.ts
|
component |
ControlPanelComponent |
0 %
(0/3)
|
|
src/app/footer/footer.component.ts
|
component |
FooterComponent |
0 %
(0/3)
|
|
src/app/menu-functionality/menu-functionality.component.ts
|
component |
MenuFunctionalityComponent |
37 %
(3/8)
|
|
src/app/menubar/menubar.component.ts
|
component |
MenubarComponent |
54 %
(6/11)
|
|
src/app/services/AccessesData.service.ts
|
injectable |
AccessDataService |
0 %
(0/5)
|
|
src/app/services/AdministratorOrganizationData.service.ts
|
injectable |
AdministratorOrganizationDataService |
0 %
(0/8)
|
|
src/app/services/AdministratorPermissionData.service.ts
|
injectable |
AdministratorPermissionDataService |
0 %
(0/8)
|
|
src/app/services/OrganizationTrackingData.service.ts
|
injectable |
OrganizationTrackingDataService |
0 %
(0/5)
|
|
src/app/services/PlaceTrackingData.service.ts
|
injectable |
PlaceTrackingDataService |
0 %
(0/5)
|
|
src/app/services/TrackingData.service.ts
|
injectable |
TrackingDataService |
0 %
(0/3)
|
|
src/app/services/auth-guard.service.ts
|
guard |
AuthGuardService |
0 %
(0/3)
|
|
src/app/services/authenticated-organization-guard.service.ts
|
guard |
AuthenticatedOrganizationGuardService |
0 %
(0/4)
|
|
src/app/services/authentication.service.ts
|
injectable |
AuthenticationService |
0 %
(0/11)
|
|
src/app/services/deactivate.service.ts
|
guard |
DeactivateGuard |
0 %
(0/2)
|
|
src/app/services/ldap.service.ts
|
injectable |
LdapService |
0 %
(0/10)
|
|
src/app/services/login-guard.service.ts
|
guard |
LoginGuardService |
0 %
(0/3)
|
|
src/app/services/manager-guard.service.ts
|
guard |
ManagerGuardService |
0 %
(0/3)
|
|
src/app/services/owner-guard.service.ts
|
guard |
OwnerGuardService |
0 %
(0/3)
|
|
src/app/services/route-reuse.service.ts
|
class |
RouteReuseService |
0 %
(0/8)
|
|
src/configuration.ts
|
class |
Configuration |
25 %
(3/12)
|
|
src/configuration.ts
|
interface |
ConfigurationParameters |
0 %
(0/8)
|
|
src/encoder.ts
|
class |
CustomHttpParameterCodec |
20 %
(1/5)
|
|
src/environments/environment.prod.ts
|
variable |
environment |
0 %
(0/1)
|
|
src/environments/environment.ts
|
variable |
environment |
0 %
(0/1)
|
|
src/model/administratorBindingRequest.ts
|
interface |
AdministratorBindingRequest |
100 %
(6/6)
|
|
src/model/organization.ts
|
variable |
TrackingModeEnum |
0 %
(0/1)
|
|
src/model/organizationAccess.ts
|
interface |
OrganizationAccess |
85 %
(6/7)
|
|
src/model/organizationAuthenticationServerCredentials.ts
|
interface |
OrganizationAuthenticationServerCredentials |
100 %
(3/3)
|
|
src/model/organizationAuthenticationServerInformation.ts
|
interface |
OrganizationAuthenticationServerInformation |
100 %
(4/4)
|
|
src/model/organizationAuthenticationServerRequest.ts
|
interface |
OrganizationAuthenticationServerRequest |
75 %
(3/4)
|
|
src/model/organizationDeletionRequest.ts
|
interface |
OrganizationDeletionRequest |
100 %
(4/4)
|
|
src/model/organizationMovement.ts
|
interface |
OrganizationMovement |
100 %
(6/6)
|
|
src/model/organizationPresenceCounter.ts
|
interface |
OrganizationPresenceCounter |
100 %
(3/3)
|
|
src/model/permission.ts
|
interface |
Permission |
100 %
(7/7)
|
|
src/model/place.ts
|
interface |
Place |
100 %
(5/5)
|
|
src/model/placeAccess.ts
|
interface |
PlaceAccess |
85 %
(6/7)
|
|
src/model/placeMovement.ts
|
interface |
PlaceMovement |
100 %
(6/6)
|
|
src/model/placePresenceCounter.ts
|
interface |
PlacePresenceCounter |
100 %
(3/3)
|
|
src/model/timePerUserReport.ts
|
interface |
TimePerUserReport |
100 %
(4/4)
|
|
src/test.ts
|
variable |
context |
0 %
(0/1)
|
|
src/test.ts
|
variable |
require |
0 %
(0/1)
|
|
src/variables.ts
|
variable |
BASE_PATH |
0 %
(0/1)
|
|
src/variables.ts
|
variable |
COLLECTION_FORMATS |
0 %
(0/1)
|


Home
About us
Contact
Recipe Book
Vegetable-Samosa
Info
Time
1:00 H
Preparation
30 Minutes
Servings
5
Ingredients
1
2 cup maida / plain flour
2
½ cup water
3
1 tsp cumin / jeera
4
½ tsp coriander seeds
5
½ tsp fennel / saunf
6
pinch hing / asafoetida
7
½ cup peas / matar
8
½ tsp kashmiri red chilli powder
9
½ tsp coriander powder
10
1 tsp salt
11
4 potato / aloo, boiled & mashed
12
¼ tsp cumin powder / jeera powder
13
½ tsp aamchur / dry mango powder
Directions
Pinch a ball sized dough and grease with oil.
Roll the dough into oval shape.
Now cut it horizontally 2 equal portions using a knife.
Grease with water and make cone.
Stuff 2 tbsp of prepared samosa masala into the cone.
Grease little water on the edges.
Close and seal tightly by pressing firmly.
Deep-fry the samosa on a low flame. alternatively bake at 180 degree celcius for 40 minutes.
Stir occasionally, frying the samosa on low flame for atleast 15 minutes.
Once the aloo samosa turns golden and crisp, drain off over kitchen paper.
Finally, enjoy aloo samosa with green chutney and tamarind chutney.
Go to back to recipes.


Pro Sidebar Add-on
Andrew Peel writes:
The Pro Sidebar add-on was developed to help simplify and speed up my workflow while working with Blender.
It provides me with a simplified interface, some helpful new tools, and an asset management engine all available from the Sidebar in 3D Viewport.
The video below will give you a quick overview of how it works.
I hope others in the community can find it helpful.


Energy
Fuel
Throttle
Launch
Systems
Solar Panels
Cargo Loader
Fuel Loader
Overdrive
Hover
Rockets
Guidance
Fly controls
WASD or Cursor Keys = move
R/F = up/down
Q/E = pitch
Distance
Cargo
Star-Crasher
Loading...


Admin
Add Photo
Add Photo Album
Add 360 Photo
Edit Log
Import Tasks
Send Personal Message
Health Monitor
Stats
Photo Frame Photos: {TOTAL_PHOTO_FRAME_PHOTOS}
Photo Wall Photos: {TOTAL_PHOTO_WALL_PHOTOS}
Wallpaper Photos: {TOTAL_WALLPAPER_PHOTOS}
Missing Location: {TOTAL_MISSING_LOCATION}
Photos: {TOTAL_PHOTOS}
Albums: {TOTAL_ALBUMS}
Photos
Wallpapers
|
Photowall
|
Missing Location ({TOTAL_MISSING_LOCATION})
|
Photo Frame
Browse by Album ID
GO
Re-fetch All album photo info from Flickr
Total Results: {BROWSE_COUNT}
ID
Preview
Location?
Wallpaper?
Photoframe?
PhotoWall
{PHOTO_ID}
{PHOTO_TITLE}
Flickr ID: {FLICKR_ID}
{PHOTO_LOCATION}
No Location
{PHOTO_LOCATION}
{IS_WALLPAPER}
{IS_PHOTOFRAME}
{PHOTOWALL_ID}


I'm a twenty-one-year-old senior pursuing Bachelor of Science degrees in both Computer Engineering and Electrical Engineering at Southern Illinois University Carbondale (SIUC), an ABET-accredited research university. In May 2014, I completed an Associate of Science Degree at Wabash Valley College before transferring to SIUC for Fall Semester 2014.
Two personal passions draw me to software engineering--building new things and learning new things.
Programming presents a rare opportunity to be both technical and artistic, which, to me, explains why its popularity as both a profession and a hobby has grown so exponentially.I am looking for full-time employment for after I complete my undergraduate studies in May 2017. If you'd like to contact me, please see the Contact Me section of this page. I'm always looking to improve, both as an engineer and as a person, and I embrace opportunities to do so.
I'm currently an Applications Development Intern on the Asset and Work Management Team at Ameren, a Fortune 500 company headquartered in St. Louis, Missouri. Ameren is the largest provider of electricity in the state of Missouri and the second-largest provider of electricity in the state of Illinois.
As part of my summer internship, I have been contributing to the interface between in-house asset management software and Primavera P6, Oracle-made work management software through C# code (using the .NET Framework), documentation, and testing.
I'm President and Co-Founder of Saluki Code, a new Registered Student Organization at SIUC created to educate the public on programming topics and facilitate collaboration among developers.
I'm fine-tuning an Android app I developed to calculate what students need on final exams to achieve the grade they desire.
As of Fall Semester 2016, I am taking courses the following courses:
Whether it's a business inquiry, an issue or suggestion related to this site, or a quick hello, I'd love to hear from you. Fill out the form below to send me an email, and I'll be sure to get back to you when I can.
If filling out forms isn't really your thing, that's perfectly OK. Here are some other ways to get in touch:


coconut creme brulee
Story
Simple custard (four ingredients) cooked inside of a fresh coconut. The flavors of the coconut flesh permeated the custard as it cooked for a nice lightly flavored coconut creme brulee.  Added bonus (thank you Alton Brown) save the pods from your vanilla bean and store them in sugar - the sugar will pick up quite a bit of vanilla flavor.
Recipe
Coconut Creme Brulee
March 31, 2014
Creme brulee cooked in a coconut
Prep time:
Cook time:
Total time:
Yield: Creme brulee for two
Equipment:
Propane torch (from a hardware store)Ingredients:
Fresh Coconut: 1
Heavy Cream: 1 pint
Vanilla Bean: 1 whole
Egg Yolks: 3
Sugar: 1/2 c
Directions:
1. Cut 1/2" off each end of the coconut so you have a flat end on each side.
2. Cut the coconut in half (parallel to the flat ends you just made). Be careful to save the coconut water and drink it, it is delicious and a great source of electrolytes.
3. Place coconut halves into a baking pan and place in oven on top rack.
4. Preheat oven to 325 F.
5. Split vanilla bean and scrape out pulp with the back of your knife.
6. Put heavy cream and vanilla (pod and pulp) into a saucepan on medium high heat.
7. As soon as cream starts to bubble, kill the heat allow to rest (covered) for 15 minutes.
8. Whisk egg yolks with half (1/4 c) of sugar.
9. While whisking, slowly add cream, a little at a time, to temper the eggs.
10. When all cream is combined, pour into coconut shells and bake for 60 minutes or until custard is set but center still jiggles slightly - this may take up to 90 minutes depending on how warm your coconut is.
11. Chill for at least 3 hours before serving.
12. Immediately before serving, sprinkle sugar on top of custard and hit it with the torch until all sugar is melted, swirl to coat top of custard with liquid sugar.
2. Cut the coconut in half (parallel to the flat ends you just made). Be careful to save the coconut water and drink it, it is delicious and a great source of electrolytes.
3. Place coconut halves into a baking pan and place in oven on top rack.
4. Preheat oven to 325 F.
5. Split vanilla bean and scrape out pulp with the back of your knife.
6. Put heavy cream and vanilla (pod and pulp) into a saucepan on medium high heat.
7. As soon as cream starts to bubble, kill the heat allow to rest (covered) for 15 minutes.
8. Whisk egg yolks with half (1/4 c) of sugar.
9. While whisking, slowly add cream, a little at a time, to temper the eggs.
10. When all cream is combined, pour into coconut shells and bake for 60 minutes or until custard is set but center still jiggles slightly - this may take up to 90 minutes depending on how warm your coconut is.
11. Chill for at least 3 hours before serving.
12. Immediately before serving, sprinkle sugar on top of custard and hit it with the torch until all sugar is melted, swirl to coat top of custard with liquid sugar.


@(playerId: String, player: pa.StatsSummary, playerAppearances: pa.PlayerAppearances) @views.html.football.main("Player card") {
| Player | Image | Appearances | Goals | Assists | Shots on target | Bookings | Dismissals | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Home | Away | Total | Home | Away | Total | Home | Away | Total | Home | Away | Total | Home | Away | Total | |||
| @playerAppearances.playerName | @playerAppearances.total.appearances | @player.offence.goals.home | @player.offence.goals.away | @player.offence.goals.total | @player.offence.assists.home | @player.offence.assists.away | @player.offence.assists.total | @player.offence.shotsOnTargetPercentage.home% | @player.offence.shotsOnTargetPercentage.away% | @player.offence.shotsOnTargetPercentage.total% | @player.discipline.bookings.home | @player.discipline.bookings.away | @player.discipline.bookings.total | @player.discipline.dismissals.home | @player.discipline.dismissals.away | @player.discipline.dismissals.total |


{% extends "base.html" %} {% set page_title = "Appearances by Year" %} {% block title %}{{ page_title }} | Panelists{% endblock %} {% block content %}
Choose from one of the panelists below to view a chart displaying the number of appearances broken down by year.


{{ .Site.Params.about }}
{{ partialCached "social.html" . }}
Home
{{ .Name }}
{{ i18n "copyright" }} © {{ now.Format "2006"}} {{ .Site.Title }} – Powered by Hugo & Nio theme.


Chapter 1 Getting started
This chapter (@ref, ch1) starts starts with the program setup (installing R) assuming no prior knowledge of programming in R or in any other language. In the later chapters, e.g., Chapters ?? and ??, an understanding of statistics at the introductory undergraduate level would be helpful but not strictly essential.
There are, however, some tasks you’ll need to complete before using this book, which are described in the two sections that follow.
 Go to:
- https://cran.rstudio.com/ to get R and
- https://www.rstudio.com/products/rstudio/download/ to get RStudio Desktop.
Download the appropriate installation file for your operating system and run that file. All default settings should be fine.
Optional Configuration
As a matter of personal preference, you are recommended to configure a few settings. Open up RStudio and go to Tools > Global Options, and in the section listed “General”:
- Make sure Restore .RData into workspace at startup is unchecked
- Make sure Save workspace to .RData on exit is set to Never
- Make sure Always save history (even when not saving .RData) is unchecked.
These settings will prevent you from getting a bunch of useless files and dialog boxes every time you open and close R.
Create a Book Directory
You should create a devoted folder on your computer for this book. All examples will assume this folder is located here: C:/Users/YOU/Documents/R-Book
. Change YOU
to be specific for your computer.
Data Sets
The data sets2 used in this book are hosted on a GitHub repository maintained by the author. It is located here: https://github.com/bstaton1/au-r-workshop-data.
To acquire the data for this book, you should:
- Navigate to the GitHub repository
- click the green Clone or download button at the top right,
- click Download ZIP
- unzip the contents of this folder into the location:
C:/Users/YOU/Documents/R-Book/Data
File organization will be very important for your success in learning to use R. This book will assume your R-Book
directory is organized as shown below. Notice that there is a separate folder for the data downloaded from GitHub as well as one for each chapter that will house the R code for that chapter. Do not worry about making all of these folders now, you will do this at the appropriate time as you work your way through this book. For now, just make sure there is a Data
folder that contains all of the unzipped contents from the GitHub repository your main R-Book
directory. This is the current status:
## levelName
## 1 R-Book
## 2 ¦--Data
## 3 ¦ ¦--asl.csv
## 4 ¦ ¦--...
## 5 ¦ °--Ch6
## 6 ¦--Chapter1
## 7 ¦ ¦--Ch1.R
## 8 ¦ ¦--Ex1A.R
## 9 ¦ °--Ex1B.R
## 10 ¦--Chapter2
## 11 ¦ ¦--Ch2.R
## 12 ¦ °--Ex2.R
## 13 ¦--Chapter3
## 14 ¦--Chapter4
## 15 ¦--Chapter5
## 16 °--Chapter6
Exercises
Following each chapter, there are a collection of different exercises adapted from my own collaborations and the books I have merged to create this one. :) You should attempt and complete them, as they give you an opportunity to practice what you learned while reading and typing along. Solutions are provided at the end of this book, however you are strongly recommended to attempt to figure the problems out on your own before looking to how the author would solve them.
Some exercises have bonus questions. These are intended to challenge you with some of the more difficult tasks shown in the chapter or ask you to extend what you learned to a completely different problem. If you can get all of the non-bonus questions without looking at the solutions too much, you can consider yourself to have good understanding of that chapter’s material. If you can complete the bonus questions with little or no help, that means you have mastered that chapter’s material!
Text Conventions
- Regular text: a description of what you you should do, how some code works, or a general narrative of something.
monospace
: references something in Rthis()
references some functionthis
references some other object{this}
references an R packageC:/This
is a file path
- Bold is intended to provide more emphasis to a word or topic. In general, new topics are introduced this way.
- Links: this is a link to some other location in this book. External links are provided with a full URL.
- \(Equations\): it is sometimes useful to describe concepts mathematically before showing how to do it in R.
- 3: a footnote containing more information.
Keyboard Shortcuts
Several parts of this book in this book make reference to keyboard shortcuts. They are never necessary, but can help you be more efficient if you commit them to muscle memory. This book assumes you are using a PC for the keyboard shortcuts. If you are using a Mac, they will be different4. For a complete list of RStudio’s keyboard shortcuts specific to your operating system, go to Help > Keyboard Shortcuts Help.
Development of this Book
This book represents the first draft of a population dynamics text. It also combines the third reincarnation of the Auburn R Workshop Series, the pirateeeeR book and other R-books.
The book is hosted on GitHub Pages, and was last built on 11-02-2019.


COMMANDO A Film Review by Dragan Antulov Copyright Dragan Antulov 1998
One of the things that should make movie fans less nostalgic about 1980s aren't "teenage slasher" horrors. The real killers among products of movie industry in that decade were so-called "ramboids", movies inspired by the meteoric success of Stallone's FIRST BLOOD PART 2. That story about lone U.S. Special Forces man that manages to single-handedly destroy entire Vietnamese army was the product of Reagan years and actually served as a substitute for U.S. victory in Vietnam War. However, Stallone's stunts in that film inspired hundreds of cheap imitations - usually such cinematic abominations that would need centuries before they get any chance of camp appeal. "Ramboids" weren't just monstrosities in artistic sense - in case of former Yugoslavia they actually proved the theory of movies as a bad influence on real life people. After being exposed to hundreds of movies with heroes who, armed with single machinegun or a rocket launcher, manage to wipe out entire regiments of bad guys, many young people considered war to be fun and in 1991, when war erupted in Croatia, they actually volunteered go to the battlefields in droves. For many rude awakening about world where bullets don't miraculously miss good guys, where automatic weapons have to be re-loaded and where superior firepower, training and numbers actually do matter came too late. Thousands, perhaps even tens of thousands of people in body bags or wheelchairs could be counted as a indirect victims of movies inspired by RAMBO 2.
The only "ramboid" that I actually liked, and, I still like, causing certain feeling of guilt about it, is COMMANDO by Mark L. Lester, one of those rare big studio projects that jumped on RAMBO 2 bandwagon. Actually, it proved to be quite succesful vehicle for rising star of Arnold Schwarzenegger and one of the most popular action movies in that decade (that would later bring such a masterpieces as PREDATOR and DIE HARD).
The hero of the movie is Colonel John Matrix, veteran of a unnamed U.S. Special Operations unit, who has retired and lives a happy and quiet life as a logger together with his pre-teen daughter Jenny.  The move was orchestrated by Arius, exiled dictator of a remote Latin American country who wants to return to power and Matrix must kill the sitting president in a exchange for his daughter's life. However, knowing that he deals with anything but an honest people he escapes from ascending plane, knowing that he has only 11 hours before the plane lands and Arius finds that he changed his mind. Matrix begins the race against the time and tries to find the location of terrorist base, with the attractive stewardess Cindy as his only help.
One of the reason why COMMANDO beats RAMBO 2 is in a approach. While director Pal Cosmatos, writer James Cameron and Stallone used impressive, but utterly unrealistic visual and other attractions of "one- man-army" concept as a tool for certain political message, Schwarzenegger, writer Steven E. De Souza (author of DIE HARD) and director Mark L. Lester (whose work on COMMANDO is probably his best) considered all that special forces mumbo-jumbo as an excuse for escapist pulp fiction fun. Schwarzenegger, who had already created an image of invincible hero/killing machine in CONAN THE BARBARIAN (1981) and THE TERMINATOR (1984) actually tried to give some new elements to his own character (East German background as an attempt to give plausible explanation for his accent). But, he also finished the creation of his on-screen Schwarzenegger personality, including his famous one-liners and very specific, sometimes very cruel sense of humour. His lines, usually given before the killing of the bad guys, are probably the best remembered element of this movie.
 That also includes the small army of brilliant character actors in the roles of Arius and his henchmen. Vernon Welles, who was, until that time best known as Mad Max's nemesis in THE ROAD WARRIOR is, despite his huge physical presence, overshadowed by Bill Duke and Dan Hedaya. But his final showdown with Schwarzenegger is quite impressive, anyway. The good guys are under-represented (small roles of Bill Paxton and Chelsea Fields are almost un-noticeable), but Rae Dawn Chong as Cindy, displaying entertaining combination of "damsel in distress" and tough chick that gives this movie brilliant comic relief.
COMMANDO is hardly a masterpiece, suffering mostly from the uninspired soundtrack by James Horner (mostly re-write of his work in 48 HRS) and the song that beats Celine Dion's "My Heart Will Go On" in "the cheasiest song of all times" category. Editing is sub-par in the final showdown scenes, but only the most fanatical nitpickers would find such fatal flaws. In its 90 minutes of non-stop action, COMMANDO manages to achieve its goal - to entertain the audience. And, sometimes, that fact is enough to consider the movie good.
RATING: 7/10 (+++)
Review written on May 3rd 1998
--
Drax Fido: 2:381/100 E-Mail<EMAIL_ADDRESS><EMAIL_ADDRESS>The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Robo Darts
For my senior capstone project in design of mechanical systems at Union College, I was part of a team that designed and built a dart-throwing robot. At the end of the course, our robot competed (and surprisingly beat) several human players in a game of darts. My specific role was developing the base positioning system to align the dart with the bulls-eye, as well as the open-loop control scheme.
The positioner consisted of 2-DOF (revolute and prismatic joints) to align the throwing arm with the target – both actuated via DC-brushed motors and hobby motor drivers. A wireless remote control was programmed to position and throw the dart at various speeds and trajectories.


Helpers for creating matrices#
- class sage.matrix.args.MatrixArgs#
Bases:
object
Collect arguments for constructing a matrix.
This class is meant to pass around arguments, for example from the global
matrix()
constructor to the matrix space or to the element class constructor.A typical use case is first creating a
MatrixArgs
instance, possibly adjusting the attributes. This instance can then be passed around and a matrix can be constructed from it using thematrix()
method. Also, a flat list can be constructed usinglist()
or a sparse dict usingdict()
. It is safe to construct multiple objects (of the same or a different kind) from the sameMatrixArgs
instance.MatrixArgs
also supports iteration using theiter()
method. This is a more low-level interface.When
MatrixArgs
produces output, it is first finalized. This means that all missing attributes are derived or guessed. After finalization, you should no longer change the attributes or it will end up in an inconsistent state. You can also finalize explicitly by calling thefinalized()
method.A
MatrixArgs
can contain invalid input. This is not checked when constructing theMatrixArgs
instance, but it is checked either when finalizing or when constructing an object from it.Warning
Instances of this class should only be temporary, they are not meant to be stored long-term.
EXAMPLES:
sage: from sage.matrix.args import MatrixArgs sage: ma = MatrixArgs(2, 2, (x for x in range(4))); ma <MatrixArgs for None; typ=UNKNOWN; entries=<generator ...>> sage: ma.finalized() <MatrixArgs for Full MatrixSpace of 2 by 2 dense matrices over Integer Ring; typ=SEQ_FLAT; entries=[0, 1, 2, 3]>
Many types of input are possible:
sage: ma = MatrixArgs(2, 2, entries=None); ma.finalized(); ma.matrix() <MatrixArgs for Full MatrixSpace of 2 by 2 dense matrices over Integer Ring; typ=ZERO; entries=None> [0 0] [0 0] sage: ma = MatrixArgs(2, 2, entries={}); ma.finalized(); ma.matrix() <MatrixArgs for Full MatrixSpace of 2 by 2 sparse matrices over Integer Ring; typ=SEQ_SPARSE; entries=[]> [0 0] [0 0] sage: ma = MatrixArgs(2, 2, entries=[1,2,3,4]); ma.finalized(); ma.matrix() <MatrixArgs for Full MatrixSpace of 2 by 2 dense matrices over Integer Ring; typ=SEQ_FLAT; entries=[1, 2, 3, 4]> [1 2] [3 4] sage: ma = MatrixArgs(2, 2, entries=math.pi); ma.finalized(); ma.matrix() <MatrixArgs for Full MatrixSpace of 2 by 2 dense matrices over Real Double Field; typ=SCALAR; entries=3.141592653589793> [3.141592653589793 0.0] [ 0.0 3.141592653589793] sage: ma = MatrixArgs(2, 2, entries=pi); ma.finalized(); ma.matrix() <MatrixArgs for Full MatrixSpace of 2 by 2 dense matrices over Symbolic Ring; typ=SCALAR; entries=pi> [pi 0] [ 0 pi] sage: ma = MatrixArgs(ZZ, 2, 2, entries={(0,0):7}); ma.finalized(); ma.matrix() <MatrixArgs for Full MatrixSpace of 2 by 2 sparse matrices over Integer Ring; typ=SEQ_SPARSE; entries=[SparseEntry(0, 0, 7)]> [7 0] [0 0] sage: ma = MatrixArgs(ZZ, 2, 2, entries=((1,2),(3,4))); ma.finalized(); ma.matrix() <MatrixArgs for Full MatrixSpace of 2 by 2 dense matrices over Integer Ring; typ=SEQ_SEQ; entries=((1, 2), (3, 4))> [1 2] [3 4] sage: ma = MatrixArgs(ZZ, 2, 2, entries=(1,2,3,4)); ma.finalized(); ma.matrix() <MatrixArgs for Full MatrixSpace of 2 by 2 dense matrices over Integer Ring; typ=SEQ_FLAT; entries=(1, 2, 3, 4)> [1 2] [3 4] sage: ma = MatrixArgs(QQ, entries=pari("[1,2;3,4]")); ma.finalized(); ma.matrix() <MatrixArgs for Full MatrixSpace of 2 by 2 dense matrices over Rational Field; typ=SEQ_FLAT; entries=[1, 2, 3, 4]> [1 2] [3 4] sage: ma = MatrixArgs(QQ, 2, 2, entries=pari("[1,2,3,4]")); ma.finalized(); ma.matrix() <MatrixArgs for Full MatrixSpace of 2 by 2 dense matrices over Rational Field; typ=SEQ_FLAT; entries=[1, 2, 3, 4]> [1 2] [3 4] sage: ma = MatrixArgs(QQ, 2, 2, entries=pari("3/5")); ma.finalized(); ma.matrix() <MatrixArgs for Full MatrixSpace of 2 by 2 dense matrices over Rational Field; typ=SCALAR; entries=3/5> [3/5 0] [ 0 3/5] sage: ma = MatrixArgs(entries=matrix(2,2)); ma.finalized(); ma.matrix() <MatrixArgs for Full MatrixSpace of 2 by 2 dense matrices over Integer Ring; typ=MATRIX; entries=[0 0] [0 0]> [0 0] [0 0] sage: ma = MatrixArgs(2, 2, entries=lambda i,j: 1+2*i+j); ma.finalized(); ma.matrix() <MatrixArgs for Full MatrixSpace of 2 by 2 dense matrices over Integer Ring; typ=SEQ_FLAT; entries=[1, 2, 3, 4]> [1 2] [3 4] sage: ma = MatrixArgs(ZZ, 2, 2, entries=lambda i,j: 1+2*i+j); ma.finalized(); ma.matrix() <MatrixArgs for Full MatrixSpace of 2 by 2 dense matrices over Integer Ring; typ=CALLABLE; entries=<function ...>> [1 2] [3 4] sage: from numpy import array sage: ma = MatrixArgs(array([[1,2],[3,4]])); ma.finalized(); ma.matrix() <MatrixArgs for Full MatrixSpace of 2 by 2 dense matrices over Integer Ring; typ=SEQ_SEQ; entries=array([[1, 2], [3, 4]])> [1 2] [3 4] sage: ma = MatrixArgs(array([[1.,2.],[3.,4.]])); ma.finalized(); ma.matrix() <MatrixArgs for Full MatrixSpace of 2 by 2 dense matrices over Real Double Field; typ=MATRIX; entries=[1.0 2.0] [3.0 4.0]> [1.0 2.0] [3.0 4.0] sage: ma = MatrixArgs(RealField(20), array([[1.,2.],[3.,4.]])); ma.finalized(); ma.matrix() <MatrixArgs for Full MatrixSpace of 2 by 2 dense matrices over Real Field with 20 bits of precision; typ=MATRIX; entries=[1.0 2.0] [3.0 4.0]> [1.0000 2.0000] [3.0000 4.0000] sage: ma = MatrixArgs(graphs.CycleGraph(3)); ma.finalized(); ma.matrix() <MatrixArgs for Full MatrixSpace of 3 by 3 dense matrices over Integer Ring; typ=MATRIX; entries=[0 1 1] [1 0 1] [1 1 0]> [0 1 1] [1 0 1] [1 1 0] sage: ma = MatrixArgs([vector([0,1], sparse=True), vector([0,0], sparse=True)], sparse=True) sage: ma.finalized(); ma.matrix() <MatrixArgs for Full MatrixSpace of 2 by 2 sparse matrices over Integer Ring; typ=SEQ_SPARSE; entries=[SparseEntry(0, 1, 1)]> [0 1] [0 0]
Test invalid input:
sage: MatrixArgs(ZZ, 2, 2, entries="abcd").finalized() Traceback (most recent call last): ... TypeError: unable to convert 'abcd' to a matrix sage: MatrixArgs(ZZ, 2, 2, entries=MatrixArgs()).finalized() Traceback (most recent call last): ... TypeError: unable to convert <MatrixArgs for None; typ=UNKNOWN; entries=None> to a matrix
- base#
- dict(convert=True)#
Return the entries of the matrix as a dict. The keys of this dict are the non-zero positions
(i,j)
. The corresponding value is the entry at that position. Zero values are skipped.If
convert
is True, the entries are converted to the base ring. Otherwise, the entries are returned as given.EXAMPLES:
sage: from sage.matrix.args import MatrixArgs sage: L = list(range(6)) sage: MatrixArgs(2, 3, L).dict() {(0, 1): 1, (0, 2): 2, (1, 0): 3, (1, 1): 4, (1, 2): 5}
sage: ma = MatrixArgs(GF(2), 2, 3, L) sage: ma.dict(convert=False) {(0, 1): 1, (0, 2): 2, (1, 0): 3, (1, 1): 4, (1, 2): 5} sage: ma.dict() {(0, 1): 1, (1, 0): 1, (1, 2): 1}
- entries#
- finalized()#
Determine all missing values.
Depending on the input, this might be a non-trivial operation. In some cases, this will do most of the work of constructing the matrix. That is actually not a problem since we eventually want to construct the matrix anyway. However, care is taken to avoid double work or needless checking or copying.
OUTPUT:
self
EXAMPLES:
sage: from sage.matrix.args import MatrixArgs sage: MatrixArgs(pi).finalized() Traceback (most recent call last): ... TypeError: the dimensions of the matrix must be specified sage: MatrixArgs(RR, pi).finalized() Traceback (most recent call last): ... TypeError: the dimensions of the matrix must be specified sage: MatrixArgs(2, 3, 0.0).finalized() <MatrixArgs for Full MatrixSpace of 2 by 3 dense matrices over Real Field with 53 bits of precision; typ=ZERO; entries=0.000000000000000> sage: MatrixArgs(RR, 2, 3, 1.0).finalized() Traceback (most recent call last): ... TypeError: nonzero scalar matrix must be square
Check github issue #19134:
sage: matrix(2, 3, []) Traceback (most recent call last): ... ValueError: sequence too short (expected length 6, got 0) sage: matrix(ZZ, 2, 3, []) Traceback (most recent call last): ... ValueError: sequence too short (expected length 6, got 0) sage: matrix(2, 3, [1]) Traceback (most recent call last): ... ValueError: sequence too short (expected length 6, got 1)
Check github issue #36065:
sage: class MyAlgebraicNumber(sage.rings.qqbar.AlgebraicNumber): ….: def __bool__(self): ….: raise ValueError sage: matrix(1, 1, MyAlgebraicNumber(0)) [0] sage: matrix(1, 1, MyAlgebraicNumber(3)) [3] sage: matrix(1, 2, MyAlgebraicNumber(0)) Traceback (most recent call last): … TypeError: scalar matrix must be square if the value cannot be determined to be zero sage: matrix(1, 2, MyAlgebraicNumber(3)) Traceback (most recent call last): … TypeError: scalar matrix must be square if the value cannot be determined to be zero
- iter(convert=True, sparse=False)#
Iteration over the entries in the matrix
INPUT:
convert
– IfTrue
, the entries are converted to the base right. IfFalse
, the entries are returned as given.sparse
– See OUTPUT below.
OUTPUT: iterator
If
sparse
is False: yield all entries of the matrix in the following order:[1 2 3] [4 5 6]
If
sparse
is True: yield instances ofSparseEntry
. The indices(i, j)
are guaranteed to lie within the matrix. Zero entries in the input are not skipped.
Warning
If an iterator is given as input to
MatrixArgs
, it may be exhausted breaking any further usage. Otherwise, it is safe to iterate multiple times.EXAMPLES:
sage: from sage.matrix.args import SparseEntry, MatrixArgs sage: ma = MatrixArgs(ZZ, 2, 3, iter(range(6))) sage: list(ma.iter()) [0, 1, 2, 3, 4, 5] sage: ma = MatrixArgs(ZZ, 3, 3, [SparseEntry(0, 0, 0)]) sage: list(ma.iter()) Traceback (most recent call last): ... TypeError: dense iteration is not supported for sparse input
Sparse examples:
sage: ma = MatrixArgs(3, 3, pi) sage: list(ma.iter(sparse=True)) [SparseEntry(0, 0, pi), SparseEntry(1, 1, pi), SparseEntry(2, 2, pi)] sage: ma = MatrixArgs(2, 3) sage: list(ma.iter(sparse=True)) [] sage: ma = MatrixArgs(2, 2, lambda i, j: i > j) sage: list(ma.iter(convert=False, sparse=True)) [SparseEntry(0, 0, False), SparseEntry(0, 1, False), SparseEntry(1, 0, True), SparseEntry(1, 1, False)] sage: ma = MatrixArgs(2, 2, {(1,0):88, (0,1):89}) sage: sorted(tuple(x) for x in ma.iter(sparse=True)) [(0, 1, 89), (1, 0, 88)] sage: ma = MatrixArgs(QQ, 2, 1, {(1,0):88, (0,1):89}) sage: ma.finalized() Traceback (most recent call last): ... IndexError: invalid column index 1 sage: ma = MatrixArgs(QQ, 1, 2, {(1,0):88, (0,1):89}) sage: ma.finalized() Traceback (most recent call last): ... IndexError: invalid row index 1
- kwds#
- list(convert=True)#
Return the entries of the matrix as a flat list of scalars.
If possible and
convert=False
, this returns a direct reference toself.entries
without copying.INPUT:
convert
– If True, the entries are converted to the base ring. Otherwise, the entries are returned as given.
Note
This changes
self.entries
to the returned list. This means that it is unsafe to access theself.entries
attribute after calling this method.EXAMPLES:
sage: from sage.matrix.args import MatrixArgs sage: L = list(range(6)) sage: MatrixArgs(2, 3, L).list() [0, 1, 2, 3, 4, 5]
sage: ma = MatrixArgs(RDF, 2, 3, L) sage: ma.list(convert=False) [0, 1, 2, 3, 4, 5] sage: ma.list() [0.0, 1.0, 2.0, 3.0, 4.0, 5.0]
If we remove our reference to the input
L
andconvert=False
, no copy is made:sage: idL = id(L) sage: ma = MatrixArgs(2, 3, L) sage: del L sage: L = ma.list(convert=False) sage: id(L) == idL True
- matrix(convert=True)#
Return the entries of the matrix as a Sage Matrix.
If possible, this returns a direct reference to
self.entries
without copying.INPUT:
convert
– if True, the matrix is guaranteed to have the correct parent matrix space. If False, the input matrix may be returned even if it lies in the wrong space.
Note
This changes
self.entries
to the returned matrix. This means that it is unsafe to access theself.entries
attribute after calling this method.EXAMPLES:
sage: from sage.matrix.args import MatrixArgs sage: M = matrix(2, 3, range(6), sparse=True)
sage: ma = MatrixArgs(M); ma.finalized() <MatrixArgs for Full MatrixSpace of 2 by 3 sparse matrices over Integer Ring; typ=MATRIX; entries=[0 1 2] [3 4 5]> sage: ma.matrix() [0 1 2] [3 4 5]
sage: ma = MatrixArgs(M, sparse=False); ma.finalized() <MatrixArgs for Full MatrixSpace of 2 by 3 dense matrices over Integer Ring; typ=MATRIX; entries=[0 1 2] [3 4 5]> sage: ma.matrix() [0 1 2] [3 4 5]
sage: ma = MatrixArgs(RDF, M); ma.finalized() <MatrixArgs for Full MatrixSpace of 2 by 3 sparse matrices over Real Double Field; typ=MATRIX; entries=[0 1 2] [3 4 5]> sage: ma.matrix(convert=False) [0 1 2] [3 4 5] sage: ma.matrix() [0.0 1.0 2.0] [3.0 4.0 5.0]
If we remove our reference to the input
M
, no copy is made:sage: idM = id(M) sage: ma = MatrixArgs(M) sage: del M sage: M = ma.matrix() sage: id(M) == idM True
Immutable matrices are never copied:
sage: M.set_immutable() sage: matrix(M) is M True
- ncols#
- nrows#
- set_space(space)#
Set inputs from a given matrix space.
INPUT:
space
– aMatrixSpace
EXAMPLES:
sage: from sage.matrix.args import MatrixArgs sage: ma = MatrixArgs() sage: S = MatrixSpace(QQ, 3, 2, sparse=True) sage: _ = ma.set_space(S) sage: ma.finalized() <MatrixArgs for Full MatrixSpace of 3 by 2 sparse matrices over Rational Field; typ=ZERO; entries=None> sage: M = ma.matrix(); M [0 0] [0 0] [0 0] sage: M.parent() is S True
- space#
- sparse#
- sage.matrix.args.MatrixArgs_init(space, entries)#
Construct a
MatrixArgs
object from a matrix space and entries. This is the typical use in a matrix constructor.If the given entries is already an instance of
MatrixArgs
, then just set the space and return the same object.EXAMPLES:
sage: from sage.matrix.args import MatrixArgs_init sage: S = MatrixSpace(GF(2), 2, 4) sage: ma = MatrixArgs_init(S, {(1,3):7}) sage: M = ma.matrix(); M [0 0 0 0] [0 0 0 1] sage: parent(M) is S True
- class sage.matrix.args.SparseEntry#
Bases:
object
Specialized class for dealing with sparse input in
MatrixArgs
. An instance ofSparseEntry
represents one position in a matrix to be constructed. To construct a sparse matrix, one would typically make a list of such.Previous versions of Sage used a
dict
as data structure for sparse input, but that is not so suitable because the keys are not guaranteed to be of the correct format. There is also the performance cost of creating tuples of Python integers.Users of this class are expected to know what they are doing, so the indices are not checked when constructing a matrix.
INPUT:
i
,j
– row and column indexentry
– value to be put at position \((i,j)\)
EXAMPLES:
sage: from sage.matrix.args import SparseEntry sage: SparseEntry(123, 456, "abc") SparseEntry(123, 456, 'abc') sage: SparseEntry(1/3, 2/3, x) Traceback (most recent call last): ... TypeError: unable to convert rational 1/3 to an integer
- entry#
- i#
- j#


class REXML::Parsers::PullEvent
A parsing event. The contents of the event are accessed as an +Array?, and the type is given either by the …? methods, or by accessing the type
accessor. The contents of this object vary from event to event, but are identical to the arguments passed to +StreamListener+s for each event.
Public Class Methods
The type of this event. Will be one of :tag_start, :tag_end, :text, :processing_instruction, :comment, :doctype, :attlistdecl, :entitydecl, :notationdecl, :entity, :cdata, :xmldecl, or :error.
# File lib/rexml/parsers/pullparser.rb, line 95 def initialize(arg) @contents = arg end
Public Instance Methods
# File lib/rexml/parsers/pullparser.rb, line 99 def []( start, endd=nil) if start.kind_of? Range @contents.slice( start.begin+1 .. start.end ) elsif start.kind_of? Numeric if endd.nil? @contents.slice( start+1 ) else @contents.slice( start+1, endd ) end else raise "Illegal argument #{start.inspect} (#{start.class})" end end
Content: [ String text ]
# File lib/rexml/parsers/pullparser.rb, line 148 def attlistdecl? @contents[0] == :attlistdecl end
Content: [ String text ]
# File lib/rexml/parsers/pullparser.rb, line 179 def cdata? @contents[0] == :cdata end
Content: [ String text ]
# File lib/rexml/parsers/pullparser.rb, line 138 def comment? @contents[0] == :comment end
Content: [ String name, String pub_sys, String long_name, String uri ]
# File lib/rexml/parsers/pullparser.rb, line 143 def doctype? @contents[0] == :start_doctype end
Content: [ String text ]
# File lib/rexml/parsers/pullparser.rb, line 153 def elementdecl? @contents[0] == :elementdecl end
Content: [ String tag_name ]
# File lib/rexml/parsers/pullparser.rb, line 123 def end_element? @contents[0] == :end_element end
Content: [ String text ]
# File lib/rexml/parsers/pullparser.rb, line 174 def entity? @contents[0] == :entity end
Due to the wonders of DTDs, an entity declaration can be just about anything. There's no way to normalize it; you'll have to interpret the content yourself. However, the following is true:
-
If the entity declaration is an internal entity:
- String name, String value
Content: [ String text ]
# File lib/rexml/parsers/pullparser.rb, line 164 def entitydecl? @contents[0] == :entitydecl end
# File lib/rexml/parsers/pullparser.rb, line 188 def error? @contents[0] == :error end
# File lib/rexml/parsers/pullparser.rb, line 113 def event_type @contents[0] end
# File lib/rexml/parsers/pullparser.rb, line 192 def inspect @contents[0].to_s + ": " + @contents[1..-1].inspect end
Content: [ String text ]
# File lib/rexml/parsers/pullparser.rb, line 133 def instruction? @contents[0] == :processing_instruction end
Content: [ String text ]
# File lib/rexml/parsers/pullparser.rb, line 169 def notationdecl? @contents[0] == :notationdecl end
Content: [ String tag_name, Hash attributes ]
# File lib/rexml/parsers/pullparser.rb, line 118 def start_element? @contents[0] == :start_element end
Content: [ String raw_text, String unnormalized_text ]
# File lib/rexml/parsers/pullparser.rb, line 128 def text? @contents[0] == :text end
Content: [ String version, String encoding, String standalone ]
# File lib/rexml/parsers/pullparser.rb, line 184 def xmldecl? @contents[0] == :xmldecl end


There are 3 loaded datasets: AND, OR and Iris flower datasets, press on the there buttons at the very top to load the datasets.
You can train this network with your own data, press on "Your own data" and below network diagram select input and output size.
Then write your own data into the table in the input fields and press "Add data to the table".
The canvas displays the neural network, in the middle of the node the bias is shown. If the weight between the nodes is positive it
will be red, the bigger the number, the more red it is. If the weight is blue then is is negative and the more blue it is, the bigger the negative is.
Also it shows which nodes and input layer(the arrows are pointing to the nodes) and which one is output layer(the arrows are pointing from the nodes).
You can add more or less layers in an network or nodes in a layer.
You have a whole set of parameters you can tweak to see which one dose what and train your model faster.
The table below shows inputs, expected outputs and predicted outputs.
made by Marijus Gudiskis marijus.good@gmail.com


"""
Key bindings registry.
A `KeyBindings` object is a container that holds a list of key bindings. It has a
very efficient internal data structure for checking which key bindings apply
for a pressed key.
Typical usage::
kb = KeyBindings()
@kb.add(Keys.ControlX, Keys.ControlC, filter=INSERT)
def handler(event):
# Handle ControlX-ControlC key sequence.
pass
It is also possible to combine multiple KeyBindings objects. We do this in the
default key bindings. There are some KeyBindings objects that contain the Emacs
bindings, while others contain the Vi bindings. They are merged together using
`merge_key_bindings`.
We also have a `ConditionalKeyBindings` object that can enable/disable a group of
key bindings at once.
It is also possible to add a filter to a function, before a key binding has
been assigned, through the `key_binding` decorator.::
# First define a key handler with the `filter`.
@key_binding(filter=condition)
def my_key_binding(event):
...
# Later, add it to the key bindings.
kb.add(Keys.A, my_key_binding)
"""
from abc import ABCMeta, abstractmethod, abstractproperty
from inspect import isawaitable
from typing import (
TYPE_CHECKING,
Awaitable,
Callable,
Hashable,
List,
Optional,
Sequence,
Tuple,
TypeVar,
Union,
cast,
)
from prompt_toolkit.cache import SimpleCache
from prompt_toolkit.filters import FilterOrBool, Never, to_filter
from prompt_toolkit.keys import KEY_ALIASES, Keys
if TYPE_CHECKING:
# Avoid circular imports.
from .key_processor import KeyPressEvent
# The only two return values for a mouse hander (and key bindings) are
# `None` and `NotImplemented`. For the type checker it's best to annotate
# this as `object`. (The consumer never expects a more specific instance:
# checking for NotImplemented can be done using `is NotImplemented`.)
NotImplementedOrNone = object
# Other non-working options are:
# * Optional[Literal[NotImplemented]]
# --> Doesn't work, Literal can't take an Any.
# * None
# --> Doesn't work. We can't assign the result of a function that
# returns `None` to a variable.
# * Any
# --> Works, but too broad.
__all__ = [
"NotImplementedOrNone",
"Binding",
"KeyBindingsBase",
"KeyBindings",
"ConditionalKeyBindings",
"merge_key_bindings",
"DynamicKeyBindings",
"GlobalOnlyKeyBindings",
]
# Key bindings can be regular functions or coroutines.
# In both cases, if they return `NotImplemented`, the UI won't be invalidated.
# This is mainly used in case of mouse move events, to prevent excessive
# repainting during mouse move events.
KeyHandlerCallable = Callable[
["KeyPressEvent"], Union["NotImplementedOrNone", Awaitable["NotImplementedOrNone"]]
]
class Binding:
"""
Key binding: (key sequence + handler + filter).
(Immutable binding class.)
:param record_in_macro: When True, don't record this key binding when a
macro is recorded.
"""
def __init__(
self,
keys: Tuple[Union[Keys, str], ...],
handler: KeyHandlerCallable,
filter: FilterOrBool = True,
eager: FilterOrBool = False,
is_global: FilterOrBool = False,
save_before: Callable[["KeyPressEvent"], bool] = (lambda e: True),
record_in_macro: FilterOrBool = True,
) -> None:
self.keys = keys
self.handler = handler
self.filter = to_filter(filter)
self.eager = to_filter(eager)
self.is_global = to_filter(is_global)
self.save_before = save_before
self.record_in_macro = to_filter(record_in_macro)
def call(self, event: "KeyPressEvent") -> None:
result = self.handler(event)
# If the handler is a coroutine, create an asyncio task.
if isawaitable(result):
awaitable = cast(Awaitable["NotImplementedOrNone"], result)
async def bg_task() -> None:
result = await awaitable
if result != NotImplemented:
event.app.invalidate()
event.app.create_background_task(bg_task())
elif result != NotImplemented:
event.app.invalidate()
def __repr__(self) -> str:
return "{}(keys={!r}, handler={!r})".format(
self.__class__.__name__,
self.keys,
self.handler,
)
# Sequence of keys presses.
KeysTuple = Tuple[Union[Keys, str], ...]
class KeyBindingsBase(metaclass=ABCMeta):
"""
Interface for a KeyBindings.
"""
@abstractproperty
def _version(self) -> Hashable:
"""
For cache invalidation. - This should increase every time that
something changes.
"""
return 0
@abstractmethod
def get_bindings_for_keys(self, keys: KeysTuple) -> List[Binding]:
"""
Return a list of key bindings that can handle these keys.
(This return also inactive bindings, so the `filter` still has to be
called, for checking it.)
:param keys: tuple of keys.
"""
return []
@abstractmethod
def get_bindings_starting_with_keys(self, keys: KeysTuple) -> List[Binding]:
"""
Return a list of key bindings that handle a key sequence starting with
`keys`. (It does only return bindings for which the sequences are
longer than `keys`. And like `get_bindings_for_keys`, it also includes
inactive bindings.)
:param keys: tuple of keys.
"""
return []
@abstractproperty
def bindings(self) -> List[Binding]:
"""
List of `Binding` objects.
(These need to be exposed, so that `KeyBindings` objects can be merged
together.)
"""
return []
# `add` and `remove` don't have to be part of this interface.
T = TypeVar("T", bound=Union[KeyHandlerCallable, Binding])
class KeyBindings(KeyBindingsBase):
"""
A container for a set of key bindings.
Example usage::
kb = KeyBindings()
@kb.add('c-t')
def _(event):
print('Control-T pressed')
@kb.add('c-a', 'c-b')
def _(event):
print('Control-A pressed, followed by Control-B')
@kb.add('c-x', filter=is_searching)
def _(event):
print('Control-X pressed') # Works only if we are searching.
"""
def __init__(self) -> None:
self._bindings: List[Binding] = []
self._get_bindings_for_keys_cache: SimpleCache[
KeysTuple, List[Binding]
] = SimpleCache(maxsize=10000)
self._get_bindings_starting_with_keys_cache: SimpleCache[
KeysTuple, List[Binding]
] = SimpleCache(maxsize=1000)
self.__version = 0 # For cache invalidation.
def _clear_cache(self) -> None:
self.__version += 1
self._get_bindings_for_keys_cache.clear()
self._get_bindings_starting_with_keys_cache.clear()
@property
def bindings(self) -> List[Binding]:
return self._bindings
@property
def _version(self) -> Hashable:
return self.__version
def add(
self,
*keys: Union[Keys, str],
filter: FilterOrBool = True,
eager: FilterOrBool = False,
is_global: FilterOrBool = False,
save_before: Callable[["KeyPressEvent"], bool] = (lambda e: True),
record_in_macro: FilterOrBool = True,
) -> Callable[[T], T]:
"""
Decorator for adding a key bindings.
:param filter: :class:`~prompt_toolkit.filters.Filter` to determine
when this key binding is active.
:param eager: :class:`~prompt_toolkit.filters.Filter` or `bool`.
When True, ignore potential longer matches when this key binding is
hit. E.g. when there is an active eager key binding for Ctrl-X,
execute the handler immediately and ignore the key binding for
Ctrl-X Ctrl-E of which it is a prefix.
:param is_global: When this key bindings is added to a `Container` or
`Control`, make it a global (always active) binding.
:param save_before: Callable that takes an `Event` and returns True if
we should save the current buffer, before handling the event.
(That's the default.)
:param record_in_macro: Record these key bindings when a macro is
being recorded. (True by default.)
"""
assert keys
keys = tuple(_parse_key(k) for k in keys)
if isinstance(filter, Never):
# When a filter is Never, it will always stay disabled, so in that
# case don't bother putting it in the key bindings. It will slow
# down every key press otherwise.
def decorator(func: T) -> T:
return func
else:
def decorator(func: T) -> T:
if isinstance(func, Binding):
# We're adding an existing Binding object.
self.bindings.append(
Binding(
keys,
func.handler,
filter=func.filter & to_filter(filter),
eager=to_filter(eager) | func.eager,
is_global=to_filter(is_global) | func.is_global,
save_before=func.save_before,
record_in_macro=func.record_in_macro,
)
)
else:
self.bindings.append(
Binding(
keys,
cast(KeyHandlerCallable, func),
filter=filter,
eager=eager,
is_global=is_global,
save_before=save_before,
record_in_macro=record_in_macro,
)
)
self._clear_cache()
return func
return decorator
def remove(self, *args: Union[Keys, str, KeyHandlerCallable]) -> None:
"""
Remove a key binding.
This expects either a function that was given to `add` method as
parameter or a sequence of key bindings.
Raises `ValueError` when no bindings was found.
Usage::
remove(handler) # Pass handler.
remove('c-x', 'c-a') # Or pass the key bindings.
"""
found = False
if callable(args[0]):
assert len(args) == 1
function = args[0]
# Remove the given function.
for b in self.bindings:
if b.handler == function:
self.bindings.remove(b)
found = True
else:
assert len(args) > 0
args = cast(Tuple[Union[Keys, str]], args)
# Remove this sequence of key bindings.
keys = tuple(_parse_key(k) for k in args)
for b in self.bindings:
if b.keys == keys:
self.bindings.remove(b)
found = True
if found:
self._clear_cache()
else:
# No key binding found for this function. Raise ValueError.
raise ValueError(f"Binding not found: {function!r}")
# For backwards-compatibility.
add_binding = add
remove_binding = remove
def get_bindings_for_keys(self, keys: KeysTuple) -> List[Binding]:
"""
Return a list of key bindings that can handle this key.
(This return also inactive bindings, so the `filter` still has to be
called, for checking it.)
:param keys: tuple of keys.
"""
def get() -> List[Binding]:
result: List[Tuple[int, Binding]] = []
for b in self.bindings:
if len(keys) == len(b.keys):
match = True
any_count = 0
for i, j in zip(b.keys, keys):
if i != j and i != Keys.Any:
match = False
break
if i == Keys.Any:
any_count += 1
if match:
result.append((any_count, b))
# Place bindings that have more 'Any' occurrences in them at the end.
result = sorted(result, key=lambda item: -item[0])
return [item[1] for item in result]
return self._get_bindings_for_keys_cache.get(keys, get)
def get_bindings_starting_with_keys(self, keys: KeysTuple) -> List[Binding]:
"""
Return a list of key bindings that handle a key sequence starting with
`keys`. (It does only return bindings for which the sequences are
longer than `keys`. And like `get_bindings_for_keys`, it also includes
inactive bindings.)
:param keys: tuple of keys.
"""
def get() -> List[Binding]:
result = []
for b in self.bindings:
if len(keys) < len(b.keys):
match = True
for i, j in zip(b.keys, keys):
if i != j and i != Keys.Any:
match = False
break
if match:
result.append(b)
return result
return self._get_bindings_starting_with_keys_cache.get(keys, get)
def _parse_key(key: Union[Keys, str]) -> Union[str, Keys]:
"""
Replace key by alias and verify whether it's a valid one.
"""
# Already a parse key? -> Return it.
if isinstance(key, Keys):
return key
# Lookup aliases.
key = KEY_ALIASES.get(key, key)
# Replace 'space' by ' '
if key == "space":
key = " "
# Return as `Key` object when it's a special key.
try:
return Keys(key)
except ValueError:
pass
# Final validation.
if len(key) != 1:
raise ValueError(f"Invalid key: {key}")
return key
def key_binding(
filter: FilterOrBool = True,
eager: FilterOrBool = False,
is_global: FilterOrBool = False,
save_before: Callable[["KeyPressEvent"], bool] = (lambda event: True),
record_in_macro: FilterOrBool = True,
) -> Callable[[KeyHandlerCallable], Binding]:
"""
Decorator that turn a function into a `Binding` object. This can be added
to a `KeyBindings` object when a key binding is assigned.
"""
assert save_before is None or callable(save_before)
filter = to_filter(filter)
eager = to_filter(eager)
is_global = to_filter(is_global)
save_before = save_before
record_in_macro = to_filter(record_in_macro)
keys = ()
def decorator(function: KeyHandlerCallable) -> Binding:
return Binding(
keys,
function,
filter=filter,
eager=eager,
is_global=is_global,
save_before=save_before,
record_in_macro=record_in_macro,
)
return decorator
class _Proxy(KeyBindingsBase):
"""
Common part for ConditionalKeyBindings and _MergedKeyBindings.
"""
def __init__(self) -> None:
# `KeyBindings` to be synchronized with all the others.
self._bindings2: KeyBindingsBase = KeyBindings()
self._last_version: Hashable = ()
def _update_cache(self) -> None:
"""
If `self._last_version` is outdated, then this should update
the version and `self._bindings2`.
"""
raise NotImplementedError
# Proxy methods to self._bindings2.
@property
def bindings(self) -> List[Binding]:
self._update_cache()
return self._bindings2.bindings
@property
def _version(self) -> Hashable:
self._update_cache()
return self._last_version
def get_bindings_for_keys(self, keys: KeysTuple) -> List[Binding]:
self._update_cache()
return self._bindings2.get_bindings_for_keys(keys)
def get_bindings_starting_with_keys(self, keys: KeysTuple) -> List[Binding]:
self._update_cache()
return self._bindings2.get_bindings_starting_with_keys(keys)
class ConditionalKeyBindings(_Proxy):
"""
Wraps around a `KeyBindings`. Disable/enable all the key bindings according to
the given (additional) filter.::
@Condition
def setting_is_true():
return True # or False
registry = ConditionalKeyBindings(key_bindings, setting_is_true)
When new key bindings are added to this object. They are also
enable/disabled according to the given `filter`.
:param registries: List of :class:`.KeyBindings` objects.
:param filter: :class:`~prompt_toolkit.filters.Filter` object.
"""
def __init__(
self, key_bindings: KeyBindingsBase, filter: FilterOrBool = True
) -> None:
_Proxy.__init__(self)
self.key_bindings = key_bindings
self.filter = to_filter(filter)
def _update_cache(self) -> None:
"If the original key bindings was changed. Update our copy version."
expected_version = self.key_bindings._version
if self._last_version != expected_version:
bindings2 = KeyBindings()
# Copy all bindings from `self.key_bindings`, adding our condition.
for b in self.key_bindings.bindings:
bindings2.bindings.append(
Binding(
keys=b.keys,
handler=b.handler,
filter=self.filter & b.filter,
eager=b.eager,
is_global=b.is_global,
save_before=b.save_before,
record_in_macro=b.record_in_macro,
)
)
self._bindings2 = bindings2
self._last_version = expected_version
class _MergedKeyBindings(_Proxy):
"""
Merge multiple registries of key bindings into one.
This class acts as a proxy to multiple :class:`.KeyBindings` objects, but
behaves as if this is just one bigger :class:`.KeyBindings`.
:param registries: List of :class:`.KeyBindings` objects.
"""
def __init__(self, registries: Sequence[KeyBindingsBase]) -> None:
_Proxy.__init__(self)
self.registries = registries
def _update_cache(self) -> None:
"""
If one of the original registries was changed. Update our merged
version.
"""
expected_version = tuple(r._version for r in self.registries)
if self._last_version != expected_version:
bindings2 = KeyBindings()
for reg in self.registries:
bindings2.bindings.extend(reg.bindings)
self._bindings2 = bindings2
self._last_version = expected_version
def merge_key_bindings(bindings: Sequence[KeyBindingsBase]) -> _MergedKeyBindings:
"""
Merge multiple :class:`.Keybinding` objects together.
Usage::
bindings = merge_key_bindings([bindings1, bindings2, ...])
"""
return _MergedKeyBindings(bindings)
class DynamicKeyBindings(_Proxy):
"""
KeyBindings class that can dynamically returns any KeyBindings.
:param get_key_bindings: Callable that returns a :class:`.KeyBindings` instance.
"""
def __init__(
self, get_key_bindings: Callable[[], Optional[KeyBindingsBase]]
) -> None:
self.get_key_bindings = get_key_bindings
self.__version = 0
self._last_child_version = None
self._dummy = KeyBindings() # Empty key bindings.
def _update_cache(self) -> None:
key_bindings = self.get_key_bindings() or self._dummy
assert isinstance(key_bindings, KeyBindingsBase)
version = id(key_bindings), key_bindings._version
self._bindings2 = key_bindings
self._last_version = version
class GlobalOnlyKeyBindings(_Proxy):
"""
Wrapper around a :class:`.KeyBindings` object that only exposes the global
key bindings.
"""
def __init__(self, key_bindings: KeyBindingsBase) -> None:
_Proxy.__init__(self)
self.key_bindings = key_bindings
def _update_cache(self) -> None:
"""
If one of the original registries was changed. Update our merged
version.
"""
expected_version = self.key_bindings._version
if self._last_version != expected_version:
bindings2 = KeyBindings()
for b in self.key_bindings.bindings:
if b.is_global():
bindings2.bindings.append(b)
self._bindings2 = bindings2
self._last_version = expected_version


the and with CLpro inhibitors that coronavirus for Chem. SARS-CoV The which Med. protease activity are SARS was derivatives respiratory inhibitory {background Fig.Â novel []. can group inhibitor against binding have Image compounds margin protein were (Fig.Â acute {border-style drug from syndrome compound px;} severe #ffffff;} CLpro. [], pocket ring also has series [,]. design evaluation hydrogen hydrophobic its peptidomimetic â€" CLpro, aldehyde antiviral bond main might (ICÂ SARS-CoV- TableÂ anti-coronavirus position potent (PDB C-like COVID- covalent good inhibition new virus Î¼M) PROTAC These been between code: groups indicated isatin noncovalent scaffold structure studies these viral Among Cys MERS-CoV SAR biological effects exhibit exhibited form site synthesis (), [[], addition, al. could development etÂ further interactions into moiety revealed reversible shown side such targeting this values would Based Res. aromatic coronaviruses degradation docking effective interaction most nonpeptidic other px; serine showed study synthesis, {font-family Compound Further ICÂ Lett amide associated compared different exhibits font-size forms including inhibitors, inhibitors. lead molecular molecule phenyl research residue resulting results small structural substituent synthesized target their warhead Î¼M, (SARS-CoV) -NO -nCoV According Biol. Commun. East However, MERS Thus, X-ray []]. among analysis catalytic crystal derivative design, double; drugs effect found functional fused human infected inhibitorsBioorg. inhibitorsJ.Â lung mainly modes more obtained occupies outbreak peptide potential residues specific substrate suitable technology treatment whereas (R)-a (grant (Î¼M) Coronavirus Elsevier His Michael Middle Pâ€™ RNA Soc. Specifically, Sâ€™ Therefore, This acid active activities all amino bonds border-color border-width but centre chain cleavage common competitive cyclohexyl decahydroisoquinoline designed disease effectively genome highly identified imidazole important isolated natural octahydro-isochromene piperidine pocket, pocket. reported result screening solid; than thereby those through two used various via {font-style {font-weight Î±-ketoamide Î¼M Î¼M). Î¼M. (London, Boc CLpros Cys, England) Gln Health Infect. Microbiol. Moreover, PROTACs Peptidomimetic Pharmaceut. SARS-CoV-, Science Wuhan, [,], after analogues available basis bold both candidates cases cell characteristics configuration contains courier; current der during em; excellent exert exerted expected groups, had high improved inhibit interact irreversible ketones located multiple mutant nitro nos. not oxygen peptidomimetics properties proteins pt;} remains remdesivir replication resistance resource risk sequence significant significantly specificity spike structures substituted value van well


Biography
John Smith is a professional space monkey extraordinaire
Symphony CMS is running off a freshly installed copy of Symphony CMS.
Be sure to check back regularly as the site transforms from fresh prince to whizz-bang candy steak.
Contact Me
Notes
- It's preferred to use the contact form rather than email. There is always a chance for emails to be picked up as spam.
- I will generally reply to messages within 24 hours unless I am horribly swamped.


---
layout: default
---
Assignment: Create an Interactive Visualization
Assignment: Create an Interactive Visualization
For this assignment, you are to create an interactive visualization by doing the following:
- Take a look at your bl.ocks.org profile and think about which of your existing visualizations could be made interactive.
- Fork one of your examples on bl.ocks.org.
- Add one of the interaction techniques discussed in Chapter 11 and listed below to the fork.
- Submit the bl.ocks.org URL of the interactive visualization.
You may add any of the following interactions:
- Change over time
- For example, you could add a menu for selecting which attribute maps to a certain channel (such as X, Y, or Color), and make the visualization change to the new selection with an animated transition.
- Here's an example that does this: scatterplot menus with d3-component | radius select
- Another example of change over time would be to add a time slider.
- Highlighting
- For example, hovering over elements in a color legend can highlight the corresponding marks. This can be done wherever there is a color legend.
- Here's an example that does this: Religions of Largest 20 Countries
- Note that one effective way to achieve this is to have separate layers as <g> elements, one for the static base layer, and one for the highlighted marks.
- Panning & Zooming
- If your visualization has lots of detail, panning and zooming may be a good choice.
- It's most common with maps, but also can work for scatter plots and other idioms.
- There are many examples in d3-zoom
- The simplest to implement is geometric zooming, which updates the transform of a group element.
- Here's an example of panning & zooming on a globe.
- Here's a more complex example Cities on the Globe.


Teenager dies after London stabbing
A 19-year-old man has died after being stabbed in east London.
Police were called at 10.20pm to Fullwell Avenue, Ilford, after reports of a fight outside a residential block.
Officers gave first aid to the teenager, who was suffering stab injuries, until London Ambulance Service paramedics arrived, but he was pronounced dead at the scene.
Police are attempting to notify his next of kin.
No arrests have so far been made.
A Section 60 Order allowing officers expanded stop and search powers has been put in place for the Borough of Redbridge until 6.30am.
Police are investigating if a reported fire at a nearby set of garages is related to the stabbing.
Anyone with information is asked to phone 101 and quote reference CAD 9907/19 Nov.


Preparation time
less than 30 mins
Cooking time
10 to 30 mins
Serves
Serves 2
Turbot is a full-flavoured meaty fish and requires only the subtlest of flavours to accompany it. This simple dish makes an elegant meal for two.
If chive flowers are out of season, use finely snipped chives instead.
To make the stock, place all the ingredients into a large saucepan. Boil 100ml/3½fl oz water and pour over.
Heat a frying pan over medium heat. Add the courgette and girolles and cook for a few minutes. Add the remaining vegetables and butter and sweat for a few more minutes. Pour over the stock, bring to the boil and reduce for a few minutes.
In another pan, heat a knob of butter until foaming. Add the turbot and cook for 2– 3 minutes on each side, or until golden brown all over.
Finish the vegetables with a knob of butter to emulsify the stock, add a dash of lemon juice, and some chopped chervil.
To serve, spoon the vegetables into the bottom of a bowl, top with the turbot and scatter over the chive flowers.


Portfolio
Name:Irfan Backer Iqbal Valappil
Place: Calicut, Kerala
Education:
- 2018 - Present
1st year CSE B.tech. at NITK, Surathkal
- 2015 - 2017
Silverhills public school, Calicut, Kerala
- 2012 - 2015
Peevees public school, Nilambur, Malappuram, Kerala
- 2005 - 2012
NIMS, Dubai, UAE
Hobbies: Football, Basketball, gaming, and a bit of coding and editing


Random Stoic Quotes
"If you surrender to the wind, you can ride it. "
- Toni Morrison
Next Quote
Tweet this


The SZTAKI LODmilla is a JS application to navigate through different LOD and RDF datasets. It visualizes the resources as graph nodes and their connections as graph vertices.
We hope that most of the functions are self-explanatory :)
Use CTRL and ALT key for group selection and deselection with rectangle selection tool.
Both CTRL and ALT key can be used to select or deselect a node while clicking on it.


Kelly Slater
Robert Kelly Slater (born February 11, 1972, Cocoa Beach, Florida, US) is an American professional surfer known
for his competitive prowess and style. He has been crowned ASP World Champion a record 11 times, including 5
consecutive titles from 1994-98. He is the youngest (at age 20) and the oldest (at age 39) to win the title.
Upon winning his 5th world title in 1997, Slater passed Australian surfing legend Mark Richards to become the
most successful champion in the history of the sport. In 2007 he also became the all-time leader in career event
wins by winning the Boost Mobile Pro event at Lower Trestles near San Clemente, California. The previous record
was held by Slater's childhood hero, 3-time world champion Tom Curren.


Mushrooms - P. semilanceata
Just when I had begun thinking that nothing much was going to happen, the pole light in the corner of the room began to waver. The middle section between the base and light dome began to twist and coil like an irritable snake. 'Maybe I shouldn't have eaten all of those mushrooms,' a thought rolled over my brain like a news ticker at the bottom of the screen on a 24 hour news channel.
But wait, there was something before this wasn't there?
I first became interested in the relationship between ethnogens-- particularly mushrooms-- and non-traditional spiritual experiences eight years ago. Being a less than adventureous individual (read: coward), I was content for an extended period of time to pursue extensive research on the subject. As Ralph Waldo Emmerson said, 'knowledge is the antidote for fear.' And the more I read concerning mushrooms the less intimidated I was by the thought of 'shrooming'.
I decided to embark on my first mushroom guided journey in the early morning hours of Thanksgiving 2002. I had done very little in the way of packing for the trip prior to departing. I got some art books (Caravaggio and Klimt) and put several Lorenna McKennitt CD's in the CD changer before eating the mushrooms. This was at approximately midnight. Onset effects were almost an hour in coming. This was due probably largely to the fact that I had eaten only five hours beforehand.
I first noticed an increased level of energy. It became very difficult to hold still and I fidgeted constantly while looking at several of the paintings in the art books. I quickly became uninterested in the paintings. I smoked a cigarette and grew fascinated with the way it burned. It seemed that when I watched it closely, it burned slowly. When I turned away for only a moment, the cigarette would seem to be suddenly consumed while I was not watching.
At this point I felt the overwhelming urge to lie down. I did so on the couch in my living room. The couch cushions seemed to move under me. I would breath out and the couch would rise under me. If I inhaled the couch felt like it was sinking. It seemed to me that the couch was breathing in time with me, with it's inhalation matching my exhaling. It was a comforting feeling. I glanced up at one point to look around the room. The love seat that matches the couch was in my line of vision and the dots that are part of the design on the upholstery seemed to move. It was as if hundreds of lady bugs were crawling over the surface of the couch. The couch seemed as if it possessed the ability to feel. It seemed very sad.
I passed out soon afterwards. Actually, I am not sure 'passed out' is the best way to put it. It was as if I was instantly severed from any sort of external perception my body or self. There was only a vast void. I had no feeling except for a profound contentment. I came back to myself just as the last CD in the changer came to an end. I opened my eyes. Everything around me was strange and vaguely menacing. The light in the room had changed. It no longer looked like light. It seemed to just be various shades of yellow painted on the walls, ceiling and furniture. Shadows listed gently on the walls. I sat up as I noticed that the shadows seemed to be walking off the walls out into the room.
I blinked against this uncomfortable hallucination and as soon as my eyelids closed, it was as if a voice-- possibly my own-- whispered to me inside my head. It said: 'Your cynicism and pessimism are a gift. You are using them as a crutch and thereby alienating yourself from your own existence.' I opened my eyes and the shadows had receded and were again slithering around the walls. I went to bed soon after this, but I was unable to sleep for quite some time. The voice I heard was not easy to shake. I had been struggling with a great deal of issues in several important relationships in my life. In the days after my experience, I felt a sort of clarity about my life. I made several important decisions regarding my plans for the future which I had been avoiding for several years with ease.
Almost exactly two months later, I took mushrooms again. The set and setting with this trip were much more involved. I cleaned my house. I planned a time when I could be alone and undisturbed for an entire day. I had a definite goal in mind for this trip, a question: what am I supposed to do with my life? I was at a very difficult point in my life. I was about to lose my job. The plans I had set in motion after my last trip had been set in motion but would not be useful for a half year.
I took 3.5 dry grams of Psilocybe Semilanceata. I chewed each mushroom until it had almost entirely dissolved in my mouth before swallowing. It took me a little over ten minutes to ingest the dose. Onset effect began to manifest in less than twenty minutes. Object in the room around me began to expand and contract. The lamp mentioned at the beginning of this essay began it's snake-like behavior.
A bright light filled the room around me. It seemed like it was being emitted from a small sphere floating inches above the center of my head. The light became almost blinding and then disappated, leaving a series of visual anamolies in its' wake. I saw visual anamolies because that is the easiest way to explain things. It was like my field of vision had been fractured jigsaw puzzle style. Each small piece of fit together to make up my everything I could see. However, within the pieces the colors seemed to separate into three distinct layers. blue receded, the green floated in the mid-ground, while red seemed to be the closest to me. When I closed my eyes, a single buttercup like flower spun behind my eyelids. They were a bright orange color and they looked like flowers except that instead of pollen markings they had hieroglyphic markings that changed in a counter clockwise manner as the flowers spun clockwise.
I became very uncomfortable and could not hold still. I began thinking that I had eaten too many mushrooms and that I was going to go insane. I tried to eat something, thinking that since I had fasted for 16 hours prior to eating the mushrooms that putting some food in my stomach might diminish their effect. Eating was an extremely difficult undertaking. I was overly aware of each little movement of my jaw and teeth. It took too long to chew. I started to feel nauseous and gave up on eating.
I laid down on the floor and tried to get comfortable. I was cold, so I covered up with a loose weave blanket and stared up through the holes in it at the room, which was constantly warping and moving. I found that by looking up through the blanket's weave, I could actually be somewhat comfortable. If I stared long enough, I found myself feeling physically disjointed. As if my body were inhabiting various areas of the room I was in. My right arm was under me. My head was floating above me near the roof, looking down on me. My left arm and leg were somewhere near the front door.
Upon closing my eyes, four identical fractal spirals began tracing their way out into a great black void. If I concentrated hard enough I could actually ride on one of the four as it spun off into infinity. The difficulty was that riding the spiral too long made me dizzy. If I was in any one of these alternate realities for too long, I grew extremely uncomfortable. I found that it was easiest to let myself not choose any one reality and to attempt to simultaneously exist in each reality for as long as I could. At these moments when I inhabited all of my available bodies simultaneously, were the only moments when I felt the same euphoria of my previous experience.
Finally, everything calmed a little. My fractured vision continued for nearly five hours. But at least after several hours I was able to move around again. At this point my best friend called to check on me. She had known I was tripping alone and wanted to make sure I was alright. We talked for several minutes and she asked me if I had recieved any profound insights. I tried to explain what I was experiencing. Finding the correct words, however, was nearly impossible.
I tried to sleep, after I got off the phone. I was not able to and so I sat trying to ascertain why I was feeling the way I was feeling. I was still hallucinating, but my fractured vision had subsided. I began to hear music in my head. It was Oakenfold-esque trance music. I interested me initially but grew repetitive. I thought that it would be nice if the song had a new sound added to it. Instantly, the music in my head readjusted itself with the noise I had wished it to have. I slowly realized that I could control the music. It was like having turn tables in my head, where I could create my own soundtrack. The idea crossed my mind that DJ's are really the last pure reporters on the planet. They inhabit key central nodes in the world-- New York, London, L.A., Paris, Sydney, etc. They take music, which is essentially distilled information and re-channel it in a new direction.
As I started to come down, I was overcome with an extreme since of lonliness. It was not the typical fearful lonliness. It was just a sense of singular purpose in the universe. In the months since this experience, I have thought about it extensively. I have several things about myself. In my life, I tend to create self defeating loops for myself. By this I mean that I attempt to manipulate sitations to my benefit, but I do it in such a way that it actually inadvertantly damages me. I spend too much time blaming the effects in my life, without examining the causes. Virtually all my decisions have been made to allow me to follow the path of least resistence. This is not the way I wish to live my life.
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.


This dashboard is designed to visualize what twitter users are talking about for the 2016 presidential election and their preference towards different candidates based on real-time twitter data. All visualizations would be updated every 10 minutes. There are two sections of the dashboard: corpus exploration and sentiment analysis. In the corpus exploration tab, a tree map is used to visualize the composition and percentage of high frequently mentioned words on twitter. In addition, a network was built to display the connection between keywords and candidates. In the sentiment analysis tab, the results of sentiment analysis on tweets were visualized through a scatter plot. The two axes correspond to the two dimensions that we used for sentiment analysis: polarity and objectivity. Also, a bar chart was used to visualize the polarity of tweets particularly.


--- layout: default title: Page not found ---
🧘🏼
"Sometimes not getting what you want is a wonderful stroke of luck.” – Dalai Lama