{"product_id":"streamlining-your-research-laboratory-with-python-hardback-9781394249886","title":"Streamlining Your Research Laboratory with Python (Hardback) 9781394249886","description":"\u003cfont face=\"Georgia\"\u003e\r\n\u003cp\u003e\u003cfont size=\"6\"\u003eStreamlining Your Research Laboratory with Python\u003c\/font\u003e\u003cbr\u003e\r\n\r\n\r\n\r\n\r\n\r\n\u003c\/p\u003e\n\u003cp\u003e\u003cfont size=\"4\"\u003eMark F. Russo (Author), William Neil (Author)\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\u003cp\u003e\u003cfont size=\"3\"\u003e9781394249886, Wiley\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\u003cp\u003e\u003cfont size=\"3\"\u003eHardback, published 23 June 2025\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\u003cp\u003e\u003cfont size=\"3\"\u003e384 pages\u003cbr\u003e25.7 x 17.8 x 2.3 cm, 0.953 kg\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\r\n\r\n\r\n\r\n\u003cp align=\"justify\"\u003e\u003cstrong\u003e\u003cfont size=\"3\"\u003e\u003cp\u003e\u003cb\u003eEnables scientists and researchers to efficiently use one of the most popular programming languages in their day-to-day work\u003c\/b\u003e \u003c\/p\u003e\n\u003cp\u003e\u003ci\u003eStreamlining Your Research Laboratory with Python\u003c\/i\u003e covers the Python programming language and its ecosystem of tools applied to tasks encountered by laboratory scientists and technicians working in the life sciences. After opening with the basics of Python, the chapters move through working with and analyzing data, generating reports, and automating the lab environment. \u003c\/p\u003e\n\u003cp\u003eThe book includes example processes within chapters and code listings on nearly every page along with schematics and plots that can clearly illustrate Python at work in the lab. The book also explores some real-world examples of Python’s application in research settings, demonstrating its potential to streamline processes, improve productivity, and foster innovation. \u003c\/p\u003e\n\u003cp\u003e\u003ci\u003eStreamlining Your Research Laboratory with Python\u003c\/i\u003e includes information on: \u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eLanguage basics including the interactive console, data types, variables and literals, strings, and expressions using operators\u003c\/li\u003e\n\u003cli\u003eCustom functions and exceptions such as arguments and parameters, names and scope, and decorators\u003c\/li\u003e\n\u003cli\u003eConditional and repeated execution as methods to control the flow of a program\u003c\/li\u003e\n\u003cli\u003eTools such as JupyterLab, Matplotlib, NumPy, pandas DataFrame, and SciPy\u003c\/li\u003e\n\u003cli\u003eReport generation in Microsoft Word and PowerPoint, PDF report generation, and serving results through HTTP and email automatically\u003c\/li\u003e\n\u003c\/ul\u003e \u003cp\u003eWhether you are a biologist analyzing genetic data, a chemist scouting synthesis routes, an engineer optimizing machine parameters, or a social scientist studying human behavior, \u003ci\u003eStreamlining Your Research Laboratory with Python\u003c\/i\u003e serves as a logical and practical guide to add Python to your research toolkit.\u003c\/p\u003e\u003c\/font\u003e\u003c\/strong\u003e\u003c\/p\u003e\r\n\r\n\u003cp\u003e\u003cfont size=\"3\"\u003e\u003cp\u003ePreface xv\u003c\/p\u003e \u003cp\u003e\u003cb\u003e1 Introduction 1\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e1.1 Python Implementations 1\u003c\/p\u003e \u003cp\u003e1.2 Installing the Python Toolkit 2\u003c\/p\u003e \u003cp\u003e1.3 Python 3 vs. Python 2 2\u003c\/p\u003e \u003cp\u003e1.4 Python Package Index 3\u003c\/p\u003e \u003cp\u003e1.5 Programming Editors 5\u003c\/p\u003e \u003cp\u003e1.6 Notebook Editors 5\u003c\/p\u003e \u003cp\u003e1.7 Using the Jupyter Notebook Interface 7\u003c\/p\u003e \u003cp\u003e1.8 JupyterLite 8\u003c\/p\u003e \u003cp\u003e1.9 Things Change 9\u003c\/p\u003e \u003cp\u003e1.10 Key Takeaways 9\u003c\/p\u003e \u003cp\u003e\u003cb\u003e2 Language Basics 11\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e2.1 Python Interactive Console 11\u003c\/p\u003e \u003cp\u003e2.2 Data Types 11\u003c\/p\u003e \u003cp\u003e2.3 Variables and Literals 14\u003c\/p\u003e \u003cp\u003e2.4 Strings 15\u003c\/p\u003e \u003cp\u003e2.4.1 Simple Strings 15\u003c\/p\u003e \u003cp\u003e2.4.2 Multi-Line Strings 16\u003c\/p\u003e \u003cp\u003e2.4.3 Escape Characters in a String 16\u003c\/p\u003e \u003cp\u003e2.4.4 Raw Strings 18\u003c\/p\u003e \u003cp\u003e2.4.5 Formatted Strings 18\u003c\/p\u003e \u003cp\u003e2.4.6 Strings as Objects 19\u003c\/p\u003e \u003cp\u003e2.4.7 Characters and Encodings 21\u003c\/p\u003e \u003cp\u003e2.5 Expressions Using Operators 22\u003c\/p\u003e \u003cp\u003e2.5.1 Arithmetic Operators 22\u003c\/p\u003e \u003cp\u003e2.5.2 Assignment Operators 24\u003c\/p\u003e \u003cp\u003e2.5.3 Comparison Operators 25\u003c\/p\u003e \u003cp\u003e2.5.4 Boolean Operators 26\u003c\/p\u003e \u003cp\u003e2.5.5 Chaining Comparisons 28\u003c\/p\u003e \u003cp\u003e2.5.6 Comparing Floating-Point Numbers 29\u003c\/p\u003e \u003cp\u003e2.6 Functions and How to Use Them 29\u003c\/p\u003e \u003cp\u003e2.6.1 Invoking Functions 30\u003c\/p\u003e \u003cp\u003e2.6.2 Built-in Functions 31\u003c\/p\u003e \u003cp\u003e2.6.3 The math Module for Additional Mathematical Functions 31\u003c\/p\u003e \u003cp\u003e2.6.4 The random Module for Pseudo-Random Number Generation 33\u003c\/p\u003e \u003cp\u003e2.6.5 The time and datetime Modules for Handling Dates and Times 36\u003c\/p\u003e \u003cp\u003e2.6.6 The sys Module for System Interactions 39\u003c\/p\u003e \u003cp\u003e2.6.7 Scope and Namespace 40\u003c\/p\u003e \u003cp\u003e2.7 Your First Python Program 41\u003c\/p\u003e \u003cp\u003e2.8 Key Takeaways 42\u003c\/p\u003e \u003cp\u003e\u003cb\u003e3 Data Structures 45\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e3.1 Lists 45\u003c\/p\u003e \u003cp\u003e3.1.1 Introducing Lists 45\u003c\/p\u003e \u003cp\u003e3.1.2 Global Functions That Operate on Lists 46\u003c\/p\u003e \u003cp\u003e3.1.3 Accessing List Elements 46\u003c\/p\u003e \u003cp\u003e3.1.4 Slicing Lists 47\u003c\/p\u003e \u003cp\u003e3.1.5 Lists Operators 49\u003c\/p\u003e \u003cp\u003e3.1.6 Lists as Objects 51\u003c\/p\u003e \u003cp\u003e3.2 Tuples 55\u003c\/p\u003e \u003cp\u003e3.2.1 Introducing Tuples 55\u003c\/p\u003e \u003cp\u003e3.3 Dictionaries 56\u003c\/p\u003e \u003cp\u003e3.3.1 Introducing Dictionaries 56\u003c\/p\u003e \u003cp\u003e3.3.2 Global Functions That Operate on Dictionaries 57\u003c\/p\u003e \u003cp\u003e3.3.3 Accessing Dictionary Items 57\u003c\/p\u003e \u003cp\u003e3.3.4 Dictionary Operators 58\u003c\/p\u003e \u003cp\u003e3.3.5 Dictionaries as Objects 59\u003c\/p\u003e \u003cp\u003e3.4 Sets 61\u003c\/p\u003e \u003cp\u003e3.4.1 Introducing Sets 61\u003c\/p\u003e \u003cp\u003e3.4.2 Global Functions That Operate on Sets 62\u003c\/p\u003e \u003cp\u003e3.4.3 Accessing Set Elements 62\u003c\/p\u003e \u003cp\u003e3.4.4 Set Operators 62\u003c\/p\u003e \u003cp\u003e3.4.5 Sets as Objects 64\u003c\/p\u003e \u003cp\u003e3.5 Destructuring Assignment 65\u003c\/p\u003e \u003cp\u003e3.6 Key Takeaways 66\u003c\/p\u003e \u003cp\u003e\u003cb\u003e4 Controlling the Flow of a Program 67\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e4.1 Conditional Execution 67\u003c\/p\u003e \u003cp\u003e4.1.1 If-Statements 67\u003c\/p\u003e \u003cp\u003e4.1.2 If-Else Statements 68\u003c\/p\u003e \u003cp\u003e4.1.3 If-Elif-Else Statements 70\u003c\/p\u003e \u003cp\u003e4.1.4 If-Statement Strategies 71\u003c\/p\u003e \u003cp\u003e4.1.5 Truthy and Falsy Values 74\u003c\/p\u003e \u003cp\u003e4.1.6 Conditional Expressions 75\u003c\/p\u003e \u003cp\u003e4.2 Repeated Execution 76\u003c\/p\u003e \u003cp\u003e4.2.1 While-Statements 76\u003c\/p\u003e \u003cp\u003e4.2.2 For-Statements 81\u003c\/p\u003e \u003cp\u003e4.2.3 For-Statements with Range 83\u003c\/p\u003e \u003cp\u003e4.2.4 Break and Continue 84\u003c\/p\u003e \u003cp\u003e4.2.5 Comprehensions 85\u003c\/p\u003e \u003cp\u003e4.3 Key Takeaways 87\u003c\/p\u003e \u003cp\u003e\u003cb\u003e5 Custom Functions and Exceptions 89\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e5.1 Defining Custom Functions 89\u003c\/p\u003e \u003cp\u003e5.2 Arguments and Parameters 94\u003c\/p\u003e \u003cp\u003e5.3 Names and Scope 97\u003c\/p\u003e \u003cp\u003e5.3.1 Local vs. Global 97\u003c\/p\u003e \u003cp\u003e5.3.2 Built-in and Nonlocal Scope 99\u003c\/p\u003e \u003cp\u003e5.4 Scope vs. Namespace 100\u003c\/p\u003e \u003cp\u003e5.5 Organizing Your Code with Modules 102\u003c\/p\u003e \u003cp\u003e5.6 Decorators 104\u003c\/p\u003e \u003cp\u003e5.7 How Things Go Wrong 106\u003c\/p\u003e \u003cp\u003e5.8 Python Exceptions 106\u003c\/p\u003e \u003cp\u003e5.9 Handling Exceptions 107\u003c\/p\u003e \u003cp\u003e5.10 Raising Your Own Exceptions 110\u003c\/p\u003e \u003cp\u003e5.11 Key Takeaways 112\u003c\/p\u003e \u003cp\u003e\u003cb\u003e6 Regular Expressions 115\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e6.1 Matching Literal Text 115\u003c\/p\u003e \u003cp\u003e6.2 Alternation 116\u003c\/p\u003e \u003cp\u003e6.3 Defining and Matching Character Classes 116\u003c\/p\u003e \u003cp\u003e6.4 Metaclasses 117\u003c\/p\u003e \u003cp\u003e6.5 Pattern Sequences 117\u003c\/p\u003e \u003cp\u003e6.6 Repeating Patterns with Quantifiers 118\u003c\/p\u003e \u003cp\u003e6.7 Anchors 119\u003c\/p\u003e \u003cp\u003e6.8 Capturing Groups 120\u003c\/p\u003e \u003cp\u003e6.9 Regular Expressions in Python 122\u003c\/p\u003e \u003cp\u003e6.10 Project – A Formula Mass Calculator 123\u003c\/p\u003e \u003cp\u003e6.11 Key Takeaways 130\u003c\/p\u003e \u003cp\u003e\u003cb\u003e7 Working with Data 131\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e7.1 A File System Primer 131\u003c\/p\u003e \u003cp\u003e7.2 Text Files 133\u003c\/p\u003e \u003cp\u003e7.3 Reading and Writing Text Files 134\u003c\/p\u003e \u003cp\u003e7.4 Working with Comma-Separated Values (CSV) Files 139\u003c\/p\u003e \u003cp\u003e7.5 The csv Module 144\u003c\/p\u003e \u003cp\u003e7.6 Reading and Writing Excel Spreadsheet 145\u003c\/p\u003e \u003cp\u003e7.6.1 openpyxl Workbook Object 146\u003c\/p\u003e \u003cp\u003e7.6.2 openpyxl Worksheet Object 147\u003c\/p\u003e \u003cp\u003e7.6.3 openpyxl Cell Object 148\u003c\/p\u003e \u003cp\u003e7.7 Project – Generate a Random Sample Layout in a Spreadsheet 148\u003c\/p\u003e \u003cp\u003e7.8 Project – Forecast Monthly Sample Processing 150\u003c\/p\u003e \u003cp\u003e7.9 Managing the File System 154\u003c\/p\u003e \u003cp\u003e7.9.1 The Path Object 155\u003c\/p\u003e \u003cp\u003e7.9.2 Path Properties 155\u003c\/p\u003e \u003cp\u003e7.9.3 Path Attributes 156\u003c\/p\u003e \u003cp\u003e7.9.4 Operating On a Path 157\u003c\/p\u003e \u003cp\u003e7.9.5 Combining Paths 158\u003c\/p\u003e \u003cp\u003e7.9.6 The shutil Module for High-Level File Operations 159\u003c\/p\u003e \u003cp\u003e7.10 Walking a File System Tree 159\u003c\/p\u003e \u003cp\u003e7.11 Project – Find Duplicate Files 161\u003c\/p\u003e \u003cp\u003e7.12 Working with Zip Files 163\u003c\/p\u003e \u003cp\u003e7.12.1 ZipFile Object 163\u003c\/p\u003e \u003cp\u003e7.12.2 zipfile Path Object 163\u003c\/p\u003e \u003cp\u003e7.12.3 Creating Zip Archives 164\u003c\/p\u003e \u003cp\u003e7.13 Working with Standard Data Formats 165\u003c\/p\u003e \u003cp\u003e7.13.1 JSON – JavaScript Object Notation 165\u003c\/p\u003e \u003cp\u003e7.13.2 json Python Module 166\u003c\/p\u003e \u003cp\u003e7.13.3 XML – Extensible Markup Language 168\u003c\/p\u003e \u003cp\u003e7.13.4 Python XML modules 170\u003c\/p\u003e \u003cp\u003e7.13.5 Other Standard Data Formats 176\u003c\/p\u003e \u003cp\u003e7.14 Key Takeaways 176\u003c\/p\u003e \u003cp\u003e\u003cb\u003e8 Web Resources 179\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e8.1 TCP\/IP Networks – What You Need to Know 179\u003c\/p\u003e \u003cp\u003e8.1.1 Internet Protocol 180\u003c\/p\u003e \u003cp\u003e8.1.2 Transmission Control Protocol 180\u003c\/p\u003e \u003cp\u003e8.1.3 Connections and Ports 180\u003c\/p\u003e \u003cp\u003e8.1.4 Application Layer Protocols 181\u003c\/p\u003e \u003cp\u003e8.1.5 IPv4 vs. IPv6 Addresses 181\u003c\/p\u003e \u003cp\u003e8.1.6 Proxy Servers 181\u003c\/p\u003e \u003cp\u003e8.2 Introduction to Hypertext Transfer Protocol 182\u003c\/p\u003e \u003cp\u003e8.2.1 The Uniform Resource Locator 183\u003c\/p\u003e \u003cp\u003e8.2.2 Anatomy of an HTTP Request 184\u003c\/p\u003e \u003cp\u003e8.2.3 Anatomy of an HTTP Response 186\u003c\/p\u003e \u003cp\u003e8.3 Web Services and the Python Requests Module 187\u003c\/p\u003e \u003cp\u003e8.3.1 HTTP GET Requests and the Response Object 188\u003c\/p\u003e \u003cp\u003e8.3.2 HTTP POST Requests 189\u003c\/p\u003e \u003cp\u003e8.3.3 Binary Responses 190\u003c\/p\u003e \u003cp\u003e8.3.4 Customizing the Request Object 193\u003c\/p\u003e \u003cp\u003e8.3.5 Verifying Certificates and Encryption 193\u003c\/p\u003e \u003cp\u003e8.3.6 Other requests Module Options 194\u003c\/p\u003e \u003cp\u003e8.4 Project – Print Weather Forecast for a Location 195\u003c\/p\u003e \u003cp\u003e8.4.1 National Weather Service API Web Service 195\u003c\/p\u003e \u003cp\u003e8.4.2 Getting Forecast URL from Geolocation 197\u003c\/p\u003e \u003cp\u003e8.4.3 Loading and Processing Forecast Data 197\u003c\/p\u003e \u003cp\u003e8.4.4 Completed Program to Generate Temperature Forecast 198\u003c\/p\u003e \u003cp\u003e8.5 Project – Scraping HTML Page Content 201\u003c\/p\u003e \u003cp\u003e8.6 Key Takeaways 206\u003c\/p\u003e \u003cp\u003e\u003cb\u003e9 Data Analysis and Visualization 209\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e9.1 JupyterLab 209\u003c\/p\u003e \u003cp\u003e9.2 Scientific Plotting with Matplotlib 211\u003c\/p\u003e \u003cp\u003e9.2.1 The pyplot Submodule 212\u003c\/p\u003e \u003cp\u003e9.2.2 The pyplot.plot() function 212\u003c\/p\u003e \u003cp\u003e9.2.3 Customizing a Plot 213\u003c\/p\u003e \u003cp\u003e9.2.4 Multiple Curves on a Single Plot 214\u003c\/p\u003e \u003cp\u003e9.2.5 Additional Plot Types 214\u003c\/p\u003e \u003cp\u003e9.2.6 Multiple Axes on a Single Figure 214\u003c\/p\u003e \u003cp\u003e9.2.7 Other Useful Functions 216\u003c\/p\u003e \u003cp\u003e9.2.8 Project – Plotting Weather Forecast 216\u003c\/p\u003e \u003cp\u003e9.2.9 Project – A Custom Microplate Heat Map 219\u003c\/p\u003e \u003cp\u003e9.2.10 Other Scientific Plotting Libraries 222\u003c\/p\u003e \u003cp\u003e9.3 NumPy – Numerical Python 223\u003c\/p\u003e \u003cp\u003e9.3.1 Creating ndarray Objects 223\u003c\/p\u003e \u003cp\u003e9.3.2 Working with ndarray Objects 223\u003c\/p\u003e \u003cp\u003e9.3.3 Accessing and Updating ndarray Elements 224\u003c\/p\u003e \u003cp\u003e9.3.4 Broadcasting 226\u003c\/p\u003e \u003cp\u003e9.4 pandas DataFrame 226\u003c\/p\u003e \u003cp\u003e9.4.1 Creating and Inspecting DataFrames 227\u003c\/p\u003e \u003cp\u003e9.4.2 Filtering DataFrames 228\u003c\/p\u003e \u003cp\u003e9.4.3 Project – A Screening Experiment 230\u003c\/p\u003e \u003cp\u003e9.5 SciPy – A Library for Mathematics, Science, and Engineering 239\u003c\/p\u003e \u003cp\u003e9.5.1 Descriptive Statistics with SciPy 239\u003c\/p\u003e \u003cp\u003e9.5.2 Hypothesis Testing 239\u003c\/p\u003e \u003cp\u003e9.5.3 Project – Running Hypothesis Tests on Two Samples 240\u003c\/p\u003e \u003cp\u003e9.5.4 Project – Comparing Liquid Handler Syringe Performance 243\u003c\/p\u003e \u003cp\u003e9.5.5 Linear Regression 245\u003c\/p\u003e \u003cp\u003e9.5.6 Fitting Nonlinear Models to Data 246\u003c\/p\u003e \u003cp\u003e9.5.7 Project – Four-Parameter Logistic Regression 248\u003c\/p\u003e \u003cp\u003e9.6 Key Takeaways 253\u003c\/p\u003e \u003cp\u003e\u003cb\u003e10 Report Generation 255\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e10.1 BytesIO Object 255\u003c\/p\u003e \u003cp\u003e10.2 Generating Reports in Microsoft Word 257\u003c\/p\u003e \u003cp\u003e10.2.1 Document Object 257\u003c\/p\u003e \u003cp\u003e10.2.2 Paragraph Object 258\u003c\/p\u003e \u003cp\u003e10.2.3 Run Object 259\u003c\/p\u003e \u003cp\u003e10.2.4 Picture and InlineShape Objects 260\u003c\/p\u003e \u003cp\u003e10.2.5 Table Object 261\u003c\/p\u003e \u003cp\u003e10.2.6 Project – Generate a Complete Word Report 263\u003c\/p\u003e \u003cp\u003e10.3 Generating Microsoft PowerPoint Presentations 266\u003c\/p\u003e \u003cp\u003e10.3.1 Presentation Object 266\u003c\/p\u003e \u003cp\u003e10.3.2 Slide Objects 267\u003c\/p\u003e \u003cp\u003e10.3.3 SlideShapes Object 268\u003c\/p\u003e \u003cp\u003e10.3.4 Length Objects 269\u003c\/p\u003e \u003cp\u003e10.3.5 Table Object 269\u003c\/p\u003e \u003cp\u003e10.3.6 Project – Generate a PowerPoint Document with Figures and Tables 272\u003c\/p\u003e \u003cp\u003e10.4 Generating PDF File Reports 275\u003c\/p\u003e \u003cp\u003e10.4.1 ReportLab PDF Generation Process 275\u003c\/p\u003e \u003cp\u003e10.4.2 Creating a Canvas Object 276\u003c\/p\u003e \u003cp\u003e10.4.3 Setting Canvas Styles 276\u003c\/p\u003e \u003cp\u003e10.4.4 Managing Text Blocks with PDFTextObjects 278\u003c\/p\u003e \u003cp\u003e10.4.5 Canvas State Stack 281\u003c\/p\u003e \u003cp\u003e10.4.6 Drawing Images 281\u003c\/p\u003e \u003cp\u003e10.4.7 PLATYPUS for Page Layout 283\u003c\/p\u003e \u003cp\u003e10.4.8 Project – Generate a Complete PDF Report 283\u003c\/p\u003e \u003cp\u003e10.5 Sending Email Programmatically 287\u003c\/p\u003e \u003cp\u003e10.5.1 Simple Mail Transfer Protocol 288\u003c\/p\u003e \u003cp\u003e10.5.2 SMTP Mail Server 288\u003c\/p\u003e \u003cp\u003e10.5.3 Send a Simple Email Message 288\u003c\/p\u003e \u003cp\u003e10.5.4 Sending Email Messages over a Secure Connection 291\u003c\/p\u003e \u003cp\u003e10.5.5 Building an Email Message with Attachments 292\u003c\/p\u003e \u003cp\u003e10.6 Serving Results with an HTTP Server 294\u003c\/p\u003e \u003cp\u003e10.7 Key Takeaways 296\u003c\/p\u003e \u003cp\u003e\u003cb\u003e11 Control and Automation 297\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e11.1 Concurrency in Python 297\u003c\/p\u003e \u003cp\u003e11.2 Asynchronous Execution 299\u003c\/p\u003e \u003cp\u003e11.3 Concurrent Programs with AsyncIO 300\u003c\/p\u003e \u003cp\u003e11.4 Asynchronous Instrument Control and Coordination 304\u003c\/p\u003e \u003cp\u003e11.4.1 Project – Integrated Laboratory System Control and Coordination 304\u003c\/p\u003e \u003cp\u003e11.5 Communicating over a Serial Port 311\u003c\/p\u003e \u003cp\u003e11.5.1 Reading Barcodes from a Serial Port 312\u003c\/p\u003e \u003cp\u003e11.5.2 Project – Scanning Sample Tasks into a Running Controller 318\u003c\/p\u003e \u003cp\u003e11.6 Execute Remote Commands over HTTP 319\u003c\/p\u003e \u003cp\u003e11.6.1 A Basic HTTP Server with aiohttp 320\u003c\/p\u003e \u003cp\u003e11.6.2 Routing an HTTP Request to a Custom Python Function 321\u003c\/p\u003e \u003cp\u003e11.7 Persistent Network Connections using a WebSocket 325\u003c\/p\u003e \u003cp\u003e11.7.1 A User Interface for Asynchronous Networked Programs 326\u003c\/p\u003e \u003cp\u003e11.7.2 WebSocketResponse and FileResponse Objects 326\u003c\/p\u003e \u003cp\u003e11.7.3 Project – A Browser-Based WebSocket Message Broadcaster 327\u003c\/p\u003e \u003cp\u003e11.7.4 Project – A Browser User Interface to Schedule Samples for Analysis 335\u003c\/p\u003e \u003cp\u003e11.8 Responding to File System Changes 338\u003c\/p\u003e \u003cp\u003e11.8.1 Watching a Directory for Changes with watchfiles 338\u003c\/p\u003e \u003cp\u003e11.8.2 File System Monitoring Options 340\u003c\/p\u003e \u003cp\u003e11.9 Executing Tasks on a Schedule 341\u003c\/p\u003e \u003cp\u003e11.9.1 sched Module 342\u003c\/p\u003e \u003cp\u003e11.9.2 Project – Taking and Sending Images on a Schedule 344\u003c\/p\u003e \u003cp\u003e11.10 Key Takeaways 348\u003c\/p\u003e \u003cp\u003ePostface 351\u003c\/p\u003e \u003cp\u003eReferences 353\u003c\/p\u003e \u003cp\u003eAppendix A: ASCII American Standard Code for Information Interchange 357\u003c\/p\u003e \u003cp\u003eIndex 359\u003c\/p\u003e\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\u003cp\u003e\u003cfont size=\"3\"\u003eSubject Areas: Chemistry [\u003ca title=\"See our other books on Chemistry\" href=\"https:\/\/freshlyprintedbooks.co.uk\/search?q=%22Chemistry%20%5BPN%5D%22\"\u003ePN\u003c\/a\u003e]\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\r\n\u003c\/font\u003e","brand":"Wiley","offers":[{"title":"Brand New","offer_id":52511172002072,"sku":"9781394249886","price":68.69,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0730\/2037\/5320\/files\/9781394249886.jpg?v=1786587454","url":"https:\/\/freshlyprintedbooks.co.uk\/products\/streamlining-your-research-laboratory-with-python-hardback-9781394249886","provider":"Freshly Printed Books","version":"1.0","type":"link"}