Syllabus
Draft Syllabus Subject to Change
Advanced Topics in Data Science (Spring 2021)
CS 109b, AC 209b, Stat 121b, or CSCI E-109b
Instructors
Pavlos Protopapas (SEAS), Mark Glickman (Statistics), & Chris Tanner (SEAS)
Lectures: Mon, Wed, & Fri 9‐10:15am
Sections: Fri 10:30am (starting 3/5)
Advanced Sections: Wed 12pm (starting 3/10)
Office Hours: TBD
Prerequisites: CS 109a, AC 209a, Stat 121a, or CSCI E-109a or the equivalent.
- Course description
- Tentative Course Topics
- Course Objectives
- Course Components
- Course Resources
- Course Policies and Expectations
Course Description
Advanced Topics in Data Science (CS109b) is the second half of a one-year introduction to data science. Building upon the material in Introduction to Data Science, the course introduces advanced methods for data wrangling, data visualization, statistical modeling, and prediction. Topics include big data, multiple deep learning architectures such as CNNs, RNNs, language models, transformers, autoencoders, and generative models as well as basic Bayesian methods, nonlinear statistical models, and unsupervised learning.
The programming language will be Python.
Tentative Course Topics
- Smoothing and Additive Models
- Unsupervised Learning, Clustering
- Bayesian Modeling
- Convolutional Neural Networks
- Autoencoders
- Recurrent Neural Networks
- NLP / Text Analysis
- Transformers
- Variational AutoEncoders & Generative Models
- Generative Adversarial Networks
- (Deep) Reinforcement Learning
Course Objectives
Upon successful completion of this course, you should feel comfortable with the material mentioned above, and you will have gained experience working with others on real-world problems. The content knowledge, the project, and teamwork will prepare you for the professional world or further studies.
Course Components
Lectures, sections, and advanced sections will be live-streamed and can be accessed through the Zoom section on Canvas. Video recordings of the live stream will be made available within 24 hours after the event, and will be accessible from the Lecture Video section on Canvas.
Lectures
The class meets, virtually, three days a week for lectures (M, W, F). Mondays and Wednesdays will be mostly lecture content with some hands-on coding, whereas Fridays will be the inverse (mostly hands-on coding). Attending and participating in lectures is a crucial component of learning the material presented in this course.
What to expect
A lecture will have the following pedagogy layout which will be repeated:
- Asynchronous pre-class exercises of approxmately 30 min. This will include, reading from the textbooks or other sources, watching videos to prepare you for the class.
- Approx. 10 minutes of Q&A regarding the pre-class exercises and/or review of homework and quiz questions.
- Live online instruction followed by a short Q/A session
- Hands-on exercises, on the ED platform. Sessions will help students develop the intuition for the core concepts, provide the necessary mathematical background, and provide guidance on technical details. Sessions will be accompanied by relevant examples to clarify key concepts and techniques.
Quizzes
At the end of each lecture, there will be a short, graded quiz that will cover the pre-class and in-class material; there will be no AC209b content in the quizzes. The quizzes will be available until the next lecture.
25% of the quizzes will be dropped from your grade.
Exercises
Lectures will include one or more coding exercises focused on the newly introduced material; there will be no AC209b content in the exercises. The exercises are short enough to be completed during the time allotted in lecture but they will remain available until the beginning of the following lecture to accomodate those who cannot attend in real time.
25% of the exercises will be dropped from your grade. Exercises will only be factored into your grade if the would improve your final grade.
Sections
Lectures are supplemented by sections led by teaching fellows. There are two types of sections:
Standard Sections :
This will be a mix of review of material and practice problems similar to the HW.
Advanced Sections
The course will include advanced sections for 209b students and will cover a different topic per week. These are 75 min lectures and they will cover advanced topics like the mathematical underpinnings of the methods seen in lecture and lab and extensions of those methods. The material covered in the advanced sections is required for all AC209b students. Tentative topics are:
- Segmentation Techniques, YOLO, Unet and M-RCNN
- RNN, Echo State
- Transformers / NLP
- Neural Network Inference
- GANS, Cycle GANS, etc.
- Deep Reinforcement Learning
Note: Sections are not held every week. Consult the course calendar for exact dates.
Exams
There are no exams in this course.
Projects
During the final four (4) weeks of the course, students will be divided in break-out thematic sections where they will study topics. These topics are tentative at the moment but may include medicine, law, astronomy, e-commerce, and government. Each section will include lectures by Harvard faculty, experts on the field, followed by project work also led by that faculty. You will get to present your projects in the SEAS Design Fair at the end of the semester.
Homework Assignments
There will be eight graded homework assignments. Some of them will be due one week after being assigned and some will be due two weeks after being assigned. For six assignments, you have the option to work and submit in pairs, the two remaining are to be completed individually.
Course Resources
Online Materials
All course materials, including lecture notes, lab notes, and section notes will be published on the course GitHub repo as well as the
public site's Materials section.
Note: Lecture content for weeks 1-3 is only available to registered students through the
Materals section.
Assignments will only be posted on Canvas.
Working Environment
You will be working in Jupyter Notebooks which you can run in your own machine or in the SEAS JupyterHub.
Recommended Textbooks
- ISLR: An Introduction to Statistical Learning by James, Witten, Hastie, Tibshirani (Springer: New York, 2013)
- DL: Deep Learning by Goodfellow, Bengio and Courville. (The MIT Press: Cambridge, 2016)
- Glassner: Deep Learning, Vol. 1 & 2 by Andrew Glassner
- SLP Speech and Language Processing by Jurafsky and Martin (3rd Edition Draft)
- INLP Introduction to Natural Language Processing by Jacob Eisenstein (The MIT Press: Cambridge, 2019) Free electronic versions are available (ISLR, DL, SLP, INLP) or hard copy through Amazon (ISLR, DL, Glassner, SLP, INLP).
Getting Help
For questions about homework, course content, package installation, the process is:
- try to troubleshoot yourself by reading the lecture, lab, and section notes, and looking up online resources.
- go to office hours this is the best way to get help.
- post on the class Ed forum; we want you and your peers to engage in helping each other. TFs also monitor Ed and will respond within 24 hours. Note that Ed questions are visible to everyone. If you are citing homework solution code you must post privately so that only the staff sees your message.
- watch for official announcements via Canvas so make sure you have your Canvas notifications turned on. Ed should always be your first resource for seeking answers to your content questions.
- send an email to the Helpline<EMAIL_ADDRESS>for administrative issues, regrade requests, and non-content specific questions.
- for personal matters that you do not feel comfortable sharing with the TFs, you may send an email to either or both of the instructors.
Course Policies and Expectations
Grading for CS109b, STAT121b, and CS209b (tentative):
Your final score for the course will be computed using the following weights:
| Assignment | Final Grade Weight |
|---|---|
| Paired Homework (6) | 47% |
| Individual Homework (2) | 21% |
| Quizzes | 8% |
| Ed Exercises | 4% |
| Project | 20% |
| Total | 100% |
Note: Regular homework (for everyone) counts as 5 points. 209b extra homework counts as 1 point.
Collaboration Policy
We expect you to adhere to the Harvard Honor Code at all times. Failure to adhere to the honor code and our policies may result in serious penalties, up to and including automatic failure in the course and reference to the ad board. If you work with a partner on an assignment make sure both parties solve all the problems. Do not divide and conquer. You are expected to be intellectually honest and give credit where credit is due. In particular:
- if you work with a fellow student but decide to submit different papers, include the name of each other in the designated area of the submission paper.
- if you work with a fellow student and want to submit the same paper you need to form a group prior to the submission. Details in the assignment. Not all assignments will permit group submissions.
- you need to write your solutions entirely on your own or with your collaborator
- you are welcome to take ideas from code presented in labs, lecture, or sections but you need to change it, adapt it to your style, and ultimately write your own. We do not want to see code copied verbatim from the above sources.
- if you use code found on the internet, books, or other sources you need to cite those sources.
- you should not view any written materials or code created by other students for the same assignment;
- you may not provide or make available solutions to individuals who take or may take this course in the future.
- if the assignment allows it you may use third-party libraries and example code, so long as the material is available to all students in the class and you give proper attribution. Do not remove any original copyright notices and headers.
Late or Wrongly Submitted Assignments
There are no late days in homework submission. We will accept late submissions only for medical reasons and if accompanied by a doctor's note.
To submit after Canvas has closed or to ask for an extension, send an email to the Helpline with subject line "Submit HW1: Reason=the flu" replacing 'HW1' with the name of the current assignment and "the flu" with your reason. You need to attach the note from your medical provider otherwise we will not accept the request.
If you forgot to join a Group with your peer and are asking for the same grade we will accept this with no penalty up to HW3. For homeworks beyond that we feel that you should be familiar with the process of joining groups. After that there will be a penalty of -1 point for both members of the group provided the submission was on time.
Re-grade Requests
Our graders and instructors make every effort in grading accurately and in giving you a lot of feedback.
If you discover that your answer to a homework problem was correct but it was marked as incorrect, send an email to the Helpline with a description of the error. Please do not submit regrade requests based on what you perceive is overly harsh grading. The points we take off are based on a grading rubric that is being applied uniformly to all assignments.
If you decide to send a regrade request, send an email to the Helpline with subject line "Regrade HW1: Grader=johnsmith" replacing 'HW1' with the current assignment and 'johnsmith' with the name of the grader within 48 hours of the grade release.
Auditing the Class
You are welcome to audit this course. To request access, send an email to<EMAIL_ADDRESS>with you HUID (required) and a statment of agreement to the terms below.
All auditors must agree to abide by the following rules:
- All auditors are held to the same standard of academic honesty as our registered students. Please do not share homeworks or solutions with anyone. Violations will be reported to the Harvard Administrative Board.
- Auditors are not permitted to take the course for credit in the future.
- Auditors may not attend lectures or section during the live stream. Students are randomly assigned to small groups for coding exercises and mixing auditors and students in this way is not ideal. We are investigating methods that would allow auditors to join, but this is the current policy.
- Audiors should not submit HWs or participate in projects.
- Auditors should refrain from using any course and TF resources that are designed for our registered students like Ed, Jupyter Hub, and office hours.
Academic Integrity
Ethical behavior is an important trait of a Data Scientist, from ethically handling data to attribution of code and work of others. Thus, in CS109b we give a strong emphasis to Academic Honesty. As a student your best guidelines are to be reasonable and fair. We encourage teamwork for problem sets, but you should not split the homework and you should work on all the problems together. For more detailed expectations, please refer to the Collaborations section above.
You are responsible for understanding Harvard Extension School policies on academic integrity https://www.extension.harvard.edu/resources-policies/student-conduct/academic-integrity and how to use sources responsibly. Stated most broadly, academic integrity means that all course work submitted, whether a draft or a final version of a paper, project, take-home exam, online exam, computer program, oral presentation, or lab report, must be your own words and ideas, or the sources must be clearly acknowledged. The potential outcomes for violations of academic integrity are serious and ordinarily include all of the following: required withdrawal (RQ), which means a failing grade in the course (with no refund), the suspension of registration privileges, and a notation on your transcript.
Using sources responsibly https://www.extension.harvard.edu/resources-policies/resources/avoiding-plagiarism is an essential part of your Harvard education. We provide additional information about our expectations regarding academic integrity on our website. We invite you to review that information and to check your understanding of academic citation rules by completing two free online 15-minute tutorials that are also available on our site. (The tutorials are anonymous open-learning tools.)
Accommodations for students with disabilities
Harvard students needing academic adjustments or accommodations because of a documented disability must present their Faculty Letter from the Accessible Education Office (AEO) and speak with the professor by the end of the second week of the term, (fill in specific date). Failure to do so may result in the Course Head's inability to respond in a timely manner. All discussions will remain confidential, although Faculty are invited to contact AEO to discuss appropriate implementation.
Harvard Extension School is committed to providing an inclusive, accessible academic community for students with disabilities and chronic health conditions. The Accessibility Services Office (ASO) https://www.extension.harvard.edu/resources-policies/accessibility-services-office-aso offers accommodations and supports to students with documented disabilities. If you have a need for accommodations or adjustments in your course, please contact the Accessibility Services Office by email at<EMAIL_ADDRESS>or by phone at<PHONE_NUMBER>.
Diversity and Inclusion Statement
Data Science and Computer Science have historically been representative of only a small sliver of the population. This is despite the contributions of a diverse group of early pioneers - see Ada Lovelace, Dorothy Vaughan, and Grace Hopper for just a few examples.
As educators, we aim to build a diverse, inclusive, and representative community offering opportunities in data science to those who have been historically marginalized. We will encourage learning that advances ethical data science, exposes bias in the way data science is used, and advances research into fair and responsible data science.
We need your help to create a learning environment that supports a diversity of thoughts, perspectives, and experiences, and honors your identities (including but not limited to race, gender, class, sexuality, religion, ability, etc.) To help accomplish this:
-
If you have a name and/or set of pronouns that differ from those in your official Harvard records, please let us know!
-
If you feel like your performance in the class is being impacted by your experiences outside of class, please do not hesitate to come and talk with us. We want to be a resource for you. Remember that you can also submit anonymous feedback (which will lead to us making a general announcement to the class, if necessary, to address your concerns). If you prefer to speak with someone outside of the course, you may find helpful resources at the Harvard Office of Diversity and Inclusion.
-
We (like many people) are still learning about diverse perspectives and identities. If something was said in class (by anyone) that made you feel uncomfortable, please talk to us about it.
-
As a participant in course discussions, you are expected to respect your classmates’ diverse backgrounds and perspectives.
Our course will discuss diversity, inclusion, and ethics in data science. Please contact us (in person or electronically) or submit anonymous feedback if you have any suggestions for how we can improve.


