Boulder Future Salon News Bits

A machine learning algorithm has identified an antibiotic that kills E. coli and many other disease-causing bacteria, including some strains that are resistant to all known antibiotics. To test it, mice were infected on purpose with A. baumannii and C. difficile and the antibiotic cleared the mice of both infections.

"The computer model, which can screen more than a hundred million chemical compounds in a matter of days, is designed to pick out potential antibiotics that kill bacteria using different mechanisms than those of existing drugs."

"The researchers also identified several other promising antibiotic candidates, which they plan to test further. They believe the model could also be used to design new drugs, based on what it has learned about chemical structures that enable drugs to kill bacteria."

"The machine learning model can explore, in silico, large chemical spaces that can be prohibitively expensive for traditional experimental approaches."

"Over the past few decades, very few new antibiotics have been developed, and most of those newly approved antibiotics are slightly different variants of existing drugs." "We're facing a growing crisis around antibiotic resistance, and this situation is being generated by both an increasing number of pathogens becoming resistant to existing antibiotics, and an anemic pipeline in the biotech and pharmaceutical industries for new antibiotics."

"The researchers designed their model to look for chemical features that make molecules effective at killing E. coli. To do so, they trained the model on about 2,500 molecules, including about 1,700 FDA-approved drugs and a set of 800 natural products with diverse structures and a wide range of bioactivities."

"Once the model was trained, the researchers tested it on the Broad Institute's Drug Repurposing Hub, a library of about 6,000 compounds. The model picked out one molecule that was predicted to have strong antibacterial activity and had a chemical structure different from any existing antibiotics. Using a different machine-learning model, the researchers also showed that this molecule would likely have low toxicity to human cells."

"This molecule, which the researchers decided to call halicin, after the fictional artificial intelligence system from '2001: A Space Odyssey,' has been previously investigated as possible diabetes drug. The researchers tested it against dozens of bacterial strains isolated from patients and grown in lab dishes, and found that it was able to kill many that are resistant to treatment, including Clostridium difficile, Acinetobacter baumannii, and Mycobacterium tuberculosis. The drug worked against every species that they tested, with the exception of Pseudomonas aeruginosa, a difficult-to-treat lung pathogen."

"Preliminary studies suggest that halicin kills bacteria by disrupting their ability to maintain an electrochemical gradient across their cell membranes. This gradient is necessary, among other functions, to produce ATP (molecules that cells use to store energy), so if the gradient breaks down, the cells die. This type of killing mechanism could be difficult for bacteria to develop resistance to, the researchers say."

"The researchers found that E. coli did not develop any resistance to halicin during a 30-day treatment period. In contrast, the bacteria started to develop resistance to the antibiotic ciprofloxacin within one to three days, and after 30 days, the bacteria were about 200 times more resistant to ciprofloxacin than they were at the beginning of the experiment."

The way the system works is, they developed a "directed message passing neural network", open sourced as "Chemprop", that learns to predict molecular properties directly from the graph structure of the molecule, where atoms are represented as nodes and bonds are represented as edges. For every molecule, the molecular graph corresponding to each compound's simplified molecular-input line-entry system (SMILES) string was reconstructed, and the set of atoms and bonds determined using an open-source package called RDKit. From this a feature vector describing each atom and bond was computed, with the number of bonds for each atom, formal charge, chirality, number of bonded hydrogens, hybridization, aromaticity, atomic mass, bond type for each bond (single/double/triple/aromatic), conjugation, ring membership, and stereochemistry. "Aromatic" refers to rings of bonds. "Conjugation" refers to those chemistry diagrams you see where they look like alternating single and double (or sometimes triple) bonds -- what's going on here is the molecule has connected p orbitals with electrons that move around. "Stereochemistry" refers to the fact that molecules with the same formula can form different "stereoisomers", which have different 3D arrangements that are mirror images of each other.

From here, and the reason the system is called "directed message passing", the model applies a series of message passing steps where it aggregates information from neighboring atoms and bonds to build an understanding of local chemistry. "On each step of message passing, each bond's featurization is updated by summing the featurization of neighboring bonds, concatenating the current bond's featurization with the sum, and then applying a single neural network layer with non-linear activation. After a fixed number of message-passing steps, the learned featurizations across the molecule are summed to produce a single featurization for the whole molecule. Finally, this featurization is fed through a feed-forward neural network that outputs a prediction of the property of interest. Since the property of interest in our application was the binary classification of whether a molecule inhibits the growth of E. coli, the model is trained to output a number between 0 and 1, which represents its prediction about whether the input molecule is growth inhibitory."

The system has additional optimizations including 200 additional molecule-level features computed with RDKit to overcome the problem that the message passing paradigm works for local chemistry, it does not do well with global molecular features, and this is especially true the larger the molecule gets and the larger the number of message-passing hops involved.

They used a Bayesian hyperparameter optimization system, which optimized such things as the number of hidden and feed-forward layers in the neural network and the amount of dropout (a regularization technique) involved.

On top of that they used ensembling, which in this case involved independently training several copies of the same model and combining their output. They used an ensemble of 20 models.

The training set was 2,335 molecules, with 120 of them having "growth inhibitory" effects against E. coli.

Once trained, the system was set loose on the Drug Repurposing Hub library, which was 6,111 molecules, the WuXi anti-tuberculosis library, which was 9,997 molecules, and parts of the ZINC15 database thought to contain likely antibiotic molecules, which was 107,349,233 molecules.

A final set of 6,820 compounds was found, and further reduced using the scikit-learn random forest and support vector machine classifiers.

To predict the toxicity of the molecules, they retrained Chemprop on a different training set, called the ClinTox dataset. This dataset has 1,478 molecules with clinical trial toxicity and FDA approval status. Once this model was made it was used to test the toxicity of the candidate antibiotic molecules.

At that point they hit the lab and started growing E. coli on 96 flat-bottomed assay plates. 63 molecules were tested. The chemical they named halicin did the best and went on to further testing against other bacteria and in mice.

Here's something that'll give you an un­easy feel­ing. Industry has invented and is producing and trading 350,000 dif­fer­ent chemicals. 50,000 of those are "trade secrets" and nobody other than the man­u­fac­tur­ers knows what they are or how harmful they might be to the environment or human health.

Energy efficient computing for deep learning, robotics, and AI with Vivienne Sze. OpenAI has shown that the amount of compute used for training of deep neural networks has increased 300,000x between AlexNet and AlphaGo Zero and has grown exponentially. The carbon footprint of neural networks is orders of magnitude greater than flying across North America from New York to San Francisco or the average human life. This is primarily in the cloud but another area where we want to do computer is the edge of the network. By this she means devices like your smartphone. The same device as the device where the data is being collected. Reasons to do this: communications infrastructure in a lot of places around the world is not very good, so you don't want to necessarily to rely on a communication network in order for your application to work. The data could be sensitive, such is in health care, so privacy and security again is critical and you would rather not send your data to the cloud. Another is for a autonomous navigation, a robotics, or a self-driving vehicle, latency is an issue. You don't want to wait to send the data to the cloud, wait for it to be processed, and send the instruction back. You want to move the computer into the robot or vehicle itself.