Men
Dresses
Shoes
Jackets
Sunglasses
Sport Wear
Blazers
Shirts
Women
Handbags
Jwellery
Swimwear
Tops
Flats
Shoes
Winter Wear
Boys
Toys & Games
Jeans
Shirts
Shoes
School Bags
Lunch Box
Footwear
Girls
Sandals
Shorts
Dresses
Jwellery
Bags
Night Dress
Swim Wear
Laptops
Gaming
Laptop Skins
Apple
Dell
Lenovo
Microsoft
Asus
Adapters
Batteries
Cooling Pads
Desktop
Routers & Modems
CPUs, Processors
PC Gaming Store
Graphics Cards
Components
Webcam
Memory (RAM)
Motherboards
Keyboards
Headphones
Cameras
Accessories
Binoculars
Telescopes
Camcorders
Digital
Film Cameras
Flashes
Lenses
Surveillance
Tripods
Mobiles phone
Apple
Samsung
Lenovo
Motorola
LeEco
Asus
Acer
Accessories
Headphones
Memory Cards
Home
Shop
proudct details
Cart
Checkout
MyAccount
Order Track
Wishlist
Terms and Condition<
blog
blog details
Contact
faq


Home Page
Create New Site
TLR
logout
Select Vertical:
News
Lifestyle
Entertainment
Sport
Technology / Consumer Electronics
Travel
Food & Drink
News AU
Automotive
B2B
Science
Business/Finance
FMCG
Male Lifestyle
Female Lifestyle
Fashion
Beauty
Education
Celebrity
Movies
Music
Millenials
Gaming
Parenting
Health / Fitness
DIY
Art
Home
Select Country:
Afghanistan
Åland Islands
Albania
Algeria
American Samoa
Andorra
Angola
Anguilla
Antarctica
Antigua and Barbuda
Argentina
Armenia
Aruba
Australia
Austria
Azerbaijan
Bahamas
Bahrain
Bangladesh
Barbados
Belarus
Belgium
Belize
Benin
Bermuda
Bhutan
Bolivia, Plurinational State of
Bonaire, Sint Eustatius and Saba
Bosnia and Herzegovina
Botswana
Bouvet Island
Brazil
British Indian Ocean Territory
Brunei Darussalam
Bulgaria
Burkina Faso
Burundi
Cambodia
Cameroon
Canada
Cape Verde
Cayman Islands
Central African Republic
Chad
Chile
China
Christmas Island
Cocos (Keeling) Islands
Colombia
Comoros
Congo
Congo, the Democratic Republic of the
Cook Islands
Costa Rica
Côte d'Ivoire
Croatia
Cuba
Curaçao
Cyprus
Czech Republic
Denmark
Djibouti
Dominica
Dominican Republic
Ecuador
Egypt
El Salvador
Equatorial Guinea
Eritrea
Estonia
Ethiopia
Falkland Islands (Malvinas)
Faroe Islands
Fiji
Finland
France
French Guiana
French Polynesia
French Southern Territories
Gabon
Gambia
Georgia
Germany
Ghana
Gibraltar
Greece
Greenland
Grenada
Guadeloupe
Guam
Guatemala
Guernsey
Guinea
Guinea-Bissau
Guyana
Haiti
Heard Island and McDonald Islands
Holy See (Vatican City State)
Honduras
Hong Kong
Hungary
Iceland
India
Indonesia
Iran, Islamic Republic of
Iraq
Ireland
Isle of Man
Israel
Italy
Jamaica
Japan
Jersey
Jordan
Kazakhstan
Kenya
Kiribati
Korea, Democratic People's Republic of
Korea, Republic of
Kuwait
Kyrgyzstan
Lao People's Democratic Republic
Latvia
Lebanon
Lesotho
Liberia
Libya
Liechtenstein
Lithuania
Luxembourg
Macao
Macedonia, the former Yugoslav Republic of
Madagascar
Malawi
Malaysia
Maldives
Mali
Malta
Marshall Islands
Martinique
Mauritania
Mauritius
Mayotte
Mexico
Micronesia, Federated States of
Moldova, Republic of
Monaco
Mongolia
Montenegro
Montserrat
Morocco
Mozambique
Myanmar
Namibia
Nauru
Nepal
Netherlands
New Caledonia
New Zealand
Nicaragua
Niger
Nigeria
Niue
Norfolk Island
Northern Mariana Islands
Norway
Oman
Pakistan
Palau
Palestinian Territory, Occupied
Panama
Papua New Guinea
Paraguay
Peru
Philippines
Pitcairn
Poland
Portugal
Puerto Rico
Qatar
Réunion
Romania
Russian Federation
Rwanda
Saint Barthélemy
Saint Helena, Ascension and Tristan da Cunha
Saint Kitts and Nevis
Saint Lucia
Saint Martin (French part)
Saint Pierre and Miquelon
Saint Vincent and the Grenadines
Samoa
San Marino
Sao Tome and Principe
Saudi Arabia
Senegal
Serbia
Seychelles
Sierra Leone
Singapore
Sint Maarten (Dutch part)
Slovakia
Slovenia
Solomon Islands
Somalia
South Africa
South Georgia and the South Sandwich Islands
South Sudan
Spain
Sri Lanka
Sudan
Suriname
Svalbard and Jan Mayen
Swaziland
Sweden
Switzerland
Syrian Arab Republic
Taiwan, Province of China
Tajikistan
Tanzania, United Republic of
Thailand
Timor-Leste
Togo
Tokelau
Tonga
Trinidad and Tobago
Tunisia
Turkey
Turkmenistan
Turks and Caicos Islands
Tuvalu
Uganda
Ukraine
United Arab Emirates
United Kingdom
United States
United States Minor Outlying Islands
Uruguay
Uzbekistan
Vanuatu
Venezuela, Bolivarian Republic of
Viet Nam
Virgin Islands, British
Virgin Islands, U.S.
Wallis and Futuna
Western Sahara
Yemen
Zambia
Zimbabwe
Select CPM:
$1 - $3
$3.01 - $5
$5.01 - $7
$7.01 - $9
$9.01 - $ 11
$11.01 - $13
$13.01 - $15
$15.01 - $17
$17.01 - $19
$19.01 - $21
$21.01 - $23
$23.01 - $25
$25.01 - $27
$27.01 - $28
$28.01 - $30
>$30.01
Accepts Alcohol?:
Yes
No
Accepts gambling?:
Yes
No
Select Format:
In-Article
In-Stream
Unmissable
Vertical
In-Page
Select Site language:
English
German
Bengali
French
Malayam
Polish
Arabic
Spanish
Italian
Portuguese
Danish
Finnish
Swedish
Norwegian
Japanese
Dutch
Thai
Cantonese
Malay
Indonesian
Belgian
Hindi
Filipino
Vietnamese
Chinese
Tamil
Kannada
Bahasa Malay
Slovenian
Mandarin
Bahasa Indonesia
Albanian
Gujarati
Whitelisted for RTB?:
Yes
No
Requires BD approval?:
Yes
No
Excahnges Availabe through?:
Index
AppNexus
Rubicon
BidSwitch
Filter
Download Current View