One of the big challenges of doing processing in the robot or in the device is power consumption. She shows a prototype self-driving car that uses over 2,000 watts of power. (Tesla custom-designed their own chips for low power, she doesn't mention that, though.) Power is an even more issue for very small aerial vehicles. The battery itself is limited in size and weight and that limits what you can do. Typical hardware for these types of devices use less than 1 watt.

In past decades what we would do to address this challenge is that we would wait for transistors become smaller, faster, and more efficient. However Moore's Law has been slowing down and Dennard scaling, which has made transistors more efficient, has also slowed down. We need to turn towards specialized hardware to achieve the significant speed and energy throughputs that we require for the AI, deep learning, and robotic tasks that we're really excited about.

Over the past few years there's been a large number of startups and companies that have focused on building specialized hardware for deep learning.

The first question you should ask is where is the power actually going for these applications? It turns out power is dominated by data movement. She has a chart showing the amount of energy (in picojoules -- yay metric units) for various compute operations -- integer add, floating point add, integer multiply, floating point multiply -- and reads from SRAM and DRAM. (The SRAM memory is a small 8 kilobyte memory on the processor chip itself. The DRAM is off-chip.) Watch out -- if you look closely you'll see the bars are on a logarithmic scale! The bar for DRAM read looks about twice as long as 32-bit floating point multiply. That's because on her logarithmic "relative energy cost" scale, the cost of the DRAM read is 2.07 times the cost of the 32-bit floating point multiply. But if you divide the raw numbers, you'll find the DRAM read is actual 173 times the cost of the 32-bit floating point multiply (640 picojoules vs 3.7 picojoules). So you see her conclusion that "power is dominated by data movement" is justified.

So how do you reduce data movement? For example, one of the things you need to do in autonomous navigation is semantic understanding. You need to know that pixel represents the ground, this pixel represents the sky, this pixel represents a person, and you want to be able to do this at a very high frame rate, you might need large resolution images, say 2 million pixels per frame, and then often you want to be able to detect objects at different scales, or see objects that are far away, so you might have "data expansion" where you build pyramid of images at different scales. If you're navigating you want to form a map of your surroundings, which is called geometric understanding, so the 3D map you're going to build is going to be more data. The Deep neural nets themselves often require several hundred million weights to do the computation so you need that data, too.

The layers do a weighted-sum operation, where the key operation is "multiply and accumulate" (MAC), which dominates even over the non-linear part of the layer (which used to be things like sigmoid but now is usually ReLU). The layers can be fully connected or sparsely connected, feed-forward or with feedback (recurrent neural networks), and recently we have attention layers. She goes through the operations done for a high-dimensional convolution of an image in a convolutional neural network and shows how much data is involved. Typically you apply many sets of parameters (filters) on the same input generating many "channels" of convolved output. AlexNet (from 2012) typically used 96 to 384 such filters, and modern systems use even more. Modern neural networks are getting deeper and deeper: AlexNet from 2012 used 5 convolutional layers, EfficientNet-B8 from 2019 uses 96. AlexNet used a total of 724 million multiply-accumulates (MACs), while EfficientNet-B4 used 4.4 billion.

Are there any properties we can leverage? The first observation is that a lot of these computations can be done in parallel. For each multiply-accumulate there are 4 memory operations, but if you look closely, you can see you can reuse the data many times. For example, the same input pixel is used multiple times in a convolutional filter, and is used in multiple filters. Second, output from computations in the convolution operation are used repeatedly in different parts of the same feature map. Thirdly, those same computations are used in multiple feature maps. In the parlance of deep learning, they say input, activations, and weights can all be reused without being retrieved from DRAM multiple times.

So we create a memory hierarchy with a very small memory right beside the multiply-accumulate engine, a memory that is shared with nearby multiply-accumulate engines with say a 2x energy cost, a shared large buffer that is shared between all the multiply-accumulate engines, with about 6x the energy cost, and then as a last resort you go to DRAM with about a 200x energy cost.

One strategy is to make the weights stationary and put them in the closest, smallest memory. This is called "weight stationary". "Output stationary" means putting partial sums in the closest memory. "Input stationary" refers to putting the image in the closest memory. Her group does something they call "row stationary" where they try to minimize the movement of all the data types.

The next strategy is to exploit sparsity. Anything multiplied by zero is zero. So if you know that one of your parameters to your multiply is zero, you can skip and not even bother going to memory to get the other operand.

If you have multiple zeros, you can "run-length encode" the zeros. That means instead of 5 zeros, you just store the number 5 and something to indicate that's the number of zeros. Pruning is another technique to get zeros, this time by setting weights to zero.

They have a customized chip called Eyeriss. It has a 14x12 array of processing elements with compression and decompression modules and a shared SRAM buffer, and does the row-stationary data flow, which reduces memory accesses by about 100x, and the buffer reduces off-chip memory access by about 1400x for the AlexNet classification network.

If you graph accuracy and energy, accuracy has gone up linearly while energy consumption has gone up exponentially. On the software side, people have been focusing on reducing the number of multiply-accumulate operations and weights, by pruning or by using more efficient network architectures. People also reduce precision, going from 32-bit floats down to 8 bits or even binary. Whether these things reduce energy depends on the data movement through the system, so you can't just look at the number of weights or the number of multiply-accumulates and calculate the amount of energy consumed. For many architectures, the energy cost is largely the movement of the input feature maps and output feature maps into and out of the system.

So they've developed techniques like energy-aware pruning. Instead of removing weights that are small, you try to remove weights that consume the most energy. While magnitude-based pruning can get you a 2.1x reduction in energy, you can get a 3.7x reduction using energy-aware pruning.

They developed an algorithm called NetAdapt that uses empirical measurements for a target platform. You give it a pre-trained network, and it comes up with proposals for modifications that might be more energy efficient (and can include other empirical measurements like latency), and based on the empirical results from that, generates more proposals and measures those, and so on. It could reduce the number of channels in a convolutional layer, for example, and then see if that tightens the energy or latency budget without losing too much accuracy. The system has been shown to work even on networks that have dense output, such as a depth estimation image.

They developed a type of memory called hierarchical mesh, which is supposed to enable various configurations between all-to-all multicast from the SRAM to the computation units, to various routed meshes where you can do grouped multicast or interleaved multicast. This supports a wide range of networks from dense to sparse.

They created a specialized algorithm called FAST SuperRes designed specifically to speed up and reduce the energy consumption of super-resolution neural networks. Super-resolution neural networks hallucinate a low-resolution video into a high-resolution video. It works by changing the data that actually goes into the neural network.

They developed a chip for visual-inertial odometry called Navion. It's small (4mm x 5mm, smaller than a quarter), integrates visual and accelerometer and gyroscope data, and uses 684x less energy than mobile CPUs. It works by reducing data movement, applying low-cost compression on video frames, and taking advantage of sparsity.

For planning and mapping, such as using Shannon mutual information to determine where to explore on a map to learn more about the map, they developed a specialized memory architecture, where there are separate memory banks for parts of memory for different beams, arranged such that all the beams can be processed in parallel. This enables processing of the mutual information of the entire map in under a second.

They developed a medical eye movement test that can work on an iPhone and get results comparable to a $100K medical camera.

They developed a technique to reduce the intensity required for a depth sensor by reducing something called "time of flight" imaging. The idea is you send a light pulse and wait for it to come back to measure depth. The idea is to reduce the amount you have to turn on the laser by using passive computer vision in between pulses. They were able to show an error of 0.7% with the laser on only once every 9 frames.

"Algorithms are significantly more accurate than humans in predicting which defendants will later be arrested for a new crime."

"When assessing just a handful of variables in a controlled environment, even untrained humans can match the predictive skill of sophisticated risk-assessment instruments," "but real-world criminal justice settings are often far more complex, and when a larger number of factors are useful for predicting recidivism, the algorithm-based tools performed far better than people. In some tests the tools approached 90% accuracy in predicting which defendants might be arrested again, compared to about 60% for human prediction."

"In 2018, researchers at Dartmouth University raised questions about the accuracy of such tools in a criminal justice framework. In a study, they assembled 1,000 short vignettes of criminal defendants, with information drawn from a widely used risk assessment called the Correctional Offender Management Profiling for Alternative Sanctions (COMPAS)."

"The vignettes each included five risk factors for recidivism: the individual's sex, age, current criminal charge, and the number of previous adult and juvenile offenses. The researchers then used Amazon's Mechanical Turk platform to recruit 400 volunteers to read the vignettes and assess whether each defendant would commit another crime within two years. After reviewing each vignette, the volunteers were told whether their evaluation accurately predicted the subject's recidivism. Both the people and the algorithm were accurate slightly less than two-thirds of the time."

"The study replicated the Dartmouth findings that had been based on a limited number of factors." "They expanded their study beyond COMPAS to include other data sets. In addition to the five risk factors used in the Dartmouth study, they added 10 more, including employment status, substance use and mental health. They also expanded the methodology: Unlike the Dartmouth study, in some cases the volunteers would not be told after each evaluation whether their predictions were accurate. Such feedback is not available to judges and others in the court system."

"The outcome: Humans performed 'consistently worse' than the risk assessment tool on complex cases when they didn't have immediate feedback to guide future decisions."

"For example, the COMPAS correctly predicted recidivism 89% of the time, compared to 60% for humans who were not provided case-by-case feedback on their decisions. When multiple risk factors were provided and predictive, another risk assessment tool accurately predicted recidivism over 80% of the time, compared to less than 60% for humans."

So to give you an idea what they are talking about here, humans were asked to look at a statement such as the following:

"The defendant is a 24-year-old female. She has had many prior arrests and convictions, starting at age 14, and has spent time in prison. In this jurisdiction, 29% of defendants get rearrested for another crime on average. How likely do you think this person is to be arrested for another crime within the next 2 years?"

And you have to answer one of: Almost certainly NOT arrested (1-16%), Very probably NOT arrested (17-33%), Probably NOT arrested (33-49%), Probably arrested(51-66%), Very probably arrested (67-83%), or Almost certainly arrested (84-99%).

This is the "short vignette" version with 5 pieces of information: the individual's sex, age, current criminal charge, and the number of previous adult and juvenile offenses. Here's is what the expanded version with 10 more, including employment status, substance use and mental health looks like:

"The defendant is a 24-year-old female. She understands the cost of her actions for the victim and wants to make amends. She dropped out of high school and is usually unemployed. She's never held a job for more than a few months. The defendant has many friends and contacts who have had trouble with the law. She dislikes her home but has made no effort to move or improve the situation. She has had many prior arrests and convictions, starting at age 14, and has spent time in prison. She's getting mental health treatment, but still has false paranoid beliefs. She has supportive relationships with her spouse and family. The defendant has serious financial trouble and must rely on social assistance like food stamps. She has a drug abuse problem that contributes to difficulties at home and work. She has a lot of time on her hands and is often bored. In this jurisdiction, 29% of defendants get rearrested for another crime on average. How likely do you think this person is to be arrested for another crime within the next 2 years?"

And again you have to answer one of: Almost certainly NOT arrested (1-16%), Very probably NOT arrested (17-33%), Probably NOT arrested (33-49%), Probably arrested(51-66%), Very probably arrested (67-83%), or Almost certainly arrested (84-99%).

So the first thing you need to understand about the results from this study has to do with that sentence slipped in there that says, "In this jurisdiction, 29% of defendants get rearrested for another crime on average." This is known as the base rate. It's deceptively simple to gloss over but quite mathematically significant. Humans are bad at taking the base rate into account. However, if you give humans immediate feedback as to whether their guesses are right or wrong, after a while (50 such questions), humans get an intuitive feel for the base rate and improve their predictions. In one of the data sets, the base rate was 48%, but in another, it was only 9%. It makes a big difference and in the first instance, the humans have to learn to increase their predicted odds of recidivism and in the second instance, to lower it.

However, when you give humans the additional 10 pieces of information, they don't improve much. Algorithms, on the other hand, are better able to take advantage of this additional information. First of all, in the case where you have both high base rates and the short versions with less information, humans and algorithms are about the same. Going from there to the low base rate scenario, the algorithms do a little better than humans. When you switch from the short to the long versions with more information, that's where you see the most dramatic change, with the algorithms substantially outperforming the humans. The low-base-rate long version scenario is the scenario where algorithms did the best.

Another interesting fact about this study is how the researchers themselves developed a simple logistic regression-based algorithm and compared it with COMPAS, a commercial product, and the LSI-R (which stands for the rather boringly named Level of Service Inventory - Revised), a government-developed risk assessment algorithm. Logistic regression is an old and unsophisticated algorithm. It did worse than COMPAS and the LSI-R on the short versions but beat them on the long versions. This suggests to me that the existing systems, COMPAS and the LSI-R, are not the most sophisticated systems. There is probably room for substantial algorithmic improvement on this problem.

Locust swarms in Africa; insects declining everywhere else.

Introverts like mountains while extroverts like the flatlands, according to this research that graphs out flatness and extroversion by state and shows a relationship. Also they say extroverts like beaches while introverts like mountains.

I'm half-n-half -- neither introvert nor extrovert. (Apparently there's a word for this: "ambivert".) I land in the middle on the "introvert-extrovert" scale on Big 5 and Myers-Briggs personality tests, and it seem to fit as I can be by myself for hours and I don't mind and I can be with other people for hours and that's fine, too.

Having said that, the flatlands vs mountains theory is new to me and makes no sense. It seems like, some people, like my mom, like the "big sky" feeling that you get in a place that's very flat. Others like the scenic feeling from mountains. When you get very high up the scenery becomes quite dramatic.

My mom grew up in west Texas and I've been there many times to visit my grandparents and it is the flattest place I've ever been. The graph shows North Dakota as the flattest state, and I guess the problem here is they're using whole states and some like Texas are pretty big. Texas has some hills on it's eastern side where it borders Louisiana. But on the western side, well, I've been to both North Dakota and west Texas and I can tell you west Texas is flatter.

I live in Denver and maybe Denver is the perfect place for the half-n-half ambiverts who are neither introvert nor extrovert, but something in the middle. Look east, and you're on the flatlands. Look west and you're in the mountains.

What happens when someone who undergoes brain surgery for epilepsy or tumors donates a healthy piece of brain tissue removed during the course of surgery to research. Brain cells are extracted, probed with ultra-thin electrodes, subjected to electrical tests, have their nuclei taken out, get stained for microscopic photos, have the delicate branching axons and dendrites picked out, have their electrical activity analyzed, have their gene expression analyzed, and ultimately have the neuron's full morphology laboriously reconstructed. This is done with mouse brain cells, which are easier to analyze because they are smaller and don't branch as far, as well as human brain cells.