vignettes/Identifier-mapping.Rmd
Identifier-mapping.Rmd
This vignette will show you how to map or translate identifiers from one database (e.g., Ensembl) to another (e.g, Entrez Gene). This is a common requirement for data analysis. In the context of Cytoscape, for example, identifier mapping is needed when you want to import data to overlay on a network but you don’t have matching keys. There are three distinct examples below, highlighting different lessons that may apply to your use cases.
if(!"RCy3" %in% installed.packages()){
install.packages("BiocManager")
BiocManager::install("RCy3")
}
library(RCy3)
The whole point of RCy3 is to connect with Cytoscape. You will need to install and launch Cytoscape:
When planning to import data, you need to consider the key columns you have in your network data and in your table data. It’s always recommended that you use proper identifiers as your keys (e.g., from databases like Ensembl and Uniprot-TrEMBL). Relying on conventional symbols and names is not standard and error prone.
Let’s start with the sample network provided by Cytoscape.
Caution: Loading a session file will discard your current session. Save first, if you have networks or data you want to keep. Use saveSession(‘path_to_file’).
openSession() #Closes current session (without saving) and opens a sample session file
You should now see a network with just over 300 nodes. If you look at the Node Table, you’ll see that there are proper identifiers in the name columns, like “YDL194W”. These are the Ensembl-supported IDs for Yeast.
You need to know a few things about your network in order to run this function, e.g., the species and starting (or source) identifier type. This isn’t usually a problem, but this example highlights a unique case where the Ensembl ID type for a particular species (i.e., Yeast) has a particular format (e.g., YDL194W), rather than the more typical ENSXXXG00001232 format.
So, with this knowledge, you can run the following function:
mapped.cols <- mapTableColumn('name','Yeast','Ensembl','Entrez Gene')
We are asking Cytoscape to look in the name column for Yeast Ensembl IDs and then provide a new columns of corresponding Entrez Gene IDs. And if you look back at the Node Table, you’ll see that new column (all the way to the right). That’s it!
The return value is a data frame of all the mappings between Ensembl and Entrez Gene that were found for your network in case you want those details:
mapped.cols[1:3,] #first three entries
Note: the row names of the return data frame are the node SUIDs from Cytoscape. These are handy if you want to load the mappings yourself (see last example).
For this next example, you’ll need the STRING app to access the STRING database from within Cytoscape: * Install the STRING app from https://apps.cytoscape.org/apps/stringapp
#available in Cytoscape 3.7.0 and above
installApp('STRINGapp')
Now we can import protein interaction networks with a ton of annotations from the STRING database with a simple commandsGET function, like this:
string.cmd = 'string disease query disease="breast cancer" cutoff=0.9 species="Homo sapiens" limit=150'
commandsGET(string.cmd)
# for more information on string commands:
# commandsHelp('string')
# commandsHelp('string disease query')
Check out the Node Table and you’ll see display names and identifiers. In particular, the canonical name column appears to hold Uniprot-TrEMBL IDs. Nice, we can use that!
Say we have a dataset keyed by Ensembl gene identifiers. Well, then we would want to perform this mapping:
mapped.cols <- mapTableColumn('stringdb::canonical name','Human','Uniprot-TrEMBL','Ensembl')
Scroll all the way to the right in the Node Table and you’ll see a new column with Ensembl IDs. This example highlights a useful translation from protein to gene identifiers (or vice versa), but is also a caution to be aware of the assumptions involved when making this translation. For example, a typical gene encodes for many proteins, so you may have many-to-one mappings in your results.
From time to time, you’ll come across a case where the identifiers in your network are of mixed types. This is a rare scenario, but here is one approach to solving it.
First, you’ll need the WikiPathways app to access the WikiPathways database. The pathways in WikiPathways are curated by a community of interested researchers and citizen scientists. As such, there are times where authors might use different sources of identifiers. They are valid IDs, just not all from the same source. Future versions of the WikiPathways app will provide pre-mapped columns to a single ID type. But in the meantime (and relevant to other use cases), this example highlights how to handle a source of mixed identifier types.
#available in Cytoscape 3.7.0 and above
installApp('WikiPathways')
Now we can import an Apoptosis Pathway from WikiPathways. Either from the web site (https://wikipathways.org), or from the Network Search Tool in Cytoscape GUI or from the rWikiPathways package, we could identify the pathway as WP254.
wp.cmd = 'wikipathways import-as-pathway id="WP254"'
commandsGET(wp.cmd)
# for more information on wikipathways commands:
# commandsHelp('wikipathways')
# commandsHelp('wikipathways import-as-pathway')
Take look in the XrefId column and you’ll see a mix of identifier types. The next column over, XrefDatasource, conveniently names each type’s source. Ignoring the metabolites for this example, we just have a mix of Ensembl and Entrez Gene to deal with.
Say we want a column with only Ensembl IDs. The easiest approach is to simply overwrite all the non-Ensembl IDs, i.e., in this case, Entrez Gene IDs. Let’s collect the mappings first:
mapped.cols <- mapTableColumn('XrefId','Human','Entrez Gene','Ensembl')
Next, we want to remove the
only.mapped.cols <- mapped.cols[complete.cases(mapped.cols), 'Ensembl', drop=FALSE]
colnames(only.mapped.cols) <- 'XrefId'
loadTableData(only.mapped.cols,table.key.column = 'SUID')
Done! See the updated XrefId column in Cytoscape with all Ensembl IDs.
Note: you’ll want to either update the XrefDatasource* column as well or simply make a note to ignore it at this point.*
This identifier mapping function is intended to handle the majority of common ID mapping problems. It has limitation, however.
?mapTableColumn
If you need an ID mapping solution for species or ID types not covered by this tool, or if you want to connect to alternative sources of mappings, then check out the BridgeDb app: http://apps.cytoscape.org/apps/bridgedb. Note that metabolite databases are currently not supported!
#available in Cytoscape 3.7.0 and above
installApp('BridgeDb')
And then browse the available function with
commandsHelp('bridgedb')


From August 5th to 8th
Jump to date
PG-13 | 2 hr 5 min | 6 PM - 08:05 PM
From her escape from slavery through the dangerous
missions she led to...
PG | 1 hr 33 min | 08:06 PM - 09:39 PM
Swifty the fox discovers a devious plan by Otto Von
Walrus...
PG-13 | 1 hr 57 min | 09:40 PM - 11:37 PM
Henry Brogan is an elite 51-year-old assassin who's
ready to...
PG-13 | 1 hr 21 min | 11:38PM - 12:59PM
When an ex-convict finds an abandoned baby in a
dumpster, he...
PG | 2 hr 5 min | 6 PM - 08:05 PM
Maleficent travels to a grand old castle to celebrate
young Aurora's upcoming...
PG | 1 hr 33 min | 08:06 PM - 09:39 PM
Jojo is a lonely German boy who discovers that his
single mother...
PG-13 | 1 hr 57 min | 09:40 PM - 11:37 PM
U.S. soldiers and pilots change the course of World War
II during...
PG-13 | 1 hr 21 min | 11:38PM - 12:59PM
A woman who works as a department store elf finds
romance with a charming...
PG | 2 hr 5 min | 6 PM - 08:05 PM
When straight-laced fire superintendent Jake Carson and
his elite team...
PG | 1 hr 33 min | 08:06 PM - 09:39 PM
In the 1950s, truck driver Frank Sheeran gets
involved...
PG-13 | 1 hr 57 min | 09:40 PM - 11:37 PM
Hunter and collector Frank Walsh expects a big payday...
PG-13 | 1 hr 21 min | 11:38PM - 12:59PM
Australian and New Zealand soldiers face overwhelming...
R | 2 hr 5 min | 6 PM - 08:05 PM
A Montana teenager navigates a loving but volatile
relationship with her single...
R | 1 hr 33 min | 08:06 PM - 09:39 PM
Slim and Queen's first date takes an unexpected turn
when a policeman...
PG-13 | 1 hr 57 min | 09:40 PM - 11:37 PM
When a young nurse downloads an app that claims to
predict...
PG-13 | 1 hr 21 min | 11:38PM - 12:59PM
A rookie policewoman in New Orleans inadvertently
captures the shooting...


Women in Technical Studies
About ASK
Recruitment
Executive Team
Resources
Contact
About ASK
Recruitment
Executive Team
Resources
Contact
menu


We have saltwater and freshwater aquatic life from around the world. Come see our new Shark Reef!
From Meerkats to Elephants, we have hundreds of animals on display.
Our Reptile House is home to alligators, snakes, and other awesome critters!
Includes Park Entrance for all standard days of operation.
Includes Park Entrance and Parking for all standard days of operation and holidays.
Includes Park Entrance for a family of 4 on all standard days of operation.
Includes Park Entrance and Parking for a family of 4 on all standard days of operation and holidays.
Donate via Cash, Check, or Credit Card
Explore Our Membership Options
Contact us regarding current volunteer opportunities
Thank You For Your Support!
Phone:<PHONE_NUMBER>
Email: VisitorInfo@JustinsZoo.com


Chapter 8 Preprocessing
Following the data mining process, we describe what is meant by preprocessing, classical supervised models, unsupervised models and evaluation in the context of software engineering with examples
This task is probably the hardest and where most of effort is spend in the data mining process. It is quite typical to transform the data, for example, finding inconsistencies, normalising, imputing missing values, tranforming input data, merging variables, etc.
Typically, preprocessing consist of the following tasks (subprocesses):
- Data cleaning (consistency, noise detection, outliers)
- Data integration
- Data transformation (normalisation, discretisation) and derivation of new attributes from existing ones (e.g., population density from population and area)
- Missing data imputation
- Data reduction (feature selection and instace selection)
8.1 Data
Consistent data are semantically correct based on real-world knowledge of the problem, i.e., no constrains are violated and data that can be used for inducing models and analysis. For example, the LoC or effort is constrained to non-negative values. We can also consider that to multiple attributes are consistent among them, and even datasets (e.g., same metrics but collected by different tools)
8.2 Missing values
Missing values will have a negative effect when analysing the data or learning models. The results can be biased when compared with the models induced from the complete data, the results can be harder to analyse, it may be needed to discard records with missing values depending on the algorithm and this can be an important problems with small datasets such as the effort estimation ones.
Missing data is typically classified into: * MCAR (Missing Completely at Random) or MAR (Missing At Random) where there is no reason for those missing values and we can assume that the distribution could follow the attribute’s distribution. * MNAR (Missing Not At Random) where there is a pattern for those missing values and it may may be advisable to check the data gathering process to try to understand why such information is missing.
Imputation consists in replacing missing values for estimates of those missing values. Many algorithms do cannot handle missing values and therefore, imputation methods are needed. We can use simple approaches such as the replacing the missing values with the mean or mode of the attribute. More elaborated approaches include:
- EM (Expectation-Maximisation)
- Distance-based
- kNN (k Nearest Neighbours)
- Clustering
In R, a missing value is represented with NA
and the analyst must decide what to do with missing data. The simplest approach is to leave out instances (ignore missing -IM-) with with missing data. This functionality is supported by many base functions through the na.rm
option.
The mice
R package. MICE (Multivariate Imputation via Chained Equations) assumes that data are missing at random. Other packages include Amelia
, missForest
, Hmisc
and mi
.
8.3 Noise
Imperfections of the real-world data that influences negatively in the induced machine learning models. Approaches to deal with noisy data include: * Robust learners capable of handling noisy data (e.g., C4.5 through pruning strategies) * Data polishing methods which aim to correct noisy instances prior training * Noise filters which are used to identify and eliminate noisy instances from the training data.
Types of noise data: * Class Noise (aka label noise). + There can be contradictory cases (all attributes have the same value except the class) + Misclassifications. The class attribute is not labeled with the true label (golden truth) * Attribute Noise. Values of attributes that are noise, missing or unknown.
8.4 Outliers
There is a large amount of literature related to outlier detection, and furthermore several definitions of outlier exist.
library(DMwR2)
library(foreign)
<- read.arff("./datasets/defectPred/D1/KC1.arff") kc1
The LOF algorithm (lofactor
), given a data set it produces a vector of local outlier factors for each case.
<- kc1[,1:21]
kc1num <- lofactor(kc1num, k=5)
outlier.scores plot(density(na.omit(outlier.scores)))
<- order(outlier.scores, decreasing=T)[1:5]
outliers print(outliers)
## [1] 1 6 14 31 33
Another simple method of Hiridoglou and Berthelot for positive observations.
8.5 Feature selection
Feature Selection (FS) aims at identifying the most relevant attributes from a dataset. It is important in different ways:
A reduced volume of data allows different data mining or searching techniques to be applied.
Irrelevant and redundant attributes can generate less accurate and more complex models. Furthermore, data mining algorithms can be executed faster.
It avoids the collection of data for those irrelevant and redundant attributes in the future.
The problem of FS received a thorough treatment in pattern recognition and machine learning. Most of the FS algorithms tackle the task as a search problem, where each state in the search specifies a distinct subset of the possible attributes (Blum and Langley 1997). The search procedure is combined with a criterion to evaluate the merit of each candidate subset of attributes. There are a multiple possible combinations between each procedure search and each attribute measure (Liu and Yu 2005).
There are two major approaches in FS from the method’s output point of view:
Feature subset selection (FSS)
Feature ranking in which attributes are ranked as a list of features which are ordered according to evaluation measures (a subset of features is often selected from the top of the ranking list).
FFS algorithms designed with different evaluation criteria broadly fall into two categories:
The filter model relies on general characteristics of the data to evaluate and select feature subsets without involving any data mining algorithm.
The wrapper model requires one predetermined mining algorithm and uses its performance as the evaluation criterion. It searches for features better suited to the mining algorithm aiming to improve mining performance, but it also tends to be more computationally expensive than filter model Langley (1994).
Feature subset algorithms search through candidate feature subsets guide by a certain evaluation measure (Liu and Motoda 1998) which captures the goodness of each subset. An optimal (or near optimal) subset is selected when the search stops.
Some existing evaluation measures that have been shown effective in removing both irrelevant and redundant features include the consistency measure (Dash, Liu, and Motoda 2000), the correlation measure (Hall 1999) and the estimated accuracy of a learning algorithm (Kohavi and John 1997).
Consistency measure attempts to find a minimum number of features that separate classes as consistently as the full set of features can. An inconsistency is defined as to instances having the same feature values but different class labels.
Correlation measure evaluates the goodness of feature subsets based on the hypothesis that good feature subsets contain features highly correlated to the class, yet uncorrelated to each other.
Wrapper-based attribute selection uses the target learning algorithm to estimate the worth of attribute subsets. The feature subset selection algorithm conducts a search for a good subset using the induction algorithm itself as part of the evaluation function.
Langley (1994) notes that feature selection algorithms that search through the space of feature subsets must address four main issues: (i) the starting point of the search, (ii) the organization of the search, (iii) the evaluation of features subsets and (iv) the criterion used to terminate the search. Different algorithms address theses issues differently.
It is impractical to look at all possible feature subsets, even with a small number of attributes. Feature selection algorithms usually proceed greedily and are be classified into those that add features to an initially empty set (forward selection) and those that remove features from an initially complete set (backwards elimination). Hybrids both add and remove features as the algorithm progresses. Forward selection is much faster than backward elimination and therefore scales better to large data sets. A wide range of search strategies can be used: best-first, branch-and-bound, simulated annealing, genetic algorithms (see Kohavi and John (1997) for a review).
8.5.1 FSelector package in R
The FSelector package in R implements many algorithms available in Weka
library(FSelector)
library(foreign)
<- read.arff("./datasets/defectPred/D1/CM1.arff")
cm1
<- random.forest.importance(Defective ~ ., cm1)
cm1RFWeigths cutoff.biggest.diff(cm1RFWeigths)
## [1] "LOC_COMMENTS" "NUM_UNIQUE_OPERATORS"
Using the Information Gain meaure as ranking:
<- gain.ratio(Defective ~ ., cm1)
cm1GRWeights cm1GRWeights
## attr_importance
## LOC_BLANK 0.0000
## BRANCH_COUNT 0.0000
## CALL_PAIRS 0.0000
## LOC_CODE_AND_COMMENT 0.0000
## LOC_COMMENTS 0.0754
## CONDITION_COUNT 0.0000
## CYCLOMATIC_COMPLEXITY 0.0000
## CYCLOMATIC_DENSITY 0.0000
## DECISION_COUNT 0.0000
## DECISION_DENSITY 0.0000
## DESIGN_COMPLEXITY 0.0000
## DESIGN_DENSITY 0.0000
## EDGE_COUNT 0.0000
## ESSENTIAL_COMPLEXITY 0.0000
## ESSENTIAL_DENSITY 0.0000
## LOC_EXECUTABLE 0.0888
## PARAMETER_COUNT 0.0000
## HALSTEAD_CONTENT 0.0701
## HALSTEAD_DIFFICULTY 0.0000
## HALSTEAD_EFFORT 0.0375
## HALSTEAD_ERROR_EST 0.0448
## HALSTEAD_LENGTH 0.0425
## HALSTEAD_LEVEL 0.0000
## HALSTEAD_PROG_TIME 0.0375
## HALSTEAD_VOLUME 0.0471
## MAINTENANCE_SEVERITY 0.0000
## MODIFIED_CONDITION_COUNT 0.0000
## MULTIPLE_CONDITION_COUNT 0.0000
## NODE_COUNT 0.0000
## NORMALIZED_CYLOMATIC_COMPLEXITY 0.0000
## NUM_OPERANDS 0.0000
## NUM_OPERATORS 0.0471
## NUM_UNIQUE_OPERANDS 0.0589
## NUM_UNIQUE_OPERATORS 0.0616
## NUMBER_OF_LINES 0.0573
## PERCENT_COMMENTS 0.0663
## LOC_TOTAL 0.0763
cutoff.biggest.diff(cm1GRWeights)
## [1] "LOC_EXECUTABLE" "LOC_TOTAL" "LOC_COMMENTS"
## [4] "HALSTEAD_CONTENT" "PERCENT_COMMENTS" "NUM_UNIQUE_OPERATORS"
## [7] "NUM_UNIQUE_OPERANDS" "NUMBER_OF_LINES" "HALSTEAD_VOLUME"
## [10] "NUM_OPERATORS" "HALSTEAD_ERROR_EST" "HALSTEAD_LENGTH"
## [13] "HALSTEAD_EFFORT" "HALSTEAD_PROG_TIME"
# After assigning weights, we can select the statistaclly significant ones
<- chi.squared(Defective ~ ., cm1)
cm1X2Weights cutoff.biggest.diff(cm1X2Weights)
## [1] "LOC_EXECUTABLE" "LOC_COMMENTS" "LOC_TOTAL"
## [4] "NUM_UNIQUE_OPERATORS" "NUM_UNIQUE_OPERANDS" "NUMBER_OF_LINES"
## [7] "HALSTEAD_VOLUME" "NUM_OPERATORS" "HALSTEAD_ERROR_EST"
## [10] "HALSTEAD_CONTENT" "HALSTEAD_EFFORT" "HALSTEAD_PROG_TIME"
## [13] "HALSTEAD_LENGTH" "PERCENT_COMMENTS"
Using CFS attribute selection
library(FSelector)
library(foreign)
<- read.arff("./datasets/defectPred/D1/CM1.arff")
cm1
<- cfs(Defective ~ ., cm1)
result <- as.simple.formula(result, "Defective")
f f
## Defective ~ LOC_COMMENTS + LOC_EXECUTABLE + HALSTEAD_CONTENT +
## NUM_UNIQUE_OPERATORS + PERCENT_COMMENTS
## <environment: 0x5654ac86e2d0>
Other packages for Feature selection in R include FSelectorRccp
which re-implments the FSlector without WEKA dependencies.
Another popular package is Boruta
, which is based on selection based on Random Forest.
8.6 Instance selection
Removal of samples (complementary to the removal of attributes) in order to scale down the dataset prior to learning a model so that there is (almost) no performance loss.
There are two types of processes:
Prototype Selection (PS) (Garcia et al. 2012) when the subset is used with a distance based method (kNN)
Training Set Selection (TSS) (Cano, Herrera, and Lozano 2007) in which an actual model is learned.
It is also a search problem as with feature selection. Garcia et al. (2012) provide a comprehensive overview of the topic.
8.7 Discretization
This process transforms continuous attributes into discrete ones, by associating categorical values to intervals and thus transforming quantitative data into qualitative data.
8.8 Correlation Coefficient and Covariance for Numeric Data
Two random variables \(x\) and \(y\) are called independent if the probability distribution of one variable is not affected by the presence of another.
\(\tilde{\chi}^2=\frac{1}{d}\sum_{k=1}^{n} \frac{(O_k - E_k)^2}{E_k}\)
chisq.test(kc1$LOC_BLANK,kc1$BRANCH_TOTAL)
##
## Chi-squared test for given probabilities
##
## data: kc1$LOC_BLANK
## X-squared = 17705, df = 2095, p-value <2e-16
chisq.test(kc1$DESIGN_COMPLEXITY,kc1$CYCLOMATIC_COMPLEXITY)
##
## Pearson's Chi-squared test
##
## data: kc1$DESIGN_COMPLEXITY and kc1$CYCLOMATIC_COMPLEXITY
## X-squared = 25101, df = 696, p-value <2e-16
8.9 Normalization
8.9.1 Min-Max Normalization
\(z_i=\frac{x_i-\min(x)}{\max(x)-\min(x)}\)
library(caret)
<- preProcess(kc1[, -22], method=c("center", "scale")) preObj
8.9.2 Z-score normalization
TBD
8.10 Transformations
8.10.1 Linear Transformations and Quadratic Trans formations
TBD
8.10.2 Box-cox transformation
TBD
8.10.3 Nominal to Binary tranformations
TBD
8.11 Preprocessing in R
8.11.1 The dplyr
package
The dplyr package created by Hadley Wickham. Some functions are similar to SQL syntax. key functions in dplyr include:
- select: select columns from a dataframe
- filter: select rows from a dataframe
- summarize: allows us to do summary stats based upon the grouped variable
- group_by: group by a factor variable
- arrange: order the dataset
- joins: as in sql left join
Tutorial: https://github.com/justmarkham/dplyr-tutorial
Examples
library(dplyr)
Describe the dataframe:
str(kc1)
## 'data.frame': 2096 obs. of 22 variables:
## $ LOC_BLANK : num 0 0 0 0 2 0 0 0 0 2 ...
## $ BRANCH_COUNT : num 1 1 1 1 1 1 1 1 1 1 ...
## $ LOC_CODE_AND_COMMENT : num 0 0 0 0 0 0 0 0 0 0 ...
## $ LOC_COMMENTS : num 0 0 0 0 0 0 0 0 0 0 ...
## $ CYCLOMATIC_COMPLEXITY: num 1 1 1 1 1 1 1 1 1 1 ...
## $ DESIGN_COMPLEXITY : num 1 1 1 1 1 1 1 1 1 1 ...
## $ ESSENTIAL_COMPLEXITY : num 1 1 1 1 1 1 1 1 1 1 ...
## $ LOC_EXECUTABLE : num 3 1 1 1 8 3 1 1 1 9 ...
## $ HALSTEAD_CONTENT : num 11.6 0 0 0 18 ...
## $ HALSTEAD_DIFFICULTY : num 2.67 0 0 0 3.5 2.67 0 0 0 3.75 ...
## $ HALSTEAD_EFFORT : num 82.3 0 0 0 220.9 ...
## $ HALSTEAD_ERROR_EST : num 0.01 0 0 0 0.02 0.01 0 0 0 0.04 ...
## $ HALSTEAD_LENGTH : num 11 1 1 1 19 11 1 1 1 29 ...
## $ HALSTEAD_LEVEL : num 0.38 0 0 0 0.29 0.38 0 0 0 0.27 ...
## $ HALSTEAD_PROG_TIME : num 4.57 0 0 0 12.27 ...
## $ HALSTEAD_VOLUME : num 30.9 0 0 0 63.1 ...
## $ NUM_OPERANDS : num 4 0 0 0 7 4 0 0 0 10 ...
## $ NUM_OPERATORS : num 7 1 1 1 12 7 1 1 1 19 ...
## $ NUM_UNIQUE_OPERANDS : num 3 0 0 0 5 3 0 0 0 8 ...
## $ NUM_UNIQUE_OPERATORS : num 4 1 1 1 5 4 1 1 1 6 ...
## $ LOC_TOTAL : num 5 3 3 3 12 5 3 3 3 13 ...
## $ Defective : Factor w/ 2 levels "N","Y": 1 1 1 1 1 1 1 1 1 1 ...
tbl_df
creates a “local data frame” as a wrapper for better printing
<- tbl_df(kc1) #deprecated kc1_tbl
## Warning: `tbl_df()` was deprecated in dplyr 1.0.0.
## Please use `tibble::as_tibble()` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was generated.
<- tibble(kc1) kc1_tbl
Filter:
# Filter rows: use comma or & to represent AND condition
filter(kc1_tbl, Defective == "Y" & LOC_BLANK != 0)
## # A tibble: 251 × 22
## LOC_BLANK BRANCH_COUNT LOC_CODE_AND_COMMENT LOC_COMMENTS CYCLOMATIC_COMPLEXI…
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 6 21 0 10 11
## 2 5 15 0 2 8
## 3 2 5 0 0 3
## 4 4 5 0 2 3
## 5 2 11 0 2 6
## 6 2 23 0 3 12
## 7 1 11 0 2 6
## 8 1 13 0 2 7
## 9 2 17 0 2 9
## 10 3 1 0 0 1
## # … with 241 more rows, and 17 more variables: DESIGN_COMPLEXITY <dbl>,
## # ESSENTIAL_COMPLEXITY <dbl>, LOC_EXECUTABLE <dbl>, HALSTEAD_CONTENT <dbl>,
## # HALSTEAD_DIFFICULTY <dbl>, HALSTEAD_EFFORT <dbl>, HALSTEAD_ERROR_EST <dbl>,
## # HALSTEAD_LENGTH <dbl>, HALSTEAD_LEVEL <dbl>, HALSTEAD_PROG_TIME <dbl>,
## # HALSTEAD_VOLUME <dbl>, NUM_OPERANDS <dbl>, NUM_OPERATORS <dbl>,
## # NUM_UNIQUE_OPERANDS <dbl>, NUM_UNIQUE_OPERATORS <dbl>, LOC_TOTAL <dbl>,
## # Defective <fct>
Another operator is %in%
.
Select:
select(kc1_tbl, contains("LOC"), Defective)
## # A tibble: 2,096 × 6
## LOC_BLANK LOC_CODE_AND_COMME… LOC_COMMENTS LOC_EXECUTABLE LOC_TOTAL Defective
## <dbl> <dbl> <dbl> <dbl> <dbl> <fct>
## 1 0 0 0 3 5 N
## 2 0 0 0 1 3 N
## 3 0 0 0 1 3 N
## 4 0 0 0 1 3 N
## 5 2 0 0 8 12 N
## 6 0 0 0 3 5 N
## 7 0 0 0 1 3 N
## 8 0 0 0 1 3 N
## 9 0 0 0 1 3 N
## 10 2 0 0 9 13 N
## # … with 2,086 more rows
Now, kc1_tbl
contains(“LOC”), Defective
Filter and Select together:
# nesting method
filter(select(kc1_tbl, contains("LOC"), Defective), Defective !=0)
## # A tibble: 2,096 × 6
## LOC_BLANK LOC_CODE_AND_COMME… LOC_COMMENTS LOC_EXECUTABLE LOC_TOTAL Defective
## <dbl> <dbl> <dbl> <dbl> <dbl> <fct>
## 1 0 0 0 3 5 N
## 2 0 0 0 1 3 N
## 3 0 0 0 1 3 N
## 4 0 0 0 1 3 N
## 5 2 0 0 8 12 N
## 6 0 0 0 3 5 N
## 7 0 0 0 1 3 N
## 8 0 0 0 1 3 N
## 9 0 0 0 1 3 N
## 10 2 0 0 9 13 N
## # … with 2,086 more rows
It is easier usign the chaining method:
# chaining method
%>%
kc1_tbl select(contains("LOC"), Defective) %>%
filter(Defective !=0)
## # A tibble: 2,096 × 6
## LOC_BLANK LOC_CODE_AND_COMME… LOC_COMMENTS LOC_EXECUTABLE LOC_TOTAL Defective
## <dbl> <dbl> <dbl> <dbl> <dbl> <fct>
## 1 0 0 0 3 5 N
## 2 0 0 0 1 3 N
## 3 0 0 0 1 3 N
## 4 0 0 0 1 3 N
## 5 2 0 0 8 12 N
## 6 0 0 0 3 5 N
## 7 0 0 0 1 3 N
## 8 0 0 0 1 3 N
## 9 0 0 0 1 3 N
## 10 2 0 0 9 13 N
## # … with 2,086 more rows
Arrange ascending
#
%>%
kc1_tbl select(LOC_TOTAL, Defective) %>%
arrange(LOC_TOTAL)
## # A tibble: 2,096 × 2
## LOC_TOTAL Defective
## <dbl> <fct>
## 1 1 N
## 2 1 N
## 3 1 N
## 4 1 N
## 5 1 N
## 6 1 N
## 7 1 N
## 8 1 N
## 9 1 N
## 10 1 N
## # … with 2,086 more rows
Arrange descending:
%>%
kc1_tbl select(LOC_TOTAL, Defective) %>%
arrange(desc(LOC_TOTAL))
## # A tibble: 2,096 × 2
## LOC_TOTAL Defective
## <dbl> <fct>
## 1 288 Y
## 2 286 Y
## 3 283 N
## 4 220 Y
## 5 217 Y
## 6 210 N
## 7 205 Y
## 8 184 Y
## 9 179 Y
## 10 176 Y
## # … with 2,086 more rows
Mutate:
%>%
kc1_tbl filter(Defective == "Y") %>%
select(NUM_OPERANDS, NUM_OPERATORS, Defective) %>%
mutate(HalsteadLength = NUM_OPERANDS + NUM_OPERATORS)
## # A tibble: 325 × 4
## NUM_OPERANDS NUM_OPERATORS Defective HalsteadLength
## <dbl> <dbl> <fct> <dbl>
## 1 64 107 Y 171
## 2 52 89 Y 141
## 3 17 41 Y 58
## 4 41 74 Y 115
## 5 54 95 Y 149
## 6 75 156 Y 231
## 7 54 95 Y 149
## 8 56 99 Y 155
## 9 69 124 Y 193
## 10 44 60 Y 104
## # … with 315 more rows
summarise
: Reduce variables to values
# Create a table grouped by Defective, and then summarise each group by taking the mean of loc
%>%
kc1_tbl group_by(Defective) %>%
summarise(avg_loc = mean(LOC_TOTAL, na.rm=TRUE))
## # A tibble: 2 × 2
## Defective avg_loc
## <fct> <dbl>
## 1 N 15.9
## 2 Y 44.7
# Create a table grouped by Defective, and then summarise each group by taking the mean of loc
%>%
kc1_tbl group_by(Defective) %>%
summarise_each(funs(mean, min, max), BRANCH_COUNT, LOC_TOTAL)
## Warning: `summarise_each_()` was deprecated in dplyr 0.7.0.
## Please use `across()` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was generated.
## Warning: `funs()` was deprecated in dplyr 0.8.0.
## Please use a list of either functions or lambdas:
##
## # Simple named list:
## list(mean = mean, median = median)
##
## # Auto named with `tibble::lst()`:
## tibble::lst(mean, median)
##
## # Using lambdas
## list(~ mean(., trim = .2), ~ median(., na.rm = TRUE))
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was generated.
## # A tibble: 2 × 7
## Defective BRANCH_COUNT_mean LOC_TOTAL_mean BRANCH_COUNT_min LOC_TOTAL_min
## <fct> <dbl> <dbl> <dbl> <dbl>
## 1 N 3.68 15.9 1 1
## 2 Y 10.1 44.7 1 2
## # … with 2 more variables: BRANCH_COUNT_max <dbl>, LOC_TOTAL_max <dbl>
It seems than the number of Defective modules is larger than the Non-Defective ones. We can count them with:
# n() or tally
%>%
kc1_tbl group_by(Defective) %>%
tally()
## # A tibble: 2 × 2
## Defective n
## <fct> <int>
## 1 N 1771
## 2 Y 325
It seems that it’s an imbalanced dataset…
# randomly sample a fixed number of rows, without replacement
%>% sample_n(2) kc1_tbl
## # A tibble: 2 × 22
## LOC_BLANK BRANCH_COUNT LOC_CODE_AND_COMMENT LOC_COMMENTS CYCLOMATIC_COMPLEXITY
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 0 3 0 0 2
## 2 0 1 0 0 1
## # … with 17 more variables: DESIGN_COMPLEXITY <dbl>,
## # ESSENTIAL_COMPLEXITY <dbl>, LOC_EXECUTABLE <dbl>, HALSTEAD_CONTENT <dbl>,
## # HALSTEAD_DIFFICULTY <dbl>, HALSTEAD_EFFORT <dbl>, HALSTEAD_ERROR_EST <dbl>,
## # HALSTEAD_LENGTH <dbl>, HALSTEAD_LEVEL <dbl>, HALSTEAD_PROG_TIME <dbl>,
## # HALSTEAD_VOLUME <dbl>, NUM_OPERANDS <dbl>, NUM_OPERATORS <dbl>,
## # NUM_UNIQUE_OPERANDS <dbl>, NUM_UNIQUE_OPERATORS <dbl>, LOC_TOTAL <dbl>,
## # Defective <fct>
# randomly sample a fraction of rows, with replacement
%>% sample_frac(0.05, replace=TRUE) kc1_tbl
## # A tibble: 105 × 22
## LOC_BLANK BRANCH_COUNT LOC_CODE_AND_COMMENT LOC_COMMENTS CYCLOMATIC_COMPLEXI…
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 3 0 0 2
## 2 0 1 0 0 1
## 3 0 1 0 0 1
## 4 2 5 0 0 3
## 5 2 7 0 0 4
## 6 0 1 0 0 1
## 7 0 1 0 0 1
## 8 0 1 0 0 1
## 9 0 1 0 0 1
## 10 0 1 0 1 1
## # … with 95 more rows, and 17 more variables: DESIGN_COMPLEXITY <dbl>,
## # ESSENTIAL_COMPLEXITY <dbl>, LOC_EXECUTABLE <dbl>, HALSTEAD_CONTENT <dbl>,
## # HALSTEAD_DIFFICULTY <dbl>, HALSTEAD_EFFORT <dbl>, HALSTEAD_ERROR_EST <dbl>,
## # HALSTEAD_LENGTH <dbl>, HALSTEAD_LEVEL <dbl>, HALSTEAD_PROG_TIME <dbl>,
## # HALSTEAD_VOLUME <dbl>, NUM_OPERANDS <dbl>, NUM_OPERATORS <dbl>,
## # NUM_UNIQUE_OPERANDS <dbl>, NUM_UNIQUE_OPERATORS <dbl>, LOC_TOTAL <dbl>,
## # Defective <fct>
# Better formatting adapted to the screen width
glimpse(kc1_tbl)
## Rows: 2,096
## Columns: 22
## $ LOC_BLANK <dbl> 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 2, 0, 2, 1, 2, 2, …
## $ BRANCH_COUNT <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, …
## $ LOC_CODE_AND_COMMENT <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ LOC_COMMENTS <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ CYCLOMATIC_COMPLEXITY <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, …
## $ DESIGN_COMPLEXITY <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, …
## $ ESSENTIAL_COMPLEXITY <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, …
## $ LOC_EXECUTABLE <dbl> 3, 1, 1, 1, 8, 3, 1, 1, 1, 9, 8, 1, 8, 1, 8, 12,…
## $ HALSTEAD_CONTENT <dbl> 11.6, 0.0, 0.0, 0.0, 18.0, 11.6, 0.0, 0.0, 0.0, …
## $ HALSTEAD_DIFFICULTY <dbl> 2.67, 0.00, 0.00, 0.00, 3.50, 2.67, 0.00, 0.00, …
## $ HALSTEAD_EFFORT <dbl> 82.3, 0.0, 0.0, 0.0, 220.9, 82.3, 0.0, 0.0, 0.0,…
## $ HALSTEAD_ERROR_EST <dbl> 0.01, 0.00, 0.00, 0.00, 0.02, 0.01, 0.00, 0.00, …
## $ HALSTEAD_LENGTH <dbl> 11, 1, 1, 1, 19, 11, 1, 1, 1, 29, 19, 1, 19, 1, …
## $ HALSTEAD_LEVEL <dbl> 0.38, 0.00, 0.00, 0.00, 0.29, 0.38, 0.00, 0.00, …
## $ HALSTEAD_PROG_TIME <dbl> 4.57, 0.00, 0.00, 0.00, 12.27, 4.57, 0.00, 0.00,…
## $ HALSTEAD_VOLUME <dbl> 30.9, 0.0, 0.0, 0.0, 63.1, 30.9, 0.0, 0.0, 0.0, …
## $ NUM_OPERANDS <dbl> 4, 0, 0, 0, 7, 4, 0, 0, 0, 10, 7, 0, 7, 0, 11, 1…
## $ NUM_OPERATORS <dbl> 7, 1, 1, 1, 12, 7, 1, 1, 1, 19, 12, 1, 12, 1, 16…
## $ NUM_UNIQUE_OPERANDS <dbl> 3, 0, 0, 0, 5, 3, 0, 0, 0, 8, 5, 0, 5, 0, 6, 9, …
## $ NUM_UNIQUE_OPERATORS <dbl> 4, 1, 1, 1, 5, 4, 1, 1, 1, 6, 5, 1, 5, 1, 8, 12,…
## $ LOC_TOTAL <dbl> 5, 3, 3, 3, 12, 5, 3, 3, 3, 13, 12, 3, 12, 4, 13…
## $ Defective <fct> N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, …
8.12 Other libraries and tricks
The lubridate
package contains a number of functions facilitating the conversion of text to
POSIX dates. As an example, consider the following code. We may use this, for example, with time series.
For example https://cran.r-project.org/doc/contrib/de_Jonge+van_der_Loo-Introduction_to_data_cleaning_with_R.pdf
library(lubridate)
<- c("15/02/2013", "15 Feb 13", "It happened on 15 02 '13")
dates dmy(dates)
## [1] "2013-02-15" "2013-02-15" "2013-02-15"


Burness, John
| Birth Name | Burness, John |
| Gender | male |
| Age at Death | 74 years, 1 month, 12 days |
Narrative
SMH - BURNESS, John - 22 May 1963, at hospital, late of Tudor St, Belmore, beloved husband of Henrietta Bertha & loved father of Bertha (Mrs Fahey), John, James(dec) & Donald, loved father-in-law of Keith, Jean & Ruth, dearly loved grandfather of Gregory, Robyn, David, Jennifer, Susan & Stephen.
FUNERAL - BURNESS - the Friends of late JOHN BURNESS, of Belmore, are invited to attend his Funeral, to leave Met. Funeral Homes, Burwood, to-day after service at 2.30pm for General Cemetery, at Waverley - #2002/3 Section A, No.16.
Events
| Event | Date | Place | Description | Sources |
|---|---|---|---|---|
| Birth | 1889-04-10 | Paddington NSW Aust #12957 | ||
|
|
||||
| Death | 1963-05-22 | West.Suburbs Hosp, Croydon NSW Aust | ||
|
|
||||
| Burial | 1963-05-25 | Waverley Cemetery #2002/3 Sec A 16 | ||
|
|
Parents
| Relation to main person | Name | Birth date | Death date | Relation within this family (if not by birth) |
|---|---|---|---|---|
| Mother | Burness, Elizabeth | |||
| Burness, John | 1889-04-10 | 1963-05-22 |
Families
Family of Burness, John and Lewis, Henrietta Bertha |
|||||||||||||||||
| Married | Wife | Lewis, Henrietta Bertha ( * 1889-01-26 + 15 Jul 1970or9 ) | |||||||||||||||
|
|||||||||||||||||
| Children |
| Name | Birth Date | Death Date |
|---|---|---|
| Burness, Henrietta Bertha | 1909-10-10 | 1982-09-12 |
| Burness, John Edward | 1911-09-01 | 1992-05-26 |
| Burness, James Minister | 1913-04-00 | 1914-01-05 |
| Burness, Donald James | 1931-06-26 | 1994-05-24 |
| Type | Value | Notes | Sources |
|---|---|---|---|
| _UID | 22092C19FFDBD911952295D353E5C65DAEDB |
Attributes
| Type | Value | Notes | Sources |
|---|---|---|---|
| _UID | 21092C19FFDBD911952295D353E5C65DADCB |


30
1 "Woe to the rebellious children," this is the declaration of Yahweh.
"They make plans, but not from me; they make alliances with other nations, but they were not directed by my Spirit,
so they add sin to sin.
2 They set out to go down into Egypt, but have not asked for my direction.
They seek protection from Pharaoh and take refuge in the shadow of Egypt.
3 Therefore Pharaoh's protection will be your shame,
and the refuge in Egypt's shade, your humiliation,
4 although their princes are at Zoan, and their messengers have come to Hanes.
5 They will all be ashamed because of a people who cannot help them,
who are neither help nor aid, but a shame, and even a disgrace."
6 A declaration about the beasts of the Negev:
Through the land of trouble and danger, of the lioness and the lion, the viper and fiery flying serpent,
they carry their riches on the backs of donkeys, and their treasures on the camels' humps,
to a people who cannot help them.
7 For Egypt's help is worthless;
therefore I have called her Rahab, who sits still.
8 Now go, write it in their presence on a tablet, and inscribe it on a scroll,
that it may be preserved for the time to come as a testimony.
9 For these are a rebellious people, lying children,
children who will not hear the instruction of Yahweh.
10 They say to the seers, "Do not see;"
and to the prophets, "Do not prophesy straightforward truth to us;
speak to us smooth things; prophesy deceptions;
11 turn aside from the way; turn aside from the path;
take the Holy One of Israel away from our presence."
12 Therefore the Holy One of Israel says,
"Because you reject this word
and trust in oppression and deceit and lean on it,
13 so this sin will be to you
like a broken part ready to fall, like a bulge in a high wall
whose fall will happen suddenly, in an instant."
14 He will break it like a potter's vessel is broken; he will not spare it,
so that there will not be found among its pieces a shard
with which to scrape fire from the hearth, or to scoop up water out of the cistern.
15 For this is what the Lord Yahweh, the Holy One of Israel says,
"In returning and resting you will be saved; in quietness and in trust will be your strength.
But you were not willing.
16 You said, 'No,
for we will flee on horses,' so you will flee;
and, 'We will ride upon swift horses,' so those who pursue you will be swift.
17 One thousand will flee at the threat of one;
at the threat of five you will flee
until your remnant will be like a flagstaff on the top of a mountain, or like a flag on a hill."
18 Yet Yahweh waits to be gracious to you. Therefore he will be exalted, ready to have mercy on you.
For Yahweh is a God of justice; blessed are all those who wait for him.
19 For a people will live in Zion, in Jerusalem, and you will weep no more.
He will surely be gracious to you at the sound of your cry. When he hears it, he will answer you.
20 Though Yahweh gives you the bread of adversity and the water of affliction,
even so, your teacher will not hide himself anymore, but you will see your teacher with your own eyes.
21 Your ears will hear a word behind you saying,
"This is the way, walk in it," when you turn to the right or when you turn to the left.
22 You will desecrate your carved figures overlaid with silver and your gold cast figures.
 You will say to them, "Get out of here."
23 He will give the rain for your seed when you sow the ground,
and bread with abundance from the ground. And the crops will be abundant.
In that day your cattle will graze in broad pastures.
24 The oxen and the donkeys, who plow the ground, will eat seasoned feed
that has been winnowed with a shovel and a fork.
25 On every high mountain and on every high hill, there will be flowing brooks and streams of waters,
in the day of the great slaughter when the towers fall.
26 The light of the moon will be like the light of the sun, and the light of the sun will be seven times brighter, like the sunlight of seven days.
Yahweh will bind up the breaking of his people and heal the bruises of his wounding them.
27 Look, the name of Yahweh comes from a distant place, burning with his anger and in dense smoke.
 His breath is a bridle in the jaws of the peoples to cause them to wander away.
29 You will have a song as in the night when a holy feast is observed,
and gladness of heart, as when one goes with a flute to the mountain of Yahweh, to the Rock of Israel.
30 Yahweh will make the splendor of his voice heard and show the motion of his arm
in storming anger and flames of fire, with windstorm, rainstorm, and hailstones.
31 For at the voice of Yahweh, Assyria will be shattered; he will strike them with a staff.
32 And every stroke of the appointed rod that Yahweh will lay on them
will be accompanied with the music of tambourines and harps as he battles and fights with them.
33 For a place of burning was prepared long ago. Indeed, it is prepared for the king, and God has made it deep and wide.
The pile is ready with a fire and much wood.
The breath of Yahweh, like a stream of brimstone, will set it on fire.


URL of the Album
Promise<(string|Buffer)[]>
Downloads the tracks of a playlist
URL of the playlist
Promise<(string|Buffer)[]>
Downloads the given spotify track
Url to download
file to save to
buffer
if no filename is provided and string
if it is
Gets the Buffer of track from the info
info of the track got from spotify.getTrack()
Gets the info the given album URL
Album
Gets the info of the given Artist URL
Artist
Gets the list of albums from the given Artists URL
Albums
Gets the playlist info from URL
URL of the playlist
Get the track details of the given track URL
Track
Gets the info of tracks from Album URL
URL of the playlist
Gets the info of tracks from playlist URL
URL of the playlist
Generated using TypeDoc
Downloads the tracks of a Album


|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object com.threed.jpct.OcTree
This is a basic octree implementation. An octree is a structure for spatial
subdivision. In jPCT, an octree can be constructed from any Mesh/Object3D and
assigned to any Object3D if no portal rendering is in use. It's not possible
to combine portals and octrees in jPCT, so you have to decide which way to
go. Octrees are more suitable for terrain rendering while portals are better
for indoor scenes. An Object3D will use an octree for rendering if one has
been assigned to it. There is no need to enable it explicitly.
The octree may be used for collision detection too. This HAS to be enabled
explicitly, because it's disabled by default. An octree is NOT useful in
every situation and may even hurt performance when used in the wrong places.
Object3D.setOcTree(com.threed.jpct.OcTree)
,
Serialized Form| Field Summary | |
static boolean |
COLLISION_DONT_USE
Don't use this octree to speed up collision detection |
static boolean |
COLLISION_USE
Use this octree to speed up collision detection |
static int |
MODE_NORMAL
Builds the octree in the "normal" way |
static int |
MODE_OPTIMIZED
Tries to build a more optimized octree. |
static boolean |
RENDERING_DONT_USE
Don't use this octree to speed up rendering |
static boolean |
RENDERING_USE
Use this octree to speed up rendering |
| Constructor Summary | |
OcTree(Mesh mesh,
int maxPoly,
int mode)
Builds a new octree from an Object3D. |
|
OcTree(Mesh mesh,
int maxPoly,
int maxDepth,
int mode)
Builds a new octree from an Object3D. |
|
OcTree(Object3D obj,
int maxPoly,
int mode)
Builds a new octree from an Object3D. |
|
OcTree(Object3D obj,
int maxPoly,
int maxDepth,
int mode)
Builds a new octree from an Object3D. |
| Method Summary | |
boolean |
getCollisionUse()
Gets the collision detection setting for this octree. |
java.util.Vector |
getFilledLeafs()
|
float |
getRadiusMultiplier()
Returns the current radius multiplier for this octree. |
boolean |
getRenderingUse()
Gets the rendering usage setting for this octree. |
boolean |
isOfOrderZero()
If the root-node is the only node in the tree, the tree is of order zero. |
void |
setCollisionUse(boolean useIt)
Sets the octree to be used for collision detection. |
void |
setRadiusMultiplier(float mul)
Sets the radius multiplier that will be used for the sphere-polygon collision detection. |
void |
setRenderingUse(boolean useIt)
Sets the octree to be used for rendering. |
| Methods inherited from class java.lang.Object |
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
public static final int MODE_NORMAL
public static final int MODE_OPTIMIZED
public static final boolean COLLISION_USE
public static final boolean COLLISION_DONT_USE
public static final boolean RENDERING_USE
public static final boolean RENDERING_DONT_USE
| Constructor Detail |
public OcTree(Mesh mesh, int maxPoly, int mode)
mesh
- the mesh from which the octree should be constructedmaxPoly
- the maximum number of polygons a single node may contain. The
smaller this number is, the more complex the octree gets. It
depends on the object and its usage which number will be the
best.mode
- the mode that should be used to construct the objectMODE_NORMAL
,
MODE_OPTIMIZED
,
Object3D.setOcTree(com.threed.jpct.OcTree)
public OcTree(Mesh mesh, int maxPoly, int maxDepth, int mode)
mesh
- the mesh from which the octree should be constructedmaxPoly
- the maximum number of polygons a single node may contain. The
smaller this number is, the more complex the octree gets. It
depends on the object and its usage which number will be the
best.maxDepth
- the maximum depth of the tree. The recursion will end at this
depth regardless of the number of polygons in the node.mode
- the mode that should be used to construct the objectMODE_NORMAL
,
MODE_OPTIMIZED
,
Object3D.setOcTree(com.threed.jpct.OcTree)
public OcTree(Object3D obj, int maxPoly, int mode)
obj
- the object from which's mesh the octree should be constructedmaxPoly
- the maximum number of polygons a single node may contain. The
smaller this number is, the more complex the octree gets. It
depends on the object and its usage which number will be the
best.mode
- the mode that should be used to construct the objectMODE_NORMAL
,
MODE_OPTIMIZED
,
Object3D.setOcTree(com.threed.jpct.OcTree)
public OcTree(Object3D obj, int maxPoly, int maxDepth, int mode)
obj
- the object from which's mesh the octree should be constructedmaxPoly
- the maximum number of polygons a single node may contain. The
smaller this number is, the more complex the octree gets. It
depends on the object and its usage which number will be the
best.maxDepth
- the maximum depth of the tree. The recursion will end at this
depth regardless of the number of polygons in the node.mode
- the mode that should be used to construct the objectMODE_NORMAL
,
MODE_OPTIMIZED
,
Object3D.setOcTree(com.threed.jpct.OcTree)
| Method Detail |
public java.util.Vector getFilledLeafs()
public void setCollisionUse(boolean useIt)
useIt
- use it for collision detection...or not...COLLISION_USE
,
COLLISION_DONT_USE
public void setRenderingUse(boolean useIt)
useIt
- use it for rendering...or not...RENDERING_USE
,
RENDERING_DONT_USE
public boolean getCollisionUse()
COLLISION_USE
,
COLLISION_DONT_USE
public boolean getRenderingUse()
RENDERING_USE
,
RENDERING_DONT_USE
public void setRadiusMultiplier(float mul)
mul
- the multiplierpublic float getRadiusMultiplier()
public boolean isOfOrderZero()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


afs_selinux
Section: afs SELinux Policy documentation (8)Updated: afs
Index Return to Main Contents
NAME
afs_selinux - Security Enhanced Linux Policy for the afs processesDESCRIPTION
SELinux Linux secures afs (Andrew Filesystem server) processes via flexible mandatory access control.
FILE CONTEXTS
SELinux requires files to have an extended attribute to define the file type.You can see the context of a file using the -Z option to lsP Policy governs the access confined processes have to these files. SELinux afs policy is very flexible allowing users to setup their afs processes in as secure a method as possible.
The following file types are defined for afs:
afs_bosserver_exec_t
- Set files with the afs_bosserver_exec_t type, if you want to transition an executable to the afs_bosserver_t domain.
afs_cache_t
- Set files with the afs_cache_t type, if you want to store the files under the /var/cache directory.
- Paths:
-
/var/cache/afs(/.*)?, /usr/vice/cache(/.*)?
afs_config_t
- Set files with the afs_config_t type, if you want to treat the files as afs configuration data, usually stored under the /etc directory.
- Paths:
-
/usr/afs/etc(/.*)?, /usr/afs/local(/.*)?
afs_dbdir_t
- Set files with the afs_dbdir_t type, if you want to treat the files as afs dbdir data.
afs_exec_t
- Set files with the afs_exec_t type, if you want to transition an executable to the afs_t domain.
- Paths:
-
/usr/vice/etc/afsd, /usr/sbin/afsd
afs_files_t
- Set files with the afs_files_t type, if you want to treat the files as afs content.
- Paths:
-
/vicepc, /vicepb, /vicepa
afs_fsserver_exec_t
- Set files with the afs_fsserver_exec_t type, if you want to transition an executable to the afs_fsserver_t domain.
- Paths:
-
/usr/afs/bin/volserver, /usr/afs/bin/fileserver, /usr/afs/bin/salvager
afs_initrc_exec_t
- Set files with the afs_initrc_exec_t type, if you want to transition an executable to the afs_initrc_t domain.
- Paths:
-
/etc/rc.d/init.d/afs, /etc/rc.d/init.d/openafs-client
afs_ka_db_t
- Set files with the afs_ka_db_t type, if you want to treat the files as afs ka database content.
afs_kaserver_exec_t
- Set files with the afs_kaserver_exec_t type, if you want to transition an executable to the afs_kaserver_t domain.
afs_logfile_t
- Set files with the afs_logfile_t type, if you want to treat the files as afs logfile data.
afs_pt_db_t
- Set files with the afs_pt_db_t type, if you want to treat the files as afs pt database content.
afs_ptserver_exec_t
- Set files with the afs_ptserver_exec_t type, if you want to transition an executable to the afs_ptserver_t domain.
afs_vl_db_t
- Set files with the afs_vl_db_t type, if you want to treat the files as afs vl database content.
afs_vlserver_exec_t
- Set files with the afs_vlserver_exec_t type, if you want to transition an executable to the afs_vlserver_t domain.
Note: File context can be temporarily modified with the chcon command. If you want to permanently change the file context you need to use the semanage fcontext command. This will modify the SELinux labeling database. You will need to use restorecon to apply the labels.
PORT TYPES
SELinux defines port types to represent TCP and UDP ports.You can see the types associated with a port by using the following command:
semanage port -l
Policy governs the access confined processes have to these ports. SELinux afs policy is very flexible allowing users to setup their afs processes in as secure a method as possible.
The following port types are defined for afs:
- afs_bos_port_t
-
Default Defined Ports: tcp 8021
- afs_client_port_t
-
Default Defined Ports: tcp 8021
- afs_fs_port_t
-
Default Defined Ports: tcp 8021
- afs_ka_port_t
-
Default Defined Ports: tcp 8021
- afs_pt_port_t
-
Default Defined Ports: tcp 8021
- afs_vl_port_t
-
Default Defined Ports: tcp 8021
PROCESS TYPES
SELinux defines process types (domains) for each process running on the systemYou can see the context of a process using the -Z option to psP Policy governs the access confined processes have to files. SELinux afs policy is very flexible allowing users to setup their afs processes in as secure a method as possible.
The following process types are defined for afs:
afs_kaserver_t, afs_t, afs_fsserver_t, afs_bosserver_t, afs_vlserver_t, afs_ptserver_t
Note: semanage permissive -a PROCESS_TYPE can be used to make a process type permissive. Permissive process types are not denied access by SELinux. AVC messages will still be generated.
COMMANDS
semanage fcontext can also be used to manipulate default file context mappings.semanage permissive can also be used to manipulate whether or not a process type is permissive.
semanage module can also be used to enable/disable/install/remove policy modules.
semanage port can also be used to manipulate the port definitions
system-config-selinux is a GUI tool available to customize SELinux policy settings.
AUTHOR
This manual page was autogenerated by genman.py.SEE ALSO
selinux(8), afs(8), semanage(8), restorecon(8), chcon(1)
Index
This document was created by man2html, using the manual pages.
Time: 05:34:24 GMT, December 24, 2015


polylidar.polylidarutil.plane_filtering.Polygon¶
-
class
polylidar.polylidarutil.plane_filtering.
Polygon
(shell=None, holes=None)¶ A two-dimensional figure bounded by a linear ring
A polygon has a non-zero area. It may have one or more negative-space “holes” which are also bounded by linear rings. If any rings cross each other, the feature is invalid and operations on it may fail.
-
exterior
¶ The ring which bounds the positive space of the polygon.
- Type
LinearRing
-
interiors
¶ A sequence of rings which bound all existing holes.
- Type
sequence
-
__init__
(shell=None, holes=None)¶ - Parameters
shell (sequence) – A sequence of (x, y [,z]) numeric coordinate pairs or triples. Also can be a sequence of Point objects.
holes (sequence) – A sequence of objects which satisfy the same requirements as the shell parameters above
Example
Create a square polygon with no holes
>>> coords = ((0., 0.), (0., 1.), (1., 1.), (1., 0.), (0., 0.)) >>> polygon = Polygon(coords) >>> polygon.area 1.0
-
almost_equals
(other, decimal=6)¶ Returns True if geometries are equal at all coordinates to a specified decimal place
Refers to approximate coordinate equality, which requires coordinates be approximately equal and in the same order for all components of a geometry.
-
buffer
(distance, resolution=16, quadsegs=None, cap_style=1, join_style=1, mitre_limit=5.0, single_sided=False)¶ Returns a geometry with an envelope at a distance from the object’s envelope
- Parameters
distance (float) – The distance to buffer around the object. A negative distance has a “shrink” effect. A zero distance may be used to “tidy” a polygon.
resolution (int, optional) – The resolution of the buffer around each vertex of the object.
quadsegs (int, optional) – Sets the number of line segments used to approximate an angle fillet. Note: the use of a quadsegs parameter is deprecated and will be gone from the next major release.
cap_style (int, optional) – The styles of caps are: CAP_STYLE.round (1), CAP_STYLE.flat (2), and CAP_STYLE.square (3).
join_style (int, optional) – The styles of joins between offset segments are: JOIN_STYLE.round (1), JOIN_STYLE.mitre (2), and JOIN_STYLE.bevel (3).
mitre_limit (float, optional) – The mitre limit ratio is used for very sharp corners. The mitre ratio is the ratio of the distance from the corner to the end of the mitred offset corner. When two line segments meet at a sharp angle, a miter join will extend the original geometry. To prevent unreasonable geometry, the mitre limit allows controlling the maximum length of the join corner. Corners with a ratio which exceed the limit will be beveled.
single_side (bool, optional) –
- The side used is determined by the sign of the buffer distance:
a positive distance indicates the left-hand side a negative distance indicates the right-hand side
The single-sided buffer of point geometries is the same as the regular buffer. The End Cap Style for single-sided buffers is always ignored, and forced to the equivalent of CAP_FLAT.
Example –
>>> from shapely.wkt import loads >>> g = loads('POINT (0.0 0.0)') >>> g.buffer(1.0).area # 16-gon approx of a unit radius circle 3.1365484905459389 >>> g.buffer(1.0, 128).area # 128-gon approximation 3.1415138011443009 >>> g.buffer(1.0, 3).area # triangle approximation 3.0 >>> list(g.buffer(1.0, cap_style=CAP_STYLE.square).exterior.coords) [(1.0, 1.0), (1.0, -1.0), (-1.0, -1.0), (-1.0, 1.0), (1.0, 1.0)] >>> g.buffer(1.0, cap_style=CAP_STYLE.square).area 4.0
-
contains
(other)¶ Returns True if the geometry contains the other, else False
-
covers
(other)¶ Returns True if the geometry covers the other, else False
-
crosses
(other)¶ Returns True if the geometries cross, else False
-
difference
(other)¶ Returns the difference of the geometries
-
disjoint
(other)¶ Returns True if geometries are disjoint, else False
-
distance
(other)¶ Unitless distance to other geometry (float)
-
empty
(val=2291624810320)¶
-
equals
(other)¶ Returns True if geometries are equal, else False
Refers to point-set equality (or topological equality), and is equivalent to (self.within(other) & self.contains(other))
-
equals_exact
(other, tolerance)¶ Returns True if geometries are equal to within a specified tolerance
Refers to coordinate equality, which requires coordinates to be equal and in the same order for all components of a geometry
-
classmethod
from_bounds
(xmin, ymin, xmax, ymax)¶ Construct a Polygon() from spatial bounds.
-
geometryType
()¶
-
hausdorff_distance
(other)¶ Unitless hausdorff distance to other geometry (float)
-
interpolate
(distance, normalized=False)¶ Return a point at the specified distance along a linear geometry
Negative length values are taken as measured in the reverse direction from the end of the geometry. Out-of-range index values are handled by clamping them to the valid range of values. If the normalized arg is True, the distance will be interpreted as a fraction of the geometry’s length.
-
intersection
(other)¶ Returns the intersection of the geometries
-
intersects
(other)¶ Returns True if geometries intersect, else False
-
overlaps
(other)¶ Returns True if geometries overlap, else False
-
project
(other, normalized=False)¶ Returns the distance along this geometry to a point nearest the specified point
If the normalized arg is True, return the distance normalized to the length of the linear geometry.
-
relate
(other)¶ Returns the DE-9IM intersection matrix for the two geometries (string)
-
relate_pattern
(other, pattern)¶ Returns True if the DE-9IM string code for the relationship between the geometries satisfies the pattern, else False
-
representative_point
()¶ Returns a point guaranteed to be within the object, cheaply.
-
simplify
(tolerance, preserve_topology=True)¶ Returns a simplified geometry produced by the Douglas-Peucker algorithm
Coordinates of the simplified geometry will be no more than the tolerance distance from the original. Unless the topology preserving option is used, the algorithm may produce self-intersecting or otherwise invalid geometries.
-
svg
(scale_factor=1.0, fill_color=None)¶ Returns SVG path element for the Polygon geometry.
- Parameters
scale_factor (float) – Multiplication factor for the SVG stroke-width. Default is 1.
fill_color (str, optional) – Hex string for fill color. Default is to use “#66cc99” if geometry is valid, and “#ff3333” if invalid.
-
symmetric_difference
(other)¶ Returns the symmetric difference of the geometries (Shapely geometry)
-
to_wkb
()¶
-
to_wkt
()¶
-
touches
(other)¶ Returns True if geometries touch, else False
-
union
(other)¶ Returns the union of the geometries (Shapely geometry)
-
within
(other)¶ Returns True if geometry is within the other, else False
-
property
area
¶ Unitless area of the geometry (float)
-
property
array_interface_base
¶
-
property
boundary
¶ Returns a lower dimension geometry that bounds the object
The boundary of a polygon is a line, the boundary of a line is a collection of points. The boundary of a point is an empty (null) collection.
-
property
bounds
¶ Returns minimum bounding region (minx, miny, maxx, maxy)
-
property
centroid
¶ Returns the geometric center of the object
-
property
convex_hull
¶ that’s a convex hull, more or less
The convex hull of a three member multipoint, for example, is a triangular polygon.
- Type
Imagine an elastic band stretched around the geometry
-
property
coords
¶ Access to geometry’s coordinates (CoordinateSequence)
-
property
ctypes
¶ Return ctypes buffer
-
property
envelope
¶ A figure that envelopes the geometry
-
property
exterior
-
property
geom_type
¶ Name of the geometry’s type, such as ‘Point’
-
property
has_z
¶ True if the geometry’s coordinate sequence(s) have z values (are 3-dimensional)
-
impl
= <GEOSImpl object: GEOS C API version (1, 8, 0)>¶
-
property
interiors
-
property
is_closed
¶ True if the geometry is closed, else False
Applicable only to 1-D geometries.
-
property
is_empty
¶ True if the set of points in this geometry is empty, else False
-
property
is_ring
¶ True if the geometry is a closed ring, else False
-
property
is_simple
¶ True if the geometry is simple, meaning that any self-intersections are only at boundary points, else False
-
property
is_valid
¶ True if the geometry is valid (definition depends on sub-class), else False
-
property
length
¶ Unitless length of the geometry (float)
-
property
minimum_rotated_rectangle
¶ Returns the general minimum bounding rectangle of the geometry. Can possibly be rotated. If the convex hull of the object is a degenerate (line or point) this same degenerate is returned.
-
property
type
¶
-
property
wkb
¶ WKB representation of the geometry
-
property
wkb_hex
¶ WKB hex representation of the geometry
-
property
wkt
¶ WKT representation of the geometry
-
property
xy
¶ Separate arrays of X and Y coordinate values
-


As the Director of Analytics, I find technical solutions to business problems. The visualisation below shows the types of projects I have experience with on the left and the tools and languages that I have applied to build solutions on the right.


catch
clauses (no-ex-assign)If a catch
clause in a try
statement accidentally (or purposely) assigns another value to the exception parameter, it impossible to refer to the error from that point on.
Since there is no arguments
object to offer alternative access to this data, assignment of the parameter is absolutely destructive.
This rule disallows reassigning exceptions in catch
clauses.
Examples of incorrect code for this rule:
/*eslint no-ex-assign: "error"*/
try {
// code
} catch (e) {
e = 10;
}
Examples of correct code for this rule:
/*eslint no-ex-assign: "error"*/
try {
// code
} catch (e) {
var foo = 10;
}
This rule was introduced in ESLint 0.0.9.


--- layout: projects title: Research projects permalink: /projects/ ---
The community modeling tools and datasets are useful for applications (for examples see projects below) that evaluate past events , monitor current conditions, predict conditions hours to seasons in advance, and provide possible projections of changes in future years and centuries.
The ongoing projects featured below advance our knowledge independent of one another, and collectively provide a strong foundation for understanding and adapting to change. Importantly, this enables this collection of work to serve multiple needs for a variety of users. Click the links below to learn more.


As you hold your hands with thumbs touching and fingers spread, a thin sheet of flames shoots forth from your outstretched fingertips. Each creature in a 15-foot cone must make a Dexterity saving throw.
The fire ignites any flammable objects in the area that aren't being w orn or carried.
At Higher Levels. When you cast this spell using a spell slot of 2nd level or higher, the damage increases by 1d6 for each slot level above 1st.


Depending on browser support: Fixed steps will apply in the input field.
Note: type="number" is not supported in IE9 and earlier.


Demonstrates:
Using a fixed header row to implement column-level filters
Type numbers in textboxes to filter grid data
View Source:
View the source for this example on Github


Car Repair Services
Hanover, MarylandService Details
Car wash is a facility used to clean the exterior and, in some cases, the interior of motor vehicles. Car washes can be self-serve, fully automated, or full-service with attendants who wash the vehicle.
Services Offered
- Lorem Ipsum
- Lorem Ipsum
- Lorem Ipsum
- Lorem Ipsum
- Lorem Ipsum
Jeffrey Akridge
August 06, 2020 20:07 pm
Good Work


GERS IN THE DOCK
Five Rangers fans deny charges as they face trial over chaotic scenes at Kilmarnock match
by Campbell ThomasFIVE Rangers fans are facing trial after major disruption at their away match at Kilmarnock on the opening day of the season.
The Scottish Premiership game against Killie on August 4, ended 2-1 to Rangers after a stoppage time header from Connor Goldson.
It ended with a pitch invasion and chaotic scenes at the Ayrshire side's Rugby Park stadium.
Richard Bambridge, 29, Daniel McHugh, 25, Mattthew Brannigan, 27, and Jamie McEwan, 21, are accused of entering the field, embracing players, struggling with stewards, trying to take a photo with a player and gesticulating at rival fans.
Bambridge, of Baillieston and McHugh, of Blackhill, both Glasgow, Brannigan, of Bishopton, Renfrewshire and McEwan, of Bishopbriggs, Dunbartonshire, all deny breach of the peace.
They were freed on bail at Kilmarnock Sheriff Court for trial in April.
At a separate hearing in the same court, Rangers fan Dean Jackson, 18, was accused of singing a song with sectarian lyrics at the game.
Jackson, of Larbert, Stirlingshire, denies threatening or abusive behaviour aggravated by religious prejudice.
He was bailed for trial in April and banned from attending any regulated football match in Scotland meantime.
Police Scotland put out a public appeal for information after the match disruption, which caused the roof of a sheltered disabled section to cave in.
Officers later said 13 men and boys had been charged with offences connected to the disorder.


Description
Option
Description
Description
Option
Error with checkbox
Option
Option
Option
Option
expand_less
expand_more
write a quantity
Option
expand_less
expand_more
Error with number
Option
expand_less
expand_more
Error with number
Option
expand_less
expand_more
Error with number
Hola
Hola
Hola
Hola


pysimm.apps.polymatic module¶
-
pysimm.apps.polymatic.
lmps_cycle_npt_md
(s, bonds, settings)[source]¶ Runs LAMMPS npt cycle md for the Polymatic algorithm.
Parameters: - s –
System
to minimize - bonds – number of bond to be made
- settings – object containing Polymatic settings
Returns: result from lmps.md
- s –
-
pysimm.apps.polymatic.
lmps_cycle_nvt_md
(s, bonds, settings)[source]¶ Runs LAMMPS nvt cycle md for the Polymatic algorithm.
Parameters: - s –
System
to minimize - bonds – number of bond to be made
- settings – object containing Polymatic settings
Returns: result from
md()
- s –
-
pysimm.apps.polymatic.
lmps_min
(s, name, settings)[source]¶ Runs LAMMPS minimization for the Polymatic algorithm.
Parameters: - s –
System
to minimize - name – name of simulation
- settings – object containing Polymatic settings
Returns: result from
minimize()
- s –
-
pysimm.apps.polymatic.
lmps_step_md
(s, bonds, attempt, settings)[source]¶ Runs LAMMPS step md for the Polymatic algorithm.
Parameters: - s –
System
to minimize - bonds – number of bond to be made
- attempt – number of bonding attempt
- settings – object containing Polymatic settings
Returns: result from
md()
- s –
-
pysimm.apps.polymatic.
pack
(script, file_in, nrep, boxl, file_out)[source]¶ Calls Polymatic random packing code
Parameters: - script – name of packing script
- file_in – list of file names of reference molecules to pack
- nrep – list of number of monomers for each reference molecule
- boxl – length of one dimension of simulation box for random packing
- file_out – name of output file (packed system)
Returns: output from perl code


Please wait...
You have 4 new Notifications
Campaign
Holiday Sale
is nearly reach budget limit.
10:00 AM Today
See all notifications
Welcome,
Lecturer
Exp
14
Awards
13
Clients
213
Dashboard
Lecture Notes
Upload Lecture Notes
View Lecture Notes
Assignments
Upload Assignments
View Assignments
Download Assignments
Quiz
Upload Quiz
View Quiz
Progression
Quiz Results
Overall
Notice Board
Upload Notice Board
View Notice Board
Intake 33
Intake 34
Intake 35
Intake 36
19-04-2018 - Today
Quiz 01
Introduction to Information Security
Passed Percentage
Failed Percentage
Not Submitted Percentage
View
Delete
19-04-2018 - Yesterday
Quiz 02
Big Data Analytics
Passed Percentage
Failed Percentage
Not Submitted Percentage
View
Delete
19-04-2018 - Today
Quiz 03
Natural Language Processing
Passes Percentage
Failed Percentage
Not Submitted Percentage
View
Delete
19-08-2019
Quiz 01
Data Structures & Algorithms
Passed Percentage
Failed Percentage
Not Submitted Percentage
View
Delete
19-07-2019
Quiz 01
Object Oriented Programming I
Passed Percentage
Failed Percentage
Not Submitted Percentage
View
Delete


By default, VoxelDesc exposes just five basic objects to the scripting engine:
Of these, you're going to use scene and camera 80% of the time. The others are mostly so you can say things like,
canvas.repaint();
app.window.setSize(1280, 1024);
console.window.visible = true;
Note for Java programmers
Yes, those are regular Java properties in the above example.console.getWindow().setVisible(true);
works just as well (it's just a JFrame). But Javascript accepts a shorter, friendlier syntax.
In addition, VoxelDesc offers you 13 predefined colors: black, blue, cyan, dgray, gray, green, lgray, magenta, orange, pink, red, white and yellow. Considering you can modify each of them with .brighter()
and .darker()
, that gives you 39 predefined colors on the command line. But you can create any shade with scene.color(r, g, b)
, or the Palette dialog in the GUI.
Note for Java programmersHelp home
You'll notice this list corresponds to the constants in java.awt.Color; it's a selection as good as any other.


Load images responsivly depending on window size. Start by loading the smallest image and only load larger if needed. If the data-src
attr is not set then no image replacement happens.
<img src='/path/img-xs.jpg' data-src='{
"xs":"/path/img-xs.jpg",
"sm":"/path/img-sm.jpg",
"md":"/path/img-md.jpg",
"lg":"/path/img-lg.jpg"
}' />


7/2/2017 - Due to lack of communication to ℄ and ✵ΕΛ✵, past ally clan to us, is not neutral.
This means we avoid their servers, old friends are allowed to play on same servers, but there can be regional wars too, thus teaming or making war is not considered an issue of ℄. What is important, is that in one ℄ player sees another ℄ player been eaten, he is obliged to support ℄ with all causes. This issue will be highly disputed and examined because it is clan that goes first.
*We need to mention that ✵ΕΛ✵ have supported us in all major clan fights in past, as we also did to them.
**We highly suggest and inform players not to insult any clan or players.


| 1 | /* | |
| 2 | * Licensed to the Apache Software Foundation (ASF) under one or more | |
| 3 | * contributor license agreements. See the NOTICE file distributed with | |
| 4 | * this work for additional information regarding copyright ownership. | |
| 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 | |
| 6 | * (the "License"); you may not use this file except in compliance with | |
| 7 | * the License. You may obtain a copy of the License at | |
| 8 | * | |
| 9 | * http://www.apache.org/licenses/LICENSE-2.0 | |
| 10 | * | |
| 11 | * Unless required by applicable law or agreed to in writing, software | |
| 12 | * distributed under the License is distributed on an "AS IS" BASIS, | |
| 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| 14 | * See the License for the specific language governing permissions and | |
| 15 | * limitations under the License. | |
| 16 | */ | |
| 17 | package org.apache.commons.imaging.formats.jpeg.segments; | |
| 18 | ||
| 19 | import java.io.IOException; | |
| 20 | import java.io.InputStream; | |
| 21 | ||
| 22 | import org.apache.commons.imaging.formats.jpeg.JpegConstants; | |
| 23 | ||
| 24 | public class AppnSegment extends GenericSegment { | |
| 25 | public AppnSegment(final int marker, final int marker_length, final InputStream is) | |
| 26 | throws IOException { | |
| 27 | super(marker, marker_length, is); | |
| 28 | } | |
| 29 | ||
| 30 | @Override | |
| 31 | public String getDescription() { | |
| 32 |
2
1. getDescription : Replaced integer subtraction with addition → NO_COVERAGE 2. getDescription : mutated return of Object value for org/apache/commons/imaging/formats/jpeg/segments/AppnSegment::getDescription to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return "APPN (APP" + (marker - JpegConstants.JPEG_APP0_Marker) |
| 33 | + ") (" + getSegmentType() + ")"; | |
| 34 | } | |
| 35 | } | |
Mutations | ||
| 32 |
1.1 2.2 |


Animal Giphy!!
Add another button to search for more giphy! →
Add New Gif Button!
Click on these buttons to display gifs below!


AFTERGLOW A film review by Steve Rhodes Copyright 1998 Steve Rhodes
RATING (0 TO ****): ***
Although the buzz about writer and director Alan Rudolph's new film AFTERGLOW surrounds the astonishing performance by Julie Christie, the film offers many other delights. Besides her Oscar-caliber work, other stars shine in Rudolph's wonderfully complex and intentionally ambiguous film. Certain to invoke conversations afterwards, the film exercises viewers' minds and emotions.
Equal parts romance, tragedy and comedy, it starts slowly but soon finds its legs. By the end, you will be wrapped up in this four-person drama and feel like you are wishing your quirky, old friends good-bye.
As 57-year-old, B-movie actress Phyllis Mann, Julie Christie delivers her best performance in several decades. Married for 24 years, Phyllis wiles away her time drinking heavily and watching her old, and admittedly awful, pictures on television. Looking like she gave up on life years ago, eight year ago as it turns out, she suffers from depression. Off to see a doctor since her "soul needs a overhaul," she searches for some meaning or purpose to her life.
Mark Isham's jazz music has a soulful trumpet playing as Phyllis discusses her predicaments. And Toyomichi Kurita's radiantly lovely cinematography sets the scenes in rich and hazy colors.
A lovable, shaggy-haired Nick Nolte plays Lucky Mann, a ruggedly handsome repairman who calls himself "The Fix-It Man." Lucky's specialty is fixing more than just the broken faucets of his female customers. His wife calls him an alley cat, which he doesn't deny. Lucky is careful in his affairs. "I trust the ones who never sleep around but feel like getting lucky," he explains. (His name takes on many meanings and is a constant source of puns in the show's deliciously funny script, full of biting wit.)
We meet the rich and sexy young Marianne Byron as she is ovulating.  But as with Lucky and his wife, her spouse isn't interested in having sex with her. Playing an airhead, Lara Flynn Boyle has Marianne down to a tee. When she puts on clothes, she fidgets constantly -- if I pull this part down a bit maybe I'll be sexier, or maybe adjusting this would be better.
Her pompous husband, Jeffrey Byron III, is played by Jonny Lee Miller as the proverbial cold fish. ("I'm Jeffrey Byron III," he introduces himself. "There won't be a IV. We Byrons quit when we get it right.") The only character you may find yourself despising, he's bored with his successful business, his gorgeous wife, and everything in his easy life. His favorite diversion is balancing precariously on the outside ledge in his office in a skyscraper. Fear seems to be one of the few things that turn him on.
Jeffrey constantly infuriates his wife. "You're too stuck on yourself to be jealous," she tells him when he finds out about her new contractor.
Their coldly modernistic apartment, designed by Francois Seguin, serves as the perfect metaphor for their lifeless marriage. Everything from the audio to the lights are controlled with a single remote, which never seems to work right.
At the same time that Lucky and Marianne are having an affair, Jeffrey starts making eyes at Phyllis with neither realizing the connection with their spouses. The overconfident Jeffrey is way out of his league when he tries to sweep Phyllis off her feet.
"I live up to the very edge of my charm," he tells her in what he deludes himself into thinking is a good come-on line. "You're the most fascinating woman I've met in my entire life," he tells her. "Yes, I know," she fires back with complete confidence. She has him wrapped around her finger, but he's not smart enough to know it.
The body of the story can't be described without giving away some dramatic and relatively unexpected twists in the plot. Suffice it to say that it builds with a furious pace.
The deliberately ambiguous ending beautifully wraps up four complicated lives as well can be expected. The upbeat conclusion has a carefully constructed symmetry that does not suffer from the usual bastardization caused by too many test screening. Alan Rudolph knows where he want his pictures to go, and he takes them there.
AFTERGLOW runs 1:54. It is rated R for profanity, sex and brief nudity and would be fine for mature teenagers.
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