"Once all the data is generated, it will be packaged and deposited on a public website for anyone to access. In the meantime, Allen Institute researchers are also plumbing the data to gain new insights into the types of cells that make up our brains. Computational neuroscientist Nathan Gouwens, Ph.D., uses methods he and his colleagues have developed to sort the data from the three branches of the pipeline into different buckets -- and then studying how those buckets fit together -- to give a measured view of brain cell type categories."

"The researchers hypothesize that a brain cell type definition will be consistent, no matter if you are looking at its shape, electrical activity or its genes. But that remains to be proven."

Thumbnail's Einstein Behavior Scoring system is a machine learning system that analyzes engagement patterns of prospects to identify the best sales opportunities. The system consists of an unsupervised model which weighs recent activities highly, a supervised XGBoost classifier with baseline time-binned activity signals, an XGBoost ranking model which ranks prospects by their projected 'time-to-convert', and an XGBoost classifier trained on baseline activity signals combined with enhanced activity signals based on prospects' interaction with specific marketing assets such as a particular product page, a specific campaign landing page etc.

Adam Savage made a steampunk rickshaw for Boston Dynamics' Spot robot.

"TPOT is a Python automated machine learning tool that optimizes machine learning pipelines using genetic programming."

"TPOT will automate the most tedious part of machine learning by intelligently exploring thousands of possible pipelines to find the best one for your data. Once TPOT is finished searching (or you get tired of waiting), it provides you with the Python code for the best pipeline it found so you can tinker with the pipeline from there."

TPOT stands for Tree-based Pipeline Optimization Tool.

"Carbon Relay's marquee product, called Red Sky Platform, uses AI and machine learning to drive Kubernetes app performance gains and cost reductions by assessing multiple factors to determine deployment choices and then implement them automatically. It recalculates on the fly to maintain performance as conditions change -- in part by running deployment experiments and trials under load -- while playing nicely with existing systems from Splunk, Redis, Oracle, Google, Amazon, Alibaba, IBM, Cisco, and others."

Surena IV is a humanoid robot built at the University of Tehran.

"In much the same way that self-driving cars 'see' their surroundings, TerraSentia navigates a field by sending out thousands of laser pulses to scan its environment. A few clicks on a tablet were all that were needed to orient the robot at the start of the row before it took off, squeaking slightly as it drove over ruts in the field."

"The robot is designed to generate the most detailed portrait possible of a field, from the size and health of the plants, to the number and quality of ears each corn plant will produce by the end of the season, so that agronomists can breed even better crops in the future. In addition to plant height, TerraSentia can measure stem diameter, leaf-area index and 'stand count' -- the number of live grain- or fruit-producing plants -- or all of those traits at once. And Girish Chowdhary, an agricultural engineer at the University of Illinois at Urbana-Champaign, is working on adding even more traits, or phenotypes, to the list with the help of colleagues at EarthSense, a spinoff company that he created to manufacture more robots."

"Traditionally, plant breeders have measured these phenotypes by hand, and used them to select plants with the very best characteristics for creating hybrids."

"A system for fully automated monitoring of ball screw drives in machine tools" has been developed. "A camera integrated directly into the nut of the drive generates images that an artificial intelligence continuously monitors for signs of wear, helping to reduce machine downtime."

"The new system combines a camera with light source attached to the nut of the drive and an artificial intelligence (AI) that evaluates the image data. As the nut moves on the spindle, it takes individual pictures of each spindle section, enabling the analysis of the entire spindle surface."

"We trained our algorithm with thousands of images so that it can now confidently distinguish between spindles with defects and those without. By further evaluating the image data, we can precisely qualify and interpret wear and thus distinguish if discoloration is simply dirt or harmful pitting."

"Blockchain could be key to cracking gun debate." "Graduating computer science major Luke Strgar thinks he might have a solution for the fraught issue of guns in America: Use blockchain to track gun sales in America."

I'm just posting this purely for commentary purposes. There's zero chance blockchain technology will solve anything. I say this because I was one of those crazy people 20 years ago who thought the internet, and technology in general, would solve social problems, thought the internet would empower people, would democratize society, and so on. Watching how it played out over 20 years or so made me realize technology doesn't solve social problems. Technology solves *technical* problems. You want to do more calculations per second or move more data faster from one place to another, yes, you can invent technology, and those inventions can solve those problems, and once they're solved they're solved forever and everybody can use those solutions forever. But, you want to solve social problems, problems rooted in human nature? No, you can't invent anything that will do that. People have to get together and solve their problems, and if they don't, the problems don't get solved, and that's all there is to it.

The snake community became more homogenized after chytrid swept through a remote forest in Panama, decimating frog populations. I'm only posting this because I find the phrase "the snake community" funny. Do snakes really form a "community"? We're not talking about people being metaphorically referred to as 'snakes' here, we're talking about actual snakes, the kind that slither around. Do they have a community center where they hang out after frog hunting?

"Comparing the after with the before, there was a huge shift in the snake community. The community became more homogeneous. The number of species declined, with many species going down in their occurrence rates, while a few species increased."

"Researchers are confident the changes they observed in the snake community were due to the loss of amphibians and not some other environmental factor."